open import Agda.Builtin.Nat using (_+_) renaming (Nat to ℕ)
record Foo : Set where
field foo : ℕ
@0 bar : ℕ
getFoo : Foo → ℕ
getFoo record {foo = n} = n
_+Foo_ : Foo → Foo → Foo
a +Foo b = record
{ foo = a .Foo.foo + b .Foo.foo
; bar = a .Foo.bar + b .Foo.bar }
testFoo : ℕ
testFoo = (record {foo = 21; bar = 1} +Foo record {foo = 21; bar = 2}).Foo.foo
data Bar : Set where
bar : ℕ → @0 ℕ → Bar
getBar : Bar → ℕ
getBar (bar n _) = n
_+Bar_ : Bar → Bar → Bar
(bar a0 a1) +Bar (bar b0 b1) = bar (a0 + b0) (a1 + b1)
testBar : ℕ
testBar with bar 21 1 +Bar bar 21 2
... | bar n _ = n
test : ℕ
test = testFoo
+ testBar
+ getFoo (record {foo = 42; bar = 0})
+ getBar (bar 42 0)
{-# COMPILE AGDA2LAMBOX test #-}
Debug λ☐ Rocq ↪
WASM C OCaml CakeML Rust Elm