FC2ブログ
--.--
--
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

07.25
Sat
もう半年も時間が経ってしまっていたみたいなんですが、
TAPLを読んでた時に作っていた静的型付けで型推論のある関数型言語について書きます。

リポジトリ: https://github.com/moratori/protolang

実装に関してはとても単純です。
構文解析をyaccでやって、Commmon Lispのオブジェクトに変換します。
で、それに対して型推論と静的型検査をしてエラーがなければ、Common Lispのソースコードに変換します。
なのでコンパイルとか実行時の話は全部Common Lisp側の処理系(SBCLを意図)に任せられます。

使い方とかですが
SBCLをインストールしquicklispを入れてください
~/.quicklisp/local-projects とかで
git clone https://github.com/moratori/protolang.git してください.

あとはSBCLのREPLで

(ql:quickload :protolang)
(protolang::main)
してください

そうすると以下のようにつかえるとおもいます

>>> 1+2
3 : Integer

>>> [x] -> x+1
([x] -> +[x,1]) : (Integer -> Integer)

>>> def fact [n] -> if (n == 0) 1 n * fact[n-1]
fact : (Integer -> Integer)

>>> def search[f,n] -> if f[n] n search[f,n+1]
search : ((Integer -> Boolean) -> (Integer -> Integer))

>>> fact[search[[x] -> (x % 23) == 4 , 30]]
30414093201713378043612608166064768844377641568960512000000000000 : Integer


これを元にまともに使える言語を作りたいなーとかおもってるんですけどいつになるかわからないです笑
スポンサーサイト

comment 0 trackback 0
トラックバックURL
http://telracsmoratori.blog.fc2.com/tb.php/210-7a17238d
トラックバック
コメント
管理者にだけ表示を許可する
 
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。