Merge pull request #2 from crumbtoo/main

Use postfix field projections in elab script
This commit is contained in:
Kiana Sheibani 2024-06-28 21:00:42 -04:00 committed by GitHub
commit 6d7153496d
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -5,6 +5,11 @@ import public Language.Reflection.Util
%default total
toField : Name -> Name
toField (NS ns nm) = NS ns (toField nm)
toField (UN (Basic nm)) = UN (Field nm)
toField nm = nm
parameters (o : LensOptions)
lname : Name -> Name
lname n = UN $ Basic (o.fieldName $ nameStr n)
@ -17,7 +22,7 @@ parameters (o : LensOptions)
ldef : BoundArg 0 RegularNamed -> Decl
ldef (BA x _ _) =
let fld := argName x
let fld := toField $ argName x
nme := lname fld
u := update [ISetField [nameStr fld] `(y)] `(x)
in def nme [patClause (var nme) `(lens ~(var fld) $ \x,y => ~(u))]