From: Hugh Aguilar on
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
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
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
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
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?