- 1
- 2
- 3
- 4
- 5
- 6
- 7
data Foo a = Foo {a :: a, b :: Int}
| Bar {b :: Int}
foo :: (a -> b) -> Foo a -> Foo b
foo f x@Foo{a = a} = x{a = f a}
foo _ x@Bar{} = x -- error: Couldn't match type ‘a’ with ‘b’
foo _ x@Bar{} = x{} -- error: Empty record update