Hi,

Mike Gran <[EMAIL PROTECTED]> writes:

> For example, how can I write a function that prints its own name?

In Scheme, functions are first-class objects that are not necessarily
bound to a top-level name.  For instance, a `lambda' is nameless:

  (lambda args
    ...)

Thus, there is no generic, portable way to find the symbol under which a
procedure is bound (_if_ it's bound).  But...

> Or, what is the scheme version of the following C code

In Guile, "primitive procedures" (i.e., procedures written in C) have
their "official" name recorded in them.  For instance:

  guile> 1+
  #<primitive-procedure 1+>
  guile> (procedure-name 1+)
  1+

Happily, it also works with regular procedures defined with `define':

  guile> (define (f x) x)  
  guile> (procedure-name f)
  f

... but doesn't work with lambdas:

  guile> (procedure-name (lambda args args))
  #f

As for the file name and line number, you can in theory get them
(provided Guile runs in "debug" mode) using `procedure-source' and
`source-properties', although the details escape me now.

Thanks,
Ludovic.



_______________________________________________
Guile-user mailing list
Guile-user@gnu.org
http://lists.gnu.org/mailman/listinfo/guile-user

Reply via email to