我有一个用 Fortran 编写的标量函数,我通过一个小的 mathlink 模块在 Mathematica 中使用它。我希望这个函数的行为尽可能接近原生 Mathematica 函数,包括它对符号常量的处理。
很多时候,我希望在mathematica 中写一些带有符号常量/变量的表达式,这些常量/变量将在后面被替换规则列表替换。但是,Mathematica 立即尝试使用适当的符号参数评估我的 mathlink 函数,但显然失败了。例如,即使是下面的简单表达式也会失败
extf[a]/.a->5
有没有办法延迟函数的评估,直到所有符号参数都被数字替换?
我使用的一种不太优雅的方法取得了一些成功(但如果我希望将此函数包含在通用mathematica 包中以与同事共享,这是不可接受的)是使用对外部函数的“虚拟”引用来评估所有内容,然后使用在评估所有其他数值常数的同时,将所有虚拟引用交换为真实引用的替换规则。例如
dummyf[a]/.{a->5,dummyf->extf}