Nice ++ returns list so no issue. list concat reverse of same list.
Clear. No need for empty case as it is already covered

Greets, Branimir.


On 28.09.2021., at 12:00, Anthony Clayden <anthony.d.clayden@gmail.com> wrote:

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

_______________________________________________
Haskell-Cafe mailing list
To (un)subscribe, modify options or view archives go to:
http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe
Only members subscribed via the mailman list are allowed to post.