チューリング不完全

What are you afraid of? All you have to do is try.

第2回 スタートHaskell2に参加してきました

第2回 スタートHaskell2 - [PARTAKE]

f:id:aomori-ringo2:20120722181333j:plain


最近趣味で触っていたHaskell、気になっていた勉強会についに今回はじめて参加することができました。



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

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


いわゆる「すごいH本」を教科書にしています。
今回は

  • 第3章 関数の構文
  • 第4章 Hello 再帰!
  • 第5章 高階関数

をやりました。



第3章 関数の構文(@mizu__tamaさん)

  • パターンマッチ
  • ガード
  • where
  • let式
  • case式

それぞれについては「すごいH本」を読めばわかることなので略します。(めんどい)
その他、以下の様な話題がありました。

上記にあげたものは全部case式の糖衣構文

whereとletの使いどころ




letとlet inの違い

「すごいH本」の第3章の中では、

4 * (let a = 9 in a + 1) + 2

のように基本的にはletはinセットで使用しているのですが、リスト内包表記とあわせて使用する場合は

calcBmis xs = [bmi | (w, h) <- xs, let bmi = w / h ^ 2]

のようにin句がない。
また、ghcで

let hoge = 100

のように書くと、以降ghci中でhogeを使用することができるようになります。
これについては@kazu_yamamotoさんが解説してくれていました。モナドがどうとか言っていた気がするのですが、きちんと理解はできなかったので既に脳内から雲散霧消してしまいました。

  • リスト内包表記では、リスト内包という表記の中で宣言するとスコープがその部分のみなのでwhereのようにリスト内包内部でのみ使用可能な変数みたいにして使える
  • ghc中でletを宣言すると、ghc全体のスコープに対して置かれるのでどこでも使えるようになる。(グローバル的な?)

というのが私の現時点での理解です。



第4章 Hello 再帰!(@ko1kunさん)

いろんな本からの参照があったのが印象的でした。(読んでみたい、と思った本もちらほら。)
内容としては再帰を使った初歩的な関数を書いてみよう、というものでした。このへんはプログラミングHaskellでもやっていたので大丈夫かな。
途中フィボナッチ関数の計算速度に関する話題がいろいろと出てきたのですが、Haskellとは関係のない、アルゴリズムの話だったように思います。






第5章 高階関数(@S1E11さん)

今日のヤマだったと思います。

  • カリー化
  • map, filter
  • ラムダ式
  • foldl, foldr
  • $を使った関数適用
  • 関数合成

foldl, foldrと無限リストが絡むあたりが難しく、つまりました。これは次回までに自分で悩んでおきたいところですね。

foldl, foldl', foldrの使い分け


関数合成をする際の.(ドット)、$について



その他にもTLでは正格とか末尾再帰の話題がありましたが、かなりわかっていないので今は見なかったことにしておきましょう。



LT | 文芸的プログラミング(@shokosさん)

hsファイルはコードが基本で、コメント部分は--や{- -}で指定するのですが、それが逆になり、基本がコメントで、コードについては明示的に指定するlhsについてのお話。
Birdモード, LaTeXモードの2つがあるようです。
参考: Executing Haskell program

文芸的プログラミング (ASCII SOFTWARE SCIENCE Programming Paradigm)

文芸的プログラミング (ASCII SOFTWARE SCIENCE Programming Paradigm)



LT | idのナゾ、constのヒミツ(@kazu_yamamotoさん)

haskellのid, constはどこで使うの?という話題がいつの間にかSKIコンビネータとかどんどんdeepな話に・・・
コンビネータについてやけに興奮した調子で話す@kazu_yamamotoさんが面白かったです。

数学パズル ものまね鳥をまねる POD版 ―愉快なパズルと結合子論理の夢の鳥物語

数学パズル ものまね鳥をまねる POD版 ―愉快なパズルと結合子論理の夢の鳥物語



感想

100人超で5時間超え、という規模の勉強会は初めてでしたが、発表だけでなくTwitterでのやりとりも楽しく、集中力を途切れさせずに最後まで楽しく参加できました。
発表者のみなさま、主催者、運営者のみなさま、お疲れ様でした。次回もぜひ参加したいと思います。