math - common lisp "overloading"内置函数以便携高效的方式?

标签 math coding-style common-lisp overloading

例如,如果我想为向量或四元数等定义新的算术运算。 我做了类似 (defun v+ (&rest vectors) ...) 的操作。

有没有什么好的方法可以重载普通的+? (我只知道shadowing-import,好像不是什么好办法)

如果我使用+,则需要更多时间来确定操作类型。

最好不要重载,使用不同的函数名,只在真正需要时才定义一个新函数吗?

最佳答案

你可能想要做的是定义一个包(我们称它为 my-math),你在其中定义一个符号 my-math:+ 来做任何事情 dispatch 您需要。

或者,定义 my-math:+ 使其有效地 (reduce #'my-math:binary+ args) 然后定义 my-math :binary+ 作为通用函数,然后您可以将特定方法卡在上面。

在编写依赖于 my-math 的包定义时,这仍然需要一些额外的纪律,因为您需要努力确保您的朴素 + 来自 my-math,而不是 cl,这可能会使其他人更难阅读代码。

关于math - common lisp "overloading"内置函数以便携高效的方式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29834867/

相关文章:

c - 如何加速棘手的随机数生成

c++ - 保护程序中的 C++ 代码

lisp - 读行时未捕获带有挂断条件的 iolib

optimization - 如何优化我的递归 Lisp 函数

java - 减少数学分解过程中的迭代

javascript - 如何使用javascript返回字符串中每个字母的数字

c++ - 两个两个 C++ 项目可以相互引用吗?

c# - 如何在类中对枚举、结构和子类进行分组?

common-lisp - 在 REPL 中自动加载依赖文件

python - 寻找 3D 曲面的开口