26 lines
744 B
Racket
26 lines
744 B
Racket
#;
|
|
(exn-pred 2)
|
|
#lang typed-scheme
|
|
|
|
(require scheme/list)
|
|
|
|
(define-type-alias (BT a) (U Boolean (node a)))
|
|
(define-struct: (a) node ([key : a] [l : (BT a)] [r : (BT a)]))
|
|
|
|
(: traverse-4 (All (a i) (BT a) (a ( -> i) ( -> i) -> i) i -> i))
|
|
(define (traverse-4 abt f i)
|
|
(cond
|
|
[(boolean? abt) i]
|
|
[(node? abt) (f (node-key abt)
|
|
(lambda () (traverse-4 (node-l abt) f i))
|
|
(lambda () (traverse-4 (node-r abt) f i)))]))
|
|
|
|
(define: (a) (inorder-4 [abt : (BT a)]) : (Listof a)
|
|
(traverse-4 abt
|
|
(lambda: ([key : a] [lt : ( -> (Listof a))] [rt : ( -> (Listof a))])
|
|
(append (lt)
|
|
(list key)
|
|
(rt)))
|
|
#;empty))
|
|
(+ 'foo)
|