On Tue, Feb 19, 2013 at 9:28 PM, Anton Kholomiov
<anton.kholom...@gmail.com>wrote:

>
> Do you think the approach can be extended for non-regular (nested)
>> algebraic types (where the recursive data type is sometimes at a different
>> type instance)? For instance, it's very handy to use GADTs to capture
>> embedded language types in host language (Haskell) types, which leads to
>> non-regularity.
>>
>>
> I'm not sure I understand the case you are talking about. Can you write a
> simple example
> of the types like this?
>

Here's an example of a type-embedded DSEL, represented as a GADT:

> data E :: * -> * where
>   Lit :: Show a => a -> E a
>   Op  :: Op a -> E a
>   App :: E (a -> b) -> E a -> E b
>   ...
>
> data Op :: * -> * where
>   Add :: Num a => E (a -> a -> a)
>   Mul :: Num a => E (a -> a -> a)
>   Neg :: Num a => E (a -> a)
>   ...

-- Conal
_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to