[表示 : 全て 最新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パワーズ

702 名前:698 mailto:sage [2005/10/21(金) 02:45:04 ]
Planet Lisp行ってきました。
簡単なアナウンスだけ出ててsourceforgeに誘導されてみたらスクリーンショットも
公開されてました。CVS HEADにコードが入っているみたいなのでこれから調査します。

いまはプロトタイピングの段階なので実現可能性の検証が主体です。アルゴリズムの設計と
検証はLispであ〜でもないこ〜でもないやりながら考えた方がお手軽なのですが
プロジェクトの他のメンバがC/C++でコード書いてるので現状は

・Lispでアルゴリズム練る → C++で等価なコードを書いてリポジトリにチェックイン

してます。二度手間でアホらしいんですが最初からC++であれこれ書けないんですよ。
C++の汚さに辟易して大分昔に標準化の動向追いかけるのやめていたこともあって。
で、どうせならLispのコードそのままC/C++に埋め込んじゃうことはできないのかな〜と
たくらんでいるところです。


スレ違いになりますが最近STLやらBoostやらLokiやら勉強してみて驚愕しました。
何であんな大変な思いをしてまでC++使うんですかね・・・不思議でたまらん。

703 名前:デフォルトの名無しさん mailto:sage [2005/10/21(金) 02:54:10 ]
>>702
ずいぶんと怪奇なことになってるよね。>C++
でも、すべてインラインに開いちゃうから確かに速い。
そのかわりコードサイズが大爆発。w

704 名前:デフォルトの名無しさん mailto:sage [2005/10/25(火) 00:24:33 ]
今ポールグラハムのlisp本でお勉強中なのですが、lispでは
soketを開くとかプロセス制御するとか低レイヤな処理をする場合
どーすんのでしょうか。処理系にそうしたライブラリがなかったりする場合は?

705 名前:デフォルトの名無しさん mailto:sage [2005/10/25(火) 00:34:49 ]
socketです。typoっす。すんません。

706 名前:デフォルトの名無しさん mailto:sage [2005/10/25(火) 01:12:37 ]
>>704
どうにもなりません。そういうライブラリが存在するか、ネイティブコードを
呼ぶなどの方法でなんとかできる処理系を選びましょう。

707 名前:704 mailto:sage [2005/10/25(火) 01:53:21 ]
>>706
むぅ。そういうもんなんですか。教えて頂いて有難うございます。
そういったことは一旦置いておくとすると、学習向けに
オススメの処理系があればご教授頂けると助かります。
今のところ本読んでるだけなのですが手続き型が染み付いた頭には
関数プログラミングって難しい…。

708 名前:デフォルトの名無しさん mailto:sage [2005/10/25(火) 02:04:53 ]
>>707
WindowsならCLISP、UNIX系ならSBCLがいいんじゃないかな。
どちらもソケットなどの拡張機能は持っているよ。

709 名前:704 mailto:sage [2005/10/25(火) 02:12:34 ]
>>708
どもです。SBCLっての調べてみます。。

710 名前:デフォルトの名無しさん mailto:sage [2005/10/28(金) 00:10:41 ]
潜水艦から発射するミサイルじゃないの?



711 名前:デフォルトの名無しさん mailto:sage [2005/10/28(金) 00:15:22 ]
>>710
それはSLBM

712 名前:デフォルトの名無しさん mailto:sage [2005/10/28(金) 01:26:06 ]
コンパイラ・スクリプトエンジン相談スレで言語処理系の実装にLispを使うべきだ風な
書き込みを見掛けて興味を持ったのですが、具体的にLispで記述されたコンパイラとかで
参考になりそうなものがあれば教えていただけますか?ソースを見てどんな利点があるのか
比較してみたいです。大昔GCCのソースを眺めたとき内部でS式みたいので木を表現して
いたみたいでしたが、表現形式だけじゃなくて実際に内部でLispプログラムが動いてたり
するんだろか。

713 名前:デフォルトの名無しさん mailto:sage [2005/10/28(金) 03:53:37 ]
かつては MacLisp が Fortran と張り合っていたわけだし,今でも Lisp コン
パイラはほとんど Lisp で書かれているよ.ただ,Lisp 製の ML や C コンパ
イラとかもあるけど,入門で読むのは無理だろう.

利点としてはコンパイラを書く時にモロに Lisp コンパイラの機能がつかえる!!
といっても,何の事か Lisp を知らなければまったくイメージできないかもしれない.
だからまず Lisp を学ぶ必要があるとおもうよ.基礎を一通りやったあと,

groups.google.com/group/comp.lang.lisp/msg/2108939e399c5c4e

とか見て,それでもメリットがわからないようなら Lisp の事は忘れたほうが
いい.合う合わないがあるからね.

714 名前:デフォルトの名無しさん mailto:sage [2005/10/28(金) 20:14:18 ]
MacLispか…研究室の物置に5”FDの認知心理のプログラム群があったなぁ

715 名前:デフォルトの名無しさん mailto:sage [2005/10/30(日) 01:11:05 ]
lispと他のプログラムとの構文とかの対比表ってありませんか?

716 名前:デフォルトの名無しさん mailto:sage [2005/10/30(日) 03:33:47 ]
MacLisp か…今やプロジェクト Mac の Lisp で Macintosh とは関係ないと
言わないと通じない時代かもしれんな…

717 名前:デフォルトの名無しさん mailto:sage [2005/10/30(日) 06:51:32 ]
ttp://kasamatusan.sakura.ne.jp/cgi-bin2/src/ichi14589.jpg.html
(竹内)

718 名前:デフォルトの名無しさん mailto:sage [2005/10/30(日) 11:34:43 ]
>>715 他のプログラム言語,と言いたいのか?具体的には何よ?


719 名前:デフォルトの名無しさん mailto:sage [2005/10/30(日) 14:47:52 ]
>>718
C,C++,java,perl,ruby,python,PHPなどのメジャーな手続き型のどれか

720 名前:デフォルトの名無しさん mailto:sage [2005/10/30(日) 16:39:07 ]
>>719
Lisp プログラマのための Python 入門
www.unixuser.org/~euske/doc/python/python-lisp-j.html
こんな感じ?



721 名前:719 mailto:sage [2005/10/30(日) 16:54:13 ]
>>720
thx!

722 名前:デフォルトの名無しさん [2005/10/30(日) 19:46:03 ]
>>716
Windows上で動く?

723 名前:デフォルトの名無しさん [2005/10/30(日) 19:47:42 ]
lispとjavascriptってどっちが優れていますか?

724 名前:デフォルトの名無しさん mailto:sage [2005/10/30(日) 19:50:17 ]
>>722
PDP-10 とか DEC System 20xx のエミュがあれば。

725 名前:デフォルトの名無しさん mailto:sage [2005/10/30(日) 19:57:22 ]
>>723
javascript は lisp です

726 名前:デフォルトの名無しさん mailto:sage [2005/10/30(日) 23:48:45 ]
煽りにもマジレスしておこうか.

Web のクライアントサイドスクリプティングなら圧倒的に JavaScript が優れている.

逆にサーバーサイドでの処理なら Lisp のほうが良いな.でも君が病的に括弧
を恐れているならどこでも JavaScript のほうが優れていると感じるだろう.
基準をしめさない場合,「どちらが優れていか?」というのは主観的な問題だ
から,人に聞いてもあまり意味がないよ.

727 名前:デフォルトの名無しさん mailto:sage [2005/10/31(月) 03:19:26 ]
>lispと他のプログラムとの構文とかの


728 名前:デフォルトの名無しさん mailto:sage [2005/11/01(火) 00:04:26 ]
>>716 Maclisp と綴って欲しい

729 名前:デフォルトの名無しさん [2005/11/01(火) 06:11:42 ]
Win32バイナリが吐けるLispコンパイラはどこですか?

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になるという利点(?)があるな。






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

前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