R6RS语法中<complex r>@记法的定义与溯源问询
关于R6RS中
@形式复数语法的详细说明 你提到的<complex r> => .... | <real r> @ <real r>是R6RS(以及更早的Scheme标准)里定义的极坐标形式复数表示语法,我来给你拆解清楚:
1. 语法的核心含义
这个@分隔的两个实数,分别代表复数的模长(第一个数)和辐角(第二个数,单位是弧度)。解释器会自动把它转换成我们更熟悉的直角坐标形式(实部+虚部i),转换公式是:
- 实部 = 模长 × cos(辐角)
- 虚部 = 模长 × sin(辐角)
你在MIT-Scheme里计算2@2得到的-.8322936730942848+1.8185948536513634i完全符合这个逻辑:
- 模长2,辐角2弧度
- 计算
2*cos(2)≈-0.8322936730942848,2*sin(2)≈1.8185948536513634,和结果完全匹配。
2. 语法的来源与标准定义
这个记法确实可以追溯到1985年的R3RS标准——这是Scheme语言早期的核心标准之一,当时就已经把极坐标形式的复数表示纳入了数字语法规范。后续的R4RS、R5RS一直延续了这个规则,R6RS也保留了该语法作为复数的合法表示形式之一。
简单来说,它是Scheme语言标准的原生语法,并非MIT-Scheme的私有扩展,绝大多数符合R3RS及以上标准的Scheme实现(比如Guile、Chicken Scheme等)都支持这个记法。
3. 注意事项
- 辐角的单位是弧度,不是角度,如果需要用角度转换,得先自行转换成弧度(比如用
(* angle (/ pi 180))) - 当模长为0时,辐角会被忽略,直接得到0复数
内容的提问来源于stack exchange,提问作者alinsoar
相关产品推荐
相关产品推荐

