У меня есть конструктор типов
type SimpleFcn α m = m α -> m α
и я хочу использовать его в классе, где он будет дополнительно параметризован позже. А именно,
instance A (SimpleFcn α)
В моей ситуации любые функции класса A
были бы параметрическими в аргументе m
.
class A β where f :: Monad m => β m
instance A (SimpleFcn α) where f x = x
Каков подходящий обходной путь для этой ситуации?
type T x = (x, x Int)
. Неправильное использованиеtype T = Int; x :: T Bool
. Синоним типа имеет вид, но также имеет арность (количество аргументов в определении). Он всегда должен использоваться как минимум с таким же количеством аргументов, как и в определении. Например,type L1 x = [x]; type L2 = []
похожи, ноL1
всегда нужен аргумент, поэтомуinstance Monad L1
неверно, тогда какinstance Monad L2
в порядке. - person augustss   schedule 29.08.2011