blob: 5eda89c80a4177f6cc121eabc2b019a74a9ec6e2 [file] [edit]
import Lean
abbrev Sequence (α : Type) := List α
def bigop (init : β) (seq : Sequence α) (op : β → β → β) (f : α → Bool × β) : β := Id.run do
let mut result := init
for a in seq do
let (ok, b) := f a
if ok then
result := op result b
return result
set_option trace.Compiler.result true
run_meta Lean.Compiler.compile #[``bigop]