24
igjit @igjit ((Rで) 書く ((もっとRっぽい) Lisp) インタプリタ)

((Rで) 書く ((もっとRっぽい) Lisp) インタプリタ)

  • Upload
    igjit

  • View
    799

  • Download
    1

Embed Size (px)

DESCRIPTION

第39回R勉強会@東京(#TokyoR)でLTしたときの資料です。

Citation preview

Page 1: ((Rで) 書く ((もっとRっぽい) Lisp) インタプリタ)

igjit

@igjit

((Rで) 書く ((もっとRっぽい)

Lisp) インタプリタ)

Page 2: ((Rで) 書く ((もっとRっぽい) Lisp) インタプリタ)

経緯

Page 3: ((Rで) 書く ((もっとRっぽい) Lisp) インタプリタ)

Rよくわからない。

Page 4: ((Rで) 書く ((もっとRっぽい) Lisp) インタプリタ)

Rのこともっと知りたい。

Page 5: ((Rで) 書く ((もっとRっぽい) Lisp) インタプリタ)

RでLispインタプリタを作ってみよう。

そうだ、

Page 6: ((Rで) 書く ((もっとRっぽい) Lisp) インタプリタ)

(元ねた)

Page 7: ((Rで) 書く ((もっとRっぽい) Lisp) インタプリタ)

http://www.aoky.net/articles/peter_norvig/lispy.htm

Page 8: ((Rで) 書く ((もっとRっぽい) Lisp) インタプリタ)

Rで実装

Page 9: ((Rで) 書く ((もっとRっぽい) Lisp) インタプリタ)

http://igjit.blogspot.jp/2013/05/lisp-r.html

Page 10: ((Rで) 書く ((もっとRっぽい) Lisp) インタプリタ)

(公開から半年後)

Page 11: ((Rで) 書く ((もっとRっぽい) Lisp) インタプリタ)
Page 12: ((Rで) 書く ((もっとRっぽい) Lisp) インタプリタ)
Page 13: ((Rで) 書く ((もっとRっぽい) Lisp) インタプリタ)

アドバイスをもとに改良

Page 14: ((Rで) 書く ((もっとRっぽい) Lisp) インタプリタ)

http://igjit.blogspot.jp/2013/11/lispr-r.html

Page 15: ((Rで) 書く ((もっとRっぽい) Lisp) インタプリタ)

主な変更点

• Rの環境オブジェクトを流用• Lispの関数の呼び出し方法を変更

Page 16: ((Rで) 書く ((もっとRっぽい) Lisp) インタプリタ)

LispからRの関数を呼べるようになった!

この変更で

Page 17: ((Rで) 書く ((もっとRっぽい) Lisp) インタプリタ)

> 1:10 [1] 1 2 3 4 5 6 7 8 9 10> `:`(1, 10)

lispr> (: 1 10)

R

lispr

Page 18: ((Rで) 書く ((もっとRっぽい) Lisp) インタプリタ)

> `+`(1, 2) # 1 + 2> sum(1, 2, 3)

lispr> (+ 1 2)lispr> (+ 1 2 3)

R

lispr

※ lispr内部では “+” は sum

Page 19: ((Rで) 書く ((もっとRっぽい) Lisp) インタプリタ)

> plot(1:10)

lispr> (plot (: 1 10))

R

lispr

Page 20: ((Rで) 書く ((もっとRっぽい) Lisp) インタプリタ)

(demo)

Page 21: ((Rで) 書く ((もっとRっぽい) Lisp) インタプリタ)

念のため言っておくと

実用性は全く無い

Page 22: ((Rで) 書く ((もっとRっぽい) Lisp) インタプリタ)

でも

Page 23: ((Rで) 書く ((もっとRっぽい) Lisp) インタプリタ)

楽しい!

Page 24: ((Rで) 書く ((もっとRっぽい) Lisp) インタプリタ)

@igjit

ご意見ください。