タグ

lispに関するokagawaのブックマーク (117)

  • The Rise of ``Worse is Better''

    Previous: Lisp's Apparent Failures Up: Lisp's Apparent Failures Next: Good Lisp Programming is Hard The Rise of ``Worse is Better'' By Richard Gabriel I and just about every designer of Common Lisp and CLOS has had extreme exposure to the MIT/Stanford style of design. The essence of this style can be captured by the phrase ``the right thing.'' To such a designer it is important to get all of the f

    okagawa
    okagawa 2010/01/26
  • Yaneu Labs --- コンピュータ将棋プログラムをLISPで書く

    *[hatefu:labs.yaneu.com/20090905/] コンピュータ将棋プログラムをLISPで書く 「コンピュータ将棋プログラムをLISPで書く」と言うとコンピュータ将棋開発関係者にすら完全にネタかと思われているのが実状ではあるが、私はこれを機にその誤解を解いておきたい。 ここでは、私がC#で書いたLISPエンジンのソースを公開し、これが実際にコンピュータ将棋プログラムの開発において非常に有効であることを示す。 * YaneLisp version 1.10 今回の記事はあまりに長文なので最後まで読む前に眠くなる人のために、まず始めに私が実装したLISPのバイナリとソースを配布しておく。ライセンスはNYSLとする。 勢いに任せて実装したので、かなり雑な作りだが、必要ならばC#側で関数を追加するなりすればいいと思う。このLISPの製作に要した時間は丸2日ぐらい。 # YaneL

  • Clojure Brings STM, LISP to the JVM

    InfoQ Software Architects' Newsletter A monthly overview of things you need to know as an architect or aspiring architect. View an example

    Clojure Brings STM, LISP to the JVM
    okagawa
    okagawa 2009/08/25
    Clojure
  • Rifle-Oriented Programming with Clojure

    Any comparison of hot JVM languages is likely to note that “Clojure is not object-oriented.” This is true, but it may lead you to the wrong conclusions. It’s a little like saying that a rifle is not arrow-oriented. In this article, you will see some of the ways that Clojure addresses the key concerns of OO: encapsulation, polymorphism, and inheritance. This is a whirlwind tour, and we won't have t

    Rifle-Oriented Programming with Clojure
    okagawa
    okagawa 2009/08/25
    Clojure
  • Clojure and Rails - the Secret Sauce Behind FlightCaster

    InfoQ Software Architects' Newsletter A monthly overview of things you need to know as an architect or aspiring architect. View an example

    Clojure and Rails - the Secret Sauce Behind FlightCaster
    okagawa
    okagawa 2009/08/25
    Clojure and rails
  • Clozure CL

    Important Notice Although this Trac will remain online for the foreseeable future, Clozure CL's source code and issue tracker are now on GitHub: ​http://github.com/Clozure/ccl Please don't make new tickets here on the Trac; use the GitHub site instead. Thank you. See OldWikiStart for the previous contents of this page.

    okagawa
    okagawa 2009/02/22
  • bwin·必赢(中国)唯一官方网站

  • PCL -> Clojure

    My current leisure-time project is porting the examples from Peter Seibel's excellent Practical Common Lisp (PCL) to Clojure. I think Clojure is interesting for three reasons: Clojure is Lisp, but minus historical baggage. Clojure gives full access to the JVM and Java libraries. Clojure groks concurrency and state. My ground rules are simple: I am not going to port everything, just the code sample

    PCL -> Clojure
    okagawa
    okagawa 2008/10/16
    Clojure
  • Grassとラムダ計算とLisp - * *scrap*

    Lispのlambda式の使い方が分かってきた頃に書き溜めたラムダ計算遊び用のコードと組み合わせてみる。 まず、繰り返し関数適用してく時にCommonLispだとfuncallが大変ウザくなるので、省略するための簡単なユーティリティー関数。 (defun app (&rest arg) (reduce #'funcall arg)) (defun $ (&rest arg) (reduce #'funcall arg :from-end t)) 任意の数の関数を引数にとって、appは左から、$は右から順番に適用していく。 $はHaskellにこんな感じの演算子があった様な気がしたので。 appも記号にしたかったけど良いのが思いつかなかった。 例 ($ out succ out succ out succ w) 何語だコレって感じですが。スマートな書き方が分からない。 とりあえずこれをxyz

    Grassとラムダ計算とLisp - * *scrap*
  • Emacs Lisp のダメなところ - あどけない話

    Emacs Lisp をこよなく愛する僕の目から、Emacs Lisp がダメだと思うところをまとめておきます。 文化的な問題 Emacs Lisper の多くは、Lisp が好きで使っているのではなく、Emacs が好きだからしかたなく使っているのでしょう。当は C で書きたいのに、無理して Lisp を利用している感じです。 そのため、Emacs に付いてくる Emacs Lisp のコードは、Lisp らしくないものがほとんどです。単に C での発想を Lisp で表現しています。 これらのコードは、読みこなせないぐらい関数が大きく、副作用のある部分とない部分が分離されていません。また高階関数を用いて、データ構造を走査するコードと実際に仕事をするコードを分離するという意識も低いようです。 GoogleMapReduceという論文のお陰で、Lisp の写像関数(map)と畳込み

    Emacs Lisp のダメなところ - あどけない話
    okagawa
    okagawa 2008/02/10
    Mewの作者による、EmacsLispのダメなところ
  • Arc のハッシュ - あどけない話

    川合さんのエッセイ「Schemer's way」は面白く、とてもためになります。 ただ一点、フェアな議論なのか気になるところがありました。 多くの言語では、新しいオペレータを追加するのは言語そのものを拡張しなければならないだろう。例えばJavaを拡張してPerlの `x' オペレータを実装するには、構文規則から書き直さねばならない。既存のオペレータに新しい意味を追加するというメカニズムは、これもいくつかの言語では言語そのものに組み込みの機能となっている。 Lisp系の言語では、オペレータと関数呼び出しとの間に区別が無いため、オペレータの機能の拡張ということは議論にならない。新しいオペレータが欲しければ、あるいは既存のオペレータを拡張したければ、いつでも自分で書けるからだ。 Java には構文規則を変えなければいけない例を挙げているのに、Lisp では構文規則を変えなくてよい例を出しています

    Arc のハッシュ - あどけない話
  • 7.12 Poor Man's Object-oriented Programming

    okagawa
    okagawa 2007/10/04
  • Scheme:マクロ:CommonLispとの比較:意味論

    前回までのあらすじ MSIの黒田さん wrote in About Scheme: 「Schemeじゃまともなマクロが書けないでしょう」 Shiro wrote in Scheme:マクロ:CommonLispとの比較: 「Schemeではhygienic macroという形でその問題を解決してます」 MSIの黒田さん wrote in GaucheNight: 「でもR5RSではセマンティクスが文字の並びで定義されてるんだから、S式の操作でプログラム生成をするマクロとは相容れないんじゃないの」 何が問題なのか Shiro(2007/05/16 04:43:15 PDT追記): 論点がわかりにくいという話があったので最初に整理しておきます。 R5RSにおいて、Schemeの正式な構文は 7.1節に、 基構文(lambda、if、set!、関数呼び出し、変数参照)のセマンティクスは 7.2

    Scheme:マクロ:CommonLispとの比較:意味論
  • ホワット・ア・ワンダフル・ワールド クラスの動的ロードとかいろいろメモ

    これを眺めていて,Java のクラスを動的に定義してロードしたりとかってどうやるんだろう ? と思いました. 通常は,静的に定義されたクラスを鋳型にして,オブジェクトが動的に生成されます.もう手垢がついた,たい焼きの型 (クラス) とたい焼き (オブジェクト) の話ですね. これを一階の操作とすれば,クラスをオブジェクトとして生成するクラス,メタクラスという概念が自然に生まれてきます.たい焼きの型を作るための型の話ですね.たい焼きの型も工業製品の一種なので,何らかの鋳型で大量生産されるわけです. んで,Java では,java.lang.Class というメタクラスパッケージと,java.lang.ClassLoager パッケージを組み合わせると,動的にクラスを定義したりロードしたりしてゴニョゴニョできるらしい. Java のクラスアンロード (Class Unloading) また,j

  • JavaLisp Implementation Notes

    okagawa
    okagawa 2007/08/21
    JavaLispの実装について
  • Tcl8.5 の apply コマンドで関数型プログラミング:Rainy Day Codings:So-net blog

    私はこれまではまだ Tcl8.4 をメインにしていて 8.5 の機能をあまり触っていないことに気がついたので新機能を試してみることにしたい。 まずは新規追加になった apply コマンド。これは端的に言うと Tcl で関数型プログラミングへの道を開くものだ。 プログラミング言語のデザインでは「なんでも○○」という原則を作ることで仕様を簡潔にするということがしばしば行われている。○○に入るのは「オブジェクト」だったり「S式」だったりするかもしれない。Tcl ではそこに「文字列」が入る。Tcl という言語におけるファーストクラスは文字列のみであり(EIAS: Everything Is A String)、Tcl の魅力と奇怪さの多くはここから来ている。 さて、 Tcl ではプロシージャ(=関数)は通常の変数とは別の名前空間を持ち、また通常の変数への代入はできない。 例えば Lua や OCa

  • Gauche Night: ホットコーナー

    ブログ(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/ )に転載したものから。 --- Gauche Nightのこと。ちょー遅くなったけど、もう、これくらいでケリをつ けてアップします。キリがないんだもん。^^; http://iiyu.asablo.jp/blog/2007/04/06/1374459 Shiroさんが作ったScheme、Gaucheに関するお知らせ http

    okagawa
    okagawa 2007/07/05
  • LispUser.net : 最高にキモい Lisp コードを書いてみよう with 100 行リーダーマクロ

    LISPUSERLISPMEMOLisp is like a ball of mud - you can throw anything you want into it, and it's still Lisp. -- Anonymous Ruby 方面でみかけたネタに触発されました.Lisp はプログラマブルな言語な のでリーダーもプログラマブルです.そこでリーダーをいじって let や defun などの構文を括弧じゃなくて end にでもしてみましょうか. 100 行程度を目標にトライしました.使ったライブラリは CL-Yacc のみです. できあがったのがこちら. #@suck-lisp defun fib (n) if (< n 0) (error "oops") elif (= n 0) 0 elif (= n 1) 1 else let x <- (fib (- n 1))

    okagawa
    okagawa 2007/07/04
  • Lisp:よくある正解

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

  • Topics:SICP in other languages - CTMWiki

    Topics:SICP in other languagesFrom CTMWiki SICP, Structure and Interpretation of Computer Programs (http://mitpress.mit.edu/sicp/), is another great CS textbook that's in the works for translation. The examples in the book were originally in Scheme.