<div dir="ltr">Hi Shishir,<div><br></div><div><br></div><div>Indeed, Maybe doesn't grant you additional operational functionality that other languages lack. Most use-cases of Maybe can be matched in nearly all mainstream languages through the use of NULL.</div><div><br></div><div>Maybe illustrates a desired lack of functionality in cases where it is absent.</div><div><br></div><div>For example, in Java:</div><div><br></div><div><pre class="" style="margin-top:0px;margin-bottom:10px;padding:5px;border:1px solid rgb(214,214,214);width:549.765625px;border-radius:0px;font-size:12px;overflow:auto;color:rgb(0,0,0);background-color:rgb(238,238,238)"><span class="" style="margin:0px;padding:0px;color:rgb(0,0,136)">public</span><span class="" style="margin:0px;padding:0px"> </span><span class="" style="margin:0px;padding:0px;color:rgb(0,0,136)">static</span><span class="" style="margin:0px;padding:0px"> </span><span class="" style="margin:0px;padding:0px;color:rgb(0,0,136)">Integer</span><span class="" style="margin:0px;padding:0px"> myMethod</span><span class="" style="margin:0px;padding:0px;color:rgb(102,102,0)">(</span><span class="" style="margin:0px;padding:0px;color:rgb(0,0,136)">Integer</span><span class="" style="margin:0px;padding:0px"> a</span><span class="" style="margin:0px;padding:0px;color:rgb(102,102,0)">,</span><span class="" style="margin:0px;padding:0px"> </span><span class="" style="margin:0px;padding:0px;color:rgb(0,0,136)">Integer</span><span class="" style="margin:0px;padding:0px"> b</span><span class="" style="margin:0px;padding:0px;color:rgb(102,102,0)">)</span><span class="" style="margin:0px;padding:0px"> </span><span class="" style="margin:0px;padding:0px;color:rgb(102,102,0)">{</span><span class="" style="margin:0px;padding:0px">
  </span><span class="" style="margin:0px;padding:0px;color:rgb(136,0,0)">// body</span><span class="" style="margin:0px;padding:0px">
</span><span class="" style="margin:0px;padding:0px;color:rgb(102,102,0)">}</span></pre></div><div><br></div><div>What do we know about this method from the signature?</div><div><br></div><div>You would think it is a method that takes two integers and returns an integer, but really it could take NULLs too, and could possibly return a NULL.</div><div><br></div><div>Here is the equivalent Haskell signature:</div><div><br></div><div><pre class="" style="margin-top:0px;margin-bottom:10px;padding:5px;border:1px solid rgb(214,214,214);width:549.765625px;border-radius:0px;font-size:12px;overflow:auto;color:rgb(0,0,0);background-color:rgb(238,238,238)"><span class="" style="margin:0px;padding:0px;color:rgb(0,0,136)">myMethod :: Maybe Integer -> Maybe Integer -> IO (Maybe Integer)</span></pre></div><div><br></div><div>We can see that Maybe allows us to replicate the possibility of NULL values from other languages... But how is that special since other languages already have this built-in.</div><div><br></div><div>Now look at the following Haskell signature:</div><div><br></div><div><pre class="" style="margin-top:0px;margin-bottom:10px;padding:5px;border:1px solid rgb(214,214,214);width:549.765625px;border-radius:0px;font-size:12px;overflow:auto;background-color:rgb(238,238,238)"><font color="#000088">myMethod :: Integer -> Integer -> Integer</font></pre></div><div><br></div><div>Now what do we know about this?</div><div><br></div><div>We know that it takes two Integers and returns an Integer.</div><div><br></div><div>This is the power that comes from having Maybe as the canonical way to represent the possibility of missing values.</div><div><br></div></div><div class="gmail_extra"><br><div class="gmail_quote">On Thu, Mar 26, 2015 at 9:06 PM, Shishir Srivastava <span dir="ltr"><<a href="mailto:shishir.srivastava@gmail.com" target="_blank">shishir.srivastava@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div>Hi, </div><div><br></div><div>After reading and re-reading the haskell tutorials I don't happen to see a very convincing or appealing reason for having these data types. </div><div><br></div><div>Can anyone please explain where Maybe and Just provide the sort of functionality that cannot be achieved in other languages which don't have these kind.</div><div><br></div><div>Thanks,</div><div><div><div dir="ltr"><font color="#0b5394"><font style="background-color:rgb(255,255,255)"><font face="georgia, serif">Shishir Srivastava</font></font><br></font><br></div></div></div>
</div>
<br>_______________________________________________<br>
Beginners mailing list<br>
<a href="mailto:Beginners@haskell.org">Beginners@haskell.org</a><br>
<a href="http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners" target="_blank">http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners</a><br>
<br></blockquote></div><br></div>