on master help sign in
Add AST.Type.iteratedDealias
3821d9aEvan Czaplicki
src/AST/Type.hs+11−1
@@ -2,7 +2,7 @@ module AST.Type
2 ( Raw, Raw'(..)
2 ( Raw, Raw'(..)
3 , Canonical(..), Aliased(..)
3 , Canonical(..), Aliased(..)
4 , Port(..), getPortType
4 , Port(..), getPortType
5− , deepDealias, dealias
5+ , deepDealias, iteratedDealias, dealias
6 , collectLambdas
6 , collectLambdas
7 , fieldMap
7 , fieldMap
8 , tuple
8 , tuple
@@ -114,6 +114,16 @@ deepDealias tipe =
114 App (deepDealias f) (map deepDealias args)
114 App (deepDealias f) (map deepDealias args)
115
115
116
116
117+iteratedDealias :: Canonical -> Canonical
118+iteratedDealias tipe =
119+ case tipe of
120+ Aliased _ args realType ->
121+ iteratedDealias (dealias args realType)
122+
123+ _ ->
124+ tipe
125+
126+
117dealias :: [(String, Canonical)] -> Aliased Canonical -> Canonical
127dealias :: [(String, Canonical)] -> Aliased Canonical -> Canonical
118dealias args aliasType =
128dealias args aliasType =
119 case aliasType of
129 case aliasType of