【发布时间】:2013-03-31 01:15:16
【问题描述】:
我有一个关于filter 的问题。我怎样才能使我的函数 (manhattanDistance) 将获取列表中的每个元素并将其用于自身?你能解释一下它是如何实现的吗?
func :: [(Int,Int)] ->
(Int, Int, [Char], [Char], [Char], [Char],
[Char], [Char], [Char], [Char]) ->
[(Int,Int)]
func (x:xs) agent = filter ((manhattanDistance x agentCoord(agent)) == 1) (x:xs)
【问题讨论】:
-
那个类型签名太长了不容易理解。执行
type Agent = (Int, Int, [Char], [Char], [Char], [Char], [Char], [Char], [Char], [Char])之类的操作并将类型签名更改为func :: [(Int, Int)] -> Agent -> [(Int, Int)]。更好的是,将Agent设为正确的data类型。