{-# language DuplicateRecordFields #-}

data A = A {
  x :: Int
}

data B = B {
  x :: Bool
}

updatexa :: Int -> A -> A
updatexa y a = (a :: A) { x = y }

updatexb :: Bool -> B -> B
updatexb y b = (b :: B) { x = y }

main :: IO ()
main = pure ()