I also recall that Idris and Elm have some do-syntax like this:
do { x <- e1
; Just y <- e2
| Nothing -> exceptional-code
; etc
; etc }
That is, e2 :: blah -> IO (Maybe t), we can pattern match on the expected Just
case, but still provide code for the Nothing case. That’s much better than
do { x <- e1
; mb_y <- e2
; case mb_y of
Nothing -> exceptional-code
Just y -> do { etc etc }
}
I’d love this for Haskell, if someone felt like making a proposal. I do this
kind of thing all the time!
Simon
From: ghc-devs [mailto:[email protected]] On Behalf Of Harendra Kumar
Sent: 09 February 2018 02:43
To: Brandon Allbery <[email protected]>
Cc: [email protected] Devs <[email protected]>
Subject: Re: DoAndIfThenElse
Since I started programming in Haskell a few years ago I have been using
if-then-else in that manner without indentation and I never knew about this
extension. I thought this is how it works. It seems this is the default now.
But, I remember encountering an error in an older compiler version once and
then I figured the my style was accepted in newer compiler versions only.
-harendra
On 9 February 2018 at 08:08, Brandon Allbery
<[email protected]<mailto:[email protected]>> wrote:
Huh. I wonder if a section went missing; seems like none of the extensions that
alter or relax layout are documented currently. (AlternativeLayoutRule,
AlternativeLayoutRuleTransitional, DoAndIfThenElse, NondecreasingIndentation,
RelaxedLayout)
IIRC DoAndIfThenElse relaxes a condition implied by layout but that normally
only matters in "do": that if you break it into multiple lines, the "then" and
"else" must be indented farther than the "if" or layout will consider them
distinct new expressions (and thereby syntax errors).
On Thu, Feb 8, 2018 at 9:24 PM, Harendra Kumar
<[email protected]<mailto:[email protected]>> wrote:
Hi,
I recently found a mention of DoAndIfThenElse extension somewhere. I looked
inside the ghc user guide and could not find any such extension. Then I looked
in the ghc man page, no mention. I googled and found a very sparse references
to it here and there. Then I tried using the extension with ghc and ghc seems
to accept it. What's the story behind this, why is it not documented but
accepted?
thanks,
harendra
_______________________________________________
ghc-devs mailing list
[email protected]<mailto:[email protected]>
http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs<https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fmail.haskell.org%2Fcgi-bin%2Fmailman%2Flistinfo%2Fghc-devs&data=04%7C01%7Csimonpj%40microsoft.com%7Ceea21f8f64dd4051b39308d56f670635%7Cee3303d7fb734b0c8589bcd847f1c277%7C1%7C0%7C636537410654890985%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwifQ%3D%3D%7C-1&sdata=sT%2F1YhbHklg1rHjqohBwUFyHaIk883E11%2F2%2FRzWx1xA%3D&reserved=0>
--
brandon s allbery kf8nh sine nomine associates
[email protected]<mailto:[email protected]>
[email protected]<mailto:[email protected]>
unix, openafs, kerberos, infrastructure, xmonad
http://sinenomine.net<https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fsinenomine.net&data=04%7C01%7Csimonpj%40microsoft.com%7Ceea21f8f64dd4051b39308d56f670635%7Cee3303d7fb734b0c8589bcd847f1c277%7C1%7C0%7C636537410654890985%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwifQ%3D%3D%7C-1&sdata=y0Yyny6wJfV47xbvLjyZFhyZoOWRBY4KQNJ3fwhaIZ8%3D&reserved=0>
_______________________________________________
ghc-devs mailing list
[email protected]
http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs