函式應用的以下打字規則
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
上一篇:為什么我的并行代碼運行很差?
