diff --git a/graph-lib/graph/__DEBUG_graph__.rkt b/graph-lib/graph/__DEBUG_graph__.rkt index b89b93d..3c5ca90 100644 --- a/graph-lib/graph/__DEBUG_graph__.rkt +++ b/graph-lib/graph/__DEBUG_graph__.rkt @@ -20,6 +20,13 @@ (require "__DEBUG_require.rkt") +(map: (λget houses) (get g streets)) +(map: (λget houses … owner name) (get g streets)) +(map: (∘ (curry map (∘ (λget name) (λget owner))) (λget houses)) + (get g streets)) +(map: (∘ (curry map (∘ string-length (λget name) (λget owner))) (λget houses)) + (get g streets)) + ;; (map: (compose (curry map identity) (λget houses …)) (get g streets)) ;; (map: (compose (λget houses …) (λ #:∀ (A) ([x : A]) x)) (get g streets)) ;; (map: (compose (λget houses …) (curry map (λget owner))) (get g streets)) diff --git a/graph-lib/graph/map4.rkt b/graph-lib/graph/map4.rkt index 44b57da..3203088 100644 --- a/graph-lib/graph/map4.rkt +++ b/graph-lib/graph/map4.rkt @@ -96,8 +96,9 @@ [(_ (~literal car!) T:expr R) #'(U (Listof T) (Pairof T Any))] [(_ (~literal cdr) T:expr R) #'(Pairof Any T)] [(_ (~literal list) T:expr R) #'T] + [(_ ((~literal λget) f …) T:expr R) #'(has-get T f …)] ;; Default case: - [(_ f:expr T:expr U) #'T])) + [(_ f:expr T:expr R) #'T])) (define-type-expander (ResultOf stx) (syntax-parse stx @@ -106,6 +107,7 @@ [(_ (~literal car!) T:expr R) #'T] [(_ (~literal cdr) T:expr R) #'T] [(_ (~literal list) T:expr R) #'(List T)] + [(_ ((~literal λget) f …) T:expr R) #'(result-get T f …)] ;; Default case: [(_ f:expr T:expr R) #'R]))