guile-user
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Me no understand scoping


From: Maciek Godek
Subject: Re: Me no understand scoping
Date: Sat, 2 Aug 2008 23:36:24 +0200

>> I'm currently working on a little project (in my spare time). [...]
>
> Many thanks for providing this description.  The project looks fun, so
> I hope it continues to go well.
>
> A few thoughts occurred to me when reading through.
>
> 1. IMO this could be really beautifully done in GOOPS, by defining
> custom metaclasses and slot types.

I've been considering that, and I'm still having doubts.
The main reason is that there's no documented way
of accessing GOOPS objects from C (except from using
scm_c_eval_string etc.), or at least I couldn't find any
documentation for that.
Besides (which is the matter of personal taste), I don't
like the idea of using generics and trashing the global
namespace with them. (I mean, the sole idea of generics
is fine, but I wouldn't want to be forced to use them)

I also get this unpleasant feeling that all these 'getters'
and 'setters' are entities multiplied beyond necessity
(even the infamous C++ doesn't explicate them)

I'm really trying to get close
to the classical OOP notation: object.method() -- and
it's probably why I explore the potential of using these
"poor man's objects"

> 2. You say that your protocol is lisp-ish.  I have found it really
> useful, both in GDS and in another client/server project, to express
> the protocol entirely in lisp forms.  Simply because this means that
> you can use `read' to read exactly one protocol instruction; no
> parsing required!

Yeah, I had a similar idea, although at first I thought of
making a more efficient (but less elastic) binary protocol
that would require some mechanisms to convert various
supported guile types to binary form. I eventually concluded
that it's better to keep everything textual not only to praise
my laziness, but also it would be better to make a statistical
information-theory based compression protocol to speed
it up (if it turns out necessary).

> 3. It's still not obvious to me how this ends up using the-environment
> and local-eval.  If class variables never interact directly with the
> real environment, they could be just stored in a hash table..

I'm just looking for the most expressive way to use the language.
I've first heard of lisp like two years ago or so and even started
to learn that language from David Lamkins' "Successful Lisp"
and caught some of its spirit from Petet Graham's "On Lisp",
but I always kept getting distracted, finding other things to do.
But the point is that I saw that there is a 'make-hash-table' function
available in lisp -- and this lead me to the conclusion that it's probably
because the scopes/closures/environments implicitly use hash
tables to store their bindings (and the same mechanism was given
explicitly to the programmer).
And so I never stopped to believe that (define x 5) is more or
less equivalent to (hash-set! global-scope 'x 5).

>> PS gdm rocks! (thankyouthankyouthankyou!! it really did change
>> my way of writing the code)
>
> Do you mean GDS?  If so, thanks for your thanks!

Yes, it's a great piece of software, regardless of its name :)

There's no need for your thanks for my thanks as they are deserved.


M.




reply via email to

[Prev in Thread] Current Thread [Next in Thread]