「実用期を迎えた関数プログラミング」懇親会での会話忘却録
「実用期を迎えた関数プログラミング」というイベントが福岡で開催されたので参加してきたのですが、その懇親会で山本さんと小笠原さんとお話することができたので会話したことをメモしておきます。
かなりうろ覚えでの記述なので、間違っていたら指摘お願いします。
テストの話
- Q. Haskell Day 2012の資料拝見したのですが、Haskellって実際どの程度テスト書かれているのか?
- 純粋な関数と副作用を含む関数を合成することでプログラムを組み立てる
- 純粋な関数の性質はわかる(訓練すればわかるようになる)
- 性質がわかっているならQuickCheckで性質書いてランダムテストできるよね
- 副作用を含む関数は性質というよりシナリオ
- シナリオにはランダム性は含まれない
- こういうのはHSpecとかでテスト書こう
- 型に関する間違いはなくても値に関する間違いはある可能性があるのでQuickCheckでチェック
- (MVVMの)VMは独立にテストできる(だったかな?)
- RxとFRP
- データを差し替えることでイベント駆動型のテストもやりやすくなるのでは
- RxとFRP
- exampleとpropertyを使い分ければいいと思うよ
- 具体値でテストをどんどん書き、性質がわかった時点でpropertyに差し替える
- 性質がわかっているものはpropertyでいきなり書く
- QuickCHeckのようなものが浸透するかどうかは各言語コミュミティの雰囲気次第?
- SmallCheckというのもある
先に書くか、後から書くか
OCamlぽい話とか
- フロントエンドとは切り離されていたりするバックエンド部分などはOcamlでいい場合も多い
- そんな言うほど導入ハードル高いかなぁ(プロダクト的な意味で)
- Ocamlは知名度の問題もあるかも
- Q. チーム開発する際、どの程度の習熟度なら関数型言語を導入できると思う?
- Q. Windowsプラットフォーム対象のときにOCamlは?
- OCaml標準で収まる範囲ならまぁありなのでは。テキスト処理とか。
- oasisの話
- Ocaml 4.0:replのcwoロードの依存関係の解消、GADTS
- Js_of_OCaml
- OCamljsは開発が止まっている(でもオブジェクトはこちらのほうがよかった)
- TaPLの話とか
- λ計算 → η-変換
- Relaxed value restriction
- OCamlerはみんな何かしら自作ライブラリをもっている
- 他の言語を使っているときに(言語によっては使えない場合)Continuous Monadが使いたくて心が痛むときがある
- Lazy.t.list
- F#のType Provider
- Haskell,OCaml,Scala,F#…独自の進化を始めている機能もある。だけど根底にあるものは似ているので、1つの言語を使えるようになれば、後は慣れの問題(文法学んで3日ほど書き続ければ慣れる)。
本編の感想は後日改めて書きますが、懇親会で聞いたお話もかなり勉強になりました。ありがとうございました。