summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lisp/ChangeLog6
-rw-r--r--lisp/language/ind-util.el25
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))