关于Scheme中的引用

时间:2016-08-21 08:58:56

标签: functional-programming scheme

> (procedure? +)
#t
> (procedure? (car '(+ 2 3)))
#f
> (list? '(+ 2 3))
#t
> (symbol? (car '(+ 2 3)))
#t
> (define someList (list + 2 3))

> someList

>    '(#< procedure:+ > 2 3)

> (procedure? (car someList))
#t
>

使用引号时是否可以将+识别为程序?

1 个答案:

答案 0 :(得分:1)

列表,向量,符号,字符串,布尔值和数字的优点是具有文字表示,而程序则没有。有人可能会争辩说,对于全局变量,甚至可能是全局模块绑定都是可行的,因为它们可以在宏扩展时确定,但是因为我们没有最好的方法来做你想要的就是使用quasiquote来评估一些部分:

if(mail($to,$subject,$body)){
   mail($email,"Thanks!!","Thank you very much for registering!!!")
}

请注意,在评估`(,+ 1 2 3) ; ==> (#<procedure:+> 1 2 3) 后,此列表中没有与符号+关联的内容。还要知道符号+是数据,不要与变量+混淆。