Scheme 方案报价程序

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

练习问题:

传递给过程的参数不一定总是同一类型。定义一个接受任何类型的值并返回该值的过程echo

我目前提出:

(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
为什么你认为你需要报价?为什么你认为你需要报价?