Jason Dagit <dagit <at> codersbase.com> writes:

> 
> How will this proposal scale with data types that have multiple 
>  alternatives that make sense?  No natural examples come to mind 
>  so how about a contrived example:
> 
> data List2 a = Nil | Cons a (List2 a) | Cons2 a a (List2 a)
> 
> Now I want to define hd for both Cons and Cons2, but not Nil.  
>    Do I use an either type like this?
> hd :: Either (List2!Cons a) (List2!Cons2 a) -> a
> 
> It seems like some other syntax would be desirable here, maybe:
> hd :: List2!{Cons, Cons2} a -> a
> 
> How should it work for functions where no type signature is supplied?  
>   Shouldit infer the type we would now and only enable the 
>      subset of constructors when the type is explicit as above?
> 
> Jason

I agree with your syntax proposal.

hd :: List2!{Cons, Cons2} a -> a

in functions where no type signature, type inference could work as usual. 
  After normal types passes typechecker with type inference, 
  then Constructor matching could be checked.

_______________________________________________
Haskell-Cafe mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to