sml - sml 中的大型 Int 集

标签 sml smlnj

我在 sml 中遇到以下问题: 我想使用 IntListSet 签名创建一个集合,但我想使用 large int 而不是 int。 有什么办法可以解决这个问题吗?

谢谢, 等待您的答复 .

最佳答案

您可以使用 ListSetFn 仿函数。从文档中,您会发现:

functor ListSetFn (ORD_KEY) : ORD_SET

这表示 ListSetFn 是一个仿函数,它采用满足 ORD_KEY 签名的结构,您可以在文档中找到它:

type ord_key
val compare : (ord_key * ord_key) -> order 

所以基本上,您需要创建一个满足ORD_KEY 签名的结构,例如:

structure LargeIntKey : ORD_KEY = 
struct 
  type ord_key = LargeInt.int 
  val compare = LargeInt.compare
end

然后您可以通过以下操作创建 ListSetFn 仿函数的 LargeInt 实例:

 structure LargeIntSet = ListSetFn(LargeIntKey)

关于sml - sml 中的大型 Int 集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30687830/

相关文章:

functional-programming - 尝试理解 SML 选项结构

objective-c - Objective C 中的递归数据类型和类型

functional-programming - 这被认为是 curry 函数吗?

sml - 如何将 Real 转换为 Int?

functional-programming - SML/NJ 的简单功能

sml - 如何强制 SML 中的类型(如转换)

compiler-construction - 适用于 Linux 的具有读取-评估-打印循环的快速标准 ML 编译器或字节码解释器?

algorithm - 使用 SML 在树中查找字符

recursion - 如何在 SML 中递归计算数字的位数

haskell - Haskell 和 SML/NJ 中的不同折叠