<div dir="auto"><div>I don't know what all that means exactly (especially since GHC's demand signatures have changed recently in a way I don't understand at all). But for hiding divergence, one option is to use a module with demand analysis disabled. Try {-# options_ghc -fno-strictness #-}. You'll likely need to put oops in its own module to avoid interfering with desired optimizations.<br><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Fri, Jan 20, 2023, 4:36 AM Michael Sperber <<a href="mailto:sperber@deinprogramm.de">sperber@deinprogramm.de</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><br>
I'm trying to port Conal Elliott's ConCat plugin from ghc 8 to 9, and<br>
the divergence checker foils me.<br>
<br>
Background: The plugin works by transforming calls to a pseudo-function<br>
toCcc' defined like so:<br>
<br>
-- | Pseudo function to trigger rewriting to TOCCC form.<br>
toCcc' :: forall k a b. (a -> b) -> (a `k` b)<br>
toCcc' _ = oops "toCcc' called"<br>
{-# NOINLINE toCcc' #-}<br>
<br>
For ghc 8, oops was defined like so:<br>
<br>
module ConCat.Misc where<br>
<br>
-- | Pseudo function to fool GHC's divergence checker.<br>
oops :: String -> b<br>
oops str = errorWithStackTrace ("Oops: "++str)<br>
{-# NOINLINE oops #-}<br>
<br>
... but unfortunately, ghc 9 is not so easily fooled and reports <A>x<br>
for toCcc'.  Is there any way to prevent this that works for ghc 9?<br>
<br>
Help would be much appreciated!<br>
<br>
-- <br>
Regards,<br>
Mike<br>
_______________________________________________<br>
Glasgow-haskell-users mailing list<br>
<a href="mailto:Glasgow-haskell-users@haskell.org" target="_blank" rel="noreferrer">Glasgow-haskell-users@haskell.org</a><br>
<a href="http://mail.haskell.org/cgi-bin/mailman/listinfo/glasgow-haskell-users" rel="noreferrer noreferrer" target="_blank">http://mail.haskell.org/cgi-bin/mailman/listinfo/glasgow-haskell-users</a><br>
</blockquote></div></div></div>