簡體   English   中英

如何在Haskell中實現^運算符?

[英]How to implement ^ operator in Haskell?

我正在為Haskell中的Fraction數據類型創建一堆實例,我想知道是否有一個地方可以實現^運算符。

我的意思是,我有幾個Num類型的實例,在這些實例中,我定義了常見的操作,如+-等。

有了這個,數據類型表現為正常數字,正如我想要的那樣(意思是我可以調用類似(Frac 1 2) + (Frac 1 4)並返回Frac 3 4

我想要做的是直接實現^ 現在,我已經將它定義為:

(|^|) :: Fraction -> Int -> Fraction
(|^|) f = foldr (*) mempty . flip replicate f  

當我嘗試將函數的名稱更改為^ ,我收到錯誤,因為它與Prelude的^定義沖突。 是否有Num類型我可以給我的Fraction類型一個允許我在其上使用^運算符的實例?

謝謝!

Prelude.^不是任何類型類的一部分,因此您可以定義自己的^函數的唯一方法是隱藏Prelude的一個。

請注意,由於Prelude.^的簽名是(Num a, Integral b) => a -> b -> a ,只要它是一個實例,你就可以在你的Frac類型的值上使用它。 Num 你不會提供自己的實現。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM