从一个榆树新手但长期哈斯克勒,一个快速查询。榆树信号和类型注释
目的:有一个地图上有指定位置的城镇,我想检查用户点击是否靠近一个城镇,并确定该城镇。
所以,我收集信号如常:
clickPositionsSignal = sampleOn Mouse.clicks Mouse.position
这给了我一个元组,这是我想变成一个Int(表示最近的城镇的数量)。城镇被指定为
positions : [Position]
type Position = {number : Int, x : Int, y : Int}
功能来做到这一点:
whichTown : (Int,Int) -> Int
whichTown (x,y) =
let pz = map (\p -> getDistance p.x p.y x y) positions |> head
in pz.number
现在,我需要这个功能适用于我clickPositionsSignal。
放眼望去各种例子,我修改一些代码....
whichLocationSignal : Signal Int
whichLocationSignal =
let wbl (x,y) = whichTown(x,y)
in wbl <~ clickPositionsSignal
....这一点也适用。我得到最近的城镇的号码。
但这是绝望的繁琐和重复。问题是,为什么我不能简单地写:
whichLocationSignal = whichTown clickPositionsSignal
那行抛出了多种类型的错误,我感到没有足够的经验来解释
'whichBoardPosition'函数是什么样的? – rzetterberg 2014-11-03 07:30:59
对不起,忘了将最后2个代码块中的函数从'whichBoardPosition'重命名为'whichTown'。上面编辑的代码。 – 2014-11-03 09:08:11
啊。这很简单:whichTown <〜clickPositionsSignal – 2014-11-03 11:37:55