Submit Search
Upload
Common Lispっぽいものをつくっています
•
0 likes
•
426 views
t-sin
Follow
関西Lispユーザ会#18で話した、自作Lispの進捗です。
Read less
Read more
Software
Report
Share
Report
Share
1 of 14
Download now
Download to read offline
Recommended
Common Lisp製のテキストエディタLemにフレーム多重化機能をつくった
Common Lisp製のテキストエディタLemにフレーム多重化機能をつくった
t-sin
明日使える超高速Ruby - RXbyak (Mitaka.rb #5)
明日使える超高速Ruby - RXbyak (Mitaka.rb #5)
Shuyo Nakatani
Real world lisp
Real world lisp
秀俊 伊藤
ちゃんとWeb会議スライド『Coffee script』
ちゃんとWeb会議スライド『Coffee script』
H2O Space. Co., Ltd.
Sphinx/reST
Sphinx/reST
Ryo Maruyama
画像キャッシュだけじゃないVarnish(qpstudy02 飛び入りLT)
画像キャッシュだけじゃないVarnish(qpstudy02 飛び入りLT)
Iwana Chan
mrubyのfiberを試してみた
mrubyのfiberを試してみた
Kindai University
scheme処理系の実装
scheme処理系の実装
bobuhiro11
Recommended
Common Lisp製のテキストエディタLemにフレーム多重化機能をつくった
Common Lisp製のテキストエディタLemにフレーム多重化機能をつくった
t-sin
明日使える超高速Ruby - RXbyak (Mitaka.rb #5)
明日使える超高速Ruby - RXbyak (Mitaka.rb #5)
Shuyo Nakatani
Real world lisp
Real world lisp
秀俊 伊藤
ちゃんとWeb会議スライド『Coffee script』
ちゃんとWeb会議スライド『Coffee script』
H2O Space. Co., Ltd.
Sphinx/reST
Sphinx/reST
Ryo Maruyama
画像キャッシュだけじゃないVarnish(qpstudy02 飛び入りLT)
画像キャッシュだけじゃないVarnish(qpstudy02 飛び入りLT)
Iwana Chan
mrubyのfiberを試してみた
mrubyのfiberを試してみた
Kindai University
scheme処理系の実装
scheme処理系の実装
bobuhiro11
Portacle : Common Lispのオールインワン開発環境
Portacle : Common Lispのオールインワン開発環境
Satoshi imai
Lispmeetup #45 Common Lispで音声合成
Lispmeetup #45 Common Lispで音声合成
Satoshi imai
Making Editor written in Ruby version 20160611
Making Editor written in Ruby version 20160611
Langur
Roslynで体験してみるC#スクリプト #cs_fukuoka
Roslynで体験してみるC#スクリプト #cs_fukuoka
Yuta Matsumura
clominal
clominal
Masamitsu Oikawa
CL21で色々なデータ構造を実装してみようとした
CL21で色々なデータ構造を実装してみようとした
blackenedgold
Lisp tutorial for Pythonista : Day 1
Lisp tutorial for Pythonista : Day 1
Ransui Iso
Lisper はじめました(大嘘)
Lisper はじめました(大嘘)
Nobutada Matsubara
Scheme to x86コンパイラ
Scheme to x86コンパイラ
Nobutaka Takushima
続・SECDマシン
続・SECDマシン
t-sin
SECDマシン 実装と動きとその他もろもろについて
SECDマシン 実装と動きとその他もろもろについて
t-sin
Sounds Like Common Lisp - ゼロからはじめるサウンドプログラミング
Sounds Like Common Lisp - ゼロからはじめるサウンドプログラミング
t-sin
謎の言語Forthが謎なので実装した
謎の言語Forthが謎なので実装した
t-sin
PythonでLispを実装した (evalつき)
PythonでLispを実装した (evalつき)
t-sin
バッテリー強奪! PythonをCommon Lispから使う
バッテリー強奪! PythonをCommon Lispから使う
t-sin
Common lispでグラフィックアート
Common lispでグラフィックアート
t-sin
One - Common Lispでもワンライナーしたい
One - Common Lispでもワンライナーしたい
t-sin
Inquisitor -Common Lispに文字コード判定を-
Inquisitor -Common Lispに文字コード判定を-
t-sin
More Related Content
Similar to Common Lispっぽいものをつくっています
Portacle : Common Lispのオールインワン開発環境
Portacle : Common Lispのオールインワン開発環境
Satoshi imai
Lispmeetup #45 Common Lispで音声合成
Lispmeetup #45 Common Lispで音声合成
Satoshi imai
Making Editor written in Ruby version 20160611
Making Editor written in Ruby version 20160611
Langur
Roslynで体験してみるC#スクリプト #cs_fukuoka
Roslynで体験してみるC#スクリプト #cs_fukuoka
Yuta Matsumura
clominal
clominal
Masamitsu Oikawa
CL21で色々なデータ構造を実装してみようとした
CL21で色々なデータ構造を実装してみようとした
blackenedgold
Lisp tutorial for Pythonista : Day 1
Lisp tutorial for Pythonista : Day 1
Ransui Iso
Lisper はじめました(大嘘)
Lisper はじめました(大嘘)
Nobutada Matsubara
Scheme to x86コンパイラ
Scheme to x86コンパイラ
Nobutaka Takushima
Similar to Common Lispっぽいものをつくっています
(9)
Portacle : Common Lispのオールインワン開発環境
Portacle : Common Lispのオールインワン開発環境
Lispmeetup #45 Common Lispで音声合成
Lispmeetup #45 Common Lispで音声合成
Making Editor written in Ruby version 20160611
Making Editor written in Ruby version 20160611
Roslynで体験してみるC#スクリプト #cs_fukuoka
Roslynで体験してみるC#スクリプト #cs_fukuoka
clominal
clominal
CL21で色々なデータ構造を実装してみようとした
CL21で色々なデータ構造を実装してみようとした
Lisp tutorial for Pythonista : Day 1
Lisp tutorial for Pythonista : Day 1
Lisper はじめました(大嘘)
Lisper はじめました(大嘘)
Scheme to x86コンパイラ
Scheme to x86コンパイラ
More from t-sin
続・SECDマシン
続・SECDマシン
t-sin
SECDマシン 実装と動きとその他もろもろについて
SECDマシン 実装と動きとその他もろもろについて
t-sin
Sounds Like Common Lisp - ゼロからはじめるサウンドプログラミング
Sounds Like Common Lisp - ゼロからはじめるサウンドプログラミング
t-sin
謎の言語Forthが謎なので実装した
謎の言語Forthが謎なので実装した
t-sin
PythonでLispを実装した (evalつき)
PythonでLispを実装した (evalつき)
t-sin
バッテリー強奪! PythonをCommon Lispから使う
バッテリー強奪! PythonをCommon Lispから使う
t-sin
Common lispでグラフィックアート
Common lispでグラフィックアート
t-sin
One - Common Lispでもワンライナーしたい
One - Common Lispでもワンライナーしたい
t-sin
Inquisitor -Common Lispに文字コード判定を-
Inquisitor -Common Lispに文字コード判定を-
t-sin
More from t-sin
(9)
続・SECDマシン
続・SECDマシン
SECDマシン 実装と動きとその他もろもろについて
SECDマシン 実装と動きとその他もろもろについて
Sounds Like Common Lisp - ゼロからはじめるサウンドプログラミング
Sounds Like Common Lisp - ゼロからはじめるサウンドプログラミング
謎の言語Forthが謎なので実装した
謎の言語Forthが謎なので実装した
PythonでLispを実装した (evalつき)
PythonでLispを実装した (evalつき)
バッテリー強奪! PythonをCommon Lispから使う
バッテリー強奪! PythonをCommon Lispから使う
Common lispでグラフィックアート
Common lispでグラフィックアート
One - Common Lispでもワンライナーしたい
One - Common Lispでもワンライナーしたい
Inquisitor -Common Lispに文字コード判定を-
Inquisitor -Common Lispに文字コード判定を-
Common Lispっぽいものをつくっています
1.
Common Lispっぽい 処理系をつくっています t-sin (@sin_clav) 2020-06-28,
関西Lispユーザ会#18
2.
Sciurus – Common
Lispてきな? ● https://github.com/t-sin/mark – ”mark”はSciurusで実装する予定のプログラム ● C言語(C11)で実装 ● ビルドシステムにninjaとmesonを利用 – なんかFUSE (Filesystem in userspace)で使ってた
3.
動機 ● 言語をつくりたい – というかLisp ● どうせなら実用したい – 実用の方法を意識した機能 ● Common
Lispっぽくしたい – Common Lispは永遠の輝き – 慣れている
4.
設計 – あるいは妄想 ● 基本の機能はCommon
Lispに寄せる – 構文、パッケージ、シンボルのスロット… ● ちょっと挑戦もしたい – マクロシステム、GC、多値 ● 実用: インタラクティブなテキストのリス – 円城塔『リスを実装する』 ● https://www.amazon.co.jp/dp/B00WGS4L18/ – UTF-8な文字列、タイムスタンプ型、文字列系関数 – イベント駆動 or マルチスレッディング?
5.
Lispオブジェクト typedef struct lis_obj
{ lis_byte tags; union { lis_int num; lis_char ch; struct lis_array * array; struct lis_string * str; struct lis_tstamp * ts; struct lis_symbol * sym; struct lis_cons * cons; struct lis_env * env; struct lis_function * fn; struct lis_package * pkg; struct lis_stream * stream; struct lis_error * err; struct lis_obj * mval; } data; } lis_obj;
6.
Lispオブジェクト (のタグ) /* tags * *
least significant bit 'g' is a GC-bit * second least bit 'm' is not used but reserved * * 000000mg => int * 000001mg => char * xxxx10mg => built-in types * xxxx11mg => internal types * * built-in types * * 000010mg => array * 000110mg => string * 001010mg => timestamp * 001110mg => symbol * 010010mg => cons * 010110mg => function * * internal types * * 000011mg => environment * 000111mg => pakcage * 001011mg => stream * 001111mg => error * 010011mg => multiple value */
7.
Sciurusが動いてるところ $ ./build/src/lis Sciurus Lisp,
v0.0.0 lis? (list-all-packages) (#<PACKAGE:lis> #<PACKAGE:keyword>) lis? :test :test lis? (symbol-package :test) #<PACKAGE:keyword> lis? (defun fn (n) (print n)) fn lis? (fn "hogehoge") "hogehoge" nil lis? (defun fn2 (fn) (apply fn (list 42))) fn2 lis? (fn2 (function fn)) 42 nil lis?
8.
できること ● ファイルへの読み書き – バイナリ or
文字 ● いくつかの特殊形式 – if, lambda, quote, function, let, progn, setq – Multiple-value-call !!!!!! ● マクロ展開 (macroexpand) ● ファイルからLispコードをロード ● 階乗やZコンビネータが動くの確認済み
9.
できないこと - ほしいもの ● doループ ● リードテーブル ● setf的なもの ● unwind-protect ● コンディション –
エラー処理したい – デバッガはいらないがスタックトレースは見たい ● GC! (本は買いました) ● いろんなオペレータが不足
10.
このへんでデモでも ● File IO ● defun ● factorial? ● macroexpand? ● Z combinator?
11.
今後(1) ● 実用できるよう機能拡充したい – 繰り返しくらいほしい – タイムスタンプ型 –
マルチスレッドは、どうしよう ● JSみたいにシングルスレッドでスケジューリング? ● 謎
12.
今後(2) ● やるきがでない
13.
今後(2) ● やるきがでない – 起動時にLispコードをロードしてdefunできるよう になったところでやる気が尽きた – 実用までの長い道のり –
やれること(やるべきこと)の広がり ● TODOは広大だわ – なにか、モチベを上げねばならない – 動作目標となるコードを定めてみる? ● めんどい
14.
おらにやるきを わ け て く れ (完)
Download now