git.iko.soy/rowtype-yoga/purescript-native
on golang help sign in
Traverse top-down in replaceTypeClassDictionaries, to avoid traversing the wrong part of the AST, for an approx 30% performance improvement when using type classes.
commit37fe62165409575d8006c9004dcd59811e943b00 authorPhil Freeman <paf31@cantab.net> dateSat 15 Feb 2014, 17:15 (13 years ago) parent20e7de4
1 file changed+2−1
src/Language/PureScript/TypeChecker/Types.hs+2−1
src/Language/PureScript/TypeChecker/Types.hs+2−1
@@ -47,6 +47,7 @@ import qualified Data.Data as D
4747import Data.Generics
4848 (everythingWithContext, mkM, everywhereM, everything, mkT,
4949 something, everywhere, mkQ)
50+import Data.Generics.Extras
5051
5152import Language.PureScript.Values
5253import Language.PureScript.Types
@@ -249,7 +250,7 @@ overTypes f = everywhere (mkT f)
249250-- Replace type class dictionary placeholders with inferred type class dictionaries
250251--
251252replaceTypeClassDictionaries :: ModuleName -> Value -> Check Value
252−replaceTypeClassDictionaries mn = everywhereM (mkM go)
253+replaceTypeClassDictionaries mn = everywhereM' (mkM go)
253254 where
254255 go (TypeClassDictionary constraint dicts) = entails mn dicts constraint
255256 go other = return other