簡體   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