======interlace.scm====== #!/usr/bin/env racket #lang racket zdvoji prvky v seznamu (define doublist (lambda (l) (foldr (lambda (e t) (cons e (cons e t))) '() l))) (doublist '(1 2 3)) (define (lreverse l) (foldl cons '() l)) (lreverse '(r e v e r se)) foldr f term list0 ... listn 1 x 2 x 3 (define interlace (lambda (l i) (if (or (null? l) (null? (car l))) l (cons (car l) (foldr (lambda (e t) (cons i (cons e t))) '() (cdr l)))))) (interlace '() 'x) (interlace '(1) 'x) (interlace '(1 2 3) 'x) (interlace '(1 2 3) '()) (interlace '(1 2 3) '(1 2 3)) (foldr + 0 '(1 2 3)) (foldr cons '() '(1 2 3)) vim: syntax=racket