我是 Haskell 的新手,我无法弄清楚如何声明“数据”类型以及如何使用该类型初始化变量。我还想知道如何更改该变量的某些成员的值。例如:
data Memory a = A
{ cameFrom :: Maybe Direction
, lastVal :: val
, visited :: [Direction]
}
Direction 是一个包含 N,S,E,W 的数据类型 val 是一个 int 类型
init :: Int -> a
init n = ((Nothing) n []) gives me the following error:
The function `Nothing' is applied to two arguments,
but its type `Maybe a0' has none
In the expression: ((Nothing) n [])
In an equation for `init': init n = ((Nothing) n [])
我怎样才能解决这个问题 ?
更新:做到了,非常感谢,但现在我有另一个问题
move :: val -> [Direction] -> Memory -> Direction
move s cs m | s < m.lastVal = m.cameFrom
| ...
这给了我以下错误:
Couldn't match expected type `Int' with actual type `a0 -> c0'
Expected type: val
Actual type: a0 -> c0
In the second argument of `(<)', namely `m . lastVal'
In the expression: s < m . lastVal
更新2:再次,这对我有很大帮助,非常感谢
另外,我还有一个问题(抱歉打扰了)
我如何只处理一个类型的元素例如,如果我有
Type Cell = (Int, Int)
Type Direction = (Cell, Int)
如果我想将 Cell 变量与 Direction 变量的 Cell 元素进行比较,我该如何进行?