Hi Attila,
Thanks for the patches. I've looked them over.
Attila Lendvai attila.lendvai@gmail.com writes: [...]
Subject: [PATCH] don't abbreviate in integer &key max-len. also propagate them to make them usable as (foo (integer :max-length 2))
Propagation looks good.
However, why do you feel the need to rename max-len and min-len? They are used already and there are still many variables called x-len . . .
I guess I should add specialised float matchers too.
[...]
Subject: [PATCH] some care for replace.lisp, notably get rid of the single usage of iterate
What's wrong with iterate?
You change it to an nreverse!
[...]
-(defmacro match-replace-helper ( string &rest match-replacements) +(defmacro match-replace-helper (string &body match-replacements)
Why are you using BODY here for a non-code form?
- (with-unique-names (before replacement-text after)
- `(let (,replacement-text)
(if-match-bind (,before (or
,@(loop for (match replacement) in match-replacements
collect `(progn ,match '(setf ,replacement-text (force-to-target-sequence ,replacement))))
(last))
,after)
,string
(values ,before ,replacement-text ,after)
nil))))
-(defun-speedy concat-byte-vector (seqs)
- (cond ((rest seqs)
(let ((len (loop for s in seqs summing (length (the byte-vector s)))))
(let ((ret (make-byte-vector len)) (i 0))
(loop for a in seqs do (let ((s (force-simple-byte-vector a))) (replace ret s :start1 i) (incf i (length s))))
ret)))
- (t
(force-byte-vector (first seqs)))))
-(defun-speedy concat-string (seqs)
- (apply 'concatenate 'string seqs))
+(defun-speedy concatenate-sequences (prototype sequences)
- (etypecase prototype
- (string
(let ((*print-pretty* nil))
This makes no difference I believe ^^^^
(with-output-to-string (out)
(dolist (el sequences)
(write-string el out)))))
This rewrite seems in aid of faster string concatenation. I have a good strcat somewhere, I can put that in. Do you have a benchmark?
[...]