list of functions question

Q&A's, tips, howto's
Locked
borisT
Posts: 6
Joined: Wed Jan 30, 2019 8:39 am

list of functions question

Post by borisT »

I'm a newbie, I'm trying to write some code that will select and run a function from a list of functions
Typically I'm doing something like this:

Code: Select all

(define (myfunc) (println "this is myfunc"))
	 
;; define a list of functions
(set 'funclist '(myfunc myfunc myfunc myfunc myfunc))

;; get and run the nth = 2 item of the list
(println "getting func")
(set 'afunc (funclist 2))
(println "calling func ")

(afunc)
Whatever I try I usully get the following error message:
getting func
calling func

ERR: invalid function : (afunc)
Could anyone explain what I'm, doing wrong?
Thanks.

ralph.ronnquist
Posts: 228
Joined: Mon Jun 02, 2014 1:40 am
Location: Melbourne, Australia

Re: list of functions question

Post by ralph.ronnquist »

(funclist 2) is the symbol myfunc, and not its "value", which is the function.
Thus, you would need to use

Code: Select all

(set 'afunc (eval (funclist 2)))
so as to make afunc be a copy of the function named by the (funclist 2) symbol.

borisT
Posts: 6
Joined: Wed Jan 30, 2019 8:39 am

Re: list of functions question

Post by borisT »

Makes sense. Thanks for that.

newBert
Posts: 156
Joined: Fri Oct 28, 2005 5:33 pm
Location: France

Re: list of functions question

Post by newBert »

(With some delay...)
I think we could also write: (set 'funclist (list myfunc myfunc myfunc myfunc myfunc)), so we don't need ‘eval’ in (set 'afunc (funclist 2))
BertrandnewLISP v.10.7.6 64-bit on Linux (Linux Mint 20.1)

Locked