This looks cool and I wish I had time to play with it. 


> On Aug 24, 2016, at 11:09 AM, Dupéron Georges <[email protected]> 
> wrote:
> 
> Based on Asumu's work on type expanders 
> (https://github.com/racket/racket/compare/master...takikawa:tr-type-expander),
>  I have written a library which adds support for type expanders in 
> typed/racket. Type expanders are to types what match expanders are to match 
> patterns. A type expander is a special macro which can appear wherever a type 
> would normally be expected, and must expand to a type.
> 
> The library is written using literate programming, with (a variant of) 
> scribble/lp2. The annotated source code is available here:
>    http://docs.racket-lang.org/type-expander.hl/
> and the documentation here:
>    http://docs.racket-lang.org/type-expander/
> 
> This library comes along with the multi-id library 
> (http://docs.racket-lang.org/multi-id/, literate source: 
> http://docs.racket-lang.org/multi-id.hl/), which allows easy definition of an 
> identifier which acts as a type expander, match expander, normal macro and 
> identifier macro. It can be used to define new datatypes, where a single 
> identifier represents the type, match clause, literal
> instance as in (foo-datatype 1 2 3), and constructor function as in (map 
> foo-datatype …).
> 
> The type-expander library is in beta status:
> * It works well and I have been using it for a while without issues.
> * The API should not change significantly in the future.
> * However, there are many typed/racket primitives which are not
>  overloaded yet, as noted in the documentation (patches are welcome).
> * Also, a couple of features are missing (patches are welcome again):
>   * The special form `Let`, which acts like `let-syntax` for types,
>     is only partially implemented.
>   * The special form `(Λ (stx) . body)`, which acts as an anonymous
>     type expander, is not implemented at all.
>   * There is no syntax-local-type-introduce.
> 
> Any feedback is appreciated! :)
> 
> Regards,
> Georges Dupéron
> 
> -- 
> 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.

-- 
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.

Reply via email to