我無法獲得Haskell編譯的這行代碼,但它在我教授的系統上工作。我使用ghci 7.6.2版。 data Eq a => Shape a = Shape a
更準確地說,這是我得到 [1 of 1] Compiling Main (test.hs, interpreted)
test.hs:1:6:
Illegal datatype context (use -XDatatype
我是Haskell世界的新手,可能我的問題很愚蠢,但我無法理解ghci的行爲或ghc在這種情況下。 我試圖通過對haskell.org上的99個問題解決舊的「Knights_Tour」問題,我找到的解決方案在61次移動(總共62個位置,僅錯過了2個位置)中工作正常。但是,如果我將總移動數增加到63 ghci或runhaskell,或者編譯後的程序在一分鐘或更長時間內沒有答案就停止工作。 程序: i
如果我把下面兩行到foobar.hs f 1 = 1
f x = f (x-1)
然後 $ ghci
> :load foobar.hs
> f 5
1
,但如果我這樣做 $ ghci
> let f 1 = 1
> let f x = f (x-1)
> f 5
^CInterrupted.
那麼它不會返回。爲什麼?
我想解析Haskell的語句列表。舉例來說,假設我有以下代碼: let a = b
c = e
out <- return 3
我想要的功能,例如parseStmts,這在某些解析格式返回這一點。 我看着haskell-src-exts看到parseStmt。這適用於單個語句。它的類型爲parseStmt :: String -> ParseResult Stmt,如果您嘗試par