有一个“浅平”的功能吗? 我的意思是,像函数flatten一样,但是列表中每个表达式只有一个()
例如:
(shallow flat '((1) (2) ( ( 4 5) 6)))
返回
'(1 2 (4 5) 6))
感谢
答案 0 :(得分:3)
(apply append '((1) (2) ((4 5) 6))) ;=> (1 2 (4 5) 6))
(apply append '((1) (2) (((4) 5) 6))) ;=> (1 2 ((4) 5) 6)
你可以把它变成一个程序,即:
(define (shallow-flatten lst)
(apply append lst))
答案 1 :(得分:2)
正如Chris建议的那样,您可以使用SRFI 1的concatenate:
(require srfi/1) ; import the library, this is Racket's syntax
(concatenate '((1) (2) ((4 5) 6)))
或者,在Racket中,您可以使用append*,检查解释器中是否有它可用:
(append* '((1) (2) ((4 5) 6)))
无论哪种方式,结果都符合预期,并且没有必要通过定义已有的过程重新发明轮子:
=> '(1 2 (4 5) 6)