
#10843: Allow do blocks without dollar signs as arguments -------------------------------------+------------------------------------- Reporter: agibiansky | Owner: agibiansky Type: feature request | Status: new Priority: normal | Milestone: Component: Compiler | Version: 7.10.2 (Parser) | Resolution: | Keywords: Operating System: Unknown/Multiple | Architecture: | Unknown/Multiple Type of failure: None/Unknown | Test Case: Blocked By: | Blocking: Related Tickets: | Differential Revisions: -------------------------------------+------------------------------------- Description changed by agibiansky: Old description:
I would like the following to be valid Haskell code:
{{{#!hs main = when True do putStrLn "Hello!" }}}
Instead of requiring a dollar sign before the "do". This would parse as
{{{#!hs main = when True (do putStrLn "Hello!") }}}
Similarly, allow lambdas in the same way {{{#!hs main = forM values \value -> print value }}}
parses as
{{{#!hs main = forM values (\value -> print value) }}}
One possible question: does this also do the same thing for LambdaCase? It's an option but I would say no.
New description: I would like the following to be valid Haskell code: {{{#!hs main = when True do putStrLn "Hello!" }}} Instead of requiring a dollar sign before the "do". This would parse as {{{#!hs main = when True (do putStrLn "Hello!") }}} Similarly, allow lambdas in the same way {{{#!hs main = forM values \value -> print value }}} parses as {{{#!hs main = forM values (\value -> print value) }}} One possible question: does this also do the same thing for LambdaCase? I think that since people expect lambda case to just be a simple desugaring it should also work, so then {{{#!hs main = forM values \case Just x -> print x Nothing -> print y }}} parses as {{{#!hs main = forM values (\case Just x -> print x Nothing -> print y) }}} -- -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/10843#comment:4 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler