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


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

【入門】Common Lisp その3【質問よろず】



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

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

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

(list
(url pc8.2ch.net/test/read.cgi/tech/1101386936/l50 :part 1)
(url pc11.2ch.net/test/read.so/tech/1140012484/l50 :part 2))


669 名前:デフォルトの名無しさん mailto:sage [2007/10/11(木) 08:12:26 ]
便乗質問させてもらうけど

1. ネイティブコンパイラがある(コンパイルした結果が速い)
2. 実行可能形式(EXEやDLL)が作れる
3. マルチスレッドアプリが書ける。
4. (基本的な)CLOS(オブジェクト指向)機能のサポート
5. ソケットインターフェースのサポート
6. 作成したアブリを配布する際のライセンス料が安い、もしくは無料

これらの条件を全て満たすフリー
もしくは比較的安価な商用Lisp処理系と言ったら
やっぱりCorman Lispが一番かな?
ブラットフォームはWindowsが前提です。

670 名前:デフォルトの名無しさん mailto:sage [2007/10/11(木) 09:41:35 ]
Windows ってだけでフリーの実装はほぼ全滅だからね
Lisp で遊ぶなら UNIX

671 名前:デフォルトの名無しさん mailto:sage [2007/10/11(木) 12:25:35 ]
>>669
比較的安価ってだけでLispWorksがそれに該当するんじゃない?
(対象がACLだから安く感じるだけかもしれんが)


672 名前:デフォルトの名無しさん mailto:sage [2007/10/11(木) 13:23:22 ]
商用だとTorrentはまずいかな。

673 名前:デフォルトの名無しさん mailto:sage [2007/10/11(木) 13:46:22 ]
Windowsにポーティング中のSBCLはGCのバグまだ残ってるみたいね。
やる気ないにしても、POSIX以外だとそんなに移植が困難な実装なのかな?
それともWindowsで動かせちゃダメみたいな変な勢力が邪魔してるとか。

674 名前:デフォルトの名無しさん mailto:sage [2007/10/11(木) 18:28:42 ]
>>666
「スマート」の意味がわからん。スタンドアロンバイナリにスマートとそうじゃないものがあるの?
CLISP, SBCL, GCL, ECL, ACL, LispWorks, CormanLisp... スタンドアロンバイナリを生成できないのって ABCL くらいじゃないか。
>>668
SBCL for Win32 系で「ちゃんと動く」とかは言わないほうがいいと思うんだよなー。
use at your own risk なんで初心者に進めると混乱の元じゃないか。
>>669
ECL も忘れないでやってください。
>>673
単に開発者がいないだけ。

675 名前:デフォルトの名無しさん mailto:sage [2007/10/12(金) 01:45:55 ]
俺は OpenMCL をいつか弄りたいと思ってる。スレッド廻りきちんとしてそうだし、フットプリント小さいし。

676 名前:デフォルトの名無しさん mailto:sage [2007/10/12(金) 08:42:10 ]
OS7でMCL使ってたけどあの環境良かったなあ。

677 名前:デフォルトの名無しさん [2007/10/12(金) 20:55:25 ]
2ch発のLisp処理系作ろうぜ



678 名前:デフォルトの名無しさん mailto:sage [2007/10/12(金) 21:17:50 ]
>>677
よし、yacc と PHPで作ろう。


679 名前:デフォルトの名無しさん mailto:sage [2007/10/12(金) 21:34:48 ]
どうせならPHPのみで

↓まかせた

680 名前:デフォルトの名無しさん mailto:sage [2007/10/12(金) 21:56:21 ]
>>676 どんな感じだったの?紹介してくれよ。

681 名前:デフォルトの名無しさん mailto:sage [2007/10/12(金) 21:59:26 ]
LISP作るのにyaccはどう考えても出番が無いだろ

682 名前:デフォルトの名無しさん mailto:sage [2007/10/12(金) 22:07:40 ]
>>681
リーダーマクロとかあるからあった方がよくね?>>yacc
勿論Common Lispをフル実装するんだよ。


683 名前:デフォルトの名無しさん mailto:sage [2007/10/12(金) 22:11:18 ]
yaccで作ったんじゃ動的なリーダマクロにならないじゃん

684 名前:デフォルトの名無しさん mailto:sage [2007/10/12(金) 22:19:27 ]
本スレでやってくれ。

685 名前:デフォルトの名無しさん mailto:sage [2007/10/12(金) 23:31:06 ]
どうせ作るならCommonLISP上位互換にしてください。
このスレではCommonLISPの仕様を満たしてないと
LISPとは認めませんので。

686 名前:デフォルトの名無しさん mailto:sage [2007/10/12(金) 23:33:15 ]
荒しうぜぇ……

687 名前:デフォルトの名無しさん mailto:sage [2007/10/12(金) 23:55:52 ]
自分の気に入らないもの=荒し

やれやれ・・



688 名前:デフォルトの名無しさん mailto:sage [2007/10/13(土) 00:29:21 ]
確かに、やれやれとしか言い様のない妄想等式だね。

689 名前:デフォルトの名無しさん [2007/10/13(土) 00:42:28 ]
言語の実装が入門スレにふさわしいわけかね。まぁ本スレへの誘導も無視してるし、荒しだと思っとくよ。

690 名前:デフォルトの名無しさん mailto:sage [2007/10/13(土) 01:36:29 ]
>>677がここで話振ったんだから奴に任せようぜ

691 名前:デフォルトの名無しさん mailto:sage [2007/10/13(土) 03:21:45 ]
処理系作るってのも立派な入門内容だと思うけどなあ。特にLispの場合は。
動作原理知るために1度は通るでしょ。
>>677の枕詞にCommonLispでもあれば納得したわけ?
つーかこの程度で荒らし認定かよ。
どうせ特定の一人だろうけど、きもすぎるわ。

692 名前:デフォルトの名無しさん mailto:sage [2007/10/13(土) 07:39:45 ]
まぁやるのはいいと思うよ。俺は興味ないけどさ。
具体的な作業をはじめるか、本スレに移動すりゃ文句いわれないんじゃない?

693 名前:デフォルトの名無しさん mailto:sage [2007/10/13(土) 12:40:25 ]
荒らしというほど荒らされてるようにも見えないしなあ。
ぐだぐだ言ってんのは約一名だろうね。

694 名前:デフォルトの名無しさん mailto:sage [2007/10/13(土) 13:56:05 ]
>685が煽りっぽい言葉を書いてるのは確かだろ。
「Common Lisp上位互換」なんて洒落にもならん事を。

>686が「荒らし」と言ってるのはその事だけだろ。

695 名前:デフォルトの名無しさん mailto:sage [2007/10/13(土) 14:18:24 ]
>>686が誰を指して言ったかなんて本人にしかわかんと思うぞ
本人乙

696 名前:694 mailto:sage [2007/10/13(土) 17:26:36 ]
>695
俺は >686本人じゃないけど勝手に自分達が非難されてると解釈して
感情的に反応するより遥かにマシだろ?

697 名前:デフォルトの名無しさん mailto:sage [2007/10/13(土) 17:41:36 ]
>>695
> わかんと思う
どういう意味ですか?



698 名前:デフォルトの名無しさん mailto:sage [2007/10/13(土) 19:37:16 ]
和姦と思う

699 名前:デフォルトの名無しさん mailto:sage [2007/10/14(日) 20:50:25 ]
どうも、誰か一人が自分を攻撃しているというふうに捉えているようだね・・・
どうせならなにか生産的な話題を振って荒しじゃない事を行動で示せばいいのに。
結局 >>686 が正しかったのかね。

700 名前:デフォルトの名無しさん [2007/10/14(日) 22:06:45 ]
2ch発のCommonLisp処理系作ろうぜ

701 名前:デフォルトの名無しさん mailto:sage [2007/10/14(日) 22:59:06 ]
成功したプロジェクトが実は 2ch 発だったってことはよくあるけど、
最初から 2ch 発でって言ってて成功したためしはほとんどないんだよね。

702 名前:デフォルトの名無しさん mailto:sage [2007/10/14(日) 23:22:31 ]
そもそも2ch発なんて名ばかりで実質匿名の個人作業公開オナニーだろ

703 名前:デフォルトの名無しさん mailto:sage [2007/10/14(日) 23:43:58 ]
「2ch発」という言葉にどんな定義を見出しているのかがわからんレスだな。

急に中二病による発作に見舞われて、いつもよりちょっと大きめの打鍵音を立てて
ケツに「公開オナニー」って書き加えた辺りの心の動きだけは、容易に理解できるけど。

704 名前:デフォルトの名無しさん [2007/10/15(月) 05:26:32 ]
出たよ定義厨

705 名前:デフォルトの名無しさん mailto:sage [2007/10/15(月) 11:45:40 ]
とりあえず厨をつけてみたのはわかった。
もうちょっとうまく展開できてたら、苦し紛れがバレなくて済んだかも。

706 名前:デフォルトの名無しさん mailto:sage [2007/10/15(月) 19:48:07 ]
オナニー禁止なんてお前らプロテスタントかっつーのwwww

707 名前:デフォルトの名無しさん mailto:sage [2007/10/15(月) 20:25:09 ]
誰かが俺を攻撃してる!→ファッビョーン→荒れまくり
というのは、以前に本スレでも似たような流れがあったよねぇ……。

ちょっと前に宿題聞いてた人たちは、結局自力で解けたの?



708 名前:デフォルトの名無しさん mailto:sage [2007/10/15(月) 23:06:48 ]
(a (b) c (d (e)) f)

こういうリストがあったとしてeを削除したいんですがどうやったら取り出すことができますか?
関数定義したいんですが。
first secondなどで取り出してるんですがうまくいきません。
アドバイスありましたらよろしくお願いします

709 名前:デフォルトの名無しさん [2007/10/15(月) 23:07:50 ]
>>707
まだ解けないです!

710 名前:デフォルトの名無しさん mailto:sage [2007/10/15(月) 23:29:01 ]
>>708
ほしい結果はこれ?
(a (b) c (d ()) f)

711 名前:デフォルトの名無しさん mailto:sage [2007/10/15(月) 23:48:27 ]
>>708
listっていってもconsセルの集まりなんだから絵を描いて整理してみれば。

712 名前:デフォルトの名無しさん mailto:sage [2007/10/16(火) 09:33:47 ]
まずは簡略化した問題の解を得て、それを元に改良していけばいい。
708ならまずはネストしていないリスト(a b c d e f)からeを除く関数を実装する
あたりから始める。
(目的は近似解を得ることなので、deleteとか使わず自分でやる)

713 名前:デフォルトの名無しさん mailto:sage [2007/10/16(火) 13:20:35 ]
>>710
>>711
>>712
レスd
再帰で何とかできました。


714 名前:デフォルトの名無しさん mailto:sage [2007/10/16(火) 14:27:07 ]
どうやって出来たか教えてー

715 名前:デフォルトの名無しさん [2007/10/16(火) 23:13:07 ]
すいません。質問させてください。
中置演算子で書いた簡単な計算式を解析して実行するプログラムを書こうと思うのですが、
'( 1 + 1 ) ってリストを作って、演算子を取り出しても計算できません。
リストから関数は取り出せないのでしょうか。

(begin
 (define calculate
  (lambda (l)
   ( ((car (cdr l)) (car l) (car (cdr (cdr l)))))))
 (calculate '(1 + 1)))


716 名前:デフォルトの名無しさん mailto:sage [2007/10/16(火) 23:19:42 ]
マクロにするか演算子の値で分岐しないといけないような。
シンボルを識別子とみなして値を取り出すって Scheme でできたっけ?

717 名前:デフォルトの名無しさん mailto:sage [2007/10/16(火) 23:25:04 ]
evalが使えるはず



718 名前:デフォルトの名無しさん mailto:sage [2007/10/16(火) 23:29:54 ]
eval使うまでもなく
(define op-alist `((+ ,+)(- ,-) ...))
みたいなの作っとけば
((cadr (assq (cadr infix) op-alist)) (car infix) (caddr infix))
で呼べるでしょ

719 名前:デフォルトの名無しさん mailto:sage [2007/10/16(火) 23:35:00 ]
CLの人: (funcall イイ。(( は構文と見た目が区別できんからイクナイ。

CL-USER> (defun calculate (lst)
(funcall (second lst) (first lst) (third lst)))
CALCULATE
CL-USER> (calculate '(1 + 1))
2

Schemeの人: (funcall ウザイ。 (( ってかいて括弧の数を数えたい。

720 名前:デフォルトの名無しさん mailto:sage [2007/10/16(火) 23:36:45 ]
やはりschemerの方が知能が上みたいですね。
CommonLispは小手先だけ器用になりそなイメージです。

721 名前:デフォルトの名無しさん mailto:sage [2007/10/16(火) 23:48:11 ]
i < おまえより知能の高い酸のブロッブを知っているぞ

722 名前:デフォルトの名無しさん mailto:sage [2007/10/16(火) 23:51:27 ]
>>719
毎回比較したがるクセは直したほうがいいね

723 名前:デフォルトの名無しさん mailto:sage [2007/10/17(水) 00:10:10 ]
関数定義が
(define hogehgoe
(lambda (x) ...)
ってのがムカツク。引数の数がちょっと見ではわかりづらい。
しかし、(define (hogehoge x) ...)ってのはなんとなく呼び出した結果を定義してるみたいで嫌だ。

(defun hogehoge (x) ...
は良い。hogehoge っていう(関数)シンボルを定義してるんだなーって感じがしてわかりやすい。


724 名前:715 mailto:sage [2007/10/17(水) 00:27:32 ]
回答していただいてありがとうございます。
リストは基本的なデータ型しか入れられないんですね。
だから関数を入れると型が不明のシンボルとして扱われてしまうと。
勉強になりました。ありがとうございます。

725 名前:デフォルトの名無しさん mailto:sage [2007/10/17(水) 00:49:47 ]
>>724
なんかちょっと誤解してるみたいだけど、まあそれはおいといて、
schemeでわかんなくなったら本スレの方においで。
このスレの住人はschemeコンプレックス発動で
それどころじゃないみたいだし。


726 名前:デフォルトの名無しさん [2007/10/17(水) 00:50:29 ]
common lispで
gauche の util.math みたいなのありませんか?
無くても自分で作るんですが。
arnesiのmatcherが惜しい。


727 名前:デフォルトの名無しさん mailto:sage [2007/10/17(水) 00:57:43 ]
質問の仕方がなってないな
gaucheのutil.mathとやらが何を提供してるのかまず書け




728 名前:デフォルトの名無しさん mailto:sage [2007/10/17(水) 01:52:07 ]
どっちが上とか、コンプレックスなんて持ってるのは初学者だけだよ。
ある程度やってる人は、Common Lisp も Scheme わかってる。
どの言語が上とか下とかじゃなくて、用途によって使い分けてるだけ。

729 名前:デフォルトの名無しさん mailto:sage [2007/10/17(水) 01:59:05 ]
>>723
コード中で(func args)っていう呼び出しを思いついたら、
そのまま(func args)をコピってきて(define (func args) 〜)とできるから
むしろ便利だと思うけどな。そもそも構文唐なわけだし。
defunは括弧の位置を修正しなきゃいけない。

730 名前:デフォルトの名無しさん mailto:sage [2007/10/17(水) 02:19:14 ]
>>727
申し訳ない。
ML likeなパターンマッチライブラリで・・・と
clikiに似たのがあったので終了します。
ググっても無くググ子っても見付からないのでつい聞いてしまった。(code search)

731 名前:デフォルトの名無しさん mailto:sage [2007/10/17(水) 10:27:00 ]
>>716
715では無いが>>715をマクロでやろうとするとどうなるんだ?

732 名前:デフォルトの名無しさん mailto:sage [2007/10/17(水) 13:08:09 ]
(defun keisan1 (l)
(list (second l)
(first l)
(third l)))

(defmacro keisan (l)
(keisan1 (second l)))

(keisan '(1 + 1))

733 名前:デフォルトの名無しさん mailto:sage [2007/10/17(水) 21:27:18 ]
(defmacro m (lst)
`(,(second lst) ,(first lst) ,(third lst)))

(m (1 + 2))
=> 3


734 名前:デフォルトの名無しさん [2007/10/18(木) 00:29:10 ]
WINのGCLで一文字入力を待つのはどうやるのでしょうか
CLISPだとread-charでなんとなくできてしまうのですが
GCLだと待ってくれません。



735 名前:デフォルトの名無しさん [2007/10/18(木) 06:38:01 ]
(dotimes (x 10) (progn (princ "hello") (sleep 1) ))
などとやって1秒ごとに表示させたい場合GCLではどうやれば
いいのでしょう。CLISPだとできるのですが
GCLだと10秒後にまとめて表示されてしまうのでうまくいきません。



736 名前:デフォルトの名無しさん mailto:sage [2007/10/18(木) 07:08:21 ]
バッファをフラッシュしなさい。
force-output。

737 名前:デフォルトの名無しさん [2007/10/18(木) 10:45:26 ]
ありがとうございます。
1秒ごとにちゃんと止まりました。

(dotimes (x 10) (progn (princ "hello") (read-char) ))
みたいなことはできないのでしょうか。一個表示するたびに
ユーザがなにかキーを押すまで待たせたいのですが、
LISP的には普通どうやるのでしょうか。
prognはLISP的にはよろしくないのでandをつかえ、と
本に書いてありましたが、
ということはLISPは逐次処理はタブーなのでしょうか・・・?





738 名前:デフォルトの名無しさん mailto:sage [2007/10/18(木) 14:11:17 ]
>>737
> prognはLISP的にはよろしくない
なんでよくないの?

739 名前:デフォルトの名無しさん mailto:sage [2007/10/18(木) 15:43:18 ]
>>737
Common Lisp で文字単位の入力を行う互換性のある方法は無いので、
今のところは read-line を使って Enter 入力待ちで妥協しておくのがいいよ。

ところで今更なぜ GCL?

740 名前:デフォルトの名無しさん [2007/10/18(木) 15:56:13 ]
andにするべきだそうです。

741 名前:デフォルトの名無しさん [2007/10/18(木) 15:58:14 ]
WINだとマルチバイトのファイル名と(SYSTEM)がつかえるのが便利ですね


742 名前:デフォルトの名無しさん mailto:sage [2007/10/19(金) 23:23:50 ]
GCLって今更な処理系なんですか?


743 名前:デフォルトの名無しさん mailto:sage [2007/10/20(土) 00:43:51 ]
うんそうだね

744 名前:デフォルトの名無しさん mailto:sage [2007/10/20(土) 10:46:00 ]
今年の7月まではcommitが続けられてたし、今更って言う程終了したプロジェクトでもないぞ。
確かにこのまま停滞が続く可能性は否定できないが。

745 名前:デフォルトの名無しさん mailto:sage [2007/10/20(土) 12:05:13 ]
LISP作ってる人ってなんだか
Windowsではあきらかにやる気ないですよね。


746 名前:デフォルトの名無しさん mailto:sage [2007/10/20(土) 13:01:21 ]
Lisp に限った事じゃ無いと思うけど。

747 名前:デフォルトの名無しさん mailto:sage [2007/10/20(土) 13:57:03 ]
切ないですね。




748 名前:デフォルトの名無しさん mailto:sage [2007/10/20(土) 14:37:22 ]
Windowsみたいな処理系でやる気を出せというのが難しい。
まずはUNIX処理系で形にしておいて、それをWin用にポーティングするのが常に賢い。

Microsoftは答えじゃない。Microsoftは質問だ。そして、答えはNOだ。 -- Erik Naggum

749 名前:デフォルトの名無しさん mailto:sage [2007/10/20(土) 17:31:59 ]
OSを処理系と呼ぶ人も珍しいね。

750 名前:デフォルトの名無しさん mailto:sage [2007/10/20(土) 17:46:03 ]
>>745
逆。Windows の人たちが Lisp に興味ないんだよ。

ほとんどの Lisp 処理系の開発者は仕事でやってるわけじゃないので
他のプラットフォームへの移植までは難しい。
Windows プログラマから貢献がないとどうにもならないわけ。

自分の例で恐縮だが、俺程度でも SBCL の開発に手を出したら
FreeBSD での問題はずいぶん減ったし、thread や amd64 も
動くようになった。

どこの処理系も人材難だから、Windows プログラマが一人参加
するだけでも状況はずいぶん変わるはずだよ。使いたい処理系が
Windows でうまく動かないって思ってる人は、その処理系のソースを
眺めてみたら?

751 名前:デフォルトの名無しさん mailto:sage [2007/10/20(土) 19:50:18 ]
Unix系でちゃんと動いてる処理系が多いのは、それが簡単だから。
Win32でちゃんと動かすってのは結構大変なんだよ。設計がぐちゃぐちゃだから。
いっそのこと .NET CLR 用に作るとか考えるほうが建設的な気がするな。

752 名前:デフォルトの名無しさん mailto:sage [2007/10/20(土) 20:09:46 ]
>>750=旧よろずやの中の人

753 名前:デフォルトの名無しさん mailto:sage [2007/10/20(土) 20:14:50 ]
>>750
FreeBSD ユーザーな Lisper の一人としてあんたには感謝しているぜ!
SBCL のスレッドに釣られて Linux に走る Lisp 仲間は多かったからな。


754 名前:デフォルトの名無しさん mailto:sage [2007/10/20(土) 20:18:36 ]
>>752
>>750 は SBCL だろ? よろずやの人は CLISP じゃなかったっけ。


755 名前:デフォルトの名無しさん mailto:sage [2007/10/20(土) 20:55:29 ]
>>754
よろずやの人はcmucl -> sbclメイン他いろいろ
です....って何かストーカーみたいだなw

756 名前:デフォルトの名無しさん mailto:sage [2007/10/20(土) 22:15:31 ]
>>744
つうか数人のデベロッパしかないLisp系プロジェクトでは数ヶ月〜数年commitがないなんて良くあること。
基本的にLispのみで喰えてる人はいないんで、みんな余暇にしか作業しないからな。
先にRubyとかを見ていると止っているように見えるのかもね。

>>755
754はデベロッパーとしての話なんじゃないか。

757 名前:デフォルトの名無しさん mailto:sage [2007/10/21(日) 00:11:05 ]
まあGCLはいろいろあったからね



758 名前:デフォルトの名無しさん mailto:sage [2007/10/21(日) 01:00:01 ]
って何?

759 名前:デフォルトの名無しさん mailto:sage [2007/10/21(日) 01:22:30 ]
確かメインの開発者が事故で亡くなられた。

760 名前:デフォルトの名無しさん mailto:sage [2007/10/21(日) 01:28:23 ]
GCLってGNU Common Lisp?

761 名前:デフォルトの名無しさん mailto:sage [2007/10/21(日) 01:45:23 ]
(質問は)そっちかよ…

762 名前:デフォルトの名無しさん mailto:sage [2007/10/21(日) 02:07:02 ]
>>759
>亡くなられた
偉いなw
俺だったら"逝っちゃった"とか平気で書きそうな気がorz

763 名前:デフォルトの名無しさん mailto:sage [2007/10/21(日) 15:33:05 ]
KCL な神たちはかかわってないの? GCL になってからは

764 名前:デフォルトの名無しさん mailto:sage [2007/10/21(日) 16:08:11 ]
かかわってない

765 名前:デフォルトの名無しさん mailto:sage [2007/10/21(日) 16:11:49 ]
LISPってリアルタイムの制御とかには使えるんですか。


766 名前:デフォルトの名無しさん mailto:sage [2007/10/21(日) 16:47:41 ]
ゲームとかロボットで使ってる例はあるけど
GC とメモリフットプリントの問題を何とか
しなくてはいけない

767 名前:デフォルトの名無しさん mailto:sage [2007/10/21(日) 18:28:20 ]
ロケットか衛星の制御に使ってて宇宙空間にあるのを地上からデバッグした
という話がどっかにあった。



768 名前:デフォルトの名無しさん mailto:sage [2007/10/22(月) 00:36:44 ]
なんでもLispなんだよ
あっちに見えてる掃除用ロボットだってそうだよ
再帰できたらやりてえんだよ
おれ人工知能が書けるほどハッカーになれねえかな
計算機科学の巨人だよ
でもそうなったら自分で作った知能とやっちゃうかもしれねえな
機械だって色っぽいよお


769 名前:デフォルトの名無しさん mailto:sage [2007/10/22(月) 18:30:51 ]
リストをシャッフルする以下のような関数を書いてみたんですけど、コンスがあったりしてあんまり上手くないと……
他に上手い書き方ってないでしょうか?

(defun shuffle (lst)
(labels ((shffl (lst acc)
(if (null lst)
acc
(let ((*random-state* (make-random-state t))
(len (length lst)))
(let ((rand (random len)))
(let ((nthrand (nth rand lst)))
(shffl (remove nthrand lst :count 1) (cons nthrand acc))))))))
(shffl lst nil)))

770 名前:デフォルトの名無しさん mailto:sage [2007/10/22(月) 22:49:39 ]
>>769
破壊的にやってみた

(defun shuffle (list)
  (let ((st (make-random-state t))
        (len (length list)))
    (dotimes (i len list)
      (rotatef (car (nthcdr (random len st) list))
               (car (nthcdr (random len st) list))))))

771 名前:デフォルトの名無しさん mailto:sage [2007/10/23(火) 20:25:05 ]
ありがとうございます。参考にします。

772 名前:デフォルトの名無しさん [2007/10/25(木) 22:56:58 ]
8パズルを盲目的探索、深さ優先探索、幅優先探索を用いて解け

盲目的探索
初期状態#(8 3 1 0 4 7 6 5 2)
深さ優先探索
初期状態#(0 8 1 4 3 7 6 5 2)
幅優先探索
初期状態#(4 8 1 0 3 7 6 5 2)
この3つの目標状態は#(1 2 3 4 5 6 7 8 0)とする
実行フォームは(time...)で囲むこと

この問題が全くわかりません。。。どなたかお願いします

773 名前:デフォルトの名無しさん [2007/10/25(木) 23:35:20 ]
SBCLに組み込まれている関数のリファレンスとかありませんか?

あと、現在定義されている変数の一覧とか確認できると便利なんですが・・・
→トップレベルで (setf xxx 111)で定義したxxxの一覧とか


774 名前:デフォルトの名無しさん mailto:sage [2007/10/25(木) 23:57:23 ]
HyperSpec

775 名前:773 mailto:sage [2007/10/25(木) 23:58:15 ]
自己レスだが、リファレンス見つけた
全部英語だが・・・ orz

ttp://www.cs.cmu.edu/Groups/AI/html/cltl/clm/node1.html#SECTION00100000000000000000

>あと、現在定義されている変数の一覧とか確認できると便利なんですが・・・
>→トップレベルで (setf xxx 111)で定義したxxxの一覧とか

↑これはご存知のかた教えてください m(_ _)m

776 名前:デフォルトの名無しさん mailto:sage [2007/10/26(金) 01:32:57 ]
(loop for s being the symbols in *package* if (boundp s) collect s)
とか?

777 名前:デフォルトの名無しさん mailto:sage [2007/10/26(金) 16:55:01 ]
777ゲット!



778 名前:デフォルトの名無しさん mailto:sage [2007/10/28(日) 16:24:23 ]
与えられた引数が文字列であるか数値であるかを判断する…ってのはどないしたらいいんでしょうか。。

779 名前:デフォルトの名無しさん mailto:sage [2007/10/28(日) 16:29:18 ]
numberpとかstringpじゃだめなの?

780 名前:デフォルトの名無しさん mailto:sage [2007/10/28(日) 16:33:16 ]
>>779
ありがとうございました。

781 名前:デフォルトの名無しさん mailto:sage [2007/11/02(金) 00:36:22 ]
Lispからテーブル形式のデータを出力して、エクセルなどで開いたり、逆に表形式のデータを読み込んで変数に値を貼り付けたりしたいのですが、そういうことは可能なのでしょうか。
Lispは、Allegro Common Lispを使っています。

782 名前:デフォルトの名無しさん mailto:sage [2007/11/02(金) 00:53:10 ]
>>781
CSV

783 名前:デフォルトの名無しさん mailto:sage [2007/11/02(金) 01:35:10 ]
CSVファイルを読み書きするプログラムを書けばいいんですね。
頑張ってみます。ありがとうございます。

784 名前:デフォルトの名無しさん mailto:sage [2007/11/03(土) 00:19:42 ]
2つ以上続くアルファベットを、文字列に変換するにはどうしたらいいですか。
例えば以下のように。
abc -> "abc"

coerseだと一文字の場合しか変換できなくて困ってます。

785 名前:デフォルトの名無しさん mailto:sage [2007/11/03(土) 00:28:39 ]
(string 'abc)
"abc"
とか
(format nil "~A" 'abc)
"abc"
とか?

xyzzyだとできるけど、他のはわからん
できないならスレ違いすまんw

786 名前:デフォルトの名無しさん mailto:sage [2007/11/03(土) 00:32:07 ]
>>784
エスパーレスすると、君の知りたいのは symbol-name

787 名前:デフォルトの名無しさん mailto:sage [2007/11/03(土) 15:32:34 ]
>>785
string使えました。ありがとうございます。

>>786
symbol-nameで、やりたかったことができました。
勉強不足ですみません。



788 名前:デフォルトの名無しさん mailto:sage [2007/11/04(日) 21:48:52 ]
Lispって何ができますか?

789 名前:デフォルトの名無しさん mailto:sage [2007/11/04(日) 22:33:52 ]
プログラムの記述ができます

790 名前:デフォルトの名無しさん [2007/11/05(月) 01:29:11 ]
初心者に適した本はない?
もしくはサイトでもOK。

興味が沸いてきた。

791 名前:デフォルトの名無しさん mailto:sage [2007/11/05(月) 01:34:58 ]
usir.kobe-c.ac.jp/users/miura/2001/Sc289/index.html

792 名前:デフォルトの名無しさん mailto:sage [2007/11/05(月) 01:44:58 ]
いまANSI Common Lisp読んでる

793 名前:デフォルトの名無しさん mailto:sage [2007/11/05(月) 01:54:11 ]
>>791
GIFアニメが鬱陶しくて集中できないw


794 名前:デフォルトの名無しさん [2007/11/10(土) 17:44:40 ]
www.ibm.com/developerworks/jp/opensource/library/os-eclipse-lispcusp/index.html
きたぁぁぁぁぁぁっぁぁぁぁぁぁぁぁlっぁああああああぁぁぁぁl!!!!!!!!!!!!!!!!!!!!!!

795 名前:デフォルトの名無しさん mailto:sage [2007/11/11(日) 07:56:47 ]
>>794
I love emacs だけど Cusp は気になるなー。


796 名前:デフォルトの名無しさん [2007/11/11(日) 10:52:05 ]
気になるが、本スレ向けの話題じゃね?w

797 名前:デフォルトの名無しさん mailto:sage [2007/11/11(日) 17:00:05 ]
本スレは最近調子がわるいのだ



798 名前:デフォルトの名無しさん mailto:sage [2007/11/11(日) 18:10:04 ]
Eclipse自体が重いうえに、ちょっとした拡張にも手間がすげーかかるんで正直あんまり魅力を感じない…。
でもEmacs使わない層には評判いいね。見た目とか、IDEをマウスで操作したい層にはいいのかも。

799 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 16:20:48 ]
Emacs + slimeで十分だろ,常識的に考えて...

800 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 19:02:27 ]
JavaとかC++とかそのへんの、人間が面倒な手間を強要される言語だと
かなり便利なんだよ、IDE。

801 名前:デフォルトの名無しさん mailto:sage [2007/11/13(火) 00:45:43 ]
>>799
emacsの代わりにeclipseなだけで基本slimeだから

エディタとのインターフェースにelisp使うかjava使うかってだけな話だよねぇ?


802 名前:デフォルトの名無しさん mailto:sage [2007/11/16(金) 21:15:11 ]
newlisp使ってる香具師いる?

803 名前:デフォルトの名無しさん mailto:sage [2007/11/17(土) 00:50:35 ]
CMUCLやSBCLでPOSIX Pipeなどを使って外部プロセスと
データのやり取りをするにはどうすればいいのでしょうか?

804 名前:デフォルトの名無しさん mailto:sage [2007/11/19(月) 11:09:27 ]
doxygen みたいな自動ドキュメント化ツールってありますか?
日本語が使えると嬉しいのですが.

805 名前:デフォルトの名無しさん mailto:sage [2007/11/19(月) 22:11:15 ]
>>804
作ればいいだろ。
それがLispクオリティ

806 名前:デフォルトの名無しさん mailto:sage [2007/11/19(月) 22:25:20 ]
確かに Lisp でなら3日で作れそうな気がするな
気がするだけだがw

807 名前:デフォルトの名無しさん mailto:sage [2007/11/19(月) 22:43:22 ]
>>806
(loop for x being each symbols in :mypkg
when (and (fboundp x) (eql (symbol-package x) (find-package :mypkg)))
collect (list x (documentation x 'function)))
とりあえずドキュメント文字列取りだしたから、後は任せた



808 名前:デフォルトの名無しさん mailto:sage [2007/11/19(月) 23:30:25 ]
>>804
doxygenを使えばいいのかと
日本語も使えるわけなんだし。

809 名前:804 mailto:sage [2007/11/20(火) 00:25:15 ]
質問した私がアホでした。皆様ありがとうございます。
凝った事をしないで自分専用のツールにするんだったら、
html ぐらいまでは簡単に出来ますね。

>>807
パッケージの中の定義済みシンボルもそうやってすれば取り出せるんですね。

810 名前:デフォルトの名無しさん mailto:sage [2007/11/20(火) 14:58:45 ]
PracticalCommonLisp の第22章だけ訳してみたんだけど、
投下してみるべき? それともチラシの裏に留めるべき?

811 名前:デフォルトの名無しさん mailto:sage [2007/11/20(火) 17:09:52 ]
とりあえず投下してみるよろし。

812 名前:810 mailto:sage [2007/11/20(火) 18:43:39 ]
ttp://www.uploda.org/uporg1121370.zip.html
機械翻訳並みでもよければ…

813 名前:デフォルトの名無しさん mailto:sage [2007/11/22(木) 06:41:28 ]
パッケージ a と b を両方共存させる方法はないですか?
(in-package a)
(in-package b)
とすると、a のパッケージで定義されたシンボルが
未定義になってしまいます。

814 名前:デフォルトの名無しさん mailto:sage [2007/11/22(木) 06:47:23 ]
もうひとつ。異なったディレクトリにあるパッケージを、
C の include, libxxx.a の仕組みの様に使う一般的方法はありますか?
今の所以下の様にしていますが、allegro でしか使えません。
(setq system:*load-search-list*
'(:first
(:newest-do-compile
#.(make-pathname :type "fasl")
#.(make-pathname :type "cl"))
(:newest-do-compile
#.(make-pathname :directory "~/src/lib-lisp"
:type "fasl")
...


815 名前:デフォルトの名無しさん mailto:sage [2007/11/22(木) 11:50:47 ]
>>812
もっかいうpたのむ

816 名前:デフォルトの名無しさん mailto:sage [2007/11/22(木) 13:12:38 ]
俺からもうpたのむ

通報するから

817 名前:810 mailto:sage [2007/11/22(木) 18:44:50 ]
>>815
物持ちのいいうpろだ探し中

>>816
原著がネットで公開されててもまずいかなやっぱり



818 名前:デフォルトの名無しさん mailto:sage [2007/11/22(木) 19:04:18 ]
基本的には、原著作者が、翻訳して公開することを明示的に許可してないと ×

819 名前:デフォルトの名無しさん mailto:sage [2007/11/22(木) 21:16:36 ]
>>816
どうでもいいだろ,地下文章なんだから
堂々とWebに公開したらそりゃまずいだろうけど
pass付きzipで短期間だけ公開なら問題ないだろ

820 名前:デフォルトの名無しさん mailto:sage [2007/11/22(木) 21:54:34 ]
lions' 本も現在なら
ファーストコピーのスキャン画像が流通するのかしらん

821 名前:803 mailto:sage [2007/11/22(木) 21:58:25 ]
(´・ω・`)

822 名前:デフォルトの名無しさん mailto:sage [2007/11/22(木) 22:01:16 ]
>>821
socketじゃだめなのか?

823 名前:デフォルトの名無しさん mailto:sageそんなことはない [2007/11/22(木) 22:10:19 ]
これが革命の狼煙になるとは思いもしない819であった。



824 名前:デフォルトの名無しさん mailto:sage [2007/11/22(木) 23:35:19 ]
>822
socketに対応していない外部プログラムと繋げられたらばと考えまして
もっともsocketの使い方も勉強できたらうれしいです

825 名前:デフォルトの名無しさん mailto:sage [2007/11/23(金) 00:53:58 ]
>>813
つか、常にパッケージ名に::を付ければ参照できる。冗長だけど。
多分本当にしたいのは以下のような事だろ?
省略したけど use-package とすればまるごとimportできる。

cl-user(2): (defpackage :a)
#<The a package>
cl-user(3): (defpackage :b)
#<The b package>
cl-user(4): (in-package :a)
#<The a package>
a(5): (defvar *foo* 813)
*foo*
a(6): (find-symbol "*foo*")
*foo*
:internal
a(7): :pa :b
b(8): (find-symbol "*foo*")
nil
nil
b(9): (import 'a::*foo*)
t
b(10): (find-symbol "*foo*")
*foo*
:internal
b(11): *foo*
813


826 名前:813 mailto:sage [2007/11/23(金) 09:39:00 ]
>>825
import と use-package ですね。これで相当便利になりました。

827 名前:デフォルトの名無しさん mailto:sage [2007/11/26(月) 00:38:07 ]
on lispの翻訳も最初はこんなのりだったなw



828 名前:デフォルトの名無しさん mailto:sage [2007/11/26(月) 14:02:25 ]
texのドキュメントを自動生成するscriptのsampleなどどこかに
ないでしょうか?

829 名前:デフォルトの名無しさん mailto:sage [2007/11/26(月) 22:37:26 ]
slimeビデオの通りに

; SLIME 2007-11-19
CL-USER> (make-hash-table)
#<HASH-TABLE :TEST EQL :COUNT 0 {ACEED81}>
CL-USER> #<HASH-TABLE :TEST EQL :COUNT 0 {ACEED81}>

と、すると以下の通りに怒られます。

SB-INT:SIMPLE-READER-ERROR at 2 (line 1, column 2) on #<SB-IMPL::STRING-INPUT-STREAM {AD3B641}>:
illegal sharp macro character: #\< [Condition of type SB-INT:SIMPLE-READER-ERROR]

環境は、

debian etch
emacs22
sbcl-1.0.11-x86-linux
slimeはcvsで取ってきたものです。

.slime.lispには

#+sbcl (setq sb-impl::*default-external-format* :utf-8)
(asdf:operate 'asdf:load-op 'swank)
(setq swank::*coding-system* "utf-8-unix")
(setf swank:*use-dedicated-output-stream* nil)
(swank:create-server :port 4005 :dont-close t)

と、設定しています。
他に何か設定が必要でしょうか。

830 名前:デフォルトの名無しさん mailto:sage [2007/11/26(月) 22:54:23 ]
>>829
slimeのビデオって何か知らないけど、、
「#<HASH-TABLE :TEST EQL :COUNT 0 {ACEED81}>」は手で入力したの?

「#<」ってのは read して元に戻らないものを表示するための記号。
(もとに戻るのは配列とかリストとかね)
よって、手で入力したんだとしたら何か勘違いしてるんだと思う。

831 名前:デフォルトの名無しさん mailto:sage [2007/11/26(月) 23:48:25 ]
>>830
> >>829
> slimeのビデオって何か知らないけど、、

slimeのビデオです(サイズ150MBほどあります)。
ttp://common-lisp.net/movies/slime.mov

これによると

CL-USER> #<HASH-TABLE :TEST EQL :COUNT 0 {ACEED81}>

の後に

CL-USER> (eq #<HASH-TABLE :TEST EQL :COUNT 0 {ACEED81}> #<HASH-TABLE :TEST EQL :COUNT 0 {ACEED81}>)
T

こんなことしてるんですが
私の環境ではコケてしまいます。


832 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 14:01:23 ]
829の勘違いというかビデオを理解していないで終了。

833 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 15:10:34 ]
830を1兆回読むべきだろうな

834 名前:810 mailto:sage [2007/11/27(火) 19:27:26 ]
原著者の Peter さんに勢いで
「日本のフォーラムに翻訳を投下したいんだけど許可くれ」
ってメールしてみたんだけど、数日経った今日返信キタ

日本語化の動きは既にあるんで
グループを手伝うかどうかは君に任せるよ、とのこと

835 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 21:29:18 ]
829です。
>>830
手で入力しなおして気付きました。

>>832
> 829の勘違いというかビデオを理解していないで終了。

はい、理解してませんね
もうちょっと勉強します。

>>833
> 830を1兆回読むべきだろうな

さすがに1兆回はw
でも3回ほど読み直しました。

Emacs側の設定 face? mouse? 見直してみます。
みなさんコメントありあがとうございました。
お騒がせしました。


836 名前:デフォルトの名無しさん [2007/11/27(火) 22:15:54 ]
>>834
その翻訳グループの詳細plz

837 名前:デフォルトの名無しさん mailto:sage [2007/11/28(水) 01:21:11 ]
なんか、ひどい言われようだな。

slimeの#<で始まるのは、手入力やC-yで張ったものではないと思われます。
面倒くさいので、videoは見ていませんが。

私の環境では、
> CL-USER> (make-hash-table)
> #<HASH-TABLE :TEST EQL :COUNT 0 {ACEED81}>

の、返り値表示の上にカーソル置いてEnter、若しくはマウスで中クリックを
することによって、#<で始まる文字列が新規のプロンプト上にコピーされます。

この文字列は、lispのobjectとして評価可能です。
eqで比較も出来ます。

ちなみに、マウスの右クリックでメニューを出すと、色々選べて面白いです。




838 名前:デフォルトの名無しさん mailto:sage [2007/11/28(水) 01:57:25 ]
>>837
どこがひどい言われようなんだ?
質問者の方に問題ありすぎで、829のような質問じゃ仕方ない流れだろう。

839 名前:デフォルトの名無しさん mailto:sage [2007/11/28(水) 18:59:01 ]
流れをぶった切ってしまって申し訳ないのですが、ちょっと質問させてください。

たとえばPythonにはrange関数があって、0〜10のリストとか簡単に作れますが、
Common Lispにはrangeのような関数はないのでしょうか?
そのようなリストが欲しければmake-sequenceでリスト作ってdolistで回して初期化とかそんな感じなんですかね??


840 名前:デフォルトの名無しさん mailto:sage [2007/11/28(水) 19:25:37 ]
loop はどうかね?
(loop for i from 0 below 10 collect i)


841 名前:839 mailto:sage [2007/11/28(水) 21:27:44 ]
>>840
おおお、ありがとうございます!
loopマクロでできないかチラッと見てみたことはあったんですが、
浅く踏み込んだだけだったのでbelowを知りませんでした。

前々から気になっていたイディオム(?)なのでスッキリしました。
どうもありがとうございます。

842 名前:デフォルトの名無しさん mailto:sage [2007/11/28(水) 22:39:55 ]
>>841
www.unixuser.org/~euske/doc/cl/loop.html

843 名前:839 mailto:sage [2007/11/29(木) 01:58:10 ]
>>842
どうもありがとうございます。
勉強してきます。

loopマクロって結構面白いですね。

844 名前:デフォルトの名無しさん mailto:sage [2007/11/30(金) 03:06:35 ]
マクロの活用による典型的なミニ言語だよね。
みんなが好き勝手にこんなもの作りだしたら煩雑になってたまらん、って
思いとどまったのがschemerでいいじゃん別に便利なんだから、って
開き直ったのがlisperなんじゃないかと個人的には理解している。

LOOPマクロマンセー

845 名前:デフォルトの名無しさん mailto:sage [2007/12/01(土) 17:15:09 ]
829です。
>>837
> の、返り値表示の上にカーソル置いてEnter、若しくはマウスで中クリックを
> することによって、#<で始まる文字列が新規のプロンプト上にコピーされます。

私の環境ではこれがうまく機能していませんでした。
そこで、slimw-2.0を入れてみたところ出来るようになりました。

>
> この文字列は、lispのobjectとして評価可能です。
> eqで比較も出来ます。

そういう事なのですね。

>
> ちなみに、マウスの右クリックでメニューを出すと、色々選べて面白いです。

これから試してみます。
コメントありがとうございました。

846 名前:デフォルトの名無しさん mailto:sage [2007/12/02(日) 14:24:01 ]
日本語文字コードの変換とかPOP3とかMD5とかGUIとか
そういう実用的なライブラリはあるんでしょうか・・・
有象無象に見える多数の処理系に様々な機能が分散して
るように見えて何がなんだかわかりません・・・。
今までPerlとTclを使ってやってたことを、Lispでやりたいんですが・・・

847 名前:デフォルトの名無しさん mailto:sage [2007/12/02(日) 14:47:51 ]
>>846
www.cliki.net/index
あたりで探してみたら?
ASDFが使える処理系なら、
asdf-installをガンガンインストールすればいいので手間もかからんし。

ただし、もともとテキスト処理のために作られた言語でないので、
そこら辺はperlのような充実っぷりを期待しても無駄です。
GUI環境の整備も主たる言語の中では相当遅れていると言って良いです。
McCLIMも最近ようやくあまり落ちなくなったという程度だしw



848 名前:デフォルトの名無しさん mailto:sage [2007/12/02(日) 19:08:42 ]
>>846
847の書いてる通り。
商用のAllegroCLなら、さすがに大分まし、だよ。


849 名前:デフォルトの名無しさん mailto:sage [2007/12/03(月) 00:10:26 ]
オープンソースでフリーな商用CLに期待しましょう

850 名前:デフォルトの名無しさん mailto:sage [2007/12/03(月) 02:30:21 ]
どうやって商売成り立たせんの、それ。

851 名前:デフォルトの名無しさん mailto:sage [2007/12/03(月) 13:50:46 ]
MySQL方式かな

852 名前:デフォルトの名無しさん mailto:sage [2007/12/03(月) 20:46:35 ]
いちおう、最後の砦として、ffi というのもあるけど、
なんでもかんでもリンクし始めたら、lisp を使ってる意味が無くなるかな。

853 名前:デフォルトの名無しさん mailto:sage [2007/12/03(月) 23:31:43 ]
質問です。CLの正しいプログラムexprは
(or (atom expr) (symbolp (car expr)) (eq 'lambda (caar expr))
を必ず満たしますか?

854 名前:デフォルトの名無しさん mailto:sage [2007/12/03(月) 23:44:30 ]
>>853
正しいプログラムってどういう意味?
正しい式の意味?

855 名前:デフォルトの名無しさん mailto:sage [2007/12/03(月) 23:55:41 ]
>>854
(1 2 3)のようなものを式と呼ぶのか分かりませんが、
要するにevalを適用してエラーが出ないもののことです。

あと括弧閉じ忘れてますねすいません

856 名前:デフォルトの名無しさん mailto:sage [2007/12/05(水) 05:53:16 ]
>>853
貴方の意図を汲み取るのが非常に難しい。
とりあえず答えてみると、
exprの部分を例えば(list 2 3 4)で置き換えた場合、
その式を満たしていないことになるけど、
それは自明だからたぶん意図を外しているのだろう。

一々、S式で書かないで、言葉で説明してみたら?


857 名前:デフォルトの名無しさん mailto:sage [2007/12/05(水) 07:51:02 ]
>>856
予想すると、>>853はlisp処理系をlispで書こうとしているのでは。
知りたいのはフォームの定義と見た。
で、CLHS: Section 3.1.2.1 を見ると、>>853の定義でだいたい
当っているような気がする。




858 名前:デフォルトの名無しさん mailto:sage [2007/12/05(水) 09:25:01 ]
(,,゚Д゚)∩先生、S式って何ですか?

        (´ー` ) >>853

 (  ゚д゚) ……

 ( ゚д゚ )


859 名前:デフォルトの名無しさん mailto:sage [2007/12/05(水) 09:59:34 ]
処理系を書くとか、そういうのって適当にやると結局後で困るんだよね。
最初から定義を見て形式保ってやっていく方がいい。

860 名前:デフォルトの名無しさん mailto:sage [2007/12/05(水) 19:19:23 ]
そうだLispを作ろう
 ↓
第一級でないオブジェクトってなんなの?
 ↓
リストの先頭に現れるらしい
 ↓
むしろリストの先頭に第一級オブジェクトが現れるのがおかしい
 ↓
リストは全部スペシャルフォームってことにすれば……
 ↓
……リストの先頭は必ずシンボルになる
 ↓
それなんてCL ←今このへん

861 名前:デフォルトの名無しさん mailto:sage [2007/12/05(水) 19:22:00 ]
オブジェクトはすべて平等ですよ。
第一級オブジェクトという考え方自体がオブジェクト差別主義に毒されてます。

862 名前:デフォルトの名無しさん mailto:sage [2007/12/05(水) 19:24:24 ]
ウィンストンのlispの3版に
lispでlisp処理系を作るとか
そういうのが載っていそうな気がする

863 名前:デフォルトの名無しさん mailto:sage [2007/12/05(水) 21:55:00 ]
残念でした〜。CLではシンボル以外にlambda式もフォーム先頭にこれるんだな。

864 名前:デフォルトの名無しさん mailto:sage [2007/12/05(水) 21:57:49 ]
ああそれはわかっているのか、ごめん。

865 名前:デフォルトの名無しさん mailto:sage [2007/12/05(水) 21:58:02 ]
>>863
>>853にはちゃんとそう書いてありますね。

lispでlispを作るって一見無駄に見えますけど、
xyzzy lispでxyzzy schemeを作ったら便利そうですね。
とっくの昔に誰かが書いてそうですが。

866 名前:デフォルトの名無しさん mailto:sage [2007/12/06(木) 01:47:04 ]
なぜ便利そうだと思ったのかkwsk






[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

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

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