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))
556 名前:デフォルトの名無しさん mailto:sage [2007/09/19(水) 11:12:47 ] 以前から不思議だったんだけど2chのスレってどんな過疎スレでも「ハゲ」と「おっさん」話が持ち上がると妙にスレが伸びるんだろう?
557 名前:デフォルトの名無しさん mailto:sage [2007/09/19(水) 12:37:58 ] それはry
558 名前:デフォルトの名無しさん mailto:sage [2007/09/19(水) 15:21:46 ] >>556 2chに出入りしている腐女子は「ハゲ」×「おっさん」と 「おっさん」×「ハゲ」のどっちが良いかでご飯3杯いけるから。 因みに数字板ではこれがマジだから困る。
559 名前:デフォルトの名無しさん mailto:sage [2007/09/19(水) 23:43:01 ] イケメン禿のおっさんがLISPとは何かを語ると 腐女子がえびぞりながら泡吹いて失神するぞ。 クワトロのせりふで決めればもう涎流しっぱなしで再
560 名前:デフォルトの名無しさん mailto:sage [2007/09/20(木) 01:05:39 ] >>556 そういう言葉で煽るのは、自分はそれらのキーワードと無縁だと思ってる層で、 そういう層は大抵若い世代、言い換えれば、経験とか知識に乏しいまま全能感だけ持て余してる世代。 つまり、そういう話が持ち上がると伸びるのではなく、アホなことでスレ伸ばす層が持ち出しがちな単語が そういうものなんでは。
561 名前:デフォルトの名無しさん mailto:sage [2007/09/20(木) 04:33:26 ] どなたかお助けください。 sbcl,clispでキーボード操作を受け付けるプログラム書いてあそんでいるのですが双方で共通にttyの設定をraw,noecho似する方法はありませんでしょうか? 現在clispでは(shell "stty raw -echo")を,sbclだと実行前に同様のコマンドを実行しています。 ただこれだとclispはreadlineがカーソルキーを食ったままですし、sbclは抜けないと元に戻せなくて困っています。
562 名前:デフォルトの名無しさん mailto:sage [2007/09/20(木) 07:50:19 ] CLISP なら SCREEN パッケージも入ってると思うけど。 あとは EXT:WITH-KEYBOARD とかでCUI できる。 SBCL と共通にしたいなら ncurses を使うのがいいんじゃないかな。
563 名前:デフォルトの名無しさん mailto:sage [2007/09/20(木) 11:54:18 ] >>562 ありがとうございます、ncursesで検索したらcl-cursesとかcl-curl(cURLじゃないんですね)とかいろいろ出てきました。
564 名前:デフォルトの名無しさん mailto:sage [2007/09/21(金) 11:04:13 ] 最近cgiをLispで書くのがマイブームです><
565 名前:デフォルトの名無しさん mailto:sage [2007/09/21(金) 11:18:53 ] それたのしそうですね>< どうやるんですか><
566 名前:デフォルトの名無しさん mailto:sage [2007/09/21(金) 23:01:52 ] ViaWebでさえサーバープロセスが動いていたのに 何でCGIで書くのかと問い(ry
567 名前:デフォルトの名無しさん mailto:sage [2007/09/21(金) 23:02:53 ] 普通にかけますよ clispなら小さいからプロセス起動なcgiでもいけますし、sbclならfastcgi使うとごっつはぇぇでし。
568 名前:デフォルトの名無しさん mailto:sage [2007/09/21(金) 23:07:01 ] >>566 cgiつーのは割と身近で小さめの実用プログラムな側面があるのでそういう否定のしかたはよろしくないような気がする。
569 名前:デフォルトの名無しさん mailto:sage [2007/09/22(土) 00:46:01 ] 結局のところお前らCLispで実際に使えるプログラムかいてないのか?
570 名前:デフォルトの名無しさん mailto:sage [2007/09/22(土) 01:07:35 ] エディタのスクリプトならバリバリ……
571 名前:デフォルトの名無しさん mailto:sage [2007/09/22(土) 07:52:21 ] プロトタイプ作成とかデータ整理とか表には出せないが使ってるよ。 でも上にはプロトタイプ専用の「ゲテモノ」と認識されてるんでね、テストまでしか使えない。 人月単位の人海戦術で作るとな……プロトタイプのほうが高速かつ高機能とかマジ泣ける… 仕様通りちゃんと動いたとしても、結局素人を集めて人海戦術で作らないと安心できない、それぎゃ現実の仕事。 でもテスト用のプロトタイプがあるだけでもマシなほうさ。バリバリのウォーターフォールでデスマーチ化ってとこ多いしね。 …なんか愚痴っぽくなったな、スマン。
572 名前:デフォルトの名無しさん mailto:sage [2007/09/22(土) 08:03:45 ] おれ、グーグルに入れたら「ウォーターフォール」卒業して 先端技術でバリバリ働くんだ。
573 名前:デフォルトの名無しさん mailto:sage [2007/09/22(土) 10:20:25 ] >>571 速くHackerがたくさんいる企業に就職しなおすんだ!
574 名前:デフォルトの名無しさん mailto:sage [2007/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 名前:デフォルトの名無しさん mailto:sage [2007/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 名前:デフォルトの名無しさん mailto:sage [2007/09/23(日) 17:06:26 ] >>575 できました! ありがとうございます
577 名前:デフォルトの名無しさん mailto:sage [2007/09/24(月) 16:11:21 ] >>571 ナカーマ w
578 名前:デフォルトの名無しさん mailto:sage [2007/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 名前:デフォルトの名無しさん mailto:sage [2007/09/30(日) 00:54:33 ] 宿題ならちっとは考えたフリしろよw もしくは宿題スレへ(lisperがいるかどうかは知らんが、lisp以前の問題だ)
580 名前:デフォルトの名無しさん mailto:sage [2007/09/30(日) 03:05:54 ] >>578 もちろん教えてあげますよ。 ただ、宿題を持ち込む人は多いんだけど情報不足なんだよね。 1. 締切はいつまで?どんなレベルの解答がお望み? 2. Lisp の授業ははじまってどれくらい?一ヶ月?三ヶ月? 3. 教科書はなにで、どれくらいまで読んだ? 4. ズバリ答えがほしいの?教育的ヒントがほしい? 別にズバリ答えがほしいならそれで即解答しますんで、正直に答えてね。
581 名前:デフォルトの名無しさん mailto:sage [2007/09/30(日) 09:53:44 ] >>580 正直ズバリ答えてほしいのが本音ですが・・・ ヒントだけでも良いです。 締め切りは明日で、Lispは半年程やってます。教科書はありません。
582 名前:デフォルトの名無しさん mailto:sage [2007/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 名前:デフォルトの名無しさん mailto:sage [2007/09/30(日) 13:19:14 ] たぶん再帰で書いてほしいんだと思った
584 名前:デフォルトの名無しさん mailto:sage [2007/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 名前:デフォルトの名無しさん mailto:sage [2007/09/30(日) 13:35:14 ] すまん、インデントがメチャクチャになっちゃった orz
586 名前:デフォルトの名無しさん mailto:sage [2007/09/30(日) 13:50:45 ] まあ普通はループで書くと思うけどね。宿題だから再帰するのかなと。
587 名前:デフォルトの名無しさん mailto:sage [2007/09/30(日) 13:53:05 ] 本題から外れるが、 >>584 >>反復を使うのを恐れるべきじゃない。 禿同。再帰を使うだけで問題の本質は露わになる、わけじゃない。 時と場合を選べば、LOOP最強。
588 名前:デフォルトの名無しさん mailto:sage [2007/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 名前:デフォルトの名無しさん mailto:sage [2007/09/30(日) 14:50:13 ] loop って末尾再帰とは限らないんだっけ?
590 名前:デフォルトの名無しさん mailto:sage [2007/09/30(日) 15:02:38 ] >>582 >>584 わからないとこ多いですね↓ loopとかforとか習ってません 関数の定義、分岐(if とかcond) リスト(list car) データのリンク(cons) とかですね。習ったのは。すいません もうすこし自分で考えてみようと思います
591 名前:デフォルトの名無しさん mailto:sage [2007/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 名前:デフォルトの名無しさん mailto:sage [2007/09/30(日) 15:39:20 ] CL から見れば 588 の例なんかは for(i=0;i<n;i++){list.push_back(&i);} ってやって、あとで i のポインタの先の値をみて文句を言うのと同じようなダメさを感じるわけ。 再帰でしか物を考えられない Schemer は、CL を使うときはもっと考えを切りかえてからきてくれ。 Scheme は良いものだが、だからといって他のすべてのその思想を押しつけることなどできないのだ。 身近だから CL を煽りにくるんだろうけどさ……所詮どっちもマイナーな世界だ。お互いを尊重して仲良くいこうや。
593 名前:デフォルトの名無しさん mailto:sage [2007/09/30(日) 16:08:10 ] Schemer だって再帰を多用するわけじゃないでしょ Shiro さんも言っていたけど fold や map、for-each や srfi-42 などのユーティリティを多用するのがスタイル loop 的なものはあんまり使わないと思うけどね
594 名前:デフォルトの名無しさん mailto:sage [2007/09/30(日) 16:15:30 ] >>591 (format t とか??なんですが
595 名前:デフォルトの名無しさん mailto:sage [2007/09/30(日) 16:55:32 ] >>594 おれは>>584 じゃないけど、おまい授業出てないだろ。 format t は printf STDOUT みたいなもんだよ。~% はタダの改行。
596 名前:デフォルトの名無しさん mailto:sage [2007/09/30(日) 17:00:33 ] 授業に出てるなら、こんなとこで質問する必要はないのでは?
597 名前:デフォルトの名無しさん mailto:sage [2007/09/30(日) 17:19:39 ] 宿題を張った奴にここまで優しいのはこのスレくらいじゃね?
598 名前:デフォルトの名無しさん mailto:sage [2007/09/30(日) 17:59:27 ] 宿題にはもっと妙な答えを教えてあげようよ。 今回のだったら tagbody と go で書くとか。
599 名前:デフォルトの名無しさん [2007/09/30(日) 19:15:23 ] Scheme の srfi-42 を使って書いてほしいんです><
600 名前:デフォルトの名無しさん mailto:sage [2007/09/30(日) 19:16:58 ] >>599 そりはすれち
601 名前:デフォルトの名無しさん mailto:sage [2007/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 名前:デフォルトの名無しさん mailto:sage [2007/09/30(日) 22:43:18 ] >>601 うほ! ありがとございます! srfi-42 ムズカシイんです>< Gauche のマニュアルだけでは良くわかりませんでした>< サンプルがいっぱいのってるチュートリアルみたいなものがどっかにあれば、、、 スレ違いスミマセン
603 名前:デフォルトの名無しさん mailto:sage [2007/10/01(月) 00:27:06 ] >>594 出力につかっていいの関数は何?使ってる処理系は何? 最初に聞いた質問にはちゃんと意味があって、こーゆう状況を防ぐために教科書や処理系を聞いてたんだよね。 大抵の環境なら (print (list a b)) と (print counter) にすれば動くと思うけれど。 >>598 そんなコードを見せても意味があるとは思えない。 俺はこの質問者もひょっとしたらモノになるんじゃないかと期待をしているのだよ。
604 名前:デフォルトの名無しさん [2007/10/02(火) 00:02:57 ] >>584 labelsやletやformatを使わないでかけますか?printコマンドは知ってます
605 名前:デフォルトの名無しさん [2007/10/02(火) 01:08:09 ] 任意の型のデータxを第一引数、cons型のデータのリストdを第2引数として取り、dの要素のうちで、そのfirst部分がxに一致する(ただし比較はequal()で行うものとする)ものがあればそのような要素の最初のものを返し、さも無ければnilをかえす関数assoc_equ()を定義せよ この問題できないんですけどどなたかできませんか?よろしくお願いします><
606 名前:デフォルトの名無しさん mailto:sage [2007/10/02(火) 01:16:13 ] >>605 (defun assoc_equ (x d) (assoc x d :test #'equal))
607 名前:デフォルトの名無しさん [2007/10/02(火) 02:14:08 ] できました!ありがとうございます!!! 書き方がまだ習ってない技法なので、もっと簡単に書き換えるとどんなのになるのでしょうか? よろしかったら教えていただけませんか? ループなどでもできると聞いたので。。。
608 名前:デフォルトの名無しさん [2007/10/02(火) 02:20:35 ] その昔、テーラー展開の式が書いてあってこれを証明せよって問題があった。 で、その回答に「テーラー展開より」って書いたやつがいたのを思い出した。
609 名前:デフォルトの名無しさん mailto:sage [2007/10/02(火) 02:27:10 ] コーモンリップス
610 名前:デフォルトの名無しさん mailto:sage [2007/10/02(火) 02:38:30 ] >>609 夜中にそんなこと言ってるからおまえは駄目なんだよ
611 名前:デフォルトの名無しさん mailto:sage [2007/10/02(火) 03:04:53 ] (´・ω・`)こ、こーもん・・・
612 名前:デフォルトの名無しさん mailto:sage [2007/10/02(火) 22:22:06 ] >>607 半年で let がでてこないのはすごいなぁ。 書いてもいいけど、もう締切は過ぎたんじゃないの? ループによる解答は 582 で出てるよ。
613 名前:デフォルトの名無しさん mailto:sage [2007/10/03(水) 05:12:01 ] ある情報を処理するアプリケーションをC言語で書きました。 で、そのアプリケーションは処理結果としてdouble型の数値を3つ結果として出力します。 ここからが質問なのですが、 ウェブサーバを立ち上げて、クライアントが情報を入力すると、このアプリケーションが処理して 処理結果の数値をデーターベースに格納出来るようにしたいんです。 この用途にKahuaは使えるのでしょうか? もしくはコレが出来るライブラリみたいな物は有りますでしょうか?
614 名前:デフォルトの名無しさん mailto:sage [2007/10/03(水) 12:28:35 ] >>613 そのアプリケーションをあなたが書いた物と仮定する。 やりたいことは可能だが、意味のある事じゃない。 むしろ元アプリケーションをfastcgiライブラリを使うように少し修正してmod_fastcgiを使うか shellでcgiを書いて受け渡す方が楽だろう。
615 名前:デフォルトの名無しさん mailto:sage [2007/10/03(水) 22:17:49 ] >>614 意味がないとまで断定するこたぁないと思うが。 AllegroServe で R と連携する例。 cl-www.msi.co.jp/solutions/knowledge/lisp-world/r-demo/r_fuelframe
616 名前:デフォルトの名無しさん mailto:sage [2007/10/03(水) 23:14:32 ] >>615 元コードがCで書かれていて、さらにKahua上から制御できるかいと聴かれているのだから意味が薄いって事なんだよ。 しかもあなたの提示はAllegroServeじゃないか。 そりゃ元コードがCommonLispだったら楽しそうだし、もしも元コードがSchemeで書かれていればKahuaでの実装に美しさを感じるだろうことは否定しないんだけど。 ちなみに僕のおすすめはFastCGIでLisp実装っていうもっと尖っているけどApacheあたりと仲良くモードです。
617 名前:デフォルトの名無しさん mailto:sage [2007/10/03(水) 23:38:40 ] ヒント: ここは Common Lisp 入門スレ Kahua でも AllegroServe でも別にいいんじゃね? 標準入出力/パイプ/ソケットで制御するなら別にどっちでもかわらんだろう、と思って R をごにょごにょする例を紹介したのだが。
618 名前:デフォルトの名無しさん mailto:sage [2007/10/03(水) 23:51:05 ] いいじゃん、「意味」なくても。 >>613 の要件ってLisperが気にするほど効率要求されてないと思う。 だとしたら、せいぜい AllegroServe+FFIとか、gauche からCを呼びだす方法とか (おれはkahua知らないけど)、軽く面白そうな選択肢を教えてあげりゃいいんじゃね?
619 名前:デフォルトの名無しさん mailto:sage [2007/10/03(水) 23:52:08 ] >>617 いや、CommonLispスレに元CコードをKahuaとまぜこぜ可能かって聴かれたからこそあの回答なんですけど orz そりゃ僕だって全部CommonLispでってのはスレ的に正しいとは思うけどあんまりなんじゃないかい? なんとなく質問した奴の状況が感じられる状況と似た境遇にあった俺が2ch的にあまちゃんなんだろうけどさ。
620 名前:デフォルトの名無しさん mailto:sage [2007/10/04(木) 00:12:13 ] 「元CコードをKahuaをまぜこぜ可能か」って質問だったの? 「アプリケーションをC言語で書きました。」だからスタンドアロンな実行バイナリをイメージしてたよ。 んで >>615 を紹介したわけ。別に Kahua でもいいかなーと。run-program で起動して結果をうけとるでもいいんじゃねーと。 あくまで外部コマンド + Lispサーバで、「全部CommonLisp」とか書いたつもりはないけど…。
621 名前:デフォルトの名無しさん mailto:sage [2007/10/04(木) 00:24:45 ] >>620 あー、今夜の僕は読解力ないかも(週も半ばなのに大分呑んだし) 僕が解釈したのは元の計算コードをCで記述済みでウェブサーバにKahuaを使った場合にそのCコードの産物とどうやってやりとりしたらいいの? って事だったんで、そこまで境界がきれいにわかれてるならLispに拘らない方がいいのじゃないのっていうスレ的には正反対の結論がでちゃったんだ。 ;;;うーむ、今受験の引っかけ問題や詐欺師がきたら死ねるなぁ。
622 名前:デフォルトの名無しさん mailto:sage [2007/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 名前:デフォルトの名無しさん mailto:sage [2007/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 名前:デフォルトの名無しさん mailto:sage [2007/10/07(日) 19:11:17 ] >>622 宿題かい? 宿題だと仮定して、ここで答を聴いてしまうと、君は次の宿題もここか他で答を探す羽目になるんじゃないのかい? だとすれば、君がなすべき事はその宿題のどこがわからないかを表明して助けを乞う事であって解を求める事じゃないのではないの? 宿題じゃないならごめんな。
625 名前:デフォルトの名無しさん mailto:sage [2007/10/07(日) 19:18:18 ] >>624 宿題です。 (A B C D) ってあったらまずAをチョイスしてnum個のリストになるまでリストに要素を追加していくやり方を考えているんですがうまくかけないんです
626 名前:デフォルトの名無しさん mailto:sage [2007/10/07(日) 22:03:55 ] >>622 あのさー >>578 で全く同じ宿題がでてるんだけど。締切は 9/31 までだったんじゃねーの? >>578 がウソつき野郎だったのかループを狙ってるのか……。たぶん君も前の彼も大学生なんだよな? 宿題の丸投げくらいはちゃんとできるようになろうよ?エスパー募集ばっかしてたら社会でやっていけないよ。 どんな関数使っていいのかとか、環境とか、締切とか、宿題丸投げするなら最低でもそのへんは書こうよ。 前の彼も後で「format知りません」「let も使わないでください」とかいいだすし。
627 名前:デフォルトの名無しさん mailto:sage [2007/10/07(日) 22:10:20 ] いや、問題はちょっとややこしくなってるぞ。 たぶん >>578 の続編だろう
628 名前:デフォルトの名無しさん mailto:sage [2007/10/07(日) 23:24:28 ] だからー、宿題に丸まる答えてあげるのやめなよ。 せいぜいヒントを出すとか、「こういう風に考えてやってみたけどうまく行きません、 どこがまちがってるのでしょうか?」と言う質問にだけ答えるとか。 丸まる答えたらますます自分で考える気を無くすよ、多分。
629 名前:622 mailto:sage [2007/10/07(日) 23:30:44 ] 再帰的に(A B C D)のリストからまず先頭Aで numが0になるまで Aをとって(A)というリストをつくる。numを1つ減らす Bをとって(A B)というリストをつくる。 ・・・ みたいに考えたんですが(A) (A B) というリストをうまく保持しておけません。
630 名前:デフォルトの名無しさん mailto:sage [2007/10/07(日) 23:35:30 ] >>628 こんな所に質問しにくる馬鹿が今後どんな人生を歩もうと、そんなことどうでもいい
631 名前:デフォルトの名無しさん mailto:sage [2007/10/07(日) 23:47:49 ] 出題者のレベルもアレな感じがするのは気のせいか
632 名前:デフォルトの名無しさん mailto:sage [2007/10/07(日) 23:52:47 ] >>631 そうですね
633 名前:デフォルトの名無しさん mailto:sage [2007/10/08(月) 00:02:15 ] >>628 最初にそう聞いてくる奴ならそう答えるさ。だがちゃんと丸投げですと宣言したならズバリ答えを解答しちゃうよ。 もし本当にやる気があるなら、ズバリの答えでもちゃんと見て考えるさ。見とり稽古みたいにね。 全体図と筋道を見せてからゆっくり詳細を解析したいって人もいるかもしれない。 やる気がない人をむりやりやらせるなんてのは非生産的。
634 名前:622 mailto:sage [2007/10/08(月) 00:03:38 ] >>633 やる気はあります!
635 名前:デフォルトの名無しさん mailto:sage [2007/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 名前:デフォルトの名無しさん mailto:sage [2007/10/08(月) 06:21:28 ] やる気があるのなら教官に聞けよ
637 名前:デフォルトの名無しさん mailto:sage [2007/10/08(月) 06:41:15 ] 宿題がでると妙に活気づくなあ。よいよい
638 名前:デフォルトの名無しさん mailto:sage [2007/10/08(月) 08:29:35 ] >>622 Scheme 臭いコードだなあ。 internal defun なんて意味不明なこともやってるし。 どこの大学のなんて香具師が担当してる講義なのか晒しちゃえよ。
639 名前:デフォルトの名無しさん mailto:sage [2007/10/09(火) 09:02:43 ] scheme臭がすると異常反応するスレw
640 名前:デフォルトの名無しさん mailto:sage [2007/10/09(火) 09:15:13 ] 過剰反応っていう言葉はあるけど、異常反応ってのはあんまり聞かないな。
641 名前:デフォルトの名無しさん mailto:sage [2007/10/09(火) 12:40:54 ] Scheme臭に抵抗無かったらSchemeを使ってるよ
642 名前:デフォルトの名無しさん mailto:sage [2007/10/09(火) 13:13:23 ] 俺はScheme臭に抵抗ない、むしろSchemeっぽい書き方の方が好きだけど、 Common Lispの便利な機能でSchemeにないものが多いからCommon Lisp使ってる
643 名前:デフォルトの名無しさん mailto:sage [2007/10/09(火) 13:16:26 ] たとえばなに
644 名前:デフォルトの名無しさん mailto:sage [2007/10/09(火) 13:25:48 ] スペシャル変数とか
645 名前:デフォルトの名無しさん mailto:sage [2007/10/09(火) 20:24:02 ] エレガントかつ強力なloop構文とか
646 名前:デフォルトの名無しさん mailto:sage [2007/10/09(火) 21:04:26 ] format
647 名前:デフォルトの名無しさん mailto:sage [2007/10/09(火) 23:45:18 ] reader macro
648 名前:デフォルトの名無しさん mailto:sage [2007/10/10(水) 01:03:54 ] compile, eval-when, disassemble, trace, optimize ... とか? でも Scheme も Gauche なら便利だから使うな。頭は別の言語として切り替わるのであんまり困る事はない。 むしろ片方を撰択して、もう片方を見下す、みたいな行為をやめて両方使えばいいじゃん。
649 名前:デフォルトの名無しさん mailto:sage [2007/10/10(水) 01:17:20 ] 見下されたと錯覚した人が攻撃に転ずる気がする。多くの戦争と同じ原理だ。
650 名前:デフォルトの名無しさん mailto:sage [2007/10/10(水) 01:30:52 ] CL の人としては funcall はクソとか、*常に* 末尾再帰を最適化しないとクソ、みたいな一面的な見方に反論したくなる気持ちはわからんでもない。 が、実際にいちいち反論する人は 2ch 以外ではあんまりみかけないなぁ。
651 名前:デフォルトの名無しさん mailto:sage [2007/10/10(水) 01:32:20 ] そういや 622 はどうなったんだ?締切とか大丈夫なのか?
652 名前:デフォルトの名無しさん mailto:sage [2007/10/10(水) 07:38:56 ] ΣってどうやってCommon Lispで定義出来ますか? リスト(2 4 6 8 )を全部足す奴。 なるべく再帰で。
653 名前:デフォルトの名無しさん mailto:sage [2007/10/10(水) 07:58:10 ] >>652 (loop for x in '(2 4 6 8) sum x)
654 名前:デフォルトの名無しさん mailto:sage [2007/10/10(水) 08:38:38 ] そういうときは apply 使うのが好きかな (apply #'+ '(2 4 6 8))
655 名前:デフォルトの名無しさん mailto:sage [2007/10/10(水) 09:53:05 ] >>649 そんでもって、「見下してないよ、それはあなたの被害妄想だよ」と言い張れる言い方で見下すのが ネットの基本戦術なんだよな。
656 名前:デフォルトの名無しさん [2007/10/10(水) 12:09:12 ] ACLのアカデミック版って($99の奴)って 日本の学生って適応されないの? ざっとみたところ、米国のみって記述が見つからなかったけれど。