3 ms·
FWIW, it's the same in Haskell: data T1 = T1 Int m :: T1 -> () m t = () newtype T2 = T2 T1 main :: IO () main = let t2 = T2 (T1 23)
by twic 4y ago
FWIW, it's the same in Haskell:
data T1 = T1 Int
m :: T1 -> ()
m t = ()
newtype T2 = T2 T1
main :: IO ()
main =
let t2 = T2 (T1 23)
v = m t2
in return ()
Gets:
main.hs:11:15: error:
\* Couldn't match expected type `T1' with actual type `T2'
\* In the first argument of `m', namely `t2'
In the expression: m t2
In an equation for `v': v = m t2
|
11 | v = m t2
| ^^