在尝试学习Frege时,我将一些代码从迪尔克的真实世界复制到在线REPL,并尝试执行它(参见如何执行Frege online repl中的编译代码)。我尝试过的脚本没有编译:
我做错了什么?
以下是未编译的示例:
println ( 2 *-3 ) -- unlike haskell, this will work!发布于 2015-11-26 21:51:19
在一年多的时间里,不可避免的是,一种不断发展的语言(及其库)会发生变化,从而使旧代码不再编译。
如果我们能看到一个例子,而不是像“大多数”这样的概括,那就太好了。
其次,最好是在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)发布于 2015-11-26 20:28:51
http://try.frege-lang.org的在线REPL目前基于FregeV3.23.370-g898bc8c。Dierk的代码示例基于V3.21.500-g88270a0 (可以在gradle构建文件中看到)。
看起来,Frege开发人员决定在这些版本之间稍微修改一下Frege语法。THe的结果是,您将无法在在线REPL中运行这些代码段。
https://stackoverflow.com/questions/33946464
复制相似问题