This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
; 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)) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
; 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)) |
0 件のコメント:
コメントを投稿