タグ

SchemeとLispに関するnanakosoのブックマーク (16)

  • 48時間でSchemeを書こう - Wikibooks

    Web上にあるほとんどのHaskellチュートリアルは言語についてのマニュアルのような教え方をしようとしているようです。それらには言語の文法、概念が少し載っていて、読者に対話環境でいくつかの簡単な関数を作るように指示します。よく機能する有用なプログラムの書き方は大抵最後にまわされるか、そもそも省かれていたりします。 このチュートリアルは違う方針を取ります。コマンドライン引数解析から始めて、完全に機能するR5RS Schemeのかなり大きなサブセットの実装まで進みます。道すがら、Haskellの持つI/O、mutable state、dynamic typing、エラー処理、そして構文解析機能を学びます。このチュートリアルを終える頃には、あなたはHaskellとScheme両方がかなり良くわかるようになっているはずです。 このチュートリアルの対象読者は主に以下の2種類です。 LispかSch

  • (define 独学 再帰) - 書評 - 素数夜曲:女王陛下のLisp : 404 Blog Not Found

    2012年07月16日01:45 カテゴリ書評/画評/品評Math (define 独学 再帰) - 書評 - 素数夜曲:女王陛下のLisp 素数夜曲: 女王陛下のLISP 吉田武 出版社より献御礼。 夏休み一つかけて取り組みたい吉田独習が、これでまた一つ。 404 Blog Not Found:This is THE -e^πi - 書評 - オイラーの贈物 新装版 404 Blog Not Found:伝われ、i - 書評 - 虚数の情緒 しかし、今度は紙と鉛筆に加えて、パソコンのご用意も。 書「素数夜曲」は副題が「女王陛下のLisp」なのだが、実質「素数夜曲」と「女王陛下のLisp」の合冊だといってよい「付録」となっている後者の分量は、「主題」のそれを上回る。 目次 - 東海大学出版会|書籍詳細>素数夜曲より 増補改訂版・序 第0夜 梟は黄昏に飛翔する 第1夜 素数のメロディー

    (define 独学 再帰) - 書評 - 素数夜曲:女王陛下のLisp : 404 Blog Not Found
  • まったく初めての人のためのScheme

    田無の権兵衛とk先生をお借りいたします、竹内郁雄先生。 田無の権兵衛:(突然、玄関先で大声) たのもーう。 K: なんだ、騒々しいな。やや、田無の権兵衛ではないか。達者であったか。ささ、上がりなさい。 久しぶりじゃのう。今まで何をなさってたのかな。 田無の権兵衛: 実は昭和の終わりごろ、Lispの修行をするためにインドに旅立ちました。 山奥に篭って修行すること25年。やっと少しはLisp道を極めたように思い、懐かしい日に帰ってまいりました。 K: おお、それは難儀であったな。久しぶりの再会じゃ、今夜はLisp話を酒の肴に語り明かそうではないか。 田無の権兵衛: それはかたじけない。そうそう、日に帰ってきて驚いたのです。日人はみんなスーパーコンピューターを 所有しているですか? K: いや、いくら日人が猛烈に働いて豊かになったとは言え、スーパーコンピューターを個人で所有している

  • Schemeがコンピュータサイエンスの教育用に使われる理由 - 針の上でprocessは幾つ踊れるか?

    ここらへんの一連の流れをよんで、 Schemeがコンピュータサイエンスの教育用によく使われる理由を自分なりに考察してみた。 おまじないが少ない 知らなければならない文法が少ない。 構造化、オブジェクト指向(メッセージパッシング)、関数型、論理型、制約型といった代表的なパラダイムを教えれる事ができる。 意味論が定義してある おまじないが少ない C++とか、Javaとか、いろんな「おまじない」が多い。 #includeとかclassとか、その点Schemeの場合「おまじない」がほとんどない。 せいぜい「if」、「cond」とかのスペシャルフォームぐらい。 知らなければならない文法が少ない。 SICPでは、4章で自分がマクロ定義しないといけない事態になるまで覚えないといけない文法は、 define let lambda if cond begin set! cons car cdr cadr l

    Schemeがコンピュータサイエンスの教育用に使われる理由 - 針の上でprocessは幾つ踊れるか?
    nanakoso
    nanakoso 2009/01/06
    教育用なら(デフォルトでの)便利さ<シンプル&拡張性の高さ
  • JVM上のLISPの検討

    JVM上に両方の主な方言の実装がありますが、Schemeがより完成されています。Armed Bear Common Lisp (www.armedbear.org/abcl.html)は、合理的に完成されたCommon Lisp規格の実装ですが、別のCommon Lispシステムがインストールされていないかぎり、ディストリビューションをビルドできないという問題があり、初心者には悩みの種になるかもしれません。 Scheme陣営には、2つの主なプレーヤー、Kawa (www.gnu.org/software/kawaとSISC (www.sisc-scheme.org-- Schemeコードの第2のインタプリタ)があります。この記事のサンプルではKawaを使用します。Kawaは、実際にはJavaバイトコードにコンパイルされた新しい言語を作成するフレームワークであり、Schemeはその実装の1つ

    JVM上のLISPの検討
  • Greenbear Diary - call/ccの7つの典型的な使い方

    ■ [scheme][ruby] call/ccの7つの典型的な使い方 わだばさん(でいいのかな?)のところで紹介されていたCall with Current Continuation Patternsをちょっと見てみた。 7/26 第9回 慢性的CL勉強会@Lingr 8時だョ!全員集合まとめ - わだばLisperになる - cadrグループ それによると、callccの典型的な使い方には以下のようなものがあるらしい。 (無限)ループからの脱出 再帰からの脱出 Cでいうcontinue 脱出+再入 コルーチン non-blindな(??)バックトラッキング マルチタスク で、だ。 1, 2, 3は、breakとかcontinueがある言語なら普通にできる。 5や4の一部は、PythonのジェネレータとかRuby1.9のFiberでできる。 7はコルーチンやスレッドを使えばできる。 とな

    Greenbear Diary - call/ccの7つの典型的な使い方
  • はてなようせいとまなぶ R5RS表示的意味論

    わからない…… わからない…… R5RSの7.2節に載っている形式的意味論がわからない…… R5RSの形式的意味論を理解した気分になるための冒険は、 多すぎる記号の前に逃げ出さないことよ。 ちなみに著者は5回くらい逃げ出したらしいわよ。 わからない…… 理解した「気分」になることに意味があるのかわからない…… そもそも何度も逃げ出した人の文章を信じていいのかわからない…… R5RSの形式的意味論が理解できた気分になればこんないいことがあるわ。 賢くなった気分になれる 他人に自慢できるかもしれない 以前よりお酒がおいしく飲める気がする あと、この文章は鵜呑みにしない方がいいわよ♪ もくじ はてなようせいと学ぶってコンセプトだけど、 数学的な内容ならこの私「さんすうロボ」の出番じゃないのか? 知名度が低いのがいけないのか!? 敵は知名度なのか!? ひょうじてきいみろん かんたんに もうすこしせ

  • Scheme:LazyEvaluation

    nobsunで出たアイディア Gaucheの起動オプションで、評価方式を普通のEagerではなくLazyに 切り替えられたりするとうれしいなぁ(これじゃ、ぜんぜんSchemeじゃないか。^^;) を発展させてってみよう、のコーナー。 いきなり全部の評価をLazyに切替えた場合、セマンティクスが consistentなものになるのかどうかちょっと心配。 Functionalに書くぶんには気にしなくて大丈夫でしょうが、 入出力のような副作用のある複数の式の評価順が変わらないかどうかを 検証しておくことが必要かもしれません。 --nobsun もともとSchemeでは引数の評価順は定められていないので、 そこは心配無いですが、beginやlet*なんかはまずいですね。 --Shiro beginは継続、let* はletの入れ子に置き換えるのかなあ。--nobsun letの入れ子じゃまずいっす

    Scheme:LazyEvaluation
    nanakoso
    nanakoso 2008/03/14
    Schemeに遅延評価を全面的に取り入れたらどうなるか?
  • Scheme処理系 Gauche の最適化まとめ後編 - higepon blog

    昨日の続きです。クロージャとcallの最適化。 クロージャは lambda、call は手続きの呼び出しのことです。 ((lambda (...) ...) arg ...) 呼び出される手続きが、lambda 式の場合。この呼び出し自体を let に変換する事が出来ます。 ($call ($lambda .. (LVar ...) Body) Arg ...) => ($let (LVar ...) (Arg ...) Body) この lambda がここでしか使われていないことが文脈的に保証されていることが重要です。(ということが後の方のクロージャ最適化を見ると分かります。) ちなみにこの変換が意味をなすのは クロージャ生成コスト + call のコスト > let のコスト という関係が Gauche VM において成り立つからです。 クロージャ最適化 クロージャ最適化の手前の時点

    Scheme処理系 Gauche の最適化まとめ後編 - higepon blog
  • もうひとつの Scheme 入門

    勾配の緩やかな初心者向け Scheme 入門ページです。 コンピュータは使ったことがあるが、プログラミング経験があまりない人を想定しています。 Scheme の解説はすでに山ほど優れたものがありますが、あえて解説記事を書いてみました。 Scheme のような抽象的な話題は波長が合えばすんなりと理解できますが、あわないと全く理解できません。 他の解説を読んで今ひとつよく理解できなかった人は試しに読んでみてください。 この記事の目標はコンピュータ科学の教科書の決定版である SICP を読める程度の Scheme の知識を提供することです。 目次: 処理系のインストール Scheme を電卓代わりに使う リストを作ろう 関数を定義しよう 分岐 局所変数 繰り返し 高階関数 入出力 代入 文字、文字列 シンボル型 連想リスト、ハッシュ表 ベクトルと構造体 構文の定義 (マクロ) 継続 遅延評価 非

  • setjmp/longjmpとローカル変数 - sumiiのブログ

    call/ccが出てきたので、ついでに: #include <setjmp.h> int main() { int x, y; jmp_buf k; x = 123; y = setjmp(k); if (y == 0) { x = 45; longjmp(k, 1); } return x + y; } はいくつを返すか、という話。 > gcc jmp.c -o jmp > ./jmp > echo $status 46 > gcc -O3 jmp.c -o jmp > ./jmp > echo $status 124xにvolatileをつけ忘れると、こういうこと↑になります… Cf. > (let ((x 123)) (let ((y (call-with-current-continuation (lambda (k) (set! x 45) (k 1))))) (+ x y)))

    setjmp/longjmpとローカル変数 - sumiiのブログ
  • Scheme:使いたい人のための継続入門

    使いたい人のための継続入門継続渡し形式call/ccは普通の関数call-with系関数call-with-procedurecall-with-continuation-procedurecall-with-current-continuation評価順序と継続call/ccパズルお手元マルチスレッド部分継続reset/pcとcall/pc環境破壊と部分継続部分継続の使用法PRINT-AND-NEXT-REPL議論質問お手元マルチスレッドのサンプルプログラムについて 使いたい人のための継続入門 とりあえず殴り書き。 くどかったり冗長な文章になってたり、重複してたり、間違ってたり、 おおいなる勘違いをしてたり、恥をカいてたりするかもしれないけどご愛敬。 藁をもつかみたい気持ちで継続を使えるようになりたい人は読んでみてください。 ただし所詮は藁です。(w 継続渡し形式 例によって階乗fa

  • http://alex.ability.ru/scheme.html

  • WebScheme - Scheme interpreter for web applications

    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」

  • WWW.SAMPOU.ORG

    Nobsun.github.com : nobsun's pages

  • http://www4.ocn.ne.jp/~inukai/scheme_primer_j.html

  • 1