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


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

Lisp Scheme Part18



1 名前:デフォルトの名無しさん [2007/08/12(日) 21:38:15 ]
過去スレ
Part17: ttp://pc11.2ch.net/test/read.cgi/tech/1177065699/
Part16: ttp://pc11.2ch.net/test/read.cgi/tech/1172404795/
Part15: ttp://pc10.2ch.net/test/read.cgi/tech/1151025773/
Part14: ttp://pc8.2ch.net/test/read.cgi/tech/1132275726/
Part13: ttp://pc8.2ch.net/test/read.cgi/tech/1115901841/
Part12: ttp://pc8.2ch.net/test/read.cgi/tech/1100229366/
Part11: ttp://pc5.2ch.net/test/read.cgi/tech/1091456033/
Part10: ttp://pc5.2ch.net/test/read.cgi/tech/1075630259/
Part9: ttp://pc2.2ch.net/test/read.cgi/tech/1069594582/
Part8: ttp://pc5.2ch.net/tech/kako/1058/10582/1058263391.html
Part7: ttp://pc5.2ch.net/tech/kako/1042/10421/1042167213.html
Part6: ttp://pc3.2ch.net/tech/kako/1031/10315/1031560687.html
Part5: ttp://pc3.2ch.net/tech/kako/1023/10230/1023091882.html
Part4: ttp://pc.2ch.net/tech/kako/1016/10162/1016211619.html
Part3: ttp://pc.2ch.net/tech/kako/1008/10082/1008220265.html
Part2: ttp://pc.2ch.net/tech/kako/1002/10025/1002584344.html
Part1: ttp://piza2.2ch.net/tech/kako/987/987169286.html

692 名前:デフォルトの名無しさん mailto:sage [2007/12/11(火) 21:59:56 ]
>>690
.NET Framework をシームレスに呼べるようになってたりするのだろう。w
それはそれで便利かも。

693 名前:デフォルトの名無しさん mailto:sage [2007/12/11(火) 22:16:56 ]
F#ですか

694 名前:デフォルトの名無しさん mailto:sage [2007/12/11(火) 22:33:57 ]
MSによりLisp#が開発される暁には、.net frameworkを呼べるようになるだけではなく、
Java→C#で行われたような言語レベルでの大幅な強化・改善が行われるだろう。

695 名前:デフォルトの名無しさん mailto:sage [2007/12/11(火) 22:38:10 ]
丸括弧が無くなるんじゃねーの

696 名前:デフォルトの名無しさん mailto:sage [2007/12/12(水) 00:55:36 ]
あの会社としては、CLtLとかRxRSなんて気にしないで新標準を作っちゃうんだろうけど、
それでも依然として LISP ではあるところが LISP の包容力の大きさだ。w
まじでやってほしい気がしてきた。

697 名前:デフォルトの名無しさん mailto:sage [2007/12/12(水) 10:45:55 ]
lispであるための条件って
表現がS式であることしか無いような気がしてきた

698 名前:デフォルトの名無しさん mailto:sage [2007/12/12(水) 16:29:24 ]
M式の立場は?

699 名前:デフォルトの名無しさん mailto:sage [2007/12/12(水) 17:06:11 ]
SM式?

700 名前:デフォルトの名無しさん mailto:sage [2007/12/12(水) 20:24:54 ]
665で1文字読み込む実装は知らないなんて書きましたけど
無知すぎました
エンコーディングさえ設定すれば1文字読み込むことも出来る実装がちゃんとあるんですね



701 名前:デフォルトの名無しさん mailto:sage [2007/12/13(木) 09:49:24 ]
>>695
( ) の代わりに全部 { } で書くの?

702 名前:デフォルトの名無しさん mailto:sage [2007/12/13(木) 17:35:11 ]
>>700
>665で1文字読み込む実装は知らないなんて書きましたけど

665にはそんな記述見あたらないんだけど…
655の間違いだな

703 名前:デフォルトの名無しさん [2007/12/13(木) 22:19:54 ]
>>695
dylanのことかーっ

704 名前:691 mailto:sage [2007/12/14(金) 01:07:29 ]
slib/scheme48.initに答えが書いてありますねorz
slibはscheme48を冷遇してるから期待してなかったんですが…

705 名前:700 mailto:sage [2007/12/14(金) 20:29:02 ]
>>702
訂正どうもです

706 名前:デフォルトの名無しさん mailto:sage [2007/12/14(金) 23:11:54 ]
『Gaucheプログラミング』

Kahuaプロジェクト 著
川合 史朗 監修
ISBN978-4-87311-348-7
定価3,360円

707 名前:デフォルトの名無しさん mailto:sage [2007/12/14(金) 23:50:51 ]
>>706
発売日は決まったの?

708 名前:デフォルトの名無しさん mailto:sage [2007/12/15(土) 07:58:50 ]
>>706
「プログラミングGauche」じゃなかったっけ?


709 名前:デフォルトの名無しさん mailto:sage [2007/12/15(土) 08:43:01 ]
「プロGaucheグラミング」

710 名前:デフォルトの名無しさん mailto:sage [2007/12/15(土) 08:46:56 ]
「プGロaグuラcミhンeグ」



711 名前:デフォルトの名無しさん mailto:sage [2007/12/15(土) 08:50:12 ]
それが出たら終了だな

712 名前:デフォルトの名無しさん mailto:sage [2007/12/15(土) 09:29:05 ]
「プログラミング」

   ∩___∩
   | ノ       ヽ
  /  ●   ● | G、Gauche!
  |  ///( _●_)//ミ
 彡、  /⌒)(⌒ヽノ
  ./  /  / \ \
  l   ノ    `ー‐'


713 名前:デフォルトの名無しさん mailto:sage [2007/12/15(土) 12:14:48 ]
ガウチェ

714 名前:デフォルトの名無しさん mailto:sage [2007/12/15(土) 17:26:12 ]
assqとassocはeqとequalの違いがあると本に書いてありました。
でも、どんな場合に違いがでるのかわからないので説明があるどこかのURLを教えてください。
お願いします。

715 名前:デフォルトの名無しさん mailto:sage [2007/12/15(土) 17:49:32 ]
>>714
eqとequalの違いは判る人?
それすら判らない人?

716 名前:デフォルトの名無しさん mailto:sage [2007/12/15(土) 17:50:56 ]
>>714
www.google.co.jp/search?q=eq+equal

717 名前:デフォルトの名無しさん mailto:sage [2007/12/15(土) 18:35:24 ]
>>714
"Comparator"の違い。

718 名前:デフォルトの名無しさん mailto:sage [2007/12/15(土) 18:37:57 ]
>>715
わかりません。

>>716
やってみましたが下記のような感じで書いてあり、いまいち初心者にはピンと来ないのです。

eq
二つのオブジェクト(実体)が同じものの時。
実体が同じということは、その内容が変われば、他方の内容もそれにつれて変わるような関係。
シンボルや、整数値の場合は、名前や値が同じだけで同じと判別する。
equal
中身が同じものを指しているなら真。

719 名前:デフォルトの名無しさん mailto:sage [2007/12/15(土) 18:49:29 ]
>>714
一致する場合はこう。

(assq 'a '((a b) (c d))) ; => (a b)
(assoc 'a '((a b) (c d))) ; => (a b)

違いは以下のような場合。実行してみるとこういう違いがある。

(assq '(4 5) '(((1 2) 3) ((4 5) 6))) ; => #f
(assoc '(4 5) '(((1 2) 3) ((4 5) 6))) ; => ((4 5) 6)

>>718の説明から理解するのは難しい。

720 名前:デフォルトの名無しさん mailto:sage [2007/12/15(土) 18:50:39 ]
>>718
Javaの == と equals との関係に似ている
eq はポインタ同値



721 名前:デフォルトの名無しさん mailto:sage [2007/12/15(土) 18:59:02 ]
>>718は変。
eq
< 二つの引数が同じオブジェクトなら真。
equal
< 二つの引数が別のオブジェクトでも中身が同じなら真。

722 名前:デフォルトの名無しさん mailto:sage [2007/12/15(土) 19:09:49 ]
>>718
うるさいことを言わなければ、は以下のような使い分けになる。

・シンボルであることが明らかな場合は eq を使うことができる。(eqのほうが速い)
・そうでないときは equal が安全。
・その中間として eql ってのがある。構造のあるもの(リスト・文字列・配列など)でないことが
判っていればこちらのほうが速い。
・数値同士だと判ってるなら =、文字列同士なら string= がたぶん速い。

なぜこんなことになってるか知りたければもっと勉強するべし。

723 名前:デフォルトの名無しさん mailto:sage [2007/12/15(土) 19:10:00 ]
>>719-721
ありがとうございます。すごくよくわかりました。
(assq '(4 5) '(((1 2) 3) ((4 5) 6))) ; => #f
(assoc '(4 5) '(((1 2) 3) ((4 5) 6))) ; => ((4 5) 6)
の場合には(4 5)が別々のオブジェクトをさすポインタだからeqでは偽になるんですね。
でもequalだとオブジェクトが同じだから真になるんですね。

724 名前:デフォルトの名無しさん mailto:sage [2007/12/15(土) 19:19:45 ]
>>718
assqの実装は大体こんな感じになっている。

(defun assq (key alist)
(cond
((null alist) nil)
((eq key (car (car alist))) (car alist))
(t (assq key (cdr alist)))))

assocならこう

(defun assoc (key alist)
(cond
((null alist) nil)
((equal key (car (car alist))) (car alist))
(t (assq key (cdr alist)))))

>>724が言うようにeqlや=やstring=を使えば用途に応じて高速なものが使える。

725 名前:デフォルトの名無しさん mailto:sage [2007/12/15(土) 19:25:35 ]
>>723
> でもequalだとオブジェクトが同じだから真になるんですね。
< でもequalだとオブジェクトの中身が同じだから真になるんですね。


726 名前:デフォルトの名無しさん mailto:sage [2007/12/15(土) 19:34:35 ]
>>722>>724>>725
ありがとうございます。

>>722
むずかしいけど、>>724の解説をみて、使うと便利だということは理解できました (^ ^;

>>724
そういうプログラムなんですね。eqとequalの使われてるところとか参考になりました。

>>725
ありがとうございます。そういうことを書いたつもりでした。でもプログラミングのことを正確に話し言葉にするのって難しいです。

727 名前:デフォルトの名無しさん mailto:sage [2007/12/15(土) 20:32:28 ]
例えばここにSBCLのeq, eql, equalのソースがある
ttp://sbcl.cvs.sourceforge.net/sbcl/sbcl/src/code/pred.lisp?view=markup
> 196 ;;;; equality predicates
eqの実質的な定義はちょっと見つけられなかったけど...

728 名前:デフォルトの名無しさん mailto:sage [2007/12/15(土) 20:36:48 ]
>>424
最後の行が間違えてるね。assq=>assoc

(defun assoc (key alist)
(cond
((null alist) nil)
((equal key (car (car alist))) (car alist))
(t (assoc key (cdr alist)))))

729 名前:デフォルトの名無しさん mailto:sage [2007/12/15(土) 21:54:45 ]
(defun sqrt (x)
(defun good-enough? (guess)
(< (abs (- (square guess) x)) 0.001))
(defun improve (guess)
(average guess (/ x guess)))
(defun sqrt-iter (guess)
(if (good-enough? guess)
guess
(sqrt-iter (improve guess))))
(sqrt-iter 1.0))

(defun average (a b) (/ (+ a b) 2))

(defun square (x) (* x x))

(sqrt 2)
1.414216

730 名前:デフォルトの名無しさん mailto:sage [2007/12/15(土) 22:14:28 ]
随分と荒い収束判定だな



731 名前:デフォルトの名無しさん mailto:sage [2007/12/15(土) 22:27:49 ]
>>730
どこを修正すると改善されるか?という問題かな?

732 名前:デフォルトの名無しさん mailto:sage [2007/12/15(土) 22:35:11 ]
無理せず Scheme 使えば…… define と defun は違うよ。とオモタ

733 名前:デフォルトの名無しさん mailto:sage [2007/12/16(日) 00:54:38 ]
>>732
Schemeを使わなくてもCLにはlabelsがあるよ。とオモタ

734 名前:デフォルトの名無しさん mailto:sage [2007/12/16(日) 01:38:25 ]
>>727
「実質的な」ってどういう意味?

735 名前:デフォルトの名無しさん mailto:sage [2007/12/16(日) 12:26:37 ]
自問自答w

翻訳系eq実装の事ね。
src/compiler/x86/pred.lisp

eqlは、
src/compiler/x86/arith.lisp
src/compiler/x86/float.lisp
src/compiler/src/trans.lisp
あたり。



736 名前:デフォルトの名無しさん mailto:sage [2007/12/17(月) 02:31:46 ]
jmuk(笑) Haskell(笑)

737 名前:デフォルトの名無しさん mailto:sage [2007/12/17(月) 23:35:02 ]
今日の発見

(atom '(1 2 3)) ; => nil
(atom (quote ())) ;=> t

空リストがアトムだと知らなかった。 orz

738 名前:デフォルトの名無しさん mailto:sage [2007/12/17(月) 23:39:40 ]
(listp '())
t

リストでもある

739 名前:デフォルトの名無しさん mailto:sage [2007/12/17(月) 23:58:26 ]
(defun . (atom . ((x . nil) . ((not . ((consp . (x . nil))))))))

740 名前:デフォルトの名無しさん mailto:sage [2007/12/18(火) 01:01:57 ]
CLなら()はquoteしなくてもいいんじゃなかったっけ?
Schemeならquoteがいるけど
Guileは()も#(...)も自己評価的でRnRSとはだいぶ違う(Schemeの中ではCL寄り?)
R5RSに準拠してくれたら乗り換えてもいいかなと思うんだけど



741 名前:デフォルトの名無しさん mailto:sage [2007/12/18(火) 02:14:52 ]
>>737
nilって知ってる?

742 名前:デフォルトの名無しさん mailto:sage [2007/12/18(火) 08:44:38 ]
(atomp '下條) => t

743 名前:デフォルトの名無しさん mailto:sage [2007/12/18(火) 12:32:51 ]
(atomp '鉄腕) => t

744 名前:デフォルトの名無しさん mailto:sage [2007/12/18(火) 16:01:08 ]
(atomp 'フランツ) => t
あれ?

745 名前:デフォルトの名無しさん mailto:sage [2007/12/18(火) 18:48:24 ]
てか、atomp でいいの?

746 名前:デフォルトの名無しさん mailto:sage [2007/12/18(火) 20:13:30 ]
>>738
listpとか

(null ())
t

とかも教科書では出てくるけどatomはあまり使わないかな。記号処理では使うけど。



747 名前:デフォルトの名無しさん mailto:sage [2007/12/18(火) 20:46:24 ]
>>745

ホントは良くない。

748 名前:デフォルトの名無しさん mailto:sage [2007/12/19(水) 14:15:26 ]
Common Lisp:
(let ((x)) x) => NIL
Scheme:
(let ((x)) x) -> ERROR
Unspecific値が返るかと密かに期待したんですけど
CLと違ってSchemeではletはlambdaの派生式だから当然と言えば当然ですね
Unspecific値を手軽に得るには(if #f #f)しかないのかな?

749 名前:デフォルトの名無しさん mailto:sage [2007/12/20(木) 00:22:39 ]
>>728
Scheme版ならこんな感じ。

(define assoc
(lambda (key alist)
(cond ((null alist) nil)
((equal key (car (car alist))) (car alist))
(else (assoc key (cdr alist))))))

lambdaとelseを使ってみた。

750 名前:デフォルトの名無しさん mailto:sage [2007/12/20(木) 00:26:32 ]
SchemeかLispで書いてあるアルゴリズムの教科書を教えてください。



751 名前:デフォルトの名無しさん mailto:sage [2007/12/20(木) 01:28:38 ]
>>748
Schemeの文法良く調べろよ。

752 名前:デフォルトの名無しさん mailto:sage [2007/12/20(木) 04:05:38 ]
(define assoc
 (lambda (key alist)
  (cond ((null? alist)
       #f)
      ((equal? key (caar alist)))
       (car alist))
      (else
       (assoc key (cdr alist))))))

753 名前:デフォルトの名無しさん mailto:sage [2007/12/20(木) 17:54:21 ]
>>752
乙!
null?だよね。間違ってたw
あとcaarの方が簡潔だね。

754 名前:デフォルトの名無しさん mailto:sage [2007/12/20(木) 17:55:22 ]
>>751
文法はアルゴリズムじゃないぜw

755 名前:デフォルトの名無しさん mailto:sage [2007/12/20(木) 17:57:38 ]
>>754
アルゴリズムの話なんてしてないだろw

756 名前:デフォルトの名無しさん mailto:sage [2007/12/20(木) 18:00:54 ]
>>750
釣りかもしれないけどSICPとかどうよ?

757 名前:デフォルトの名無しさん mailto:sage [2007/12/20(木) 18:03:46 ]
>>755
はぁ?

>750 名前:デフォルトの名無しさん 投稿日:2007/12/20(木) 00:26:32
>SchemeかLispで書いてあるアルゴリズムの教科書を教えてください。
>
>
>751 名前:デフォルトの名無しさん 投稿日:2007/12/20(木) 01:28:38
>>>748
>Schemeの文法良く調べろよ。
>
>754 名前:デフォルトの名無しさん 投稿日:2007/12/20(木) 17:55:22
>>>751
>文法はアルゴリズムじゃないぜw
>
>
>755 名前:デフォルトの名無しさん 投稿日:2007/12/20(木) 17:57:38
>>>754
>アルゴリズムの話なんてしてないだろw

アルゴリズムの話じゃなきゃなんなの?

758 名前:デフォルトの名無しさん mailto:sage [2007/12/20(木) 18:30:18 ]
これは新手の荒しか?







759 名前:デフォルトの名無しさん mailto:sage [2007/12/20(木) 18:34:33 ]
     /\⌒ヽペタン
   /  /⌒)ノ ペタン
  ∧_∧ \ (( ∧_∧
 (; ´Д`))' ))(・∀・ ;)
 /  ⌒ノ ( ⌒ヽ⊂⌒ヽ
.(O   ノ ) ̄ ̄ ̄()__   )
 )_)_) (;;;;;;;;;;;;;;;;;;;)(_(

アンカーをもう一度見直すんだ

760 名前:デフォルトの名無しさん mailto:sage [2007/12/20(木) 18:58:27 ]
>>759
わはー、おっちょこちょいはワシだけじゃなかったらすぃ




761 名前:デフォルトの名無しさん mailto:sage [2007/12/20(木) 18:58:29 ]
>>754 が勘違いしたってことでいいのか?


762 名前:デフォルトの名無しさん mailto:sage [2007/12/20(木) 20:15:05 ]
Lisp/Schemeでセジウィックみたいなアルゴリズムの本って思いつかないな?
SICPは良い本だけど辞書的ではないしなぁ。

763 名前:デフォルトの名無しさん mailto:sage [2007/12/20(木) 21:05:07 ]
>>752

(define (assoc key alist)
 (and alist
  (let loop ((ls alist))
   (if (equal? key (caar ls))
    (car ls)
     (loop (cdr ls))))))


764 名前:デフォルトの名無しさん mailto:sage [2007/12/20(木) 21:10:53 ]
関数型という範疇であればアルゴリズムの本はあるよ。MLだけど。

Purely Functional Data Structures

Algorithms: A Functional Programming Approach

765 名前:デフォルトの名無しさん mailto:sage [2007/12/20(木) 22:08:20 ]
>>749さんのは動かなかったので修正しておきました。
(define assoc
(lambda (key alist)
(cond
((null? alist) #f)
((equal? key (car (car alist))) (car alist))
(else (assoc key (cdr alist))))))

>>752さんのも動かなかったので修正しておきました。
(define assoc
(lambda (key alist)
(cond
((null? alist) #f)
((equal? key (caar alist)) (car alist))
(else (assoc key (cdr alist))))))

>>763さんのは動きました。loopの使い方がイイ感じですね。

766 名前:デフォルトの名無しさん mailto:sage [2007/12/20(木) 23:38:07 ]
Lispで

(setq pref-alist
'(("山梨県" . "甲府市")
("神奈川県" . "横浜市")
("愛知県" . "名古屋市")
("茨城県" . "水戸市")))

とやっているのをschemeではどのように書けばよいのでしょうか?お願いします。

767 名前:デフォルトの名無しさん mailto:sage [2007/12/20(木) 23:40:38 ]
トップレベルなら setq を define にするだけだべ

768 名前:デフォルトの名無しさん mailto:sage [2007/12/21(金) 00:06:44 ]
>>767
gaucheでそうやってみると

gosh> *** READ-ERROR: Read error at "c:/meadow/test-assoc.scm":line 43: EOF encountered in a string literal: "壤壤壤「壤ィ"
Stack Trace:

となるので間違っているのかと思いまして。日本語が上手く通っていないだけなんですね。ちょっとがっかりですが納得できました。有り難うございます。

769 名前:デフォルトの名無しさん mailto:sage [2007/12/21(金) 00:15:17 ]
英語で

(define pref-alist
'(("yamanashi" . "kofu")
("kanagawa" . "yokohama")
("aichi" . "nagoya")
("ibaraki" . "mito")))

と書いて、
>

c-c c-l ファイル名
したあと

>gosh> (assoc "ibaraki" pref-alist)
("ibaraki" . "mito")

と出来ました。お騒がせしました。utf-8が上手く行ってないようです。

770 名前:デフォルトの名無しさん mailto:sage [2007/12/21(金) 00:24:35 ]
c-x return f utf-8 return
してからセーブしたら解決しました。
Gaucheの仕様がコンソール上ではsjisでOKなのに、ファイルだとutf-8しか受け付けないというのがわかっていなかったのが原因でした。



771 名前:デフォルトの名無しさん mailto:sage [2007/12/21(金) 00:46:35 ]
>>748
> (let ((x)) x) -> ERROR

これはletの返り値じゃなくて、文法エラーだぜ。
初期値省略は許されてない!


772 名前:デフォルトの名無しさん mailto:sage [2007/12/21(金) 01:09:49 ]
>>765
> >>763さんのは動きました。
動かないと思うんですが


773 名前:748 mailto:sage [2007/12/21(金) 06:38:07 ]
=>が返り値
->が結果のつもりで書き分けたんですが…


774 名前:デフォルトの名無しさん mailto:sage [2007/12/21(金) 07:23:25 ]
ttp://page13.auctions.yahoo.co.jp/jp/auction/r41896772
>希望落札価格:10,000 円

(; ・`д・´) な、なんだってー!! (`・д´・ ;)

775 名前:デフォルトの名無しさん mailto:sage [2007/12/21(金) 08:08:30 ]
amazonのマーケットプレイスでの「入門Scheme」が\12,000だからなぁ。

776 名前:デフォルトの名無しさん mailto:sage [2007/12/21(金) 09:07:32 ]
>>773
> ->が結果のつもりで書き分けたんですが…
>>748では
> (let ((x)) x) -> ERROR
> Unspecific値が返るかと密かに期待したんですけど
って自分で言ってんじゃん。

> CLと違ってSchemeではletはlambdaの派生式だから当然と言えば当然ですね

とか何の関係ないし。初期化しないとUnspecific値が得られると思ったんでしょ。

777 名前:デフォルトの名無しさん mailto:sage [2007/12/21(金) 09:12:24 ]
>>774
この人かな
www.geocities.jp/hajiri_koichiro/index.html

778 名前:748 mailto:sage [2007/12/21(金) 09:57:25 ]
いやだから
期待したのは(let ((x)) x) => #<unspecific>
結果は(let ((x)) x) -> ERROR
そもそも私の使ってる実装にERROR値はないんです

ダミーの引数を受け取る名前付きletを書いてて
初期値を最初'()にしてたんですけど
'()よりも#<unspecific>のほうがいいかなと思って
深く考えずに実引数を省略してみたんです
その時はletがlambdaの派生式だってことを忘れてて
じゃあletがlambdaのマクロじゃないCLがどうなのかなと思って調べただけなんです

779 名前:デフォルトの名無しさん mailto:sage [2007/12/21(金) 15:25:21 ]
Makefileの文法が気に入らないので、
S式で書けるイカスmakeの代替プログラムがないかと思ってるんですが、
みなさんごぞんじないですか?

780 名前:デフォルトの名無しさん mailto:sage [2007/12/21(金) 17:00:41 ]
>>778
> そもそも私の使ってる実装にERROR値はないんです

仕様的に、エラーは値じゃなくて、
エラー状態にあることが、「通知(signaled)される」か、
通知が明記されてない場合は、推奨されないが無視していいんですよ。

エラーが無視された時に式の値が未規定(unspecified)である実装はありうるけど、
それは「エラー値」じゃないし、#<unspecific>とも限らないのです。
なんらかのオブジェクトである必要はあります。

通知される場合には、値を返さず、
トップレベルに復帰する実装が多いと思います。



781 名前:748 mailto:sage [2007/12/21(金) 18:05:36 ]
内容のある話じゃないのにドツボにはまっていく…

>>780
771さんが
>>(let ((x)) x) -> ERROR
>これはletの返り値じゃなくて、文法エラーだぜ。
と仰ったので
返り値じゃないことは分かっています、だから=>と->で書き分けました
と773で書いたのです

>>776
CLはたしかletがlambdaの糖衣構文じゃないから
((lambda (x) x))がエラーになる処理系でも
(let ((x)) x)がエラーになるとは限らない
他方、R5RSはletがlambdaの派生式だから
((lambda (x) x))がエラーになる場合は
(let ((x)) x)も当然エラーになる
と書きたかったのです

ところでR5RSの3.2においてport?という述語がありますが
port?という述語は標準手続きにありませんよね?
あと、promiseは典型的にはthunkで実現されてますけど
R5RSでは「一つの可能な実装」とされているにすぎませんので
標準手続きにおいてpromiseかどうかを判定する手段はありませんよね?

782 名前:デフォルトの名無しさん mailto:sage [2007/12/21(金) 18:42:02 ]
>>772
Gaucheで動くと思うけどなぁ?

(define (assoc key alist)
(and alist
(let loop ((ls alist))
(if (equal? key (caar ls))
(car ls)
(loop (cdr ls))))))
;-----------------------------------------------------------------
(define pref-alist
'(("山梨県" . "甲府市")
("神奈川県" . "横浜市")
("愛知県" . "名古屋市")
("茨城県" . "水戸市")))
;-----------------------------------------------------------------
(assoc "山梨県" pref-alist)

783 名前:デフォルトの名無しさん mailto:sage [2007/12/21(金) 18:53:44 ]
(assoc "山梨" pref-alist)
*** ERROR: pair required, but got ()

784 名前:デフォルトの名無しさん mailto:sage [2007/12/21(金) 19:15:03 ]
>>783
ファイルに>>782を書き込んで、そのファイルをeamcsとかMeadowでc-c c-l <<ファイル名>> したあとでやってみるといいYO!


785 名前:デフォルトの名無しさん mailto:sage [2007/12/21(金) 19:16:29 ]
>>783
山梨じゃなくて「山梨県」だYO!

786 名前:デフォルトの名無しさん mailto:sage [2007/12/21(金) 19:17:29 ]
gosh> (assoc "山梨県" pref-alist)
("山梨県" . "甲府市")
gosh>

787 名前:デフォルトの名無しさん mailto:sage [2007/12/21(金) 19:25:50 ]
783さんはマッチしないキーがある場合の判定が抜けていることを指摘しているのでは?

788 名前:デフォルトの名無しさん mailto:sage [2007/12/21(金) 19:28:45 ]
ところで最初の(and alistは何のため?

789 名前:デフォルトの名無しさん mailto:sage [2007/12/21(金) 19:30:07 ]
日本語がおかしかった
与えられたキーがマッチしなかった場合

790 名前:デフォルトの名無しさん mailto:sage [2007/12/21(金) 21:15:06 ]
>>787-789
漏れもandだけではnull?の代わりにならないような希ガス



791 名前:デフォルトの名無しさん mailto:sage [2007/12/21(金) 23:36:44 ]
再帰の方がきれいに書けちゃうんだな

792 名前:デフォルトの名無しさん mailto:sage [2007/12/22(土) 00:39:53 ]
>>779 Lisp で良ければ defsystem とか asdf とか?Scheme にも多分似たようなものがありそう。






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

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

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