web-dev-qa-db-ja.com

Haskellの要素が2つあるパターンマッチリスト

Haskellの学習を始めたばかりで、パターンマッチングを使用して、要素が2つだけあるリストと一致させようとしています。演習として、リストから1つだけ最後の要素を返す関数を記述しようとしています。これまでのところ私はこれを見つけました:

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つの要素を持つリストを照合する方法がわかりません。私はこの( http://learnyouahaskell.com/syntax-in-functions#pattern-matching )ページを読んで多くの助けになりましたが、まだ完全にそこにいるわけではありません...

13
user4424299
myButLast :: [a] -> a
myButLast [] = error "empty list"
myButLast [x] = error "too few elements"
myButLast [x, _] = x
myButLast (x: xs) = myButLast xs

これは 99問 の2番目の質問です。

18
Kamel