[Haskell-cafe] unfoldr [ANN: HLint 1.2]
Neil Mitchell
ndmitchell at gmail.com
Tue Jan 13 04:30:30 EST 2009
Hi
>> convert b 0 = []
>> convert b n = n `mod` b : convert b (n `div` b)
>>
>> convert b = unfoldr (\n -> if n > 0 then Just (n `mod` b, n `div` b) else
>> Nothing)
To my untrained eyes the second looks more complex... It can't be
implemented in the HLint list recursion functions I've got at the
moment since they first search for a pattern-match on []/(:) on the
left to start the process, but maybe one day.
> I have the nice function 'toMaybe' which simplifies this to:
> unfoldr (\n -> toMaybe (n>0) (n `mod` b, n `div` b))
>
> Maybe HLint can also suggest non-base functions? ;-)
Yes, sure - but not by default. See
http://code.google.com/p/ndmitchell/issues/detail?id=126
The idea is that if someone wants to maintain a separate Hints file,
say HackageHints.hs, then an individual user can decide to add import
HackageHints to their Hints.hs and use the additional hints, which may
require arbitrary Haskell libraries.
Thanks
Neil
More information about the Haskell-Cafe
mailing list