[CM] determining existence of function
rm@fabula.de
rm@fabula.de
Sat, 2 Oct 2004 17:14:33 +0200
On Sat, Oct 02, 2004 at 03:20:48AM -0400, Terrence Brannon wrote:
> I defined the function row->matrix via C-x C-e and then went to the
> Listener and attempted to verify that I did by typing row->matrix into the
> Listener window. With most Schemes I have used, I get something like:
> #<function row->matrix>
>
> But with guile-scheme I got this:
>
> CM[1]>
> CM[2]>
> CM[3]> row->matrix
>
> *** - EVAL: variable ROW->MATRIX has no value
??? That doesn't look like Guile at all! That looks like some
sort of LISP.
> The following restarts are available:
> STORE-VALUE :R1 You may input a new value for ROW->MATRIX.
> USE-VALUE :R2 You may input a value to be used instead of
> ROW->MATRIX.
>
> *** - UNIX error 13 (EACCES): Permission denied
> The following restarts are available:
> STORE-VALUE :R1 You may input a new value for ROW->MATRIX.
> USE-VALUE :R2 You may input a value to be used instead of
> ROW->MATRIX.
Bo, that's a condition system unheard of in Guile - CLISP maybe?
>
> Break 1 CM[4]> (pprint (row->matrix albans-row))
>
> ((0 3 7 11 2 5 9 1 4 6 8 10) (9 0 4 8 11 2 6 10 1 3 5 7)
> (5 8 0 4 7 10 2 6 9 11 1 3) (1 4 8 0 3 6 10 2 5 7 9 11)
> (10 1 5 9 0 3 7 11 2 4 6 8) (7 10 2 6 9 0 4 8 11 1 3 5)
> (3 6 10 2 5 8 0 4 7 9 11 1) (11 2 6 10 1 4 8 0 3 5 7 9)
> (8 11 3 7 10 1 5 9 0 2 4 6) (6 9 1 5 8 11 3 7 10 0 2 4)
> (4 7 11 3 6 9 1 5 8 10 0 2) (2 5 9 1 4 7 11 3 6 8 10 0))
>
> Break 1 CM[4]>
>
> ====
> the fact that I can run the function implies that the C-x C-e on the
> function definition did in fact define it. However, I do not understand why
> I could test for the existence of the function by typing it into the REPL.
Iff this is in fact a LISP you are working with you can try:
CM[1]> #'row->matrix
which is just a convenient reader macro for
CM[2]> (symbol-function 'row->matrix)
HTH Ralf Mattes