鉴于伪合同:
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
答案 0 :(得分:3)
您的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
表示返回value必须与第三和第四个参数类型相同。