読者です 読者をやめる 読者になる 読者になる

gauche.night感想

scheme Gauche

http://karetta.jp/article/blog/gauche-night/022932
座談会面白すぎです。とくに黒田さんとshiroさんのcommon lisp vs schemeが。haskellrubyの肩身が狭そうでした。
マクロの話も盛り上がっていたのですが、自分はマクロをほとんどわかっていなかったので話の内容がよくわかりませんでした。

以下、メモした内容を列挙。つながりや誰の発言かは適当に補完してください。おぼえてない。

OnLisp
ジュンク堂でTop
schemerにとって
syntax-caseと比べるため。
真剣にやると使いにくい(syntax-case

Haskellerにとって
題材が面白い
遅延で95%ok
Ycombinator 型がなければ書ける
Haskellでは書けない
新しいTopLevelを定義するのは(Haskellでは)書けない
パフォーマンスを考える。

VMを書く。マシンコードを考える。
レジスタは4コ?8コ?どっちがよい
マクロでレジスタを動的に生成
プラットフォーム非依存
実装非依存を考える。
マクロでプログラムを生成する(コードジェネレータとしてのマクロ)
実験がたくさんできる。
マクロ、文法を変えるか、コードジェネレーションか

処理系拡張がパワー
文化が違う。
Lispの上のProlog
DSLのためのマクロ
RubyはRubyを最後まで通したい。

useはマクロ
useしたあと処理する
Rubyに何でuseがないの?(とdankogaiさんがよく聞かれるらしい)
セマンティックスを変えたくない。

International Lisp Conference
ケンブリッジ
125人、us23人、日本6人、南ア2人、フランス7人、ドイツ13人
プラクティカルな話が多かった。
Gaucheの論文があった。川合さんだった
Lispでアセンブラを書く。
OP-S式が一対一。
コンパイラを書く
IPアドレス->32bit比較
unsigned->sugined変換
アセンブラでXOR、埋め込みアセンブラ

データベースをチューニング
consを出さない。
プラクティカルって?->アプリケーションのはなし
Liskellってあるよ
インタプリタないよ
Haskellだからよいの

Gauche本、ll魂で発売。みんな買いましょう。

R6RSについて
今年中だった->決裂->2,3年かかるみたい
Common Lispは超ド急戦艦
schemeは小回りがきく
コンパイルは仕様?schemeにないやん
つか、Common Lisp以外にコンパイルが仕様に入っている言語って何よ?
C?
Common Lisp以外は認めない(黒田さん)

デクレア オプティマイズ(英語が。。。)
scmのhobbitくらいの性能しか出ない?
Stalinがあるよ
コンパイルに時間がかかる、フルソースコード解析
高くつくでしょ?高いのはちょっと。。。
ACLに200万使ったほうが安くない?

コンパイルについて仕様に入っていないとこまる。
マクロ展開のコンパイル時。

ところで、gaucheのモジュールの話。
fooモジュールを定義したらfooは使えないの?
モジュールとTopLevelは別
それって、名前空間が二つ?
(誘導尋問)
レイヤーが違う
いんちきくさくない?

マクロ合戦
hygienic macro
hygienic macroとpattern matchは直交する概念
syntax-case
S式だけか環境+S式か
schemeとhygienic macroは別の言語brain....に近い
R6RSでもののしりあい
仕様の決裂->抜ける(暗黒面が。。。

schemeの意味論と矛盾しない?
evalにオブジェクトはok?
(+ 1 2 3)     ok
(+ . (1 2 3)) ok?

CommonLispの仕様書はシンタックス->reader(意味)で書かれている。
schemeの仕様書にはS式の対応とシンタックスの対応がない?
CommonLisp
文字列->S式->実行 と決まっている
scheme
文字列->実行 間がねえぞ!
いやいや、文字列->何かの内部表現->マクロ->S式->何かの。。。->実行
え?何かの。。。って誰もわからない仕様?よく考えると矛盾だらけ?

pattern matching
あれがあればCommon Lisp使うよ
Common Lispにもあるよ
あれ難しい

Gaucheの正規表現
正規表現そのものについて
楽するためにある。実用的
原理主義者は->文字列リテラルに正規表現を閉じ込めろ!
エスケープの嵐、楽したいじゃん

Perl互換、スクラッチで書いてます
鬼車は?そのころは使えなかった。
で、gaucheで正規表現はバリバリ使えるの?
バリバリ使うとスタックがあふれる
(携わっているruiさんでさえあまり使っていないらしい。。

ところでCookBookのネタは?
PerlCookbookやRubyCookbook参考にしてます
lispっぽくないネタが多かったり、ところどころ濃いねたがあったり
マニアックじゃないとlispじゃない?
マニアックじゃないと認めない?
CommonLispはPerlに近い
(汚くてもとりあえず動くプログラムを書くカリスマ的なハッカーがいる。

状態について
現実には状態はない?
functionalは状態はない?
状態と状態でないものの区別は無い(functional
オブジェクトがあって、中が変わるのか
オブジェクトをとり、新しいオブジェクトを返すのか

毎回引数に全てのパラメータを取れない。パラメータが多くなると破綻す。
モナドがあるよ
モナド怖い
モナドのような道具の支援がないと難しい。思考の型が違う。
関数型を説明するのは難しい。
Perl6は何でもありですよ!
Haskellは部品は書きやすい->でも、mainどうするよ、どう書くのよ?汗
Inline Haskell!

Haskell単純は単純に、難しいものは無理
そんなこといっていいの?
考え方によって違う。難しく考えなければよい。
HaskellはHaskellの考え方をしよう
Ruby->Haskellとかは無理。
HaskellはPerl6を書くには最高の言語だよ。
Common Lisp⊃Haskell

ASTを書くのは楽しい。
でも理解されない
理解されなくてもよい。わからないやつはほっとけ
普通のひととギャップがあるよね
そのためのOnLispです!
エディタの支援が必要。
Treeが面白いんだ。りかーしぶ(英語が。。。

readとevalは別!クリティカルな話
シンタックスがデータにならない。

未来のLisp。未来のプログラミング言語
よくわからない。Common Lispは標準のレベルが高い
Lisp machine、OSがLisp
cpuのレジスタをs式でダンプ、返り値を変えて再実行

Pugsが面白い。Perl6
でもparrotがでたあとだろうな、普通の人が使うのは。

ライブラリとコアが別であれば何でもよい。
Common Lispはライブラリとコアが別なの?
Hashはコアじゃなくてよい
ほかのCommon Lispで動かなかったら悲しいじゃん。
implementationは普通複数だよ。
Perl、Ruby、主要な人が死んじゃったらどうするの?
Perlは大丈夫だよ。

pure functionalであればよい
パフォーマンスなんか考えない。

つか、念じて動けよ!
哲学でhogehoge(よくわからなかったorz
書くことが思考の一種。考えを見る道具

Hack宣言。
当たり前のことをやる。納期は守る。
じゃないとlisperの社会的評価がいつまでたってもあがらん!

ideaいっぱい。
アプリケーションを書きたい。

Hackの上を行く。通過的なものではなく、残るもの。
ファイナンシャルのhack?ちょっと違う
インサイダーなんたら

web上でcommonlisp。世界の果てからなんとやら

Haskellでクオートを入れたい。
セミファーストクラスを扱う。

karreta.jpに変な機能をたくさん入れたい!

自分の話

gauche.nightでたまたま合い席になった方がlequeさん(SREやrfc.ftpの作者の方)でした。でもってSRE(実はここではじめて知りました。不勉強)のことや、hygienic macroのことやを少し教えてもらえました。lequeさん、webpageで翻訳を見つけたので、これを取っ掛かりに勉強させてもらいます!

会社説明会で一緒だったid:masa_edwさんにも会えました。あまり話せなかったけど、gauche
仲間ができてよかったです。

あと、OnLispの訳者の野田開さんにサインをいただきました。ありがとうございます!
ここまではよかったのですが、ハッカーと画家を持ってこなかったのは痛恨の極みでしたorz。
もう、ハワイに行くしかないのか、ハワイに。。。