小编use*_*570的帖子

关于点“.” 计划中

我看到还有其他关于点“”的问题。我遵循了,但它对我的代码不起作用......它是代码的一部分,实现并不集中于这个符号。但输出应该包含这个点。当我输入两个列表 '(1 2 3) '(4 5) 时,我的预期输出 => (1 . 4) (2 . 5)

我设法得到 (1 4) (2 5) 只需要添加“。” 在中间。

Part of mycode 
(cons (list (car lst1) (car lst2))
....
Run Code Online (Sandbox Code Playgroud)

为了 ”。” 符号,如果我尝试

**trial-1**
 (cons '(list (car lst1) (car lst2)) ...)
Run Code Online (Sandbox Code Playgroud)

然后输出:((列表(car lst1)(car lst2))

**trail-2**
(cons (list (car lst1) '. (car lst2)) ...)
Run Code Online (Sandbox Code Playgroud)

然后..它说:非法使用“.”

使用点的规则是什么?有什么文件我可以看一下吗?顺便说一句,我正在使用 Racket(R5RS)。

scheme symbols

4
推荐指数
1
解决办法
7597
查看次数

letrec、Scheme 的混淆

我正在努力区分 let、letrec、let* 之间的区别......因为scheme不是我的主要编程语言,我的记忆已经存在很长时间了..我有这个功能..现在我在这里对letrec感到非常困惑..这又是递归。我可以理解……但在这段代码中无法建立足够的连接……(可能仍然对递归感到困惑)有人可以解释为什么这里需要 letrec

(define myFunc
  (lambda (start end res func)
    (letrec ((func:rec_func
              (lambda (x i y)
                (if (>= i start)
                    (func:rec_func (cons i x) (- i res) (cons (func i) y))  ;; line6
                    (cons x (cons y '()))))))                               ;; line7
      (func:rec_func '() end '()))))
Run Code Online (Sandbox Code Playgroud)

(已编辑)我所理解的尾递归

-> [Q1] 它是尾递归吗?

-> [Q2] 那么,是否应该始终使用 letrec 进行尾递归?

此函数返回 x、y 的列表,边界为 start、end,因此它检查索引 i 是否在边界内,如果是,则执行第 6 行

-> [Q3]那么,第 6 行是什么?我无法得到 line6

scheme letrec

0
推荐指数
1
解决办法
757
查看次数

标签 统计

scheme ×2

letrec ×1

symbols ×1