unofficial mirror of guile-user@gnu.org 
 help / color / mirror / Atom feed
* Dynamic variable binding
@ 2008-11-12 19:53 Sebastian Tennant
  2008-11-12 22:05 ` Ludovic Courtès
                   ` (2 more replies)
  0 siblings, 3 replies; 17+ messages in thread
From: Sebastian Tennant @ 2008-11-12 19:53 UTC (permalink / raw)
  To: guile-user

Hi all,

An elementary scheme problem from an elementary schemer...

I need to create multiple variable bindings from a list of symbols.  The
value of the variables is unimportant.  It's the 'names' of the
variables that matter.

In pseudo-scheme code:

  (map (lambda (v) (define (eval v) "foo") '(var1 var2 var3)))

Clearly this won't work but I thought perhaps calling a macro in place
of the 'define' would do it, but...

 guile> (define-macro (definer var val)
          `(define ,var ,val))
 guile> (definer 'foo "bar")
 guile> foo
 ERROR: Unbound variable: foo
 ABORT: (unbound-variable)

No doubt this fails for the same reason this does:

 guile> (define 'foo "bar")
 guile> foo
 ERROR: Unbound variable: foo
 ABORT: (unbound-variable)

What exactly happens when you 'define' a symbol?

Any tips/pointers much appreciated.

Sebastian






^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: Dynamic variable binding
  2008-11-12 19:53 Dynamic variable binding Sebastian Tennant
@ 2008-11-12 22:05 ` Ludovic Courtès
  2008-11-13  0:51 ` Keith Wright
  2008-11-13 11:33 ` Sebastian Tennant
  2 siblings, 0 replies; 17+ messages in thread
From: Ludovic Courtès @ 2008-11-12 22:05 UTC (permalink / raw)
  To: guile-user

Hello!

Sebastian Tennant <sebyte@smolny.plus.com> writes:

> What exactly happens when you 'define' a symbol?

In Guile (non-portable) terms, "(define foo 'bar)" is equivalent to:

  (module-define! (current-module) 'foo 'bar)

or, at a lower-level:

  (module-add! (current-module) 'foo (make-variable 'bar))

But, just like "`eval' is evil", run-time symbol definition doesn't
sound right.  Surely, there are other ways that you could use to solve
your problem more elegantly.

Thanks,
Ludo'.





^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: Dynamic variable binding
@ 2008-11-12 22:37 dsmich
  0 siblings, 0 replies; 17+ messages in thread
From: dsmich @ 2008-11-12 22:37 UTC (permalink / raw)
  To: Ludovic Courtès; +Cc: guile-user

---- "Ludovic Courtès" <ludo@gnu.org> wrote: 
> Sebastian Tennant <sebyte@smolny.plus.com> writes:
> > What exactly happens when you 'define' a symbol?
> 
> But, just like "`eval' is evil", run-time symbol definition doesn't
> sound right.  Surely, there are other ways that you could use to solve
> your problem more elegantly.

Sebastian,  instead of trying to use Guiles symbol and module namespaces as a hashtable, why not just use a hashtable directly?  ;^)

-Dale




^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: Dynamic variable binding
  2008-11-12 19:53 Dynamic variable binding Sebastian Tennant
  2008-11-12 22:05 ` Ludovic Courtès
@ 2008-11-13  0:51 ` Keith Wright
  2008-12-19 11:50   ` Sebastian Tennant
  2008-11-13 11:33 ` Sebastian Tennant
  2 siblings, 1 reply; 17+ messages in thread
From: Keith Wright @ 2008-11-13  0:51 UTC (permalink / raw)
  To: sebyte; +Cc: guile-user

> From: Sebastian Tennant <sebyte@smolny.plus.com>
>
>  guile> (define-macro (definer var val)
>           `(define ,var ,val))
>  guile> (definer 'foo "bar")
>  guile> foo
>  ERROR: Unbound variable: foo
>  ABORT: (unbound-variable)
> 
> No doubt this fails for the same reason this does:
> 
>  guile> (define 'foo "bar")
>  guile> foo
>  ERROR: Unbound variable: foo
>  ABORT: (unbound-variable)
> 
> What exactly happens when you 'define' a symbol?

I don't know what happens (in Guile), but I can tell
you what _should_ happen.  (In my humble opinion as
a demi-god of semantics.)

Scheme> (define 'foo "bar")

at a very early stage (like in the reader) this is

Scheme> (define (quote foo) "bar")

There are several possiblities

(1) error message in define
  (1a) Rude: Thou fool! |quote| is not a variable
  (1b) Polite: If you are sure you want to do that,
       write out the quote, don't use apostrophe
  (1c) Obscure: Bad variable in def_schkdt

(2) Redefine quote
  (2a) In a new local scope: 'a is a call to procedure
       |quote| with argument the value of |a|, argument is
       evaluated, ignored, and 'a -> "bar" if |a| is defined.
  (2b) Hell breaks loose: All uses of |quote| in previously
       defined system procedures now have a new meaning.
       e.g. depending on exact code for |abs|, maybe
       (abs -3) -> "bar"

But you are asking the wrong question.  Ask not
what happens when a symbol is defined, ask what
you can do to make the macro define an unquoted
variable.

   -- Keith

PS: Experiments with an old version of Guile indicate (2).
To distinguish (2a) from (2b) would require work or knowledge.

guile> (version)
"1.6.4"
guile>  (define 'foo "bar")
guile> (quote 3)
"bar"
guile> '3
"bar"
guile> 'foo
standard input:6:4096: While evaluating arguments to quote in expression (quote foo):
standard input:6:4096: Unbound variable: foo
ABORT: (unbound-variable)




^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: Dynamic variable binding
  2008-11-12 19:53 Dynamic variable binding Sebastian Tennant
  2008-11-12 22:05 ` Ludovic Courtès
  2008-11-13  0:51 ` Keith Wright
@ 2008-11-13 11:33 ` Sebastian Tennant
  2008-11-13 18:50   ` Ludovic Courtès
  2 siblings, 1 reply; 17+ messages in thread
From: Sebastian Tennant @ 2008-11-13 11:33 UTC (permalink / raw)
  To: guile-user

Quoth Sebastian Tennant <sebyte@smolny.plus.com>:
Hi all,

Many thanks to all responders, especially to Ludo' for answering my
question directly.

The macro definition I was searching for is simply this:

 (define-macro (definer var val) ;var must be a symbol
   `(module-define! (current-module) ,var ,val))

Wrapped within a 'for-each' this macro allows me to bind as many
variables as a like in a single stroke.

Why not use the module namespace as a top-level hash table Dale?  Isn't
that essentially what a module namespace is, or at least what it's for?

Is there a really good reason to avoid doing this?

Apart from non-portablility, what difference does it make whether a
variable is bound using 'define' or my 'definer' macro?

Thanks once again.

Sebastian







^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: Dynamic variable binding
       [not found] <200811130428.mAD4SQbi030880@cm-mail.stanford.edu>
@ 2008-11-13 14:10 ` Kjetil S. Matheussen
  0 siblings, 0 replies; 17+ messages in thread
From: Kjetil S. Matheussen @ 2008-11-13 14:10 UTC (permalink / raw)
  To: guile-user


Sebastian Tennant:
>
> Hi all,
>
> An elementary scheme problem from an elementary schemer...
>
> I need to create multiple variable bindings from a list of symbols.  The
> value of the variables is unimportant.  It's the 'names' of the
> variables that matter.
>
> In pseudo-scheme code:
>
>  (map (lambda (v) (define (eval v) "foo") '(var1 var2 var3)))
>
> Clearly this won't work but I thought perhaps calling a macro in place
> of the 'define' would do it, but...
>

That's a common problem.
Maybe this is one good enough:

(define-macro (define-lotsof names value)
    `(begin
       ,@(map (lambda (name)
                 `(define ,name ,value))
              names)))

(define-lotsof (a b c) "foo")

If not, you may need to play with local-eval or similar.





^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: Dynamic variable binding
  2008-11-13 11:33 ` Sebastian Tennant
@ 2008-11-13 18:50   ` Ludovic Courtès
  2008-11-14  6:14     ` Sebastian Tennant
  0 siblings, 1 reply; 17+ messages in thread
From: Ludovic Courtès @ 2008-11-13 18:50 UTC (permalink / raw)
  To: guile-user

Hello,

Sebastian Tennant <sebyte@smolny.plus.com> writes:

> The macro definition I was searching for is simply this:
>
>  (define-macro (definer var val) ;var must be a symbol
>    `(module-define! (current-module) ,var ,val))
>
> Wrapped within a 'for-each' this macro allows me to bind as many
> variables as a like in a single stroke.
>
> Why not use the module namespace as a top-level hash table Dale?  Isn't
> that essentially what a module namespace is, or at least what it's for?
>
> Is there a really good reason to avoid doing this?

Dynamic binding definition is compilation-unfriendly.  Kjetil's proposed
`define-lotsof' macro is more appropriate, as it can be fully evaluated
at compile-time (should a compiler be used, that is), whereas the
`module-define!' trick requires that compilation and execution be the
one and same phase.

Thanks,
Ludo'.





^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: Dynamic variable binding
  2008-11-13 18:50   ` Ludovic Courtès
@ 2008-11-14  6:14     ` Sebastian Tennant
  2008-11-15 14:58       ` Jon Wilson
  0 siblings, 1 reply; 17+ messages in thread
From: Sebastian Tennant @ 2008-11-14  6:14 UTC (permalink / raw)
  To: guile-user

Quoth ludo@gnu.org (Ludovic Courtès):
> Dynamic binding definition is compilation-unfriendly.  Kjetil's
> proposed `define-lotsof' macro is more appropriate, as it can be fully
> evaluated at compile-time (should a compiler be used, that is),
> whereas the `module-define!' trick requires that compilation and
> execution be the one and same phase.

Ah, interesting.  Noted.  Thanks again (to Kjetil also).

Sebastian







^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: Dynamic variable binding
  2008-11-14  6:14     ` Sebastian Tennant
@ 2008-11-15 14:58       ` Jon Wilson
  2008-11-15 16:59         ` Sebastian Tennant
  0 siblings, 1 reply; 17+ messages in thread
From: Jon Wilson @ 2008-11-15 14:58 UTC (permalink / raw)
  To: guile-user

Sebastian Tennant wrote:
> Quoth ludo@gnu.org (Ludovic Courtès):
>> Dynamic binding definition is compilation-unfriendly.  Kjetil's
>> proposed `define-lotsof' macro is more appropriate, as it can be fully
>> evaluated at compile-time (should a compiler be used, that is),
>> whereas the `module-define!' trick requires that compilation and
>> execution be the one and same phase.
> 
> Ah, interesting.  Noted.  Thanks again (to Kjetil also).

Furthermore, the lack of separation between what is compiled and what is 
executed causes problems with defining a module system that understands 
hygiene.  It took me a while to understand this, but finally sitting 
down and grokking Matthew Flatt's paper "Compilable and Composable 
Macros: You Want it When?" got it through my skull.

http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.11.4008

Regards,
Jon





^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: Dynamic variable binding
  2008-11-15 14:58       ` Jon Wilson
@ 2008-11-15 16:59         ` Sebastian Tennant
  0 siblings, 0 replies; 17+ messages in thread
From: Sebastian Tennant @ 2008-11-15 16:59 UTC (permalink / raw)
  To: guile-user

Quoth Jon Wilson <jsw@wilsonjc.us>:
> Sebastian Tennant wrote:
>> Quoth ludo@gnu.org (Ludovic Courtès):
>>> Dynamic binding definition is compilation-unfriendly.  Kjetil's
>>> proposed `define-lotsof' macro is more appropriate, as it can be fully
>>> evaluated at compile-time (should a compiler be used, that is),
>>> whereas the `module-define!' trick requires that compilation and
>>> execution be the one and same phase.
>>
>> Ah, interesting.  Noted.  Thanks again (to Kjetil also).
>
> Furthermore, the lack of separation between what is compiled and what
> is executed causes problems with defining a module system that
> understands hygiene.  It took me a while to understand this, but
> finally sitting down and grokking Matthew Flatt's paper "Compilable
> and Composable Macros: You Want it When?" got it through my skull.
>
> http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.11.4008

This looks like a very useful (and comprehensive) paper.  Thanks.

Sebastian





^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: Dynamic variable binding
  2008-11-13  0:51 ` Keith Wright
@ 2008-12-19 11:50   ` Sebastian Tennant
  2008-12-19 13:03     ` Ludovic Courtès
  2008-12-20  0:17     ` Keith Wright
  0 siblings, 2 replies; 17+ messages in thread
From: Sebastian Tennant @ 2008-12-19 11:50 UTC (permalink / raw)
  To: guile-user

> Quoth Keith Wright <kwright@keithdiane.us>:
>> From: Sebastian Tennant <sebyte@smolny.plus.com>
>>
>>  guile> (define-macro (definer var val)
>>           `(define ,var ,val))
>>  guile> (definer 'foo "bar")
>>  guile> foo
>>  ERROR: Unbound variable: foo
>>  ABORT: (unbound-variable)
>> 
>> No doubt this fails for the same reason this does:
>> 
>>  guile> (define 'foo "bar")
>>  guile> foo
>>  ERROR: Unbound variable: foo
>>  ABORT: (unbound-variable)
>> 
>> What exactly happens when you 'define' a symbol?

> I don't know what happens (in Guile), but I can tell
> you what _should_ happen.  (In my humble opinion as
> a demi-god of semantics.)

I'm trying to wrap my head around symbols, variables and names of
variables.  They seem to me to be three different things.

> (define 'foo "bar")
>
> There are several possibilities
>
> (1) error message in define
>   (1a) Rude: Thou fool! |quote| is not a variable
>   (1b) Polite: If you are sure you want to do that,
>        write out the quote, don't use apostrophe
>   (1c) Obscure: Bad variable in def_schkdt

To be really semantically accurate should we not say:

(1a) Thou irrepressible fool! |quote| cannot be the _name_ of a variable.
(1c) Obscure: Bad variable _name_ in def_schkdt.

> But you are asking the wrong question.  Ask not
> what happens when a symbol is defined, ask what
> you can do to make the macro define an unquoted
> variable.

Answer: Pass it an unquoted variable.

 (define-macro (definer var val)
   `(define ,var ,val))
 =>
 (definer foo "bar")
 =>
 foo
 => "bar"

 :)

Is that the answer you expected?

My semantic point is that the first argument to definer (above) is not a
symbol and it's not a variable (an unbound variable error would be
thrown if it was), so in the context of the first agument to define
there is a third data type; 'variable name'.

Sebastian





^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: Dynamic variable binding
  2008-12-19 11:50   ` Sebastian Tennant
@ 2008-12-19 13:03     ` Ludovic Courtès
  2008-12-19 15:46       ` Sebastian Tennant
  2008-12-20  0:17     ` Keith Wright
  1 sibling, 1 reply; 17+ messages in thread
From: Ludovic Courtès @ 2008-12-19 13:03 UTC (permalink / raw)
  To: guile-user

Hi,

Sebastian Tennant <sebyte@smolny.plus.com> writes:

> My semantic point is that the first argument to definer (above) is not a
> symbol and it's not a variable (an unbound variable error would be
> thrown if it was), so in the context of the first agument to define
> there is a third data type; 'variable name'.

Beware: the term "variable" can refer to an object as returned by
`make-variable', `module-variable', etc., in Guile parlance (info
"(guile) Variables").

What happens with your `definer' macro is that the first argument of the
macro is a symbol (that is, during the *macro expansion* phase).  The
result of `definer' (an sexp) is then itself evaluated, so that symbol
becomes a reference to a variable (during the evaluation phase).

Thanks,
Ludo'.





^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: Dynamic variable binding
  2008-12-19 13:03     ` Ludovic Courtès
@ 2008-12-19 15:46       ` Sebastian Tennant
  0 siblings, 0 replies; 17+ messages in thread
From: Sebastian Tennant @ 2008-12-19 15:46 UTC (permalink / raw)
  To: guile-user

Quoth ludo@gnu.org (Ludovic Courtès):
> Hi,
>
> Sebastian Tennant <sebyte@smolny.plus.com> writes:
>
>> My semantic point is that the first argument to definer (above) is not a
>> symbol and it's not a variable (an unbound variable error would be
>> thrown if it was), so in the context of the first agument to define
>> there is a third data type; 'variable name'.
>
> Beware: the term "variable" can refer to an object as returned by
> `make-variable', `module-variable', etc., in Guile parlance (info
> "(guile) Variables").

Noted.

> What happens with your `definer' macro is that the first argument of the
> macro is a symbol (that is, during the *macro expansion* phase).  The
> result of `definer' (an sexp) is then itself evaluated, so that symbol
> becomes a reference to a variable (during the evaluation phase).

Thanks for your input Ludo.

I can't say I've fully grokked it yet but I'm spending _far_ too much
time on this, so I'm going to let it go for now :)

Seb







^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: Dynamic variable binding
  2008-12-19 11:50   ` Sebastian Tennant
  2008-12-19 13:03     ` Ludovic Courtès
@ 2008-12-20  0:17     ` Keith Wright
  2008-12-27 15:56       ` Sebastian Tennant
  1 sibling, 1 reply; 17+ messages in thread
From: Keith Wright @ 2008-12-20  0:17 UTC (permalink / raw)
  To: sebyte, guile-user

> From: Sebastian Tennant <sebyte@smolny.plus.com>
> 
> > Quoth Keith Wright <kwright@keithdiane.us>:
> 
> > I don't know what happens (in Guile), but I can tell
> > you what _should_ happen.  (In my humble opinion as
> > a demi-god of semantics.)
> 
> I'm trying to wrap my head around symbols, variables
> and names of variables.  They seem to me to be three
> different things.

NB: I hate emoticons.  The lack of a smiley face does
not imply seriousness.  This sort of thing has been
puzzling a lot of people for a long time.  In particular,
I published a paper about it some 25 years ago, but have
since decided that I don't know enough to be publishing.
That's why it's fun to rave on the mailing list.

> > (define 'foo "bar")
> >
> > There are several possibilities
> >
> > (1) error message in define
> >   (1a) Rude: Thou fool! |quote| is not a variable
> >   (1b) Polite: If you are sure you want to do that,
> >        write out the quote, don't use apostrophe
> >   (1c) Obscure: Bad variable in def_schkdt
> 
> To be really semantically accurate should we not say:
> 
> (1a) Thou irrepressible fool! |quote| cannot be
>      the _name_ of a variable.
> (1c) Obscure: Bad variable _name_ in def_schkdt.

I almost understand something about symbols and variables,
but the _name_ of a variable is not a technical term.
I don't name variables, I just call them "this variable"
or "that variable", or sometimes describe them as
the "local variable |foo|".

> > But you are asking the wrong question.  Ask not
> > what happens when a symbol is defined, ask what
> > you can do to make the macro define an unquoted
> > variable.
> 
> Answer: Pass it an unquoted variable.
> 
> Is that the answer you expected?

I am not sure I expected it, but it makes me feel good
to know that it works.

> My semantic point is that the first argument to
> definer (above) is not a symbol and it's not a
> variable (an unbound variable error would be thrown
> if it was), so in the context of the first agument to
> define there is a third data type; 'variable name'.

I am quite sure that it _is_ a variable, because the
Scheme report, in the section on Variable Definitions,
says:

   (define <variable> <expression>)
   ...define binds <variable> to a new location...

you yourself say "pass it an unquoted variable".

There is no unbound variable error, because the
whole point of |define| is to bind a variable.
It expects an unbound variable, but it must be
a variable or else it would not become a bound
variable after the |define| form binds it.

  -- Keith

"The name of the song is called 'Haddocks' eyes'."
"Oh, that's the name of the song, is it?"
 Alice said.
"No, you don't understand," the Knight said, looking
 a little vexed.
"That's what the name is _called_."

  -- Lewis Carroll, Through the Looking Glass and
     what Alice found there (1871)




^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: Dynamic variable binding
  2008-12-20  0:17     ` Keith Wright
@ 2008-12-27 15:56       ` Sebastian Tennant
  2008-12-28 22:56         ` Neil Jerram
  0 siblings, 1 reply; 17+ messages in thread
From: Sebastian Tennant @ 2008-12-27 15:56 UTC (permalink / raw)
  To: guile-user

Quoth Keith Wright <kwright@keithdiane.us>:
>> From: Sebastian Tennant <sebyte@smolny.plus.com>
>>> Quoth Keith Wright <kwright@keithdiane.us>:

>>> I don't know what happens (in Guile), but I can tell
>>> you what _should_ happen.  (In my humble opinion as
>>> a demi-god of semantics.)

>> I'm trying to wrap my head around symbols, variables
>> and names of variables.  They seem to me to be three
>> different things.

> NB: I hate emoticons.  The lack of a smiley face does
> not imply seriousness.  This sort of thing has been
> puzzling a lot of people for a long time.  In particular,
> I published a paper about it some 25 years ago, but have
> since decided that I don't know enough to be publishing.
> That's why it's fun to rave on the mailing list.

So... you're not a demi-god of semantics.  Damn.  I told all my friends
that you were.

> I almost understand something about symbols and variables, but the
> _name_ of a variable is not a technical term.  I don't name variables,
> I just call them "this variable" or "that variable", or sometimes
> describe them as the "local variable |foo|".

>>> But you are asking the wrong question.  Ask not what happens when a
>>> symbol is defined, ask what you can do to make the macro define an
>>> unquoted variable.

>> Answer: Pass it an unquoted variable.
>> 
>> Is that the answer you expected?

> I am not sure I expected it, but it makes me feel good to know that it
> works.

Pleased to be of service.

>> My semantic point is that the first argument to definer (above) is
>> not a symbol and it's not a variable (an unbound variable error would
>> be thrown if it was), so in the context of the first agument to
>> define there is a third data type; 'variable name'.
>
> I am quite sure that it _is_ a variable, because the Scheme report, in
> the section on Variable Definitions, says:
>
>    (define <variable> <expression>)
>    ...define binds <variable> to a new location...
>
> you yourself say "pass it an unquoted variable".

I thought about this obvious contradiction but decided the pith
outweighed the loss.

> "The name of the song is called 'Haddocks' eyes'."  "Oh, that's the
> name of the song, is it?"  Alice said.  "No, you don't understand,"
> the Knight said, looking a little vexed.  "That's what the name is
> _called_."

I wonder what song it was to which Haddock's Eyes referred.

Sebastian





^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: Dynamic variable binding
  2008-12-27 15:56       ` Sebastian Tennant
@ 2008-12-28 22:56         ` Neil Jerram
  2008-12-29 10:48           ` Sebastian Tennant
  0 siblings, 1 reply; 17+ messages in thread
From: Neil Jerram @ 2008-12-28 22:56 UTC (permalink / raw)
  To: Sebastian Tennant; +Cc: guile-user

2008/12/27 Sebastian Tennant <sebyte@smolny.plus.com>:
> Quoth Keith Wright <kwright@keithdiane.us>:
>
>> "The name of the song is called 'Haddocks' eyes'."  "Oh, that's the
>> name of the song, is it?"  Alice said.  "No, you don't understand,"
>> the Knight said, looking a little vexed.  "That's what the name is
>> _called_."
>
> I wonder what song it was to which Haddock's Eyes referred.

I'm not sure if you're being tongue-in-cheek here or not....

If you are, the answer (as far as I remember) is that Alice and the
Knight didn't mention anything about referring to.

If you're not, the answer is that it's the poem beginning (from
memory) "I saw an aged, aged man, a-sitting on a gate".

Regards,
      Neil




^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: Dynamic variable binding
  2008-12-28 22:56         ` Neil Jerram
@ 2008-12-29 10:48           ` Sebastian Tennant
  0 siblings, 0 replies; 17+ messages in thread
From: Sebastian Tennant @ 2008-12-29 10:48 UTC (permalink / raw)
  To: guile-user

Quoth "Neil Jerram" <neiljerram@googlemail.com>:
> 2008/12/27 Sebastian Tennant <sebyte@smolny.plus.com>:
>> Quoth Keith Wright <kwright@keithdiane.us>:
>>
>>> "The name of the song is called 'Haddocks' eyes'."  "Oh, that's the
>>> name of the song, is it?"  Alice said.  "No, you don't understand,"
>>> the Knight said, looking a little vexed.  "That's what the name is
>>> _called_."
>>
>> I wonder what song it was to which Haddock's Eyes referred.
>
> I'm not sure if you're being tongue-in-cheek here or not....

I am, and I'm not.

> If you are, the answer (as far as I remember) is that Alice and the
> Knight didn't mention anything about referring to.

Ha! :)  I'm not even going to try and counter that argument.

> If you're not, the answer is that it's the poem beginning (from
> memory) "I saw an aged, aged man, a-sitting on a gate".

That's it!  I've had enough.  I'm going to go home and find my copy.  I
can't bear it any longer :)

Seb





^ permalink raw reply	[flat|nested] 17+ messages in thread

end of thread, other threads:[~2008-12-29 10:48 UTC | newest]

Thread overview: 17+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2008-11-12 19:53 Dynamic variable binding Sebastian Tennant
2008-11-12 22:05 ` Ludovic Courtès
2008-11-13  0:51 ` Keith Wright
2008-12-19 11:50   ` Sebastian Tennant
2008-12-19 13:03     ` Ludovic Courtès
2008-12-19 15:46       ` Sebastian Tennant
2008-12-20  0:17     ` Keith Wright
2008-12-27 15:56       ` Sebastian Tennant
2008-12-28 22:56         ` Neil Jerram
2008-12-29 10:48           ` Sebastian Tennant
2008-11-13 11:33 ` Sebastian Tennant
2008-11-13 18:50   ` Ludovic Courtès
2008-11-14  6:14     ` Sebastian Tennant
2008-11-15 14:58       ` Jon Wilson
2008-11-15 16:59         ` Sebastian Tennant
  -- strict thread matches above, loose matches on Subject: below --
2008-11-12 22:37 dsmich
     [not found] <200811130428.mAD4SQbi030880@cm-mail.stanford.edu>
2008-11-13 14:10 ` Kjetil S. Matheussen

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).