on master help sign in
Add binary instance for Main type in AST.Expr.Canonical
fa3c0a7Evan Czaplicki
src/AST/Expression/Canonical.hs+26
@@ -11,6 +11,7 @@ module AST.Expression.Canonical
11 where
11 where
12
12
13
13
14+import Data.Binary
14import Data.Monoid ((<>))
15import Data.Monoid ((<>))
15import Data.Text (Text)
16import Data.Text (Text)
16import qualified Data.Text.Lazy as LText
17import qualified Data.Text.Lazy as LText
@@ -160,3 +161,28 @@ collectLambdas lexpr@(A.A _ expr) =
160
161
161 _ ->
162 _ ->
162 ([], lexpr)
163 ([], lexpr)
164+
165+
166+
167+-- BINARY
168+
169+
170+instance Binary Main where
171+ put main =
172+ case main of
173+ VDom ->
174+ putWord8 0
175+
176+ NoFlags ->
177+ putWord8 1
178+
179+ Flags tipe ->
180+ putWord8 2 >> put tipe
181+
182+ get =
183+ do word <- getWord8
184+ case word of
185+ 0 -> pure VDom
186+ 1 -> pure NoFlags
187+ 2 -> pure Flags <*> get
188+ _ -> error "problem getting Can.Main binary"