Lisp Scheme Part37at TECH
Lisp Scheme Part37 - 暇つぶし2ch16:デフォルトの名無しさん
13/09/01 22:26:29.67
何年か前にLittle Schemer読んで、Seasonedの最初の方で投げ出しちゃった。
翻訳買ってきたけど読めるかな、、

17:デフォルトの名無しさん
13/09/02 18:37:31.52
継続に近いのはC++やJavaの例外処理

18: ◆QZschizo.ptH
13/09/02 21:22:40.86
setjmp()/longjmp() はどうですか?

19:デフォルトの名無しさん
13/09/02 22:04:51.31
>>17
それって脱出継続だけやん

20:デフォルトの名無しさん
13/09/03 00:24:54.96
>>17
一番近いのはgotoだと聞いたが

21:デフォルトの名無しさん
13/09/03 09:44:19.10
gotoが継続に一番近いという意見はプログラミング言語の意味論史から見れば本末転倒の答えだぞ。

なにしろ継続(continuation)という概念は表示的意味論(denotational semantics)の産みの親のStracheyが
「goto文に指定されている飛び先ラベルの表示は何なのか?」という問題に対する答えとして発明し導入した概念なのだから。

継続の発明によってgoto文を含む言語に対して表示的意味論を定義し与えることが可能となり、その継続という概念は
エラーなどの例外処理に対する意味論を与える上でも使えると判って活用されるようになったのは、Stracheyがgotoのために
継続を発明してから何年も経ってからなのだから。

つまり継続とは何よりも先ずgotoの意味を捉える目的で発明されたということだ。
だから継続に一番近いのがgotoなのではなく、継続の最も基本的な部分は正にgotoの表示的意味のために作られたんだよ。

22:デフォルトの名無しさん
13/09/03 10:20:51.41
要するにどれもノイマンマシンの機械語ではGOTOだし、
意味論では継続なんだよ。

23:デフォルトの名無しさん
13/09/03 10:32:40.98
ユークリッドの幾何学しか幾何学と呼んではいけないみたいだな

24:デフォルトの名無しさん
13/09/03 15:27:31.04
部分リストを見つける関数って
srfi
とかにないのでしょうか
自分で作るしかない?

(find-sub-list (..... 1 2 3 ....) (1 2 3) )
=> 123 の場所

25:はちみつ餃子 ◆8X2XSCHEME
13/09/03 20:15:35.08
>>24
たぶん無い。
汎用的にしようとすると比較関数に何を使うかでバリエーションを作るかオプショナル引数で取るかのいずれかが必要になるので、
仕様をまとめようとすると意外に面倒くさい話になると思う。

26:デフォルトの名無しさん
13/09/03 20:15:36.60
util.match は…

27:デフォルトの名無しさん
13/09/06 20:11:31.90
Lisperはこの世のゴミ
はやくGCされろ

28:デフォルトの名無しさん
13/09/06 20:27:54.47
突発的に感情が高ぶる病気
専門家にご相談ください

29:デフォルトの名無しさん
13/09/06 21:45:39.03
LISP以外では格好がつかない

30:デフォルトの名無しさん
13/09/08 01:50:51.75
matchマクロで
circular-list
だけマッチさせる事ってできないの?

31:デフォルトの名無しさん
13/09/08 02:05:04.39
matchマクロを自分で書こうとしてるのだけど
(match v ((x ...) x))
の ... を実装することができない。
どんな仕組みで実装してるのだろう

32:はちみつ餃子 ◆8X2XSCHEME
13/09/08 02:44:34.18
パターンマッチライブラリって色々あるんじゃねーの?
どれの話?
っていうか Common Lisp の話?

33:デフォルトの名無しさん
13/09/08 02:54:58.41
(define-syntax ellipses-syntax-test
(syntax-rules ( ... )
((_ x ... )
(list x ))
))
(ellipses-syntax-test 7 ...)
> '(7)

これが出来ないのです

34:はちみつ餃子 ◆8X2XSCHEME
13/09/08 03:27:54.16
>>33
R5RS では syntax-rules で ... にマッチさせることは不可能。
まわりくどいけど、判定の一部を別の手続きにするくらいしかない。

(define (test x)
(equal? x '(7 ...)))

(define-syntax ellipses-syntax-test
(syntax-rules ()
((_ x ...)
(test '(x ...)))))

(ellipses-syntax-test 7 ...)

35:はちみつ餃子 ◆8X2XSCHEME
13/09/08 03:56:43.63
R7RS だと非常に簡単に回避する方法が用意されてる。
syntax-rules が従来よりひとつ多く引数を取ることができ、
... のかわりに使う省略子を指定できる。

(define-syntax ellipses-syntax-test
(syntax-rules :: (...)
((_ x ... )
(list x))))

(ellipses-syntax-test 7 ...)

この場合は省略子は使ってないので適当な識別子を書いておけばいい。

36:はちみつ餃子 ◆8X2XSCHEME
13/09/08 03:59:25.76
R6RS ではパターンに ... は現れることは出来ないけど、
syntax-case なら fender 節でより詳細な判定が出来る。

(define-syntax ellipses-syntax-test
(lambda(stx)
(syntax-case stx ()
((_ x y)
(eqv? (syntax->datum #'y) '...)
#'(list x)))))

(ellipses-syntax-test 7 ...)


最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch