on master help sign in
style: conform to modern style guide
0bc67ddEvan Czaplicki
src/Type/Fragment.hs+23−6
@@ -1,3 +1,4 @@
1+{-# OPTIONS_GHC -Wall #-}
1module Type.Fragment where
2module Type.Fragment where
2
3
3import qualified Data.List as List
4import qualified Data.List as List
@@ -12,15 +13,31 @@ data Fragment = Fragment
12 , typeConstraint :: TypeConstraint
13 , typeConstraint :: TypeConstraint
13 }
14 }
14
15
15−emptyFragment = Fragment Map.empty [] (noneNoDocs CTrue)
16
16
17+emptyFragment :: Fragment
18+emptyFragment =
19+ Fragment Map.empty [] (noneNoDocs CTrue)
20+
21+
22+joinFragment :: Fragment -> Fragment -> Fragment
17−joinFragment f1 f2 = Fragment
23+joinFragment f1 f2 =
24+ Fragment
25+ { typeEnv =
18− { typeEnv = Map.union (typeEnv f1) (typeEnv f2)
26+ Map.union (typeEnv f1) (typeEnv f2)
27+
28+ , vars =
19− , vars = vars f1 ++ vars f2
29+ vars f1 ++ vars f2
30+
31+ , typeConstraint =
20− , typeConstraint = typeConstraint f1 /\ typeConstraint f2
32+ typeConstraint f1 /\ typeConstraint f2
21 }
33 }
22
34
23−joinFragments = List.foldl' (flip joinFragment) emptyFragment
24
35
36+joinFragments :: [Fragment] -> Fragment
37+joinFragments =
38+ List.foldl' (flip joinFragment) emptyFragment
39+
40+
41+toScheme :: Fragment -> Scheme Type Variable
25toScheme fragment =
42toScheme fragment =
26 Scheme [] (vars fragment) (typeConstraint fragment) (typeEnv fragment)
43 Scheme [] (vars fragment) (typeConstraint fragment) (typeEnv fragment)