Re: [stack] Introducing the Om language
"William Tanksley, Jr" <[email protected]> Sat, 5 Jan 2013 09:05:45 -0800
| Newsgroups | gmane.comp.lang.concatenative |
|---|---|
| Message-ID | <CAFTBfO5RX-LmrZq71FF1rW9ak-3jWziFwCmHkAhRChdaMQayTw@mail.gmail.com> |
--emPxkdgAQ6JzYXOmENbC2TAIpsRcsGp8mVU9AiM Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Jason Erb <[email protected]> wrote: > Dear Concatenativists, > I've developed a unique concatenative language that I would like to share: > http://om-language.org It looks cool and fun, and I'd like to see examples for something more than swap and copy. Until I see more, I'll say that it looks like a language in Backus' FP / FL tradition (APL, Rebol, J, K), although true to your goals it looks like you've done some nice simplification. It might be concatenative, I don't know. > This led to concatenative languages, but Om has taken a few left turns where other concatenative languages have gone right: That seems like an appropriate way to describe it :-). > - An Om program has only three syntactic elements: operator, operand, and separator. It took me a long time to figure out your syntax... The graph makes the least elementary part of the language (the escape codes) look like the primary, and hides everything else. Do those escape codes do anything? Aside from that: I see that a valid program will begin with a dequoted symbol, and everything else will be quoted. That means that concatenating two valid programs does NOT produce a syntactically valid program, and thus the language is not concatenative. But I'm still confused by the syntax, so maybe I'm wrong. > - Om uses prefix syntax rather than postfix. An elegant left-turn. > - The only data type exposed by the language is a program. Ah, I do that in my useless language. But like Jot and Iota and unlike Om, my language is useless. > - Each function takes as input the rest of the program that it is in. What is a "function"? I mean that question linguistically -- you haven't mentioned the term before. Is a "function" denoted by an "operator"? You also haven't explained "input"; I assume that the "input" is what you call the "operand". That's definitely arguably "the rest of the program", since a "program" has only three elements and the other two are very simple; but it's definitely at that point a VERY hard-line applicative language. Yes, I confirm that I'm confused to the point of being useless. > Jason Erb -Wm --emPxkdgAQ6JzYXOmENbC2TAIpsRcsGp8mVU9AiM Content-Type: text/html; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html> <head> </head> <body style="background-color: #fff;"> <span style="display:none"> </span> <!--~-|**|PrettyHtmlStartT|**|-~--> <div id="ygrp-mlmsg" style="position:relative;"> <div id="ygrp-msg" style="z-index: 1;"> <!--~-|**|PrettyHtmlEndT|**|-~--> <div id="ygrp-text" > <p>Jason Erb <a href="mailto:the.sparist%40yahoo.com">[email protected]</a>> wrote:<br> > Dear Concatenativists,<br> > I've developed a unique concatenative language that I would like to share:<br> > <a href="http://om-language.org">http://om-language.org</a><br> <br> It looks cool and fun, and I'd like to see examples for something more<br> than swap and copy.<br> <br> Until I see more, I'll say that it looks like a language in Backus' FP<br> / FL tradition (APL, Rebol, J, K), although true to your goals it<br> looks like you've done some nice simplification. It might be<br> concatenative, I don't know.<br> <br> > This led to concatenative languages, but Om has taken a few left turns where other concatenative languages have gone right:<br> <br> That seems like an appropriate way to describe it :-).<br> <br> > - An Om program has only three syntactic elements: operator, operand, and separator.<br> <br> It took me a long time to figure out your syntax... The graph makes<br> the least elementary part of the language (the escape codes) look like<br> the primary, and hides everything else. Do those escape codes do<br> anything?<br> <br> Aside from that: I see that a valid program will begin with a dequoted<br> symbol, and everything else will be quoted. That means that<br> concatenating two valid programs does NOT produce a syntactically<br> valid program, and thus the language is not concatenative. But I'm<br> still confused by the syntax, so maybe I'm wrong.<br> <br> > - Om uses prefix syntax rather than postfix.<br> <br> An elegant left-turn.<br> <br> > - The only data type exposed by the language is a program.<br> <br> Ah, I do that in my useless language. But like Jot and Iota and unlike<br> Om, my language is useless.<br> <br> > - Each function takes as input the rest of the program that it is in.<br> <br> What is a "function"? I mean that question linguistically -- you<br> haven't mentioned the term before. Is a "function" denoted by an<br> "operator"? You also haven't explained "input"; I assume that the<br> "input" is what you call the "operand". That's definitely arguably<br> "the rest of the program", since a "program" has only three elements<br> and the other two are very simple; but it's definitely at that point a<br> VERY hard-line applicative language.<br> <br> Yes, I confirm that I'm confused to the point of being useless.<br> <br> > Jason Erb<br> <br> -Wm<br> </p> </div> <!--~-|**|PrettyHtmlStart|**|-~--> <div style="color: #fff; height: 0;">__._,_.___</div> <table cellspacing=4px style="margin-top: 20px; margin-bottom: 10px;"> <tbody> <tr> <td style="font-size: 12px; font-family: arial; font-weight: bold; padding: 7px 5px 5px; color: #FFF; background-color: #F2F2F2; border: 1px solid #EAEAEA " > <a style="text-decoration: none; color: #2D50FD" href="http://groups.yahoo.com/group/concatenative/post;_ylc=X3oDMTJwZ3R2ODJiBF9TAzk3MzU5NzE0BGdycElkAzE4MzkyNzQEZ3Jwc3BJZAMxNzA1MDA2NzY0BG1zZ0lkAzQ5MzUEc2VjA2Z0cgRzbGsDcnBseQRzdGltZQMxMzU3NDA1NTc4?act=reply&messageNum=4935">Reply via web post</a> </td> <td style="font-size: 12px; font-family: arial; padding: 7px 5px 5px; color: #FFF; background-color: #F2F2F2; border: 1px solid #EAEAEA; " > <a href="mailto:[email protected]?subject=Re%3A%20%5Bstack%5D%20Introducing%20the%20Om%20language" style="text-decoration: none; color: #2D50FD;"> Reply to sender </a> </td> <td style="font-size: 12px; font-family: arial; padding: 7px 5px 5px; color: #FFF; background-color: #F2F2F2; border: 1px solid #EAEAEA; "> <a href="mailto:[email protected]?subject=Re%3A%20%5Bstack%5D%20Introducing%20the%20Om%20language" style="text-decoration: none; color: #2D50FD"> Reply to group </a> </td> <td style="font-size: 12px; font-family: arial; padding: 7px 5px 5px; color: #FFF; background-color: #F2F2F2; border: 1px solid #EAEAEA; " > <a href="http://groups.yahoo.com/group/concatenative/post;_ylc=X3oDMTJlMGRvbjlrBF9TAzk3MzU5NzE0BGdycElkAzE4MzkyNzQEZ3Jwc3BJZAMxNzA1MDA2NzY0BHNlYwNmdHIEc2xrA250cGMEc3RpbWUDMTM1NzQwNTU3OA--" style="text-decoration: none; color: #2D50FD">Start a New Topic</a> </td> <td style="font-size: 12px; font-family: arial; padding: 7px 5px 5px; color: #2D50FD; background-color: #F2F2F2; border: 1px solid #EAEAEA; " > <a href="http://groups.yahoo.com/group/concatenative/message/4933;_ylc=X3oDMTM0MXBwbG9sBF9TAzk3MzU5NzE0BGdycElkAzE4MzkyNzQEZ3Jwc3BJZAMxNzA1MDA2NzY0BG1zZ0lkAzQ5MzUEc2VjA2Z0cgRzbGsDdnRwYwRzdGltZQMxMzU3NDA1NTc4BHRwY0lkAzQ5MzM-" style="text-decoration: none; color: #2D50FD;">Messages in this topic</a> (3) </td> </tr> </tbody> </table> <!------- Start Nav Bar ------> <!-- |**|begin egp html banner|**| --> <div id="ygrp-vital" style="background-color: #f2f2f2; font-family: Verdana; font-size: 10px; margin-bottom: 10px; padding: 10px;"> <span id="vithd" style="font-weight: bold; color: #333; text-transform: uppercase; ">Recent Activity:</span> <ul style="list-style-type: none; margin: 0; padding: 0; display: inline;"> </ul> <div style="clear: both; padding-top: 2px; color: #1e66ae;"> <a href="http://groups.yahoo.com/group/concatenative;_ylc=X3oDMTJlNWdic2dqBF9TAzk3MzU5NzE0BGdycElkAzE4MzkyNzQEZ3Jwc3BJZAMxNzA1MDA2NzY0BHNlYwN2dGwEc2xrA3ZnaHAEc3RpbWUDMTM1NzQwNTU3OA--" style="text-decoration: none;">Visit Your Group</a> </div> </div> <div id="ft" style="font-family: Arial; font-size: 11px; margin-top: 5px; padding: 0 2px 0 0; clear: both;"> <a href="http://groups.yahoo.com/;_ylc=X3oDMTJkOTJiZWJpBF9TAzk3MzU5NzE0BGdycElkAzE4MzkyNzQEZ3Jwc3BJZAMxNzA1MDA2NzY0BHNlYwNmdHIEc2xrA2dmcARzdGltZQMxMzU3NDA1NTc4" style="float: left;"><img src="http://l.yimg.com/a/i/us/yg/logo/us.gif" height="15" width="137" alt="Yahoo! Groups" style="border: 0;"/></a> <div style="color: #747575; float: right;">Switch to: <a href="mailto:[email protected]?subject=Change Delivery Format: Traditional" style="text-decoration: none;">Text-Only</a>, <a href="mailto:[email protected]?subject=Email Delivery: Digest" class="margin-rt" style="text-decoration: none;">Daily Digest</a> • <a href="mailto:[email protected]?subject=Unsubscribe" style="text-decoration: none;">Unsubscribe</a> • <a href="http://docs.yahoo.com/info/terms/" style="text-decoration: none;">Terms of Use</a> • <a href="mailto:[email protected]?subject=Feedback on the redesigned individual mail v1" style="text-decoration: none;">Send us Feedback </a></div> </div> <!-- |**|end egp html banner|**| --> </div> <!-- ygrp-msg --> <!-- Sponsor --> <!-- |**|begin egp html banner|**| --> <div id="ygrp-sponsor" style="width:160px; float:right; clear:none; margin:0 0 25px 0; background: #fff;"> <!-- Start Recommendations --> <div id="ygrp-reco"> </div> <!-- End Recommendations --> </div> <!-- |**|end egp html banner|**| --> <div style="clear:both; color: #FFF; font-size:1px;">.</div> </div> <img src="http://geo.yahoo.com/serv?s=97359714/grpId=1839274/grpspId=1705006764/msgId=4935/stime=1357405578/nc1=4507179/nc2=3848644/nc3=5741398" width="1" height="1"> <br> <div style="color: #fff; height: 0;">__,_._,___</div> <!--~-|**|PrettyHtmlEnd|**|-~--> </body> <!--~-|**|PrettyHtmlStart|**|-~--> <head> <style type="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; } 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.file-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; } #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; } --> </style> </head> <!--~-|**|PrettyHtmlEnd|**|-~--> </html> <!-- end group email --> --emPxkdgAQ6JzYXOmENbC2TAIpsRcsGp8mVU9AiM--