静岡Developers勉強会 第5回Haskell読書会に参加しました。

静岡Developers勉強会 第5回Haskell読書会に参加した皆さんお疲れ様でした。発表者のふるたさんも、お疲れ様でした。reverse関数の定義で用いたトランプの例えが、関数の動作をイメージしやすかったと思います。
http://farm5.static.flickr.com/4022/4651361303_7f20245756.jpg

講義録について

今回は勉強会に参加しながら復習した部分を中心に載せていきます。なお、見出しの番号はテキストの通し番号に揃えてあります。

2.4 Haskellプログラム
  • レイアウト規則
    • whereを使ってレイアウト規則を使う場合、where節を用いる定義よりも一文字インデントを下げる。
a = b + c
 where
 a = 1
 b = 2
3.8 多重化型定義
  • クラス制約
    • C a
      • 「C」はクラス名
      • 「a」は型変数
4.4 パターンマッチ
  • リスト・パターン
    • 演算子「:」は「cons演算子」と呼ばれ、既存のリストの先頭に新しい要素を追加することで新しいリストを作成する。

6.6 再帰の秘訣

ここが、今回の勉強会の「肝」だったと感じています。

  • 関数プログラミングの肝
    • 型を意識することで、適応できる数値型を決定する。
    • 単位元・基底部を意識することで、計算が停止し、エラーが発生しない関数を定義できる。
      • 0や1を引数で取る場合
      • 空リストを引数で取る場合
    • 単位元・基底部ではない場合を定義することで、単位元・基底部以外の数値に対する計算方法を定義できる。
    • 上記計算方法を定義することで、適応できる型を増やすことができる。
      • 何を計算する関数か定義することで関数が扱える数値を拡張
    • 出来上がった定義を単純化することで関数を見やすくする。
その他
  • リストのインデックスは0から始まる。
  • 簡約とは、関数を適用することで、これ以上簡単な式にできない形へ変換すること。
    • これ以上、関数を適用できない状態のこと

今後の会場について

2次会で、富士市ご当地グルメ「つけナポリタン」で盛り上がりました。スパゲッティではなくあくまでもラーメン。今後の会場として、富士市に11時過ぎぐらいに集合して、つけナポリタン食べてから勉強会を開くのはいかがでしょう?

オマケ

チーズケーキに隠し味として酒粕が入っていたらしいですが、隠れすぎて見つけられなかったのは内緒です。でも、濃厚な味でまた食べたくなりました。

http://farm5.static.flickr.com/4039/4651359615_ffa1413e3c.jpg

http://farm5.static.flickr.com/4058/4651359863_750850a585.jpg