[Haskell-cafe] ANN: HLint 1.2

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


>> 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.



* 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