Scheme 方案报价程序
练习问题: 传递给过程的参数不一定总是同一类型。定义一个接受任何类型的值并返回该值的过程echo 我目前提出:Scheme 方案报价程序,scheme,echo,quote,Scheme,Echo,Quote,练习问题: 传递给过程的参数不一定总是同一类型。定义一个接受任何类型的值并返回该值的过程echo 我目前提出: (define echo (lambda (x) (quote x))) 但问题是,如果我键入一个数字或一个值,程序将不会打印x。 有人能帮忙吗?quote x阻止对符号x的求值,因此返回的值不是x的值 但是这个符号本身 identity函数接受一个参数并返回它: (lambda (x) x) 应用时: ((lambda (x) x) 4) ;=> 4 ((l
(define echo
(lambda (x)
(quote x)))
但问题是,如果我键入一个数字或一个值,程序将不会打印x。
有人能帮忙吗?quote x阻止对符号x的求值,因此返回的值不是x的值 但是这个符号本身 identity函数接受一个参数并返回它:
(lambda (x) x)
应用时:
((lambda (x) x) 4)
;=> 4
((lambda (x) (quote x)) 4)
;=> x
引号x阻止对符号x求值,因此返回的值不是x的值 但是这个符号本身 identity函数接受一个参数并返回它:
(lambda (x) x)
应用时:
((lambda (x) x) 4)
;=> 4
((lambda (x) (quote x)) 4)
;=> x
你被要求实施这个计划。如果您的解释器提供,则echo过程可以作为别名实现:
(define echo identity)
或作为Racket中值的别名:
(define echo values)
如果不是,则从头开始实现echo非常简单:只需返回作为参数传递的内容,无需使用引号:
(define (echo x) x)
或者显式使用lambda:
上述所有过程都将接受任何类型的值并返回该值,例如:
(echo "hello")
> "hello"
(echo 42)
> 42
(echo (quote x))
> 'x
你被要求实施这个计划。如果您的解释器提供,则echo过程可以作为别名实现:
(define echo identity)
或作为Racket中值的别名:
(define echo values)
如果不是,则从头开始实现echo非常简单:只需返回作为参数传递的内容,无需使用引号:
(define (echo x) x)
或者显式使用lambda:
上述所有过程都将接受任何类型的值并返回该值,例如:
(echo "hello")
> "hello"
(echo 42)
> 42
(echo (quote x))
> 'x
为什么你认为你需要报价?为什么你认为你需要报价?