The Strange Loop conference
Sean Kelly
sean at invisibleduck.org
Thu Sep 22 17:14:37 PDT 2011
You might wan to play with GC.reserve.
Sent from my iPhone
On Sep 22, 2011, at 4:35 PM, Timon Gehr <timon.gehr at gmx.ch> wrote:
> On 09/22/2011 02:29 PM, Christophe wrote:
>> "Nick Sabalausky" , dans le message (digitalmars.D:145002), a écrit :
>>>> For example, in Haskell, map (correctly) has the signature:
>>>>
>>>> map :: (a -> b) -> [a] -> [b]
>>>>
>>>> but in D, std.map has the signature (expressed in some Haskell/D
>>>> pseudocode)
>>>>
>>>> map :: (a -> b) -> [a] -> Map!((a -> b), [a])
>>
>> except that [a] should be a D Range, and that Map is a D Range too.
>> So I'd go for:
>>
>> map :: (a -> b) -> Range!A -> Range!B
>>
>> oh, that's quite close to Haskell's map...
>>
>>
>> Let me try the other game: what is Haskell's signature ?
>> I need to introduce Haskell's type to D, so:
>>
>> // all types are lazy pure:
>> template Haskell(T)
>> {
>> alias pure T function() Haskell;
>> }
>>
>> // Haskell's list:
>> template HaskellR(T)
>> {
>> alias pure Tuple!(Haskell!A, HaskellR!T) function() HaskellR;
>> }
>>
>> // Then the signature of map is:
>> HaskellR!B map(A,B)(Haskell!B function(Haskell!A), HaskellR!A);
>>
>> Experienced Haskell's users may correct me.
>>
>> All functions must be pure, and those pure function, and a lot of
>> optimization comes from the memoization of those functions.
>> Haskell!T could be rewritten to take into account this memoization.
>>
>> I wonder what efficiency would we get compared to Haskell with a library
>> based on this kind of stuff in D. We would probably miss many
>> optimization opportunities that Haskell is tuned to find out, but it
>> must be fun to try that out.
>>
>
> I did: http://pastebin.com/2rEdx0RD
>
> port of some haskell code from RosettaCode (run it ~20 min to get results, haskell runs in less than 2s)
> http://pastebin.com/Vx4hXvaT
>
> Output of the second example is screwed up with the latest release though, I don't know why, but converting BigNums to string is a PITA anyways... Has there been a regression in the std.bigint.BigInt.toString code?
>
>
> The main performance issue is the garbage collector. Turning it off will help performance a lot if you have enough RAM. Furthermore, DMD does not do any advanced optimizations
>
>
>
More information about the Digitalmars-d
mailing list