@@ -19,6 +19,7 @@ open import Syntax
1919 using (Sig; sig→ℕ; ∁; ν; ■; ↑; _•_; ext; id; Rename; Shiftable; Equiv;
2020 Relatable)
2121open import Var
22+ open import Sig using (Result)
2223
2324module examples.Arith where
2425
@@ -39,18 +40,7 @@ sig op-if = ■ ∷ ■ ∷ ■ ∷ []
3940sig op-error = []
4041
4142open import ScopedTuple using (Tuple; _✖_; zip)
42- open import Fold Op sig
43-
44- {-
45- open import Map Op sig
46- open import FoldFoldFusion Op sig
47- renaming (_⨟ᶠ_≈_ to _⨟′_≈_)
48- open import MapFusion Op sig using (QuoteShift; ABT-is-QuoteShift)
49- open import FoldMapFusion Op sig
50- using (fold-rename-fusion; fold-map-fusion-ext-FV; FoldShift; _⊢_⨟_≈_;
51- _⊢ₐ_⨟_≈_; _⊢₊_⨟_≈_)
52- renaming (_⨟_⩰_ to _′⨟_≈_)
53- -}
43+ open import Fold2 Op sig
5444
5545open import AbstractBindingTree Op sig renaming (ABT to AST)
5646pattern $ n = op-num n ⦅ nil ⦆
@@ -90,7 +80,7 @@ bool? mv f
9080... | _ = nothing
9181
9282
93- eval-op : (op : Op) → Tuple (sig op) (Bind (Maybe Val) (Maybe Val))
83+ eval-op : (op : Op) → Tuple (sig op) (Result (Maybe Val))
9484 → Maybe Val
9585eval-op (op-num n) tt = just (v-num n)
9686eval-op op-error tt = nothing
@@ -106,12 +96,8 @@ eval-op op-if ⟨ cnd , ⟨ thn , ⟨ els , tt ⟩ ⟩ ⟩ = do
10696
10797open Structures.WithOpSig Op sig
10898
109- instance
110- MVal-is-Foldable : Foldable (Maybe Val) (Maybe Val)
111- MVal-is-Foldable = record { ret = λ x → x ; fold-op = eval-op }
112-
11399eval : (Var → Maybe Val) → AST → Maybe Val
114- eval = fold
100+ eval = fold eval-op nothing
115101
116102evaluate : AST → Maybe Val
117103evaluate M = eval (λ x → nothing) M
0 commit comments