{-# LANGUAGE LinearTypes #-} {-# LANGUAGE NoImplicitPrelude #-} import Prelude.Linear f :: Ur Int %1 -> (Int, Int) f (Ur x) = (x, x + 42) g :: (Int, Int) %1 -> Int g xy = let !(x, y) = xy -- won't work: -- (x, y) = xy -- (!x, !y) = xy in x + y main :: IO () main = print $ g (f (Ur 69))