[Haskell-cafe] Very binding semicolon

Anthony Clayden anthony.d.clayden at gmail.com
Tue Sep 28 10:00:59 UTC 2021


>From the department of improbable syntax/I don't get how this works, but it
does:

>    f :: [a] -> [a]
>    ;; f xs = xs ++ reverse xs

Nicely (to my eye) groups/indents the binding under the signature.
Especially handy with ScopedTypeVariables, to show how the scoped vars
'belong'

>    f       :: forall a. [a] -> [a]
>    ;; f xs = xs ++ ys
>       where
>         ys :: [a]
>         ys = reverse xs

The doubled `;;` stands out like a ditto. It 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).

Unfortunately, for multi-line bindings you need to repeat the `;;`

>    f       :: [a] -> [a]
>    ;; f [] = []
>    ;; f xs = xs ++ reverse xs
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.haskell.org/pipermail/haskell-cafe/attachments/20210928/74adeab0/attachment.html>


More information about the Haskell-Cafe mailing list