scheme - 在Scheme中编写flatten方法

标签 scheme

我一直在研究以下函数 flatten,到目前为止它仅适用于列表。我想知道是否有人可以为我提供一些关于如何让它与成对工作的见解?例如 (flatten '(a .a)) 将返回 (a a)。谢谢。

(define (flatten list)
   (cond ((null? list) null)
         ((list? (car list)) (append (flatten (car list)) (flatten (cdr list))))
         (else
          (cons (car list) (flatten (cdr list))))))

最佳答案

这里有一个选项:

(define (flatten x)
  (cond ((null? x) '())
        ((pair? x) (append (flatten (car x)) (flatten (cdr x))))
        (else (list x))))

关于scheme - 在Scheme中编写flatten方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8387583/

相关文章:

list - 在方案中创建列表的排列

bitmap - 在 Racket 中设置位图的 alpha

c++ - 从嵌入的角度来看,Bigloo 和 ECL 之间有什么区别?

python - 如何从 python PLY 中的方案解释 "do"循环

go - Go 中的方案解释器

scheme - 什么输入会导致这个函数不终止?

lisp - 通过 Scheme 的 Lapack

scheme - Scheme中的注释代码

Lisp 变量不递增?

ios - 如何使用后缀中的 CFBundleShortVersionString 动态获取 "Archive Name"(在编辑方案/存档/存档名称中)?