榆树 - 合同中的开放式类型

时间:2016-03-31 13:44:20

标签: types elm 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

1 个答案:

答案 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必须与第三和第四个参数类型相同。