Racket Lang - Scheme如何组合环境的变量和值列表

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Racket Lang - Scheme如何组合环境的变量和值列表相关的知识,希望对你有一定的参考价值。

我是一个全新的计划,并试图创建一个真正的简单解释器作为起点。

给定两个列表,一个包含以下形式的变量:

(x y z) 

还有第二个包含它们的值:

(1 2 3)

我如何将它们组合起来制作一个如下所示的列表:

((x 1) (y 2) (z 3))

然后我会将其添加到我原来的环境中。我正在努力使用这种类型的编程语言来熟悉这些简单的操作。谢谢。

答案

使用map

(map list '(x y z) '(1 2 3))
另一答案

我目前是一名大学生,使用Dr。Dr.的Begining Student环境。因此,在符号和语法方面可能存在一些差异。

(define (combine-list list1 list2)
  (cond
;; Using (cond) function to create a recursion
    [(or (empty? list1) (empty? list2)) empty]
;; The base case: when to stop the recursion
;; It would be written in the first line cuz it will be evaluated first
    [else (cons (list (first list1) (first list2))
;; The recursive case: construct one typical element of the resulting list
                (combine-list (rest list1) (rest list2)))]))
;; Do the recursive case on all of the rest of the lists

我还没有学到(map)的作用,但在我看来,如果输入是两个参数,函数(combine-list)与(map)具有相同的行为,就像@soegaard在答案中所做的那样。

以上是关于Racket Lang - Scheme如何组合环境的变量和值列表的主要内容,如果未能解决你的问题,请参考以下文章

在 Scheme / Racket 中 let 的 lambda 定义是啥? [复制]

Scheme中的邮政编码验证(Dr. Racket)

Scheme / Racket中的静态变量?

Scheme可以在没有Racket的情况下做GUI吗?还是必须使用 Common Lisp?

Scheme/Racket中letrec的含义

Racket 与 Scheme 宏