Fixed FB case 68 Merge (λget …) and (map: …)

This commit is contained in:
Georges Dupéron 2016-01-20 23:45:37 +01:00
parent f9fe6a0783
commit 4370e693a2
2 changed files with 10 additions and 1 deletions

View File

@ -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))

View File

@ -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]))