[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH 2/6] ELF refactor and consequent linker simplifications
From: |
Andy Wingo |
Subject: |
Re: [PATCH 2/6] ELF refactor and consequent linker simplifications |
Date: |
Thu, 23 May 2013 10:47:05 +0200 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/24.2 (gnu/linux) |
On Wed 22 May 2013 22:44, address@hidden (Ludovic Courtès) writes:
>> -(define (fold2 proc ls s0 s1)
>> - (let lp ((ls ls) (s0 s0) (s1 s1))
>> - (if (null? ls)
>> - (values s0 s1)
>> - (receive (s0 s1) (proc (car ls) s0 s1)
>> - (lp (cdr ls) s0 s1)))))
>> -
>> (define (fold4 proc ls s0 s1 s2 s3)
>> (let lp ((ls ls) (s0 s0) (s1 s1) (s2 s2) (s3 s3))
>> (if (null? ls)
>> @@ -236,15 +231,9 @@
>> (receive (s0 s1 s2 s3) (proc (car ls) s0 s1 s2 s3)
>> (lp (cdr ls) s0 s1 s2 s3)))))
>>
>> -(define (fold5 proc ls s0 s1 s2 s3 s4)
>> - (let lp ((ls ls) (s0 s0) (s1 s1) (s2 s2) (s3 s3) (s4 s4))
>> - (if (null? ls)
>> - (values s0 s1 s2 s3 s4)
>> - (receive (s0 s1 s2 s3 s4) (proc (car ls) s0 s1 s2 s3 s4)
>> - (lp (cdr ls) s0 s1 s2 s3 s4)))))
>
> What about moving these to a helper module eventually?
Sure. Or maybe a fold-values that takes a variable number of arguments and
inlines itself...
(define-syntax fold-values
(lambda (x)
(syntax-case x ()
((_ proc list seed ...)
(with-syntax (((s ...) (generate-temporaries #'(seed ...))))
#'(let ((p proc))
(let lp ((l list) (s seed) ...)
(match l
(() (values s ...))
((elt . l)
(call-with-values (lambda () (p elt s ...))
(lambda (s ...)
(lp l s ...))))))))))))
I'll do that :)
A
--
http://wingolog.org/
[PATCH 3/6] elf: add accessors for header members that might need relocation, Andy Wingo, 2013/05/18