[ANN] acme-dont-1.2 - a "don't" construct

Hello all, I have taken over the maintainership of acme-dont, and am pleased to announce a new acme-dont release on Hackage[1]. acme-dont provides a `don't` function, which does not execute its argument. For example, the following code will not print anything: import Acme.Dont (don't) quiet :: IO () quiet = don't $ putStrLn "You'll never see this on stdout" New in this release: * `don't` has been generalised from `Monad` to `Applicative`. If you have been waiting since GHC 8.0.1's release in 2016[2] to use `don't` with `-XApplicativeDo`, wait no longer. * A test suite, to ensure that `don't` does not do anything. Previous versions could have been defined as `don't = void` for all we knew. Also, the acme-dont community now has a new home on sourcehut. On there, you can find the following invaluable resources: * A source repository[3], to track further developement and new ways of not doing things, with a commit history reconstructed from the release tarballs uploaded to Hackage. * A mailing list[4] for the acme-dont community to discuss the best ways of not doing things. * A bug tracker[5] to handle reports, in case someone observes acme-dont doing something. * Continuous integration[6], to ensure that acme-dont continues to not do things across multiple versions of GHC. I would like to thank Gracjan Polak for uploading the initial releases of `acme-dont`, and for maintaining the package these past eleven years. I do not intend to betray the responsibility he has assigned me in handing over this critical package. Best, -- Jack [1]: https://hackage.haskell.org/package/acme-dont-1.2 [2]: https://www.haskell.org/ghc/download_ghc_8_0_1 [3]: https://git.sr.ht/~jack/acme-dont [4]: https://lists.sr.ht/~jack/acme-dont-discuss [5]: https://todo.sr.ht/~jack/acme-dont [6]: https://builds.sr.ht/~jack/acme-dont

Thanks,
The `don't` function is a big step forward in computering; it will surely
prevent many bugs from occurring, with little effort to software
developers.
Is it published in a scientific magazine yet?
Regards,
Henk-Jan van Tuyl
On Wed, 01 Apr 2020 10:38:08 +0200, Jack Kelly
Hello all,
I have taken over the maintainership of acme-dont, and am pleased to announce a new acme-dont release on Hackage[1].
acme-dont provides a `don't` function, which does not execute its argument. For example, the following code will not print anything:
import Acme.Dont (don't)
quiet :: IO () quiet = don't $ putStrLn "You'll never see this on stdout"
New in this release:
* `don't` has been generalised from `Monad` to `Applicative`. If you have been waiting since GHC 8.0.1's release in 2016[2] to use `don't` with `-XApplicativeDo`, wait no longer.
* A test suite, to ensure that `don't` does not do anything. Previous versions could have been defined as `don't = void` for all we knew.
Also, the acme-dont community now has a new home on sourcehut. On there, you can find the following invaluable resources:
* A source repository[3], to track further developement and new ways of not doing things, with a commit history reconstructed from the release tarballs uploaded to Hackage.
* A mailing list[4] for the acme-dont community to discuss the best ways of not doing things.
* A bug tracker[5] to handle reports, in case someone observes acme-dont doing something.
* Continuous integration[6], to ensure that acme-dont continues to not do things across multiple versions of GHC.
I would like to thank Gracjan Polak for uploading the initial releases of `acme-dont`, and for maintaining the package these past eleven years. I do not intend to betray the responsibility he has assigned me in handing over this critical package.
Best,
-- Jack
[1]: https://hackage.haskell.org/package/acme-dont-1.2 [2]: https://www.haskell.org/ghc/download_ghc_8_0_1 [3]: https://git.sr.ht/~jack/acme-dont [4]: https://lists.sr.ht/~jack/acme-dont-discuss [5]: https://todo.sr.ht/~jack/acme-dont [6]: https://builds.sr.ht/~jack/acme-dont _______________________________________________ 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.
-- Message from Stanford University: Folding@home What if you could share your unused computer power to help find a cure? In just 5 minutes you can join the world's biggest networked computer and get us closer sooner. Watch the video. https://foldingathome.org/ -- http://members.chello.nl/hjgtuyl/tourdemonad.html Haskell programming --

Presumably, if we don't execute the argument of don't, we don't need to type-check it either. This suggests that, with -fdefer-type-errors -Wno-deferred-type-errors -Wno-deferred-out-of-scope-variables, `don't $` becomes a decent replacement for the `--` commenting operator, except that `don't` has the advantage of being indentation-aware in a `do` block. Perhaps with https://github.com/ghc-proposals/ghc-proposals/pull/216 https://github.com/ghc-proposals/ghc-proposals/pull/216, we can have `Not.do` introduce an indentation-aware block of comments. This would surely show off the power, elegance, and beauty of Haskell. Richard
On Apr 1, 2020, at 9:38 AM, Jack Kelly
wrote: Hello all,
I have taken over the maintainership of acme-dont, and am pleased to announce a new acme-dont release on Hackage[1].
acme-dont provides a `don't` function, which does not execute its argument. For example, the following code will not print anything:
import Acme.Dont (don't)
quiet :: IO () quiet = don't $ putStrLn "You'll never see this on stdout"
New in this release:
* `don't` has been generalised from `Monad` to `Applicative`. If you have been waiting since GHC 8.0.1's release in 2016[2] to use `don't` with `-XApplicativeDo`, wait no longer.
* A test suite, to ensure that `don't` does not do anything. Previous versions could have been defined as `don't = void` for all we knew.
Also, the acme-dont community now has a new home on sourcehut. On there, you can find the following invaluable resources:
* A source repository[3], to track further developement and new ways of not doing things, with a commit history reconstructed from the release tarballs uploaded to Hackage.
* A mailing list[4] for the acme-dont community to discuss the best ways of not doing things.
* A bug tracker[5] to handle reports, in case someone observes acme-dont doing something.
* Continuous integration[6], to ensure that acme-dont continues to not do things across multiple versions of GHC.
I would like to thank Gracjan Polak for uploading the initial releases of `acme-dont`, and for maintaining the package these past eleven years. I do not intend to betray the responsibility he has assigned me in handing over this critical package.
Best,
-- Jack
[1]: https://hackage.haskell.org/package/acme-dont-1.2 [2]: https://www.haskell.org/ghc/download_ghc_8_0_1 [3]: https://git.sr.ht/~jack/acme-dont [4]: https://lists.sr.ht/~jack/acme-dont-discuss [5]: https://todo.sr.ht/~jack/acme-dont [6]: https://builds.sr.ht/~jack/acme-dont _______________________________________________ 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.

Hi, Am Mittwoch, den 01.04.2020, 14:33 +0100 schrieb Richard Eisenberg:
Perhaps with https://github.com/ghc-proposals/ghc-proposals/pull/216, we can have `Not.do` introduce an indentation-aware block of comments. This would surely show off the power, elegance, and beauty of Haskell.
Unfortunately, not: Not.do print "Hello" will still desguar to
Richard
On Apr 1, 2020, at 9:38 AM, Jack Kelly
wrote: Hello all,
I have taken over the maintainership of acme-dont, and am pleased to announce a new acme-dont release on Hackage[1].
acme-dont provides a `don't` function, which does not execute its argument. For example, the following code will not print anything:
import Acme.Dont (don't)
quiet :: IO () quiet = don't $ putStrLn "You'll never see this on stdout"
New in this release:
* `don't` has been generalised from `Monad` to `Applicative`. If you have been waiting since GHC 8.0.1's release in 2016[2] to use `don't` with `-XApplicativeDo`, wait no longer.
* A test suite, to ensure that `don't` does not do anything. Previous versions could have been defined as `don't = void` for all we knew.
Also, the acme-dont community now has a new home on sourcehut. On there, you can find the following invaluable resources:
* A source repository[3], to track further developement and new ways of not doing things, with a commit history reconstructed from the release tarballs uploaded to Hackage.
* A mailing list[4] for the acme-dont community to discuss the best ways of not doing things.
* A bug tracker[5] to handle reports, in case someone observes acme-dont doing something.
* Continuous integration[6], to ensure that acme-dont continues to not do things across multiple versions of GHC.
I would like to thank Gracjan Polak for uploading the initial releases of `acme-dont`, and for maintaining the package these past eleven years. I do not intend to betray the responsibility he has assigned me in handing over this critical package.
Best,
-- Jack
[1]: https://hackage.haskell.org/package/acme-dont-1.2 [2]: https://www.haskell.org/ghc/download_ghc_8_0_1 [3]: https://git.sr.ht/~jack/acme-dont [4]: https://lists.sr.ht/~jack/acme-dont-discuss [5]: https://todo.sr.ht/~jack/acme-dont [6]: https://builds.sr.ht/~jack/acme-dont _______________________________________________ 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.
_______________________________________________ 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.
-- Joachim Breitner mail@joachim-breitner.de http://www.joachim-breitner.de/

Hi, Am Mittwoch, den 01.04.2020, 14:33 +0100 schrieb Richard Eisenberg:
Perhaps with https://github.com/ghc-proposals/ghc-proposals/pull/216, we can have `Not.do` introduce an indentation-aware block of comments. This would surely show off the power, elegance, and beauty of Haskell.
Unfortunately, not: Not.do print "Hello" will still desguar to print "Hello" which points to a crucial design flaw of do notation (and which could be fixed as part of #216): The inability to specify an operation to apply to the do-block as a whole. Cheers, Joachim -- Joachim Breitner mail@joachim-breitner.de http://www.joachim-breitner.de/

On Apr 2, 2020, at 10:03 AM, Joachim Breitner
wrote: a crucial design flaw of do notation (and which could be fixed as part of #216): The inability to specify an operation to apply to the do-block as a whole.
Even having seen the dawn of a new day, this is an interesting point. Built-in `do` notation does not need to do any desugaring to a single statement, but maybe variants do. And even within GHC, the last statement of a do-block has special status -- it's just that do-notation treats it like any other statement. So maybe it's worth extending #216 with a new feature that applies an operation to the last statement. Seems to fit very much with the spirit of #216, with little downside. Just posting here to make sure I'm not crazy before posting to the altogether-more-serious #216 itself. Richard
participants (5)
-
Henk-Jan van Tuyl
-
Henning Thielemann
-
Jack Kelly
-
Joachim Breitner
-
Richard Eisenberg