タグ

Lispに関するagxのブックマーク (39)

  • LispをCより速くする - リリカル☆Lisp開発日記

    ときどきの雑記帖経由で知った How to make Lisp go faster than C という論文が面白いです。 簡単な画像処理をCとCommon Lispで書いて速度を比べるというものですが、 CLの速度の劇的な変化が笑えます。 インタプリタで実行 -> Cの2300倍遅い コンパイルして実行 -> Cの60倍遅い 型宣言と最適化を付ける -> Cと同等の速度(一部に関してはCより速い) いくらなんでも最初より速くなりすぎだろwwww おまけに、最初のソースと最終的なソースの差はほとんど無く、 関数一つあたり、2,3行増える程度です。これは凄い。 あと、CMUCLの型推論がACLより優秀という話も面白かったです。 (defun mult (to from val) (declare (type (simple-array fixnum (*)) to from))

    agx
    agx 2009/05/13
  • ちょっと変わったLisp入門 - @IT

    Lispの一種であるScheme。いくつかある処理系の中でも気軽にスクリプトを書けるGaucheでLispの世界を体験してみよう(編集部) 「Gaucheでメタプログラミング」と題して、これからGaucheを使ったプログラミングの連載を書かせていただきます吉田裕美です。よろしくお願いいたします。 Gaucheとは 今回の連載で取り上げるGaucheはハワイ在住の日ハッカー、川合史朗さんが作った、Lispの一種であるSchemeのオープンソース処理系です。 Gaucheの特徴は、PerlRubyのように気軽に使える軽い処理系だということです。Perl同様に正規表現や文字列操作が行え、ちょっとしたツールの作成にも使えます。しかし、非常に強力なCommon Lisp風オブジェクトシステムを持ち、Lispならではのマクロに加え、Webやグラフィックスなどの豊富なライブラリも持っているので実用

    ちょっと変わったLisp入門 - @IT
    agx
    agx 2008/11/20
    Lispの仕組みをわかりやすく説明してくれてる
  • Emacs Lisp TIPS - ファイル更新日を自動的に書き換える

    はじめに GNU Emacs には Emacs Lisp 言語を用いた超強力なマクロ機能があります。 ここでは、私がこれまでに培ってきた便利な設定/カスタマイズ用マクロを 紹介したいと思います。 自作パッケージも含め、サンプルコードも載せていますので、 「.emacs(あるいは .emacs.el)」ファイルにコピー&ペーストして使ってください。 なお、2009年3月現在、私が使っている Emacs は次の通りです。 このページで紹介しているコードは 全て Emacs バージョン 22 を前提としています。 私の .emacs.el ファイルは ここ にあります。 Emacs 22.3 (Carbon Emacs Package; Mac OS X 10.5.6) Emacs 23.0.91 (Linux; Ubuntu 8.10) Emacs 22.1 (Linux; Rocks Clu

    agx
    agx 2007/11/17
  • Lisp500

    [up] | news license installation usage bugs features Is your program large and complex? Are you tired of Greenspunning? Now, in only 500 lines, here we have an informally-specified bug-ridden implementation of Common Lisp, ready to meet your needs. -- Christophe Rhodes Lisp500 is a 500-line implementation of an informally specified dialect of Lisp. It attempts to be not too bug-ridden. Unfortunate

    agx
    agx 2007/07/14
    Cで書いた500行でLisp
  • xyzzy lisp関数

  • LispUser.net :括弧の理由 (1) -- Emacs による S 式編集支援

    LISPUSERLISPMEMOLisp is like a ball of mud - you can throw anything you want into it, and it's still Lisp. -- Anonymous Lisp の括弧は良くネタにされます。実際、大量の過去は最初のインパクトは強烈だったのを覚えています。 いったいなぜ Lisper は括弧を捨てないのでしょう? 歴史的にみれば括弧を好まない Lisper も居ます。古くは CMU の AI リポジトリに CGOL という ALGOL ライクな 構文の Lisp リーダ/ライタがあり、これは S 式と相互に変換できました。CGOL で書いて、S 式で表示とかができたわけですね。 ;;Execute by typing "cl < demo.txt". (load "parser.cl") (load "c

    agx
    agx 2007/02/01
  • Amazon.co.jp: リスト遊び: Emacsで学ぶLispの世界 (ASCII SOFTWARE SCIENCE Language 12): 山本和彦: 本

    Amazon.co.jp: リスト遊び: Emacsで学ぶLispの世界 (ASCII SOFTWARE SCIENCE Language 12): 山本和彦: 本
    agx
    agx 2007/01/23
  • Lisp:よくある正解

    Lispについての正しい認識と、それでもLisperがLispを使う理由 yoriyukiさんのエントリがなかなか 真実を突いていたので、ネタにさせていただきます。 原因のほとんどは経路依存性とかネットワーク効果によるもので、Lisp自体の性質とは無関係だと思います。と言った上で、私が何となくLisp系言語を使わない理由としては、 Too dynamic: 実行時にコードが差し替えられることがすごい利点だ、と言っている人がいましたが、逆に言えば今どのコードが走っているか理解しにくい、という欠点にも繋がる。 Meta programming:S式のおかげでMeta Programmingがしやすいが、Meta Programmingを多用したプログラムは理解しにくい。 動的型付け:利点でもあるけど、特有のバグを引き起こす。 識別子に関数と値の2種類が別々にバインドできる。これは私には非常に美

    agx
    agx 2007/01/06
  • Common Lisp's Loop Macro Examples for Beginners

    CLTL's Loop Reference HyperSpec's Loop Reference Peter Karp's Loop Tutorial Iteration for each element in a list: > (loop for i in '(1 2 3) do (print i)) 1 2 3 Iteration for each cdr of a list: > (loop for i on '(1 2 3) do (print i)) (1 2 3) (2 3) (3) Iteration for each element in a vector: > (loop for i across #(1 2 3) do (print i)) 1 2 3 Iteration for each key of a hashtable: > (setf h (make-has

    agx
    agx 2007/01/03
    Loop マクロの使い方
  • AIプログラミング: ホットコーナー

    ブログ(iiyu.asablo.jpの検索) ホットコーナー内の検索 でもASAHIネット(asahi-net.or.jp)全体の検索です。 検索したい言葉のあとに、空白で区切ってki4s-nkmrを入れるといいかも。 例 中村(show) ki4s-nkmr ウェブ全体の検索 ASAHIネット(http://www.asahi-net.or.jp)のjouwa/salonからホットコーナー(http://www.asahi-net.or.jp/~ki4s-nkmr/ )に転載したものから。 --- 注文していた http://www.amazon.co.jp/exec/obidos/ASIN/4274066649/showshotcorne-22/ref=nosim 小高知宏著「はじめてのAIプログラミング―C言語で作る人工知能と人工無能」 が来ていて、ざっと眺めましたが、コンパクトにう

    agx
    agx 2007/01/01
    AIプログラミングをするときに読んでいると良い本。
  • Lisp:よくある誤解

    Lispについてのよくある誤解と、その中にあるちょっとした真実 はてなの質問: プログラミング言語で最強(スケーラブル)なのは、 Lispだと思われます。 http://jp.franz.com/index.html しかし、 世間ではマイナー言語のようです。 なぜでしょうか。 についた回答のいくつかには、「Lispを少しだけかじった人がしがちな誤解」が 含まれてるようなので、それをネタに少し解説してみます。 ただ、誤解が生じるのは、やっぱりそれなりの理由があって、従ってその 誤解の中にも(条件つきの)真実が含まれていることがあります。 そのへんまでをも含めて考えてみましょう。以降、引用は回答からです。 Lispはスクリプト言語? 一昔前まで、これらのスクリプト系の言語は「とてつもなく遅い」のが嫌われる最大の要因でしたが、最近のコンピューターの性能向上でようやくRuby,Python,Li

    Lisp:よくある誤解
    agx
    agx 2007/01/01
    よく言われているLispについての誤解(スクリプト言語、Cよりとても遅い)に一般的な事実と作者の知っている真実とを書いてくれている。
  • Scheme、Common Lisp、Emacs Lispの比較

    「王女アテー姫を含めてハザールの男女は、 この能力によって朝ごと変身を済ませ、 そのたびに、見たこともない斬新な顔で立ち現れる。 だから近親者同士でさえ見分けがつかないほどだ。 旅行者の見聞はこれとはまったく異なり、ハザールの顔つきはどれもそっくりで、 しかも歳を重ねても容貌が変わらない。それゆえ人違いの混乱や厄介が絶えない。 どちらにせよ、結果は同じことで、ハザール族の顔はまず覚えられないし、 覚えても無益となる。」 ミロラド・パヴィチ「ハザール事典」 Lispには数限りないほどの方言がある (例えば、 http://dreamsongs.com/NewFiles/Hopl2Slides.pdf とか参照)。 そのなかで普及している Lispというと、 Scheme、Common Lisp、Emacs Lispの3つだろう。 ユーザの多さでいうと、多い順に Emacs Lisp、Comm

    agx
    agx 2006/12/28
  • Practical Scheme

    このページでは、プログラミング言語Schemeの紹介、および 自作のSchemeのライブラリやアプリケーションの紹介をしてゆきます。 特に、ファイルをパーズしてテキストファイルを生成したりとか、 プロセスを監視したりとか、ちょっとしたGUIをでっちあげる と言った、職業プログラマとしてやってく上で避けて通れない雑用に便利な ライブラリが中心になる予定です。 SchemeはLisp系の言語で、見かけはLispに良く似ています。 Lispと聞いたら人工知能用言語だとか、もう古くさい言語だとか思われることも 多いんですが、CommonLispで書かれた実用的なアプリケーションはいろいろ ありますし、Schemeも拡張言語としてそれなりに使われています。 ただ、いかんせんマイナーな言語であることは間違いなく、メンテできる人が居ない とか他に分かる人が居ないという理由で採用が見送られることがあるのは

    Practical Scheme
    agx
    agx 2006/08/07
    プログラミング言語Schemeの紹介、および 自作のSchemeのライブラリやアプリケーションの紹介
  • 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」

    agx
    agx 2006/06/10
    Javascriptで実装されたScheme処理系。ブラウザ上でSchemeが動く
  • SchemeScript、Eclipseプラグイン - FAX

    The (SchemeWay) Project EclipseのSchemeプラグインを試しました。プラグイン更新、またはzipファイルからインストールします。まず以下を行ないます。 パースペクティブを[Scheme]に変更。適当な拡張子に[Scheme Editor]を関連付ける(デフォルトで設定されている可能性もあり)。メニュー[Scheme]-[Select Interpretor]から[Embedded Kawa]など適当なものを選択。 以下のような機能があるようです(他にもあります)。 機能ショートカット捕捉フォーマット範囲選択 + [Ctrl + Shift + f]シンボル定義へジャンプ[F12]シンボル定義を検索[Ctrl + F12]補完[Ctrl + Space]定義済みのシンボル名も可ミニヘルプ[Ctrl + Shift + Space]関数の簡単な使い方カーソルの直

  • http://www.sci.toyama-u.ac.jp/~iwao/Scheme/scheme.html

    agx
    agx 2006/05/20
  • なんでも継続

    Shiro Kawai まだ下書き Schemeの特徴をあげるときに、「継続」や「call/cc」が出て来ないことはない。 でも、R5RSのcall/ccの項をいくら読んでも、どうもよくわからない。 call/ccを使えばC言語のbreakみたいなのとか、コルーチンとかいう スレッドもどきとかが書ける、というのはわかったけど、一体そういうのが書けて 何が嬉しいのか、そこんとこがピンと来ないんだ。 今、そこにある継続 プログラミングの世界の概念には、禅の公案のようなものがある。 それを説明する文章はほんの一文なのに、最初に目にする時、 その文は全く意味をなさない、暗号のように感じられる。 だがひとたびその概念を理解すると、 その概念の説明は確かにその一文で説明されているのがわかるのだ。 そんな、「分かれば分かる」という禅問答の中でも 「継続」は最も謎めいたものの一つと言えるだろう。 文献を

    agx
    agx 2006/05/13
  • なぜLispなのか

    Hofstadter『メタマジック・ゲーム』 ミンスキー「ゲーデルはLispを思いついておくべきだった。もし彼がLispを思いついていたならば彼の不完全性定理の証明はもっと簡単なものになっていただろう」 ゲーデルの証明の一番難しいところは、数学的体系に自分自身を語らせるところにある。天才のひらめきが何段階か必要になる。しかし、Lispは、少なくともゲーデルが必要としていた意味で、まさに自分自身を直接語ることができる ゲーデルはLispを発明した! 不完全性定理のLisp, Mathematicaによる記述 和田英一「Lispへのこだわり」(PDF) Eric S. Raymond「ハッカーになろう」LISP は、それをモノにしたときのすばらしい悟り体験のために勉強しましょう。この体験は、その後の人生でよりよいプログラマーとなる手助けとなるはずです。たとえ、実際には LI

  • ブログ開設から3カ月後も更新している人が55% - ネタフル

    ブログ開設から3カ月後も更新している人が55%、Technoratiがデータ公表という記事より。 Technoratiは2003年3月から2006年4月までのブログ数に関するデータを保有しているが、そのデータを見ていくと、ブログ数は過去42カ月間にわたって6カ月ごとに倍増しているという。 現在、Technoratiがチェックしているブログ数は、なんと3,530万で、1日あたり75,000以上もの新規ブログが開設されているということです。凄い数ですね。平均すると1秒に1つ、ブログが誕生していることになるとのこと。 今回のデータでは、開設されてから3カ月後も更新されていたブログが55%あった。 ということで、「1,940万人のブロガーがブログに関与し続けていることを意味している」と記事。これはとんでもない数字ではないですか? けっこうみんな更新し続けているのですね。 「毎週ブログを更新するブロ

    ブログ開設から3カ月後も更新している人が55% - ネタフル
    agx
    agx 2006/04/25
    逆に3ヶ月持たない人が半分なんだなあと思ってしまった。
  • なぜ関数プログラミングは重要か

    John Hughes, Institutionen för Datavetenskap, Chalmers Tekniska Högskola, 41296 Göteborg, SWEDEN. rjmh@cs.chalmers.se この日語訳は原著者の承諾を得て山下がここに公開するものです。 この訳文についての、御指摘などは山下伸夫(nobsun .at. sampou.org)までおねがい いたします。 翻訳最終更新日 : 2011-09-17 原文 "Why Functional Programming Matters" 日語訳PostScript この論文は1984年以来何年ものあいだChalmers大学のメモとして回覧された。 1989年と1990年に幾分か改訂をしたのが[Hug89]と [Hug90]である。この版はもとのChalmer大学のメモ のnroff原稿をもとに