recursion - Adding a symbol to the end of a two element list in Scheme -
so far have
(define insert-3 (lambda (sym ls) (cond [(null? ls) '()] [else (cons sym (insert-3 (caadr ls)))])))
i know caadr wrong, because doesn't exist in 2 element list. don't know how add symbol end of list.
assuming
sym 'c ls '(a b)
then result constructed by
> (cons 'a (cons 'b (list 'c))) '(a b c)
or equivalent
> (cons 'a (cons 'b (cons 'c null))) '(a b c)
so procedure needs cons each element until has consumed ls, , cons (list sym) or (cons sym null) @ point:
(define insert-3 (lambda (sym ls) (cond [(null? ls) (list sym)] [else (cons (car ls) (insert-3 sym (cdr ls)))])))
such that
(insert-3 'c '(a b)) => (cons 'a (insert-3 'c '(b))) => (cons 'a (cons 'b (insert-3 'c '()))) => (cons 'a (cons 'b (list 'c)))
which work length of list:
> (insert-3 'c '(a b)) '(a b c) > (insert-3 'e '(a b c d)) '(a b c d e)
Comments
Post a Comment