首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >SML产生编译器错误

SML产生编译器错误
EN

Stack Overflow用户
提问于 2020-04-06 04:19:04
回答 2查看 96关注 0票数 2

代码语言:javascript
代码运行次数:0
运行
复制
- fun dist (x:real, y:real):real*real = (Math.sqrt (x*x+y*y), Math.abs(x-y));

会产生一个错误

代码语言:javascript
代码运行次数:0
运行
复制
Error: unbound variable or constructor: abs in path Math.abs

因此,即使使用自制的abs版本,我也会得到

代码语言:javascript
代码运行次数:0
运行
复制
- fun abs (n : real)  = if n <0.0 then ~n else n;
val abs = fn : real -> real
- fun dist (x:real, y:real) = (Math.sqrt (x*x + y*y), abs (x-y));
val dist = fn : real * real -> real * real
- dist (2.0, 3.0);
Error: Compiler bug: PPObj: ppFields in ppval.sml

我跟着Programming in Standard ML走了,49页。不确定如何继续。

EN

回答 2

Stack Overflow用户

发布于 2020-04-06 06:54:21

我猜你已经碰到this bug了。我建议您恢复到编译器的早期版本(您的程序在110.91上对我有效),然后重试。

票数 2
EN

Stack Overflow用户

发布于 2020-04-06 05:37:10

编辑:我回应说,这个库函数被称为Real.abs,而不是Math.abs,并指出它可以处理自定义abs函数不能处理的几种情况(±infinity,±0.0,±NaN)。

但是,如果您想尝试让您自己的abs函数工作,我已经尝试在SML/NJ 110.79 (apt install smlnj)、Poly/ML 5.7.1 (apt install polyml)和莫斯科ML 2.10 (http://try.mosml.org)中运行您的程序,但没有得到错误。也许你正在运行一个flakey版本,或者你遇到了64位的问题?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61048939

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档