是否有充分的理由STRef
不是或不能成为Ord
或Hashable
类型类的实例?
我在过去看过反对包括Ord IORef
的论点,我记得所说的理由是空间限制。这个原因促使我考虑Hashable
。
我的动机是在集合中使用STRef
s,可以直接通过Ord
完成,也可以使用散列的顺序间接完成。
编辑:我希望在ST
monad中执行可观察的共享。 STRef
允许这样做,但是当命令式算法要求在一组引用之间进行比较时,将其实现为在列表中搜索是很慢的( O(n))。
我最好使用set或hashmap。在这种情况下的排序最终与算法的稳定性没有区别,因此实际参考与算法的最终结果无关。