小编ter*_*ret的帖子

在Haskell中,我如何获取m-ary谓词和n-ary谓词并构造一个(m + n)-ary谓词?

今天我玩了使用类型类来归纳地构造任何arity谓词的函数,将任何类型的任意组合作为输入,返回相同类型的其他谓词但应用了一些基本操作.例如

conjunction (>2) even
Run Code Online (Sandbox Code Playgroud)

会返回一个谓词,对于大于2的偶数,它的计算结果为真

conjunction (>=) (<=)
Run Code Online (Sandbox Code Playgroud)

会返回=

一切都很好,让这部分工作,但它提出了一个问题,如果我想将两个谓词的连接定义为一个谓词,为每个连接谓词的每个输入获取一个输入,该怎么办?例如:

:t conjunction (>) not
Run Code Online (Sandbox Code Playgroud)

将返回Ord a => a - > a - > Bool - > Bool.可以这样做吗?如果是这样,怎么样?

haskell typeclass polyvariadic

7
推荐指数
1
解决办法
258
查看次数

是否可以隐藏Sublime Text 2中的菜单栏?

我怀疑答案是否定的,但无论如何我都要问,有没有办法隐藏在Linux中运行的Sublime Text 2中的菜单栏?

sublimetext2

7
推荐指数
1
解决办法
4484
查看次数

PS3控制器驱动程序 - > uinput-> python?不知何故?

我试图在Ubuntu的python中读取PS3控制器,但我没有太多运气.我开始使用Willow Garage的ps3joy驱动程序(http://www.ros.org/wiki/ps3joy),该驱动程序据称将PS3控制器的所有重要部分发布到我从未听说过的称为"uinput"的部分.显然它是一个Linux功能,允许用户空间驱动程序提供系统事件....为什么WG驱动程序需要root访问权限,因为它应该是一个用户空间驱动程序超出我的范围,但这不是我的问题.

无论如何,我试图让它工作的当前状态是我有驱动程序工作,我已经验证它响应按钮按下控制器,但我不知道如何拉动任何数据输出所以我可以使用它.

我的第一个猜测是使用pygame(希望)从/ dev/uinput读取(我很确定驱动程序发送数据的位置):

from pygame import joystick
if not joystick.get_init():
  joystick.init()
js = joystick.Joystick(0)  # there is only one joystick... even if the driver isn't running(!)
js.init()
print js.get_numbuttons()  # perhaps coincidentally correctly prints 17 which is the number of buttons on a PS3 controller
for i in range(js.get_numaxes()):
  print js.get_axis(i)   # always prints 0, no matter what I'm doing with the controller
Run Code Online (Sandbox Code Playgroud)

但它不起作用.问题中最有说服力的部分是,如果我根本没有运行WG驱动程序,它会做同样的事情.

我确信这很容易,我只是没有阅读正确的信息,但谷歌搜索并没有帮助我找到正确的信息,我已经厌倦和绝望.

python ps3

5
推荐指数
1
解决办法
4720
查看次数

如何将基于交叉产品的方法添加到scala集合?

希望这将是一个关于图书馆拉皮条的简单问题(因为关于该主题的其他问题往往会产生超出我目前技能水平的答案).

我想要做的就是将集合的交叉产品映射到自身.

val distances = points.crossMap(_ distance _)  // points: List[Point3d]
Run Code Online (Sandbox Code Playgroud)

所以我试图皮条客Traversable:

implicit def toSelfCrossMappable[A](xs: Traversable[A]) = new {
  def crossMap[B](f: (A, A) => B) = xs.flatMap(a => xs.map(f(a, _)))
}
Run Code Online (Sandbox Code Playgroud)

但它不起作用(它没有进行隐式转换),我不明白为什么不(我对scala很新).我还尝试了使用一种方法在Enriching Scala集合中建议的方法:

implicit def toSelfCrossMappable[A, C[A]](xs: C[A])(implicit c: C[A] => Traversable[A]) = new SelfCrossable[A, C[A]](xs)(c)

class SelfCrossable[A, C](xs: C)(implicit c: C => Traversable[A]) {
  def crossMap[B](f: (A, A) => B) = xs.flatMap(a => xs.map(f(a, _)))
}
Run Code Online (Sandbox Code Playgroud)

,但是抛出与我(看起来更简单)方式相同的错误.

我在这做错了什么?

collections scala enrich-my-library

4
推荐指数
1
解决办法
531
查看次数

如何点击添加或拖动D3?

我得到的印象是这个问题很简单,没有人费心去做它的演示,但是我还不知道D3(还)看到我做错了什么.我正在寻找的行为是,如果用户点击没有圆圈的地方,它将在那里创建一个圆圈,如果他们拖动现有圆圈,则不会创建新圆圈,但他们拖动的圆圈将会移动.

我目前的尝试如下

points = []

drag = d3.behavior.drag()
  .origin((d) -> d)
  .on("dragstart", dragstarted)
  .on("dragend", dragended)

dragstarted = (d) ->
  d3.event.sourceEvent.stopPropagation
  d3.select(this).classed("dragging", true)

dragended = (d) ->
  d3.select(this).classed("dragging", false)

mousedown = ->
  return if d3.event.defaultPrevented
  point = d3.mouse(this)
  points[points.length] = {x: point[0], y: point[1]}
  svg.selectAll("circle").data(points).enter().append("circle")
                                                .attr("cx", (n) -> n.x)
                                                .attr("cy", (n) -> n.y)
                                                .attr("r", "5")
                                                .attr("class", "dot")
                                                .call(drag)

svg = d3.select("body").append("svg")
                         .attr("width", 700)
                         .attr("height", 400)
                         .on("mousedown", mousedown)
Run Code Online (Sandbox Code Playgroud)

d3.js

3
推荐指数
1
解决办法
2万
查看次数