タグ

OOPとlispに関するkiyo_hikoのブックマーク (7)

  • Lisp hacks

    Some small programs in Lisp Conduit packages Collecting lists forwards Memoizing functions Applicative iteration HTML generation Abstract classes Singleton classes Maintaining dynamic state Read-time packages Hierachical packages Defaulting optional arguments for generic functions Conduits The `conduits' system tries to generalise the CL package system to allow for more flexible construction of pa

  • Common LispでFizz-Buzz問題・総称関数を使って | へびにっき

    総称関数の練習のために、Fizz-Buzz問題を総称関数を使って解いてみた。独自のメソッド結合まで使った、無駄に大掛かりな物になっている。 (defun strcat (&rest strings) (apply 'concatenate `(string ,@strings))) (define-method-combination strcat :identity-with-one-argument t) (defgeneric fizz-buzz-method (mod3 mod5) (:documentation "mod3が0ならFizz, mod5が0ならBuzz") (:method-combination strcat)) (defmethod fizz-buzz-method strcat ((mod3 (eql 0)) mod5) "Fizz") (defmethod

    kiyo_hiko
    kiyo_hiko 2011/11/11
    「総称関数の使い勝手はHaskellやErlangのパターンマッチと似たところがあるが、マッチするメソッドが一度に全部手に入り、それらを結合できるところが決定的に違う。」…なるほど
  • 総称関数

    kiyo_hiko
    kiyo_hiko 2011/11/11
    CLOSはまだあまりわかってないのであとで精読しよう
  • モバイルゲームの歴史を年代別にご紹介します。モバイルゲームの成長と今後について詳しく解説していきます。

    モバイルゲーム 物凄い勢いで勃興したモバイルゲーム業界は、いろいろな課題や問題に直面しながらも巨大化し、今日の時点でのスマートフォン向けゲームの市場へと継承されていきます。 モバイルゲーム歴史 2001 Javaアプリと3Dゲームの登場 Javaが利用できるようになったことにより、ダウンロード型のゲームが供給できるようになりました。 2002 携帯電話端末の大容量化・3D化競争 Java搭載携帯電話端末が登場してからごく僅か1年の間に、アプリのサイズに関しては10倍に広大化し、表現方法も2Dから3Dにシフトし始めました。J-PHONEは『ゼビウス』や『スペースハリアー』などといった昔のアーケードゲームを、ドコモはSIMCITYなどパソコンで世界的規模のヒットを飛ばしたゲームを主力商品としていました。 2003 モバイルゲームの一般化 メモリの制限が厳しいJava仮想マシン上ではなく、OS

    kiyo_hiko
    kiyo_hiko 2011/05/31
    バカな自分には高度すぎてわかりませんでした
  • 多重ディスパッチ - Wikipedia

    多重ディスパッチ(英: Multiple dispatch)は、多重定義された関数やメソッド(マルチメソッド(英: Multimethods)などと呼ばれる)などについて、そこで呼び出されるべき1つの定義を動的に選んで実行する(動的ディスパッチする)際に、2個以上の複数の引数が関与してどれかひとつを選ぶこと(特殊化)がおこなわれるものである。 概要[編集] 多重定義を許すプログラミング言語では、同一の名前の(すなわち、多重定義された)関数やメソッドのうちのどれを呼出す(ディスパッチする)かを決定する、ということをしなければならない。 多くのオブジェクト指向プログラミング言語は単一ディスパッチである。すなわち、メソッド呼び出し(Smalltalkなら「メッセージ送信」、C++なら「メンバ関数呼び出し」)において、引数の1つが特別に扱われ、呼び出すべきメソッドの特定に使われる。構文上もその引数

    kiyo_hiko
    kiyo_hiko 2011/02/25
    多重ディスパッチとか、マルチメソッドとか言われるもの。
  • Common Lispのイコール(eq eql equal equalp) - ありの日記

    どの言語にも2つの値(オブジェクト)が等しいかどうかという判断が必ずあると思う。例えばxとyの値が等しいかどうかっていう処理はよくでてくるはずである。当然Common Lispにもその判断を行うための方法が用意されていて、Common Lisptでは「EQ、EQL、EQUAL、EQUALP」という関数で定義されている。 名前で区別つかないので、絶対忘れる系。なので、メモっておく。また、Common LispではNILが偽で、それ以外のものはすべて真となる。ただ、空のリスと'()もNILと同等のようだ。 EQ(オブジェクト同一性) CL-USER> (eq 10 10) T ただし、この式が真になるか偽になるかはLispの処理系によるらしい。うーん。とりあえずこいつはあんまり使うこと無いのかな。 EQL 比較するオブジェクトのクラスと値までみて同じかどうか判断する CL-USER> (eql

    Common Lispのイコール(eq eql equal equalp) - ありの日記
    kiyo_hiko
    kiyo_hiko 2011/02/25
    コメント欄がディープで楽しすぎる。
  • Practical Scheme

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

    Practical Scheme
    kiyo_hiko
    kiyo_hiko 2011/02/17
    Schemeはオブジェクトシステムないのか。その気になればすぐ実装できてしまうんだろうけど。
  • 1