タグ

ProgrammingとSchemeに関するagwのブックマーク (64)

  • 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つの典型的な使い方
  • HaskellとGaucheの普及目指す「HOP推進プロジェクト」,イベントや有償サポート提供へ

    タイムインターメディアは2008年8月5日,次世代プログラミング言語「Haskell(ハスケル)」および「Gauche(ゴーシュ)」の普及を目的とした「HOP(Higher-Order Programming:高階プログラミング) 推進プロジェクト」を開始すると発表した。利用促進イベントの開催や開発ツールの開発提供,コンサルティング・サービスを提供する。 Haskellは関数型と呼ばれるプログラミング言語。JavaCOBOLなどがプログラムを手続きの集積として記述するのに対し,Haskellではプログラムを関数の集積として記述する(関連記事:連載「物のプログラマはHaskellを使う」)。Haskellで実装されたアプリケーションには,Perl6の実装であるPugsや分散バージョン管理システムのdarcsなどがある。 Gaucheはハワイ在住の技術者である川合史朗氏が開発したSchem

    HaskellとGaucheの普及目指す「HOP推進プロジェクト」,イベントや有償サポート提供へ
  • 注目ワード“高階プログラミング”って何だ? (1/2)

    オープンソースソリューションを扱う技術系企業 タイムインターメディア(以下TIM)が、「HOPプロジェクト」を開始した。HOPとは、Higher-Order Programming=高階プログラミングを略した言葉。HOPプロジェクトは、TIMの高階プログラミングにおける技術力を背景に、技術コンサルなどを行っていくプロジェクトだ。 そもそも高階プログラミングとは何なのか? まず、具体的に使用するツールは、関数型言語と呼ばれる「Haskell」や、「Gauche」、そしてGaucheを使って作られたアプリケーションサーバフレームワークの「Kahua」となる。HOPプロジェクトの推進役であるTIM 山下伸夫氏に、高階プログラミングとは何か? を聞いた。 山下伸夫氏(以下山下氏) Webサービスも何でもそうですが、スクラッチから組むことはありません。フレームワークを使うわけですが、そのフレームワー

    注目ワード“高階プログラミング”って何だ? (1/2)
  • Scheme:Schemeプログラマのレベル10

    emeitchさんのリクエストより。元ネタは Perlプログラマのレベル10。 私家版、Schemeプログラマのレベル10 くれぐれも気にしないように。 レベル0 SchemeとかLispとかいうカッコだらけですごくわかりにくい言語があることは知っているが、 最強とか主張する信者がいるらしいのでなるべく関わらないようにしている。 EmacsLisp?もその親戚らしいけどコードを見ただけでくらくらする。 でも便利なマクロは自分の.emacsにコピペしている。 レベル1 Schemeに関するwebサイトを見たり、大学の講義での説明とかを聞いて、 factorialとかappendとかreverseとかを書いたり、 ネストした木構造のノードの数を数えたりできる。 でもそれが何の役に立つかわからない。こんな言語で実用的な プログラムが書けるなんて信じられない。 カッコの位置を間違えて動かないプロ

    Scheme:Schemeプログラマのレベル10
  • LLからCL? - 書評 - 実践Common Lisp : 404 Blog Not Found

    2008年07月28日10:00 カテゴリ書評/画評/品評Lightweight Languages LLからCL? - 書評 - 実践Common Lisp 共訳者の佐野様より献御礼。 実践Common Lisp Peter Seibel 佐野匡俊 / 水丸淳 / 園城雅之 / 金子祐介訳 [原著:Practical Common Lisp] なんでこういう Common Lisp がなかったかという、さまざまな意味で21世紀的な Lisp。LL、特に「P言語」の読者は必読。CLに走るせよ、LLに留まるにせよ。 書「実践Common Lisp」は、英文学科(と便宜的に訳すが、ずばりEnglish)を卒業してジャーナリストとなった後、PerlプログラマーJavaプログラマーを経てCommon Lispプログラマーとなった異色の「第二世代 Common Lisper」である著者が、

    LLからCL? - 書評 - 実践Common Lisp : 404 Blog Not Found
  • [Think IT] 第3回:簡単Webプログラミング! (1/3)

    SQLite3インストール! Gaucheは、RDB(リレーショナルデータベース)に依存しないデータベースインタフェース(dbi)モジュールを持っています。各RDB用にデータベースドライバ(dbd)モジュールを用意することで、GaucheからRDBを扱えます、現在、MySQL、PostgreSQLSQLite3などのデータベースドライバモジュールがあります。 今回使うSQLite(http://www.sqlite.org/)は組み込み型RDBで、サーバ管理などが不要なため、扱いやすいのが特徴です。 Linuxでは、パッケージ管理ソフト(apt、yum、rpmなど)でインストールするのが良いでしょう。Mac OS/XにはSQLite3がプリインストールされてます。 Windows(cygwin)では、第1回でGaucheをインストールしたcygwinインストーラーを使ってインストールでき

  • Ruby vs. Python は Lisp vs. Scheme に似ている - kwatchの日記

    Python の好きなとこ・嫌いなとこを書いていて、よくわかった。 Ruby vs. Python は Lisp vs. Scheme に似ていると思うんだ。 Ruby, Lisp -- 機能がリッチで仕様は複雑、変数と関数の名前空間が違う Python, Scheme -- 機能を絞っていて仕様は簡素、変数と関数で名前空間が同じ Scheme 好きな人は Python を、Lisp 好きな人は Ruby をやればいいと思うよ。

    Ruby vs. Python は Lisp vs. Scheme に似ている - kwatchの日記
  • The Little Schemer

    The book is a new edition of The Little LISPer, Third Edition. We have substantially revised the existing material and added a chapter and a half. The book and its sequel, The Seasoned Schemer, appeared with MIT Press in December 1995. The chapter includes the discussion of the Y operator from "Why Y Works". Enjoy! Table of ContentsForeword by Gerald J. SussmanPrefaceSample ChapterErrataGoogle Gro

  • Scheme:イラストロジック

  • 本当のプログラミング初心者がSICPを読んではいけない三つの理由 - ヤドカリデンキ商会(ブログ版)

    酔って適当に考えたことを書き留めておく 半分以上与太だけど、ツッコミ歓迎 SICPは「計算機プログラムの構造と解釈」というコンピュータサイエンスの教科書です。サンプルはすべてSchemeというLispの方言で書かれています。以下、「当にプログラミング未経験でSICPから入門しようとする人」が陥るかもしれない三つの罠を挙げてみます。 1. 破壊的代入に対する嫌悪感を植えつけられる SICPには「大リーグボール養成ギプス」のような側面があります。ストイックな制限を与えることで思考の流れを誘導する感じ。第1章ではリストが使えず(LISP=LISt Processingなのに!)、第2章まではset!が使えないため破壊的代入ができません。つまり状態が扱えない(実際には2章の最後のほうではテーブルが最初から用意されていることにしてオブジェクト指向っぽいことをしてますが)。第3章でようやく状態を扱え

    本当のプログラミング初心者がSICPを読んではいけない三つの理由 - ヤドカリデンキ商会(ブログ版)
  • http://shi3z.blog.so-net.ne.jp/2008-02-25

  • 初心者向け言語もいろいろ : 404 Blog Not Found

    2008年02月04日21:30 カテゴリLightweight Languages 初心者向け言語もいろいろ Matzにっき(2008-02-04) - 初心者向けの言語がいつの魔に初心者向けの言語祭りにハッテンしているのでこっちも勝手に神輿を担いでみる事に。祭りの様子は以下で確認することができる。 最もタメになる「初心者用言語」まとめ - UK is not Britonish - ハチロク世代 Brainf.ck - 初心者が最も実装しやすい言語 なにしろ「Brainf.ckで書く」よりも「Brainf.ckを書く」方がよっぽど楽だもんね。 C - 最も言語実装初心者向け なんてったって、言語の母としては実例が一番が多いし JavaScript - 最も初心者に身近 ブラウザーに搭載されているというのはデカい。 Perl - 最も初心者に(も)優しいコミュニティ *.pmの懐の深さは

    初心者向け言語もいろいろ : 404 Blog Not Found
  • 私がJavaScriptを初心者用の言語として選んだわけ : 404 Blog Not Found

    2008年02月20日16:00 カテゴリLightweight Languagesアマグラマーのすすめ 私がJavaScriptを初心者用の言語として選んだわけ アマグラマーのすすめが止まっていて一部の読者を絶望させて申し訳ありません。他のを先に出さないといけないというのがその理由なのだけど、いい機会なので、 2008-02-20 - きしだのはてな デブサミでid:amachangが、初心者がプログラムを勉強するための言語としてJavaScriptがいいと言っていて、ぼくも同じような理由でいいと思って初心者の勉強にJavaScriptを使ってみたことがあるのだけど、実際にやってみるとかなり難しいと思ったので、そのことをまとめておきます。 への返答の形で、なぜ私がJavaScriptを選んだのかをまとめておくことにします。 まず比較的明らかな理由。 インストール不要の開発環境 ブラウザ

    私がJavaScriptを初心者用の言語として選んだわけ : 404 Blog Not Found
  • Practical Scheme

    ->English 10/5/2001 初出 5/30/2002 追記 6/10/2002 英語版へのリンク追加 「プログラミング言語は満載した機能を特色の第一とするものではない。 あとになって機能の追加が必要と判明するような弱点と制限を取り除いて設計すべきである。」 (アルゴリズム言語Schemeに関する第五改訂報告書、犬飼 大訳 [1])。 言語の機能とライブラリ ポピュラーな言語に親しんできたプログラマの多くは、 Schemeに触れた時、こう感じるんじゃないか。 「一体こんなに機能の少ない言語で、どんなプログラムが書けるっていうんだ。」 Schemeの規格書はほんの50ページしか無い。 Schemeプログラマはそれを言語の簡潔さの証とかなんとか言ってるけど、 入出力は最低限のものしかないし、作ったファイルを消すことさえ出来ない。 文字列処理もC言語の標準ライブラリ以下じゃないか。 ス

    Practical Scheme
  • Scheme 的多値の実装 - (new Hatena).blog()

    擬似的なものですが、Scheme の多値の受け渡しの仕組みを実装してみました。このようなものです: call_with_values( function(){ values(1, 2, 3) }, function(a, b, c){ // a == 1, b == 2, c == 3 } );call_with_values の第一引数は多値を返す関数で、第二引数はそれを受け取る関数です。 多値と言っても JavaScript ですのでただの配列なんですが、それを関数に渡す際にばらしてやることで、擬似的に多値を実現することが出来るわけです。 実装はこんな感じです: function values() { return list_tail(arguments, 0); // Or, return Array.prototype.slice.call(arguments); } functi

    Scheme 的多値の実装 - (new Hatena).blog()
  • 関数とクロージャ - ファイヤープロジェクト

    Common Lispでの関数の詳細についていろいろと試してみた. 関数の基 (setf 関数名)という関数名 大域関数と局所関数 関数のパラメータ レキシカル変数と関数とクロージャ 動的スコープ 関数の基 関数は基的にdefunで定義する. (defun 関数名 パラメータリスト 体) 引数に1を加えて返す関数は以下のようになる. > (defun hoge (x) (+ x 1)) HOGE > (hoge 1) 2 関数の返り値は,体の最後の式の返り値,あるいは (return-from 関数名 値) で指定する値である.以下の関数はreturn-fromにより固定値5を返す.+式やformat式は無意味である. > (defun fuga (x) (+ x 1) (return-from fuga 5) (format t "fuga~%")) FUGA > (fuga

  • 週記くらい - クロージャとは

    freehttp://d.hatena.ne.jp/smeghead/20071216/closure の続きというか今回はもうすこし真面目にあえて、コードレスで、自分の理解しているところのクロージャを説明してみるテストです。まず、誤解を恐れずに書いてしまうと、言語によってクロージャという機能が提供されている訳ではない。クロージャというのは、ある機能の副作用を用いたテクニックの名前である。クロージャと呼ばれているテクニックを使える言語は、以下の機能を提供しています。言い換えると、以下の機能の副作用によってクロージャというテクニックを使用できるようになります。 レキシカルスコープ(静的スコープ)関数がファーストクラスオブジェクト(第一級オブジェクト)であることレキシカルスコープオブジェクト(主に関数)が定義された時に、その場所から参照できる範囲を、オブジェクト(主に関数)の実行時にも参照でき

  • 第一級オブジェクト - Wikipedia

    この記事は検証可能な参考文献や出典が全く示されていないか、不十分です。 出典を追加して記事の信頼性向上にご協力ください。(このテンプレートの使い方) 出典検索?: "第一級オブジェクト" – ニュース · 書籍 · スカラー · CiNii · J-STAGE · NDL · dlib.jp · ジャパンサーチ · TWL (2024年11月) 第一級オブジェクト(ファーストクラスオブジェクト、first-class object)は、あるプログラミング言語において、たとえば生成、代入、演算、(引数・戻り値としての)受け渡しといったその言語における基的な操作を制限なしに使用できる対象のことである。ここで「オブジェクト」とは広く対象物・客体を意味し、必ずしもオブジェクト指向プログラミングにおけるオブジェクトを意味しない。第一級オブジェクトは「第一級データ型に属す」という。 この言葉は196

  • 回答 - fib(1000) - 186 @ hatenablog

    Challenge for Geeks - JGeek Log gosh> (fib2 1) 1 gosh> (fib2 2) 1 gosh> (fib2 3) 2 gosh> (fib2 1000) 43466557686937456435688527675040625802564660517371 78040248172908953655541794905189040387984007925516 92959225930803226347752096896232398733224711616429 96440906533187938298969649928516003704476137795166 849228875コメントして頂いた行列演算で計算しています. gaucheの行列演算ライブラリは無いんだろうか? ベクトルはある. それくらい自分で書けって話か. コメントありがとうござい

    回答 - fib(1000) - 186 @ hatenablog
  • SICP memo: FrontPage

    Structure and Interpretation of Computer Programs 計算機プログラムの構造と解釈 Harold Abelson ハロルド・エイブルソン Gerald Jay Sussman ジェラルド・ジェイ・サスマン Julie Sussman ジュリー・サスマン 日語訳:和田 英一 asin:489471163X Powered by wifkyrss.pl 0.11.1 RSS Generated by wifky 1.0.1.0 with Perl 5.008008 Modified by naoya_t using Text::Hatena 0.10 ☆はじめにお読みください ☆問題リスト // 未完リスト ☆リンク集 | ☆家との対応表 目次 1. 手続きによる抽象の構築 Lispによるプログラム 1.1 プログラムの要素 1.2 手続