タグ

ブックマーク / 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ダンスがすげー気になる
  • やる夫がgauche.nightの第1部座談会に出演するそうです - リリカル☆Lisp開発日記

    ____ /      \ /  _ノ  ヽ、_  \ /  o゚⌒   ⌒゚o  \  もう試験間近だお… |     (__人__)    |  きっと単位沢山落とすお… \     ` ⌒´     / / ̄ ̄\  /   _ノ  \ | し ( ●)(●) |     (__人__)  お前、ソフトウエア演習の授業出てないだろ |     ` ⌒´ノ  課題はネットで外から出せるようになってるけど、 | し       }   先生に直接見せないと未提出扱いらしい ヽ        }   早く先生のとこ行ってきたほうがいいぞ ヽ、.,__ __ノ _, 、 -― ''"::l:::::::\ー-..,ノ,、.゙,i 、 /;;;;;;::゙:':、::::::::::::|_:::;、>、_ l|||||゙!:゙、-、_ ____ /::::::::

    youz
    youz 2008/10/01
    ustream中継あるかしら
  • 最もダメになる「初心者用言語」は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.  

  • 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を実行
  • 10日分まとめて。 - リリカル☆Lisp開発日記

    気が付けば前の日記から10日もたっていました。 なんてこったい。 最近の動向 このブログのタイトル「リリカル☆Lisp 開発日記」だけど、変えた方がいい? 「リリカルLispで勉強する」って都市伝説じゃなかったの!? 情報処理学会とか入った方がいい? この大学と、学務課に幸あれ 私の英語力はTOEIC400点相当らしい Prologはギャルゲー 10日分まとめてお送りします。

    youz
    youz 2008/10/01
    >Prologはギャルゲー
  • 脱皮失敗2.0 - リリカル☆Lisp開発日記

    日無事に京都に帰ってきました。 同行してくださったbugyoさん、宿を提供してくださったbokkoさん、 的確なアドバイス(*)を下さったnishさん、当にありがとうございました。 gauche.nightを振り返ってみて、一番の思い出はやはり 「脱皮失敗2.0」 でした。詳しくはわだばさんに聞いてください。 以下、覚えていることを適当に書き散らしたメモ 黒田さんの発言 CommonLispはCを書いてる人が上手に書ける。下手なのはJavaを書いてる人 プログラムは計算機で動かすことを忘れてはいけない SICPはコンピュータサイエンスのでプログラミングのじゃない funcallが嫌いなSchemerが多いけど、applyはいいの? shiroさんの発言 英語が話せるから外国に行くのではなく、いく必要があれば英語を覚える わだばさんの発言 セミの幼虫は土から

  • ゆの in ニコスクリプト (リリカル☆Lisp 開発日記)

    世界中で数人しか知らなさそうですが、 ニコスクリプトは演算子オーバーロードが出来るんですよ! 0::/t=drawText(text:"",size:20,color:0xffffff) 1::/echo=dt 1::/echo.setSlot('lessThan',def_kari('#:g3',t.text+=$1)) 2::/trg=dt 2::/trg.setSlot('divide',def_kari('#:g2',t.text+="365";echo)) 3::/X=dt 3::/X.setSlot('divide',def_kari('#:g1',t.text="ひだまり"+$1;trg)) 4::/_="スケッチ" 5::/X / _ / X 実行すると動画内時間5秒で「ひだまりスケッチ365来週も見てくださいね!」と画面に表示されます。 dtというのは来画面に文字

  • あどばんすど NScLisper オフィシャルガイド (リリカル☆Lisp 開発日記)

    youz
    youz 2008/10/01
    魔法少女リリカルLispのLispエンジン NScLisperのオフィシャルガイド
  • http://blog.bugyo.tk/lyrical/2008/07/7_cl.html