"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)"

,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."

]

}

bs_generic=

{syntax_title="generic function definition"

,syntax_patterns=["generic","derive","of","{|*|}"]// This * matches everything, which is intentional