Shiro Kawai まだ下書き Schemeの特徴をあげるときに、「継続」や「call/cc」が出て来ないことはない。 でも、R5RSのcall/ccの項をいくら読んでも、どうもよくわからない。 call/ccを使えばC言語のbreakみたいなのとか、コルーチンとかいう スレッドもどきとかが書ける、というのはわかったけど、一体そういうのが書けて 何が嬉しいのか、そこんとこがピンと来ないんだ。 今、そこにある継続 プログラミングの世界の概念には、禅の公案のようなものがある。 それを説明する文章はほんの一文なのに、最初に目にする時、 その文は全く意味をなさない、暗号のように感じられる。 だがひとたびその概念を理解すると、 その概念の説明は確かにその一文で説明されているのがわかるのだ。 そんな、「分かれば分かる」という禅問答の中でも 「継続」は最も謎めいたものの一つと言えるだろう。 文献を紐
もういくつ寝ると 今年のはじめにやりたいことリストを作った。今見たら50項目あるリストのうち25個が達成済みだった。ちょうど半分やりたいことをやったということだ。私にしてはまあまあの結果だと思う。満足。 やりたいことリストにあるもののうち、「〜を食べたい」系は概ねクリアし…
Japanese / English SC言語は,Common Lispで実装された,S式の(Scheme風の)構文を持つC言語です.たとえば,以下のようなCコード long sum(long *ar, int n){ long s=0; int i=0; do{ if (i >= n) break; s += ar[i++]; } while(1); return s; } を,SCでは, (def (sum ar n) (fn long (ptr long) int) (def s long 0) (def i int 0) (do-while 1 (if (>= i n) (break)) (+= s (aref ar (inc i))) ) (return s) ) と書くことができます. また,拡張SC言語から別のSC言語への「変形規則」
わからない…… わからない…… R6RSのAppendix Aに載っている形式的意味論がわからない…… Schemeの形式的意味論を理解するための冒険は、 R6RSを印刷して読みながら、実際にPrologとかで、 意味論にそったインタプリタを作ることよ わからない…… そんな面倒なことをする意味があるのかわからない…… 本当にそれで理解できたのかは筆者もわからない…… それじゃあ、簡単に説明をするからよく聞いてね。 けど、それでもR6RSを印刷したほうがいいわ。 それから、R6RSは「みんなもってる」ものなので、 自分のものだと分かるように、ちゃんと名前を書かないとだめよ。 「おなまえシール」を貼るというのも手ね。 もくじ なにをするの おおざっぱに もうすこしせいかくに きほん かきかえ むずかしいかきかえ ぶんぽう やくそくときほん ぷろぐらむのぶんぽう ぶんみゃくとあな ぶんみゃくの
A practical introduction to the programming language Scheme
はじめに 2006年8月、Javaの次期仕様(JDK7)にクロージャを入れる案*が出され話題になりました。クロージャは関数型言語では30年以上の歴史を持ち、プログラミングにおける基本的な道具となっています。最近はPerl、Ruby、Pythonなどの軽量言語(Lightweight Language)にも取り込まれ、それと知らずに使っているユーザーも増えているのではないでしょうか。 一方、手続き型言語の世界では、完全なクロージャはなじみが薄いようです。C言語からC++へと発展してきた手続き型言語のメインストリームでは、 ガーベジコレクションを持たず、ローカル変数をスタックに置くことを基本とする言語のため、クロージャとの相性が悪かった オブジェクト指向を採り入れることでクロージャの代用とできた といったことが理由でしょう。 実際、クロージャとオブジェクト指向プログラミング言語には、メカニズム
田無の権兵衛とk先生をお借りいたします、竹内郁雄先生。 田無の権兵衛:(突然、玄関先で大声) たのもーう。 K: なんだ、騒々しいな。やや、田無の権兵衛ではないか。達者であったか。ささ、上がりなさい。 久しぶりじゃのう。今まで何をなさってたのかな。 田無の権兵衛: 実は昭和の終わりごろ、Lispの修行をするためにインドに旅立ちました。 山奥に篭って修行すること25年。やっと少しはLisp道を極めたように思い、懐かしい日本に帰ってまいりました。 K: おお、それは難儀であったな。久しぶりの再会じゃ、今夜はLisp話を酒の肴に語り明かそうではないか。 田無の権兵衛: それはかたじけない。そうそう、日本に帰ってきて驚いたのです。日本人はみんなスーパーコンピューターを 所有しているですか? K: いや、いくら日本人が猛烈に働いて豊かになったとは言え、スーパーコンピューターを個人で所有している
Revised^6 Report on Algorithmic Language Scheme -- アルゴリズム言語 Scheme に関する報告書第6改訂版。 2007年9月に正式に決定された。正式な文書は http://www.r6rs.org/ から 入手できる。 R5RSまでのミニマリズムから、実用主義へ大きく方針変更がなされたため、 仕様の分量もR5RSの50ページからR6RSは全4部、計187ページへと大きく膨らんでいる (ただしコア言語の仕様は90ページ、あとはライブラリや設計上の選択の理由説明である)。 そのため、それまでのミニマリズムを良しとするSchemerと、実用に使えるリッチな 仕様を望むSchemerの間でたいへんな議論となった。 結局、Schemeコミュニティ内で投票が行われ、賛成67票、反対35票、棄権10票で 批准された。しかし、批准の基準である総投票数の6
id:onishi:20060512#p1を参考にGauche ユーザーリファレンスのHTML Helpを作りました。 gauche-chm-20060512.zip (約1MB) 速く・簡単に検索できるのでとても便利です。 良かったらご利用ください。 備考 Gauche - A Scheme Interpreterにて2006/05/12時点に公開されていた日本語版「Download tar+gzipped htmls」を利用して作成しました。 ツールで目次を生成する都合でオリジナルHTMLのtitleタグから「Gauche ユーザリファレンス: 」という文字列を削除しました。 ツールで変換する際の都合で文字コードをUTF-8→Shift_JISに変換し、metaタグ内のCharsetをShift_JISに書き換えました。 gauche-refj_1.htmlなどがInternet Ex
Gauche(ゴーシュ)は、プログラミング言語Schemeの処理系のなかでもきわめて実用的で軽快な処理系です。豊富なライブラリが用意され、スクリプト言語処理系として手軽に扱うことができます。本書は、Schemeの初心者を対象に、Gaucheの基礎からプログラミングの実際までを詳しく解説。Gaucheの開発環境でプログラマがどのように考え、作業していくのかを、順を追って理解できます。本書によって、SchemeやGaucheのコードを読み解く準備ができ、実用的なGaucheプログラミングへの第一歩を踏み出せることでしょう。 はじめに 第1部 予備知識 1章 LispとScheme 1.1 Lispの起源 1.2 S式と前置記法 1.3 Scheme 1.4 Gauche 2章 Gaucheの特徴 3章 Gaucheの設計思想や誕生の背景 3.1 Perlの影響 3.2 Common Lispの
zickです。 最近、巷(*)ではLisp(Scheme?)を実装するのが流行っているようで。 その流れにのっとって私も変なものをつくってみました。 ***PostScriptで書いたlisp*** ソース 実行結果 名前はまだないのですが、仮にpslispと呼びます。 このpslispはPostScriptで書いたLispインタプリタです。 単に式を評価するだけではなく、その値を図示してくれる優れもの(?)です。 実は去年の4月ごろにほぼ完成していたんですが、 条件分岐などを加え、再帰が使えるようになりました。 ***pslispで書いたlisp*** ソース 実行結果 pslispで動かすためにエスケープ文字を付加し、改行を消しているためカオスなことになってます。 まあ、これだけ見てもなんのことやらといった感じですが、 自分で書いたlispインタプリタの上でさ
昨日の夜のこと (1000 人スピーカープロジェクトの打ち上げが終わって、解散後、数名でサイボウズラボに寄り道) id:amachang: あー今日は楽しかったねー(レゴみたいなおもちゃで遊びながら) id:nishiohirokazu: うんー楽しかったねー(レゴみたいなおもちゃで遊びながら) id:amachang: yuum3 や yad-EL さんが言ってたみたいに SICP 読んでみたいなー id:yukoba: …黙々… id:amachang: ところで yukoba さん、さっきから何やってんの id:yukoba: え? Scheme 作ってる(超笑顔) …レゴみたいなおもちゃ ポロリ id:amachang & id:nishiohirokazu: えー!抜け駆けずるいー!!!>< id:amachang: おれも作る><! id:nishiohirokazu: えっえ
1000人スピーカカンファレンスの二次会の飲み会会場を追い出された後、なぜかサイボウズラボに戻って三次会。 なぜかyukobaがSchemeを作り始め、amachangも「作る」と言い出した!「どうせだからハッカソンにしよう」って話が!いや、そんなことしだしたら帰れないし!ああっ!でも今書かなければ一生書かないかもしれないっ! というわけで書いたのがこちら。 どう書く?org 5414 にしお: 飲み会の後5時間で作ったものなのでかなり...(Schemeもどきの実装) - 投稿の詳細 残りの二人の書いたものはこちら。 Scheme on JavaScript 作りました - yukobaの日記 わーい \(^o^)/ Scheme もどきを JS で書いたよー! - IT戦記 - せっかくなのでハッカソンの雰囲気を少しでも伝えられるように書いてみる↓ 以下オフラインの発言は「」、Ling
昨日は、1000speakers の第1回のイベントがありました。1次会は Ustream にて参加し、2次会から現地で参加しました。 2次会でSICP読書会の話で盛り上がり、水曜日の読書会に参加しようと言うことになり、amachang など数名の方々に色々と Scheme の書き方を教えてもらいました。 3次会が楽しかったです!23:30頃からサイボウズラボにて3次会が始まったんですが、僕が、せっかく教えて頂いたので、Scheme の実装を JavaScript で始めたら、西尾くん(id:nishiohirokazu)と id:amachang が参加し始め、実装大会となりました。 その5時間の成果が、http://goldenscheme.accelart.jp/ です。 全員、基本文法は実装できました!! 処理系を実装するに当たり、言語を問わず、一般論として、難しいのは2カ所です。
$Id: ycombinator.html,v 1.6 2002/06/27 23:37:39 aamine Exp $ [ruby-list:35058] に刺激を受けて Y combinator を解読してみた。 こんなもん読むくらいなら以下の参考ページを読んだほうがいい。 参考にした (というかほとんどそのままな) ページ (英語) http://www.ececs.uc.edu/~franco/C511/html/Scheme/ycomb.html 動機 再帰関数は再帰するときに自分自身を名前で呼ぶのが普通である。 これをなんとかして名前を使わず、関数そのものを呼ぶように させたい。 求めかた まず単純な fact (階乗) を以下に示す。言語は Scheme である。 (define fact (lambda (n) (if (zero? n) 1 (* n (fact (- n
Y コンビネータとは何か? あなたはどんな言葉でも使う事が出来ます。しかし、知らない言葉を使う時は、今まで知っている言葉で説明できなくてはなりません。 例えば、「カニ」と「コロッケ」と「クリーム」だけを知っている時、あなたは「カニクリームコロッケ」について語る事が出来ます。「『カニクリームコロッケ』とは、『カニ』の味のする『クリーム』の入った『コロッケ』である。」しかし、「かぼちゃコロッケ」については語る事は出来ません。なぜなら「かぼちゃ」について何も知らないからです。 さてここで問題。「皮」や「剥いだ物」について知っている時、次の説明は適当でしょうか?「『タマネギ』とは、『タマネギ』の『皮』を剥いた物である。」私たちは、タマネギの皮を剥いてもタマネギである事を知っています。しかし、タマネギを説明するのにタマネギを話題に出しても良いものでしょうか?インチキ臭い感じがしませんか?こういうのを
JS オレオレ言語ブーム - IT戦記 で OreScript時代の幕開け - yukobaのブログ を知ったので、Scheme みたいなのをつくってみました>< でもぜんぜんできてないです(笑) naoscheme/index.html <script type="application/x-naoscheme"> (define myalert (msg) (alert msg)) (set! test "*_*") ((lambda (foo) (myalert foo)) test) </script> <script type="application/x-naoscheme"> (add-event-listener window "load" (lambda (e) (alert e) (call document.body "appendChild" (call docum
「王女アテー姫を含めてハザールの男女は、 この能力によって朝ごと変身を済ませ、 そのたびに、見たこともない斬新な顔で立ち現れる。 だから近親者同士でさえ見分けがつかないほどだ。 旅行者の見聞はこれとはまったく異なり、ハザールの顔つきはどれもそっくりで、 しかも歳を重ねても容貌が変わらない。それゆえ人違いの混乱や厄介が絶えない。 どちらにせよ、結果は同じことで、ハザール族の顔はまず覚えられないし、 覚えても無益となる。」 ミロラド・パヴィチ「ハザール事典」 Lispには数限りないほどの方言がある (例えば、 http://dreamsongs.com/NewFiles/Hopl2Slides.pdf とか参照)。 そのなかで普及している Lispというと、 Scheme、Common Lisp、Emacs Lispの3つだろう。 ユーザの多さでいうと、多い順に Emacs Lisp、Comm
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く