2016-03-31 16 views
1

sona türlerini açmak:Elm - sözde sözleşme göz önüne alındığında bir sözleşme

condy: Int -> Int -> a -> b 
condy n m a b = 
    if n == m then a else b 

kadar bir a ve b tipleri eşittir, ancak herhangi bir şekilde olabilir doğru şekilde yukarıdaki sözleşme tanımlayabiliriz?

condyPrime: Int -> Int -> Bool 
condy n m = 
    n == m 

condyEffectInt: Bool -> Int 
condyEffectInt bool k l = 
    if bool then k else l 

cevap

3

Sizin condy fonksiyonu şu şekilde görünecektir:

condy: Int -> Int -> a -> a -> a 
condy n m a b = 
    if n == m then a else b 

tip imzası kısmı a -> a -> a sadece 3rd olduğunu ve diyor Etkili yukarıdaki her Tip için ekstra fonksiyonu condyEffect[Type] ihtiyacını ortadan kaldırır condy parametresinin 4. parametresi, aynı türden olmalı ve tip ek açıklamadaki son a, dönüş değerinin üçüncü ve dördüncü parametrelerle aynı türde olması gerektiğini belirtir.

İlgili konular