[Haskell-cafe] ANN: HLint 1.2

Neil Mitchell ndmitchell at gmail.com
Mon Jan 12 09:24:15 EST 2009


Hi

>> No because the current definition are recursive and ghc cannot inline
>> recursive functions.
>
>> map :: (a -> b) -> [a] -> [b]
>> map f = go
>>  where
>>   go []     = []
>>   go (x:xs) = f x : go xs
>>
>> Then the map can be inlined at the call site and the 'f' inlined into
>> the body of 'go'.
>
> Maybe HLint can make such suggestions ...

HLint would probably just suggest you use a supercompiler*, for which
specialisation such as this is easy
(http://www.cs.york.ac.uk/~ndm/supero). HLint is about making code
prettier, and only in a few cases does it try for faster (mapM ->
mapM_), but even there its more about avoiding a space leak.

Thanks

Neil

* Of course, HLint (and me) should probably add the disclaimer that
the chances of that working your code as it stands are fairly close to
0 - but the ideas and initial research has been started!


More information about the Haskell-Cafe mailing list