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

YPP1/ypp1du/interlace.scm.txt · Last modified: 2014/03/14 22:22 (external edit)
CC Attribution-Noncommercial-Share Alike 4.0 International
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0