Page 1 of 1

error in 'letn'

Posted: Mon Jan 09, 2006 7:07 am
by Fanda
It looks that there is an error in 'letn':

Code: Select all

(define (test1)
  (let (arg (args))
    (println "arg  = " arg)))

(define (test2)
  (letn (arg (args) rarg (reverse arg))
    (println "arg  = " arg)
    (println "rarg = " rarg)))

(test1 1 2)
(println)
(test2 1 2)
Output:

Code: Select all

arg  = (1 2)

arg  = (2 1)
rarg = (2 1)
I believe that 'test2' should return:

Code: Select all

arg  = (1 2)
rarg = (2 1)
Fanda

PS: I am using newLISP v.8.7.7 on Win32 MinGW.

Posted: Mon Jan 09, 2006 7:14 am
by Dmi
reverse is destructive function - arg is modified by it.

Posted: Mon Jan 09, 2006 9:15 am
by Fanda
Oh, I didn't know that! Thanks!

Fanda