@@ -43,8 +43,11 @@ module Language.PureScript.TypeChecker.Types (
4343
4444import Data.List
4545import Data.Maybe (maybeToList, isNothing, isJust, fromMaybe)
46+import Data.Function (on)
47+import Data.Ord (comparing)
48+import Data.Monoid
4649import Data.Generics
47− (everythingWithContext, mkM, something, mkQ)
50+ (everythingWithContext, mkM, mkQ)
4851import Data.Generics.Extras
4952
5053import Language.PureScript.Declarations
@@ -69,9 +72,6 @@ import Control.Arrow (Arrow(..))
6972
7073import qualified Data.Map as M
7174import qualified Data.HashMap.Strict as H
72−import Data.Function (on)
73−import Data.Ord (comparing)
74−import Data.Monoid ((<>))
7575
7676instance Partial Type where
7777 unknown = TUnknown
@@ -478,10 +478,12 @@ skolemEscapeCheck root@TypedValue{} =
478478 collect _ = []
479479 go _ scos = ([], scos)
480480 findBindingScope :: SkolemScope -> Maybe Value
481− findBindingScope sco = something (mkQ Nothing go') root
481+ findBindingScope sco =
482+ let (_, f, _, _, _) = everythingOnValues mappend (const mempty) go' (const mempty) (const mempty) (const mempty)
483+ in getFirst $ f root
482484 where
483− go' val@(TypedValue _ _ (ForAll _ _ (Just sco'))) | sco == sco' = Just val
484− go' _ = Nothing
485+ go' val@(TypedValue _ _ (ForAll _ _ (Just sco'))) | sco == sco' = First (Just val)
486+ go' _ = mempty
485487skolemEscapeCheck val = throwError $ mkErrorStack "Untyped value passed to skolemEscapeCheck" (Just (ValueError val))
486488
487489-- |