タグ

Schemeに関するnanakosoのブックマーク (27)

  • 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: いや、いくら日人が猛烈に働いて豊かになったとは言え、スーパーコンピューターを個人で所有している

  • 手続き型を卒業するための言語は? - おがさわらなるひこのオープンソースとかプログラミングとか印刷技術とか

    という質問を今日飲みから飲みへの移動の最中ぽろっと聞かれました。 あたしゃ一介のプログラミング言語好きなので (マニアの域には全然達していません。変態的趣味ではあるけど) まじめに答えは期待してないと思いますが不真面目に答えます。 2009.10.31 追記:アフィリエイトやってんじゃないかと思うぐらいバカバカのリンク張ってみました。 そもそも なんで手続き型を卒業しなきゃいけないの? ぶっちゃけプログラマという職業でご飯をべていくのに、言語の潮流が手続き型でなくなる可能性は今後最低10年はないと思っていいでしょう。予想はずれたら飲み代一回ぐらいは奢ります (笑)。 ただ世界を広げるという意味では、今仕事で使っている言語とはぜんぜん違う世界に触れることは大事かもしれません。という視点で。 必須条件 変数再代入禁止。 なんでこれを禁止したいかというと、「こいつがあると手続き的にかけちゃう

    手続き型を卒業するための言語は? - おがさわらなるひこのオープンソースとかプログラミングとか印刷技術とか
  • Route 477(2009-07-03)

    ■ [misc] 6月のサブブログ Unicodeを活用したTODO管理方法 いろんなソフトウェアがUnicodeに対応している昨今なので、もっとUnicodeの絵記号が広く使われてもいいんじゃないかなと思って書いてみたらOpera(9.62)でうまく表示できなくて悲しい気分になるなどした。 家に帰ってから「あの人だったのか!」と言われないための勉強会用名刺 名刺の裏をどう使うかについて書いた。 「600万人の女性に支持されるクックパッドというビジネス 」 という書評を書こうと思ったのだが、書評とか書いたことないことに気づいて単に覚え書きみたいになった。 だいたいこれくらいのペース(週1弱)で書いていこうかなと思っています。飽きたらやめます。 ■ [haskell][sinatra] SinatraのHaskell移植版があるらしいんだが その名前はどうなのw http://githu

    Route 477(2009-07-03)
  • 賢人鳥 - あどけない話

    分かった! 分かった! 分かった! 自己言及 ものまね鳥(M)は、自己言及する鳥なんだ! Haskell では、型推論がジャマして、ものまね鳥を実現できない。 -- Mx = xx m x = x x -- エラーになる ヒバリ(L)も実現できない! -- Lxy = x(yy) l x y = x (y y) -- エラーになる 当然の帰結として、Haskell では再帰を使わないと賢人鳥(Y)を実現できない! 賢人鳥1 wikipediaの Y コンビネーターに書かれている最初の賢人鳥はこう。 (define Y (lambda (f) ((lambda (x) (f (lambda (y) ((x x) y)))) (lambda (x) (f (lambda (y) ((x x) y))))))) これは SLL だ! ;; Sxyz = xz(yz) (define S (lam

    賢人鳥 - あどけない話
  • いまSICPを読むのは時間の無駄 - きしだのはてな

    SICPは、よい内容について書かれたであり、最良のだった時期もあった。 けれども、今となっては、理解が難しく内容の割には時間がかかる、時間の無駄ともいえるといってもいいかもしれない。 もちろん、Schemeの可能性、数値計算、プログラミング、コンピュータ教育歴史、そしてSICP自体のすべてに興味があれば、効率がいいかもしれない。 けれども、コンピュータ教育歴史、SICP自体に興味がないのなら、あまり効率のいいとはいえない。特に、Scheme、数値計算に当面の興味はなく、プログラミングについてだけを学びたいのであれば、時間の無駄でしかないと思えるし、今となっては足りない部分もある。 SICPの欠点として、まず、次の点が挙げられる。 日語がよみにくい サンプルに数学の知識が必要 プログラムがよみにくい 日語がよみにくいというのはよく指摘される。ただこれは翻訳だけが悪いのではな

    いまSICPを読むのは時間の無駄 - きしだのはてな
    nanakoso
    nanakoso 2009/03/21
    >SICPには静的で宣言的なプログラミングに関する記述が欠けている(あとコメントですべからくの誤用が)
  • 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の検討
  • メッセージ。 - 型チェッカの魅力(HaskellとSchemeを比べて)

    最近、拙いながらもだんだん、Haskellでコードが書けるようになってきた。いまは、習作としてWikiエンジンを作ってみている。それで、コードを書きながら思ったこと。 Haskellはモジュール化がやりやすくていいなぁ。Haskellでは、ある機能ブロックを作ったとき、それを別ファイルに保存してモジュールにするのが簡単にできる。「module CGI where」、「import CGI」みたいに2行ほど書くだけだ。単純な話でいうと、これはタイピング量が少なくてうれしい。タイピング量が少ないだけでも、モジュールを作るときの心理的負担が小さい。 それに加えて、Haskellではコンパイラが型チェックをしてくれるので、モジュール内に定義した関数インタフェースを簡単に変更できるのがうれしい。プログラミングをしていると、関数が授受する引数の型を変更したいということが頻繁にある。文字列で渡していた値

  • Scheme:たらいまわしべんち

    たらいまわし関数Haskell (hugs December 2001版)Ruby (1.8.0-preview2)Gauche (0.6.8)クロージャ版delay/force版クロージャでは何故計算量が減らないか議論 たらいまわし関数 tarai(x, y, z) := y if x <= y tarai(tarai(x-1, y, z), tarai(y-1, z, x), tarai(z-1, x, y)) otherwise eagerに評価すると、不要な枝の先の先まで計算してしまって大いなる無駄となる。 lazy evaluationの利点が光る一品である。 参考: 竹内郁雄 どう転んでもLisp WikipediaJa:竹内関数(WikipediaEn:Tak (function)) たらいまわし関数 たらいまわしべんち Haskell vs Ruby たらいまわしべんち最終

    Scheme:たらいまわしべんち
  • 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つの典型的な使い方
  • 結論:結局、Javaはクロージャを使えるの? - lethevert is a programmer

    【追記 2008/7/2】とても昔のClosureについて書いた記事が注目を集めてしまったみたいですが、ぜひ、もっと後で書いた次の記事とその関連スレッドの方も確認してみてください。このときよりも、もう少し事情が分かってから書いたものなので、より正確に状況を理解できると思います。それに、私自身、この言葉にはまだ混乱しています・・・ http://d.hatena.ne.jp/lethevert/20070524/p2 - という問いに対して、そろそろ私の結論を整理しておきます。 これは、将来の自分に対する参照の便のための整理です。 前提知識 前提知識として、こちらの内容を読んで理解しておきます。 Closure (computer programming) - Wikipedia [id:lethevert:20060119:p1] [id:lethevert:20060121:p2] また

    結論:結局、Javaはクロージャを使えるの? - lethevert is a programmer
    nanakoso
    nanakoso 2008/07/01
    クロージャとは?(コメント欄)
  • Introduction to Scheme Programming Language

    まえがき 世の中には様々なプログラミング言語があるが,文書では,Lispプログラミン グ言語の一つの方言であるScheme(スキーム)を紹介する.ここではSchemeを直観 的に理解することをまず目標として,形式的に完全であるかどうかにはこだわら ないことにする. ※見た目にもあまりこだわらないことにする:-) より詳しくは, 湯浅太一 「Scheme入門」 岩波書店 K.ディヴィグ著 / 村上雅章 訳 「プログラミング言語 SCHEME」 ピアソン・エデュケーション 2000 猪股俊光, 益崎真治 「Schemeによる記号処理入門」 森北出版 1994 D.P.フリードマン, M.フェライセン 著/ 元吉文男, 横山晶一 訳 「Scheme手習い」 マグロウヒル出版 1990 H. Abelson, G.J. Sussman and J. Sussman 著 "Strucuture a

  • はてなようせいとまなぶ 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
  • わーい \(^o^)/ LispをPostScriptで書いたLispで書いたよー! (リリカル☆Lisp 開発日記)

    zickです。 最近、巷(*)ではLisp(Scheme?)を実装するのが流行っているようで。 その流れにのっとって私も変なものをつくってみました。 ***PostScriptで書いたlisp*** ソース 実行結果 名前はまだないのですが、仮にpslispと呼びます。 このpslispはPostScriptで書いたLispインタプリタです。 単に式を評価するだけではなく、その値を図示してくれる優れもの(?)です。 実は去年の4月ごろにほぼ完成していたんですが、 条件分岐などを加え、再帰が使えるようになりました。 ***pslispで書いたlisp*** ソース 実行結果 pslispで動かすためにエスケープ文字を付加し、改行を消しているためカオスなことになってます。 まあ、これだけ見てもなんのことやらといった感じですが、 自分で書いたlispインタプリタの上でさ

  • もうひとつの Scheme 入門

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

  • 俺様言語 Lazy を作る。番外編。Yコンビネータ。 - 言語ゲーム

    Y コンビネータとは何か? あなたはどんな言葉でも使う事が出来ます。しかし、知らない言葉を使う時は、今まで知っている言葉で説明できなくてはなりません。 例えば、「カニ」と「コロッケ」と「クリーム」だけを知っている時、あなたは「カニクリームコロッケ」について語る事が出来ます。「『カニクリームコロッケ』とは、『カニ』の味のする『クリーム』の入った『コロッケ』である。」しかし、「かぼちゃコロッケ」については語る事は出来ません。なぜなら「かぼちゃ」について何も知らないからです。 さてここで問題。「皮」や「剥いだ物」について知っている時、次の説明は適当でしょうか?「『タマネギ』とは、『タマネギ』の『皮』を剥いた物である。」私たちは、タマネギの皮を剥いてもタマネギである事を知っています。しかし、タマネギを説明するのにタマネギを話題に出しても良いものでしょうか?インチキ臭い感じがしませんか?こういうのを

    俺様言語 Lazy を作る。番外編。Yコンビネータ。 - 言語ゲーム