Slide 1

Slide 1 text

学ばないDSL 2014/01/15 @tadsan 渋谷.rb[:20140115]

Slide 2

Slide 2 text

お前誰よ うさみけんた 2012年の夏まで北海道で自宅警備 最近はずっとPHPばっかり書いてます ぷろぐらみんぐ言語が好きです 渋谷.rbの参加は3回め(だった気がする)

Slide 3

Slide 3 text

自己紹介

Slide 4

Slide 4 text

ぼくの好きなプログラミング

Slide 5

Slide 5 text

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[] スクリプト(台本)

Slide 6

Slide 6 text

ʰԶΑΓڧౕ͍ʹɺձ͍ʹߦ͘ʱ ! ϐϯϙʔϯ Ϧϡ΢ʮ͜Μʹͪ͸ʯ ͔ͨ͠ʮ͸͍Ͳͳͨʯ ! Ϧϡ΢ʮ͍·ͪΐͬͱ͍͍Ͱ͔͢ʯ ͔ͨ͠ʮ͜Ε͔Βग़͔͚·͢ʯ ! Ϧϡ΢ʮޕޙग़ۈͰ͔͢ʁʯ ͔ͨ͠ʮ͸͍ʯ ! Ϧϡ΢ʮڧͦ͏Ͱ͢Ͷʯ ͔ͨ͠ʮͳʹ͕Ͱ͔͢ʯ ! Ϧϡ΢ʮଶ౓͕ʯ ! Ϧϡ΢͸ɺࣗ෼ΑΓڧͦ͏ͳౕʹɺձ͍ʹ͍ͬͨͷͩͬͨɻɹ׬ 台本を出力(実行結果)

Slide 7

Slide 7 text

何をしてるのか ラムダ式とクロージャ 可変長引数を結合してる ドメイン固有言語 - Wikipedia ラムダ式で学ぶクロージャとDSL 意外と移植性が高い!

Slide 8

Slide 8 text

最近読んだ本

Slide 9

Slide 9 text

世間には根強く 「えっコンパイラも実装したことないの」 「Lispインタプリタとか課題で実装したわー」 ! といった声がある

Slide 10

Slide 10 text

No content

Slide 11

Slide 11 text

言語処理系の基礎が 完全無料で学べる!

Slide 12

Slide 12 text

実装してみた 出落ち!

Slide 13

Slide 13 text

MatzLisp!

Slide 14

Slide 14 text

本書中のサンプルコードは
 ふつうのRubyで書かれてます ! ご安心ください

Slide 15

Slide 15 text

   _    \ヽ, ,、      `''|/ノ       .|  _    |  \`ヽ、|    \, V       `L,,_       |ヽ、)      .|     /           ,、     /        ヽYノ    .|       r''ヽ、.|    |        `ー-ヽ|ヮ     |            `|    ヽ,    ,r      .|      ヽ,r'''ヽ!'-‐'''''ヽ、ノ  ,,,..---r'",r, , 、`ヽ、 ヾ  ヽ、__/ ./ハレハ i`ヽ、 `''r`ミ_    .レ//r,,,、 レ'レハヾ,  L,,_ `ヽ、     "レ, l;;;l   l;;;l`i.リレ' リ ̄~~      ヽ、 ワ `"/-'`'`'        `''''''''"      ┼ヽ  -|r‐、. レ |                  d⌒) ./| _ノ  __ノ