> On Apr 27, 2016, at 2:55 AM, Nicholas Labich <[email protected]> wrote: > > Thanks for the feedback. Attached is the solution applied to my original > implementation (only 65loc, documented). A couple of interesting points: > > - My simplified example didn't show this, but I have to > `syntax-local-introduce' the identifiers recursively, else > references to symbol=? `let-syntax'-bound identifiers are > ambiguous. Each `returnₘ' reference can have at most one other > `returnₘ' identifier in scope. > - For the `syntax-local-introduce'd identifiers to be visible in the > body of the `splicing-let-syntax' [line 66], recursive calls to > `use-monad' have to be `local-expand'ed by hand. I suppose I could > recur over the stack from the top down, but I would need to > special-case the first iteration after MId deference, which seems > sloppier. > > If there are any fixes for this second point, I'd be interested to hear. For > now, this should be a good starting point. > > Nick
I'm not sure if this is what you wanted, but here's a version of your monad file with much less weird macro stuff. It used syntax-local-introduce in two places right next to each other, and it doesn't use datum->syntax, syntax->datum, or format-id anywhere. It also uses functions instead of chained splicing-let-syntax forms to make monad implementations based on other monad implementations. -- You received this message because you are subscribed to the Google Groups "Racket Users" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. For more options, visit https://groups.google.com/d/optout.
monad.rkt
Description: Binary data
Or do you really want it to do some specific thing with the syntax that this doesn't do? Alex Knauth -- You received this message because you are subscribed to the Google Groups "Racket Users" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. For more options, visit https://groups.google.com/d/optout.

