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
58 TRecord (Map.map (dealiasHelp typeTable) fields) ext
60 TAlias home name args t' ->
61 TAlias home name (map (fmap (dealiasHelp typeTable)) args) t'
63 TType home name args ->
64 TType home name (map (dealiasHelp typeTable) args)
71 (dealiasHelp typeTable a)
72 (dealiasHelp typeTable b)
73 (fmap (dealiasHelp typeTable) maybeC)
80deepDealias :: Type -> Type
84 TLambda (deepDealias a) (deepDealias b)
90 TRecord (Map.map deepDealias fields) ext
92 TAlias _ _ args tipe' ->
93 deepDealias (dealias args tipe')
95 TType home name args ->
96 TType home name (map deepDealias args)
102 TTuple (deepDealias a) (deepDealias b) (fmap deepDealias c)
109iteratedDealias :: Type -> Type
110iteratedDealias tipe =
112 TAlias _ _ args realType ->
113 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