すごいHaskellたのしく学ぼう!

LYH 9.1 ファイルとストリーム

問題 (1) foreverについて、型シグネチャと用途、importすべきものを言え。 (2) toUpperについて、importすべきものを言え。 (3) capslocker.hsを実装せよ。 (4) getContentsは遅延I/Oであり、入力が大きい場合は( )消費量の面で有利である。 (5) contents <…

LYH 8.3 I/O アクションどうしをまとめる

8.3 I/O アクションどうしをまとめる main = do putStrLn "Hello, what's your name?" name <- getLine putStrLn $ "Zis is your future: " ++ tellFortune name 8.1と説明が重複するところがあるが、もう一度書く。 上のコードでは、getLineが副作用を扱っ…

LYH 8.2 Hello, World!

8.2 Hello, World! main = putStrLn "hello, world" これをhelloworld.hsとして保存し、 $ ghc --make helloworld と入力する。コンパイルされて、helloworldという実行ファイルが作成される。 8.2 確認問題 putStrLnの型を調べよ。(:t putStrLnの結果を示せ…

LYH 8.1 入出力

8.1 入出力 8.1 不純なものと純粋なものを分離する Haskellでは関数が副作用を持つことが許されない。木のようなデータ構造でさえ、要素を追加しようと思ったら、新しい要素をが追加された木を、新たに変数に束縛することで対応できた。しかし、入出力に関し…

LYH 7.11 型を司るもの、種類

7.11 型を司るもの、種類 Intの種類を調べたいとき、GHCiではどのように入力すればよいか。 1.に対して、値の型を調べるコマンドは何か。 具体型とは何か。具体型はGHCiではどのような記号で表記されるか。 Maybeの種類を答えよ。 Maybe Intの種類を答えよ。…

LYH 7.10 Functor 型クラス

7.10 Functor 型クラス 1.序文 Functorはどのような型クラスか。 Functor型クラスに属している型の例を1つあげよ。 Functor型クラスの実装を示せ。 3.中のfmapを読み、どのような関数か説明せよ。 リストに対するFunctorインスタンス宣言を示せ。 2.MaybeはF…

LYH 7.9 YesとNoの型クラス

7.9 YesとNoの型クラス 様々な型の真理値判定を可能とするためのYesNo型を宣言せよ。 1.に関して、0は偽、それ以外は真と解釈するように数に関してのインスタンスを定義せよ。 空リストは偽、そうでなければ真とするようにリストに関してのインスタンスを定…

LYH 7.8 型クラス 中級講座

7.8 型クラス 中級講座 1. 序文 型クラスはインターフェースのようなものである。型クラスはどのような振る舞いを定義するか。例を3つあげよ。 型クラスの振る舞いは何を定義することで得られるか。 Eqは、(3.1)が出来る値の型クラスである。Eqはどのような…

LYH 7.7 再帰的なデータ構造

代数(的)データ型の3種類を言え。( 1 ) リストは ( 2 ) または ( 3 ) のいずれかの値を取るデータ構造である。代数データ型を使って独自のリスト型 List a を実装せよ。( 4 ) ( 4 ) をレコード構文を用いて書け。( 5 )Cons とは ( 6 ) を言い換えたものであ…

LYH 7.6 型シノニム

新しい型を作る = ( 1 ) キーワード 型同義名(型シノニム)を作る = ( 2 ) キーワード例えば、Stringは以下ように型シノニムとして定義されている。 type String = [Char] 電話帳を定義してみよう。 type PhoneNumber = String type Name = String type Pho…