関数型プログラミングの基礎 再帰のルールとパターンマッチング 最初の再帰関数:最大公約数 リストのtail関数のパターンマッチングを使った独自実装
入門Haskellプログラミング (Will Kurt(著)、株式会社クイープ(監修、翻訳)、翔泳社)のUNIT1(関数型プログラミングの基礎)、LESSON7(再帰のルールとパターンマッチング)、7.3(最初の再帰関数:最大公約数)のクイックチェック 7-3の解答を求めてみる。
コード
myTail :: [a] -> [a]
myTail (_ : xs) = xs
main :: IO ()
main = do
print $ myTail [1]
print $ myTail [1..10]
print $ myTail "a"
print $ myTail "abcde"
-- 以下はエラー
print $ myTail ([] :: [Int])
入出力結果(Terminal, Zsh)
% runghc sample03.hs
[]
[2,3,4,5,6,7,8,9,10]
""
"bcde"
sample03.hs: sample03.hs:2:1-20: Non-exhaustive patterns in function myTail
%