07/09/19 03:52:45
>>543
ナイスボケ
553:デフォルトの名無しさん
07/09/19 07:08:07
lispっておっさんの言語なの?
554:デフォルトの名無しさん
07/09/19 08:00:05
543 をはじめとするおっさんどもが要るだけだろう
俺はヒキコモリ高校生
555:デフォルトの名無しさん
07/09/19 08:14:02
必要なのか
556:デフォルトの名無しさん
07/09/19 11:12:47
以前から不思議だったんだけど2chのスレってどんな過疎スレでも「ハゲ」と「おっさん」話が持ち上がると妙にスレが伸びるんだろう?
557:デフォルトの名無しさん
07/09/19 12:37:58
それはry
558:デフォルトの名無しさん
07/09/19 15:21:46
>>556
2chに出入りしている腐女子は「ハゲ」×「おっさん」と
「おっさん」×「ハゲ」のどっちが良いかでご飯3杯いけるから。
因みに数字板ではこれがマジだから困る。
559:デフォルトの名無しさん
07/09/19 23:43:01
イケメン禿のおっさんがLISPとは何かを語ると
腐女子がえびぞりながら泡吹いて失神するぞ。
クワトロのせりふで決めればもう涎流しっぱなしで再
560:デフォルトの名無しさん
07/09/20 01:05:39
>>556
そういう言葉で煽るのは、自分はそれらのキーワードと無縁だと思ってる層で、
そういう層は大抵若い世代、言い換えれば、経験とか知識に乏しいまま全能感だけ持て余してる世代。
つまり、そういう話が持ち上がると伸びるのではなく、アホなことでスレ伸ばす層が持ち出しがちな単語が
そういうものなんでは。
561:デフォルトの名無しさん
07/09/20 04:33:26
どなたかお助けください。
sbcl,clispでキーボード操作を受け付けるプログラム書いてあそんでいるのですが双方で共通にttyの設定をraw,noecho似する方法はありませんでしょうか?
現在clispでは(shell "stty raw -echo")を,sbclだと実行前に同様のコマンドを実行しています。
ただこれだとclispはreadlineがカーソルキーを食ったままですし、sbclは抜けないと元に戻せなくて困っています。
562:デフォルトの名無しさん
07/09/20 07:50:19
CLISP なら SCREEN パッケージも入ってると思うけど。
あとは EXT:WITH-KEYBOARD とかでCUI できる。
SBCL と共通にしたいなら ncurses を使うのがいいんじゃないかな。
563:デフォルトの名無しさん
07/09/20 11:54:18
>>562
ありがとうございます、ncursesで検索したらcl-cursesとかcl-curl(cURLじゃないんですね)とかいろいろ出てきました。
564:デフォルトの名無しさん
07/09/21 11:04:13
最近cgiをLispで書くのがマイブームです><
565:デフォルトの名無しさん
07/09/21 11:18:53
それたのしそうですね><
どうやるんですか><
566:デフォルトの名無しさん
07/09/21 23:01:52
ViaWebでさえサーバープロセスが動いていたのに
何でCGIで書くのかと問い(ry
567:デフォルトの名無しさん
07/09/21 23:02:53
普通にかけますよ
clispなら小さいからプロセス起動なcgiでもいけますし、sbclならfastcgi使うとごっつはぇぇでし。
568:デフォルトの名無しさん
07/09/21 23:07:01
>>566
cgiつーのは割と身近で小さめの実用プログラムな側面があるのでそういう否定のしかたはよろしくないような気がする。
569:デフォルトの名無しさん
07/09/22 00:46:01
結局のところお前らCLispで実際に使えるプログラムかいてないのか?
570:デフォルトの名無しさん
07/09/22 01:07:35
エディタのスクリプトならバリバリ……
571:デフォルトの名無しさん
07/09/22 07:52:21
プロトタイプ作成とかデータ整理とか表には出せないが使ってるよ。
でも上にはプロトタイプ専用の「ゲテモノ」と認識されてるんでね、テストまでしか使えない。
人月単位の人海戦術で作るとな……プロトタイプのほうが高速かつ高機能とかマジ泣ける…
仕様通りちゃんと動いたとしても、結局素人を集めて人海戦術で作らないと安心できない、それぎゃ現実の仕事。
でもテスト用のプロトタイプがあるだけでもマシなほうさ。バリバリのウォーターフォールでデスマーチ化ってとこ多いしね。
…なんか愚痴っぽくなったな、スマン。
572:デフォルトの名無しさん
07/09/22 08:03:45
おれ、グーグルに入れたら「ウォーターフォール」卒業して
先端技術でバリバリ働くんだ。
573:デフォルトの名無しさん
07/09/22 10:20:25
>>571
速くHackerがたくさんいる企業に就職しなおすんだ!
574:デフォルトの名無しさん
07/09/23 12:49:17
(setf test-list
'(("above" . "上記の,方向,場所などを表して.")
("propose" . "提案する")
("afforded" . "余裕がある,can, could, be able toを伴って")
("dedicated" . "専用の")))
見たいなりスト作って評価したら
Coding system iso-lating-1-unix not suitable for "000c4e(:emacs-rex (swank:interactive-eval))
見たいなエラーがでるんだがCLispってUTF-8対応じゃないの?
575:デフォルトの名無しさん
07/09/23 13:55:37
glibc か libiconv サポートがある環境なら UTF-8 のエンコーディングは備わってると思うよ。
SLIME (emacs) <---> SWANK (lisp) の通信設定がデフォルトの値 iso-lating-1-unix なんじゃないかな。
iso-lating-1-unix なストリームに utf-8 の文字流し込んでエラーになってるんだと思う。
;; SLIME 側の設定 (Emacs)
(setq slime-net-coding-system 'utf-8-unix)
;; SWANK 側の設定 (CLISP)
(setq swank::*coding-system* "utf-8-unix")
576:デフォルトの名無しさん
07/09/23 17:06:26
>>575
できました!
ありがとうございます
577:デフォルトの名無しさん
07/09/24 16:11:21
>>571
ナカーマ w
578:デフォルトの名無しさん
07/09/29 17:34:40
相異なる要素からなる系列 seq の要素中 2 個を選んだ組合せをすべて表示し場合の数も表示する関数 (pair seq) で,例えば (pair abcd) が
(A B) ; A を選び,残りの B,C,D から B を選んだ組合せ
(A C) ; A を選び,残りの B,C,D から C を選んだ組合せ
(A D) ; A を選び,残りの B,C,D から D を選んだ組合せ
(B C) ; B を選び,残りの C,D から C を選んだ組合せ
(B D) ; B を選び,残りの C,D から D を選んだ組合せ
(C D) ; C を選び,残りの D から D を選んだ組合せ
6 ; 場合の数 4C2=4!/{2!×(4-2)!}=6
のように評価されるものを,必要なら関数 app を用いて定義せよ。
(defun merg (seq1 seq2)
(if (null seq1)
seq2
(cons (car seq1)
(merg (cdr seq1) seq2))))
(defun app1 (seq elem)
(merg seq (cons elem NIL)))
このプログラムを教えてください
579:デフォルトの名無しさん
07/09/30 00:54:33
宿題ならちっとは考えたフリしろよw
もしくは宿題スレへ(lisperがいるかどうかは知らんが、lisp以前の問題だ)
580:デフォルトの名無しさん
07/09/30 03:05:54
>>578
もちろん教えてあげますよ。
ただ、宿題を持ち込む人は多いんだけど情報不足なんだよね。
1. 締切はいつまで?どんなレベルの解答がお望み?
2. Lisp の授業ははじまってどれくらい?一ヶ月?三ヶ月?
3. 教科書はなにで、どれくらいまで読んだ?
4. ズバリ答えがほしいの?教育的ヒントがほしい?
別にズバリ答えがほしいならそれで即解答しますんで、正直に答えてね。
581:デフォルトの名無しさん
07/09/30 09:53:44
>>580
正直ズバリ答えてほしいのが本音ですが・・・
ヒントだけでも良いです。
締め切りは明日で、Lispは半年程やってます。教科書はありません。
582:デフォルトの名無しさん
07/09/30 12:55:52
教科書がないって、困ったな。HyperSpec とか読んでる?
指標がないと、どーかげばいいのかこっちも悩むじゃねーか。
たとえば、下のコードで何かわからない点はある?
(defun pair (seq)
(loop with counter = 0
for lst on seq
for e1 = (car lst)
do (dolist (e2 (cdr lst))
(format t "(~A ~A)~%" e1 e2)
(incf counter))
finally (format t "~D~%" counter)))
583:デフォルトの名無しさん
07/09/30 13:19:14
たぶん再帰で書いてほしいんだと思った
584:デフォルトの名無しさん
07/09/30 13:34:09
フーン。じゃあこうか?
(defun pair2 (seq)
(labels ((rec (x xs n)
(if (null x)
n
(let ((n (rec2 x (car xs) (cdr xs) n)))
(rec (car xs) (cdr xs) n))))
(rec2 (e x xs n)
(if (null x)
n
(progn
(format t "(~A ~A)~%" e x)
(rec2 e (car xs) (cdr xs) (1+ n))))))
(format t "~D~%" (rec (car seq) (cdr seq) 0))))
ブツブツ。ほんと世の中 Scheme に毒され過ぎだぜ…。過度の一般化じゃないか?
そりゃ再帰のほうが一般的なのはわかるが、特殊なケースのほうが記述が短い場合に反復を使うのを恐れるべきじゃない。
なんだったら LOOP や DOLIST が再帰で実装されていると思えばいいんじゃないか?
585:デフォルトの名無しさん
07/09/30 13:35:14
すまん、インデントがメチャクチャになっちゃった orz
586:デフォルトの名無しさん
07/09/30 13:50:45
まあ普通はループで書くと思うけどね。宿題だから再帰するのかなと。
587:デフォルトの名無しさん
07/09/30 13:53:05
本題から外れるが、
>>584
>>反復を使うのを恐れるべきじゃない。
禿同。再帰を使うだけで問題の本質は露わになる、わけじゃない。
時と場合を選べば、LOOP最強。
588:デフォルトの名無しさん
07/09/30 14:22:06
>>584
> なんだったら LOOP や DOLIST が再帰で実装されていると思えばいいんじゃないか?
よくない。再帰で実装されてると想定して、たとえば
(let (r) (dolist (x '(a b c) (mapcar #'funcall r)) (push #'(lambda () x) r)))
=> (C B A)
となることを期待すると実装依存になってしまう。
589:デフォルトの名無しさん
07/09/30 14:50:13
loop って末尾再帰とは限らないんだっけ?
590:デフォルトの名無しさん
07/09/30 15:02:38
>>582
>>584
わからないとこ多いですね↓
loopとかforとか習ってません
関数の定義、分岐(if とかcond)
リスト(list car) データのリンク(cons)
とかですね。習ったのは。すいません
もうすこし自分で考えてみようと思います
591:デフォルトの名無しさん
07/09/30 15:27:23
>>588
わざわざできない例をもってくるなよ…。
その例だと束縛をキャプチャしてるけど、その束縛を DOLIST が書きかえるんだからおかしいのは当然だろ。
束縛のキャプチャは CL じゃあ常識なんだから、CL の人はそんな事しないし気をつけるもんなんだよ。
Scheme かぶれはなんでもかんでも Scheme で考えるからハマるんだろう。
この例に限定しているつもりだったが、もちろん一般的には CL では再帰で実装されていると考えてはいけない。
俺の書き方に問題があったのは認める。普通 CL な人は IF と GOTO による実装をイメージする(macroexpand すれば一目瞭然)。
>>589
というか CL の DO* や LOOP は基本的に GOTO と IF で実装されてるから、ほぼ確実に再帰じゃない。
俺は再帰で実装している処理系を見たことがない。
>>590
やっぱり Scheme 風味な授業なんだな。じゃあ 584 のほうを提出したまえ。
592:デフォルトの名無しさん
07/09/30 15:39:20
CL から見れば 588 の例なんかは
for(i=0;i<n;i++){list.push_back(&i);}
ってやって、あとで i のポインタの先の値をみて文句を言うのと同じようなダメさを感じるわけ。
再帰でしか物を考えられない Schemer は、CL を使うときはもっと考えを切りかえてからきてくれ。
Scheme は良いものだが、だからといって他のすべてのその思想を押しつけることなどできないのだ。
身近だから CL を煽りにくるんだろうけどさ……所詮どっちもマイナーな世界だ。お互いを尊重して仲良くいこうや。
593:デフォルトの名無しさん
07/09/30 16:08:10
Schemer だって再帰を多用するわけじゃないでしょ
Shiro さんも言っていたけど fold や map、for-each や srfi-42 などのユーティリティを多用するのがスタイル
loop 的なものはあんまり使わないと思うけどね
594:デフォルトの名無しさん
07/09/30 16:15:30
>>591
(format t
とか??なんですが
595:デフォルトの名無しさん
07/09/30 16:55:32
>>594
おれは>>584じゃないけど、おまい授業出てないだろ。
format t は printf STDOUT みたいなもんだよ。~% はタダの改行。
596:デフォルトの名無しさん
07/09/30 17:00:33
授業に出てるなら、こんなとこで質問する必要はないのでは?
597:デフォルトの名無しさん
07/09/30 17:19:39
宿題を張った奴にここまで優しいのはこのスレくらいじゃね?
598:デフォルトの名無しさん
07/09/30 17:59:27
宿題にはもっと妙な答えを教えてあげようよ。
今回のだったら tagbody と go で書くとか。
599:デフォルトの名無しさん
07/09/30 19:15:23
Scheme の srfi-42 を使って書いてほしいんです><
600:デフォルトの名無しさん
07/09/30 19:16:58
>>599
そりはすれち
601:デフォルトの名無しさん
07/09/30 21:33:06
>>599 Gauche でやってみたよ
(use srfi-42)
(define (pair seq)
(let1 counter 0
(do-ec (: xs seq) (: ys (cdr (member xs seq)))
(begin
(format #t "(~s ~s)~%" xs ys)
(inc! counter)))
(format #t "~d~%" counter)))
gosh> (pair '(a b c d))
(a b)
(a c)
(a d)
(b c)
(b d)
(c d)
6
>>600 スレちがいゴメン
602:デフォルトの名無しさん
07/09/30 22:43:18
>>601
うほ! ありがとございます!
srfi-42 ムズカシイんです><
Gauche のマニュアルだけでは良くわかりませんでした><
サンプルがいっぱいのってるチュートリアルみたいなものがどっかにあれば、、、
スレ違いスミマセン
603:デフォルトの名無しさん
07/10/01 00:27:06
>>594
出力につかっていいの関数は何?使ってる処理系は何?
最初に聞いた質問にはちゃんと意味があって、こーゆう状況を防ぐために教科書や処理系を聞いてたんだよね。
大抵の環境なら (print (list a b)) と (print counter) にすれば動くと思うけれど。
>>598
そんなコードを見せても意味があるとは思えない。
俺はこの質問者もひょっとしたらモノになるんじゃないかと期待をしているのだよ。
604:デフォルトの名無しさん
07/10/02 00:02:57
>>584
labelsやletやformatを使わないでかけますか?printコマンドは知ってます
605:デフォルトの名無しさん
07/10/02 01:08:09
任意の型のデータxを第一引数、cons型のデータのリストdを第2引数として取り、dの要素のうちで、そのfirst部分がxに一致する(ただし比較はequal()で行うものとする)ものがあればそのような要素の最初のものを返し、さも無ければnilをかえす関数assoc_equ()を定義せよ
この問題できないんですけどどなたかできませんか?よろしくお願いします><
606:デフォルトの名無しさん
07/10/02 01:16:13
>>605
(defun assoc_equ (x d)
(assoc x d :test #'equal))
607:デフォルトの名無しさん
07/10/02 02:14:08
できました!ありがとうございます!!!
書き方がまだ習ってない技法なので、もっと簡単に書き換えるとどんなのになるのでしょうか?
よろしかったら教えていただけませんか?
ループなどでもできると聞いたので。。。
608:デフォルトの名無しさん
07/10/02 02:20:35
その昔、テーラー展開の式が書いてあってこれを証明せよって問題があった。
で、その回答に「テーラー展開より」って書いたやつがいたのを思い出した。
609:デフォルトの名無しさん
07/10/02 02:27:10
コーモンリップス
610:デフォルトの名無しさん
07/10/02 02:38:30
>>609
夜中にそんなこと言ってるからおまえは駄目なんだよ
611:デフォルトの名無しさん
07/10/02 03:04:53
(´・ω・`)こ、こーもん・・・
612:デフォルトの名無しさん
07/10/02 22:22:06
>>607
半年で let がでてこないのはすごいなぁ。
書いてもいいけど、もう締切は過ぎたんじゃないの?
ループによる解答は 582 で出てるよ。
613:デフォルトの名無しさん
07/10/03 05:12:01
ある情報を処理するアプリケーションをC言語で書きました。
で、そのアプリケーションは処理結果としてdouble型の数値を3つ結果として出力します。
ここからが質問なのですが、
ウェブサーバを立ち上げて、クライアントが情報を入力すると、このアプリケーションが処理して
処理結果の数値をデーターベースに格納出来るようにしたいんです。
この用途にKahuaは使えるのでしょうか?
もしくはコレが出来るライブラリみたいな物は有りますでしょうか?
614:デフォルトの名無しさん
07/10/03 12:28:35
>>613
そのアプリケーションをあなたが書いた物と仮定する。
やりたいことは可能だが、意味のある事じゃない。
むしろ元アプリケーションをfastcgiライブラリを使うように少し修正してmod_fastcgiを使うか
shellでcgiを書いて受け渡す方が楽だろう。
615:デフォルトの名無しさん
07/10/03 22:17:49
>>614
意味がないとまで断定するこたぁないと思うが。
AllegroServe で R と連携する例。
URLリンク(cl-www.msi.co.jp)
616:デフォルトの名無しさん
07/10/03 23:14:32
>>615
元コードがCで書かれていて、さらにKahua上から制御できるかいと聴かれているのだから意味が薄いって事なんだよ。
しかもあなたの提示はAllegroServeじゃないか。
そりゃ元コードがCommonLispだったら楽しそうだし、もしも元コードがSchemeで書かれていればKahuaでの実装に美しさを感じるだろうことは否定しないんだけど。
ちなみに僕のおすすめはFastCGIでLisp実装っていうもっと尖っているけどApacheあたりと仲良くモードです。
617:デフォルトの名無しさん
07/10/03 23:38:40
ヒント: ここは Common Lisp 入門スレ
Kahua でも AllegroServe でも別にいいんじゃね?
標準入出力/パイプ/ソケットで制御するなら別にどっちでもかわらんだろう、と思って R をごにょごにょする例を紹介したのだが。
618:デフォルトの名無しさん
07/10/03 23:51:05
いいじゃん、「意味」なくても。
>>613 の要件ってLisperが気にするほど効率要求されてないと思う。
だとしたら、せいぜい AllegroServe+FFIとか、gauche からCを呼びだす方法とか
(おれはkahua知らないけど)、軽く面白そうな選択肢を教えてあげりゃいいんじゃね?
619:デフォルトの名無しさん
07/10/03 23:52:08
>>617
いや、CommonLispスレに元CコードをKahuaとまぜこぜ可能かって聴かれたからこそあの回答なんですけど orz
そりゃ僕だって全部CommonLispでってのはスレ的に正しいとは思うけどあんまりなんじゃないかい?
なんとなく質問した奴の状況が感じられる状況と似た境遇にあった俺が2ch的にあまちゃんなんだろうけどさ。
620:デフォルトの名無しさん
07/10/04 00:12:13
「元CコードをKahuaをまぜこぜ可能か」って質問だったの?
「アプリケーションをC言語で書きました。」だからスタンドアロンな実行バイナリをイメージしてたよ。
んで >>615 を紹介したわけ。別に Kahua でもいいかなーと。run-program で起動して結果をうけとるでもいいんじゃねーと。
あくまで外部コマンド + Lispサーバで、「全部CommonLisp」とか書いたつもりはないけど…。
621:デフォルトの名無しさん
07/10/04 00:24:45
>>620
あー、今夜の僕は読解力ないかも(週も半ばなのに大分呑んだし)
僕が解釈したのは元の計算コードをCで記述済みでウェブサーバにKahuaを使った場合にそのCコードの産物とどうやってやりとりしたらいいの?
って事だったんで、そこまで境界がきれいにわかれてるならLispに拘らない方がいいのじゃないのっていうスレ的には正反対の結論がでちゃったんだ。
;;;うーむ、今受験の引っかけ問題や詐欺師がきたら死ねるなぁ。
622:デフォルトの名無しさん
07/10/07 18:49:58
(setq abcd (list 'A 'B 'C 'D))
(defun merg (seq1 seq2)
(if (null seq1)
seq2
(cons (car seq1)
(merg (cdr seq1) seq2))))
(defun app (seq elem)
(merg seq (cons elem NIL)))
(defun comb (seq)
(defun ith (que i)
(if (= i 1)
(car que)
(ith (cdr que) (- i 1))))
(defun lp (tmp i n)
(print (app (list (car tmp)) (ith tmp i)))
(cond ((null (ith tmp 3)) n)
((null (ith tmp (+ i 1)))
(lp (cdr tmp) 2 (+ n 1)))
(T (lp tmp (+ i 1) (+ n 1)))))
(lp seq 2 1))
の関数combを変更して
相異なる要素からなる系列 seq の要素中 num 個(num: 系列長以下の非負整数)を選んだ組合せをすべて表示し場合の数も表示する
関数 (comb seq num) を作る問題を教えてください
623:デフォルトの名無しさん
07/10/07 18:51:10
たとえば(comb abcd 3)の評価は
(A B C)
(A B D)
(A C D)
(B C D)
4
のようになります。(comb abcd 0) は
1
と評価されます
624:デフォルトの名無しさん
07/10/07 19:11:17
>>622
宿題かい?
宿題だと仮定して、ここで答を聴いてしまうと、君は次の宿題もここか他で答を探す羽目になるんじゃないのかい?
だとすれば、君がなすべき事はその宿題のどこがわからないかを表明して助けを乞う事であって解を求める事じゃないのではないの?
宿題じゃないならごめんな。
625:デフォルトの名無しさん
07/10/07 19:18:18
>>624
宿題です。
(A B C D)
ってあったらまずAをチョイスしてnum個のリストになるまでリストに要素を追加していくやり方を考えているんですがうまくかけないんです
626:デフォルトの名無しさん
07/10/07 22:03:55
>>622
あのさー >>578 で全く同じ宿題がでてるんだけど。締切は 9/31 までだったんじゃねーの?
>>578 がウソつき野郎だったのかループを狙ってるのか……。たぶん君も前の彼も大学生なんだよな?
宿題の丸投げくらいはちゃんとできるようになろうよ?エスパー募集ばっかしてたら社会でやっていけないよ。
どんな関数使っていいのかとか、環境とか、締切とか、宿題丸投げするなら最低でもそのへんは書こうよ。
前の彼も後で「format知りません」「let も使わないでください」とかいいだすし。
627:デフォルトの名無しさん
07/10/07 22:10:20
いや、問題はちょっとややこしくなってるぞ。
たぶん >>578 の続編だろう
628:デフォルトの名無しさん
07/10/07 23:24:28
だからー、宿題に丸まる答えてあげるのやめなよ。
せいぜいヒントを出すとか、「こういう風に考えてやってみたけどうまく行きません、
どこがまちがってるのでしょうか?」と言う質問にだけ答えるとか。
丸まる答えたらますます自分で考える気を無くすよ、多分。
629:622
07/10/07 23:30:44
再帰的に(A B C D)のリストからまず先頭Aで
numが0になるまで
Aをとって(A)というリストをつくる。numを1つ減らす
Bをとって(A B)というリストをつくる。
・・・
みたいに考えたんですが(A) (A B) というリストをうまく保持しておけません。
630:デフォルトの名無しさん
07/10/07 23:35:30
>>628
こんな所に質問しにくる馬鹿が今後どんな人生を歩もうと、そんなことどうでもいい
631:デフォルトの名無しさん
07/10/07 23:47:49
出題者のレベルもアレな感じがするのは気のせいか
632:デフォルトの名無しさん
07/10/07 23:52:47
>>631
そうですね
633:デフォルトの名無しさん
07/10/08 00:02:15
>>628
最初にそう聞いてくる奴ならそう答えるさ。だがちゃんと丸投げですと宣言したならズバリ答えを解答しちゃうよ。
もし本当にやる気があるなら、ズバリの答えでもちゃんと見て考えるさ。見とり稽古みたいにね。
全体図と筋道を見せてからゆっくり詳細を解析したいって人もいるかもしれない。
やる気がない人をむりやりやらせるなんてのは非生産的。
634:622
07/10/08 00:03:38
>>633
やる気はあります!
635:デフォルトの名無しさん
07/10/08 00:43:23
そうか。んじゃ使ってる Common Lisp 処理系で次を見てみよう。
(loop for l on lst ;; '(A B C D) => '(B C D) => '(C D) => '(D) => NIL
for e = (car l) ;; A => B
for l2 = (cdr l) ;; '(B C D) => '(C D)
do (print l)
(print e)
(print l2))
636:デフォルトの名無しさん
07/10/08 06:21:28
やる気があるのなら教官に聞けよ
637:デフォルトの名無しさん
07/10/08 06:41:15
宿題がでると妙に活気づくなあ。よいよい
638:デフォルトの名無しさん
07/10/08 08:29:35
>>622
Scheme 臭いコードだなあ。
internal defun なんて意味不明なこともやってるし。
どこの大学のなんて香具師が担当してる講義なのか晒しちゃえよ。
639:デフォルトの名無しさん
07/10/09 09:02:43
scheme臭がすると異常反応するスレw
640:デフォルトの名無しさん
07/10/09 09:15:13
過剰反応っていう言葉はあるけど、異常反応ってのはあんまり聞かないな。
641:デフォルトの名無しさん
07/10/09 12:40:54
Scheme臭に抵抗無かったらSchemeを使ってるよ
642:デフォルトの名無しさん
07/10/09 13:13:23
俺はScheme臭に抵抗ない、むしろSchemeっぽい書き方の方が好きだけど、
Common Lispの便利な機能でSchemeにないものが多いからCommon Lisp使ってる
643:デフォルトの名無しさん
07/10/09 13:16:26
たとえばなに
644:デフォルトの名無しさん
07/10/09 13:25:48
スペシャル変数とか
645:デフォルトの名無しさん
07/10/09 20:24:02
エレガントかつ強力なloop構文とか
646:デフォルトの名無しさん
07/10/09 21:04:26
format
647:デフォルトの名無しさん
07/10/09 23:45:18
reader macro
648:デフォルトの名無しさん
07/10/10 01:03:54
compile, eval-when, disassemble, trace, optimize ... とか?
でも Scheme も Gauche なら便利だから使うな。頭は別の言語として切り替わるのであんまり困る事はない。
むしろ片方を撰択して、もう片方を見下す、みたいな行為をやめて両方使えばいいじゃん。
649:デフォルトの名無しさん
07/10/10 01:17:20
見下されたと錯覚した人が攻撃に転ずる気がする。多くの戦争と同じ原理だ。
650:デフォルトの名無しさん
07/10/10 01:30:52
CL の人としては funcall はクソとか、*常に* 末尾再帰を最適化しないとクソ、みたいな一面的な見方に反論したくなる気持ちはわからんでもない。
が、実際にいちいち反論する人は 2ch 以外ではあんまりみかけないなぁ。
651:デフォルトの名無しさん
07/10/10 01:32:20
そういや 622 はどうなったんだ?締切とか大丈夫なのか?
652:デフォルトの名無しさん
07/10/10 07:38:56
ΣってどうやってCommon Lispで定義出来ますか?
リスト(2 4 6 8 )を全部足す奴。
なるべく再帰で。
653:デフォルトの名無しさん
07/10/10 07:58:10
>>652
(loop for x in '(2 4 6 8) sum x)
654:デフォルトの名無しさん
07/10/10 08:38:38
そういうときは apply 使うのが好きかな
(apply #'+ '(2 4 6 8))
655:デフォルトの名無しさん
07/10/10 09:53:05
>>649
そんでもって、「見下してないよ、それはあなたの被害妄想だよ」と言い張れる言い方で見下すのが
ネットの基本戦術なんだよな。
656:デフォルトの名無しさん
07/10/10 12:09:12
ACLのアカデミック版って($99の奴)って
日本の学生って適応されないの?
ざっとみたところ、米国のみって記述が見つからなかったけれど。
657:656
07/10/10 18:03:34
お金払ったのに、いつまでたってもソフトウェアダウンロードの案内がこない
(ストアのアカウント作成の案内も)と思っていたら、
URLリンク(help.yahoo.co.jp)
マジカよ。アリエネェだろ。
フリーメールで登録するんじゃなかった。
日本のFranzに問い合わせても大丈夫かな。
658:デフォルトの名無しさん
07/10/10 19:52:34
(defun sigma (x &optional (y 0))
(if (null x) y
(sigma (cdr x) (+ (car x) y))))
再起にしたらこんな幹事?
659:デフォルトの名無しさん
07/10/10 21:01:45
末尾再帰って指示ないなら出題者はこっちを意図してるかも
(defun Σ (list) (if list (+ (car list) (Σ (cdr list))) 0))
660:デフォルトの名無しさん
07/10/10 21:04:16
>>654でまずい理由でもあるの?
>>658-659はΣでもなんでもなく、+の再定義でしかない
661:デフォルトの名無しさん
07/10/10 21:33:34
>>660
拡張しにくい。範囲の制限や関数 f を適用した結果を集めたいときに、関数ならパラメータを追加することで対応できる。
というかそっちの方向に進むと思われるので、(apply #'+ ...) じゃなくて普通は自前で実装するところからはじめるんだろう。
662:デフォルトの名無しさん
07/10/10 22:19:46
sbclのコンパイルについて教えてください・・・。
動作環境はWin XP, sbcl Ver.1.0.9です。
URLリンク(fridge-shell.blogspot.com)
このHPと同じように操作すると、outファイルができるので、
これをout.exeにリネームしてコマンドプロンプトで実行すると
応答がかえってこずに固まってしまいます。
このスレで、sbclでコンパイルした実行ファイルはサイズが大きい(10MB?)
というレスをみましたが、outファイルは2kBしかありません。
ネイティブコンパイルする手順がWin版とLinux版では異なるのでしょうか・・・
663:デフォルトの名無しさん
07/10/10 22:34:35
>>662
SBCL Windows 版はまだ誰もが使えるような状況ではありません。
試験的なリリースですので問題を自力で解決できる人向けのものです。
Windows 版自体がまだ実験的なものですので、EXE の生成機能は非サポートです。
「ネイティブコンパイルする」 == 「.exe を生成する」というのは Lisp の世界においては成立しません。
.exe を生成するのは「スタンドアロンなバイナリ/実行形式を生成する」と呼ばれる機能です。
ネイティブコードの生成自体はもっと簡単です。プロンプトで (compile nil (lambda (x y) (+ x y))) と打つだけで
コンパイラはネイティブコードを生成できます。
664:662
07/10/10 22:46:09
>>663
ご回答ありがとうございます。
Win版はexeの生成は非サポートだったのですね・・・。
こういう時だけlinuxが羨ましくなります。 orz
いろいろと勉強になりました。
ありがとうございました。
665:デフォルトの名無しさん
07/10/10 23:00:41
ついでに言っておくと、Lisp の世界ではスタンドアロンバイナリ生成を使う機会はほとんどない。
なぜなら、Lisp の世界ではアプケーションはユーザーが触って変更できる「システム」である事が多いから。
Emacs や Maxima や Aximo などはユーザーがプログラムを投入するたびに .exe を生成したりしない。
ベースの機能にユーザーによる拡張をインクリメンタルに追加しながら増えていくんだ。
この辺が感覚的に合わないなら Scheme のほうがいいかもしれない。
# LispWorks や AllegroCL、CormanCL のような商用の話や、GCL, ECL, といった GCC をバックエンドに使う連中とかはまた別
666:デフォルトの名無しさん
07/10/11 01:40:48
>>665
「Schemeのほうがいい」理由がよくわからん。
単にスタンドアロンバイナリをスマート作れない処理系が多いというだけでは?
667:デフォルトの名無しさん
07/10/11 02:19:03
サイズはでかいけどwinのsbclでsave-lisp-and-dieは
結構まともに動いているように思う。
一般的でないのはlispで配布するという機会が見ている分にすくないだけで
exe作るのって他所の言語と比べて難しいとは全く思わないのだけれど。
lispで作られて配布されている有名なソフトってあります?
668:デフォルトの名無しさん
07/10/11 08:05:42
>>662
sb-executable って、もうほとんどサポートされてないよ。
save-lisp-and-die の :executable に置換済み。
>>667 が言ってるように、save-lisp-and-die は Win32 でもちゃんと動く。
C:\>sbcl
This is SBCL 1.0.9, an implementation of ANSI Common Lisp.
<snip>
This is experimental prerelease support for the Windows platform: use
at your own risk. "Your Kitten of Death awaits!"
* (defun main () (print "Hello, SBCL!") (quit))
MAIN
* (save-lisp-and-die "hello.exe" :toplevel #'main :executable t)
[undoing binding stack and other enclosing state... done]
[saving current Lisp image into C:\\hello.exe:
writing 1960 bytes from the read-only space at 0x02000000
writing 1640 bytes from the static space at 0x02100000
writing 22888448 bytes from the dynamic space at 0x09000000
done]
C:\>hello
This is experimental prerelease support for the Windows platform: use
at your own risk. "Your Kitten of Death awaits!"
"Hello, SBCL!"
669:デフォルトの名無しさん
07/10/11 08:12:26
便乗質問させてもらうけど
1. ネイティブコンパイラがある(コンパイルした結果が速い)
2. 実行可能形式(EXEやDLL)が作れる
3. マルチスレッドアプリが書ける。
4. (基本的な)CLOS(オブジェクト指向)機能のサポート
5. ソケットインターフェースのサポート
6. 作成したアブリを配布する際のライセンス料が安い、もしくは無料
これらの条件を全て満たすフリー
もしくは比較的安価な商用Lisp処理系と言ったら
やっぱりCorman Lispが一番かな?
ブラットフォームはWindowsが前提です。
670:デフォルトの名無しさん
07/10/11 09:41:35
Windows ってだけでフリーの実装はほぼ全滅だからね
Lisp で遊ぶなら UNIX
671:デフォルトの名無しさん
07/10/11 12:25:35
>>669
比較的安価ってだけでLispWorksがそれに該当するんじゃない?
(対象がACLだから安く感じるだけかもしれんが)
672:デフォルトの名無しさん
07/10/11 13:23:22
商用だとTorrentはまずいかな。
673:デフォルトの名無しさん
07/10/11 13:46:22
Windowsにポーティング中のSBCLはGCのバグまだ残ってるみたいね。
やる気ないにしても、POSIX以外だとそんなに移植が困難な実装なのかな?
それともWindowsで動かせちゃダメみたいな変な勢力が邪魔してるとか。
674:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/10/12 01:45:55
俺は OpenMCL をいつか弄りたいと思ってる。スレッド廻りきちんとしてそうだし、フットプリント小さいし。
676:デフォルトの名無しさん
07/10/12 08:42:10
OS7でMCL使ってたけどあの環境良かったなあ。
677:デフォルトの名無しさん
07/10/12 20:55:25
2ch発のLisp処理系作ろうぜ
678:デフォルトの名無しさん
07/10/12 21:17:50
>>677
よし、yacc と PHPで作ろう。
679:デフォルトの名無しさん
07/10/12 21:34:48
どうせならPHPのみで
↓まかせた
680:デフォルトの名無しさん
07/10/12 21:56:21
>>676 どんな感じだったの?紹介してくれよ。
681:デフォルトの名無しさん
07/10/12 21:59:26
LISP作るのにyaccはどう考えても出番が無いだろ
682:デフォルトの名無しさん
07/10/12 22:07:40
>>681
リーダーマクロとかあるからあった方がよくね?>>yacc
勿論Common Lispをフル実装するんだよ。
683:デフォルトの名無しさん
07/10/12 22:11:18
yaccで作ったんじゃ動的なリーダマクロにならないじゃん
684:デフォルトの名無しさん
07/10/12 22:19:27
本スレでやってくれ。
685:デフォルトの名無しさん
07/10/12 23:31:06
どうせ作るならCommonLISP上位互換にしてください。
このスレではCommonLISPの仕様を満たしてないと
LISPとは認めませんので。
686:デフォルトの名無しさん
07/10/12 23:33:15
荒しうぜぇ……
687:デフォルトの名無しさん
07/10/12 23:55:52
自分の気に入らないもの=荒し
やれやれ・・
688:デフォルトの名無しさん
07/10/13 00:29:21
確かに、やれやれとしか言い様のない妄想等式だね。
689:デフォルトの名無しさん
07/10/13 00:42:28
言語の実装が入門スレにふさわしいわけかね。まぁ本スレへの誘導も無視してるし、荒しだと思っとくよ。
690:デフォルトの名無しさん
07/10/13 01:36:29
>>677がここで話振ったんだから奴に任せようぜ
691:デフォルトの名無しさん
07/10/13 03:21:45
処理系作るってのも立派な入門内容だと思うけどなあ。特にLispの場合は。
動作原理知るために1度は通るでしょ。
>>677の枕詞にCommonLispでもあれば納得したわけ?
つーかこの程度で荒らし認定かよ。
どうせ特定の一人だろうけど、きもすぎるわ。
692:デフォルトの名無しさん
07/10/13 07:39:45
まぁやるのはいいと思うよ。俺は興味ないけどさ。
具体的な作業をはじめるか、本スレに移動すりゃ文句いわれないんじゃない?
693:デフォルトの名無しさん
07/10/13 12:40:25
荒らしというほど荒らされてるようにも見えないしなあ。
ぐだぐだ言ってんのは約一名だろうね。
694:デフォルトの名無しさん
07/10/13 13:56:05
>685が煽りっぽい言葉を書いてるのは確かだろ。
「Common Lisp上位互換」なんて洒落にもならん事を。
>686が「荒らし」と言ってるのはその事だけだろ。
695:デフォルトの名無しさん
07/10/13 14:18:24
>>686が誰を指して言ったかなんて本人にしかわかんと思うぞ
本人乙
696:694
07/10/13 17:26:36
>695
俺は >686本人じゃないけど勝手に自分達が非難されてると解釈して
感情的に反応するより遥かにマシだろ?
697:デフォルトの名無しさん
07/10/13 17:41:36
>>695
> わかんと思う
どういう意味ですか?
698:デフォルトの名無しさん
07/10/13 19:37:16
和姦と思う
699:デフォルトの名無しさん
07/10/14 20:50:25
どうも、誰か一人が自分を攻撃しているというふうに捉えているようだね・・・
どうせならなにか生産的な話題を振って荒しじゃない事を行動で示せばいいのに。
結局 >>686 が正しかったのかね。
700:デフォルトの名無しさん
07/10/14 22:06:45
2ch発のCommonLisp処理系作ろうぜ
701:デフォルトの名無しさん
07/10/14 22:59:06
成功したプロジェクトが実は 2ch 発だったってことはよくあるけど、
最初から 2ch 発でって言ってて成功したためしはほとんどないんだよね。
702:デフォルトの名無しさん
07/10/14 23:22:31
そもそも2ch発なんて名ばかりで実質匿名の個人作業公開オナニーだろ
703:デフォルトの名無しさん
07/10/14 23:43:58
「2ch発」という言葉にどんな定義を見出しているのかがわからんレスだな。
急に中二病による発作に見舞われて、いつもよりちょっと大きめの打鍵音を立てて
ケツに「公開オナニー」って書き加えた辺りの心の動きだけは、容易に理解できるけど。
704:デフォルトの名無しさん
07/10/15 05:26:32
出たよ定義厨
705:デフォルトの名無しさん
07/10/15 11:45:40
とりあえず厨をつけてみたのはわかった。
もうちょっとうまく展開できてたら、苦し紛れがバレなくて済んだかも。
706:デフォルトの名無しさん
07/10/15 19:48:07
オナニー禁止なんてお前らプロテスタントかっつーのwwww
707:デフォルトの名無しさん
07/10/15 20:25:09
誰かが俺を攻撃してる!→ファッビョーン→荒れまくり
というのは、以前に本スレでも似たような流れがあったよねぇ……。
ちょっと前に宿題聞いてた人たちは、結局自力で解けたの?
708:デフォルトの名無しさん
07/10/15 23:06:48
(a (b) c (d (e)) f)
こういうリストがあったとしてeを削除したいんですがどうやったら取り出すことができますか?
関数定義したいんですが。
first secondなどで取り出してるんですがうまくいきません。
アドバイスありましたらよろしくお願いします
709:デフォルトの名無しさん
07/10/15 23:07:50
>>707
まだ解けないです!
710:デフォルトの名無しさん
07/10/15 23:29:01
>>708
ほしい結果はこれ?
(a (b) c (d ()) f)
711:デフォルトの名無しさん
07/10/15 23:48:27
>>708
listっていってもconsセルの集まりなんだから絵を描いて整理してみれば。
712:デフォルトの名無しさん
07/10/16 09:33:47
まずは簡略化した問題の解を得て、それを元に改良していけばいい。
708ならまずはネストしていないリスト(a b c d e f)からeを除く関数を実装する
あたりから始める。
(目的は近似解を得ることなので、deleteとか使わず自分でやる)
713:デフォルトの名無しさん
07/10/16 13:20:35
>>710
>>711
>>712
レス㌧
再帰で何とかできました。
714:デフォルトの名無しさん
07/10/16 14:27:07
どうやって出来たか教えてー
715:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/10/16 23:19:42
マクロにするか演算子の値で分岐しないといけないような。
シンボルを識別子とみなして値を取り出すって Scheme でできたっけ?
717:デフォルトの名無しさん
07/10/16 23:25:04
evalが使えるはず
718:デフォルトの名無しさん
07/10/16 23:29:54
eval使うまでもなく
(define op-alist `((+ ,+)(- ,-) ...))
みたいなの作っとけば
((cadr (assq (cadr infix) op-alist)) (car infix) (caddr infix))
で呼べるでしょ
719:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/10/16 23:36:45
やはりschemerの方が知能が上みたいですね。
CommonLispは小手先だけ器用になりそなイメージです。
721:デフォルトの名無しさん
07/10/16 23:48:11
i < おまえより知能の高い酸のブロッブを知っているぞ
722:デフォルトの名無しさん
07/10/16 23:51:27
>>719
毎回比較したがるクセは直したほうがいいね
723:デフォルトの名無しさん
07/10/17 00:10:10
関数定義が
(define hogehgoe
(lambda (x) ...)
ってのがムカツク。引数の数がちょっと見ではわかりづらい。
しかし、(define (hogehoge x) ...)ってのはなんとなく呼び出した結果を定義してるみたいで嫌だ。
(defun hogehoge (x) ...
は良い。hogehoge っていう(関数)シンボルを定義してるんだなーって感じがしてわかりやすい。
724:715
07/10/17 00:27:32
回答していただいてありがとうございます。
リストは基本的なデータ型しか入れられないんですね。
だから関数を入れると型が不明のシンボルとして扱われてしまうと。
勉強になりました。ありがとうございます。
725:デフォルトの名無しさん
07/10/17 00:49:47
>>724
なんかちょっと誤解してるみたいだけど、まあそれはおいといて、
schemeでわかんなくなったら本スレの方においで。
このスレの住人はschemeコンプレックス発動で
それどころじゃないみたいだし。
726:デフォルトの名無しさん
07/10/17 00:50:29
common lispで
gauche の util.math みたいなのありませんか?
無くても自分で作るんですが。
arnesiのmatcherが惜しい。
727:デフォルトの名無しさん
07/10/17 00:57:43
質問の仕方がなってないな
gaucheのutil.mathとやらが何を提供してるのかまず書け
728:デフォルトの名無しさん
07/10/17 01:52:07
どっちが上とか、コンプレックスなんて持ってるのは初学者だけだよ。
ある程度やってる人は、Common Lisp も Scheme わかってる。
どの言語が上とか下とかじゃなくて、用途によって使い分けてるだけ。
729:デフォルトの名無しさん
07/10/17 01:59:05
>>723
コード中で(func args)っていう呼び出しを思いついたら、
そのまま(func args)をコピってきて(define (func args) ~)とできるから
むしろ便利だと思うけどな。そもそも構文唐なわけだし。
defunは括弧の位置を修正しなきゃいけない。
730:デフォルトの名無しさん
07/10/17 02:19:14
>>727
申し訳ない。
ML likeなパターンマッチライブラリで・・・と
clikiに似たのがあったので終了します。
ググっても無くググ子っても見付からないのでつい聞いてしまった。(code search)
731:デフォルトの名無しさん
07/10/17 10:27:00
>>716
715では無いが>>715をマクロでやろうとするとどうなるんだ?
732:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/10/17 21:27:18
(defmacro m (lst)
`(,(second lst) ,(first lst) ,(third lst)))
(m (1 + 2))
=> 3
734:デフォルトの名無しさん
07/10/18 00:29:10
WINのGCLで一文字入力を待つのはどうやるのでしょうか
CLISPだとread-charでなんとなくできてしまうのですが
GCLだと待ってくれません。
735:デフォルトの名無しさん
07/10/18 06:38:01
(dotimes (x 10) (progn (princ "hello") (sleep 1) ))
などとやって1秒ごとに表示させたい場合GCLではどうやれば
いいのでしょう。CLISPだとできるのですが
GCLだと10秒後にまとめて表示されてしまうのでうまくいきません。
736:デフォルトの名無しさん
07/10/18 07:08:21
バッファをフラッシュしなさい。
force-output。
737:デフォルトの名無しさん
07/10/18 10:45:26
ありがとうございます。
1秒ごとにちゃんと止まりました。
(dotimes (x 10) (progn (princ "hello") (read-char) ))
みたいなことはできないのでしょうか。一個表示するたびに
ユーザがなにかキーを押すまで待たせたいのですが、
LISP的には普通どうやるのでしょうか。
prognはLISP的にはよろしくないのでandをつかえ、と
本に書いてありましたが、
ということはLISPは逐次処理はタブーなのでしょうか・・・?
738:デフォルトの名無しさん
07/10/18 14:11:17
>>737
> prognはLISP的にはよろしくない
なんでよくないの?
739:デフォルトの名無しさん
07/10/18 15:43:18
>>737
Common Lisp で文字単位の入力を行う互換性のある方法は無いので、
今のところは read-line を使って Enter 入力待ちで妥協しておくのがいいよ。
ところで今更なぜ GCL?
740:デフォルトの名無しさん
07/10/18 15:56:13
andにするべきだそうです。
741:デフォルトの名無しさん
07/10/18 15:58:14
WINだとマルチバイトのファイル名と(SYSTEM)がつかえるのが便利ですね
742:デフォルトの名無しさん
07/10/19 23:23:50
GCLって今更な処理系なんですか?
743:デフォルトの名無しさん
07/10/20 00:43:51
うんそうだね
744:デフォルトの名無しさん
07/10/20 10:46:00
今年の7月まではcommitが続けられてたし、今更って言う程終了したプロジェクトでもないぞ。
確かにこのまま停滞が続く可能性は否定できないが。
745:デフォルトの名無しさん
07/10/20 12:05:13
LISP作ってる人ってなんだか
Windowsではあきらかにやる気ないですよね。
746:デフォルトの名無しさん
07/10/20 13:01:21
Lisp に限った事じゃ無いと思うけど。
747:デフォルトの名無しさん
07/10/20 13:57:03
切ないですね。
748:デフォルトの名無しさん
07/10/20 14:37:22
Windowsみたいな処理系でやる気を出せというのが難しい。
まずはUNIX処理系で形にしておいて、それをWin用にポーティングするのが常に賢い。
Microsoftは答えじゃない。Microsoftは質問だ。そして、答えはNOだ。 -- Erik Naggum
749:デフォルトの名無しさん
07/10/20 17:31:59
OSを処理系と呼ぶ人も珍しいね。
750:デフォルトの名無しさん
07/10/20 17:46:03
>>745
逆。Windows の人たちが Lisp に興味ないんだよ。
ほとんどの Lisp 処理系の開発者は仕事でやってるわけじゃないので
他のプラットフォームへの移植までは難しい。
Windows プログラマから貢献がないとどうにもならないわけ。
自分の例で恐縮だが、俺程度でも SBCL の開発に手を出したら
FreeBSD での問題はずいぶん減ったし、thread や amd64 も
動くようになった。
どこの処理系も人材難だから、Windows プログラマが一人参加
するだけでも状況はずいぶん変わるはずだよ。使いたい処理系が
Windows でうまく動かないって思ってる人は、その処理系のソースを
眺めてみたら?
751:デフォルトの名無しさん
07/10/20 19:50:18
Unix系でちゃんと動いてる処理系が多いのは、それが簡単だから。
Win32でちゃんと動かすってのは結構大変なんだよ。設計がぐちゃぐちゃだから。
いっそのこと .NET CLR 用に作るとか考えるほうが建設的な気がするな。
752:デフォルトの名無しさん
07/10/20 20:09:46
>>750=旧よろずやの中の人
753:デフォルトの名無しさん
07/10/20 20:14:50
>>750
FreeBSD ユーザーな Lisper の一人としてあんたには感謝しているぜ!
SBCL のスレッドに釣られて Linux に走る Lisp 仲間は多かったからな。
754:デフォルトの名無しさん
07/10/20 20:18:36
>>752
>>750 は SBCL だろ? よろずやの人は CLISP じゃなかったっけ。
755:デフォルトの名無しさん
07/10/20 20:55:29
>>754
よろずやの人はcmucl -> sbclメイン他いろいろ
です....って何かストーカーみたいだなw
756:デフォルトの名無しさん
07/10/20 22:15:31
>>744
つうか数人のデベロッパしかないLisp系プロジェクトでは数ヶ月~数年commitがないなんて良くあること。
基本的にLispのみで喰えてる人はいないんで、みんな余暇にしか作業しないからな。
先にRubyとかを見ていると止っているように見えるのかもね。
>>755
754はデベロッパーとしての話なんじゃないか。
757:デフォルトの名無しさん
07/10/21 00:11:05
まあGCLはいろいろあったからね
758:デフォルトの名無しさん
07/10/21 01:00:01
って何?
759:デフォルトの名無しさん
07/10/21 01:22:30
確かメインの開発者が事故で亡くなられた。
760:デフォルトの名無しさん
07/10/21 01:28:23
GCLってGNU Common Lisp?
761:デフォルトの名無しさん
07/10/21 01:45:23
(質問は)そっちかよ…
762:デフォルトの名無しさん
07/10/21 02:07:02
>>759
>亡くなられた
偉いなw
俺だったら"逝っちゃった"とか平気で書きそうな気がorz
763:デフォルトの名無しさん
07/10/21 15:33:05
KCL な神たちはかかわってないの? GCL になってからは
764:デフォルトの名無しさん
07/10/21 16:08:11
かかわってない
765:デフォルトの名無しさん
07/10/21 16:11:49
LISPってリアルタイムの制御とかには使えるんですか。
766:デフォルトの名無しさん
07/10/21 16:47:41
ゲームとかロボットで使ってる例はあるけど
GC とメモリフットプリントの問題を何とか
しなくてはいけない
767:デフォルトの名無しさん
07/10/21 18:28:20
ロケットか衛星の制御に使ってて宇宙空間にあるのを地上からデバッグした
という話がどっかにあった。
768:デフォルトの名無しさん
07/10/22 00:36:44
なんでもLispなんだよ
あっちに見えてる掃除用ロボットだってそうだよ
再帰できたらやりてえんだよ
おれ人工知能が書けるほどハッカーになれねえかな
計算機科学の巨人だよ
でもそうなったら自分で作った知能とやっちゃうかもしれねえな
機械だって色っぽいよお
769:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/10/23 20:25:05
ありがとうございます。参考にします。
772:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/10/25 23:35:20
SBCLに組み込まれている関数のリファレンスとかありませんか?
あと、現在定義されている変数の一覧とか確認できると便利なんですが・・・
→トップレベルで (setf xxx 111)で定義したxxxの一覧とか
774:デフォルトの名無しさん
07/10/25 23:57:23
HyperSpec
775:773
07/10/25 23:58:15
自己レスだが、リファレンス見つけた
全部英語だが・・・ orz
URLリンク(www.cs.cmu.edu)
>あと、現在定義されている変数の一覧とか確認できると便利なんですが・・・
>→トップレベルで (setf xxx 111)で定義したxxxの一覧とか
↑これはご存知のかた教えてください m(_ _)m
776:デフォルトの名無しさん
07/10/26 01:32:57
(loop for s being the symbols in *package* if (boundp s) collect s)
とか?
777:デフォルトの名無しさん
07/10/26 16:55:01
777ゲット!
778:デフォルトの名無しさん
07/10/28 16:24:23
与えられた引数が文字列であるか数値であるかを判断する…ってのはどないしたらいいんでしょうか。。
779:デフォルトの名無しさん
07/10/28 16:29:18
numberpとかstringpじゃだめなの?
780:デフォルトの名無しさん
07/10/28 16:33:16
>>779
ありがとうございました。
781:デフォルトの名無しさん
07/11/02 00:36:22
Lispからテーブル形式のデータを出力して、エクセルなどで開いたり、逆に表形式のデータを読み込んで変数に値を貼り付けたりしたいのですが、そういうことは可能なのでしょうか。
Lispは、Allegro Common Lispを使っています。
782:デフォルトの名無しさん
07/11/02 00:53:10
>>781
CSV
783:デフォルトの名無しさん
07/11/02 01:35:10
CSVファイルを読み書きするプログラムを書けばいいんですね。
頑張ってみます。ありがとうございます。
784:デフォルトの名無しさん
07/11/03 00:19:42
2つ以上続くアルファベットを、文字列に変換するにはどうしたらいいですか。
例えば以下のように。
abc -> "abc"
coerseだと一文字の場合しか変換できなくて困ってます。
785:デフォルトの名無しさん
07/11/03 00:28:39
(string 'abc)
"abc"
とか
(format nil "~A" 'abc)
"abc"
とか?
xyzzyだとできるけど、他のはわからん
できないならスレ違いすまんw
786:デフォルトの名無しさん
07/11/03 00:32:07
>>784
エスパーレスすると、君の知りたいのは symbol-name
787:デフォルトの名無しさん
07/11/03 15:32:34
>>785
string使えました。ありがとうございます。
>>786
symbol-nameで、やりたかったことができました。
勉強不足ですみません。
788:デフォルトの名無しさん
07/11/04 21:48:52
Lispって何ができますか?
789:デフォルトの名無しさん
07/11/04 22:33:52
プログラムの記述ができます
790:デフォルトの名無しさん
07/11/05 01:29:11
初心者に適した本はない?
もしくはサイトでもOK。
興味が沸いてきた。
791:デフォルトの名無しさん
07/11/05 01:34:58
URLリンク(usir.kobe-c.ac.jp)
792:デフォルトの名無しさん
07/11/05 01:44:58
いまANSI Common Lisp読んでる
793:デフォルトの名無しさん
07/11/05 01:54:11
>>791
GIFアニメが鬱陶しくて集中できないw
794:デフォルトの名無しさん
07/11/10 17:44:40
URLリンク(www.ibm.com)
きたぁぁぁぁぁぁっぁぁぁぁぁぁぁぁlっぁああああああぁぁぁぁl!!!!!!!!!!!!!!!!!!!!!!
795:デフォルトの名無しさん
07/11/11 07:56:47
>>794
I love emacs だけど Cusp は気になるなー。
796:デフォルトの名無しさん
07/11/11 10:52:05
気になるが、本スレ向けの話題じゃね?w
797:デフォルトの名無しさん
07/11/11 17:00:05
本スレは最近調子がわるいのだ
798:デフォルトの名無しさん
07/11/11 18:10:04
Eclipse自体が重いうえに、ちょっとした拡張にも手間がすげーかかるんで正直あんまり魅力を感じない…。
でもEmacs使わない層には評判いいね。見た目とか、IDEをマウスで操作したい層にはいいのかも。
799:デフォルトの名無しさん
07/11/12 16:20:48
Emacs + slimeで十分だろ,常識的に考えて...
800:デフォルトの名無しさん
07/11/12 19:02:27
JavaとかC++とかそのへんの、人間が面倒な手間を強要される言語だと
かなり便利なんだよ、IDE。
801:デフォルトの名無しさん
07/11/13 00:45:43
>>799
emacsの代わりにeclipseなだけで基本slimeだから
エディタとのインターフェースにelisp使うかjava使うかってだけな話だよねぇ?
802:デフォルトの名無しさん
07/11/16 21:15:11
newlisp使ってる香具師いる?
803:デフォルトの名無しさん
07/11/17 00:50:35
CMUCLやSBCLでPOSIX Pipeなどを使って外部プロセスと
データのやり取りをするにはどうすればいいのでしょうか?
804:デフォルトの名無しさん
07/11/19 11:09:27
doxygen みたいな自動ドキュメント化ツールってありますか?
日本語が使えると嬉しいのですが.
805:デフォルトの名無しさん
07/11/19 22:11:15
>>804
作ればいいだろ。
それがLispクオリティ
806:デフォルトの名無しさん
07/11/19 22:25:20
確かに Lisp でなら3日で作れそうな気がするな
気がするだけだがw
807:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/11/19 23:30:25
>>804
doxygenを使えばいいのかと
日本語も使えるわけなんだし。
809:804
07/11/20 00:25:15
質問した私がアホでした。皆様ありがとうございます。
凝った事をしないで自分専用のツールにするんだったら、
html ぐらいまでは簡単に出来ますね。
>>807
パッケージの中の定義済みシンボルもそうやってすれば取り出せるんですね。
810:デフォルトの名無しさん
07/11/20 14:58:45
PracticalCommonLisp の第22章だけ訳してみたんだけど、
投下してみるべき? それともチラシの裏に留めるべき?
811:デフォルトの名無しさん
07/11/20 17:09:52
とりあえず投下してみるよろし。
812:810
07/11/20 18:43:39
URLリンク(www.uploda.org)
機械翻訳並みでもよければ…
813:デフォルトの名無しさん
07/11/22 06:41:28
パッケージ a と b を両方共存させる方法はないですか?
(in-package a)
(in-package b)
とすると、a のパッケージで定義されたシンボルが
未定義になってしまいます。
814:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/11/22 11:50:47
>>812
もっかいうpたのむ
816:デフォルトの名無しさん
07/11/22 13:12:38
俺からもうpたのむ
通報するから
817:810
07/11/22 18:44:50
>>815
物持ちのいいうpろだ探し中
>>816
原著がネットで公開されててもまずいかなやっぱり
818:デフォルトの名無しさん
07/11/22 19:04:18
基本的には、原著作者が、翻訳して公開することを明示的に許可してないと ×
819:デフォルトの名無しさん
07/11/22 21:16:36
>>816
どうでもいいだろ,地下文章なんだから
堂々とWebに公開したらそりゃまずいだろうけど
pass付きzipで短期間だけ公開なら問題ないだろ
820:デフォルトの名無しさん
07/11/22 21:54:34
lions' 本も現在なら
ファーストコピーのスキャン画像が流通するのかしらん
821:803
07/11/22 21:58:25
(´・ω・`)
822:デフォルトの名無しさん
07/11/22 22:01:16
>>821
socketじゃだめなのか?
823:デフォルトの名無しさん
07/11/22 22:10:19
これが革命の狼煙になるとは思いもしない819であった。
824:デフォルトの名無しさん
07/11/22 23:35:19
>822
socketに対応していない外部プログラムと繋げられたらばと考えまして
もっともsocketの使い方も勉強できたらうれしいです
825:デフォルトの名無しさん
07/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
07/11/23 09:39:00
>>825
import と use-package ですね。これで相当便利になりました。
827:デフォルトの名無しさん
07/11/26 00:38:07
on lispの翻訳も最初はこんなのりだったなw
828:デフォルトの名無しさん
07/11/26 14:02:25
texのドキュメントを自動生成するscriptのsampleなどどこかに
ないでしょうか?
829:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/11/26 22:54:23
>>829
slimeのビデオって何か知らないけど、、
「#<HASH-TABLE :TEST EQL :COUNT 0 {ACEED81}>」は手で入力したの?
「#<」ってのは read して元に戻らないものを表示するための記号。
(もとに戻るのは配列とかリストとかね)
よって、手で入力したんだとしたら何か勘違いしてるんだと思う。
831:デフォルトの名無しさん
07/11/26 23:48:25
>>830
> >>829
> slimeのビデオって何か知らないけど、、
slimeのビデオです(サイズ150MBほどあります)。
URLリンク(common-lisp.net)
これによると
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:デフォルトの名無しさん
07/11/27 14:01:23
829の勘違いというかビデオを理解していないで終了。
833:デフォルトの名無しさん
07/11/27 15:10:34
830を1兆回読むべきだろうな
834:810
07/11/27 19:27:26
原著者の Peter さんに勢いで
「日本のフォーラムに翻訳を投下したいんだけど許可くれ」
ってメールしてみたんだけど、数日経った今日返信キタ
日本語化の動きは既にあるんで
グループを手伝うかどうかは君に任せるよ、とのこと
835:デフォルトの名無しさん
07/11/27 21:29:18
829です。
>>830
手で入力しなおして気付きました。
>>832
> 829の勘違いというかビデオを理解していないで終了。
はい、理解してませんね
もうちょっと勉強します。
>>833
> 830を1兆回読むべきだろうな
さすがに1兆回はw
でも3回ほど読み直しました。
Emacs側の設定 face? mouse? 見直してみます。
みなさんコメントありあがとうございました。
お騒がせしました。
836:デフォルトの名無しさん
07/11/27 22:15:54
>>834
その翻訳グループの詳細plz
837:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/11/28 01:57:25
>>837
どこがひどい言われようなんだ?
質問者の方に問題ありすぎで、829のような質問じゃ仕方ない流れだろう。
839:デフォルトの名無しさん
07/11/28 18:59:01
流れをぶった切ってしまって申し訳ないのですが、ちょっと質問させてください。
たとえばPythonにはrange関数があって、0~10のリストとか簡単に作れますが、
Common Lispにはrangeのような関数はないのでしょうか?
そのようなリストが欲しければmake-sequenceでリスト作ってdolistで回して初期化とかそんな感じなんですかね??
840:デフォルトの名無しさん
07/11/28 19:25:37
loop はどうかね?
(loop for i from 0 below 10 collect i)
841:839
07/11/28 21:27:44
>>840
おおお、ありがとうございます!
loopマクロでできないかチラッと見てみたことはあったんですが、
浅く踏み込んだだけだったのでbelowを知りませんでした。
前々から気になっていたイディオム(?)なのでスッキリしました。
どうもありがとうございます。
842:デフォルトの名無しさん
07/11/28 22:39:55
>>841
URLリンク(www.unixuser.org)
843:839
07/11/29 01:58:10
>>842
どうもありがとうございます。
勉強してきます。
loopマクロって結構面白いですね。
844:デフォルトの名無しさん
07/11/30 03:06:35
マクロの活用による典型的なミニ言語だよね。
みんなが好き勝手にこんなもの作りだしたら煩雑になってたまらん、って
思いとどまったのがschemerでいいじゃん別に便利なんだから、って
開き直ったのがlisperなんじゃないかと個人的には理解している。
LOOPマクロマンセー
845:デフォルトの名無しさん
07/12/01 17:15:09
829です。
>>837
> の、返り値表示の上にカーソル置いてEnter、若しくはマウスで中クリックを
> することによって、#<で始まる文字列が新規のプロンプト上にコピーされます。
私の環境ではこれがうまく機能していませんでした。
そこで、slimw-2.0を入れてみたところ出来るようになりました。
>
> この文字列は、lispのobjectとして評価可能です。
> eqで比較も出来ます。
そういう事なのですね。
>
> ちなみに、マウスの右クリックでメニューを出すと、色々選べて面白いです。
これから試してみます。
コメントありがとうございました。
846:デフォルトの名無しさん
07/12/02 14:24:01
日本語文字コードの変換とかPOP3とかMD5とかGUIとか
そういう実用的なライブラリはあるんでしょうか・・・
有象無象に見える多数の処理系に様々な機能が分散して
るように見えて何がなんだかわかりません・・・。
今までPerlとTclを使ってやってたことを、Lispでやりたいんですが・・・
847:デフォルトの名無しさん
07/12/02 14:47:51
>>846
URLリンク(www.cliki.net)
あたりで探してみたら?
ASDFが使える処理系なら、
asdf-installをガンガンインストールすればいいので手間もかからんし。
ただし、もともとテキスト処理のために作られた言語でないので、
そこら辺はperlのような充実っぷりを期待しても無駄です。
GUI環境の整備も主たる言語の中では相当遅れていると言って良いです。
McCLIMも最近ようやくあまり落ちなくなったという程度だしw
848:デフォルトの名無しさん
07/12/02 19:08:42
>>846
847の書いてる通り。
商用のAllegroCLなら、さすがに大分まし、だよ。
849:デフォルトの名無しさん
07/12/03 00:10:26
オープンソースでフリーな商用CLに期待しましょう
850:デフォルトの名無しさん
07/12/03 02:30:21
どうやって商売成り立たせんの、それ。
851:デフォルトの名無しさん
07/12/03 13:50:46
MySQL方式かな
852:デフォルトの名無しさん
07/12/03 20:46:35
いちおう、最後の砦として、ffi というのもあるけど、
なんでもかんでもリンクし始めたら、lisp を使ってる意味が無くなるかな。
853:デフォルトの名無しさん
07/12/03 23:31:43
質問です。CLの正しいプログラムexprは
(or (atom expr) (symbolp (car expr)) (eq 'lambda (caar expr))
を必ず満たしますか?
854:デフォルトの名無しさん
07/12/03 23:44:30
>>853
正しいプログラムってどういう意味?
正しい式の意味?
855:デフォルトの名無しさん
07/12/03 23:55:41
>>854
(1 2 3)のようなものを式と呼ぶのか分かりませんが、
要するにevalを適用してエラーが出ないもののことです。
あと括弧閉じ忘れてますねすいません
856:デフォルトの名無しさん
07/12/05 05:53:16
>>853
貴方の意図を汲み取るのが非常に難しい。
とりあえず答えてみると、
exprの部分を例えば(list 2 3 4)で置き換えた場合、
その式を満たしていないことになるけど、
それは自明だからたぶん意図を外しているのだろう。
一々、S式で書かないで、言葉で説明してみたら?
857:デフォルトの名無しさん
07/12/05 07:51:02
>>856
予想すると、>>853はlisp処理系をlispで書こうとしているのでは。
知りたいのはフォームの定義と見た。
で、CLHS: Section 3.1.2.1 を見ると、>>853の定義でだいたい
当っているような気がする。
858:デフォルトの名無しさん
07/12/05 09:25:01
(,,゚Д゚)∩先生、S式って何ですか?
(´ー` ) >>853
( ゚д゚) ……
( ゚д゚ )
859:デフォルトの名無しさん
07/12/05 09:59:34
処理系を書くとか、そういうのって適当にやると結局後で困るんだよね。
最初から定義を見て形式保ってやっていく方がいい。
860:デフォルトの名無しさん
07/12/05 19:19:23
そうだLispを作ろう
↓
第一級でないオブジェクトってなんなの?
↓
リストの先頭に現れるらしい
↓
むしろリストの先頭に第一級オブジェクトが現れるのがおかしい
↓
リストは全部スペシャルフォームってことにすれば……
↓
……リストの先頭は必ずシンボルになる
↓
それなんてCL ←今このへん
861:デフォルトの名無しさん
07/12/05 19:22:00
オブジェクトはすべて平等ですよ。
第一級オブジェクトという考え方自体がオブジェクト差別主義に毒されてます。
862:デフォルトの名無しさん
07/12/05 19:24:24
ウィンストンのlispの3版に
lispでlisp処理系を作るとか
そういうのが載っていそうな気がする
863:デフォルトの名無しさん
07/12/05 21:55:00
残念でした~。CLではシンボル以外にlambda式もフォーム先頭にこれるんだな。
864:デフォルトの名無しさん
07/12/05 21:57:49
ああそれはわかっているのか、ごめん。
865:デフォルトの名無しさん
07/12/05 21:58:02
>>863
>>853にはちゃんとそう書いてありますね。
lispでlispを作るって一見無駄に見えますけど、
xyzzy lispでxyzzy schemeを作ったら便利そうですね。
とっくの昔に誰かが書いてそうですが。
866:デフォルトの名無しさん
07/12/06 01:47:04
なぜ便利そうだと思ったのかkwsk