铸造实施 gflist_vt_mergesort$cmp

casting in implementing gflist_vt_mergesort$cmp

gflist_vt.sats中,gflist_vt_mergesort$cmp的签名意味着排序使用的顺序必须与stamp相同。我理解如果给出这样的比较函数,就保证了函数的健全性。

this example 中,gflist_vt_mergesort$cmp 似乎是使用不安全转换实现的。

不安全转换本质上是不安全

可以删除不安全的转换。为此,您需要实现抽象类型 stamped_vt0ype(别名 stamped_vt)。例如,要按降序对整数列表进行排序,您可以执行以下操作:

local

assume stamped_vt0ype(_, i) = int(~i)

in (* in-of-local *)

implement
{a}
gflist_vt_mergesort$cmp(x, y) = g1int_sgn(y - x)

end // end of [local]

但是,做这样的事情在实际编程方面似乎并没有提供太多。