From: Hugh Aguilar on 23 Mar 2010 13:43 On Mar 22, 2:43 pm, Nicolas Neuss <lastn...(a)kit.edu> wrote: > ... there is research to be done > for finding e.g. a "continuous" passage between dynamic and static > typing. And as I understand it, one of the strengths of PLT is its > academic background with a lot of funding because of such basic > research. One reason why I have put off learning CL or (especially) Scheme is because of the academic background. I don't have any college education. If a job were available, *every* job applicant except myself would have college degree, possibly even from MIT. No matter how much I learn about Lisp/Scheme, I would never be qualified for any job due to my lack of education. I have worked as a programmer. Typically I write assembly language. Programmers with education will refuse to program in assembly language because they hate it, and (more importantly) because it is a dead-end career wise. The assembly language work gets dumped on bottom-feeders such as myself. There is not much assembly language work available, and less now than previously, thanks to Moore's Law. This is why I mostly just work as a cab driver, and only occasionally find work as a programmer. Programming is mostly just a hobby for me; I write programs for my own use (the poker analysis program) or give them away for free (the slide-rule gcode program).
From: Hugh Aguilar on 23 Mar 2010 13:52 On Mar 22, 7:39 pm, Eli Barzilay <e...(a)barzilay.org> wrote: > The reason I pointed at CLOS as being a potential problem is related > to types, but goes beyond that: it is the fact that generic functions > are being extended via side-effects which complicates both having it > live in peace with a typechecker as well as other components. To get > a feeling of the general problem, consider the fact that if you have > this > > (defmethod foo ((x string)) 'x) > > in one file, and this > > (defmethod foo ((x string)) 'y) > > in another, then the order in which you load the two files becomes > important. IMO, this is the single biggest wart that I didn't address > in Swindle. (And I don't know of a way to address it.) Forth has always been like this and it has been considered a feature rather than a "wart." In Forth, a function can call itself, and this isn't recursion --- this is a call to the previous definition of that function. The previous definition is still available inside of a function because the new function is temporarily smudged (it isn't officially put into the dictionary until the semicolon at the end wraps up the definition). After the new function is defined, the old function is no longer accessible in the dictionary. It still exists however, so any functions that were defined after it was defined and before the new version was defined, and which called the old version, will still work and will still call the old version. Note that you use the word RECURSE for actual recursion. It is also possible to do mutual recursion, with an indirect call ahead (such as with the semi-standard DEFER word).
From: Eli Barzilay on 23 Mar 2010 14:07 Hugh Aguilar <hughaguilar96(a)yahoo.com> writes: > On Mar 22, 4:37 pm, refun <re...(a)nospam.gmx.com> wrote: >> Using basic CLOS features is rather intuitive, but if you want all >> the details, read AMOP and inspect a live CL system which comes >> with source code, that way you'll understand both what it's >> supposed to do, and how it does it, but keep in mind that >> implementations are given a certain degree of freedom on how things >> are implemented, so you can't expect things which are not >> documented(in the ANSI CL standard and the MOP) to stay the same in >> each implementation. > > I actually have the AMOP book, but have never read it. Is PLT Scheme > different enough that reading AMOP would mess me up? No, it's based on tiny-clos, and adds almost all of the other clos-ish extensions. But it's generally much less exercised, so if your ultimate goal *is* clos, then it's probably better to go with CL right from the start. -- ((lambda (x) (x x)) (lambda (x) (x x))) Eli Barzilay: http://barzilay.org/ Maze is Life!
From: Eli Barzilay on 23 Mar 2010 14:11 Hugh Aguilar <hughaguilar96(a)yahoo.com> writes: > > Forth has always been like this and it has been considered a feature > rather than a "wart." In Forth, a function can call itself, and this > isn't recursion --- this is a call to the previous definition of > that function. [...] This is an issue of how the scope of toplevel definitions is defined. For example, ML does that too: # let foo x = x+1;; val foo : int -> int = <fun> # let foo x = foo x-1;; val foo : int -> int = <fun> # foo 8;; - : int = 8 and it requires an explicit syntax for recursive functions. -- ((lambda (x) (x x)) (lambda (x) (x x))) Eli Barzilay: http://barzilay.org/ Maze is Life!
From: Hugh Aguilar on 23 Mar 2010 15:08
On Mar 23, 12:07 pm, Eli Barzilay <e...(a)barzilay.org> wrote: > ... if your > ultimate goal *is* clos, then it's probably better to go with CL right > from the start. My ultimate goal is still CLOS. I've had AMOP on my bookshelf for quite a few years. Every time I walk past I think: "I should read that book before I die." I feel the same way about the Spanish version of "Don Quixote," but AMOP is somewhat more of a realistic goal. :-) I am mostly interested in PLT Scheme because it is supposedly a good way to get into GUI programming. I need to learn how to write GUI software so nontechnical people will be more willing to use it. I lot of people are very turned off by console-style user interfaces, and they won't even try the software at all. If I did focus on CL right away, which version and which libraries would I use to write a GUI program? |