【问题标题】:Problems with Code in the Frege REPLFrege REPL 中的代码问题
【发布时间】:2015-11-26 20:23:14
【问题描述】:

在尝试学习 Frege 时,我将一些代码从 Dierk's Real World Frege 复制到在线 REPL 并尝试执行它(另见 How to execute a compiled code snipped in Frege online repl)。我尝试过的脚本无法编译:-(

我做错了什么?

以下是无法编译的示例:

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

以及整个ValuesAndVariables.fr 代码

【问题讨论】:

    标签: frege


    【解决方案1】:

    不可避免的是,在一年多的时间里,不断发展的语言(及其库)发生了变化,导致旧代码无法再编译。

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

    接下来最好的办法是在 Dierks 项目中出现指向错误的问题。

    但最好的办法是努力找出问题所在。这也将强化您的学习过程。

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

    https://github.com/Frege/frege/wiki/New-or-Changed-Features -- 每个版本的发行说明,包含版本之间发生变化的摘要,特别是代码不再编译的原因以及如何更正它。

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

    去,试试看。而且我相信 Dierk 会很乐意接受拉取请求。

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

    中的错误:

    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)
    

    【讨论】:

    • 感谢这个详细的答案。你是绝对正确的。我不认为语言的变化是一个问题,但是开始研究它的人应该意识到它:-) 一旦我的学习取得进展,我将开始拉取请求......承诺!跨度>
    • 那太好了。话虽如此,像“为什么 this 代码无法编译?”这样的问题。绝对有条不紊,会很快得到你的帮助(但你是想自己找出答案的类型,我有感觉。非常好!)。然而,你自己判断,没有人能告诉你大部分代码无法编译的具体原因。
    【解决方案2】:

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

    似乎 Frege 开发人员决定在这些版本之间稍微更改 Frege 语法。结果是你将无法再在线 REPL 中运行这些代码 sn-ps。

    【讨论】:

    • 该项目目前已更新到最新的 Frege 版本:github.com/Dierk/Real_World_Frege/commit/…。但是,代码永远不会针对 all 版本进行编译。所以最好使用提供的 gradle 构建自动化进行编译。
    • 哇。伟大的。惊人的。谢谢!说明代码头中使用的 frege 版本是否有意义?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-28
    • 2021-04-21
    • 1970-01-01
    相关资源
    最近更新 更多