我已经从“PolyML5.6-64bit.msi”安装程序安装了Poly/ML;我可以通过在开始菜单中单击来启动REPL;但我不知道如何从它访问任何库?我尝试过做use "something",但它会导致这样的错误如下: > use "Math";
Exception-
Io
{cause = SysErr ("No such file or directory", SOME
如何引用从函子的结果派生类型的结构中使用的签名中的类型。下面是使用聚解释一个例子: > signature Res = sig type f end;
signature Res = sig type f end
> functor F (A: sig type t end) : Res = struct datatype f = None | Some end;
functor F (A:
如果我定义 fun id x = x
高阶函数,那么自然id已键入'a -> 'a 当然,id 0计算结果为0,使完美的感觉。 由于这是非常合情合理的,我应该能够通过一个函数来封装它: fun applyToZero (f: 'a -> 'a) = f 0
希望能applyToZero将有类型('a -> 'a) -> int和applyToZero id将评估为0 但是,当我尝试如上定义
我想在结构中声明一个中缀经营者以供在结构外使用。但是,即使结构已经打开,我似乎也无法让结构之外的“外力”得到承认。以下是使用Poly/ML的示例: > structure A = struct infix 6 ++ fun a ++ b = a + b end;
structure A: sig val ++: int * int -> int end
> 1 A.++ 2;
poly: :
我想编译一个源代码的字符串并使用Poly/ML打印分析树。下面的代码编译,但分析树是空的: fun main() =
let
val stream = TextIO.openString "let val a = \"abc\"; val b = \"def\"; val c = a^b in print c end";
val _ = PolyML.compil