<br><br><div><span class="gmail_quote">On 12/7/06, <b class="gmail_sendername">Damien Kick</b> <<a href="mailto:dkixk@earthlink.net">dkixk@earthlink.net</a>> wrote:</span><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
<div style=""><div><span class="q"><br></span><div>"Most" Common Lispniks would write an iterative, i.e. non-functional, version, such as the following:</div><div><br></div><div><font color="#000000" face="Courier New">
(loop for i from 1 upto 10 summing i)</font></div></div></div></blockquote><div><br>Interesting. This a tangent, but 90% of the time my iteration needs can be served by map and fold. The other times i use a recursive function. Long ago I used basic-a and C/C++, etc. and when i'd do for loops i'd usually be off by +-1 on my first try. But if "loop" works for you, go for it :)
<br> </div><br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;"><div style=""><div><div><span>When the most exposure to lisp I had was the usual cursory intro from a comparative languages course and a intro to AI course in college, I had the impression that everything in lisp was always recursion. Having been reintroduced by Paul Graham's
<i>ANSI Common Lisp</i>, I was under the impression that doing things like using <font face="Courier New">setq</font> should be done only in emergencies. I forget how he phrases it. Something like pretending that it incurs a cost to the function or something like that. But that's why I'm personally glad that Peter Siebel wrote
<font color="#000000"><i>Practical Common Lisp</i><font color="#000000">, as it focuses more on getting useful stuff done, and shows quite a bit of the "just get stuff done" aspects of the language.</font></font>
</span></div></div></div></blockquote><div><br>I avoid using set commands whenever I can, but I probably have differnt goals then you when programming. This is majorly tangental, and has nothing to do with any of our group decisions, but now that I said it, I'm getting really interested. What are peoples goals when programming? Some goals that I see are:
<br><br>* Learn things to improve my own programming technique<br>
* Get the current product/feature useable now<br>
* Get the current product/feature into a elegant (i.e. easily maintainable) form.<br>
<br>I'm sure there are others.<br><br>I guess the priority order matters to. I think most of the time my priorities are:<br><br>1. Learn things to improve my own programming technique {as evidenced by my excessive use of continuations :)}
<br>2. Get the current product/feature into a elegant (i.e. easily maintainable) form.<br>3. Get the current product/feature useable now<br><br>But depending on what else is going on (i.e. who's waiting for what i'm working on), then "Get the current product/feature useable now" can get pushed up. How about everyone else?
<br></div><br><br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;"><div style=""><div><div>Common Lisp and Scheme do come from different communities. I think it is interesting to note that most all the many divergent lisp dialects that were used at one time <
<a href="http://tinyurl.com/y7puru" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)">http://tinyurl.com/y7puru</a>>, 3Lisp, Flavors, Franz Lisp, Interlisp, Lisp 1.5, LOOPS, XLisp, ZetaLisp, etc., have been subsumed by Common Lisp. However, Scheme remains distinct. I think that is indicative of the differences between the languages and the communities. But like is mentioned in the
comp.lang.functional FAQ (ibid):</div></div></div></blockquote><br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;"><div style=""><div><blockquote type="cite">
<p style="margin: 0px 0px 16px;"><font face="Times" size="4"><span style="font-size: 16px;">It is often possible to write functional-style programs in an imperative language, and vice versa. It is then a matter of opinion whether a particular language can be described as functional or not.
</span></font></p></blockquote><div>If one wants to slide far enough down the slippery slope, even C/C++ could be considered functional languages because one can write such code without using assignment (or iteration (...)).
</div></div></div></blockquote><div><br>ya, functional programming can be refered to as a "technique" that can be used in a lot of languages. <br><br>On the other hand, I'm writing a language that's purely functional, so I'm in the clear on this :)
<br><br> </div><br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;"><div style=""><div><span class="q"><br><div>Corey wrote:</div><br><blockquote type="cite">
<div><div>I would personally prefer having some room for non-lisp languages, but I would still be ok with constraining ourselfs to lisp ( i.e. no ML or haskel (or erlang ;) ). I would have a issue though if we were to constrain ourselfs to the common lisp dialect.
</div></div></blockquote><div><br></div></span><div>I personally would not have an issue with including many divergent dialects in the lisp family. In fact, I would love it if somebody could get Paul Graham to come talk about Arc, the newest vaporware member of the family. I suppose I would have an issue with a lisp group which was not cognizant of the distinctions, though.
</div></div></div></blockquote><div><br>I've seen him on the scheme mailing lists lately. He does actually answer his email, so someone could probably just send him a email asking him. It should probably be someone more diplomatic then me :)
<br> </div><br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;"><div style=""><div><span class="q"><blockquote type="cite"><div>Question. Does Allegroserve *require* you to buy allegro common lisp? You might alienate some potential helpers that way.
<br></div></blockquote><div><br></div></span><div>No. There is Portable AllegroServe <<a href="http://portableaserve.sourceforge.net" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)">http://portableaserve.sourceforge.net
</a>/>. It works with:</div><blockquote type="cite"><ul><li style="margin: 0px;"><font color="#000000">CMU Common Lisp</font></li><li style="margin: 0px;"><font color="#000000">Steel Bank Common Lisp</font></li><li style="margin: 0px;">
<font color="#000000">GNU clisp (only single-threaded operation)</font></li><li style="margin: 0px;"><font color="#000000">OpenMCL</font></li><li style="margin: 0px;"><font color="#000000">Xanalys Lispworks</font></li><li style="margin: 0px;">
<font color="#000000">MCL</font></li><li style="margin: 0px;"><font color="#000000">Scieneer Common Lisp (slightly broken as of 2004-02-29)</font></li><li style="margin: 0px;"><font color="#000000">Corman Common Lisp (with non-standard install method, might be broken as of 2004-02-29)
</font></li><li style="margin: 0px;"><font color="#000000">Allegro Common Lisp</font></li></ul></blockquote><div>The only reason I mentioned it was that it is an entire HTTP server in CL, as opposed to only part of it, as one would find with something like mod_lisp. But as others have mentioned, there are lots of other alternatives. Personally, I am looking for a lisp group because I like lisp and don't have enough excuse to use it at work. In fact, I think it would be sweet if we could get our hands on an old Symbolics machine and have everything be lisp, from the raw iron all the way up. But I'm strange like that. I don't expect a Linux group to host its web-server on a box running something other than Linux and I like my lisp groups to use as much lisp as possible.
</div></div></div></blockquote><div><br><br>I assume no one cares, but I'll mention it anyway: Drscheme comes with a full web server too :) It's based on continuation based dialogs. It's discussed in this paper: <a href="http://www.ccs.neu.edu/scheme/pubs/afp2002-f.ps.gz">
http://www.ccs.neu.edu/scheme/pubs/afp2002-f.ps.gz</a> (I think there's a better paper on it, but i couldn't find it today)<br><br><br>If you get a symbolics machine I'd be really interested in seeing it. I keep hearing about them, but i can never see it run. (last i saw it only ran on a proprietary card, inserted into a alpha)
<br> </div><br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;"><div style=""><div><span class="q"><div>Corey wrote:</div><br><blockquote type="cite">
<div>Also as I mentioned before {in person}, having just implemented a wiki in scheme, I would probably be able to give some guidance if you decide to do a wiki.<br></div></blockquote><div><br></div></span><div>And there is CLiki <
<a href="http://www.cliki.net/CLiki" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)">http://www.cliki.net/CLiki</a>> and The Common Lisp Directory <<a href="http://tinyurl.com/y3fkb6" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)">
http://tinyurl.com/y3fkb6</a>>, both written in CL.</div></div></div></blockquote><div><br> </div><br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
<div style=""><div><span class="q"><div>Corey wrote:</div><br><blockquote type="cite"><div><div>This is probably too big of a project, but I'll toss out the idea anyway. What about writing a common lisp "interpreter" in scheme?
</div></div></blockquote><br></span></div><div><span>Yeah, you're right. It probably <font color="#000000"><b>is</b><font color="#000000"> too big of a project. Sure, we could knock out the basics of the language, what with lexical scoping and closures coming for free from Scheme, and adding dynamic scoping (special variables) in a few lines of code. Sure, CL style macros would be a day or two at best. Pathnames, logical pathnames, packages, and reader macros aren't even worth mentioning. CLOS would be a week or two. A full meta-object protocol might take another week. Maybe two. Adding CL style conditions would probably be two weeks, maybe three tops. But doing things like getting
</font><font color="#000000" face="Courier New">unwind-protect</font><font color="#000000"> and </font><font color="#000000" face="Courier New">call/cc</font><font color="#000000"> to play well together might be a bit harder <
<a href="http://tinyurl.com/y8pl6r" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)">http://tinyurl.com/y8pl6r</a>>.</font></font></span></div></div>
</blockquote></div><br>Actually, your schedule makes it sound attainable. Basically instead of going after full ANSI-CL compliance, we could get "most" CL features working pretty quick. It wouldn't quite be a commercial development environment, but would provide some of the benifits. Basically the progress of the system could be measured by:
<br><br>When developing a program in the new system, what percentage of it was able to be done in the "emulated" Common Lisp, and how much had to be done in scheme?<br><br>{also, i havn't cought the concept of unwind-protect and dynamic-wind yet. I just know that people are able to use those types of calls to block my continuations after they see me using continuations to get at stuff they didn't want me in :)}
<br><br>Corey<br><br>-- <br>((lambda (y) (y y)) (lambda (y) (y y)))