タグ

lispに関するsugarbabe335のブックマーク (10)

  • Common Lisp: loopマクロ用法抄

    GrahamのANSI Common Lispでは嫌われていて碌に説明のないloopマクロ。一方、Practical Common Lispでは対照的に好んで用いられていて、全編に渡って頻繁に使われている。しかしloopマクロは難しいという意識があるのかその説明は第22章とかなり後回しにされており、ちぐはぐな感を受ける。ここでは、LOOP for Black-Belts という題のつけられたその章で解説されているloopマクロの用法を整理してみた。 ANSI Common Lispでの黒魔術扱いに敬遠していたloopマクロだったが、こうして整理してみるとそれほど難しく考えずとも便利に使うことができそうだ。 目次 繰り返し 計数繰り返し コレクション内繰り返し 変数更新しながら繰り返し ループ終了条件の追加 アクション 集約 ループ内ローカル変数 任意の式の実行 条件分岐 ループ中断 その他

    Common Lisp: loopマクロ用法抄
  • Lisp 一夜漬け -- 2.リスト

    ■ Lisp におけるデータ型 ┏ アトム──┬ 数値 ┃ ├ 文字列 ┃ ├ シンボル ┃ └ nil ┗ リスト 数値などのように、データ型としてそれ以上分解できないものをアトム(atom「原子」の意)という。 アトムではないものをリストという。 リストはアトムまたはリストを束ねたものである。 リストを分解していくとアトムになる。 アトムの種類は、処理系による。 上に挙げたものはほぼすべての処理系に存在するだろう。 シンボル以外のアトムを評価するとそれ自身が評価結果となる。 前回、「数値345を評価すると345が結果となる」ということを述べた。 文字列も同様で、文字列を評価するとそれ自身が結果となる。 シンボルは変数名や関数名に使われるデータで、 シンボルを評価すると変数として代入された値を返す。 リストにも種類があって、「純リスト」と「純リストでないリスト」に分けられる。 他のプログ

  • condとcase

    階層的条件 if 特別式は else 引数を利用することによって階層的な値の検出を行うことができます。 例えば (if test1 then1 (if test2 then2 (if ... という具合に、「~でなければ、~でなければ」という形に記述することができます。 こうすれば、階層的にデータを評価することができ、複数の複雑な条件を満たしているかどうかなどを調べることができます。 こうした階層的な分岐はプログラミングでは珍しいものではありません。 C言語のような手続き型言語でも、次のような if 文の階層化は頻繁に発生しています。 if (test1) { ... } else if (test2) { ... } else if (test3) { ... } ... しかし、関数型言語である LISP では、これを頻繁に記述するとコードが読みにくくなってしまいます。 もちろんある程

  • LISPMEMO

    Emacs から SLIME を起動すると (http://lispuser.net/emacs/lisphacking.html , http://lispuser.net/commonlisp/clisp.html 参照) 、 CL-USER> というプロンプトが表示されていると思います。 CL-USER> ここに、プログラムを入力することで、 Lisp にプログラムを解釈させて結果を確認することができます。 さっそく Lisp にプログラムを実行させてみましょう。 CL-USER> (+ 1 2) 3 これは、 1 + 2 を計算させるプログラムです。 (+ 1 2) の意味は、関数 + パラメータとして 1 と 2 を渡す、という意味になります。 乗算を行いたい場合には関数 * を使用してみてください。 CL-USER> (* 3 4) 12 もちろん、式を入れ個にする事もできます

  • http://home.soka.ac.jp/~unemi/LispProlog/lisp1.html

  • icadweb.com

    icadweb.com 2024 著作権. 不許複製 プライバシーポリシー

  • LISP関数一覧 - じゅんじゅんのメモ帳@ ウィキ

    関数aabs ccar ceiling cdr cond ddef(defin) defun difference dribble eexp ffloor llist mmax min rrem ...

    LISP関数一覧 - じゅんじゅんのメモ帳@ ウィキ
  • Programming in Emacs Lisp: Loops & Recursion

    11.1 while 特殊形式 while は、最初の引数を評価して返された値が真か偽かを テストする。ここまでは if の時と同じである。しかし、次に Lisp イ ンタプリタがやることはちょっと違っている。 while 式においても、返された値が偽の場合は、Lisp インタプリタは残 りのS式 (このS式の体部分) をスキップし、それを評価したりはしない。し かし、返された値が真の場合は、Lisp インタプリタは体部分を評価した後、 もう一度 while の最初の引数が真か偽かをテストする。もし、返された 値がまたもや真であったなら、Lisp インタプリタは再度体部分を実行する。 while 式のテンプレートは次の通りである。 while 式の真偽テストの部分が真を返している限り、体部分は繰り返 し評価される。このプロセスはループと呼ばれる。これは、Lisp インタプリタ が何

  • ちょっと変わったLisp入門 - @IT

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

    ちょっと変わったLisp入門 - @IT
  • Sign in - Google Accounts

  • 1