実践Haskell HaskellのエラーとEither型 head関数、部分関数、エラー
入門Haskellプログラミング (Will Kurt(著)、株式会社クイープ(監修、翻訳)、翔泳社)のUNIT7(実践Haskell)、LESSON 38(HaskellのエラーとEither型)、38.1(head関数、部分関数、エラー)、クイックチェック 38-1の解答を求めてみる。
コード
palindrome-checker/app/Main.hs
module Main (main) where
import Lib (myTakePM)
main :: IO ()
main = do
mapM_
(\n -> print $ myTakePM n [1 .. 5])
[-2 .. 2]
palindrome-checker/src/Lib.hs
module Lib
( myTakePM,
)
where
myTakePM :: Int -> [Int] -> [Int]
myTakePM 0 _ = []
myTakePM n (x : xs) = x : myTakePM (n - 1) xs
myTakePM _ [] = []
入出力結果(Terminal, Zsh)
% stack exec palindrome-checker-exe\
>
[1,2,3,4,5]
[1,2,3,4,5]
[]
[1]
[1,2]
%