问题标签 [polyml]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - 如何提高 PolyML 中的阵列基准性能?
我有以下基准,它遍历一个数组,将下一个条目设置为一个加上前一个条目。如果数字大于某个上限,我将条目设置为零,然后继续。然后最后我对数组中的条目求和。
问题:如何改进 PolyML 的基准测试结果?
Ubuntu x86-64 上的时间如下:
我可以让 mlton 的运行速度几乎与 c 代码 (5.2s) 一样快,但我对 PolyML 特别感兴趣,因为它可以在 Windows 7 中使用最新版本的 gcc 无缝构建。(有关使用 MSYS / MSYS2 和 mingw gcc 编译器在 Windows 7 上构建 polyML 的说明,请参见http://lists.inf.ed.ac.uk/pipermail/polyml/2015-August/001593.html)
在 Windows 7 上,我在使用最新版本的 gcc 构建最新版本的 mlton 时遇到问题(类似于 https://github.com/MLton/mlton/issues/61#issuecomment-50982499中的问题 )
SML 代码是:
C++代码是:
compiler-construction - PolyML 运行时评估
我目前正在使用 PolyML 5.5.2,并尝试创建一个运行时编译器函数,该函数接受一个字符串并运行它。
所需的功能应该是
有趣的 eval 字符串 -> 单元
输入时
>eval "val a=1;";
val a = 1: 整数
我做了一些研究,在旧版本中有一个像 PolyML.compilerEx 这样的函数,但在 PolyML 5.5.2 中似乎没有这样的东西。
非常感谢大家。
sml - 从 Poly/ML 中的源代码字符串获取解析树
我正在尝试编译一串源代码并使用 Poly/ML 打印解析树。以下代码编译,但解析树为空:
运行这个:
我需要做什么才能从编译器获取解析树?我还尝试了使用CPCompilerResultFun
编译器参数的变体。但这也不起作用:
运行它不会产生任何输出。
sml - 如何在 Windows 上访问 Poly/ML 中的库?
我已经从“PolyML5.6-64bit.msi”安装程序安装了 Poly/ML;我可以通过在开始菜单中单击它来启动 REPL;但我不知道如何从中访问任何库?我试过做use "something"
,但它会导致如下错误:
use "Basis"
或类似use "Windows"
。
请注意,我是 SML 的新手;我似乎use
在一些通用 SML 教程中找到了该命令,不知道我是否正确使用它:/
编辑:另外,目标安装目录似乎只包含以下三个二进制文件,不确定那里是否应该有一些源代码:
编辑2:嗯...从进一步浏览中,我开始认为显然 Poly/ML 似乎被大多数人纯粹从“ Isabelle IDE”中使用?所以也许如果我安装这个,一切都会开箱即用?我会尝试,但最初的问题现在仍然悬而未决。
编辑3:嗯,伊莎贝尔IDE很奇怪,特别是不知道如何“运行”在其中打开的SML文件:/在这种情况下可能会卸载(即删除?)它,同时考虑到我得到了答案现在已经回答了原来的问题。
sml - 在函数名称之前键入变量和由此产生的范围限制
我最近注意到在函数声明中允许在函数名之前使用类型变量。但我看不到它是如何使用的。以下是一些使用它的示例:
因此,基于此,我有几个问题。首先,什么是函数名之前的类型变量用例的一个很好的例子(与参数或返回类型签名中更常见的类型变量相反)。另外,有没有办法表明我想专注于类型,就像我可以使用类型一样?:
我确实通过创建一个val f
具有显式类型签名的新变量 来声明特化,但我认为这不是一回事。例如,来自上面的类型示例,我希望能够做到这一点:
但这失败了。
最后,为什么类型变量在函数内部隐藏了参数的类型?我只是猜测会发生这种情况,因为 PolyML.print 函数会打印一个问号(表示它不知道类型)而不是实际值。即使我声明了f
明确约束类型的新函数,它仍然不知道传递的变量的类型。(虽然我很确定这个特定部分与函数上的初始类型变量无关,而是与参数上的(隐式)类型变量无关a
。)
sml - 结构中的标准 ML 导出运算符作为中缀
我想在结构 a 中声明一个中缀运算符以在结构外使用。但即使结构已打开,我似乎也无法在结构外识别“中缀”。下面是一个使用 Poly/ML 的示例:
这是标准 ML 的限制吗?
sml - 如何清除 Poly/ML 中的 HashArray?
没有太多方法,我发现只有两种方法?删除,折叠。
所以我这样做:
但我不认为这是一个好主意?怎么做才聪明?
sml - 在 Poly/ML 中检查结构中的值
在 Poly/ML 中,全局值的名称可以通过以下方式获得:
和顶级结构可以类似地使用#allStruct
.
现在,如何列出结构中的所有值?也就是说,有没有办法在???
下面实现?
language-lawyer - 根据定义,这个片段是合法的标准 ML 吗?
根据定义,下面给出的代码片段是否合法标准 ML?它使用 Poly/ML 进行类型检查,但不使用 Moscow ML:
莫斯科 ML 给出的错误是:
我尝试使用显式类型签名uncons
:
但这只会使错误消息更加本地化:
如果有人感兴趣,这里是片段最初来自的地方。
sml - 在签名中引用涉及函子结果的类型
如何在从函子的结果派生类型的结构中使用的签名中引用类型。下面是一个使用 poly 解释器的例子:
首先,我不明白为什么 Af 在结构本地时会出现在结果签名中。其次,如何创建与此结构 S 匹配的签名?
像这样的东西不起作用:
此外,如果类型 f 是 int 而不是数据类型,S 最终会以某种方式意识到 f 是 int 而不是被签名隐藏。即使使用不透明签名不显示 int,这似乎也不是合理的行为。