"Lets you point the type checker to the type that determines the other types.\n\n"+
"Most often this is the return type (undocumented and experimental)"
"Most often this is the return type (undocumented and experimental)."
,syntax_doc_locations=[]
,syntax_examples=map(EX"Function")
["class plus a b c :: a b -> c"
,"instance plus Int Int Int where plus x y = x + y"
,"Start = plus 1 (plus 1 1) // Results in: internal overloading of \"plus\" could not be solved because the compiler doesn't know the type of the intermediate result."
,"class plus a b ~c :: a b -> c"
,"instance plus Int Int Int where plus x y = x + y"
,"Start = plus 1 (plus 1 1) // Works! because we told the compiler that c determines the other types."
,syntax_examples=map(EX"Function")// TODO highlighting
["class plus a b c :: a b -> c\n"+
"instance plus Int Int Int where plus x y = x + y\n"+
"Start = plus 1 (plus 1 1) // Results in: internal overloading of \"plus\" could not be solved because the compiler doesn't know the type of the intermediate result."
,"class plus a b ~c :: a b -> c\n"+
"instance plus Int Int Int where plus x y = x + y\n"+
"Start = plus 1 (plus 1 1) // Works! because we told the compiler that c determines the other types."