Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Functions as arguments in xlisp

11 views
Skip to first unread message

Doug Nelson

unread,
Apr 13, 1998, 3:00:00 AM4/13/98
to

Can someone explain to me why the following does not work in xlisp 3.02?

> (defun dof (f a b) (f a b))
dof
> (dof #'+ 2 3)
error: unbound function - f
if continued: try evaluating symbol again
1>

In an older DOS version of xlisp, I get the expected answer:
> (defun dof (f a b) (f a b))
DOF
> (dof #'+ 2 3)
5
>

I'm stumped.
Doug


David Betz

unread,
Apr 13, 1998, 3:00:00 AM4/13/98
to

It must have been a *very* old DOS version of xlisp. The problem is that
there is a different namespace for functions and variables. To call a
function passed in as an argument you need to use funcall:

(defun dof (f a b) (funcall f a b))

--
David Betz
db...@xlisper.mv.com

Erik Naggum

unread,
Apr 13, 1998, 3:00:00 AM4/13/98
to

* Doug Nelson

| Can someone explain to me why the following does not work in xlisp 3.02?

I'll take a wild guess.

| > (defun dof (f a b) (f a b))
| dof
| > (dof #'+ 2 3)
| error: unbound function - f
| if continued: try evaluating symbol again
| 1>

(defun dof (f a b) (funcall f a b)) should work. I guess xlisp 3.02
adheres to the standard Lisp way of not evaluating the functional
position in a form.

| In an older DOS version of xlisp, I get the expected answer:

this is the standard Scheme way, and I think you could only expect that
answer if you were thinking in Scheme terms.

#:Erik
--
religious cult update in light of new scientific discoveries:
"when we cannot go to the comet, the comet must come to us."

0 new messages