【发布时间】:2011-08-06 21:33:30
【问题描述】:
我正在定义一个将函数作为输入的函数,并且我想在输入类型中指定它,即Operat[_?FunctionQ]:=... 但是在mathematica中还没有functionQ。除了根本不指定任何类型之外,我该如何解决这个问题。
有什么想法吗?
哦! 这个:Test if an expression is a Function? 可能是我正在寻找的答案。我正在进一步阅读
那里提出的解决方案是否可靠?,即:
FunctionQ[_Function | _InterpolatingFunction | _CompiledFunction] = True;
FunctionQ[f_Symbol] := Or[
DownValues[f] =!= {},
MemberQ[ Attributes[f], NumericFunction ]]
FunctionQ[_] = False;
【问题讨论】:
-
@Mr. Wizard:我只是想确保那里提出的解决方案是稳健的。我想在找到 Test if an expression is a Function 之后删除这个问题,我可能仍然这样做......特别是 _Function | _插值函数 | _CompiledFunction 涵盖所有内容?
-
菲尔,“惩罚”你并不是我的本意。我只是认为,如果将这两个问题结合起来,社区会得到更好的服务。我建议不要创建您打算稍后删除的问题;几天前我试过了,但效果并不好。 :-)
-
@Wizard 先生,在提出一个单独的问题时,我希望讨论一个函数测试的稳健性以及这种测试的计算效率如何,对于测试本身和它如何影响将函数作为输入的函数的计算速度。我觉得这将是一个单独的焦点,以保证一个不同的问题。 @WReach 的回答朝那个方向发展。您如何在不删除提供的答案的情况下合并问题?谢谢
-
菲尔,我不反对这种推理。在这一点上,我相信主持人必须进行合并。
标签: function types operators wolfram-mathematica functional-programming