[Haskell-cafe] Aren't type system extensions fun? [Further
analysis]
Luke Palmer
lrpalmer at gmail.com
Thu May 29 07:29:36 EDT 2008
On Thu, May 29, 2008 at 9:51 AM, Kim-Ee Yeoh <a.biurvOir4 at asuhan.com> wrote:
> Roberto Zunino-2 wrote:
>>
>> Alas, for code like yours:
>> foo = \f -> (f 'J', f True)
>>
>> there are infinite valid types too:
>> (forall a. a -> Int) -> (Int, Int)
>> (forall a. a -> Char)-> (Char, Char)
>> (forall a. a -> (a,a)) -> ((Char,Char),(Bool,Bool))
>> ...
>>
>> and it is much less clear if a "best", most general type exists at all.
>>
>
> How about
> foo :: (exists. m :: * -> *. forall a. a -> m a) -> (m Char, m Bool)
>
> Not quite Haskell, but seems to cover all of the examples you gave.
You have now introduced a first-class type function a la dependent
types, which I believe makes the type system turing complete. This
does not help the decidability of inference :-)
Luke
More information about the Haskell-Cafe
mailing list