• common lisp和scheme的区别


    1. 在Common Lisp 眼中,一个符号的symbol-value 和symbol-function 是不一样的,而Scheme
    对两者不作区分。在Scheme 里面,变量只有唯一对应的值,它可以是个函数,也可以是另一种对
    象。因此,在Scheme 中就不需要#’ 或者funcall 了。Common Lisp 的:
    (let ((f #’(lambda (x) (1+ x))))
    (funcall f 2))
    在Scheme 中将变成:
    (let ((f (lambda (x) (1+ x))))
    (f 2))
    2. 由于Scheme 只有一个名字空间,因而它没有必要为各个名字空间专门设置对应的赋值操作
    符(例如defun 和setq)。取而代之,它使用define,define 的作用和defvar 大致相当,同时
    用set! 替代了setq。在用set! 为全局变量赋值前,必须先用define 创建这个变量。
    3. 在Scheme 中,通常用define 定义有名函数,它行使着defun 和defvar 在Common Lisp 中的功
    能。Common Lisp 的:
    (defun foo (x) (1+ x))
    有两种可能的Scheme 翻译:
    (define foo (lambda (x) (1+ x)))
    (define (foo x) (1+ x))
    4. 在Common Lisp 中,函数的参数按从左到右的顺序求值。而在Scheme 中,有意地不对求值顺序
    加以规定。(并且语言的实现者对于忘记这点的人幸灾乐祸。)
    5. Scheme 不用t 和nil,相应的,它有#t 和#f。空列表,(),在某些实现里为真,而在另一些实现里
    为假。
    6. cond 和case 表达式里的默认子句在Scheme 中带有else 关键字,而不是Common Lisp 中的t。
    7. 某些内置操作符的名字被改掉了:consp 成了pair?,而null 则是null?,mapcar (几乎) 是map,
    等等。通常根据上下文,应该能看出这些操作符的意思。

    QinHongYu blog
  • 相关阅读:
    页面登陆系统--带文字验证码
    Django-form表单
    Ajax 异步局部刷新
    Django认证系统auth认证
    cookie与session
    使用lorem在HTML中生成随机文本
    request模块
    java——第五天-面向对象OOP
    java——第四天
    java——第三天
  • 原文地址:https://www.cnblogs.com/psil-xyz/p/7768416.html
Copyright © 2020-2023  润新知