foo :: (Char -> a /\ Bool -> b) -> (a,b)

a.k.a. find some value that matches both Char->a and Bool->b for some a and b. Could use type-classes to do it.

Uhmm... you mean something like (neglecting TC-related issues here)

class C a b where
   fromChar :: Char -> a
   fromBool :: Bool -> b

Oops: i meant something like

class C x a b | x -> a,b where
   fromChar :: x -> Char -> a
   fromBool :: x -> Bool -> b

no... let me figure out what I meant. Just somehow to have a single function that takes an argument of two different types without completely ignoring it.

class Arg a where
  whatYouPass :: a -> Something
instance Arg Char where
  whatYouPass = ...
instance Arg Bool where
  whatYouPass = ...

Then (foo whatYouPass) :: (Something, Something).
Or if it was
class Arg a where
  whatYouPass :: a -> a
then (foo whatYouPass) :: (Char, Bool).
And I'm sure there are ways to make the return type different if you want to think about FDs etc.



Zun.


_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to