10
私はちょうどHaskellの学習を始めました。パターンマッチングを使って、正確に2つの要素を持つリストに一致させようとしています。練習として、リストから1つだけ最後の要素を返す関数を記述しようとしています。これまでのところ、私はこれを見つけた:Haskellで正確に2つの要素を持つパターン一致リスト
myButLast :: [a] -> a
myButLast [] = error "Cannot take one but last from empty list!"
myButLast [x] = error "Cannot take one but last from list with only one element!"
myButLast [x:y] = x
myButLast (x:xs) = myButLast xs
今myButLast [X:Y]が付きライン明確に間違っていますが、私はそれは私が「とは何であるとして、正確に2つの要素を持つリストを一致させる方法がわかりません私はそこでやろうとしています。
'[x、y]'または 'x:y:[]'と書くことができます。どちらも同等です。パターン '[x:y]'は、正確に一つの要素を含むリストとマッチすることを意味します。それはリストであり、 'x'と' y'という名前の2つの要素があります。 – MathematicalOrchid
@MathematicalOrchidああ、そうだ。どうもありがとうございました! –
実際、そうではありません。「[x:y]」は、「x」が最初の要素であり、「y」が残りのサブリストであることを意味します。 (['x:xs]'と考えてください。)残念です...どちらにしても、それはあなたが意味するものではありません。 – MathematicalOrchid