2010/03/16

untitled

; rember*
; fold-right
(use srfi-1)
(define (rember* a l)
(fold-right (lambda (e acc)
(if (list? e)
(cons (rember* a e)
acc)
(if (eq? a e)
acc
(cons e
acc))))
'() l))
(rember* 'salad '((Swedish rye)
(French (mustard salad turkey))
salad))

; tree
(use srfi-1)
(define (tree-map proc tree)
(fold-right cons
'()
(map (lambda (e)
(if (list? e)
(tree-map proc e)
(proc e)))
tree)))
(tree-map identity '((Swedish rye)
(French (mustard salad turkey))
salad))
(define (tree-walk walker proc tree)
(walker (lambda (e)
(if (list? e)
(tree-walk walker proc e)
(proc e)))
tree))
(tree-walk map
identity
'((Swedish rye)
(French (mustard salad turkey))
salad))
(define (tree-map proc tree)
(tree-walk map proc tree))
(tree-map identity
'((Swedish rye)
(French (mustard salad turkey))
salad))
(define (tree-fold proc tree)
(fold-right (lambda (e acc)
(proc (if (list? e)
(tree-fold proc e)
e)
acc))
'()
tree))
(tree-fold (lambda (e acc)
(cons e acc))
'((Swedish rye)
(French (mustard salad turkey))
salad))
view raw tree.scm hosted with ❤ by GitHub





The Seasoned Schemer

0 件のコメント:

コメントを投稿