Path: csiph.com!x330-a1.tempe.blueboxinc.net!newsfeed.hal-mli.net!feeder3.hal-mli.net!newsfeed.hal-mli.net!feeder1.hal-mli.net!border3.nntp.dca.giganews.com!border1.nntp.dca.giganews.com!nntp.giganews.com!news.iecc.com!nerds-end From: Alex McDonald Newsgroups: comp.compilers Subject: Re: Looking for volunteers for XL Date: Thu, 1 Dec 2011 12:11:17 -0800 (PST) Organization: Compilers Central Lines: 53 Sender: news@iecc.com Approved: comp.compilers@iecc.com Message-ID: <11-12-006@comp.compilers> References: <11-11-048@comp.compilers> <11-11-053@comp.compilers> <11-11-054@comp.compilers> <11-11-061@comp.compilers> <11-11-063@comp.compilers> NNTP-Posting-Host: news.iecc.com X-Trace: leila.iecc.com 1322804053 58874 64.57.183.58 (2 Dec 2011 05:34:13 GMT) X-Complaints-To: abuse@iecc.com NNTP-Posting-Date: Fri, 2 Dec 2011 05:34:13 +0000 (UTC) Keywords: types, syntax Posted-Date: 02 Dec 2011 00:34:13 EST X-submission-address: compilers@iecc.com X-moderator-address: compilers-request@iecc.com X-FAQ-and-archives: http://compilers.iecc.com Xref: x330-a1.tempe.blueboxinc.net comp.compilers:378 On Nov 28, 6:50 am, Timothy Knox wrote: > Somewhere on Shadow Earth, at Mon, Nov 28, 2011 at 04:45:11AM +0000, Kaz Kylheku wrote: > > > [Are you aware of anyone actually doing this? I agree that you might > > expect extensible languages to be handy design testbeds, but somehow > > other than in the Lisp community, it didn't work out that way. -John] > > Well, John, I think the Forth community provide another counter-example. > Granted, I am not aware of any projects of hundreds or thousands of > Forth devs, but some rather significant projects have been done in Forth > by small teams. And lest folks think Forth as a philosophy is dead, you > might want to seehttp://factorcode.org/where the language is evolving > in some very interesting directions. > -- > Timothy Knox > > Never trust a language where its users won't tell you that it sucks. > -- Peter Corlett, on We Hates Software (about Python) > [Forth is swell, but you can't extend its syntax the way you can in > languages with BNF-based parsers and rewrite rules. -John] To John's observation; perhaps its lack of syntax makes it seem that way, but Forth programmers are dab hands at extending Forth. Want new control structures beyond the basics? Not a problem; here's a CASE ENDCASE constructed from Forth primitives, since the programmer has access to the compiler; (comments are in ( ) or preceded by \ ); : case ( -- 0 ) 0 ; immediate : of ( C: #of -- orig #of+1 ) ( x -- ) 1+ >r postpone over postpone = postpone if postpone drop r> ; immediate : endof ( C: orig1 #of -- orig2 #of ) >r postpone else r> ; immediate : otherwise ; immediate : endcase ( c: orig1..orign #of -- ) postpone drop 0 ?do postpone then loop ; immediate Now we can... : testcase ( n -- ) case 1 of ." one" endof 2 of ." two" endof otherwise ." a lot" endcase ; [Hey, I said forth is swell. But there isn't a real parser, and if you get your syntax slightly wrong, rather than parser errors, you get exciting stack explosions. -John]