module Control.Monad.Index where class Index ix where getVal::ix -- could also just use <flip (FooX TheIndex) * *> instead of <flip23 Foox TheIndex * *> flip23 :: (a->b->c->d) -> a -> c -> b -> d flip23 f a b c = f a c b