首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >鸡的发电机方案

鸡的发电机方案
EN

Stack Overflow用户
提问于 2015-07-28 18:08:16
回答 1查看 256关注 0票数 2

此代码在codepad.org提供的lines中工作,在显示消息“意外返回”之前,在连续的行中显示数字1、2和3,但相同的代码在ideone.com使用Chicken失败,并且我不理解小鸡方案提供的错误消息。我怎样才能让它与鸡肉计划一起工作呢?

代码语言:javascript
复制
(define-syntax define-generator
  (lambda (x)
    (syntax-case x (lambda)
      ((stx name (lambda formals e0 e1 ...))
         (with-syntax ((yield (datum->syntax-object (syntax stx) 'yield)))
           (syntax (define name
             (lambda formals
               (let ((resume #f) (return #f))
                 (define yield
                   (lambda args
                     (call-with-current-continuation
                      (lambda (cont)
                        (set! resume cont)
                        (apply return args)))))
                 (lambda ()
                   (call-with-current-continuation
                    (lambda (cont)
                      (set! return cont)
                      (cond (resume (resume))
                      (else (let () e0 e1 ...)
                            (error 'name "unexpected return"))))))))))))
        ((stx (name . formals) e0 e1 ...)
          (syntax (stx name (lambda formals e0 e1 ...)))))))

(define-generator (test-gen)
  (yield 1)
  (yield 2)
  (yield 3))

(define t (test-gen))
(display (t)) (newline)
(display (t)) (newline)
(display (t)) (newline)
(display (t)) (newline)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-07-28 18:25:17

小鸡需要加载才能支持syntax-case。但是,ideone没有安装那个鸡蛋,所以您不能在那里使用它。

因此,为了测试ideone,您必须将宏转换为显式重命名的宏。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31683997

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档