From: Angel P. <ang...@ya...> - 2010-04-30 14:18:09
|
Hi, The latest clisp with ffi and libsigsegv on windows and ubuntu 64 hangs when[1]> (mapcon #'(lambda (x) (print x)) '(1 2 3 4)) (1 2 3 4) (2 3 4) *** - Ctrl-C: User break The following restarts are available: ABORT :R1 Abort main loop Break 1 [2]> Regards, AngelP |
From: Stas B. <sta...@gm...> - 2010-04-30 14:37:25
|
Angel Popov <ang...@ya...> writes: > Hi, > > > The latest clisp with ffi and libsigsegv on windows and ubuntu 64 hangs when > > [1]> (mapcon #'(lambda (x) (print x)) '(1 2 3 4)) > > (1 2 3 4) > (2 3 4) > *** - Ctrl-C: User break > The following restarts are available: > ABORT :R1 Abort main loop > Break 1 [2]> > You're creating a circular list. mapcon uses nconc to concatenate lists. Consider (nconc list (cdr list)), the last cdr of list will point to the second cdr, that's a cycle. -- With Best Regards, Stas. |
From: Sam S. <sd...@gn...> - 2010-04-30 14:58:57
|
Angel Popov wrote: > [1]> (mapcon #'(lambda (x) (print x)) '(1 2 3 4)) > > (1 2 3 4) > (2 3 4) > *** - Ctrl-C: User break > The following restarts are available: > ABORT :R1 Abort main loop > Break 1 [2]> mapcon calls nconc which modifies its arguments, producing a circular list on which is cannot operate. use either (ext:maplap #'(lambda (x) (print x)) '(1 2 3 4)) or (mapcon #'(lambda (x) (copy-list (print x))) '(1 2 3 4)) both print (1 2 3 4) (2 3 4) (3 4) (4) and return (1 2 3 4 2 3 4 3 4 4) http://clisp.cons.org/impnotes/faq.html#faq-self-mod http://clisp.cons.org/impnotes/faq.html#faq-fine |
From: Angel P. <ang...@ya...> - 2010-04-30 18:00:25
|
Thanks! --- On Fri, 30/4/10, Sam Steingold <sd...@gn...> wrote: From: Sam Steingold <sd...@gn...> Subject: Re: hang on (mapcon #'(lambda (x) (print x)) '(1 2 3 4)) To: "Angel Popov" <ang...@ya...> Cc: "cdev" <cli...@li...> Date: Friday, 30 April, 2010, 5:58 PM Angel Popov wrote: > [1]> (mapcon #'(lambda (x) (print x)) '(1 2 3 4)) > > (1 2 3 4) > (2 3 4) > *** - Ctrl-C: User break > The following restarts are available: > ABORT :R1 Abort main loop > Break 1 [2]> mapcon calls nconc which modifies its arguments, producing a circular list on which is cannot operate. use either (ext:maplap #'(lambda (x) (print x)) '(1 2 3 4)) or (mapcon #'(lambda (x) (copy-list (print x))) '(1 2 3 4)) both print (1 2 3 4) (2 3 4) (3 4) (4) and return (1 2 3 4 2 3 4 3 4 4) http://clisp.cons.org/impnotes/faq.html#faq-self-mod http://clisp.cons.org/impnotes/faq.html#faq-fine |
From: Sam S. <sd...@gn...> - 2010-04-30 18:23:49
|
Angel Popov wrote: > Thanks! you are welcome. note that you now owe 10 zorkmids to Stas Boukarev. :-) > http://clisp.cons.org/impnotes/faq.html#faq-fine |
From: Angel P. <ang...@ya...> - 2010-05-03 10:21:06
|
I do! :-) --- On Fri, 30/4/10, Sam Steingold <sd...@gn...> wrote: From: Sam Steingold <sd...@gn...> Subject: Re: hang on (mapcon #'(lambda (x) (print x)) '(1 2 3 4)) To: "Angel Popov" <ang...@ya...> Cc: "clisp-devel" <cli...@li...> Date: Friday, 30 April, 2010, 9:23 PM Angel Popov wrote: > Thanks! you are welcome. note that you now owe 10 zorkmids to Stas Boukarev. :-) > http://clisp.cons.org/impnotes/faq.html#faq-fine |