RosettaCodeData/Task/Singly-linked-list-Element-insertion/EchoLisp/singly-linked-list-element-insertion.echolisp
2016-12-05 23:44:36 +01:00

11 lines
380 B
Text

(define (insert-after lst target item)
(when (null? lst) (error "cannot insert in" null))
(let [(sub-list (member target lst))]
(if sub-list (set-cdr! sub-list (cons item (cdr sub-list))) ; make chirurgy if found
(nconc lst item)))) ; else append item
(define L '(a b))
(insert-after L 'a 'c)
L → (a c b)
(insert-after L 'x 'y)
L → (a c b y)