blob: 92040ac6c79179357ab5306dbc7c2eb7b2a5833a [file] [edit]
inductive AltCore (α : Type)
| default (val : α)
| alt (name : String) (val : α)
inductive Code where
| cases (alt: AltCore Code)
| return (id : Nat)
abbrev Alt := AltCore Code
def AltCore.getCode : Alt → Code
| .default c => c
| .alt _ c => c
def AltCore.update (alt : Alt) (c : Code) : Alt :=
match alt with
| .default _ => if true then alt else .default c
| .alt n _ => if true then alt else .alt n c
example (alt : Alt) : Code :=
alt.getCode
def Alt.getCode' : Alt → Code
| .default c => c
| .alt _ c => c
example (alt : Alt) : Code :=
if true then .return 1 else alt.getCode'
example (alt : Alt) : Code :=
if true then alt.getCode' else .return 0