[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2chのread.cgiへ]
Update time : 05/09 23:20 / Filesize : 244 KB / Number-of Response : 1002
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

【入門】CommonLisp【質問よろず】



1 名前:デフォルトの名無しさん mailto:sage [04/11/25 21:48:56]
lispを触ってみたい入門者のQ&A
初心者のQ&A
本スレでは恥ずかしくて聞けない人のQ&A
本スレは高度すぎて割り込めない人のQ&A
linuxでなくてwindowsでやりたいんですが・・・Q&A
lispを使用してC#やJAVAの代替にするための方法(おまけ)

ま、ゆっくりたりましょう。

「いいものの本質は、いかなる時代においても変わらない」byパワーズ

730 名前:デフォルトの名無しさん [2005/11/01(火) 07:05:14 ]
>>726
主観なわけねーじゃん。ばっかじゃないの

731 名前:デフォルトの名無しさん mailto:sage [2005/11/01(火) 10:46:25 ]
>>730
基準をしめさない場合、という条件でどこをどうやったら主観じゃなくなるのだ?

732 名前:デフォルトの名無しさん [2005/11/01(火) 11:35:21 ]
>>730の次のレスは「あまりの恥ずかしさに煽って逃げる」これ。

733 名前:デフォルトの名無しさん mailto:sage [2005/11/01(火) 12:11:48 ]
>>729
コーマンリスプなんてどうだ。
www.cormanlisp.com/

734 名前:デフォルトの名無しさん mailto:sage [2005/11/01(火) 12:54:47 ]
非商用なら無料なんだ。
corman はチェックしてなかったな。結構寛容なライセンスだね。

735 名前:デフォルトの名無しさん mailto:sage [2005/11/01(火) 13:34:49 ]
どうせポップアップウィンドウに


        t


とか表示させるだけだろ

736 名前:デフォルトの名無しさん mailto:sage [2005/11/02(水) 00:11:24 ]
ロジャーコーマンは腹出過ぎ。

737 名前:デフォルトの名無しさん mailto:sage [2005/11/02(水) 00:30:12 ]
Corman Lispって日本語通るようになったのかな?
要望あったら聞くよーてなメールも送ってきたくらい個人商店ぽいので
誰か日本で使い物になるなら買うから是非頼むといってやれば
なんとかしてくれるかも。


738 名前:デフォルトの名無しさん mailto:sage [2005/11/02(水) 00:31:55 ]
[CommonLisp とコンパイル - コンパイラスクリプトスレからの続き]

つまり Lisp においては「x に 2 を倍する」プログラムはデータ構造 (* x 2) と表現できるわけだ.
(もし熱烈な C/C++ & XML ファンならこの構文木をつくってよう)
さて,ここで操作する.もし「x に 2 を足す」にしたいと思ったとする.
これは Lisp では (+ x 2) と表現できる.インタプリタ上ならば

> code
(* x 2)
> (setf (car code) '+)
(+ x 2)

となる.(もし熱烈な C/C++ & XML ファンなら,同様の操作を表現してみよう )
さて,これをコンパイルしてみよう.このとき,コードは引数 x を一個とるわけなので関数で
ラップする.これは (lambda (x) (+ x 2)) と書ける.Common Lisp の compile メソッドを使うと

> (compile nil '(lambda (x) (+ x 2)))
#<compiled-function>

これでコンパイルされたコードが得られる.もしネイティブコードコンパイラ
を使っているならネイティブコードが得られる.確認したければ,すかさず

> (disassmble *)

とうてばよい.このようにコンパイラは Lisp 環境と統合されており,利用者が気軽に使える存在なのである.
(もし熱烈な C/C++ & XML ファンなら,表現した構文木をコンパイルしてからディスアセンブルしてみよう)




739 名前:デフォルトの名無しさん mailto:sage [2005/11/02(水) 02:59:33 ]
C で同じことやりたいなら cc -fpic 実行して dlopen するだけじゃない?
KCL 系だってそうやってんだし。

740 名前:デフォルトの名無しさん mailto:sage [2005/11/03(木) 13:38:27 ]
コンパイラスレのからの客人?でも KCL とかっていうことはこのスレの人かな?
まぁ,Lisp では手軽さがケタ違いです.C を直接さわったら操作するたびに,
C のソース <--> データ構造 を変換しなきゃいけないのですが,逆に S 式な
ら変換する必要はない.

まぁ,どうしてもと言うなら C っぽく入力列 (S 式風味) をパースしてコンパ
イル,実行という手順でもいい.例として forth 風味の言語を考えよう.

def double
2 *
end
def quad
double double
end
def fib
dup 1 > if
dup 1 - fib swap 2 - fib +
end
end
reset
5 quad fib print

これでフィボナッチ数列の 20 番目を表示したいとする.大袈裟に言うと,
たとえば gcc のバックエンドにこの言語のフロントエンドを作るという事になる.
これは手軽か?(まぁ,手間以外の難易度は Lisp だろうとなんだろうと簡単なんだけど…)

741 名前:デフォルトの名無しさん mailto:sage [2005/11/03(木) 13:41:51 ]
まずパッケージと,基本オペレータを準備する.まぁ,とりあえずスタックはリストで
表現し,スタックのクリア,表示,スタックトップの入れ替え,コピーという基本操作を
使う.算術演算子も lisp のやつを流用する.と,オペレータの定義はこうなる.

(defpackage :mini-forth (:use :cl) (:export #:parse #:run #:forth) (:shadow #:print #:pop #:push #:+ #:- #:* #:/ #:> #:< #:= #:>= #:<=))
(in-package :mini-forth)
(defparameter *stack* nil)
(defmacro defword (word args &body body)
(let ((binds (loop for v in args collect (list v '(cl:pop *stack*)))))
`(defun ,word () (let* ,binds ,@body))))
(defmacro default-operators (&rest operators)
`(progn
,@(loop for op in operators
collect `(defword ,op (x y) (cl:push (,(intern (symbol-name op) :common-lisp) y x) *stack*)))))
(defword print () (loop for e in *stack* for i from 0 do (format t "~&~4D: ~A~%" i e)))
(defword reset () (setf *stack* nil))
(defword swap (x y) (cl:push x *stack*) (cl:push y *stack*))
(defword dup (x) (cl:push x *stack*) (cl:push x *stack*))
(default-operators + - * / > < = >= <=)


742 名前:デフォルトの名無しさん mailto:sage [2005/11/03(木) 13:43:17 ]
あとは入力をパース(手抜き)する.

(defun parse (program &optional (ast nil) &aux (word (first program)))
(cond ((or (null program) (eq word 'end) (eq word 'else))
(values (nreverse ast) program))
((or (stringp word) (numberp word))
(parse (cdr program) (cons `(cl:push ,word *stack*) ast)))
((eq word 'if)
(multiple-value-bind (tree next)
(parse (cdr program))
(multiple-value-bind (tree2 next2)
(parse (if (eq (car next) 'else) (cdr next) next))
(parse (cdr next2) (cons `(if (cl:pop *stack*) (progn ,@tree) (progn ,@tree2)) ast)))))
((eq word 'def)
(multiple-value-bind (tree next)
(parse (cddr program))
(parse (cdr next) (cons `(defword ,(cadr program) () ,@tree) ast))))
(t (parse (cdr program) (cons `(,word) ast)))))

で,得られた S 式をコンパイル(Lisp コンパイラを流用)して実行.

(defun run (program)
(let ((tree (cons 'progn (parse program))))
(funcall (compile nil `(lambda () ,tree)))))


743 名前:デフォルトの名無しさん mailto:sage [2005/11/03(木) 13:51:52 ]
この forth もどきにさっきのプログラムを喰わせる.

MINI-FORTH> (run '( [さっきのプログラム] ))
0: 6765

計算できたッ!! ついでにこの簡易言語で定義された関数 fib とかはLisp コン
パイラでコンパイルされている.つまりネイティブコードコンパイラを使って
いればネイティブコードが得られる.

MINI-FORTH> (disassemble 'fib)
; 09AB6F66: 8BD4 MOV EDX, ESP ; no-arg-parsing entry point
; 6F68: 83EC0C SUB ESP, 12
; 6F6B: 8B05886DAB09 MOV EAX, [#x9AB6D88] ; #<FDEFINITION object for DUP>
; 6F71: 31C9 XOR ECX, ECX
; 6F73: 896AFC MOV [EDX-4], EBP
; 6F76: 8BEA MOV EBP, EDX
; 6F78: FF5005 CALL DWORD PTR [EAX+5]
; 6F7B: 8BE3 MOV ESP, EBX
[...]

…というような説明でどうかな?

744 名前:デフォルトの名無しさん mailto:sage [2005/11/04(金) 01:46:00 ]
む、つまりこれはforthのトランスレータ?
結構短く書けるもんだね。


ところで↓のスレとここはどう使い分けてるの?
スレタイ同じだから混乱するぜ。

【一日】CommonLisp【一門】
pc8.2ch.net/test/read.cgi/tech/1106587515/


745 名前:デフォルトの名無しさん mailto:sage [2005/11/04(金) 02:05:48 ]
スレタイが違うので混乱はしない。

746 名前:デフォルトの名無しさん mailto:sage [2005/11/04(金) 04:54:18 ]
>>744 宣伝乙

747 名前:デフォルトの名無しさん mailto:sage [2005/11/08(火) 00:07:54 ]
すいませんが、解の公式を使って二次方程式の解を出す関数の定義の仕方を
教えてください。どうも、±がどう表現していいか分からなくて…。
よろしくお願いします。

748 名前:デフォルトの名無しさん mailto:sage [2005/11/08(火) 00:09:53 ]
↑宿題?



749 名前:デフォルトの名無しさん mailto:sage [2005/11/08(火) 00:13:37 ]
たぶん。

>>747
> ±がどう表現していいか
思考様式の変革が必要だと思う

750 名前:デフォルトの名無しさん mailto:sage [2005/11/08(火) 00:27:29 ]
多値で返すとか、リストで返すとか好きなやり方選べばいいんでないの。

751 名前:デフォルトの名無しさん mailto:sage [2005/11/08(火) 00:30:53 ]
つうかやる気ねーんだろ?授業をちゃんと聞いてなかったみたいだし。「

いつも思うんだけどなんで〜日までの宿題ですやる気ないんで教えてください、
って素直に言えないのかね?まさか宿題である事を隠してるつもりなのか?なら
人をナメすぎだな。ほらこれを提出してごらん。俺は親切だから罠をしかけたりしないよ。

(defun solve (a b c)
"ax^2 + bx + c = 0"
(let ((A (- b))
(B (sqrt (- (* b b) (* 4 a c))))
(C (* 2 a)))
(values
(/ (+ A B) C)
(/ (- A B) C))))


752 名前:デフォルトの名無しさん mailto:sage [2005/11/08(火) 00:39:19 ]
漏れのエスパー能力によると>>747が求めているプログラムは Lispではないな。

753 名前:デフォルトの名無しさん mailto:sage [2005/11/08(火) 00:41:43 ]
>>750
±にあたるものが存在してないのが問題の山なのかも。
存在してても使いにくそうだけど。

754 名前:デフォルトの名無しさん mailto:sage [2005/11/08(火) 05:01:13 ]
そういえば複素数も扱えるんだよな
でも>>751はaが非零でないことくらいはチェックした方がいいと思う

755 名前:747 mailto:sage [2005/11/08(火) 22:31:36 ]
どうもどうも。おかげさまで解決しました。
視点を変えました。>>751のプログラムもある意味参考にさせていただきました。

756 名前:デフォルトの名無しさん mailto:sage [2005/11/08(火) 22:55:05 ]
>>755
変数名変えた程度で提出してそうだな.


757 名前:デフォルトの名無しさん mailto:sage [2005/11/09(水) 10:52:42 ]
数年前からWIREDで学生のレポートのコピーと教授のいたちごっこが記事になっ
たりとかしてるけど、いっこうに解決してないよな、この問題。
数ヶ月か一年おきくらいの間隔で問題にした記事を見てる気もする。
Comm. ACMの先月号でも Academic Dishonesty and the Internet つって
とりあげてるし。なんでもclass project(宿題というよりはレポートに相当か)
を外注に出す奴までいたそうだ。何のために大学に来たのかと小一時間(ry

そういう学生のイカサマは許さんと頑張ってくれる教官は日本の大学にも
いるんだろうか。なんかそんなやつ放っとけ面倒だと知らんぷりになりそうなんだが。


758 名前:デフォルトの名無しさん mailto:sage [2005/11/09(水) 10:58:03 ]
今後の(学内or社会人)人生で困るならその程度だし困らないならそれもまたその程度。



759 名前:デフォルトの名無しさん mailto:sage [2005/11/09(水) 11:26:00 ]
企業活動もアウトソーシングに頼る時代なんだから別にいいんじゃない?
卒論だって金でやってもらえる時代ですよ。
教官だって普段の学生の様子を見てれば、まじめにやってるやつと
金で解決したやつの違いくらいわかるでしょ。わからなかったり、
わかっても注意しなかったら、その程度の教官ってこと。

でも>>747はこんなとこで聞く前に、教官に質問しろ。
払った授業料以上のものを貰わないともったいないぞ。
質問しても答えてもらえなかったらダメな先生に当たったと諦めろ。

760 名前:デフォルトの名無しさん mailto:sage [2005/11/09(水) 11:36:09 ]
教官としてはどうでもいいんだが。精査したり注意してやる義理もない。

761 名前:デフォルトの名無しさん mailto:sage [2005/11/09(水) 11:47:02 ]
無駄なレポート書く暇あったら自分の勉強したいよ

762 名前:デフォルトの名無しさん mailto:sage [2005/11/09(水) 11:50:21 ]
どうでもいいならレポートや宿題なんて出さないで欲しいよな。

763 名前:デフォルトの名無しさん mailto:sage [2005/11/09(水) 12:01:17 ]
>>762
君たちにとって無駄でどうでもいいのなら提出しなければいい。

764 名前:デフォルトの名無しさん mailto:sage [2005/11/09(水) 12:03:45 ]
単位を貰うために、最小限の労力とリスクで、レポートを仕上げる

765 名前:デフォルトの名無しさん mailto:sage [2005/11/09(水) 12:30:01 ]
単位をもらうためならそれでいいよな。
単位に値しないなら労力を割かないほうがよい。
単位取得を重要視するなら学生側でそれくらいのマネジメントくらいしろ。

766 名前:デフォルトの名無しさん mailto:sage [2005/11/09(水) 12:33:44 ]
やっぱ宿題には黙って答えだけだな。
余計な事言うから >>757-765 のような板違い連中を釣り上げちゃう。

767 名前:デフォルトの名無しさん mailto:sage [2005/11/09(水) 20:47:57 ]
自分の望むレスだけしか見たくないんですか?
答えだけ欲しければ宿題スレへいけ。

768 名前:デフォルトの名無しさん mailto:sage [2005/11/09(水) 21:07:39 ]
じゃあ教授と学生のいたちごっこを見事な再帰で表現>>768



769 名前:デフォルトの名無しさん mailto:sage [2005/11/09(水) 21:51:43 ]
うちの研究室、プログラムの類似度判定やってた。
教授が集めてきた学生たちのレポートを実験の対象にしてた。
結果、年度・言語に関わらず、2〜3の大きいグループができると判明した。


770 名前:デフォルトの名無しさん mailto:sage [2005/11/13(日) 01:34:50 ]
以下のようなことを実行するにはどうすればいいのでしょうか?

(setf a '(+ 1 2))
(setf b '(+ 3 4))
(setf c '(- b a))

(myfunc c)
4

あるリストファイルを読んで内部にツリー構造をつくり、
それを一気に実行することを望んでいます。
具体的には、内部で以下のように展開してから実行したいと
思っています。

(eval '(+ (+ 1 2) (+ 3 4)))

何かヒントだけでも頂けたら嬉しいです。どうぞよろしくお願い致します。
m(_ _)m

771 名前:デフォルトの名無しさん mailto:sage [2005/11/13(日) 01:58:53 ]
>>770
こんなんでどうだ。
(defun expand (x)
 (cond ((symbolp x) (expand (symbol-value x)))
     ((numberp x) x)
     ((listp x) (cons (car x) (mapcar #'expand (cdr x))))
     (t (error "unknown type: " x))))

(defun myfunc (x) (eval (expand x)))

772 名前:デフォルトの名無しさん mailto:sage [2005/11/13(日) 02:45:02 ]
変った宿題だな。とりあえず読み込みたいリストファイルの例を示して。
それによって難易度が違うんで。

(+ 1 2)

なのか

(setf a '(+ 1 2))

なのか。使う関数は +, *, -, / なのか Lisp のフル機能の使うのか,など。


773 名前:770 mailto:sage [2005/11/13(日) 12:58:24 ]
>>771
ご回答ありがとうございます。m(_ _)m
採用させていただきます。
初心者のくせに変にマクロに拘ってハマってました・・・

>>772
自主制作ソフトに必要な機能なんです。(趣味です)
リストですが・・・

vA_out 1
vB_out 2
vC_out 3
vD_out 4
fPlus1_in vA_out
fPlus1_in vB_out
fPlus1_out fMinus1_in1
fPlus2_in vC_out
fPlus2_in vD_out
fPlus2_out fMinus1_in2
fMinus1_in1 fPlus1_out
fMinus1_in2 fPlus2_out
fMinus1_out retrun

を予定してます。ちょっと冗長ですが・・・。
関数は将来的に増える予定です。Lispのフル機能を使っていきたいと思います。


774 名前:770つづき mailto:sage [2005/11/13(日) 13:03:05 ]
>>773のリストを読み込んで、内部で>>770のようなツリーを組み立て
最後に実行して答えを返す予定です。

>>772
問題にご興味を持っていただきありがとうございました。
もし宜しければ、ヒントなど頂けたらと思います。

775 名前:デフォルトの名無しさん mailto:sage [2005/11/13(日) 13:54:45 ]
なるほど S 式じゃないプログラムリストって意味だったのか。
このプログラムの動作はどんな動きをするんかな?
今はこのファイルを Lisp のリスト形式 (S式) に手動で変換してるんだよね?

たとえばプログラム言語としての機能を持たせたいなら(条件分岐とか)
>>740 からのレスが参考になるかもしれないし、このリストをもう少し S 式風
にカスタマイズできるなら read 系の関数を使って字句解析を省略できる。


776 名前:770 mailto:sage [2005/11/14(月) 20:37:38 ]
>>775
実はあるプログラム言語をパクろうと思ってます。(^^;
もちろん、自分なりの発展はさせるつもりですが。

>今はこのファイルを Lisp のリスト形式 (S式) に手動で変換してるんだよね?

そうです。

>たとえばプログラム言語としての機能を持たせたいなら(条件分岐とか)
>>>740 からのレスが参考になるかもしれないし、このリストをもう少し S 式風

早速参照してみます。

>にカスタマイズできるなら read 系の関数を使って字句解析を省略できる。

あまり複雑なS式はむりですが、出力の形式を弄る程度でできるS式には
しようと思ってます。
(setf vA 1) ←この程度ですが・・・(^^;


また、質問させていただくかもしれません。今回はアドバイスありがとうございました。

777 名前:デフォルトの名無しさん [2005/11/15(火) 17:38:38 ]
770 とは別人なのですがついでに聞かせて下さい。
Lisp コードの中にいわゆる普通の infix の数式を入れて書きたいと思ったら
どういう手が考えられるでしょうか。
つまりこんな感じで出来ればいいんですけど
(defun f (x y) ( + 1 y %%% x^2+y^3 %%% ))
プリプロセッサを通すとかじゃなくてやろうと思ったらどうしますか。

778 名前:デフォルトの名無しさん mailto:sage [2005/11/15(火) 17:57:12 ]
groups.google.com/group/comp.lang.scheme/msg/1f15027fb2a1bc07
groups.google.com/group/comp.lang.scheme/msg/047ee341f2c30c85




779 名前:777 [2005/11/15(火) 18:22:40 ]
本当にありがとう。やっぱ reader macro で出来るんですね。使います。

780 名前:デフォルトの名無しさん mailto:sage [2005/11/15(火) 23:08:40 ]
使うのかよ!

781 名前:デフォルトの名無しさん mailto:sage [2005/11/16(水) 12:42:27 ]
reader macroのわかりやすい解説ってないでしょうか?



782 名前:デフォルトの名無しさん mailto:sage [2005/11/16(水) 13:11:18 ]
>>781
なんだかんだ言って CLtL2 が一番わかりやすかった。w

783 名前:デフォルトの名無しさん mailto:sage [2005/12/06(火) 16:53:20 ]
規格書は紙で持っとくと、初心者レベルの時でも結構役に立つよ。
ansiの店で$18で売ってます。

784 名前:デフォルトの名無しさん mailto:sage [2005/12/07(水) 10:30:59 ]
本スレのCLOSの話題について行けないバカな漏れに
MOPのなんたるかから教えて下さい。

785 名前:デフォルトの名無しさん mailto:sage [2005/12/07(水) 13:04:06 ]
>>784
AMOP読め。または図書館へ行って昔のbit別冊を探せ。

786 名前:デフォルトの名無しさん mailto:sage [2005/12/07(水) 19:49:24 ]
AMOPって今でも、新刊買えますか?
TinyCLOSは、いじってて面白かったなぁ。またいじりたいなぁ。
Kiczalesは、Aspect orientedなる概念を提唱して、ずぅーっと
遥か彼方まで行ってしまったね。
Kiczalesのアイディアを具体化しようとしている連中は、なぜか
Java、Rubyにご執心みたいだけど。

787 名前:デフォルトの名無しさん mailto:sage [2005/12/07(水) 20:12:37 ]
>>786
買えるよ。日本アマゾンは3〜5週間だが、USアマゾンなら24時間以内発送。
www.amazon.co.jp/exec/obidos/ASIN/0262610744
www.amazon.com/exec/obidos/ASIN/0262610744

788 名前:デフォルトの名無しさん mailto:sage [2005/12/07(水) 20:15:14 ]
On Lisp邦訳の次はAMOP邦訳に挑戦して頂きたい。>野田さん



789 名前:デフォルトの名無しさん mailto:sage [2005/12/07(水) 22:00:57 ]
翻訳終わる頃には、ネタとして終わってる悪寒。
最先端とはいわないまでも、半分より前、できるなら先頭グループ
を走りたいなら、原著は避けられないと思うよ。
まぁ、かくいう俺も日本語と英語しかわからないのだけどな。

790 名前:デフォルトの名無しさん mailto:sage [2005/12/07(水) 22:42:59 ]
先頭グループもなにも、MOPやCLOSはかなり前からあるんじゃないの?

791 名前:デフォルトの名無しさん mailto:sage [2005/12/08(木) 02:30:22 ]
>>786
そうか? AMOP からさほど進化したとは思えないんだが…


792 名前:デフォルトの名無しさん [2005/12/14(水) 23:14:08 ]
clisp上でMAXIMA使いたいんですが解説サイトとかありませんか?
最新版に対応しているところが見つからないんですが

793 名前:デフォルトの名無しさん mailto:sage [2005/12/20(火) 01:46:09 ]
climacs に期待...

794 名前:デフォルトの名無しさん mailto:sage [2005/12/20(火) 19:14:13 ]
Schemacsとか作る奴はおらんのか?

795 名前:デフォルトの名無しさん mailto:sage [2005/12/20(火) 23:38:21 ]
climacs は SBCL ありきだからなぁ。Scheme で Native Thread が使えて
ネイティブコンパイラな実装があれば話は別だが。

796 名前:デフォルトの名無しさん mailto:sage [2005/12/21(水) 00:26:33 ]
climacsも概ね動くようになったところで飽きて放置に100りちゃーど

797 名前:デフォルトの名無しさん mailto:sage [2005/12/21(水) 07:51:11 ]
>>794
ngscmというものならある。

798 名前:デフォルトの名無しさん mailto:sage [2005/12/23(金) 05:33:14 ]
シンボルを全部日本語にして日本語Lispとして売り出す(笑)



799 名前:デフォルトの名無しさん mailto:sage [2005/12/23(金) 07:25:40 ]
>>798
日本語Lispなら、S式はリストの先頭でなく末尾を関数とみなすようにしないと。

800 名前:デフォルトの名無しさん mailto:sage [2005/12/23(金) 09:57:03 ]
(甲 3 とする)
(乙 5 とする)

(甲 乙 対にする) => (3 . 5)

((甲 2 加える) 乙 乗ずる) => 25

助詞が欲しいな。


801 名前:デフォルトの名無しさん mailto:sage [2005/12/23(金) 10:13:37 ]
もともとのLispも英文にはなってないんだから、
日本語Lispといっても別に、その辺まですり合わせなくていいんじゃないかな。

802 名前:デフォルトの名無しさん mailto:sage [2005/12/23(金) 13:05:23 ]
>>799-800
括弧を取ればそのままFORTHになるという利点(?)があるな。

803 名前:デフォルトの名無しさん mailto:sage [2005/12/23(金) 13:54:53 ]
それだったら最初から Forth の方が。
つまり GikoForth なわけですが。

804 名前:デフォルトの名無しさん mailto:sage [2005/12/23(金) 19:59:15 ]
(おぼえる かいじょう (い)
  「0から い までかけあわせる」
  (もしも (ぜろか い)
    1
    (かける い (かいじょう (いちひく い)))))

805 名前:デフォルトの名無しさん mailto:sage [2005/12/23(金) 20:28:09 ]
(いれる ●にわとり 「こけこっこー」)
(いれる ●ねこ 「にゃぁにゃぁ」)
(いれる ●ぶた 「ぶーぶー」)

(みる ●にわとり)
→ こけこっこー

806 名前:デフォルトの名無しさん mailto:sage [2005/12/24(土) 01:10:35 ]
SBCL の Win32 ポートがいよいよマージされるみたいだな。

sourceforge.net/mailarchive/message.php?msg_id=14275606

;; Macho のアーカイブ止まっちゃったのか。

807 名前:デフォルトの名無しさん mailto:sage [2005/12/26(月) 22:08:00 ]
>>805
carとかcdrとかcdadarとかはどうやって表現するんだ。

808 名前:デフォルトの名無しさん mailto:sage [2005/12/27(火) 01:04:54 ]
car ⇒ 住所登録所の内容
cdr ⇒ 値登録所の内容
cdadar ⇒ 住所の値の住所の値登録所の内容



809 名前:デフォルトの名無しさん mailto:sage [2005/12/27(火) 01:47:02 ]
car => これ
cdr => それ
cdadar => そこそこれ

810 名前:デフォルトの名無しさん mailto:sage [2005/12/27(火) 01:55:43 ]
car/cdr は箱(コンスセル)から要素を取り出す操作だから、

car: とりだす
cdr: つぎをとりだす
cdadar: つぎのまえのつぎのまえをとりだす

関数は動詞且つ和語で統一したい所だけど、苦しいかな...

811 名前:デフォルトの名無しさん mailto:sage [2005/12/27(火) 02:26:21 ]
>>809
それイイネ

812 名前:デフォルトの名無しさん mailto:sage [2005/12/27(火) 10:26:20 ]
>>809
anaphoric ifのitはどうすんだ


813 名前:デフォルトの名無しさん mailto:sage [2005/12/27(火) 11:57:15 ]
>>812
「あれ」

814 名前:デフォルトの名無しさん mailto:sage [2005/12/30(金) 19:42:32 ]
clozure.com/cgi-bin/viewcvs.cgi/ccl/ChangeLog?rev=HEAD&cvsroot=Bleeding-edge&content-type=text/vnd.viewcvs-markup

x86 の文字がちらほら見えるけど、OpenMCL も x86 に移植されるみたいだね。
素晴らしい。

815 名前:デフォルトの名無しさん [2006/01/09(月) 22:24:16 ]
lispで作った関数なんかは、何処に保存されてるのでしょうか?
lispのコードをいじる課題が出たのですが、
コードの保存を自分でやらなきゃならなくなって困ってます。

816 名前:デフォルトの名無しさん mailto:sage [2006/01/09(月) 22:52:09 ]
教官に聞け

817 名前:デフォルトの名無しさん [2006/01/09(月) 22:59:50 ]
それを見つけるのが課題。。

818 名前:デフォルトの名無しさん mailto:sage [2006/01/10(火) 10:08:05 ]
「エディタで新規にファイル作ってその中に書け」が答のような気もする

っていうかLisp関係ないな
対話的にしかLispを使わない授業だったと推測するが



819 名前:デフォルトの名無しさん mailto:sage [2006/01/10(火) 14:24:33 ]
>>815
それ、Smalltalk使いの私も訊きたいです。

Smalltalkでは、関数(メソッド)が自身のソースを属性として持っていて比較的
容易にたぐれるんですが、Lispでは環境内でのソース管理はどうなっているんでしょうか?

818の行間を読むと、対話的に作られた場合、関数は自身にかかわるソース情報を
(デコンパイルなどで特殊な方法で別途得る以外)他の一般的な言語と同様、
いっさい失ってしまうのが当り前…というような印象を受けるのですが。

820 名前:デフォルトの名無しさん mailto:sage [2006/01/10(火) 22:47:35 ]
>>819
ANSI CL の範囲では無いと思う。ANSI Smalltalk もソースコードの管理までは
規定してないでしょ?

821 名前:デフォルトの名無しさん mailto:sage [2006/01/10(火) 23:15:09 ]
function-lambda-expression()
lambda 式が取れなくても規格合致だけど

822 名前:デフォルトの名無しさん mailto:sage [2006/01/11(水) 06:36:04 ]
>>819
「関数」はソース+定義環境だから、ソースだけ取れてもそれを保存
するみたいなことには向かないだろうね。デバッグの助けにするだけなら
いいだろうけれど。

(let ((n 0))
(defun incr (k)
(incf n k)))

なんてした時に、incrのソースはどこからどこまで? ってことね。


823 名前:デフォルトの名無しさん mailto:sage [2006/01/11(水) 16:34:30 ]
なるほど。Smalltalkのブロック(クロージャ)のソースは、メソッド(関数)のそれと
違って容易にはたぐれない…のと状況は似ていそうですね。ありがとうございます。

824 名前:デフォルトの名無しさん mailto:sage [2006/01/11(水) 17:02:36 ]
www.shiro.dreamhost.com/scheme/trans/beating-the-averages-j.html
これ読んでLisp使いたくなりました。
入門サイト教えろこの野郎m(__)m

825 名前:デフォルトの名無しさん mailto:sage [2006/01/11(水) 18:29:40 ]
>>824
ぐぐれこの野郎(^^)

826 名前:デフォルトの名無しさん mailto:sage [2006/01/11(水) 18:41:45 ]
>>824
www.geocities.jp/m_hiroi/xyzzy_lisp.html
xyzzy向けの内容が入ってるけど

827 名前:デフォルトの名無しさん mailto:sage [2006/01/11(水) 20:37:58 ]
>>824
ttp://www.h7.dion.ne.jp/~matsu/feature/common-lisp/index.html

日本語のサイトではここが一番良かった。

828 名前:デフォルトの名無しさん mailto:sage [2006/01/13(金) 19:50:45 ]
すまんがLispで生産性があがるってのはどのへんのせいなのでしょうか?
>>824 の本を読んで興味持ったんだけれどよくわからんです。
コンパイル->実行とかの過程も処理対象にできるっていうのはやりようで面白いことできそうかと思ったんですが。
いまはC#つかいなのですが、.NETでのReflection,CodeDOMあたりの機能でしょうか。




829 名前:デフォルトの名無しさん mailto:sage [2006/01/13(金) 20:10:48 ]
いろんな要素が絡んでるから難しいけど。
最近機能が増えた言語や開発環境(なんでもいい)で、これが入って
生産性が上がったなーってもんをリストアップしてみ。
そのリストはLispの生産性の高さの理由のリストとかなり重なると思うよ。



830 名前:デフォルトの名無しさん mailto:sage [2006/01/14(土) 01:43:00 ]
使用者への効果でいうと「マルチパラダイム」が一番大きいと思う.型がない.
手続き型でも関数型でも論理型でも並列型でもオブジェクト指向型でも,それ
に合わせられる.クラスによる分類が向かない分野では,迷う事なくそれ以外
の手法をとれるしね.

マクロによるプログラム変形とかはそういった言語カスタマイズのための道具
で,本当はこの「どんなパラダイムでもどんとこい」というのが最大のメリッ
トだと思う.個人的にはね.






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<244KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef