学ばないdsl
DESCRIPTION
渋谷.rb[:20140115] http://www.zusaar.com/event/2687020 で発表 Ruby - ラムダ式で学ぶクロージャとDSL - Qiita http://qiita.com/tadsan/items/a40b2a9c1f7768abd3bbTRANSCRIPT
![Page 1: 学ばないDSL](https://reader033.vdocuments.site/reader033/viewer/2022052901/55660f5cd8b42a06318b4b34/html5/thumbnails/1.jpg)
学ばないDSL
2014/01/15 @tadsan 渋谷.rb[:20140115]
![Page 2: 学ばないDSL](https://reader033.vdocuments.site/reader033/viewer/2022052901/55660f5cd8b42a06318b4b34/html5/thumbnails/2.jpg)
お前誰よ
うさみけんた
2012年の夏まで北海道で自宅警備
最近はずっとPHPばっかり書いてます
ぷろぐらみんぐ言語が好きです
渋谷.rbの参加は3回め(だった気がする)
![Page 3: 学ばないDSL](https://reader033.vdocuments.site/reader033/viewer/2022052901/55660f5cd8b42a06318b4b34/html5/thumbnails/3.jpg)
自己紹介
![Page 4: 学ばないDSL](https://reader033.vdocuments.site/reader033/viewer/2022052901/55660f5cd8b42a06318b4b34/html5/thumbnails/4.jpg)
ぼくの好きなプログラミング
![Page 5: 学ばないDSL](https://reader033.vdocuments.site/reader033/viewer/2022052901/55660f5cd8b42a06318b4b34/html5/thumbnails/5.jpg)
scripter = ->(*args){ ->{ puts args.join("\n") } }title = ->(text) { "『#{text}』\n" }paragraph = ->(*args){ args.join("\n") + "\n" }chara = ->(name) { ->(text){ "#{name}「#{text}」"} }ryu = chara[:リュウ]; tak = chara[:たかし]script = scripter[title[:俺より強い奴に、会いに行く], paragraph[:ピンポーン, ryu[:こんにちは], tak[:はいどなた]], paragraph[ryu[:いまちょっといいですか], tak[:これから出かけます]], paragraph[ryu[:午後出勤ですか?], tak[:はい]], paragraph[ryu[:強そうですね], tak[:なにがですか]], paragraph[ryu[:態度が]], paragraph[:リュウは、自分より強そうな奴に、会いにいったのだった。 完]]script[]
スクリプト(台本)
![Page 6: 学ばないDSL](https://reader033.vdocuments.site/reader033/viewer/2022052901/55660f5cd8b42a06318b4b34/html5/thumbnails/6.jpg)
『俺より強い奴に、会いに行く』!ピンポーンリュウ「こんにちは」たかし「はいどなた」!リュウ「いまちょっといいですか」たかし「これから出かけます」!リュウ「午後出勤ですか?」たかし「はい」!リュウ「強そうですね」たかし「なにがですか」!リュウ「態度が」!リュウは、自分より強そうな奴に、会いにいったのだった。 完
台本を出力(実行結果)
![Page 7: 学ばないDSL](https://reader033.vdocuments.site/reader033/viewer/2022052901/55660f5cd8b42a06318b4b34/html5/thumbnails/7.jpg)
何をしてるのか
ラムダ式とクロージャ
可変長引数を結合してる
ドメイン固有言語 - Wikipedia
ラムダ式で学ぶクロージャとDSL
意外と移植性が高い!
![Page 8: 学ばないDSL](https://reader033.vdocuments.site/reader033/viewer/2022052901/55660f5cd8b42a06318b4b34/html5/thumbnails/8.jpg)
最近読んだ本
![Page 9: 学ばないDSL](https://reader033.vdocuments.site/reader033/viewer/2022052901/55660f5cd8b42a06318b4b34/html5/thumbnails/9.jpg)
世間には根強く 「えっコンパイラも実装したことないの」 「Lispインタプリタとか課題で実装したわー」
!
といった声がある
![Page 11: 学ばないDSL](https://reader033.vdocuments.site/reader033/viewer/2022052901/55660f5cd8b42a06318b4b34/html5/thumbnails/11.jpg)
言語処理系の基礎が 完全無料で学べる!
![Page 12: 学ばないDSL](https://reader033.vdocuments.site/reader033/viewer/2022052901/55660f5cd8b42a06318b4b34/html5/thumbnails/12.jpg)
実装してみた出落ち!
![Page 13: 学ばないDSL](https://reader033.vdocuments.site/reader033/viewer/2022052901/55660f5cd8b42a06318b4b34/html5/thumbnails/13.jpg)
MatzLisp!
![Page 14: 学ばないDSL](https://reader033.vdocuments.site/reader033/viewer/2022052901/55660f5cd8b42a06318b4b34/html5/thumbnails/14.jpg)
本書中のサンプルコードはふつうのRubyで書かれてます
!
ご安心ください
![Page 15: 学ばないDSL](https://reader033.vdocuments.site/reader033/viewer/2022052901/55660f5cd8b42a06318b4b34/html5/thumbnails/15.jpg)
使用フォント セプテンバーM・L
_ \ヽ, ,、 `''|/ノ .| _ | \`ヽ、| \, V `L,,_ |ヽ、) .| / ,、 / ヽYノ .| r''ヽ、.| | `ー-ヽ|ヮ | `| ヽ, ,r .| ヽ,r'''ヽ!'-‐'''''ヽ、ノ ,,,..---r'",r, , 、`ヽ、 ヾ ヽ、__/ ./ハレハ i`ヽ、 `''r`ミ_ .レ//r,,,、 レ'レハヾ, L,,_ `ヽ、 "レ, l;;;l l;;;l`i.リレ' リ ̄~~ ヽ、 ワ `"/-'`'`' `''''''''" ┼ヽ -|r‐、. レ | d⌒) ./| _ノ __ノ