計算機科学のブログ

型の紹介 - 型の基礎 - 型変数 - tail関数、head関数、型シグネチャ、安全なtail

入門Haskellプログラミング (Will Kurt(著)、株式会社クイープ(監修、翻訳)、翔泳社)の UNIT2(型の紹介)、LESSON 11(型の基礎)、11.5(練習問題)、Q11-2の解答を求めてみる。

コード

sample.hs

main :: IO ()
main = do
  print $ tail [1]
  print $ tail [1, 2]
  print $ tail [1 .. 10]
  print $ myTail ([] :: [Int])
  print $ myTail [1]
  print $ myTail [1, 2]
  print $ myTail [1 .. 10]

-- tail :: [a] -> [a]
myTail :: [a] -> [a]
myTail [] = []
myTail (x : xs) = xs

-- head :: [a] -> a
-- 空リストを返すhead関数を作成することはできない。

入出力結果(Terminal, Zsh)

% runghc sample.hs 
[]
[2]
[2,3,4,5,6,7,8,9,10]
[]
[]
[2]
[2,3,4,5,6,7,8,9,10]
%