参数顺序
一旦我们有多个参数,隐式类型参数的问题就变得很明显了。他们进来了哪个订单?
const::a -> b -> a
写 const @Int
意味着 a
是否等于 Int
,还是 b
?如果我们使用像 const::forall a b. a -> b -> a
这样的 forall
明确说明类型参数,那么顺序如下:a
,then b
。
如果我们不这样做,那么变量的顺序是从左到右。要提到的第一个变量是第一个类型参数,第二个是第二个类型参数,依此类推。
如果我们想要指定第二个类型变量但不是第一个变量怎么办?我们可以像这样使用第一个变量的通配符
const @_ @Int
这个表达式的类型是
const @_ @Int::a -> Int -> a