This is the mail archive of the guile@cygnus.com mailing list for the guile project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

Re: Implicit binding and ergonomics (was Re: ... too complicated)


> > And why did the language designers leave out the "else" in "if condition
> > do () else do ()"? This is at least as perverse from a programming
> > language student's viewpoint as implicit binding of free variables. 
> 
> No sugar, please.  I /like/ the fact that guile does without the syntactic
> sugar.  I don't like having to type out "foo extends bar" in java, when
> there is already construct for showing that relationship that avoids the
> extra word.
> 
> Start adding extra kruft and you break the spirit of the language.

The (if) statement in scheme is already kruft, I always use
(cond), which also gives me the use of else.

> Clear examples are nice too.  Much better than street signs.  I found them
> in the guile tutorial, several web pages, and a couple nice .ps files with
> general scheme tutorials.  I'd like to thank whoever put together the
> current guile reference, because it made setting up my current project go
> much faster than figuring out someone else's code would have.

Would you share web references with us for beginner level scheme tutorial
material that is freely distributable? I found it a bit hard starting
but there is a lot of intermediate and advanced material out there.
I'm having trouble getting other people started because there is nothing
to point them at without spending a lot of time sitting with them and
explaining. There are books but they are expensive :-( There is also
R5RS but that isn't suitable for a beginner. I'm looking for ``getting
started'' type material.

> I haven't seen ANYTHING where scope of variable binding is more clear than
> a let statement, unless it's the old style perl "everything's global"
> attitude.
> 
> Guile isn't descended from "C" or anything like it.  Perl is.  Java is.
> C++ is.  If you know C, learning perl is changing how you spell function
> names, forgetting to use parens a lot of the time,  and not worrying
> about what type your variables are.  

Yeah, perl is less strict about () and more strict about {}, go figure.

You can get an everything's global attitude in scheme by sticking a
bunch of (define) statements at the top and use (set!) everywhere.
It's no worse than C in this regard, and I actually quite like globals,
they regularly get bagged but for getting stuff to work in a hurry or
explaining something to a beginner, they do the job.

> I like the mode of thinking that scheme encourages me to use. I hope that
> I can eventually become comfortable enough with it to be as productive
> with guile as I am in C.  I certainly wouldn't want to turn it into C, though.

A language should not encourage a mode of thinking, it should ideally
be transparent to all modes of thinking. I doubt that this is achievable
but setting things up so that you can do the same job in a lot of different
ways is a very healthy thing. The less you encourage railroad thinking
the better IMHO.

	- Tel