初めてのポスターですが、このサイトは私を大いに助けてくれました。
Haskellを学ぼうとしています。
これは私が答えるように求められている質問です。
長さのペアのリスト(長さ> = 2)を取り、リストの2番目の要素の最初のコンポーネントを返す関数を記述します。したがって、[(5、'b')、(1、'c')、(6、'a')]を指定すると、1が返されます。
私はこれを自分で行いました。
listtwo :: [([a],b)] -> [a]
listtwo [] = []
listtwo [(a,b)] = fst (head (tail [(a,b)]))
信じているリストタプルのリストを取得して、リストの2番目の項目から1番目の要素を返そうとしています。[(a、b)]を取り出して、2番目の[(a、b)]を、問題のリストのようなリストに置き換えれば、問題なく機能することはわかっています。しかし、この関数をタプルの任意のリストで機能させようとすると。エラーが発生します。
受け取ったエラー
<interactive>:1:27:
No instance for (Num [a0])
arising from the literal `6'
Possible fix: add an instance declaration for (Num [a0])
In the expression: 6
In the expression: (6, 'a')
In the first argument of `listtwo', namely
`[(5, 'b'), (1, 'c'), (6, 'a')]'
だから私は誰かが私がエラーを解読し、マバイが私が間違っていることを説明するのを手伝ってくれるかどうか尋ねています(私に答えを与えないでください、そのように学ぶことはできません)。
ヘルプを利用してください。これが回答された場合は、さらに質問がある可能性があります。事前にどうもありがとうございました!