
Mattias Bengtsson wrote:
On Thu, 2007-02-01 at 21:01 -1000, Tim Newsham wrote:
instance Second [a] a where snd [] = error "don't got none" snd (x:y:xs) = y
Would'nt that instance mean this: snd [] produces error snd [x] gives []
I'd implement it something like this (if this works?):
instance Second [a] (Maybe a) where snd [] = Nothing snd [x] = Nothing snd (x:y:xs) = Just y
And while we're re-implementing the Prelude with MPTC: class Currying a b | a -> b where curryC :: a -> b uncurryC :: b -> a instance Currying ((a, b) -> c) (a -> b -> c) where curryC = curry uncurryC = uncurry instance Currying ((a, b, c) -> d) (a -> b -> c -> d) where curryC f a b c = f (a, b, c) uncurryC f (a, b, c) = f a b c instance Currying ((a, b, c, d) -> e) (a -> b -> c -> d -> e) where curryC f a b c d = f (a, b, c, d) uncurryC f (a, b, c, d) = f a b c d instance Currying ((a, b, c, d, e) -> f) (a -> b -> c -> d -> e -> f) where curryC f a b c d e = f (a, b, c, d, e) uncurryC f (a, b, c, d, e) = f a b c d e ... Andreas -- some cannot be created more equal than others