[Haskell-cafe] What is your favourite Haskell "aha" moment?

Conal Elliott conal at conal.net
Thu Jul 12 04:39:48 UTC 2018


In this conversation I didn't mean that IO is not a monad (a separate
topic), but rather that the "definition" of IO is incompatible with the
truth of IO. (It's perhaps akin to "the Ken Thompson hack"; see
http://wiki.c2.com/?TheKenThompsonHack.)

As for IO being a monad, I think the claim is not only not true but is
ill-defined and hence "not even false". For a well-defined claim/question,
one would need an agreed-upon notion of equality, since the Monad laws are
equalities.

(Of course there are *other* input-output-like types, perhaps subsets of
Haskell IO, for which we can define equality usefully, even based on a
denotation. But those types are not IO. Some related remarks at
http://conal.net/blog/posts/notions-of-purity-in-haskell#comment-442.)

-- Conal


On Wed, Jul 11, 2018 at 6:59 PM, Vanessa McHale <vanessa.mchale at iohk.io>
wrote:

> I'm not sure I follow. Do you mean that IO is not a monad because
> equivalence of values cannot be defined? Or is it something deeper?
> On 07/11/2018 05:19 PM, Conal Elliott wrote:
>
> > The fact that you can define the IO monad in Haskell was quite a
> revelation.
>
> But it's *not* a fact. It's a lie. And one of the most devious sort, since
> the source code appears to agree. The purported definition couldn't
> possibly explain concurrency.
>
> On Wed, Jul 11, 2018 at 7:21 AM, Vanessa McHale <vanessa.mchale at iohk.io>
> wrote:
>
>> I find it quite elegant! The fact that you can define the IO monad in
>> Haskell was quite a revelation. And it's especially nice when paired with a
>> demonstration of C FFI (where you might *need* to sequence side effects
>> such as freeing a value after it has been read).
>>
>> newtype IO <http://hackage.haskell.org/package/ghc-prim-0.5.2.0/docs/src/GHC.Types.html#IO> a <http://hackage.haskell.org/package/ghc-prim-0.5.2.0/docs/src/GHC.Types.html#local-6989586621679009802> = IO <http://hackage.haskell.org/package/ghc-prim-0.5.2.0/docs/src/GHC.Types.html#IO> (State# <http://hackage.haskell.org/package/ghc-prim-0.5.2.0/docs/src/GHC.Prim.html#State%23> RealWorld <http://hackage.haskell.org/package/ghc-prim-0.5.2.0/docs/src/GHC.Prim.html#RealWorld> -> (# State# <http://hackage.haskell.org/package/ghc-prim-0.5.2.0/docs/src/GHC.Prim.html#State%23> RealWorld <http://hackage.haskell.org/package/ghc-prim-0.5.2.0/docs/src/GHC.Prim.html#RealWorld>, a <http://hackage.haskell.org/package/ghc-prim-0.5.2.0/docs/src/GHC.Types.html#local-6989586621679009802> #))
>>
>>
>> On 07/11/2018 09:14 AM, Stefan Monnier wrote:
>>
>> In a few weeks I'm giving a talk to a bunch of genomics folk at the Sanger
>> Institute<https://www.sanger.ac.uk/> <https://www.sanger.ac.uk/> about Haskell.   They do lots of
>> programming, but they aren't computer scientists.
>> I can tell them plenty about Haskell, but I'm ill-equipped to answer the
>> main question in their minds: why should I even care about Haskell?  I'm too
>> much of a biased witness.
>>
>> I don't much like the monad solution for side-effects, but if those guys
>> might have some knowledge of the horror of concurrent programming with
>> locks, the STM system would be a good candidate.
>>
>>
>>         Stefan
>>
>> _______________________________________________
>> 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.
>>
>>
>> --
>>
>>
>>
>> *Vanessa McHale*
>> Functional Compiler Engineer | Chicago, IL
>>
>> Website: www.iohk.io <http://iohk.io>
>> Twitter: @vamchale
>> PGP Key ID: 4209B7B5
>>
>> [image: Input Output] <http://iohk.io>
>>
>> [image: Twitter] <https://twitter.com/InputOutputHK> [image: Github]
>> <https://github.com/input-output-hk> [image: LinkedIn]
>> <https://www.linkedin.com/company/input-output-global>
>>
>>
>> This e-mail and any file transmitted with it are confidential and
>> intended solely for the use of the recipient(s) to whom it is addressed.
>> Dissemination, distribution, and/or copying of the transmission by anyone
>> other than the intended recipient(s) is prohibited. If you have received
>> this transmission in error please notify IOHK immediately and delete it
>> from your system. E-mail transmissions cannot be guaranteed to be secure or
>> error free. We do not accept liability for any loss, damage, or error
>> arising from this transmission
>>
>> _______________________________________________
>> 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.
>>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.haskell.org/pipermail/haskell-cafe/attachments/20180711/14a2a848/attachment-0001.html>


More information about the Haskell-Cafe mailing list