有没有办法在 C++ 中定义运算符? (或其他语言)

Is there a way to define operators in C++? (or another language)

我知道运算符重载,但这不是我要说的。

我用 C++ 做了很多科学计算。例如,我必须计算梯度、点积、拉普拉斯算子、粗麻布矩阵...

所有这些通常都有明确定义和标准的数学符号。梯度使用nabla,hessian nabla^2 laplacian \delta ...

我通常必须写 vec Gradient(fun_ptr)Hessian(fun_ptr)

问题在于,这会使代码偏离我正在实施的论文,并且当您复制错误时,它会更难发现。

有什么方法可以将 \nabla 字符定义为运算符吗?

Is there a way to define operators in C++?

没有。您只能为 C++ 中的自定义类型重载(某些)现有运算符。

您可以定义实现所需操作的函数,如果您将源代码编码为具有这些符号的字符集(即您使用 Unicode),并且您的编译器支持它(不能保证因为这些符号不是基本字符集的一部分),那么您可以使用这些符号作为这些函数的名称。但是你不能在C++中调用带有中缀符号的函数。

(or another language)

您可以在 Haskell 中定义中缀函数。