我第一次使用Scheme(Racket),我遇到了一些问题。我想知道如何操作列表中的列表(特别是打印每个子列表的头部)
我知道如何打印超级列表的头部(这是一个列表本身)
例如:
(define (concatenate list-a)
(car list-a))
现在如果我输入:
(concatenate '(("one" "two") ("three" "four") ("five" "six")))
然后我得到
'("one" "two")
但我想得到的是:"one" "three" "five"
我该怎么做?
答案 0 :(得分:2)
您需要使用car
将map
应用于主列表的每个元素(子列表):
(define (concatenate lst)
(map car lst))
(concatenate '(("one" "two") ("three" "four") ("five" "six")))
=> '("one" "three" "five")
要在各自的行中打印这些值,请使用for-each
:
(for-each displayln (concatenate '(("one" "two") ("three" "four") ("five" "six"))))
=>
one
three
five
你也可以使用map
代替for-each
,但是你得到了
one
three
five
'(#<void> #<void> #<void>)
结尾'(#<void> #<void> #<void>)
是将displayln
应用于每个值的结果(displayln
始终返回 void )。因此,如果您关心结果,请使用map
,如果您没有,请使用for-each
。