I haven't tried anything like this.

The most obvious pitfall is core.typed currently loads lazily and collects
type annotations only after check-ns.

There's a bunch of tools for manipulating types in the checker.

Thanks,
Ambrose


On Thu, Apr 24, 2014 at 11:18 PM, James MacAulay <jmacau...@gmail.com>wrote:

> I'm interested in exploring the use of the types provided by core.typed to
> guide function behavior at runtime. Specifically, I'd like to wrap existing
> functions such that the resulting functions behave in different ways
> depending on the type signatures of each original function.
>
> I'm imagining a setup where I have macros that get type information from
> core.typed at the time of macro-expansion, and either:
>
> * decide entirely at macro-expansion time how a function should be wrapped
> based on its type, or
> * somehow make the type information available at runtime, leaving the
> analysis of the types to runtime functions.
>
> As an example of the kind of decision I'd like to make based on types, I
> might look at `clojure.core/map` and say "I'll wrap `map` such that its
> first argument will be transformed in some particular way because the
> argument is a function, and the rest of the arguments will be transformed
> in some other way because they are collections." The reason I want to have
> type information for this is that I want the transformations to be
> dependent on the actual semantics of the original function, which is hinted
> at by the types. For example I can take the fact that an argument's type is
> some sort of collection and infer that the function is probably processing
> its contents; in that case I would want to transform the argument in a
> different way than if its type were `Any`, in which case I could conclude
> that even if the argument ends up being a collection at runtime, the
> original function must not be relying on that fact.
>
> Does anyone see any obvious pitfalls with this kind of thing? Any tips
> from the crowd? I'm not sure exactly the best way of actually "analyzing"
> the type signatures, but I'm hoping that I might find some tools for that
> in core.typed.
>
> Thanks for any help you can give!
>
> Cheers,
> James
>
> --
> You received this message because you are subscribed to the Google
> Groups "Clojure" group.
> To post to this group, send email to clojure@googlegroups.com
> Note that posts from new members are moderated - please be patient with
> your first post.
> To unsubscribe from this group, send email to
> clojure+unsubscr...@googlegroups.com
> For more options, visit this group at
> http://groups.google.com/group/clojure?hl=en
> ---
> You received this message because you are subscribed to the Google Groups
> "Clojure" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to clojure+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 "Clojure" group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
"Clojure" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to clojure+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to