繁体   English   中英

Frege REPL中的代码问题

[英]Problems with Code in the Frege REPL

在尝试学习Frege的同时,我将Dierk的Real World Frege中的一些代码复制到了在线REPL中,试图执行它(另请参阅如何执行在Frege在线repl中剪切的编译代码 )。 我试过的脚本不编译:-(

我究竟做错了什么?

以下是无法编译的示例:

println ( 2 *-3 )       -- unlike haskell, this will work!

以及整个ValuesAndVariables.fr代码

不可避免的是,在一年多的时间里,一种不断发展的语言(及其库)发生了变化,以至于旧的代码将不再编译。

如果我们能够看到一个例子,那将是很好的,而不是像“大多数”这样的概括。

接下来最好的事情是在Dierks项目中出现一个指向错误的问题。

但最好的是努力找出问题所在。 这也会加强你的学习过程。

这里有两个可以帮助的资源:

https://github.com/Frege/frege/wiki/New-or-Changed-Features - 每个版本的发行说明,包含发行版之间已更改的内容摘要,尤其是代码无法编译的原因再也不知道如何纠正它。

http://www.frege-lang.org/doc/fregedoc.html - 图书馆文档。 可以解释可能的错误,例如未找到导入或缺少标识符。

去吧,试一试。 而且我确信迪尔克很乐意接受拉动请求。

编辑:修复已公布的错误。

错误:

println ( 2 *-3 ) 

确实源于语法上的变化。 最近,要求相邻的操作员被至少一个空间隔开。 于是

println (2 * -3)

但是,您在此处收到的错误消息是:

can't resolve `*-`, did you mean `-` perhaps?

这可能触发了它试图解释*-作为单个运算符的想法。

ValuesAndVariables1.fr的另一个错误确实是初学者的表演限制。 背景是我们有一个pi类型为Double ,一个类型为Float ,可能还有更多类型为Floating ,因此需要告诉哪一个要打印。 以下将有效:

import Prelude.Math    -- unless already imported
println Float.pi
println (pi :: Double)

http://try.frege-lang.org上的在线REPL目前基于Frege V3.23.370-g898bc8c。 Dierk的代码示例基于V3.21.500-g88270a0(可以在gradle构建文件中看到)。

似乎Frege开发人员决定在这些版本之间略微改变Frege语法。 结果是您将无法再在在线REPL中运行这些代码片段。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM