Re: What does '_a mean?
"Ashish Agarwal [email protected] [ocaml_beginners]" <[email protected]> Mon, 8 May 2017 09:05:18 -0400
| Newsgroups | gmane.comp.lang.ocaml.beginners |
|---|---|
| Message-ID | <CAMu2m2KS1V4kaJ8q5RVwMp0DbHcsQq57ddQuLJGky5Q_Qbo6cw@mail.gmail.com> |
--001a1140b71e470c0c054f02e582 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable > How is '_a different from 'a? 'a is truly a type variable. '_a is fixed type that is not yet known. The type inference engine needs more information to figure out the fixed type to fill in here, but it doesn't have that information yet. This can happen in the toplevel, but you cannot for instance use '_a in an mli. On Sun, May 7, 2017 at 4:47 PM, Kenneth Miller [email protected] [ocaml_beginners] <[email protected]> wrote: > > > About the stack memory, some languages have resolved to finding ways to > compile regular code, which doesn't mention allocation, to implicitly use > the heap for a stack, in order that it grow to the maximum possible > supportable by the machine. In most programs, the stack has a default > maximum, and it's expected to be rare that that maximum is exceeded. > > About the non-exhaustive pattern matching - you could go to the source > line responsible, and do two different things: implement the other cases, > or provide a wildcard match target to catch everything else, and dismiss > it. Usually, there is an infix monad for this. > > On Sunday, May 7, 2017, 2:37:05 AM EDT, Douglas Lewit [email protected] > [ocaml_beginners] <[email protected]> wrote: > > > Hi everyone, > > Right now I'm wrapping up Programming Languages, Part A with Dan Grossman > on Coursera. Great course! The language we're using is Standard ML, whi= ch > looks very similar to OCaml. It's an excellent course and I've learned s= o > much. I strongly recommend it. > > Anyhow, I was playing around with OCaml this evening using the utop > environment in my Terminal and noticed something rather interesting. I'm > accustomed to the 'a or 'b or 'c type. But I noticed this evening an > unusual notation.... what is '_a? How is *'_a* different from *'a*? I'm > using OCaml, version 4.04, which I think is the latest version of the > language. Is this something new that OCaml's developers have decided to > introduce into the language? I would be very grateful if someone can > provide a simple explanation of what this is and why it's important. > > Just as a side note, does anyone have any opinions about SML? I like the > language a lot, although I think OCaml does a much better job of > implementing non-tail recursive functions than SML. But how much stack > memory is available to a language's compiler or interpreter is probably > more of an implementation issue than a true language issue. > > I appreciate the feedback. > > Thanks, > > Douglas Lewit > > P.S. Does someone know how to turn off Warning 8, the warning about > non-exhaustive pattern matching? The compiler returned Warning 8 about o= ne > of my functions, but the function works exactly the way I want it to, so = I > don't really see what the problem is. > >=20 > --001a1140b71e470c0c054f02e582 Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/htm= l4/strict.dtd"> <html> <head> </head> =20 <body style=3D"background-color: #fff;"> <span style=3D"display:none"> </span> <!--~-|**|PrettyHtmlStartT|**|-~--> <div id=3D"ygrp-mlmsg" style=3D"position:relative;"> <div id=3D"ygrp-msg" style=3D"z-index: 1;"> <!--~-|**|PrettyHtmlEndT|**|-~--> <div id=3D"ygrp-text" > =20=20=20=20=20=20 =20=20=20=20=20=20 <p><div dir=3D"ltr">>=C2=A0How is '_a different from 'a?<d= iv><br></div><div>'a is truly a type variable. '_a is fixed type th= at is not yet known. The type inference engine needs more information to fi= gure out the fixed type to fill in here, but it doesn't have that infor= mation yet. This can happen in the toplevel, but you cannot for instance us= e '_a in an mli.</div><div><br></div></div><div class=3D"gmail_extra"><= br><div class=3D"gmail_quote">On Sun, May 7, 2017 at 4:47 PM, Kenneth Mille= r <a href=3D"mailto:[email protected]">[email protected]= m</a> [ocaml_beginners] <span dir=3D"ltr"><<a href=3D"mailto:ocaml_begin= [email protected]" target=3D"_blank">[email protected]</a>= ></span> wrote:<br><blockquote class=3D"gmail_quote" style=3D"border-lef= t:1px #ccc solid;"> <u></u> =20 <div style=3D"background-color:#fff;"> <span>=C2=A0</span> <div id=3D"m_478001112428305845ygrp-mlmsg"> <div id=3D"m_478001112428305845ygrp-msg"> <div id=3D"m_478001112428305845ygrp-text"> =20=20=20=20=20=20 =20=20=20=20=20=20 <p></p><div style=3D"font-family:Helvetica Neue,Helvetica,Arial,sans-= serif;font-size:medium;"><div id=3D"m_478001112428305845ydpe943d9b1yiv05347= 53590"><div><div style=3D"font-family:Helvetica Neue,Helvetica,Arial,sans-s= erif;font-size:medium;"><div><div>About the stack memory, some languages ha= ve resolved to finding ways to compile regular code, which doesn't ment= ion allocation, to implicitly use the heap for a stack, in order that it gr= ow to the maximum possible supportable by the machine. In most programs, th= e stack has a default maximum, and it's expected to be rare that that m= aximum is exceeded.=C2=A0</div></div><div><br clear=3D"none"></div><div>Abo= ut the non-exhaustive pattern matching - you could go to the source line re= sponsible, and do two different things: implement the other cases, or provi= de a wildcard match target to catch everything else, and dismiss it. Usuall= y, there is an infix monad for this.</div><div><br clear=3D"none"></div></d= iv></div></div><span class><div class=3D"m_478001112428305845yiv0534753590y= qt4288531665" id=3D"m_478001112428305845yiv0534753590yqt32584"><div class= =3D"m_478001112428305845yiv0534753590yahoo_quoted" id=3D"m_4780011124283058= 45yiv0534753590yahoo_quoted_4556339280"><div>On Sunday, May 7, 2017, 2:37:0= 5 AM EDT, Douglas Lewit <a href=3D"mailto:[email protected]" target=3D"_bla= nk">[email protected]</a> [ocaml_beginners] <<a href=3D"mailto:ocaml_beg= [email protected]" target=3D"_blank">ocaml_beginners@yahoogroups.<wbr>= com</a>> wrote:</div><div><div id=3D"m_478001112428305845yiv0534753590">= </div></div></div></div><div class=3D"m_478001112428305845yiv0534753590yqt4= 288531665" id=3D"m_478001112428305845yiv0534753590yqt68754"><div><div> <span>=C2=A0</span> <div id=3D"m_478001112428305845yiv0534753590ygrp-mlmsg"> <div id=3D"m_478001112428305845yiv0534753590ygrp-msg"> <div id=3D"m_478001112428305845yiv0534753590ygrp-text"> =20=20=20=20=20=20 =20=20=20=20=20=20 <p></p><div dir=3D"ltr"><font size=3D"4">Hi everyone,</font><div><fon= t size=3D"4"><br clear=3D"none"></font></div><div><font size=3D"4">Right no= w I'm wrapping up Programming Languages, Part A with Dan Grossman on Co= ursera.=C2=A0 Great course!=C2=A0 The language we're using is Standard = ML, which looks very similar to OCaml.=C2=A0 It's an excellent course a= nd I've learned so much.=C2=A0 I strongly recommend it. =C2=A0</font></= div><div><font size=3D"4"><br clear=3D"none"></font></div><div><font size= =3D"4">Anyhow, I was playing around with OCaml this evening using the utop = environment in my Terminal and noticed something rather interesting.=C2=A0 = I'm accustomed to the 'a or 'b or 'c type.=C2=A0 But I noti= ced this evening an unusual notation.... what is '_a?=C2=A0 How is <b>&= #39;_a</b> different from <b>'a</b>?=C2=A0 I'm using OCaml, version= 4.04, which I think is the latest version of the language.=C2=A0 Is this s= omething new that OCaml's developers have decided to introduce into the= language?=C2=A0 I would be very grateful if someone can provide a simple e= xplanation of what this is and why it's important.</font></div><div><fo= nt size=3D"4"><br clear=3D"none"></font></div><div><font size=3D"4">Just as= a side note, does anyone have any opinions about SML?=C2=A0 I like the lan= guage a lot, although I think OCaml does a much better job of implementing = non-tail recursive functions than SML.=C2=A0 But how much stack memory is a= vailable to a language's compiler or interpreter is probably more of an= implementation issue than a true language issue.</font></div><div><font si= ze=3D"4"><br clear=3D"none"></font></div><div><font size=3D"4">I appreciate= the feedback.</font></div><div><font size=3D"4"><br clear=3D"none"></font>= </div><div><font size=3D"4">Thanks,</font></div><div><font size=3D"4"><br c= lear=3D"none"></font></div><div><font size=3D"4">Douglas Lewit</font></div>= <div><font size=3D"4"><br clear=3D"none"></font></div><div><font size=3D"4"= >P.S.=C2=A0 Does someone know how to turn off Warning 8, the warning about = non-exhaustive pattern matching?=C2=A0 The compiler returned Warning 8 abou= t one of my functions, but the function works exactly the way I want it to,= so I don't really see what the problem is.</font></div><div><font size= =3D"4"><br clear=3D"none"></font></div></div> </div> =20=20=20=20=20 =20=20=20=20 <div style=3D"color:#fff;height:0;"></div></div> </div></div></div></div></span></div><p></p> </div> =20=20=20=20=20 =20=20=20=20 <div style=3D"color:#fff;height:0;"></div> </div> =20=20 </div></div></blockquote></div><br></div> </p> </div> =20=20=20=20=20 <!--~-|**|PrettyHtmlStart|**|-~--> <div style=3D"color: #fff; height: 0;">__._,_.___</div> =20=20=20=20=20=20=20=20=20=20 =20=20 =20 =20=20=20=20 <div style=3D"clear:both"> </div> <div id=3D"fromDMARC" style=3D"margin-top: 10px;"> <hr style=3D"height:2px ; border-width:0; color:#E3E3E3; background= -color:#E3E3E3;"> Posted by: Ashish Agarwal <[email protected]> <hr = style=3D"height:2px ; border-width:0; color:#E3E3E3; background-color:#E3E3= E3;"> </div> <div style=3D"clear:both"> </div> <table cellspacing=3D4px style=3D"margin-top: 10px; margin-bottom: 10px= ; color: #2D50FD;"> <tbody> <tr> <td style=3D"font-size: 12px; font-family: arial; font-weight: bo= ld; padding: 7px 5px 5px;" > <a style=3D"text-decoration: none; color: #2D50FD= " href=3D"https://groups.yahoo.com/neo/groups/ocaml_beginners/conversations= /messages/14805;_ylc=3DX3oDMTJxMjUwMm03BF9TAzk3MzU5NzE0BGdycElkAzQ5OTkxOTQE= Z3Jwc3BJZAMxNzA1MDA2NzY0BG1zZ0lkAzE0ODA1BHNlYwNmdHIEc2xrA3JwbHkEc3RpbWUDMTQ= 5NDI0OTEzNw--?act=3Dreply&messageNum=3D14805">Reply via web post</a> </td> <td>•</td> <td style=3D"font-size: 12px; font-family: arial; padding: 7px 5p= x 5px;" > <a href=3D"mailto:[email protected]?subject=3DRe%3A%20%22oc= aml_beginners%22%3A%3A%5B%5D%20What%20does%20%27_a%20mean%3F" style=3D"text= -decoration: none; color: #2D50FD;"> Reply to sender </a> </td> <td>•</td> <td style=3D"font-size: 12px; font-family: arial; padding: 7px 5p= x 5px;"> <a href=3D"mailto:[email protected]?subject=3DRe%= 3A%20%22ocaml_beginners%22%3A%3A%5B%5D%20What%20does%20%27_a%20mean%3F" sty= le=3D"text-decoration: none; color: #2D50FD"> Reply to group </a> </td> <td>•</td> <td style=3D"font-size: 12px; font-family: arial; padding: 7px 5p= x 5px;" > <a href=3D"https://groups.yahoo.com/neo/groups/ocaml_beginners/= conversations/newtopic;_ylc=3DX3oDMTJlZGthYzFrBF9TAzk3MzU5NzE0BGdycElkAzQ5O= TkxOTQEZ3Jwc3BJZAMxNzA1MDA2NzY0BHNlYwNmdHIEc2xrA250cGMEc3RpbWUDMTQ5NDI0OTEz= Nw--" style=3D"text-decoration: none; color: #2D50FD">Start a New Topic</a> </td> <td>•</td> <td style=3D"font-size: 12px; font-family: arial; padding: 7px 5p= x 5px;color: #2D50FD;" > <a href=3D"https://groups.yahoo.com/neo/groups/= ocaml_beginners/conversations/topics/14803;_ylc=3DX3oDMTM2dGlvZjc1BF9TAzk3M= zU5NzE0BGdycElkAzQ5OTkxOTQEZ3Jwc3BJZAMxNzA1MDA2NzY0BG1zZ0lkAzE0ODA1BHNlYwNm= dHIEc2xrA3Z0cGMEc3RpbWUDMTQ5NDI0OTEzNwR0cGNJZAMxNDgwMw--" style=3D"text-dec= oration: none; color: #2D50FD;">Messages in this topic</a> (3) </td> </tr> </tbody> </table> =20=20=20=20=20=20=20=20 <div id=3D"megaphoneModule"> <hr style=3D"height:2px ; border-width:0; color:#E3E3E3; backgr= ound-color:#E3E3E3;"> <div> <div class=3D"stream" style=3D"margin-bottom:10px;"> <div style=3D"background-color:white;"> <div class=3D"sn-img" style=3D"display:inline;"><img name=3D"tn= _file" style=3D"padding:0px 10px;vertical-align:top;margin-top:5px;" src=3D= "https://s.yimg.com/ru/static/images/yg/img/megaphone/1464031581_phpFA8bON"= height=3D"82" width=3D"82"></div> <div class=3D"mod-txt" style=3D"display:inline-block;"> <a rel=3D"nofollow" name=3D"sub_url" target=3D"_blank" href= =3D"https://yho.com/1wwmgg" style=3D"color:#0000FF;display:block;margin-lef= t:5px;text-decoration:none;"><span style=3D"font-size:15px;">Have you tried= the highest rated email app?</span></a> <div style=3D"max-width:530px;padding:2px 5px;">With 4.5 st= ars in iTunes, the Yahoo Mail app is the highest rated email app on the mar= ket. What are you waiting for? Now you can access all your inboxes (Gmail, = Outlook, AOL and more) in one place. Never delete an email again with 1000G= B of free cloud storage.</div> </div> </div> </div> </div>=20=20 =20=20=20=20=20 <hr style=3D"height:2px ; border-width:0; color:#E3E3E3; background-col= or:#E3E3E3;"> </div> <!------- Start Nav Bar ------> <div id=3D"ygrp-grfd" style=3D"font-family: Verdana; font-size: 12px; p= adding: 15px 0;"> =20=20=20=20=20=20 <!-- |**|begin egp html banner|**| --> Archives up to December 31, 2011 are also downloadable at <a href=3D"= http://www.connettivo.net/cntprojects/ocaml_beginners">http://www.connettiv= o.net/cntprojects/ocaml_beginners</a><BR> The archives of the very official ocaml list (the seniors' one) can be foun= d at <a href=3D"http://caml.inria.fr">http://caml.inria.fr</a><BR> Attachments are banned and you're asked to be polite, avoid flames etc. = =20=20 <!-- |**|end egp html banner|**| --> </div> =20=20 =20 <!-- |**|begin egp html banner|**| --> <div id=3D"ygrp-vital" style=3D"background-color: #f2f2f2; font-family: Ver= dana; font-size: 10px; margin-bottom: 10px; padding: 10px;"> <span id=3D"vithd" style=3D"font-weight: bold; color: #333; text-transf= orm: uppercase; "><a href=3D"https://groups.yahoo.com/neo/groups/ocaml_begi= nners/info;_ylc=3DX3oDMTJlb29tM2lmBF9TAzk3MzU5NzE0BGdycElkAzQ5OTkxOTQEZ3Jwc= 3BJZAMxNzA1MDA2NzY0BHNlYwN2dGwEc2xrA3ZnaHAEc3RpbWUDMTQ5NDI0OTEzNw--" style= =3D"text-decoration: none;">Visit Your Group</a></span> <ul style=3D"list-style-type: none; margin: 0; padding: 0; display: in= line;"> </ul> </div> <div id=3D"ft" style=3D"font-family: Arial; font-size: 11px; margin-top: 5p= x; padding: 0 2px 0 0; clear: both;"> <a href=3D"https://groups.yahoo.com/neo;_ylc=3DX3oDMTJkczg3N2E5BF9TAzk3ND= c2NTkwBGdycElkAzQ5OTkxOTQEZ3Jwc3BJZAMxNzA1MDA2NzY0BHNlYwNmdHIEc2xrA2dmcARzd= GltZQMxNDk0MjQ5MTM3" style=3D"float: left;"><img src=3D"http://l.yimg.com/r= u/static/images/yg/img/email/new_logo/logo-groups-137x15.png" height=3D"15"= width=3D"137" alt=3D"Yahoo! Groups" style=3D"border: 0;"/></a> <div style=3D"color: #747575; float: right;"> • <a href=3D"https://i= nfo.yahoo.com/privacy/us/yahoo/groups/details.html" style=3D"text-decoratio= n: none;">Privacy</a> • <a href=3D"mailto:ocaml_beginners-unsubscribe@= yahoogroups.com?subject=3DUnsubscribe" style=3D"text-decoration: none;">Uns= ubscribe</a> • <a href=3D"https://info.yahoo.com/legal/us/yahoo/utos/t= erms/" style=3D"text-decoration: none;">Terms of Use</a> </div> </div> <br> <!-- |**|end egp html banner|**| --> </div> <!-- ygrp-msg --> =20 <!-- Sponsor --> <!-- |**|begin egp html banner|**| --> <div id=3D"ygrp-sponsor" style=3D"width:160px; float:right; clear:none; m= argin:0 0 25px 0; background: #fff;"> <!-- Start Recommendations --> <div id=3D"ygrp-reco"> </div> <!-- End Recommendations --> </div> <!-- |**|end egp html banner|**| --> <div style=3D"clear:both; color: #FFF; font-size:1px;">.</div> </div> <img src=3D"http://geo.yahoo.com/serv?s=3D97359714/grpId=3D4999194/grpspI= d=3D1705006764/msgId=3D14805/stime=3D1494249137" width=3D"1" height=3D"1"> = <br> <img src=3D"http://y.analytics.yahoo.com/fpc.pl?ywarid=3D515FB27823A7407E&a= =3D10001310322279&js=3Dno&resp=3Dimg&cf12=3DCP" width=3D"1" height=3D"1">=20 <div style=3D"color: #fff; height: 0;">__,_._,___</div> <!--~-|**|PrettyHtmlEnd|**|-~--> </body> <!--~-|**|PrettyHtmlStart|**|-~--> <head> <style type=3D"text/css"> <!-- #ygrp-mkp { border: 1px solid #d8d8d8; font-family: Arial; margin: 10px 0; padding: 0 10px; } #ygrp-mkp hr { border: 1px solid #d8d8d8; } #ygrp-mkp #hd { color: #628c2a; font-size: 85%; font-weight: 700; line-height: 122%; margin: 10px 0; } #ygrp-mkp #ads { margin-bottom: 10px; } #ygrp-mkp .ad { padding: 0 0; } #ygrp-mkp .ad p { margin: 0; } #ygrp-mkp .ad a { color: #0000ff; text-decoration: none; } #ygrp-sponsor #ygrp-lc { font-family: Arial; } #ygrp-sponsor #ygrp-lc #hd { margin: 10px 0px; font-weight: 700; font-size: 78%; line-height: 122%; } #ygrp-sponsor #ygrp-lc .ad { margin-bottom: 10px; padding: 0 0; } #actions { font-family: Verdana; font-size: 11px; padding: 10px 0; } #activity { background-color: #e0ecee; float: left; font-family: Verdana; font-size: 10px; padding: 10px; } #activity span { font-weight: 700; } #activity span:first-child { text-transform: uppercase; } #activity span a { color: #5085b6; text-decoration: none; } #activity span span { color: #ff7900; } #activity span .underline { text-decoration: underline; } .attach { clear: both; display: table; font-family: Arial; font-size: 12px; padding: 10px 0; width: 400px; } .attach div a { text-decoration: none; } .attach img { border: none; padding-right: 5px; } .attach label { display: block; margin-bottom: 5px; } .attach label a { text-decoration: none; } =20=20 blockquote { margin: 0 0 0 4px; } .bold { font-family: Arial; font-size: 13px; font-weight: 700; } .bold a { text-decoration: none; } dd.last p a { font-family: Verdana; font-weight: 700; } dd.last p span { margin-right: 10px; font-family: Verdana; font-weight: 700; } dd.last p span.yshortcuts { margin-right: 0; } div.attach-table div div a { text-decoration: none; } div.attach-table { width: 400px; } div.file-title a, div.file-title a:active, div.file-title a:hover, div.fi= le-title a:visited { text-decoration: none; } div.photo-title a, div.photo-title a:active, div.photo-title a:hover, div= .photo-title a:visited { text-decoration: none; } div#ygrp-mlmsg #ygrp-msg p a span.yshortcuts { font-family: Verdana; font-size: 10px; font-weight: normal; } .green { color: #628c2a; } .MsoNormal { margin: 0 0 0 0; } o { font-size: 0; } #photos div { float: left; width: 72px; } #photos div div { border: 1px solid #666666; height: 62px; overflow: hidden; width: 62px; } #photos div label { color: #666666; font-size: 10px; overflow: hidden; text-align: center; white-space: nowrap; width: 64px; } #reco-category { font-size: 77%; } #reco-desc { font-size: 77%; } .replbq { margin: 4px; } #ygrp-actbar div a:first-child { /* border-right: 0px solid #000;*/ margin-right: 2px; padding-right: 5px; } #ygrp-mlmsg { font-size: 13px; font-family: Arial, helvetica,clean, sans-serif; *font-size: small; *font: x-small; } #ygrp-mlmsg table { font-size: inherit; font: 100%; } #ygrp-mlmsg select, input, textarea { font: 99% Arial, Helvetica, clean, sans-serif; } #ygrp-mlmsg pre, code { font:115% monospace; *font-size:100%; } #ygrp-mlmsg * { line-height: 1.22em; } #ygrp-mlmsg #logo { padding-bottom: 10px; } #ygrp-msg p a { font-family: Verdana; } #ygrp-msg p#attach-count span { color: #1E66AE; font-weight: 700; } #ygrp-reco #reco-head { color: #ff7900; font-weight: 700; } #ygrp-reco { margin-bottom: 20px; padding: 0px; } #ygrp-sponsor #ov li a { font-size: 130%; text-decoration: none; } #ygrp-sponsor #ov li { font-size: 77%; list-style-type: square; padding: 6px 0; }=20 #ygrp-sponsor #ov ul { margin: 0; padding: 0 0 0 8px; } #ygrp-text { font-family: Georgia; } #ygrp-text p { margin: 0 0 1em 0; } #ygrp-text tt { font-size: 120%; } #ygrp-vital ul li:last-child { border-right: none !important;=20 }=20 --> </style> </head> <!--~-|**|PrettyHtmlEnd|**|-~--> </html> <!-- end group email --> --001a1140b71e470c0c054f02e582--