Re: Overview of prefix vs postfix notations + evaluation schemes.
"Michael Haufe [email protected] [concatenative]" <[email protected]> Sun, 6 Jul 2014 16:05:39 -0500
| Newsgroups | gmane.comp.lang.concatenative |
|---|---|
| Message-ID | <CAErhmQURVS3Cw6EvzcDZMErkXmFW2G++7NiBOA5GUEQUgBE3Tg@mail.gmail.com> |
--001a11c2f6d0b9589804fd8cb9e0 Content-Type: text/plain; charset=UTF-8 On Sun, Jul 6, 2014 at 11:49 AM, John Cowan [email protected] [concatenative] < [email protected]> wrote: > In general, laziness is of small benefit in itself: Haskell folks say that > laziness is to keep them honest about purity. Though of course there are > some programs that benefit from it directly, there are probably just as > many that suffer. > Lazy evaluation is more expressive than eager evaluation. Also compound expression may not have a Normal Form under eager evaluation, but have one under Lazy Evaluation: left (x,y) = x right (x,y) = y answer = left (42,loop) loop = right loop With eager (innermost reduction): answer => left (42,loop) => left (42,right loop) => left (42,right (right loop)) => left (42,right (right (right loop))) => ... With Lazy (outermost reduction): answer => left (42,loop) => 42 ---- If your language is Non-Turing complete, it's irrelevant of course (except in terms of efficiency which is aided by Graph Reduction when Normal Order is used). I've heard the claim more than once that with Lazy Evaluation you also lose the necessity for Macros, though I'm not sure how far you can take that beyond building the equivalent of your own version of If-Then-Else. I find Macros to be a more general symptom of having an insufficient syntax in your programming language --001a11c2f6d0b9589804fd8cb9e0 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"><div class=3D"gmail_extra"><div class=3D"gmail_qu= ote">On Sun, Jul 6, 2014 at 11:49 AM, John Cowan <a href=3D"mailto:cowan@cc= il.org">[email protected]</a> [concatenative] <span dir=3D"ltr"><<a href=3D= "mailto:[email protected]" target=3D"_blank">concatenative@yaho= ogroups.com</a>></span> wrote:<br> <div>=C2=A0<br></div><blockquote class=3D"gmail_quote" style=3D"margin:0px = 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);"> In general, laziness is of small benefit in itself: =C2=A0Haskell folks say= that<br> laziness is to keep them honest about purity. =C2=A0Though of course there = are<br> some programs that benefit from it directly, there are probably just as<br> many that suffer.<br></blockquote><div>=C2=A0<br></div><div>Lazy evaluation= is more expressive than eager evaluation.<br><br>Also compound expression = may not have a Normal Form under eager evaluation, but have one under Lazy = Evaluation:<br> <br></div><div>left (x,y) =3D x<br></div><div>right (x,y) =3D y<br></div><d= iv><br></div><div>answer =3D left (42,loop)<br></div><div>loop =3D right lo= op<br><br></div><div>With eager (innermost reduction):<br></div><div><br>an= swer<br> =3D> left (42,loop)<br>=3D> left (42,right loop)<br>=3D> left (42,= right (right loop))<br>=3D> left (42,right (right (right loop)))<br></di= v><div>=3D> ...<br><br></div><div>With Lazy (outermost reduction):<br><b= r></div> <div>answer<br>=3D> left (42,loop)<br>=3D> 42<br><br>----<br><br></di= v><div>If your language is Non-Turing complete, it's irrelevant of cour= se (except in terms of efficiency which is aided by Graph Reduction when No= rmal Order is used). <br> <br></div><div>I've heard the claim more than once that with Lazy Evalu= ation you also lose the necessity for Macros, though I'm not sure how f= ar you can take that beyond building the equivalent of your own version of = If-Then-Else. I find Macros to be a more general symptom of having an insuf= ficient syntax in your programming language<br> </div></div><br></div></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: Michael Haufe <[email protected]> <hr= style=3D"height:2px ; border-width:0; color:#E3E3E3; background-color:#E3E= 3E3;"> </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/concatenative/conversations/m= essages/5000;_ylc=3DX3oDMTJwYzZlb2I1BF9TAzk3MzU5NzE0BGdycElkAzE4MzkyNzQEZ3J= wc3BJZAMxNzA1MDA2NzY0BG1zZ0lkAzUwMDAEc2VjA2Z0cgRzbGsDcnBseQRzdGltZQMxNDA0Nj= gwNzYw?act=3Dreply&messageNum=3D5000">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%5B= stack%5D%20Overview%20of%20prefix%20vs%20postfix%20notations%20%2B%20evalua= tion%20schemes%2E" 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%5Bstack%5D%20Overview%20of%20prefix%20vs%20postfix%20notations%20%2B%20= evaluation%20schemes%2E" style=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/concatenative/co= nversations/newtopic;_ylc=3DX3oDMTJlczAwcHVhBF9TAzk3MzU5NzE0BGdycElkAzE4Mzk= yNzQEZ3Jwc3BJZAMxNzA1MDA2NzY0BHNlYwNmdHIEc2xrA250cGMEc3RpbWUDMTQwNDY4MDc2MA= --" 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/= concatenative/conversations/topics/4997;_ylc=3DX3oDMTM0aTdmNDZqBF9TAzk3MzU5= NzE0BGdycElkAzE4MzkyNzQEZ3Jwc3BJZAMxNzA1MDA2NzY0BG1zZ0lkAzUwMDAEc2VjA2Z0cgR= zbGsDdnRwYwRzdGltZQMxNDA0NjgwNzYwBHRwY0lkAzQ5OTc-" style=3D"text-decoration= : none; color: #2D50FD;">Messages in this topic</a> (4) </td> </tr> </tbody> </table> =20=20=20=20=20=20=20=20 <!------- Start Nav Bar ------> =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/concatenat= ive/info;_ylc=3DX3oDMTJlc2Rua2pzBF9TAzk3MzU5NzE0BGdycElkAzE4MzkyNzQEZ3Jwc3B= JZAMxNzA1MDA2NzY0BHNlYwN2dGwEc2xrA3ZnaHAEc3RpbWUDMTQwNDY4MDc2MA--" 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=3DX3oDMTJkbWh1Y2ZrBF9TAzk3ND= c2NTkwBGdycElkAzE4MzkyNzQEZ3Jwc3BJZAMxNzA1MDA2NzY0BHNlYwNmdHIEc2xrA2dmcARzd= GltZQMxNDA0NjgwNzYw" 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:concatenative-unsubscribe@ya= hoogroups.com?subject=3DUnsubscribe" style=3D"text-decoration: none;">Unsub= scribe</a> • <a href=3D"https://info.yahoo.com/legal/us/yahoo/utos/ter= ms/" 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=3D1839274/grpspI= d=3D1705006764/msgId=3D5000/stime=3D1404680760" 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" 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 --> --001a11c2f6d0b9589804fd8cb9e0--