Shibuya.lispは渋谷周辺半径2万キロのLispコミュニティです
Hosted on GitHub Pages — Theme by orderedlist
9月24日(火)に、9回目となるLisp Meet Upが開催されました。 涼しくて過ごしやすい素晴らしい夜にご参加頂いた全11名の皆さん、お疲れさまでした。
chikuさんから関数の部分適用と合成を行うPAPPLYというマクロについて発表がありました。
PAPPLYやその亜種の使い方、実装のキーポイントを説明し、最終的に #'(
の後ろにLAMBDA以外の
シンボルを書いた場合の挙動を拡張する、という内容でした。
結果的にはClojureの#()
と似た動作の構文になっていました。
発表資料及びPAPPLYのソースは、それぞれSlide ShareとGithubで公開されています。
これに続いて、fanannanさんからClojure Cookbookの和訳版について簡単な報告がありました。 が、結局見送りになったと後日報告がありました。
後半は1時間ほどライブコーディングの時間になりました。 今回のお題はスペースを区切り文字とする標準的なword countでした(case-insensitive)。
1つ目はClojure版で、potix2さんがコーディングしました。->>
マクロの利用、Java関数の呼び出し、
fn
での[[]]
による分配束縛、#()
と%
の利用といった、Clojureの機能が満載の内容でした。
->>
マクロについては会場のCommon Lispユーザから「展開形が見たい」とか、
「データの流れが普段と逆な点が見辛い」など、いろいろな反応がありました。
コードはgistにて公開されています。
Clojure版word coundのソース
2つ目はCommon Lisp版で、chikuさんがコーディングしました。vimからSWANKに接続できないというトラブルに見舞われたため、 以前のMeet Upで紹介された「screenのウィンドウにコマンドを送りつける」という方法で簡易的な対話環境を構築して コーディングしていました。正規表現ライブラリCL-PPCREとハッシュテーブルを使うわかりやすいコードですが、 case-insensitiveはハッシュテーブルの比較関数にEQUALPを指定することで実現しています。
自前のライブラリから使った関数と共に、コードをgistで公開しています。
Common Lisp版word countのソース
3つ目はScheme…ではなくRacket版をkazh98さんがコーディングしました。名前はprintfなのにフォーマット指示子はformatと同じというちょっと変わったものが出てきたりして、「RacketはRacket」ということを実感する内容でした。
コードはgistにて公開されています。
Racket版word countのソース
懇親会では実際にLispを何に使っているのか、Meet Upの運営状況どうなのという話題から始まり、後半は下北沢の話になりました。
次回はCommon Lispをテーマに、10/22(火)の開催を予定しています。 参加登録は以下のページから。</br> Lisp Meet Up presented by Shibuya.lisp #10
tags: Meet Up