Super! - thank Alex.

On Fri, Feb 9, 2024 at 11:17 AM Alexander Burger <picolisp@software-lab.de>
wrote:

> Hi Kashyap,
>
> > Does this look like a reasonable way to create the "create-adder"
> function?
> >
> > (de create-adder Args
> >    (let
> >       (N (car Args)
> >          Adder (intern (pack "add-" N))
> >          P
> >          (list
> >             'de
> >             Adder
> >             '(X)
> >             (list '+ N 'X) ) )
> >       (eval P) ) )
> >
> > : (create-adder 10)
> > -> add-10
> > : (add-10 20)
> > -> 30
>
> Yes, but you can do it a little simpler by directly calling 'def':
>
>    (de create-adder (N)
>       (def (intern (pack "add-" N))
>          (list '(X) (list '+ N 'X)) ) )
>
> Note also that I use (N), i.e. an evaluated argument, as this makes the
> function
> more general.
>
>
> Even simpler if you use 'curry':
>
>    (de create-adder (@N)
>       (def (intern (pack "add-" @N))
>          (curry (@N) (X)
>             (+ @N X) ) ) )
>
> It is especially simpler if the function body, which is here just (+ N X),
> is
> more complicated, because then the 'list'ing and 'cons'ing of the body
> would
> become very unreadable.
>
>
> > If I understand correctly, the "macro" capability of miniPicoLisp is not
> at
> > par with PicoLisp right?
>
> The 'macro' function of mini and normal PicoLisp is the same I think.
>
> ☺/ A!ex
>
> --
> UNSUBSCRIBE: mailto:picolisp@software-lab.de?subject=Unsubscribe
>

Reply via email to