2ちゃんねる ★スマホ版★ ■掲示板に戻る■ 全部 1- 最新50  

【入門】Common Lisp その10【質問よろず】

482 :デフォルトの名無しさん:2013/11/27(水) 18:26:12.64
作りが甘いけどこんなのでいいのかい?
(defun flatten (tree)
(labels ((f (tree acc)
(cond ((null tree) acc)
((atom tree) (cons tree acc))
(t (f (car tree)
(f (cdr tree) acc))))))
(f tree nil)))

(defun ubar-var? (x)
(let ((name (symbol-name x)))
(and (eq #¥_ (elt name 0))
(handler-case
(parse-integer name :start 1)
(error (c)
nil)))))

(defun mapa-b (f a b)
(if (> a b)
nil
(cons (funcall f a) (mapa-b f (1+ a) b))))

(defun my-lambda (&rest body)
(let* ((ubar-vars (remove-if-not #'ubar-var? (flatten body)))
(numbers (sort (mapcar #'ubar-var? ubar-vars) #'<))
(first (first numbers))
(last1 (car (last numbers))))
`(lambda ,(mapa-b (lambda (i)
(intern (format nil "_~s" i)))
first last1)
,@body)))

199 KB
新着レスの表示

★スマホ版★ 掲示板に戻る 全部 前100 次100 最新50
名前: E-mail (省略可) :


read.cgi ver 05.02.02 2014/06/23 Mango Mangüé ★
FOX ★ DSO(Dynamic Shared Object)