@@ -39,7 +39,8 @@ import qualified Reporting.Region as R
3939
4040
4141data Expr
42− = Chr Text
42+ = Bool Bool
43+ | Chr Text
4344 | Str Text
4445 | Int Int
4546 | Float Double
@@ -186,62 +187,64 @@ instance Binary Global where
186187instance Binary Expr where
187188 put expr =
188189 case expr of
189− Chr a -> putWord8 0 >> put a
190− Str a -> putWord8 1 >> put a
191− Int a -> putWord8 2 >> put a
192− Float a -> putWord8 3 >> put a
193− VarLocal a -> putWord8 4 >> put a
194− VarGlobal a -> putWord8 5 >> put a
195− VarEnum a b -> putWord8 6 >> put a >> put b
196− VarBox a -> putWord8 7 >> put a
197− VarCycle a b -> putWord8 8 >> put a >> put b
198− VarDebug a b c d -> putWord8 9 >> put a >> put b >> put c >> put d
199− VarKernel a b -> putWord8 10 >> put a >> put b
200− List a -> putWord8 11 >> put a
201− Function a b -> putWord8 12 >> put a >> put b
202− Call a b -> putWord8 13 >> put a >> put b
203− TailCall a b -> putWord8 14 >> put a >> put b
204− If a b -> putWord8 15 >> put a >> put b
205− Let a b -> putWord8 16 >> put a >> put b
206− Destruct a b -> putWord8 17 >> put a >> put b
207− Case a b c d -> putWord8 18 >> put a >> put b >> put c >> put d
208− Accessor a -> putWord8 19 >> put a
209− Access a b -> putWord8 20 >> put a >> put b
210− Update a b -> putWord8 21 >> put a >> put b
211− Record a -> putWord8 22 >> put a
212− Unit -> putWord8 23
213− Tuple a b c -> putWord8 24 >> put a >> put b >> put c
214− Shader a -> putWord8 25 >> put a
190+ Bool a -> putWord8 0 >> put a
191+ Chr a -> putWord8 1 >> put a
192+ Str a -> putWord8 2 >> put a
193+ Int a -> putWord8 3 >> put a
194+ Float a -> putWord8 4 >> put a
195+ VarLocal a -> putWord8 5 >> put a
196+ VarGlobal a -> putWord8 6 >> put a
197+ VarEnum a b -> putWord8 7 >> put a >> put b
198+ VarBox a -> putWord8 8 >> put a
199+ VarCycle a b -> putWord8 9 >> put a >> put b
200+ VarDebug a b c d -> putWord8 10 >> put a >> put b >> put c >> put d
201+ VarKernel a b -> putWord8 11 >> put a >> put b
202+ List a -> putWord8 12 >> put a
203+ Function a b -> putWord8 13 >> put a >> put b
204+ Call a b -> putWord8 14 >> put a >> put b
205+ TailCall a b -> putWord8 15 >> put a >> put b
206+ If a b -> putWord8 16 >> put a >> put b
207+ Let a b -> putWord8 17 >> put a >> put b
208+ Destruct a b -> putWord8 18 >> put a >> put b
209+ Case a b c d -> putWord8 19 >> put a >> put b >> put c >> put d
210+ Accessor a -> putWord8 20 >> put a
211+ Access a b -> putWord8 21 >> put a >> put b
212+ Update a b -> putWord8 22 >> put a >> put b
213+ Record a -> putWord8 23 >> put a
214+ Unit -> putWord8 24
215+ Tuple a b c -> putWord8 25 >> put a >> put b >> put c
216+ Shader a -> putWord8 26 >> put a
215217
216218 get =
217219 do word <- getWord8
218220 case word of
219− 0 -> liftM Chr get
220− 1 -> liftM Str get
221− 2 -> liftM Int get
222− 3 -> liftM Float get
223− 4 -> liftM VarLocal get
224− 5 -> liftM VarGlobal get
225− 6 -> liftM2 VarEnum get get
226− 7 -> liftM VarBox get
227− 8 -> liftM2 VarCycle get get
228− 9 -> liftM4 VarDebug get get get get
229− 10 -> liftM2 VarKernel get get
230− 11 -> liftM List get
231− 12 -> liftM2 Function get get
232− 13 -> liftM2 Call get get
233− 14 -> liftM2 TailCall get get
234− 15 -> liftM2 If get get
235− 16 -> liftM2 Let get get
236− 17 -> liftM2 Destruct get get
237− 18 -> liftM4 Case get get get get
238− 19 -> liftM Accessor get
239− 20 -> liftM2 Access get get
240− 21 -> liftM2 Update get get
241− 22 -> liftM Record get
242− 23 -> pure Unit
243− 24 -> liftM3 Tuple get get get
244− 25 -> liftM Shader get
221+ 0 -> liftM Bool get
222+ 1 -> liftM Chr get
223+ 2 -> liftM Str get
224+ 3 -> liftM Int get
225+ 4 -> liftM Float get
226+ 5 -> liftM VarLocal get
227+ 6 -> liftM VarGlobal get
228+ 7 -> liftM2 VarEnum get get
229+ 8 -> liftM VarBox get
230+ 9 -> liftM2 VarCycle get get
231+ 10 -> liftM4 VarDebug get get get get
232+ 11 -> liftM2 VarKernel get get
233+ 12 -> liftM List get
234+ 13 -> liftM2 Function get get
235+ 14 -> liftM2 Call get get
236+ 15 -> liftM2 TailCall get get
237+ 16 -> liftM2 If get get
238+ 17 -> liftM2 Let get get
239+ 18 -> liftM2 Destruct get get
240+ 19 -> liftM4 Case get get get get
241+ 20 -> liftM Accessor get
242+ 21 -> liftM2 Access get get
243+ 22 -> liftM2 Update get get
244+ 23 -> liftM Record get
245+ 24 -> pure Unit
246+ 25 -> liftM3 Tuple get get get
247+ 26 -> liftM Shader get
245248 _ -> error "problem getting Opt.Expr binary"
246249
247250