DoAndIfThenElse

Simon Peyton Jones simonpj at microsoft.com
Fri Feb 9 09:29:55 UTC 2018


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:ghc-devs-bounces at haskell.org] On Behalf Of Harendra Kumar
Sent: 09 February 2018 02:43
To: Brandon Allbery <allbery.b at gmail.com>
Cc: ghc-devs at haskell.org Devs <ghc-devs at haskell.org>
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 <allbery.b at gmail.com<mailto:allbery.b at gmail.com>> 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 <harendra.kumar at gmail.com<mailto:harendra.kumar at gmail.com>> 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
ghc-devs at haskell.org<mailto:ghc-devs at haskell.org>
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
allbery.b at gmail.com<mailto:allbery.b at gmail.com>                                  ballbery at sinenomine.net<mailto:ballbery at sinenomine.net>
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>

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.haskell.org/pipermail/ghc-devs/attachments/20180209/592f8b77/attachment.html>


More information about the ghc-devs mailing list