Function Clojure函数检查

Function Clojure函数检查,function,design-patterns,clojure,code-reuse,Function,Design Patterns,Clojure,Code Reuse,当一个程序中有3个函数时,如何检查特定的函数名? 为了选择函数,我想知道这些函数的名称 比如说线性核函数、逻辑核函数和非负函数,当我调用程序时,调用其中一个函数,我应该检查它是线性函数、逻辑核函数还是非负函数,这样我就可以执行与所选函数相关的另一个函数 我认为做函数选择可以节省我重复基本代码的时间。但是功能选择可能不是我在Clojure中可以使用的最佳设计 仅供参考,在这个级别上,我已经使用“meta”关键字来访问函数名,但是当我创建 (defn isKernel [krn] (if (=

当一个程序中有3个函数时,如何检查特定的函数名? 为了选择函数,我想知道这些函数的名称

比如说线性核函数、逻辑核函数和非负函数,当我调用程序时,调用其中一个函数,我应该检查它是线性函数、逻辑核函数还是非负函数,这样我就可以执行与所选函数相关的另一个函数

我认为做函数选择可以节省我重复基本代码的时间。但是功能选择可能不是我在Clojure中可以使用的最佳设计

仅供参考,在这个级别上,我已经使用“meta”关键字来访问函数名,但是当我创建

(defn isKernel [krn]
  (if (= (str (:name (meta #'krn))) "logistic-kernel") 1 0))

编译器无法解析Clojure中的'krn'var

,函数是值,就像数字4一样。这是该语言(以及一般的函数式编程)的大部分基础。大多数情况下,我们将函数存储在中,尽管这不是必需的。作为值的函数没有名称*因此,与其检查传递函数的名称是否与已知名称匹配,不如询问“此函数是否与存储在var中的函数具有相同的值”,正如@cgrand指出的,这可以通过调用
=
来实现

如果你在做这种分派,有一个很好的改变,这是一个比你自己滚动更好的工具

*它们确实有用于创建递归函数文本的名称,尽管这不是我在这里得到的。

为什么不直接做
(=krn logistic kernel)