% ghc orfest.hs
orfest.hs:6:1:
Non type-variable argument
in the constraint: AM.MArray a (t, t, t, [i]) m
(Use FlexibleContexts to permit this)
When checking that ‘go’ has the inferred type
go :: forall (m :: * -> *) t t1 t2 t3 (a :: * -> * -> *) i.
(Read t, AM.Ix i, AM.MArray a (t, t1, t2, [i]) m) =>
a i (t, t1, t2, [i]) -> [[Char]] -> t3 -> i -> m (t3, i)
This works:
% ghc orfest.hs -XFlexibleContexts