Re: build-lexical-var vs. -Wunused-variable

2012-03-01 Thread Ludovic Courtès
Hello! Mark H Weaver m...@netris.org skribis: Andy Wingo wi...@pobox.com writes: On Fri 17 Feb 2012 12:00, l...@gnu.org (Ludovic Courtès) writes: Commit f9685f437312ea790981373ddc375b2a26ba9c4f changes ‘build-lexical-var’ like this: (define-syntax-rule (build-lexical-var src id) -

Re: wip-threads-and-fork

2012-03-01 Thread Ludovic Courtès
Hi! Andy Wingo wi...@pobox.com skribis: The solution is, besides just avoiding fork() and threads, to take locks on all interesting data structures when you fork(). Fortunately there are not too many, and most locks are not nested, so it seems to be a doable thing. In wip-threads-and-fork,

Re: wip-threads-and-fork

2012-03-01 Thread Ludovic Courtès
Hi! Andy Wingo wi...@pobox.com skribis: On Sun 26 Feb 2012 23:00, l...@gnu.org (Ludovic Courtès) writes: [...] When the only threads are the main thread and the signal thread, everything’s alright. For example, this works fine on GNU/Linux: (let ((p (primitive-fork))) (case p

Re: wip-threads-and-fork

2012-03-01 Thread Ludovic Courtès
Hi, Andy Wingo wi...@pobox.com skribis: On Sun 26 Feb 2012 23:03, l...@gnu.org (Ludovic Courtès) writes: Andy Wingo wi...@pobox.com skribis: + if (scm_ilength (scm_all_threads ()) != 1) +/* Other threads may be holding on to resources that Guile needs -- + it is not

[PATCH] tree-il-scheme improvements

2012-03-01 Thread Mark H Weaver
Hello all, Here's a significantly refactored version of my 'tree-il-scheme' improvements. In addition the previous features, it can now produce 'case' statements, named-let, internal defines, procedure documentation strings, and various other improvements. It now works mostly in a bottom-up

Re: [PATCH] tree-il-scheme improvements

2012-03-01 Thread Mark H Weaver
I wrote: Here's a significantly refactored version of my 'tree-il-scheme' improvements. and here are the actual patches, with the psyntax-pp.scm portions removed. make -C module ice-9/psyntax-pp.scm.gen to regenerate. Mark From bcd0547d8ab602b6d94f3cba29982e037a6b7505 Mon Sep 17

Non-stack-copying call-with-current-continuation?

2012-03-01 Thread David Kastrup
Hi, I am just meddling around with coding and have come up with the following: (define-public (find-child music predicate) Find the first node in @var{music} that satisfies @var{predicate}. (catch 'music-found (lambda () (fold-some-music predicate

Re: Non-stack-copying call-with-current-continuation?

2012-03-01 Thread Noah Lavine
If I understand correctly, you only need to call the continuation once. Is that right? In that case, I think you could use either catch and throw or prompts. (And catch and throw are implemented with prompts, so really, you can just choose how you want to use prompts.) Noah On Thu, Mar 1, 2012

Re: Non-stack-copying call-with-current-continuation?

2012-03-01 Thread David Kastrup
Noah Lavine noah.b.lav...@gmail.com writes: On Thu, Mar 1, 2012 at 7:00 PM, David Kastrup d...@gnu.org wrote: Hi, I am just meddling around with coding and have come up with the following: (define-public (find-child music predicate)  Find the first node in @var{music} that satisfies

Re: Non-stack-copying call-with-current-continuation?

2012-03-01 Thread Noah Lavine
Oh yes, you're right. I'm sorry I missed it. I believe you can do it hygienically though. With prompts, you can use (make-prompt-tag) to generate a new, unique tag. With catch and throw, you could use (gensym) to do the same thing. You first example would become something like (define-public

Re: Non-stack-copying call-with-current-continuation?

2012-03-01 Thread Nala Ginrut
On Fri, Mar 2, 2012 at 8:00 AM, David Kastrup d...@gnu.org wrote: Hi, I am just meddling around with coding and have come up with the following: (define-public (find-child music predicate) Find the first node in @var{music} that satisfies @var{predicate}. (catch 'music-found

Re: Non-stack-copying call-with-current-continuation?

2012-03-01 Thread Noah Lavine
Hello, IIRC, the stack copying in Guile's continuation implementation is inevitable. Though it's inefficient, the consideration is to cooperate with other languages such as C. It's inevitable in the general case, where the continuation might return multiple times. However, in this situation,

Re: Non-stack-copying call-with-current-continuation?

2012-03-01 Thread David Kastrup
Noah Lavine noah.b.lav...@gmail.com writes: Oh yes, you're right. I'm sorry I missed it. I believe you can do it hygienically though. With prompts, you can use (make-prompt-tag) to generate a new, unique tag. With catch and throw, you could use (gensym) to do the same thing. You first

Re: Non-stack-copying call-with-current-continuation?

2012-03-01 Thread Noah Lavine
Hello, Sure, but things like gensym and make-prompt-tag (and (list '()) for creating an eq?-unique object) are artificial hygiene coming at a cost in symbol table and symbol generation time rather than lexical hygiene.  They need _extra_ work, whereas the call-with-current-continuation

Re: [PATCH] tree-il-scheme improvements

2012-03-01 Thread Noah Lavine
This is great! Thanks for improving this so much. Noah On Thu, Mar 1, 2012 at 6:40 PM, Mark H Weaver m...@netris.org wrote: I wrote: Here's a significantly refactored version of my 'tree-il-scheme' improvements. and here are the actual patches, with the psyntax-pp.scm portions removed.