<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-2">
</head>
<body>
<div>
<div>
<div style="direction: ltr;">Also, I think you want to say occlude, which means block from view, as opposed to occult which refers to magic and such.  Which may, or may not be what you want.   </div>
<div><br>
</div>
<div style="direction: ltr;">Mike<span id="ms-outlook-ios-cursor"></span></div>
</div>
<div><br>
</div>
<div class="ms-outlook-ios-signature">
<div style="direction: ltr;">Michael Matsko</div>
</div>
</div>
<hr style="display:inline-block;width:98%" tabindex="-1">
<div id="divRplyFwdMsg" dir="ltr"><font face="Calibri, sans-serif" style="font-size:11pt" color="#000000"><b>From:</b> Haskell-Cafe <haskell-cafe-bounces@haskell.org> on behalf of Kim-Ee Yeoh <ky3@atamo.com><br>
<b>Sent:</b> Wednesday, November 11, 2020 8:33:34 PM<br>
<b>To:</b> Haskell Cafe <haskell-cafe@haskell.org>; mgajda@mimuw.edu.pl <mgajda@mimuw.edu.pl><br>
<b>Subject:</b> Re: [Haskell-cafe] What to call Occult Effects</font>
<div> </div>
</div>
<div>
<div>
<div dir="auto">(I'll respond with the original subject heading and with the full thread of Michal's reply copied below so that the convo stays in one place.)</div>
<div dir="auto"><br>
</div>
<div dir="auto">Hi Michal, I'm afraid you caricaturize my original email out of proportion here:</div>
<div dir="auto"><br>
</div>
<div dir="auto">> class Monoid m => T m o where</div>
<div dir="auto">> i :: o -> t</div>
<div dir="auto">> c :: t -> o -> Bool</div>
<div dir="auto"><snip></div>
<div dir="auto"><br>
</div>
<div dir="auto">Not only is your T type class more complicated than what I wrote, it's also riddled with suggestive but possibly misleading one-letter variable names. You even ask your reader to stay wary of the laws (snipped) that might not even be correctly
 stated.</div>
<div dir="auto"><br>
</div>
<div dir="auto">I do no such thing in my original email.</div>
<div dir="auto"><br>
</div>
<div dir="auto">In fact, the modicum of Haskell background that suffices for grasping the original query is only the next level up from recognizing that a universally polymorphic function of type (a -> a -> a) is inhabited by exactly two functions, modulo bottom. </div>
<div dir="auto"><br>
</div>
<div dir="auto">From there it's one more step to how (forall m. Monad m => m a -> m b -> m b) is inhabited by a mere handful of functions, again barring bottom. My query makes reference to how two of the those functions, namely (const id) and (liftM2 $ const
 id) are equivalent with some monads but not others.</div>
<div dir="auto"><br>
</div>
<div dir="auto">I even gave further clarification in plain English about "how the effect of the second parameter blocks the effect of the first."</div>
<div dir="auto"><br>
</div>
<div dir="auto">At the top of your email you wrote:</div>
<div dir="auto"><br>
</div>
<div dir="auto">> It is easier to understand it if:</div>
<div dir="auto">> 1. You give some examples of such monads</div>
<div dir="auto">> 2. Describe how this property arises</div>
<div dir="auto">> 3. Tell how whether the law is unique or part of a list of laws applicable</div>
<div dir="auto"><br>
</div>
<div dir="auto">Are you alluding to the X-Y problem?</div>
<div dir="auto"><br>
</div>
<div dir="auto"><a href="http://xyproblem.info/" target="_blank">http://xyproblem.info/</a></div>
<div dir="auto"><br>
</div>
<div dir="auto">I assure you I labor under no such tunnel-vision.</div>
<div dir="auto"><br>
</div>
<div dir="auto">Were I to request a cromulent adjective for the seventh powers of the natural numbers, what progress do you make by making counter-demands for examples?</div>
<div dir="auto"><br>
</div>
<div dir="auto">Behind which string of digits does the pellucid word hide itself?</div>
</div>
<div>
<div dir="auto"><br>
</div>
<div dir="auto">-- Kim-Ee</div>
<div dir="auto"><br>
</div>
<div dir="auto">
<div dir="ltr" class="x_gmail_attr" style="border-color:rgb(0,0,0); color:rgb(0,0,0)">
On Wed, Nov 11, 2020 at 8:36 PM Michal J Gajda <<a href="mailto:mgajda@mimuw.edu.pl">mgajda@mimuw.edu.pl</a>> wrote:<br>
</div>
<blockquote class="x_gmail_quote" style="width:592px; margin:0px 0px 0px 0.8ex; border-left-width:1px; border-left-style:solid; padding-left:1ex; border-color:rgb(0,0,0) rgb(0,0,0) rgb(0,0,0) rgb(204,204,204); color:rgb(0,0,0)">
<div dir="auto" style="border-color:rgb(0,0,0)">It is easier to understand it if:
<div dir="auto" style="border-color:rgb(0,0,0)">1. You give some examples of such monads</div>
<div dir="auto" style="border-color:rgb(0,0,0)">2. Describe how this property arises</div>
<div dir="auto" style="border-color:rgb(0,0,0)">3. Tell how whether the law is unique or part of a list of laws applicable</div>
<div dir="auto" style="border-color:rgb(0,0,0)"><br>
</div>
<div dir="auto" style="border-color:rgb(0,0,0)">Most of mathematics we do is not entirely disconnected from applications.</div>
<div dir="auto" style="border-color:rgb(0,0,0)"><br>
</div>
<div dir="auto" style="border-color:rgb(0,0,0)">If I tell you there is a class of monoids `m` over a set of objects `o` :</div>
<div dir="auto" style="border-color:rgb(0,0,0)"><br>
</div>
<div dir="auto" style="border-color:rgb(0,0,0)">class Monoid m => T m o where</div>
<div dir="auto" style="border-color:rgb(0,0,0)">  i :: o -> t</div>
<div dir="auto" style="border-color:rgb(0,0,0)">  c :: t -> o -> Bool</div>
<div dir="auto" style="border-color:rgb(0,0,0)"><br>
</div>
<div dir="auto" style="border-color:rgb(0,0,0)">Such that the following laws are satisfied:</div>
<div dir="auto" style="border-color:rgb(0,0,0)"><br>
</div>
<div dir="auto" style="border-color:rgb(0,0,0)">Forall x y z m n.</div>
<div dir="auto" style="border-color:rgb(0,0,0)">c (i x) x =True</div>
<div dir="auto" style="border-color:rgb(0,0,0)">c mempty x = False</div>
<div dir="auto" style="border-color:rgb(0,0,0)">c m y = True => c (m <> n) y = True</div>
<div dir="auto" style="border-color:rgb(0,0,0)">
<div dir="auto" style="border-color:rgb(0,0,0)">c n y = True => c (m <> n) y = True</div>
<div dir="auto" style="border-color:rgb(0,0,0)"><br style="font-family:sans-serif">
</div>
</div>
<div dir="auto" style="border-color:rgb(0,0,0)">What does it tell you about the definitions?</div>
<div dir="auto" style="border-color:rgb(0,0,0)">Can you tell if this set of laws is correctly stated or exhaustive?</div>
<div dir="auto" style="border-color:rgb(0,0,0)">Whether it models what I intend to do?</div>
<div dir="auto" style="border-color:rgb(0,0,0)">Without further examples could I claim that it may be universal model for some phenomena f and g?</div>
<div dir="auto" style="border-color:rgb(0,0,0)"><br>
</div>
<div dir="auto" style="border-color:rgb(0,0,0)">Or would you rather see some examples or descriptions of i and c operations?</div>
<div dir="auto" style="border-color:rgb(0,0,0)"><br>
</div>
<div dir="auto" style="border-color:rgb(0,0,0)"><br>
</div>
<div dir="auto" style="border-color:rgb(0,0,0)">PS you may respond to haskell-cafe, sure. I did not think that my previous question deserved sharing, but this answer certainly does.</div>
<div dir="auto" style="border-color:rgb(0,0,0)">--</div>
<div dir="auto" style="border-color:rgb(0,0,0)">  Cheers</div>
<div dir="auto" style="border-color:rgb(0,0,0)">     Micha³</div>
</div>
<br>
<div class="x_gmail_quote" style="width:592px; border-color:rgb(0,0,0)">
<div dir="ltr" class="x_gmail_attr" style="border-color:rgb(0,0,0)">On Wed, Nov 11, 2020, 14:04 Kim-Ee Yeoh <<a href="mailto:ky3@atamo.com" target="_blank" style="border-color:rgb(66,133,244)">ky3@atamo.com</a>> wrote:<br>
</div>
<blockquote class="x_gmail_quote" style="width:592px; margin:0px 0px 0px 0.8ex; border-left-width:1px; border-left-style:solid; padding-left:1ex; border-color:rgb(0,0,0) rgb(0,0,0) rgb(0,0,0) rgb(204,204,204)">
<div dir="auto" style="border-color:rgb(0,0,0)">Hi Michal,</div>
<div dir="auto" style="border-color:rgb(0,0,0)"><br>
</div>
<div dir="auto" style="border-color:rgb(0,0,0)">How is it hermetic? I think I fully described the property whose name I am opening to discussion.</div>
<div dir="auto" style="border-color:rgb(0,0,0)"><br>
</div>
<div dir="auto" style="border-color:rgb(0,0,0)">What is lacking in the definition?</div>
<div dir="auto" style="border-color:rgb(0,0,0)"><br>
</div>
<div dir="auto" style="border-color:rgb(0,0,0)">Also, do you mind having this discussion at the cafe itself? You are probably not the only one with this query.</div>
<div style="border-color:rgb(0,0,0)"><br>
<div class="x_gmail_quote" style="width:592px; border-color:rgb(0,0,0)">
<div dir="ltr" class="x_gmail_attr" style="border-color:rgb(0,0,0)">On Wed, Nov 11, 2020 at 7:37 PM Micha³ J Gajda <<a href="mailto:mjgajda@gmail.com" rel="noreferrer" target="_blank" style="border-color:rgb(66,133,244)">mjgajda@gmail.com</a>> wrote:<br>
</div>
<blockquote class="x_gmail_quote" style="width:592px; margin:0px 0px 0px 0.8ex; border-left-width:1px; border-left-style:solid; padding-left:1ex; border-color:rgb(0,0,0) rgb(0,0,0) rgb(0,0,0) rgb(204,204,204)">
<div dir="auto" style="border-color:rgb(0,0,0)">Hi,
<div dir="auto" style="border-color:rgb(0,0,0)">Your post to haskell-cafe is somewhat hermetic if you do not provide additional examples.</div>
<div dir="auto" style="border-color:rgb(0,0,0)">What do you use these for?</div>
<div dir="auto" style="border-color:rgb(0,0,0)">--</div>
<div dir="auto" style="border-color:rgb(0,0,0)">  Cheers</div>
</div>
<div dir="auto" style="border-color:rgb(0,0,0)">
<div dir="auto" style="border-color:rgb(0,0,0)">    Micha³</div>
</div>
</blockquote>
</div>
</div>
-- <br>
<div dir="ltr" style="border-color:rgb(0,0,0)">-- Kim-Ee</div>
</blockquote>
</div>
</blockquote>
</div>
<div>
<div class="x_gmail_quote">
<blockquote class="x_gmail_quote" style="margin:0px 0px 0px 0.8ex; border-left-width:1px; border-left-style:solid; padding-left:1ex; border-left-color:rgb(204,204,204)">
</blockquote>
</div>
</div>
</div>
-- <br>
<div dir="ltr" class="x_gmail_signature">-- Kim-Ee</div>
</div>
</body>
</html>