list of functions question

Started by borisT, January 30, 2019, 07:45:32 AM

Previous topic - Next topic

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:


(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:
Quotegetting func

calling func



ERR: invalid function : (afunc)


Could anyone explain what I'm, doing wrong?

Thanks.

rrq

#1
(funclist 2) is the symbol myfunc, and not its "value", which is the function.

Thus, you would need to use (set 'afunc (eval (funclist 2))) so as to make afunc be a copy of the function named by the (funclist 2) symbol.

borisT

#2
Makes sense. Thanks for that.

newBert

#3
(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))
<r><I>>Bertrand<e></e></I> − <COLOR color=\"#808080\">><B>newLISP<e></e></B> v.10.7.6 64-bit <B>>on Linux<e></e></B> (<I>>Linux Mint 20.1<e></e></I>)<e></e></COLOR></r>