函式應用的以下打字規則
f :: A -> B
e :: A
-----------
f e :: B
不考慮f
帶類約束。如何手動計算型別,例如:
( ) :: Num a => a -> a -> a
3 :: Int
---------------------------
( ) 3 :: ?
uj5u.com熱心網友回復:
為了:
( ) :: Num a => a -> a -> a
3 :: Int
我們知道a
(第一個引數) 和Int
(the type of 3
) 是同一個型別,所以這意味著a ~ Int
(a
和Int
是同一個型別),所以這意味著:
( ) :: Num a => a -> a -> a
3 :: Int
------------------------------------
( ) 3 :: Num Int => Int -> Int
由于Int
是型別類的成員Num
,我們可以洗掉Num Int =>
,從而獲得:
( ) :: Num a => a -> a -> a
3 :: Int
------------------------------------
( ) 3 :: Int -> Int
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/494278.html
上一篇:為什么我的并行代碼運行很差?