次のようなカスタム データ型があります。
data Token = Number Int
| Otherthings
「数字」をある意味で使い、他のことを別の方法で使用できるようにしたい. したがって、次のような case ステートメントを正常に作成できます。
parse x = case x of
Number y -> y
その後、次のものが正常に取得されます。
let x = Number 7 in parse x
そして、7に評価されます。ただし、「解析」関数を次のように変更しようとすると:
parse [] = []
parse (x:xs) = case x of
Number y -> y
エラーが発生します:
Couldn't match expected type `[a0]' with actual type `Int'
In the expression: y
In a case alternative: Number y -> y
In the expression: case x of { Number y -> y }
なぜこれがこのように機能しないのですか?この問題に取り組む適切な方法は何ですか? どうもありがとう!