If f1 and f2 are procedures returning instances of the same "monad", how
is one supposed to compose usage of the two?
(define-syntactic-monad $ a b)
($ define (f1)
(values a a))
($ define (f2)
(values b b))
(let ((a 1) (b 2))
($ let*-values ((() (f1))
(() (f2)))
(values a b))) ; => (values 2 2)
This is how much I understand of it so far. Is one supposed to use
"regular" syntactic constructs instead?
(let*-values (((a1 b1) ($ f1))
((a2 b2) ($ f2)))
(values a2 b1)) ; => (values 2 1)
Thanks,
siiky