Proposal: Don't require users to use undefined

Simon Marlow marlowsd at gmail.com
Thu Oct 28 07:46:44 EDT 2010


On 27/10/2010 08:12, Bas van Dijk wrote:
> On Wed, Oct 27, 2010 at 8:09 AM, Isaac Dupree
> <ml at isaac.cedarswampstudios.org>  wrote:
>> On 10/27/10 01:51, Bas van Dijk wrote:
>>>
>>> On Tue, Oct 26, 2010 at 9:09 PM, Henning Thielemann
>>> <lemming at henning-thielemann.de>    wrote:
>>>>
>>>> On Tue, 26 Oct 2010, Bas van Dijk wrote:
>>>>
>>>>> malloc :: forall a. Storable a =>    IO (Ptr a)
>>>>> malloc = mallocBytes (untag (sizeOf :: SizeOf a))
>>>>>
>>>>> (Note that this does require the ScopedTypeVariables language
>>>>> extension.)
>>>>
>>>> Haskell 98 solution would be nicer. Something like
>>>>
>>>>> malloc :: Storable a =>    IO (Ptr a)
>>>>> malloc =
>>>>
>>>>      let aux :: Storable a =>    SizeOf a ->    IO (Ptr a)
>>>>          aux = mallocBytes . untag
>>>>      in  aux sizeOf
>>>
>>> Great! It's nice to know that this proposal doesn't require
>>> ScopedTypeVariables.
>>
>> It may not *require* it, but the code using ScopedTypeVariables is far more
>> readable than that Haskell98/Haskell2010 code (though, perhaps we can
>> improve on its readability a bit).
>
> Indeed. My patches for base and the other packages uses
> ScopedTypeVariables extensively. It makes code shorter and easier to
> read.

Note that the original version is shorter and easier to read if you use 
ScopedTypeVariables too.  We deliberately avoided ScopedTypeVariables in 
that code in order to make it compatible with Haskell 98.

> Is using ScopedTypeVariables a problem by the way? Should base use
> Haskell2010 exclusively or are extensions allowed?
>
>> (ScopedTypeVariables is not in Haskell2010, according to
>> http://www.haskell.org/onlinereport/haskell2010/haskellli2.html#x3-5000 )
>
> I hope they will be in Haskell2011.

Highly unlikely.  ScopedTypeVariables is a big extension with room for 
alternative designs, it will take a lot of effort to get it into the 
language standard.  It depends on ExplicitForall for one thing, which 
still isn't in the language and that's fairly straightforward.

Cheers,
	Simon


More information about the Libraries mailing list