2014-01-05 24 views
0

我想用我自己的構造「Z95」作爲其定義創建自己的分數的實例創建分數的一個實例民使用這種構造函數,但沒有任何理由的分數一個不工作:/用我自己的構造(哈斯克爾)

instance Num Z95 where 
    (+) (Z95 a) (Z95 b) = z95 (representant (plusMod 95 a b)) 
    (*) (Z95 a) (Z95 b) = z95 (representant (mulMod 95 a b)) 
    fromInteger n = z95 n 
    negate (Z95 x) = z95 (-(representant x) + 95) 

所以,這裏的分數比如:

instance Fractional Z95 where 
    (/) c1 c2 = (Z95 c1) * (Z95 (invMod c2) 

當我嘗試我的文件加載到GHCI它告訴我:

parse error (possibly incorrect indentation or mismatched brackets) 

即使我改變這只是我的實例聲明後的代碼將出現此消息。

+0

你不應該讓一個分數,而是一個整體,因爲Z95是更大的整數類型。 – augustss

+0

我必須使它成爲一個分數,所以我可以使用一個函數,讓我在之後立即反轉矩陣。我不是代碼開始的作者,所以我沒有搜索優化這部分^^,但是,謝謝我會檢查:) – Equinox

+0

分數可能實際上對你來說是正確的,如果你想要乘法。 – augustss

回答

4

由於錯誤消息說,你有不匹配的括號:

(/) c1 c2 = (Z95 c1) * (Z95 (invMod c2) 
        ^
+0

我現在感覺非常啞巴><我想我應該去睡覺。無論如何感謝^^ – Equinox