スタートClean、終わりました

開催が危ぶまれていた(?)スタートCleanですが, 無事, スタートとは名ばかりのウルトラなメンツでCleanを始めました!
> togetterでのまとめ

はじめに主催者のoskimuraさんが, 主にHaskellとの違いからClean概説を発表.
途中, 事あるごとに話を振られましたがあんまり応えられず….
そのあと各自の環境でHello Worldを動かす流れ.
直前に書いておいた前回の記事をプロジェクタで表示しながら解説したりしました.
そのあとは…よく分かりませんw 各自気になるトピックについてディスカッションと実験. ちょいちょいshelarcyさんがHaskellの話を挟んできたり.

話に出たトピックを列挙してみる

  • modクラスのIntインスタンスが存在しない事が判明(remはある)
    • ドキュメントには書いてあったので良しとしよう….
  • Existential Type(存在型)について怪しげな挙動が見つかったり(?)
    • 詳細について行けなかった><
  • CleanのインラインABC(Cleanランタイム用アセンブラのようなモノ)を触り始めたり
    • それを使って World(=ランタイム環境) をHackしたりCrashしたりw(そーゆー会じゃねーから!)
    • CrashさせるのにYコンビネータを使うのは常道って感じですね!
  • ランタイムの pretty-printer の仕組みが謎過ぎると話題に!
    • generic derivingとかしてないランタイムに決定する値が, なぜかうまく表示される=>どこに型情報持ってるのか不明!?
      • おそらくDynamic用にバックエンドはいろいろ情報持ってるんじゃないか?というような結論ですがイマイチすっきりしてない感じ
    • ホスト言語の機能を使うという視点から見て(id:ranhaさんには特に)ヒットしたようです. 私自身にもかなり興味深い視点です.
  • アノテーションの書き方に一同苦笑い
    • :: A B -> C はHaskellの A -> B -> C に相当するので, 型クラスのパラメータには常にカッコが必要
  • Clean.printToString(Haskell.Showに相当)を触ってみたり
    • ただし gPrint をderivingすること

懇親会

CoqやAgda2上でコンパイラを作る話を延々と聴講する会w
サーキュラープログラミングは誰でも出来るわけじゃないという事を聞いて安心するなど.
left recursionを許すPackratParsingの話もちらっと. テーブルを遅延構築するHaskellコードはヤバイらしいので後で読む.

初めて遭った人

  • id:oskimuraさん - 本会の主催者. お疲れ様でした!
  • mela_biancaさん - 超小さいPCで頑張ってました. 今回はあんまり絡んでないですが, またどこかで会いましょう!

まとめ

Cleanらしさという点では重要なのですが, ちらっと紹介しただけでDynamicで遊べなかったのが残念.
MacOSXLinux版を早く実装してください><
あとiTaskは非常に頑張ってる感があるので紹介したかった. 解説できるほど理解してないけど.


スタートというのは釣りでした!*1 …という感じで非常に楽しい会となりました.
自分は細かいトピックについて解説(助言)しただけですが, ものすごい勢いで周囲の理解が進むのは見ていて爽快でした.
SML, OCaml, Haskell, Coq, Agda2についても話題(?)にのぼりましたが, それぞれにまだ知らない世界を垣間見た気がします. まだまだ世界は広いです.*2

*1:いやホントですけどね. fizzbuzz書いたし!

*2:おおげさ?