これはあくまで実装の一例であって、詳細は言語処理系のデザインに任されています。 また、以降の例ではスタックは下方(アドレスの低い方)に伸びるものとします。 まず、C等の手続き型言語におけるスタックフレームの使い方を復習しておきましょう。 次のように、関数Aが関数Bと関数Cを呼び出しているものとします。 int A(int a, ...) { int b, c; B(b); C(c); } int B(int b) { int b1; /* other calculation */ } int C(int c) { int c1; /* other calculation */ } 関数Aが呼ばれた直後のスタックには、保存された呼び出し元のレジスタ、戻りアドレス、 そしてAの引数 (a等) とローカル変数 (b, c) 等が積まれます。スタックポインタ(SP)はスタックの再下端を指し、またフ
Shiro Kawai まだ下書き Schemeの特徴をあげるときに、「継続」や「call/cc」が出て来ないことはない。 でも、R5RSのcall/ccの項をいくら読んでも、どうもよくわからない。 call/ccを使えばC言語のbreakみたいなのとか、コルーチンとかいう スレッドもどきとかが書ける、というのはわかったけど、一体そういうのが書けて 何が嬉しいのか、そこんとこがピンと来ないんだ。 今、そこにある継続 プログラミングの世界の概念には、禅の公案のようなものがある。 それを説明する文章はほんの一文なのに、最初に目にする時、 その文は全く意味をなさない、暗号のように感じられる。 だがひとたびその概念を理解すると、 その概念の説明は確かにその一文で説明されているのがわかるのだ。 そんな、「分かれば分かる」という禅問答の中でも 「継続」は最も謎めいたものの一つと言えるだろう。 文献を紐
About ★「魔法言語 リリカル☆Lisp」はノベルゲーム風のLispチュートリアルです。 "アリサ"や"すずか"達と楽しくLispを学べます。 全12話構成で各話の最後には練習問題が用意されています。 Lisp処理系にはNScripter上で動作するLispインタプリタであるNScLisperを使用。 別の処理系をインストールする必要はありません!! Lispとは ★CやC++、Java、BASIC、Perl、Ruby、PHP、Python、ML、Haskellなどと同じプログラミング言語の一つです。 マサチューセッツ工科大学のJohn McCarthy教授を中心とする研究グループによって開発され、1962年に発表されました。 LispとはList Processorの略で名前通りリストの処理を得意とします。 このことから人工知能の開発に多く用いられています。 NScLisperとは
わからない…… わからない…… R5RSの7.2節に載っている形式的意味論がわからない…… R5RSの形式的意味論を理解した気分になるための冒険は、 多すぎる記号の前に逃げ出さないことよ。 ちなみに著者は5回くらい逃げ出したらしいわよ。 わからない…… 理解した「気分」になることに意味があるのかわからない…… そもそも何度も逃げ出した人の文章を信じていいのかわからない…… R5RSの形式的意味論が理解できた気分になればこんないいことがあるわ。 賢くなった気分になれる 他人に自慢できるかもしれない 以前よりお酒がおいしく飲める気がする あと、この文章は鵜呑みにしない方がいいわよ♪ もくじ はてなようせいと学ぶってコンセプトだけど、 数学的な内容ならこの私「さんすうロボ」の出番じゃないのか? 知名度が低いのがいけないのか!? 敵は知名度なのか!? ひょうじてきいみろん かんたんに もうすこしせ
back これは Suzuki Hisao さん (suzuki@otsl.oki.co.jp) による、 Scheme の仕様書 R5RS (Revised^5 Report on Algorithmic Language Scheme) の日本語訳です。新山が訳したわけではありません。 1999年 3月に fj.comp.lang.lisp に投稿されたものを、新山が コンパイル、変換しました。 R5RS の日本語訳としては、犬飼 大さんによる日本語訳が多く出回っていますが、 新山は Suzuki さんによる版のほうが読みやすいと思います。 [Gzipped tar, 97k] r5rs-ja.tar.gz Suzuki さんによって最初に fj に投稿された TeX ソースのアーカイブ。 以下のファイルはすべてここから生成しました。 [PDF, 430k] r5rs-ja.pdf P
WebScheme Scheme interpreter for web applications WebSchemeはJavaScriptで書かれた、ウェブアプリケーションのためのScheme処理系です。 デモ IE6.0およびFirefox 1.5にて動作確認しています。 数独 数独というパズルゲームを遊ぶプログラムです。 「load sample」をクリックするとプログラムをロードし、「eval」を押すと実行します。 数独(コンパイル済み版) Schemeのコードを事前にJavaScriptにコンパイルしておくことで、ロード時間を無くしたものです。 WebSchemeからGoogle Maps APIを呼び出すサンプル WebSchemeにはJavaScriptのオブジェクトを操作する機能があり、これを使って Googleマップを操作するサンプルです。 「load sample」
僕が作った僕 Lispです JavaScript 1.8 (Firefox 3) でしか動かないので注意してね>< テストコード (define ( 出力 JavaScript による実装 var tokenize = function(source) source.match(/\"(?:[^"])*\"|\|[^\|]*\||(\)|\(|\s+|[^\(\)\s]+)/gm).filter(/^[^\s]/); var parse = function(tokens) { var list = [], token; while ((token = tokens.shift()) && token != ')') list.push((token == '(') ? parse(tokens) : (token[0] == '"') ? token.substring(1, token
Gauche(ゴーシュ)は、スクリプトインタプリタとしての使い易さに重点を置いて 開発を行っているR7RS準拠のScheme処理系です。日常業務の中でのちょっとした処理を行う スクリプトを気軽にSchemeで書きたいなあ、という願望のもとに、 起動が速いこと、システムへのアクセスが組み込まれていること、 最初から多国語対応を考慮していること、 リスト処理ライブラリとして他のC/C++プログラムから簡単にリンク可能であること、 などを目標としています。 Gaucheは多くのUnix系プラットフォーム およびWindows上で動作します。 実装されている機能の概要については、 機能のページをご覧ください。 News 詳しい変更はChangeLogをどうぞ。 また、最新の開発状況はGitリポジトリで知ることができます。 2024/4/23 Gauche 0.9.15 リリースノートを参照してくだ
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く