======interlace.scm====== <code shell>#!/usr/bin/env racket #lang racket </code> zdvoji prvky v seznamu <code scheme> (define doublist (lambda (l) (foldr (lambda (e t) (cons e (cons e t))) '() l))) </code> (doublist '(1 2 3)) <code scheme> (define (lreverse l) (foldl cons '() l)) </code> (lreverse '(r e v e r se)) foldr f term list0 ... listn 1 x 2 x 3 <code scheme> (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)) </code> (foldr + 0 '(1 2 3)) (foldr cons '() '(1 2 3)) vim: syntax=racket