I mentioned that normally you’d have a dangling do
(i.e. putting a newline after the do
), but used a run-on line to exaggerate my point.
funcName =
-- otherFunc :: a -> m b -> _
otherFunc arg1 do
someOther arg2
moreThings toDo
This, to me at a cursory glance, looks the same as the following:
funcName =
-- otherFunc :: a -> b -> c -> d -> e -> f -> _
otherFunc arg1 arg2
someOther args
moreThings toDo
So I’d just like a non-alphanumeric separator showing that it’s not just a bunch of arguments, so either the $
operator, or (...)
parentheses to enclose the part. But I understand some people don’t have this issue, which is fine, but I just don’t like BlockArguments
P.S. And an example from this section from Typeclasses.com shows something I also dislike because it takes too long (for me) to understand the parsing order when seeing this at a glance:
{-# LANGUAGE BlockArguments #-}
import Control.Concurrent.Async (concurrently_)
blockStack =
concurrently_
do
putStrLn ['a'..'z']
do
putStrLn ['A'..'Z']