frege - Frege REPL 中的代码问题

标签 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代码

最佳答案

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

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

下一个最好的办法是在 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)

关于frege - Frege REPL 中的代码问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33946464/

相关文章:

java - Frege 在引用的项目或外部 jar 中找不到类

haskell - 弗雷格与 haskell 的分数等价于什么?

haskell - do block 内的 <- 和 "let"有什么区别?

scala - Scala 和 Frege 之间的主要区别(在编程范式中)是什么?

haskell - 在 Frege 中表达渴望但在 Haskell 中很懒惰?

java - 将整数列表从 java 传递到 frege 函数的最简单方法是什么?

frege - IMMutable 与可变 IO 文件

java - 是否可以将 frege 与 Play 框架一起使用