【发布时间】:2015-03-29 09:40:04
【问题描述】:
我使用一些变量定义了多个函数,这些变量通常会在更多变量中计算。所以我使用关键字参数,默认情况下计算所需的值。
例子:
(defun f (a b &key (distance (distance a b))) (c a b distance))
(defun g (a b &key (distance (distance a b))) (if (< distance (r a b))
(f a b :distance distance)))
(defun h (a b &key (distance (distance a b))) (d a b distance))
(defun i (a b &key (distance (distance a b))) (g a b :distance distance)
(h a b :distance distance))
每个函数都应该能够在不指定关键字参数的情况下单独调用。
但现在我还必须在每个函数中定义关键字参数的计算。
有没有更优雅/更有效的方式来做这样的事情? (我想到了惰性求值和动态编程)
【问题讨论】:
-
您能举一个例子,“惰性评估”或“动态编程”如何帮助您解决问题吗?
-
我不确定这是否有帮助。如果我以这种方式找到了解决方案,我就不会问了。如果我可以正常编写函数,但在调用某些函数时只评估一次,我认为会更优雅
标签: function common-lisp redundancy keyword-argument