diff options
-rw-r--r-- | lisp/ChangeLog | 6 | ||||
-rw-r--r-- | lisp/language/ind-util.el | 25 |
2 files changed, 14 insertions, 17 deletions
diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 84b34303223..99f0cf80fea 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,9 @@ +2009-08-24 Kenichi Handa <handa@m17n.org> + + * language/ind-util.el (mapthread): Delete it. + (combinatorial): New function. + (indian--puthash-cv): Use combinatorial instead of mapthread. + 2009-08-22 Kevin Ryde <user42@zip.com.au> * emacs-lisp/checkdoc.el (checkdoc-force-history-flag) diff --git a/lisp/language/ind-util.el b/lisp/language/ind-util.el index 59e3c834087..e47884baa94 100644 --- a/lisp/language/ind-util.el +++ b/lisp/language/ind-util.el @@ -382,21 +382,12 @@ (;; misc nil ".m" ".h" "'" nil "." nil))) -(defun mapthread (function seq1 &rest seqrest) - "Apply FUNCTION to each element of SEQ1 and return result list. -If there are several SEQRESTs, FUNCTION is called with that many -arguments, with all possible combinations of these multiple SEQUENCES. -Thus, if SEQ1 contains 3 elements and SEQ2 contains 5 elements, then -FUNCTION will be called 15 times." - (if seqrest - (mapcar - (lambda (x) - (apply - 'mapthread - `(lambda (&rest y) (apply ',function x y)) - seqrest)) - seq1) - (mapcar function seq1))) +(defun combinatorial (head &rest tail) + (if tail + (apply 'append + (mapcar (lambda (y) (mapcar (lambda (x) (cons x y)) head)) + (apply 'combinatorial tail))) + (mapcar 'list head))) (defun indian--puthash-char (char trans-char hashtbls) (let ((encode-hash (car hashtbls)) ;; char -> trans @@ -446,8 +437,8 @@ FUNCTION will be called 15 times." (if (stringp trans-v) (setq trans-v (list trans-v))) (indian--puthash-char (concat c v) - (apply 'append - (mapthread 'concat trans-c trans-v)) + (mapcar (lambda (x) (apply 'concat x)) + (combinatorial trans-c trans-v)) hashtbls))) v trans-v)) c trans-c)) |