This is how I did it where the argument to the canned/passed in function is
supplied as a symbol...
(de x2 (Num) (setq Res (* Num 2)))
(de fnfn (Canned_fn)
   #(setq X (car (cdr Canned_fn))) ((car Canned_fn) (eval X)))
   #replaced by single stage...
   ((car Canned_fn) (eval (car (cdr Canned_fn)))))
(setq Some_num 4)
(prinl (fnfn '(x2 Some_num))) #->8

Hope this is ok

On 20 January 2017 at 19:20, dean <deangwillia...@gmail.com> wrote:

> Thank you Alex...that's great.
> I just came back to say that the above worked well for both strings and
> numbers entered directly as the passed functions argument but not (it seems
> :) ) for when the argument is supplied in a symbol. eval might well cope
> with that and if not...I'll work on it.
>
> Note, btw, that (car (cdr X)) can be simplified to (cadr X)
>
> I thought that initially too but as you can see here (cdr Canned_fn) gives
> a problem
> whereas (car (cdr Canned_fn)) removes the parens that get put around Num.
> I don't need the car for a string argument in another example so...
> there could well be something wrong with this example
>
> (de x2 (Num) (setq Res (* Num 2)))
> (de fnfn (Canned_fn) (wait 1000)
>    ((car Canned_fn) (cdr Canned_fn))) #calling a canned fn passed as arg
> (prinl (x2 3)) #testing straight fn call -> 6
> (prinl (fnfn '(x2 4))) #calling x2 as canned fn->8
>
> Best Regards
> Dean
>
> On 20 January 2017 at 18:55, Alexander Burger <a...@software-lab.de> wrote:
>
>> On Fri, Jan 20, 2017 at 06:26:14PM +0000, dean wrote:
>> > I seem to be able to do this by....
>> > (de some_fn (Canned_fn_and_arg......
>> >
>> > and then executing the Canned_fn_and_arg inside some_fn by doing....
>> > ((car Canned_fn) (car (cdr Canned_fn)))
>> >
>> > Is this the right way or is there a slicker one?
>>
>> It depends on how 'Canned_fn_and_arg' looks like.
>>
>>
>> I suspect that instead of
>>
>>    ((car Canned_fn) (car (cdr Canned_fn)))
>>
>> you could just call
>>
>>    (eval Canned_fn)
>>
>> ♪♫ Alex
>>
>>
>> Note, btw, that (car (cdr X)) can be simplified to (cadr X)
>> --
>> UNSUBSCRIBE: mailto:picolisp@software-lab.de?subject=Unsubscribe
>>
>
>

Reply via email to