Thank you for the explanation, I think I pretty much understand what's going on 
now.
Indeed, nothing went wrong, it was just that I thought that the flag 
-fexpose-all-unfoldings would indeed put _all_ unfoldings in the interface 
file: even unfoldings that are bottom values.
For my use-case, I can just compile the file with -fno-strictness so that this 
top-level bottom value is never created in the first instance.

Here are the -dverbose-core2core files:
Compiled with no additional / default flags: 
https://raw.githubusercontent.com/christiaanb/clash-prelude/gh-pages/noflags.core
Compiled with -fexpose-all-unfoldings: 
https://raw.githubusercontent.com/christiaanb/clash-prelude/gh-pages/allunfoldings.core
Compiled with -fexpose-all-unfoldings -fno-strictness: 
https://raw.githubusercontent.com/christiaanb/clash-prelude/gh-pages/allunfoldings_nostrictness.core

-- Christiaan


On Apr 1, 2014, at 1:11 PM, Simon Peyton Jones <simo...@microsoft.com> wrote:

> These "absent" thunks appear when the strictness analyser works out that a 
> function does not use an argument at all.  Suppose 'f' does not use its first 
> argument. Then a call
>       f (...big expression...)
> will be replaced with
>       f (absentError "blah")
> 
> Such thunks almost invariably turn out to be dead code in the end, and are 
> discarded.  It's very unusual for them to survive to the end of compilation, 
> let alone as a top-level value.  But it's not impossible.
> 
> Just for curiosity, can you compile with -dverbose-core2core, and leave the 
> results somewhere I can see them?
> 
> In short, it doesn't look as if there is anything wrong.  If there's a good 
> reason you want to see the unfolding anyway, that's not impossible, but at 
> least you understand what is happening now.
> 
> Simon
_______________________________________________
Glasgow-haskell-users mailing list
Glasgow-haskell-users@haskell.org
http://www.haskell.org/mailman/listinfo/glasgow-haskell-users

Reply via email to