2017-05-08 100 views
0

我想在哈斯克爾寫一個最大的公約數函數。這是我到目前爲止:輸入'|'haskell錯誤解析錯誤

gcd1 :: Int -> Int -> Int 
gcd1 a b 
    | a == 0 = b 
    | b == 0 = a 
    | otherwise = gcd (mod a b) 

當我嘗試編譯時,我得到該錯誤。我已經讀過關於haskell如何使用空格來確定函數聲明開始的位置以及正文開始的位置,但我一直嘗試使用不同數量的空格並獲取相同的錯誤。有什麼我失蹤?

+1

野生猜測 - 你混合標籤和空格? - 打開'-Wall' - 這應該是一個警告然後關於那個或做一個搜索,並替換'/ \ t// g'只是爲了確保 – epsilonhalbe

+0

我把它放在一個文件+一個'其中gcd = undefined'它編譯沒有任何問題 – epsilonhalbe

回答

2

在最後一行,GCD需要在2個參數被應用。你只是將它應用於一個 - >(mod a b)。另外,正如其他人提到的,您可能正在混合您的空間和選項卡。我建議只使用空格。

另外一件事情是,在定義GCD函數時,可能是爲了不在實現中使用預定義的gcd函數。