タグ

ブックマーク / blog.bugyo.tk (45)

  • リリカル☆Lisp開発日記 » Blog Archive » ScratchでLisp作った

    突然ですが問題です。この画像は何でしょうか。 答え: Lispインタプリタのソースコード 「なんちゅうソースコードだ」と思った方はぜひこちらからお試しください。 「中を見る (See inside)」を押すことでソースコードが読め、その場で書き換えることも出来ます。 — というわけでScratchでLispインタプリタを作りました。ScratchとはSmalltalkを元に作られたSqueak、を元に作られた教育用のプログラミング言語/開発環境だそうです。キーボートで文字を打ち込むのではなく、マウスでブロックを並べることによってプログラムを作ります。子供でも簡単にプログラムを作成することができるらしいので、つまり子供でも簡単にLispインタプリタが作成できるということですね。 一見、非常に低機能な言語のように見えますが、一通りの機能は揃っているので、足らない部分は努力で補えます。 ビット演

  • リリカル☆Lisp開発日記 » Blog Archive » 自作Lispインタプリタを公開して後悔しないように

    (この記事はLisp Advent Calendar 2日目のためのエントリです。) 「え、お前の家、カレーに味噌汁付けてるの!?」 頑張って作っていたLispインタプリタがついに完成。友達に自慢してソースコードを見せてみたら 「え、なんでそんな実装になってるの? それって変じゃない?」 といった反応が返ってきたことはありませんか。きっとありますよね。昔から「人の数だけLispがある」と言われていまして、書く人によって色々と違いが出てくるのは当然です。しかし、どんな違いが出てくるのかを知らないと、要らぬ混乱を招く可能性があります。 この記事を読むことで、一言に「自作Lispインタプリタ」と言っても、色々なやり方があることを知り、友人の心ない発言に傷ついたり、逆に人を傷つけないようにする知識を身につけた気分になれます。 「あの人は自分でごみ集めを書いてくれたのに」 Lispインタプリタを書く

    youz
    youz 2013/12/02
  • リリカル☆Lisp開発日記 » Blog Archive » ##のわりとどうでもいい話

    ※リストの循環は脳に悪影響を及ぼす可能性があります。 エントリを読むときは必ず(setq *print-circle* t)を利用して下さい。 <括弧を書かずに循環構造をつくろうとしたのがことの始まりでした> '#1='#1# => #1='#1# リーダマクロ ‘ を展開すると結果は、 #1=(quote #1#) になり、循環構造ができます。 しかし、CLISPでこれのcdrを取るとスタックオーバフローします。 (cdr '#1='#1#) *** - Program stack overflow. RESET ちなみに、SBCLだとちゃんと結果が表示されます。 (cdr '#1='#1#) => (#1='#1#) <ちゃんと!?> よくよく見ると、微妙におかしなことに気づきました。 #1=(quote #1#)は2個のコンスセルから構成されます。 しかし、(#1=’#1#)は3個

  • CLで文字列を扱う - リリカル☆Lisp開発日記

  • LispをCより速くする - リリカル☆Lisp開発日記

    ときどきの雑記帖経由で知った How to make Lisp go faster than C という論文が面白いです。 簡単な画像処理をCとCommon Lispで書いて速度を比べるというものですが、 CLの速度の劇的な変化が笑えます。 インタプリタで実行 -> Cの2300倍遅い コンパイルして実行 -> Cの60倍遅い 型宣言と最適化を付ける -> Cと同等の速度(一部に関してはCより速い) いくらなんでも最初より速くなりすぎだろwwww おまけに、最初のソースと最終的なソースの差はほとんど無く、 関数一つあたり、2,3行増える程度です。これは凄い。 あと、CMUCLの型推論がACLより優秀という話も面白かったです。 (defun mult (to from val) (declare (type (simple-array fixnum (*)) to from))

    youz
    youz 2009/02/26
    JAVAよりは速くしたいけどむずかしー http://lucille.atso-net.jp/aobench/
  • Lispは未来に生きている - リリカル☆Lisp開発日記

    Lispは常に未来を先取りしてきました。 GCがJavaやLL等により一般に浸透するよりも遥か昔からGCを備えていたし、 「クロージャ! クロージャ!」と騒がれる遥か昔よりクロージャを備えてました。 Lispは"現在"ではなく"未来"に生きているんです。 Lispが未来に生きていることは簡単なプログラムを書くことですぐに分かります。 もうすぐ、UNIX timeが「1234567890」になると騒がれていますが、 Lispの中ではそんな時間は既に通り過ぎているのです。 CL-USER> (decode-universal-time 1234567890) 30 ; 31 ; 8 ; 15 ; 2 ; 1939 ; 2 ; NIL ; -9 Common Lispの中での時間が「1234567890」を迎えたのは、 日時間で1939年2月15日8時31分30秒です。 UNIX

    youz
    youz 2009/02/11
    烈海王ぽい
  • 米国版リリカルLisp!? - リリカル☆Lisp開発日記

    , -――- 、 _ _/ヽ /: : : : : : : : : : : : : : : : !-.-.‐.‐.‐. ァ __∧': /   . . . : : : : : /: :/: : : :`: :< .  /:::::::::::::::::〉: : : : : : :./: : : :,:イ: :∧: :i: : . .\:`ヽ   ○ 〈::::/:::::::::::/: : : : : : :/ : : : / /: /  ',: |: : ハ: : ヽ  \ ∨:::::::::::::/: /: : : : :/: :-∠_/_:/   |: |: : :∧: : :ヘ、  ',         ○ 〈:::::::::::::/: /: : : : :/: :.X   //   \!∧: : : :',: : : ハ\j /\:::::/: /|:

    youz
    youz 2009/01/25
    しゅごキャラって向こうでも人気なのか…全米を震撼させる作品になると良いですね。
  • LISPマシン・プログラミング技法 - リリカル☆Lisp開発日記

    以前、g000001さんに教えていただいた、 『LISPマシン・プログラミング技法』 というを京大の図書館で借りてきました。 (学外の学生でも普通に借りれました。すごく親切。) まだ途中までしか読んでいませんが、なかなか面白いです。 「クリック」に対する説明が書いてあるのが時代を感じます。 それにしても、最後に借りられていたのが92年のようなので、 実に17年ぶりの貸し出しのようです。 なんてもったいない・・・

  • ポケステでLisp - リリカル☆Lisp開発日記

    あけましておめでとうございます。今日から2009年ですね。 ところで、今から10年前の1999年はポケステが発売した年です。 という訳で、ポケステ発売から10年(*1)を記念して、 プログラムの書初めとして、ポケステ用Lispインタプリタを作りました。 (*1) ちなみに、生産は2002年で終了しています。 電池がすぐに切れることで有名になったハードだからそんなもんですかね(笑) 私も2回ほど電池交換をした後に面倒になり、ただのメモリーカードとして使いました。 メモリーカードとしてはいまだに現役ですが、ゲーム機としては使っていません(笑) 残念ながら書き込み装置がないので実機ではなくエミュレータです。 実機で動くかは残念ながら不明です。 画面は小さいですが、256文字までの式を入力可能です。 RAMが非常に小さいため、使用できるセルの数は少ないですが、 GCをちゃんと付け

  • マンガで分かるLisp #3 - リリカル☆Lisp開発日記

    突然4コママンガになった。 内容はともかく、かなり教育マンガっぽくなった。

  • http://blog.bugyo.tk/lyrical/2008/10/post-66.html

    youz
    youz 2008/10/11
    後ろのLispダンスがすげー気になる
  • やる夫がイギリスに行く気になったそうです (リリカル☆Lisp 開発日記)

  • PostScriptの上のLispの上のPostScript - リリカル☆Lisp開発日記

    昨日はPostScriptでLispインタプリタをつくり、それを用いLispインタプリタをつくりました。 そして今日は、PostScriptでつくったLispインタプリタを用い、PostScriptインタプリタをつくりました。 PostScriptインタプリタ (pslisp用のプログラム。普通のSchemeインタプリタでも運がよければ動くかも?) pslisp (昨日から結構手を加えました。) 実際にpslispで動かす際には改行を空白に置き換え、1行で記述してください。 PostScriptをつくったといっても、もちろんそのごく一部だけで、 図形も何も描けません。ただ計算ができるだけで、 実際につくったのは以下の機能だけです。 四則演算(add, sub, mul, div) スタック操作の一部(dup, exch, pop) 条件分岐(if, ifelse) 変数

    youz
    youz 2008/10/01
    PostScriptによるLisp実装pslisp上でPostScriptを実行
  • ニコ動Lisp 2.0[lambda始動] (リリカル☆Lisp 開発日記)

    ニコニコ動画のメンテナンスが終わったので、ニコ動Lisp2.0(仮称)が始動しました。 【ニコニコ動画】ニコ動でLisp 「もっと評価されるべき」タグが付いていたので、文字アトムも評価することに。 もっと評価されるべきの意味が違うという突っ込みもありました。 期待通りの突っ込みをありがとうございます。 それはともかくスクリプトを更新して1分もしないうちに 「ラムダきたー」というコメントが書き込まれたんですよ。 どれだけlambdaが欲しかったんだwwww まあ、なにはともあれ、lambdaが無事動いてよかった。 普段から「lambdaかわいいよlambda」とお思いの諸兄も安心してニコニコできますね。 --- prognとかdefunとかLisp的(NOT Scheme的)なスペシャルフォームを持っていますが、 lambdaに関してはScheme的な評価規則となっています

    youz
    youz 2008/10/01
    (defun two () (lambda (f) (lambda (x) (f (f x))))) ((((two) (two)) (lambda (i) (+ i 1))) 0) => 4 うはwww あと再帰で積と冪乗書いたけど3の2乗で時間ギリギリだった
  • http://blog.bugyo.tk/lyrical/2008/03/prologgrass.html

  • http://blog.bugyo.tk/lyrical/2008/02/t.html

    youz
    youz 2008/10/01
  • 今日は観鈴ちんがゴールした日なのでGoogle Mapでゲーム作った (リリカル☆Lisp 開発日記)

    昨日気づいたんですよ。 Google Map APIを使えばゲームが作れるんじゃないかって。 地図の上で車を走らせたり、飛行機を飛ばすといった、 地図と連携したゲームじゃなくてもっと単純なゲームを。 遊ぶ AIRを知らない人には当に意味が分からないかと思います。。 そして、AIRを知ってる人も結局は意味が分からないかと思います。 (追記) Google Mapなのが分かりにくかったので、 縮尺を変えて露骨に地図を表示するように変更。

  • やる夫が変な夢をみたそうです (リリカル☆Lisp 開発日記)

    ----- 読むのがめんどくさい人はこれだけ見て満足するお! (ただし、ニコニコのアカウントが必要だお) by やる夫 ----- ~朝~ ___ /      \ /ノ  \   u. \     はっ、夢!? / (●)  (●)    \   変な夢をみたお… |   (__人__)    u.   |   なんか、ニコニコ動画の投稿者スクリプトで \ u.` ⌒´      /    Lispインタプリタを作ったとかやる夫がいってたお… ノ           \    どうやって作るんだって自分で思ったら、 /´               ヽ  目が覚めたお… |    l              \ ヽ    -一''''''"~~``'ー--、   -一'''''''ー-、. ヽ ____(⌒)(⌒)⌒) )  (⌒_(⌒)⌒)⌒)) ___

    youz
    youz 2008/10/01
    ニコスクリプトで電卓
  • 最もダメになる「初心者用言語」はC言語 - リリカル☆Lisp開発日記

    中学のとき、初めてC言語とやらに触れてみた。 気が付いたら、リリカルLispなんてカオスなものを作っていた。 私がここまでダメになったのはC言語を最初に触れたせいに違いない。 へ __/ |  ` ‐ 、 /    ハ      ̄ヽ | /  /  i l!      丶 |/  /∧ ∧ハ i   |!  i レイV V   VVWV1  | }━━    ━━ |   i     「私をダメにした責任、とってもらうからね」 ⊂ニ⊃       ⊂ニ⊃| ! | \ 「 ̄ ̄ ̄ ] /|  i  | |  ハ`ー┬―‐<   ! レル′ VV   / !    ハ レレ r0へ〈 i   / ! く    }/  /   ヽ \__ノ ̄` し、   〉 /: : : : : :i: : :\ / 〈_ _ _ _ _ ヽ_ _人つ ' ; : ; : ;

  • やる夫がgauche.nightに出演するそうです 〜当日編〜 (リリカル☆Lisp 開発日記)

    3/8の出来事 ~おやつの時間頃~ ____ /      \ /  _ノ    ⌒\  東京についたお /    (○)  (○) \  朝の5時から電車に乗り続けて |       (__人__)    |   既にしんどいお… /     ∩ノ ⊃  /    (  \ / _ノ |  | .\ “  /__|  | \ /___ / ~しばらくして~ ____ /⌒  ⌒\ /( ●)  (●)\ /::::::⌒(__人__)⌒::::: \   会場に着いたお!!! |     |r┬-|     | \      `ー'´     / ___ /      \ /ノ  \   u. \     なんか控え室とやらに案内されたお… / (●)  (●)    \    なんだかよく分からないというか、 |   (__人__)    u.