Reputation: 943
I am studying for an exam right now but I am not sure if I understood the list
procedure in Scheme. I know that it can be used for creating list variables like (define x (list 'a 'b 'c))
. However I saw another usage of it in procedure creation:
1 ]=> (define foo3
(lambda (b lst)
(if b
(car lst)
(cadr lst)
)
)
)
;Value: foo3
1 ]=> (foo3 #f ’(a b))
;Value: b
1 ]=> ((foo3 #t (list cdr car)) ’(a b c))
;Value: (b c)
What does the (list cdr car) mean? (I know what cdr
and car
means in terms of referencing first and rest of the list)
Upvotes: 1
Views: 112
Reputation: 236112
In the code, (list cdr car)
is just a list of procedures. foo3
will select one procedure from that list, according to the passed parameter b
. In the second example, this snippet:
(foo3 #t (list cdr car))
... Will return cdr
because the first parameter was #t
, so in the end we're just evaluating this:
(cdr '(a b c))
=> '(b c)
Upvotes: 3