<div dir="ltr"><font face="arial, sans-serif">From the department of improbable syntax/I don't get how this works, but it does:</font><div><font face="arial, sans-serif"><br></font></div><div><font face="arial, sans-serif">>    f :: [a] -> [a]</font></div><font face="arial, sans-serif">>    ;; f xs = xs ++ reverse xs<br><br>Nicely (to my eye) groups/indents the binding under the signature. Especially handy with ScopedTypeVariables, to show how the scoped vars 'belong'<br></font><div><font face="arial, sans-serif"><br></font></div><div><font face="arial, sans-serif">>    f       :: forall a. [a] -> [a]<br></font></div><div><font face="arial, sans-serif">>    ;; f xs = xs ++ ys<br>>       where<br>>         ys :: [a]<br>>         ys = reverse xs<br></font><div><font face="arial, sans-serif"><br></font></div></div><div><font face="arial, sans-serif">The doubled `;;` </font><span style="font-family:Arial,Helvetica,sans-serif">stands out like a ditto. It </span>could be a single semicolon (which means there's an empty decl/binding between the semis -- I don't see that's allowed by the syntax).</div><div><br></div><div><font face="arial, sans-serif">Unfortunately, for multi-line bindings you need to repeat the `;;`</font></div><div><font face="arial, sans-serif"><br></font></div><div><font face="arial, sans-serif">>    f       :: [a] -> [a]<br>>    ;; f [] = []<br>>    ;; f xs = xs ++ reverse xs<br></font><br></div></div>