[英]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.