为什么方案中的`和`运算符不是内置过程

 violet 发布于 2022-12-11 19:45

我用鸡Scheme解释,当我键入not,它返回#,但是当我试图andor,则返回Error: unbound variable: and.

看来and操作员不是内置程序,为什么它不同not

如果这是真的,如何(and #t #f)评估?

1 个回答
  • and并且or是"短路操作员" - 他们不会对形成的结果进行评估,就像ifcond.例如:

    (and #f (display "foo"))
    

    不会显示任何内容,也不会显示:

    (or #t (display "foo"))
    

    使用过程无法执行此操作,因为对过程的调用将在输入过程之前评估所有参数:

    (define (proc-or x y) (if x #t (if y #t #f)))
    (proc-or #t (display "foo"))
    ; displays "foo" anyway
    

    if(或实际上or)这样的特殊形式可以决定它希望评估哪些参数.请参阅有关条件运算符的任何Scheme手册,或更一般的特殊表格(例如MIT Scheme,Racket ......)

    更具体地,or并且and将或者原始的形式(如if),或者操作者翻译成的原始形式的序列的宏.

    2022-12-11 19:48 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有