LISP Scheme Part7
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
NGNGPart1: http://piza2.2ch.net/tech/kako/987/987169286.html
Part2: http://pc.2ch.net/test/read.cgi/tech/1002584344/
Part3: http://pc.2ch.net/test/read.cgi/tech/1008220265/
Part4: http://pc.2ch.net/test/read.cgi/tech/1016211619/
Part5: http://pc3.2ch.net/test/read.cgi/tech/1023091882/
Part5: http://pc3.2ch.net/test/read.cgi/tech/1031560687/
関連リンクは>>2-10あたり
0002デフォルトの名無しさん
NGNG日本Lispユーザ会(日本語)
http://jp.franz.com/jlug/index.html
ここにかなりの情報があります。
http://jp.franz.com/
削るとAllegro Common Lispのページへ
プログラミング言語Scheme(日本語)
ttp://www.sci.toyama-u.ac.jp/~iwao/Scheme/scheme.html
Schemeの人はまずここを見ましょう。
Lisper への道(日本語)
ttp://www.geocities.co.jp/SiliconValley-Oakland/1680/rakup.html
判りやすいLISP入門サイト。
Schemeへの道(日本語)
ttp://www.stdio.h.kyoto-u.ac.jp/~hioki/gairon-enshuu/SchemeNotes/scheme.html
ここはschemeの入門サイト。
0003デフォルトの名無しさん
NGNGhttp://buri.sfc.keio.ac.jp/lisp/menu.html
Practical Scheme(日本語)
ttp://www.shiro.dreamhost.com/scheme/index-j.html
「普通のやつらの上を行け」など、興味深い文書を沢山翻訳されてます。
(Gaucheという完成度の高いscheme処理系作者さんのページでもあります。)
Scheme Hash(英語)
http://okmij.org/ftp/Scheme/index.html
S式でXMLを使える様にするSXMLなど
John McCarthy's Home Page
http://www-formal.stanford.edu/jmc/
LISPの生みの親、J・マッカーシーのページだそうです。
お隣りのプログラマ板のLISPスレのログです。(dat落ち)
http://mentai.2ch.net/prog/kako/963/963134110.html
0004デフォルトの名無しさん
NGNGCommon Lisp the Language, 2nd Edition(英語)
http://www.cs.cmu.edu/afs/cs.cmu.edu/project/ai-repository/ai/html/cltl/cltl2.html
CommonLispの仕様書です。
アルゴリズム言語Schemeに関する第五改訂報告書 R5RS(日本語)
http://www.sci.toyama-u.ac.jp/~iwao/Scheme/r5rsj/html/r5rsj_toc.html
http://www.biwa.ne.jp/~mmura/scheme/tspl.html#r5rs
日本語訳はここ以外にもあるそうです。
Scheme Requests for Implementation SRFI (英語)
http://srfi.schemers.org/
Scheme Frequently Asked Questions (英語)
http://www.schemers.org/Documents/FAQ/
0005デフォルトの名無しさん
NGNGSICP(英語)
http://mitpress.mit.edu/sicp/full-text/book/book.html
「計算機プログラムの構造と解釈」の原書です。
全てオンラインで読めます。
計算機プログラムの構造と解釈 第二版 (snip) に関連するホームページ
http://www.ipl.t.u-tokyo.ac.jp/sicp/
SICPの回答集
http://www.melt.kyutech.ac.jp/~gogogo/sicp_ex/
http://pluto.aurorasd.co.jp/~mkama/sicp/
http://www.ipl.t.u-tokyo.ac.jp/sicp/solution.root.html
http://www.sampou.org/scheme/sicp/answer/
0006デフォルトの名無しさん
NGNGSchemeで書かれた正規表現ライブラリ
ttp://www.cs.rice.edu/~dorai/pregexp/pregexp.html
幻の「入門Scheme」
ttp://www4.ocn.ne.jp/~inukai/scheme_primer_j.html
オンラインで読める
各種scheme処理系をcygwin上からビルドする方法など。
ttp://www.geocities.co.jp/SiliconValley-PaloAlto/7043/
Bit - Implantation compacte de Scheme
http://www.iro.umontreal.ca/~dube/
mini-schemeよりも小さい(?)bytecode変換系
Lisp 言語処理系: CAMPUS LIsP, Lemon version
http://aten.aial.hiroshima-u.ac.jp/~kakugawa/clisp/index-ja.shtml
Cコードによるわずか1000行の実装
0007デフォルトの名無しさん
NGNGMinischeme: 1 ファイルに凝縮された Scheme 処理系
http://tinyscheme.sourceforge.net/minischeme.tar.gz
TinyScheme: Minischeme の発展版
http://tinyscheme.sourceforge.net/
KI-Scheme, AM-Scheme, etc...
http://www.nifty.com/download/dos/prog/lisp/
LispMe: Palm 上で動く Scheme 処理系
http://www.lispme.de/lispme/
0008デフォルトの名無しさん
NGNG乙カレ〜。
Bibliography of Scheme-related Research
http://library.readscheme.org/
Scheme関連の論文リンク集
0009デフォルトの名無しさん
NGNGPart6: http://pc3.2ch.net/test/read.cgi/tech/1031560687/
0010名無しさん@XEmacs
NGNG"ANSI Common Lisp" 買ったsage。
0011デフォルトの名無しさん
NGNG漏れも買った。でも読んでない…。
0012デフォルトの名無しさん
NGNG0013デフォルトの名無しさん
NGNG0014デフォルトの名無しさん
NGNG0015デフォルトの名無しさん
NGNG0016デフォルトの名無しさん
NGNG0017デフォルトの名無しさん
NGNG0018LISPスレ住人その1
NGNG判別できるのは、
>>10-13
>>16-20
>>22-27
>>30-32
>>34-37
>>39-41
これでok?
0019LISPスレ住人その1
NGNG最近人いないなあ・・・
0020名無しさん@Emacs
NGNG入ってるみたいなんだけど、これの歴史的な理由を御存じの方います? 何か MLD に
も入ってるみたいでびびった。
0021山崎渉
NGNG0022デフォルトの名無しさん
NGNGこんなのがあるんだね
既出?
0023デフォルトの名無しさん
NGNG一度いってみたいなあと思ってます。
その時はよろしこ(藁
0024デフォルトの名無しさん
NGNGせかんど
さーど
ふぉんど
ふぁいぶんど
0025デフォルトの名無しさん
NGNG資料を見てみると、だいぶしまいの方まで来てるぞ。
行く前に終わってるんじゃないか。(W
0026デフォルトの名無しさん
NGNGたしかに漏れは終わっている部類の人間だが、
そんなことは関係なし。先生に会いに行くのだ(藁
0027デフォルトの名無しさん
NGNG0028デフォルトの名無しさん
NGNG0029デフォルトの名無しさん
NGNG0030デフォルトの名無しさん
NGNG申し込んだけどまだ2章。だめぽ.....。
0031山崎渉
NGNG0033デフォルトの名無しさん
NGNG内部エンコーディングがEUC-JPのGaucheを使って、Shift-jisコードを
16進数で表示しようとしています。
(char->integer #\あ)とすることによって、内部エンコーディングを
10進数で表示できました。しかし、Shift-JISの表示は分かりませんでし
た。
(char->integer (ces-convert #\あ "EUCJP" "SHIFTJIS"))では、String
がchar->integerに渡されるためにNGでした。
御面倒ですが、アドバイスをお願いします。
0034デフォルトの名無しさん
NGNGchar->integerは使えない。
変換後の文字列を1バイトづつ取り出すしかないのでは。
(let ((sjis (ces-convert "あ" "eucjp" "shift_jis")))
(fold (lambda (index num)
(+ (* num 256) (string-byte-ref sjis index)))
0
(iota (string-size sjis))))
0035デフォルトの名無しさん
NGNGLISPのLIの字も出てこんなあ。けしからん。
お叱りの言葉と「 不充分・不完全である」
にチェック入れてフィードバックすた。
0036デフォルトの名無しさん
NGNG0037デフォルトの名無しさん
NGNG(xsl:choose
(xsl:when productList
(xsl:variable (recursive_result)
(xsl:call-template priceSum
(xsl:with-param (productList (cdr productList)))))
(xsl:value-of (+ (number (substring-after (/ $productList[1] Price) '$'))
$recursive_result))
(xsl:otherwise (xsl:value-of 0))))
0038デフォルトの名無しさん
NGNG0039デフォルトの名無しさん
NGNG具体的にコードまで教えていただきありがとうございしました。
理解できました。
0040デフォルトの名無しさん
NGNG0041デフォルトの名無しさん
NGNG必要ないんじゃないだろうか。
0042C++厨
NGNG0043デフォルトの名無しさん
NGNG>2003-01-10
>Antonio Leitao has posted the code of an Emacs-based debugger and inspector
> for CMUCL, that is based on ILISP. See the cmucl-imp mailing list for the source code.
とあるのですが gmane.org 経由でのぞいても Antonio タンの記事が見つからないんです。
うわぁぁん、使ってみたいよ〜。cmucl-imp 購読者な神よ、ウプキボンヌ!
0044山崎渉
NGNG0045デフォルトの名無しさん
NGNGlisperは普段どこ行ってるの?
0046デフォルトの名無しさん
NGNGこれ、面白い。
0047デフォルトの名無しさん
NGNG「123ページのdefpackageの呼び出しでは、引数にはストリングしか使わなかっ
た。シンボルを使うこともできたのだが、これは危険なことがある。なぜか。」
というのがありますが、具体的にどうまずいのか思いつきません。
御存じの方いらっしゃいましたら御教示下さい。
123ページの…というのは
(defpackage "MY-APPLICATION"
(:use "COMMON-LISP" "MY-UTILITIES")
(:nicknames "APP")
(:export "WIN" "LOSE" "DRAW"))
という一般的な例です。
0048デフォルトの名無しさん
NGNG引数がシンボルだと、defpackage形式を読み込むパッケージによっては
意図しているのと違うパッケージのシンボルを指してしまうことが
あるからかなあ。
パッケージ違いによるバグは結構はまる。プログラムコードをいくら
睨んでもわからないから。
0049デフォルトの名無しさん
NGNGシンボルじゃなくてキーワードを使うのはどうなんでしょう?
(defpackage :mypackage (:use ...))
みたいな。文字列だと *readtable* を考慮するのが面倒なんですが…。
皆 :UPPERCASE なんで気にしなくていいんですかね?
0050デフォルトの名無しさん
NGNGキーワードもシンボルなのだが、それはそれとして、
キーワードを使用するのは極めて一般的です。
005147
NGNGなんかそういうことが起こりそうだなあという気はするのですが、
今日は色々試していたのですが残念ながら中々そういう事態をうま
く作りだせませんでした。
お心あたりがありましたら、例を頂けると有難いです。
それとは別に、試行錯誤しているうちに一つ発見したのは、
読み込む側のシンボルテーブルを汚染してシンボルを作ってしまう
ために、useしようとしたパッケージがたまたま重なった名前を
exportしていると、シンボルが衝突してしまうということですね。
0052デフォルトの名無しさん
NGNGParadigms of Artifical Intelligence Programming
を買ちゃった age
005347
NGNGあー面白かった。
ちょっと悔しいのが、型宣言をうまく使えなかったことで、高速化
を扱った9章の練習問題にて(例に出てきた)レイトレーサのプログ
ラムに型宣言を追加せよ、というのがあったのですが、これに型宣
言を追加するとかえって遅くなってしまいました。その前のCLOSの
章の練習問題にてdefstructをクラスにしたものをベースに、あち
こちにsingle-floatの宣言を入れてついでに多く使われてるものは
inlineも指定したんですが、型宣言を入れる前には追い付けずじまい。
どうするのがいいのやら。
005447
NGNG_clips.cのexecvでlisp.runを起動させて
lisp.run側で処理をするんだとは思うのですが、
このlisp.runのソースはどれなんでしょうか?
clisp/src/spvw.dがソースかとも思ったんですが、
cのコードっぽいけどなんかcのソースファイルじゃないし・・・
0056デフォルトの名無しさん
NGNG0057デフォルトの名無しさん
NGNG0058デフォルトの名無しさん
NGNG英語のSICP読むの諦めて
図書館で日本語訳借りてきた俺にはだめぽ
0059デフォルトの名無しさん
NGNG(http://pc.2ch.net/test/read.cgi/prog/1031179059/383))
0060拒食症
NGNG(define square
(lambda (x)
(* x x)))
(define make-prime
(lambda (upper)
(let ((ls (list 2 3)))
(let f ((x 5))
(if (> x upper)
ls
(let g ((_ls ls))
(cond
((zero? (modulo x (car _ls)))
(f (+ x 2)))
((> (square (car _ls)) x)
(set! ls (append ls (list x)))
(f (+ x 2)))
(else
(g (cdr _ls))))))))))
0061拒食症
NGNG0062名無しさん@XEmacs
NGNG0063
NGNGhttp://nis-www.lanl.gov/~rosalia/mydocs/learn_libguile_toc.html
http://nis-www.lanl.gov/~rosalia/mydocs/learn_libguile.ps
おまえらも遊びませんか?
0064
NGNGhttp://www.cs.utexas.edu/users/bdbryant/guile-for-ada/guile-tut_toc.html
見て遊んできます。
0065デフォルトの名無しさん
NGNGhttp://www.amazon.co.jp/exec/obidos/ASIN/4894714337/250-8225561-7907410
の練習問題のP51の5(c)のmapcarを使う場合のpos+の定義方法がよく分かりません
pos+の引数のリストから(0 1 2 3)のようなリストを作成した後にmapcarする
(mapcar #'+ lst (make-pos-lst lst)) ;;make-pos-lstは(0 1 2 3)のような
;;リストを作成する
のような考え方でよいのでしょうか
漏れならこう書くが、合ってるかどうかは知らん。
ANSI Common Lisp持ってないし。
(defun pos+ (l)
(let ((n -1))
(mapcar #'(lambda (x) (+ x (incf n))) l)))
0067デフォルトの名無しさん
NGNG私もちょうど同じところでひっかかりました。
それと、P.51の3問目、要求仕様を満たすものはできるのですが、
どうもダサいものしかできません。恥を忍んでさらしますので、ど
なたかもっと美しい答えを貼ってもらえんでしょうか。
(defun occurrences (lst)
(let (result)
(dolist (item lst)
(setq result (occurrences-sub item result)))
(sort result #'> :key #'cdr)))
(defun occurrences-sub (item result)
(let ((pair (assoc item result)))
(cond (pair (setf (cdr pair) (1+ (cdr pair)))
result)
(t (cons (cons item 1) result)))))
どこかに練習問題の模範回答はないんかな?
0068デフォルトの名無しさん
NGNG>>65
(defun pos+ (lst)
(let ((n -1))
(mapcar #'(lambda (x)
(setf n (+ n 1))
(+ n x))
lst))))
>>67
(defun occurrences-help (count lst)
(let* ((elem (car lst))
(a (assq elem count)))
(cond
((null lst) (sort count #'(lambda (a b) (> (cdr a) (cdr b)))))
(a (setf (cdr a) (+ (cdr a) 1))
(occurrences-help count (cdr lst)))
(t (occurrences-help (cons (cons elem 1) count) (cdr lst))))))
(defun occurrences (lst)
(occurrances-help '() lst))
0069
NGNG最近卒論でちょっとしたシミュレータを作っていまして、
そのシミュレーションシナリオの記述言語として lisp を採用してみたいと思っています。
一般的に C/C++ に lisp インタープリタとしての機能を付け加えたいとき、
なにかおすすめのライブラリなどはありますでしょうか?
Scheme でも OK なのですが、 libguile はちょっと敷居が高いと感じていまして。
0070
NGNGをみると Gauche にも予定では
by version 0.9.0
Revise C API. More extensions. C API documentation.
となっていたり、
http://www.shiro.dreamhost.com/scheme/gauche/man/gauche-refe_1.html#SEC1
を見ると
This manual only deals with Scheme side of things.
Gauche has another face, a C interface. Details of it will be discussed
in a separate document to be written.
Those who wants to use Gauche as an embedded language,
or wants to write an extension, need that volume.
だったりします。
0072デフォルトの名無しさん
NGNG他の動的な言語もそうだけど、LISPにはGCの存在があるので、
Cとかに組みこむ時にはちょっと気をつけないといけない事がある。
C側で参照しているLISPオブジェクトがあり、その上でLISP側の
処理が走りGCが起動すると、LISP側で参照されていない(GCが
把握していない)オブジェクトはゴミとして回収されてしまう。
このとき、C側(親)で参照していたオブジェクトは、何も対策を作って
ないと、いつのまにか無効な物になっていたりして、なかなか取れない
バグの原因になる。
例として、EmacsLisp向けのCによるコードを書く時は、LISP側の処理
を起動させる直前に外部(C側)で使用しているLISPオブジェクトへの
参照を全てGCに把握させるコードを埋め込む必要がある。
この辺はかなり注意深く書かないと容易に不具合を引き起こす。
しかし、この問題は保守的な(conservative)GCを採用すればほぼ
解決する。保守的なGCはCで使用されるスタックをすべてGCが管理
すべきオブジェクトのポインタとみなし、アドレスがGC側でアロケート
した領域であれば自動でそれを保護してくれる。ただし見なすという
性質上、回収漏れが起きたりする。これはスタックが深くならない限り
はそれほど問題にはならない。
きちんと管理したくない場合は、保守的なGCを採用したLISP
を使うのがいいと思う。
(ちなみにlibguileはたしか保守的GCを使ってない。)
gaucheは下のBoehmの保守GCを改造して使ってたと思う。
有名な保守的GC
http://www.hpl.hp.com/personal/Hans_Boehm/gc/
0074
NGNG詳しいレスありがとうございます。
GC 周りでは気をつけなければならないことが多そうですね。
注意深くやりたいと思います。
もう少し借用させて頂けそうな lisp / scheme の実装を
探してみたいと思います。
問題の本質とは関係ありませんが、
お偉方は Windows しか使えないので最終的には Win32 な
バイナリを吐く必要があるのも、困難な点の一つです。
Gauche / Guile は cygwin 環境下で動いているようです。
さすがに Native Win32 環境下では難しそうですね。
自分のマシンは Linux (Debian GNU/Linux 3.0r1) と IBM AIX 5L です。
AIX は借り物ですけど。
007572
NGNG0076デフォルトの名無しさん
NGNGlibguile か librep がいいんじゃない。
この2つははじめから組み込みを意識して作られていますから。
C への組み込み方法がドキュメントに載ってるよ。
007772ではないです
NGNG昔のGuileは激遅だったので。
0078デフォルトの名無しさん
NGNG0079デフォルトの名無しさん
NGNG組み込みならSIODも軽くていいかもね。
0080デフォルトの名無しさん
NGNGGuileとSCMは枝分かれしたのがずいぶん前だからね。
一本化ってできなかったのかなー
0081デフォルトの名無しさん
NGNG0082デフォルトの名無しさん
NGNG0083デフォルトの名無しさん
NGNG/ †|. ┃ < 我が偉大なる神 Emacsに祈りを捧げよ
|`ー┐λ \_____________
|::.ヽ丿.┃
|::. |.| ┃
ノ::::...ノ | ┃
 ̄` ̄ ̄ ̄´ ̄ ̄
0084デフォルトの名無しさん
NGNG再帰使ったほうがLispっぽいと思う。
(define (square x) (* x x))
(define (prime? x ls)
(cond ((null? ls) #t)
((zero? (modulo x (car ls))) #f)
((> (square (car ls)) x) #t)
(else (prime? x (cdr ls)))))
(define (add-prime x ls)
(if (prime? x ls) (append ls (list x))
ls)))
(define (make-prime upper)
(if (< upper 2) '()
(add-prime upper (make-prime (- upper 1)))))
0085デフォルトの名無しさん
NGNGだからじゃないか?
0086デフォルトの名無しさん
NGNGこの本に関して質問です。
原書と翻訳版とでページ数がかなり異なりますが、何か理由があるのでしょうか?
(どこかのしょうが削られているとか、、、)
それと、日本語訳はうわさどおり、読みにくいものなのでしょうか?
0087デフォルトの名無しさん
NGNGSICP第2版は翻訳版の方が紙がだいぶ大きい。
(版形っていうんだっけ?)
0088デフォルトの名無しさん
NGNGhttp://science.2ch.net/test/read.cgi/rikei/1046173479/l50
0089デフォルトの名無しさん
NGNG(if (eq? status :next)
(process-rule config mail field-name
(cdr patterns) command param)
:last))))
のように :next とか :last とかあるんですがこれって何か意味があるんでしょ
うか? ソースや info 見ても手掛かりを見つけられなかったのですが。。。
0090デフォルトの名無しさん
NGNG0091デフォルトの名無しさん
NGNG単純に symbol として使っているみたいですね。if 文が keyword 引数を取っ
ているのかと勘違いしてました。
0092デフォルトの名無しさん
NGNG0093デフォルトの名無しさん
NGNG0094デフォルトの名無しさん
NGNG0095デフォルトの名無しさん
NGNGできるだけWeb上に情報が多い奴がいいんだけど
0096デフォルトの名無しさん
NGNG2) Emacs
3) Common Lisp
0097デフォルトの名無しさん
NGNGquoteやlambda辺りがちゃんとしてれば、何でもいい気がする。
結局は何からスタートしても、大抵のソースは慣れで読める様になるし。
0098デフォルトの名無しさん
NGNG0099デフォルトの名無しさん
NGNGScheme: Gauche
Common Lisp: CLISP, CMU Common Lisp
あたりか? emacs + ilisp と組み合わせて使うのがお勧めだ。
金出す気があるなら、黙って Allegro Common Lisp を買え。
0100デフォルトの名無しさん
NGNGPersonal版とか作って欲しい
0101デフォルトの名無しさん
NGNGhttp://www.pink-angel.jp/betu/linkvp/linkvp.html
■ このスレッドは過去ログ倉庫に格納されています