6

今、私はThe Seasoned Schemer という本を見て、schemer に傾倒しています。ラケットでコードを書きましたが、 を使用するtryと、スキーマにはこのメソッドまたはマクロがありませんでした。そして、expand: unbound identifier in module in: try を報告しました。以下のコード: (89ページ)

(define (remove-member-first* a lat)
   (try oh (rm a lat oh) lat))

ラケットのドキュメントを検索しましたが、同様の機能は見つかりませんでした。

では、「try」のような機能があるかどうか、誰が知っているでしょうか?

4

2 に答える 2

14

githubの The Seasoned Schemerという本からすべてのコード スニペットを既に書いている人を見つけたところです。

そして、それは彼の答えです:(非衛生的ではなく、他のモデルを必要としません)

(define-syntax letcc
  (syntax-rules ()
    ((letcc var body ...)
     (call-with-current-continuation
       (lambda (var)  body ... )))))


(define-syntax try 
  (syntax-rules () 
    ((try var a . b) 
     (letcc success 
       (letcc var (success a)) . b))))

リンクはhttps://github.com/viswanathgs/The-Seasoned-Schemerです

于 2012-08-03T08:15:00.333 に答える