One solution would be to use `local-require`:

    (((let () (local-require (only-in racket/function curry)) curry) + ) 2)

Sam

On Mon, May 11, 2015 at 3:24 PM, Alexis King <lexi.lam...@gmail.com> wrote:
> I’ve written a meta-language that adds function literal syntax to the
> reader, inspired by Clojure and Rackjure’s shorthand function literals. It
> uses curly braces for these literals, so #{+ 2 %} reads as (lambda (%) (+ 2
> %)).
>
> This actually works great, but I also want to add a feature that the
> shorthand syntax becomes a shorthand for curry if no arguments are
> specified, so #{+ 2} reads as ((curry +) 2). This works fine when the
> language I pass to my meta-language is racket, but it fails in racket/base
> because the curry function is from racket/function, which hasn’t been
> instantiated. This is the error I get:
>
> require: namespace mismatch;
>  reference to a module that is not available
>   reference phase: 0
>   referenced module: "~/gits/racket/racket/collects/racket/function.rkt"
>   referenced phase level: 0 in: curry
>
> Is there any way for my meta-language to force this to be instantiated
> whenever my meta-language is used? I’m using make-meta-reader from
> syntax/module-reader to implement my meta-language.
>
> Thanks!
>
> --
> 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 racket-users+unsubscr...@googlegroups.com.
> For more options, visit https://groups.google.com/d/optout.

-- 
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 racket-users+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to