私はHaskellを初めて使用し、「データ」型を宣言する方法と、その型で変数を初期化する方法を理解できません。また、その変数の特定のメンバーの値を変更する方法を知りたいです。例:
data Memory a = A
{ cameFrom :: Maybe Direction
, lastVal :: val
, visited :: [Direction]
}
方向は N、S、E、W を含むデータ型です。値は 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 要素と比較するにはどうすればよいですか?