История изменений
Исправление balsoft, (текущая версия) :
Non-exhaustive patterns – правда очень неприятная тема в хаскеле. Но в целом язык неплох. Для твоих задач правда можно использовать LiquidHaskell:
module Main where
{-@ f :: (Num a, Num p) => {v:a | v = 0} -> p @-}
f 0 = 3
main = print (f 1)
Error: Liquid Type Mismatch
Inferred type
VV : {v : Integer | v == 1}
not a subtype of Required type
VV : {VV : Integer | VV == 0}
(ошибка именно в main
, а не в f
)
Исходная версия balsoft, :
Non-exhaustive patterns – правда очень неприятная тема в хаскеле. Но в целом язык неплох. Для твоих задач правда можно использовать LiquidHaskell:
module Main where
{-@ f :: (Num a, Num p) => {v:a | v = 0} -> p @-}
f 0 = 3
main = print (f 1)
Error: Liquid Type Mismatch
Inferred type
VV : {v : Integer | v == 1}
not a subtype of Required type
VV : {VV : Integer | VV == 0}