有没有办法定义表示行多态记录的类型/别名?tester :: forall r.{val :: Int | r} -> Int a.val
我想将记录类型定义为别名。对于更大的记录和更复杂的函数,多次定义类型会导致相当多的噪音。如果能把这件事解决掉就好了。例如fn :: a -> b -> a我必须定义两次a
对于非多
它可以正常工作,但在某些地方会影响可读性,可能是因为我们接受了PascalCase而不是(pare,the,sised)等阅读类型的培训。所以我的想法是,就像给Tuple<int,int>类型一个别名一样,我可以给匿名类型(int x, int y)一个别名。然后,我可以使用别名或匿名类型,这取决于我认为更易读的内容。
假设我有一个由多个多态变量(协变)组成的类型,如下所示: [> `Ok of int | `Error of string] 让我们进一步假设,我希望将此定义分解为某种类型构造函数和一个具体的类型int我的第一次尝试是这样的: type 'a error = [> `Ok of 'a | `Error of string] 然而,使用这样的定义会产生一个非常奇怪的类型错误,它提到了一个类型变量'b,该变量没有出现在定义中的任何地