[英]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.