File: LensTests.v

package info (click to toggle)
coq-record-update 0.3.6-2
  • links: PTS, VCS
  • area: main
  • in suites: experimental
  • size: 208 kB
  • sloc: makefile: 38; sed: 6
file content (12 lines) | stat: -rw-r--r-- 418 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
From RecordUpdate Require Import RecordUpdate Lens.

Record X := mkX { A: nat; B: nat; C: bool; }.
#[export] Instance etaX : Settable _ := settable! mkX <A; B; C>.

(* lenses require much more boilerplate than setters (if you want them to look
like Haskell lenses) *)
Definition _A := field_lens A.
Definition _B := field_lens B.
Definition _C := field_lens C.

Definition set_A_to_3 (x:X) := over _A (fun _ => 3) x.