Elm - 合同中的开放式类型
Elm - open ended types in a contract
给定伪合约:
condy: Int -> Int -> a -> b
condy n m a b =
if n == m then a else b
如何正确定义上述契约,使得a和b的类型相等但可以是任何类型?实际上,上面消除了对每个类型的额外功能 condyEffect[Type]
的需要:
condyPrime: Int -> Int -> Bool
condy n m =
n == m
condyEffectInt: Bool -> Int
condyEffectInt bool k l =
if bool then k else l
您的 condy
函数将如下所示:
condy: Int -> Int -> a -> a -> a
condy n m a b =
if n == m then a else b
类型签名中的a -> a -> a
部分只是说condy
的第3个和第4个参数必须是同一类型,类型注释中最后的a
说return 值需要与第三个和第四个参数的类型相同。
给定伪合约:
condy: Int -> Int -> a -> b
condy n m a b =
if n == m then a else b
如何正确定义上述契约,使得a和b的类型相等但可以是任何类型?实际上,上面消除了对每个类型的额外功能 condyEffect[Type]
的需要:
condyPrime: Int -> Int -> Bool
condy n m =
n == m
condyEffectInt: Bool -> Int
condyEffectInt bool k l =
if bool then k else l
您的 condy
函数将如下所示:
condy: Int -> Int -> a -> a -> a
condy n m a b =
if n == m then a else b
类型签名中的a -> a -> a
部分只是说condy
的第3个和第4个参数必须是同一类型,类型注释中最后的a
说return 值需要与第三个和第四个参数的类型相同。