# Whence monad transformers? Where are distributive laws?

**URL:** <https://discourse.haskell.org/t/whence-monad-transformers-where-are-distributive-laws/6046>\
**Category:** Learn\
**Created:** [March 25, 2023, 5:43am UTC](https://discourse.haskell.org/t/whence-monad-transformers-where-are-distributive-laws/6046 "2023-03-25T05:43:14Z")\
**Posts on this page:** 1\
**Showing post:** 7

<div class="post-metadata">

**Author:** ![atravers](https://avatars.discourse-cdn.com/v4/letter/a/45deac/32.png) [@atravers](https://discourse.haskell.org/u/atravers)\
**Post date:** [June 25, 2023, 10:43am UTC](https://discourse.haskell.org/t/whence-monad-transformers-where-are-distributive-laws/6046/7 "2023-06-25T10:43:25Z")

</div>

> [@anon58422685](#):
>
> What is `IO`, anyway?

> [@Should Haskell be rebranded away from "Pure Functional Programming"](http://discourse.haskell.org/t/should-haskell-be-rebranded-away-from-pure-functional-programming/4850/35):
>
> What a surprise: it’s a question about I/O in Haskell - I’m assuming none of [these](https://wiki.haskell.org/Tutorials#Introducing_I.2FO) helped. Let’s try something different and see how Agda performs I/O: Haskell 2010 almost permits a similar "outsourcing" of I/O: -- the I/O ADT... data IO a foreign import "primUnitIO" unitIO :: a -\> IO a foreign import "primBindIO" bindIO :: IO a -\> (a -\> IO b) -\> IO b instance Monad IO where return = unitIO (\>\>=) = bindIO Main.main can be dealt with in similar fashion, so: module Main(main) w…

* * *

> [@anon58422685](#):
>
> What I am saying is that we need first to sort out what `IO` is, what its equality is.

- [Semantics of _fixIO_](http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.15.736&rep=rep1&type=pdf) by Levent Erkok, John Launchbury and Andrew Moran.

- [Tackling the Awkward Squad: …](https://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.13.9123&rep=rep1&type=pdf) by Simon Peyton Jones (from section 3.2 on page 20 onwards).

* * *

> [@anon58422685](#):
>
> How do we know there is a monad _IO_ to begin with?

> [@Cognitive Loads in Programming](http://discourse.haskell.org/t/cognitive-loads-in-programming/4994/2):
>
> It looks like you’re looking for something more [denotative](https://wiki.haskell.org/Denotative) than what’s currently available - you’re [not alone](https://wiki.haskell.org/Denotative_programming_timeline)…

---

_[View the full topic](https://discourse.haskell.org/t/whence-monad-transformers-where-are-distributive-laws/6046)._
