# HG changeset patch # User Kenichi Handa # Date 1251114132 0 # Node ID d89a78ae1c543be3d5a77b5c2902929d5434a5bd # Parent 0a6b066cacd4e32e7e7a6d90663ec320b3b79d49 (mapthread): Delete it. (combinatorial): New function. (indian--puthash-cv): Use combinatorial instead of mapthread. diff -r 0a6b066cacd4 -r d89a78ae1c54 lisp/language/ind-util.el --- a/lisp/language/ind-util.el Mon Aug 24 04:50:07 2009 +0000 +++ b/lisp/language/ind-util.el Mon Aug 24 11:42:12 2009 +0000 @@ -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 @@ (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))