堆叠点符号需要什么类型?
What types are expected from stacked dot notation?
考虑:
#include "share/atspre_staload.hats"
fun plus_int_int(x: int, y: int): int = x + y
symintr .plus
overload .plus with plus_int_int
implement main0() =
println!("4+4+4 = ", ((4).plus(4)).plus(4))
这行得通,很明显它不能是 4.plus()
,因为 4.
被当作浮点数。我想知道的是,为什么 (4).plus(4).plus(4)
不起作用? ATS 发现第二个 .plus
没有有效的重载,这告诉我它期待 (int, int) -> int
以外的其他类型。它期待什么类型?
当前 ATS2 解析器解释
(4).plus(4).plus(4)
作为
((4).plus)((4).plus)(4)
我无法轻松修复解析器。我会在实现ATS3的时候考虑一下。
考虑:
#include "share/atspre_staload.hats"
fun plus_int_int(x: int, y: int): int = x + y
symintr .plus
overload .plus with plus_int_int
implement main0() =
println!("4+4+4 = ", ((4).plus(4)).plus(4))
这行得通,很明显它不能是 4.plus()
,因为 4.
被当作浮点数。我想知道的是,为什么 (4).plus(4).plus(4)
不起作用? ATS 发现第二个 .plus
没有有效的重载,这告诉我它期待 (int, int) -> int
以外的其他类型。它期待什么类型?
当前 ATS2 解析器解释
(4).plus(4).plus(4)
作为
((4).plus)((4).plus)(4)
我无法轻松修复解析器。我会在实现ATS3的时候考虑一下。