@@ -30,7 +30,6 @@ data Expression v
3030 | Record [(Name. Field , Expression v )]
3131 | Proj Name. Field
3232 | Case (Expression v ) [(Pattern Int , Scope Int Expression v )]
33- | If (Expression v ) (Expression v ) (Expression v )
3433 | List [Expression v ]
3534 | String ! Text
3635 | Int ! Integer
@@ -50,7 +49,6 @@ instance Monad Expression where
5049 Record fs >>= f = Record [(fname, e >>= f) | (fname, e) <- fs]
5150 Proj f >>= _ = Proj f
5251 Case e brs >>= f = Case (e >>= f) [(pat, s >>>= f) | (pat, s) <- brs]
53- If e e1 e2 >>= f = If (e >>= f) (e1 >>= f) (e2 >>= f)
5452 List es >>= f = List ((>>= f) <$> es)
5553 String s >>= _ = String s
5654 Int n >>= _ = Int n
@@ -81,6 +79,13 @@ appsView = go mempty
8179 _ ->
8280 (expr, args)
8381
82+ if_ :: Expression v -> Expression v -> Expression v -> Expression v
83+ if_ bool_ true false =
84+ Case bool_
85+ [ (Pattern. Con " Basics.True" [] , Scope $ pure $ pure true)
86+ , (Pattern. Con " Basics.False" [] , Scope $ pure $ pure false)
87+ ]
88+
8489(|>) :: Expression v -> Expression v -> Expression v
8590(|>) e1 e2 = apps " Basics.|>" [e1, e2]
8691
@@ -133,9 +138,6 @@ foldMapGlobals f expr =
133138 (bifoldMap (Pattern. foldMapGlobals f) (foldMapGlobals f . Bound. fromScope))
134139 branches
135140
136- If e e1 e2 ->
137- foldMapGlobals f e <> foldMapGlobals f e1 <> foldMapGlobals f e2
138-
139141 List es ->
140142 foldMap (foldMapGlobals f) es
141143
0 commit comments