Page 1 of 1

How to translate this Common LISP code in newLisp?

Posted: Mon Oct 26, 2009 1:27 pm
by ale870
Hello,

I was reading an article on an italian magazine, and I found the following code:

Code: Select all

(defun foo (n)
   (lambda (i) (incf n i)))
Well, this is an accumulator, and it returns another function that takes another number "i" and return "n" increased by "i".

Can you help me?

Thank you!

Re: How to translate this Common LISP code in newLisp?

Posted: Mon Oct 26, 2009 1:32 pm
by ale870
Maybe can I use "curry" function? Is this good way to follow?

Re: How to translate this Common LISP code in newLisp?

Posted: Mon Oct 26, 2009 1:53 pm
by Lutz
newLISP uses namespaces instead of closures in Common Lisp

Code: Select all

> (define (acc:acc i) (inc acc:value i))
(lambda (i) (inc acc:value i))

> (acc 1)
1
> (acc 3)
4
> (acc 6)
10
> 
see also: http://www.newlisp.org/downloads/newlis ... unc_memory

Re: How to translate this Common LISP code in newLisp?

Posted: Mon Oct 26, 2009 2:02 pm
by ale870
Thank you Lutz, I forgot that article!

I noticed you no more include "if" statement. I think using "if" is more clear, but the example you sent me before is better for standard Lisp comparison (closures).
Maybe you could include it in the official documentation.
I think even a small article in the official PDF document about closures could be useful too...

Thank you!

Re: How to translate this Common LISP code in newLisp?

Posted: Mon Oct 26, 2009 2:20 pm
by Lutz