型と値 Part2
なんかすっごく長い文章ですね! けど、型と値は大切だと思ってます
【複数の型変換】
take 3 [1,2,3] → [1,2,3]
このtake関数を型変換すると
Int -> [a] -> [a]
詳しく解説すると
Int ( take3 )が第一引数で[1,2,3]を第二引数にとり[1,2,3]という返り値になるという意味です
けど、この[a]はどんな型と置き換えてもよいのでした
この場合の[a]は両方とも同じものが入ります
なので
Int -> [Char] -> [Char] Int -> [Bool] -> [Bool] Int -> [String] -> [String] ・ ・ ・
take関数は引数のリストの1部を返す関数なので以上の事が分かると思います
【型の宣言】
firstNLines :: Int -> String -> String …… 関数の型宣言 firstNLines n cs = unlines $ take n $ lines cs …… 関数の定義
詳しく解説すると
firstNLines関数の定義は第一引数がInt 第二引数が String 返り値が String の関数である
関数の定義はcsからn行( 任意の数値 )を持って来て最初のn行( 任意の数値 )を書き出す処理
=cs行のn行( 任意の数値 )を持って来て連結して書き出す
このような処理を行います
明示的に型を宣言するためには〘 :: 〙を使います
また、一般に関数の型宣言は以下のように書きます
関数名 :: 第一引数の型 -> 第二引数の型 -> ……………… -> 返り値の型
すごくすごく時間をかけて書いた型と値でした
実質5時間ぐらいでしょうか (;≧皿≦)。゜°。
よい復習となりました
実際は4章まで終了してるのですが、復習が終わってから次の章に進みます(*≧▽≦)bb