gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 23:44:57 24 4
gpt4 key购买 nike

例如,如果我想为向量或四元数等定义新的算术运算。我做了类似 (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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com