@@ -128,31 +128,48 @@ symerr :: forall e m a . MonadLint e m => Text -> m a
128128symerr = evalError @ (Symbolic m ) . ErrorCall . toString
129129
130130renderSymbolic :: MonadLint e m => Symbolic m -> m Text
131- renderSymbolic = unpackSymbolic >=> \ case
132- NAny -> pure " <any>"
133- NMany xs -> fmap (Text. intercalate " , " ) $ forM xs $ \ case
134- TConstant ys -> fmap (Text. intercalate " , " ) $ forM ys $ pure . \ case
135- TInt -> " int"
136- TFloat -> " float"
137- TBool -> " bool"
138- TNull -> " null"
139- TStr -> pure " string"
140- TList r -> do
141- x <- renderSymbolic =<< demand r
142- pure $ " [" <> x <> " ]"
143- TSet Nothing -> pure " <any set>"
144- TSet (Just s) -> do
145- x <- traverse (renderSymbolic <=< demand) s
146- pure $ " {" <> show x <> " }"
147- f@ (TClosure p) -> do
148- (args, sym) <- do
149- f' <- mkSymbolic [f]
150- lintApp (NAbs (void p) () ) f' everyPossible
151- args' <- traverse renderSymbolic args
152- sym' <- renderSymbolic sym
153- pure $ " (" <> show args' <> " -> " <> sym' <> " )"
154- TPath -> pure " path"
155- TBuiltin _n _f -> pure " <builtin function>"
131+ renderSymbolic =
132+ (\ case
133+ NAny -> pure " <any>"
134+ NMany xs ->
135+ Text. intercalate " , " <$>
136+ traverse
137+ (\ case
138+ TConstant ys ->
139+ Text. intercalate " , " <$>
140+ traverse
141+ (pure .
142+ \ case
143+ TInt -> " int"
144+ TFloat -> " float"
145+ TBool -> " bool"
146+ TNull -> " null"
147+ )
148+ ys
149+ TStr -> pure " string"
150+ TList r ->
151+ do
152+ x <- renderSymbolic =<< demand r
153+ pure $ " [" <> x <> " ]"
154+ TSet Nothing -> pure " <any set>"
155+ TSet (Just s) ->
156+ do
157+ x <- traverse (renderSymbolic <=< demand) s
158+ pure $ " {" <> show x <> " }"
159+ f@ (TClosure p) ->
160+ do
161+ (args, sym) <-
162+ do
163+ f' <- mkSymbolic [f]
164+ lintApp (NAbs p () ) f' everyPossible
165+ args' <- traverse renderSymbolic args
166+ sym' <- renderSymbolic sym
167+ pure $ " (" <> show args' <> " -> " <> sym' <> " )"
168+ TPath -> pure " path"
169+ TBuiltin _n _f -> pure " <builtin function>"
170+ )
171+ xs
172+ ) <=< unpackSymbolic
156173
157174-- This function is order and uniqueness preserving (of types).
158175merge
0 commit comments