https://github.com/irori/lazyk-lisp http://lazy-k.appspot.com/p/ptHm_GwfAY Lazy K でも Lisp インタプリタを作ってみました。 機能は Unlambda 版とだいたい同じですが call/cc が無くなり、代わりに set でグローバル変数に代入できるようになりました。局所変数の書き換えは大変すぎるので断念しました…。 今回はジェネレータとして、以前作った Haskell → Lazy K トランスレータを使いました。200 行ほどの Haskell コードを変換して 300kb の Lazy K プログラムになりました。ジェネレータの抽象度が高い分、Unlambda 版よりかなり大きくなってしまいました。一方インタプリタのコーディングは単なる Haskell なのでこっちの方が楽でした。(モナドが使えない
さかばー @saka_bar @fumieval #ゆるK 参加者のさかばーです。cabal install combinator-interactive をしてみたのですが、エラーが発生して失敗してしまいました。
ぬかいわし、タレカツ、鶏の半身揚げ、そして笹団子。新潟を平らげる2泊3日 今回の旅の目的地は新潟。新潟には申し訳ないのだが、自発的に決めた目的地ではない。JR東日本の「どこかにビューーン!」という行き先ガチャサービスにより決定されたのだ。新潟といえば酒どころ米どころ。ちょうど新米の季節だ。どんとこい。古町エリアに宿を取っ…
Haskell Hackathon が楽しそうだったので、昔作りかけて放置してあった Haskell コンパイラを引っ張り出してきました。 せっかくなので、最もタメになる初心者用プログラミング言語であるところの Lazy K へのトランスレータにしてみました。 hs2lazy.tgz (最新版は github にあります) こんなのが動きます。 {- reverse lines -} main :: Stream -> Stream main stdin = toStream $ unlines $ reverse $ lines $ fromStream stdin main の型が何やら変ですが気にしない方向で。 もちろん tarai も動きます。Intの実装がChurch数なので速くはないですが…。 $ hs2lazy Prelude.hs tarai.hs >tarai.lazy
Lazy K(れいじーけー)は組み込み関数が3つしかない、純粋関数型言語である。似た言語として、同じような表記をする、非純粋関数型言語であるUnlambdaがある。 純粋関数型言語として、チューリング完全でありながら、絶対必要なエッセンスだけを抜き出したプログラミング言語である。遅延評価を行う。使用するにも、処理系を実装するにも、コンビネータ論理の知識が必要である。 標準入力をプログラムである関数の引数として受け取る。ただし、標準入力は1バイトごとのチャーチ数(英語版)のスコットエンコードされたリストとしてエンコードされ、出力も同様に1バイトごとのチャーチ数のスコットエンコードされたリストとなる。 Lazy K にて Unlambda を実装した場合、Unlambda で Unlambda を実装した場合に比べて約1/10のソースサイズで収まる。
RazyK をリリースしました。RazyK は Ruby で実装した純粋関数型言語 LazyK の処理系です。 インストール rubygems.org に gems パッケージを登録してあります。gem コマンドでインストールできます。 $ gem install razyk 依存ライブラリ等 以下の gems パッケージに依存しています。 rack ruby-graphviz また ruby-graphviz を利用するためには GraphViz がインストールされていて、dot コマンドが利用できないといけません。 [追記]大事なことを書き忘れていました。Ruby 1.9 でしか動作確認していません。1.8 だと動作しないかもしれません。[/追記] [追記]1.8 で存在しないメソッドを利用していたところがあったので修正して 0.0.1 をリリースしなおしました。[/追記] 使いかた
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く