On Mon, 2010-09-06 at 03:54 -0700, Ashley Yakeley wrote: > countable: Countable, Searchable, Finite, Empty classes. > > class Countable, for countable types > class AtLeastOneCountable, for countable types that have at least one > value > class InfiniteCountable, for infinite countable types > class Searchable, for types that can be searched over > class Finite, for finite types > class Empty, for empty types > data Nothing, an empty type > > Also includes these orphan instances: > > instance (Searchable a,Eq b) => Eq (a -> b) > instance (Finite a) => Foldable ((->) a) > instance (Finite a) => Traversable ((->) a) > instance (Show a,Finite a,Show b) => Show (a -> b) > > It turns out Searchable includes some infinite types. Specifically, > countable implements this: > > instance (Countable c,Searchable s) => Searchable (c -> s) > > using the algorithm described here: > > http://math.andrej.com/2007/09/28/seemingly-impossible-functional-programs/ > > I would welcome improvements. > > http://hackage.haskell.org/package/countable-0.1 > cabal install countable > darcs get http://code.haskell.org/countable/ > > See also this thread: > http://thread.gmane.org/gmane.comp.lang.haskell.cafe/73275 >
Hmm. 1. Code formatting is very C#-like. At least for me it is hard to read the code that way (it IS matter of preference however) 2. countMaybeNext seems to need documentation. If I understand it correctly: countMaybeNext Nothing = 'minimalValue' countMaybeNext (Just x) = x + 1 Wouldn't be split it to: countNext :: a -> Maybe a initial :: Maybe a 3. Regards
signature.asc
Description: This is a digitally signed message part
_______________________________________________ Haskell mailing list Haskell@haskell.org http://www.haskell.org/mailman/listinfo/haskell