<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="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="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="gmail_quote" style="width:592px;border-color:rgb(0,0,0)"><div dir="ltr" class="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="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="gmail_quote" style="width:592px;border-color:rgb(0,0,0)"><div dir="ltr" class="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="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" data-smartmail="gmail_signature" style="border-color:rgb(0,0,0)">-- Kim-Ee</div></blockquote></div></blockquote></div><div><div class="gmail_quote"><blockquote class="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="gmail_signature" data-smartmail="gmail_signature">-- Kim-Ee</div>