数学运算符的字符关联

Raz*_*zed 3 scheme character operators racket

有没有办法将角色与数学运算符相关联?

例如,如果我可以将字母"b"关联为添加

(b 2 2)

产量

4

这可能吗?如果有,我可以用作指导的材料或例子吗?

Ósc*_*pez 8

它很简单,看起来:

(define b +)
(b 2 2)
> 4
Run Code Online (Sandbox Code Playgroud)

现在b是别名+.您可以使用相同的想法为任何您想要的过程创建别名,使用任何名称(它不限于单字符名称).请注意,它不适用于其他特殊形式; 例如,这将产生一个错误:

(define my-and and)
Run Code Online (Sandbox Code Playgroud)

  • @Mitch,欢迎你!如果这个答案对您有帮助,请不要忘记单击左侧的复选标记将其接受为正确. (2认同)

soe*_*ard 6

措辞有点偏差(以此为友好说明).

在Scheme/Racket中,数学函数+, - ,*等不是关键字,因为它们在许多编程语言中.它们只是名字.

表达式+求值为一个值,即可以添加数字的函数.为了引入您自己的值名称,您可以使用define.

(define plus +) 
Run Code Online (Sandbox Code Playgroud)

给出plus评估+得到的值的名称.因此,您可以提供自己的单字母名称,例如

(define p +)
Run Code Online (Sandbox Code Playgroud)

但是,单个字母的名称不是字符.字符是字符串的组成部分.