1{-# OPTIONS_GHC -Wall #-}
2{-# LANGUAGE OverloadedStrings #-}
12import qualified Data.Map as Map
14import AST.Canonical (Type(..), AliasType(..))
15import qualified Elm.Name as N
22delambda :: Type -> [Type]
36dealias :: [(N.Name, Type)] -> AliasType -> Type
37dealias args aliasType =
40 dealiasHelp (Map.fromList args) tipe
46dealiasHelp :: Map.Map N.Name Type -> Type -> Type
47dealiasHelp typeTable tipe =
51 (dealiasHelp typeTable a)
52 (dealiasHelp typeTable b)
55 Map.findWithDefault tipe x typeTable
59 (Map.map (dealiasHelp typeTable) fields)
60 (fmap (dealiasHelp typeTable) ext)
62 TAlias home name args t' ->
63 TAlias home name (map (fmap (dealiasHelp typeTable)) args) t'
65 TType home name args ->
66 TType home name (map (dealiasHelp typeTable) args)
73 (dealiasHelp typeTable a)
74 (dealiasHelp typeTable b)
75 (fmap (dealiasHelp typeTable) maybeC)
82deepDealias :: Type -> Type
86 TLambda (deepDealias a) (deepDealias b)
92 TRecord (Map.map deepDealias fields) (fmap deepDealias ext)
94 TAlias _ _ args tipe' ->
95 deepDealias (dealias args tipe')
97 TType home name args ->
98 TType home name (map deepDealias args)
104 TTuple (deepDealias a) (deepDealias b) (fmap deepDealias c)
111iteratedDealias :: Type -> Type
112iteratedDealias tipe =
114 TAlias _ _ args realType ->
115 iteratedDealias (dealias args realType)
keysesc to close
- j k
- move down, up
- enter
- open
- esc
- back, or up a level
- 1 2 3 4
- readme, files, commits, refs
- /
- filter
- y
- copy the clone command
- c
- compare the chosen commit with another (or shift-click both)
- ?
- show or hide this list