24
PietLISP処理系を書くのは難しい 進捗報告 京大マイコンクラブ 長嶺英朗 2015.8.8

Pietでlisp処理系を書くのは難しい 進捗報告

Embed Size (px)

Citation preview

Page 1: Pietでlisp処理系を書くのは難しい 進捗報告

PietでLISP処理系を書くのは難しい進捗報告

京大マイコンクラブ長嶺英朗2015.8.8

Page 2: Pietでlisp処理系を書くのは難しい 進捗報告

自己紹介

長嶺英朗(NAGAMINE Hideaki)KMC-ID: hnagamin

Piet歴 2〜3ヶ月

Scheme歴 2年よく使うアイコン

Page 3: Pietでlisp処理系を書くのは難しい 進捗報告

自己紹介終わり

Page 4: Pietでlisp処理系を書くのは難しい 進捗報告

本題

Page 5: Pietでlisp処理系を書くのは難しい 進捗報告

YAPC::Asia Tokyo 2015

Page 6: Pietでlisp処理系を書くのは難しい 進捗報告
Page 7: Pietでlisp処理系を書くのは難しい 進捗報告
Page 8: Pietでlisp処理系を書くのは難しい 進捗報告
Page 9: Pietでlisp処理系を書くのは難しい 進捗報告

YAPCで喋ります

Page 10: Pietでlisp処理系を書くのは難しい 進捗報告

進捗報告をします

Page 11: Pietでlisp処理系を書くのは難しい 進捗報告

目次

1. 宣伝2. Pietとは3. 進捗報告兼作品紹介4. 今後の課題

Page 12: Pietでlisp処理系を書くのは難しい 進捗報告

Pietのここがすごい

Page 13: Pietでlisp処理系を書くのは難しい 進捗報告

ソースコードがドット絵

最大公約数を計算するプログラム 与えられた数をソートするプログラム

Page 14: Pietでlisp処理系を書くのは難しい 進捗報告

命令がたくさんあって書きやすい

ADD2数の和を返す

DEVIDE2数の商を返す

GREATER先頭の要素が2番めより大きければ1を返す

DUPLICATE要素をコピーする

IN(C)1文字入力してUnicode値をスタックに追加

PUSHスタックに要素を追加

SUBSTRACT2数の差を返す

MOD2数の剰余を返す

POINTERプログラムの進む向きを変える

ROLLスタックの要素の順番を変える

OUT(N)スタックの要素を数として出力

POPスタックから要素を削除

MULTIPLY2数の積を返す

NOT0なら1、0以外なら0を返す

SWITCHプログラムの読む向きを変える

IN(N)数を入力してスタックに追加

OUT(C)スタックの要素をUnicode値とみて1文字出力

Page 15: Pietでlisp処理系を書くのは難しい 進捗報告

詳しくはdamaさんの「Pietのエディタを作った話」を

参照してください

http://www.slideshare.net/KMC_JP/piet-46068527

Page 16: Pietでlisp処理系を書くのは難しい 進捗報告

進捗報告兼作品紹介

Page 17: Pietでlisp処理系を書くのは難しい 進捗報告

LISPっぽい記法の電卓を作りました

加減乗除ができます

“(+ (* 314 (+ 500 500)) (- (/ 960 3 2) 1))”に対して

”314159”と出力します

Page 18: Pietでlisp処理系を書くのは難しい 進捗報告
Page 19: Pietでlisp処理系を書くのは難しい 進捗報告

55x60

Page 20: Pietでlisp処理系を書くのは難しい 進捗報告

加算乗算

減算

除算

数値入力

Page 21: Pietでlisp処理系を書くのは難しい 進捗報告

デモ(時間があったら)

Page 22: Pietでlisp処理系を書くのは難しい 進捗報告

今後の課題

Page 23: Pietでlisp処理系を書くのは難しい 進捗報告

課題がいっぱい

● リスト● 変数● 手続きオブジェクト

Page 24: Pietでlisp処理系を書くのは難しい 進捗報告

まとめ

● 整数オブジェクトを扱える● 課題がいっぱい