March 26, 2012
я не знаю haskell #2
module Main where class Apl a b where plus::a -> b -> c instance Apl Int Int where plus a b = a + b r = plus (1::Int) (2::Int) main = putStrLn $ show r
С -XFlexibleInstances -XMultiParamTypeClasses нормально работает.
Меняем на 3 параметра класса типа:
class Apl a b c where plus::a -> b -> c instance Apl Int Int Int where plus a b = a + b
No instance for (Apl Int Int a0)
arising from a use of `plus'
Possible fix: add an instance declaration for (Apl Int Int a0)
In the expression: plus (1 :: Int) (2 :: Int)
In an equation for `r': r = plus (1 :: Int) (2 :: Int)
чем его Int в качестве a0 не устраивает?
--updated--
Понятно, что я могу явно указать plus::Int->Int->Int
, но почему он сам это не делает?