Я пытаюсь получить следующий код для компиляциивыведение типа многопараметрического типа класса
import IO
data MyInt = MyInt Int
data MyString = MyString String deriving Show
class Show b => MyClass a b where
fn :: a -> b
instance MyClass MyInt MyString where
fn (MyInt i) = MyString (show i)
myprint :: (MyClass a b) => a -> IO()
myprint a = putStrLn $ show (fn a)
main = myprint (MyInt 3)
с ghc Main.hs -XMultiParamTypeClasses
. Однако компилятор не может вывести тип переменной типа b
(который в этом случае равен MyString
). Как я могу прямо передать эту информацию компилятору?