第2回静岡Developers勉強会 Haskell読書会に参加しました。
第二回Haskell読書会開催のお知らせ - 静岡Developer's 勉強会に参加した皆さんお疲れ様でした。
今日の講義で私が取ったメモとそれに対するコメントを残しておきますので、ご参考にしてもらえると幸いです。
*1
処理系によってCharのリストとして認識する場合もあるんですね。
StringはCharのリスト
へぇー。
- 固定精度整数Int
- 32bitで表現できるのは-2^31<= x < 2^31
Charのリストを要素に持つリストになるんですね。教科書と違うなぁ。
こちらも、Charのリストを要素に持つリストになります。
Hugsでは要素になるとCharのリストになるらしいです。
- クラス制約をする多重定義型の例
- Hugs> :type (1,[2,3],[4,5,6],7)
- (1,[2,3],[4,5,6],7) :: (Num a, Num b, Num c, Num d) => (d,[c],[b],a)
第3章の代表例のようなものですね。
--無限のリストを作成するhaskellプログラム myadd :: Int -> ( Int -> Int) myadd x y = x + y unlimlist :: Int -> [Int] unlimlist n = n:(unlimlist (myadd n 1))
terminalがすごいことになりますね。
- :(コロン)の演算子は「リストの先頭に要素を追加する」
- Main> 1:[2,3]
- [1,2,3]
なるほど。
- ¬(否定演算子)はnotで書く
- Main> :type not
- not :: Bool -> Bool
ここ、聞きたかったんです。巻末の付録Bに記載がありましたね。
- 関数とは
- 「1つの引数の型をもらって、一つの型を返す」のが関数の定義です。
- 途中で引数を一つとった内部的な関数が生成されている。
- myadd x y = x + yを考えると、((myadd x) y)というイメージ
- (myadd x)は一つの引数を取る関数であるため、yを引数として取る。
-letはhugsでは使えない>
*1:講義の中でも出ましたが、議事録を次回の読書会の前に読み返すと、意味がよく理解できるようになっているのに気づきました。