<div dir="ltr"><div><span style="font-size:12.8px">What is the order of unwrapping?</span></div><span style="font-size:12.8px">`return $ !a + !b` doesn't equals `</span><span style="font-size:12.8px">return $ !b + !a` right?</span><br></div><div class="gmail_extra"><br><div class="gmail_quote">2017-01-31 9:37 GMT+05:00 Taeer Bar-Yam <span dir="ltr"><<a href="mailto:taeer@necsi.edu" target="_blank">taeer@necsi.edu</a>></span>:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">This is (IMO) very similar in use-case to Idris' bang-notation. I'll give a brief<br>
summary of what that is and then explain the pros/cons that I see between them.<br>
<br>
In Idris the do notation has the added notation that<br>
do return $ !a + !b<br>
would desugar to<br>
do<br>
 a' <- a<br>
 b' <- b<br>
 return $ a' + b'<br>
<br>
So !a unwraps a higher up and then uses the unwrapped version.<br>
Thus if you want to apply a function to apply a function to some wrapped and<br>
some unwrapped values:<br>
do return $ f !a b !c !d<br>
<br>
<br>
Pros/Cons:<br>
- Idris notation is (IMO) more visually appealing.<br>
 - In particular, it puts the information about which arguments are lifted next<br>
   to the arguments themselves, which matches our intuition about what's going on<br>
- While it matches our intuition, it does *not* match what's actually going on,<br>
 so that's a con.<br>
- Idris notation can lift things more than once:<br>
 do return $ f !!a !b !!!!c<br>
- Idris notation is syntactic sugar, not a first-class operator<br>
 - So that means no currying, no passing it in as an argument, etc. (though<br>
   with lambdas this is not as bad as it otherwise would be)<br>
- Idris notation is for monads, so it would not work for things that are<br>
 applicative but not monads (though I'm not entirely sure what falls into this<br>
 category)<br>
<br>
What do you y'all think? Do they operate in different enough spaces that they<br>
should both exist (like applicatives and moands), or is one clearly better?<span class="HOEnZb"><font color="#888888"><br>
<br>
 --Taeer</font></span><div class="HOEnZb"><div class="h5"><br>
______________________________<wbr>_________________<br>
Haskell-Cafe mailing list<br>
To (un)subscribe, modify options or view archives go to:<br>
<a href="http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe" rel="noreferrer" target="_blank">http://mail.haskell.org/cgi-bi<wbr>n/mailman/listinfo/haskell-caf<wbr>e</a><br>
Only members subscribed via the mailman list are allowed to post.</div></div></blockquote></div><br></div>