有做“浅平”的功能吗?我的意思是,就像函数 flatten 但列表中的每个表达式只有一个 ()
例如:
(shallow flat '((1) (2) ( ( 4 5) 6)))
返回
'(1 2 (4 5) 6))
谢谢
有做“浅平”的功能吗?我的意思是,就像函数 flatten 但列表中的每个表达式只有一个 ()
例如:
(shallow flat '((1) (2) ( ( 4 5) 6)))
返回
'(1 2 (4 5) 6))
谢谢
(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))
正如克里斯建议的那样,您可以使用 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)