[Haskell-cafe] sharing

Emil Axelsson 78emil at gmail.com
Wed Feb 5 18:18:50 UTC 2020


Den 2020-02-05 kl. 17:40, skrev Tom Schouten:
> I think there is probably a use for a generic library that can do this 
> kind of sharing recovery. Still I'm not quite happy with the "can be 
> unsafe in some cases" remarks and would like to learn more. However 
> there might be a tradeoff to use this as a simplified interface to 
> something that is implemented in a safe monadic style under the hood.

Here's the generic library that Kansas Lava uses for sharing recovery:

https://hackage.haskell.org/package/data-reify

The original Observable Sharing paper explains in more detail the 
properties of observable sharing:

https://www.researchgate.net/profile/David_Sands3/publication/225679607_Observable_Sharing_for_Functional_Circuit_Description/links/0a85e530b7beb39a9c000000.pdf

Basically, the worst thing that can happen is that you get less sharing 
(and maybe in some cases even more) than you expect because of whether 
or not GHC decides to inline something. Also, beware that overloaded 
definitions may not be shared due to the extra dictionary argument.

In practice, I've had very few surprises with observable sharing. But of 
course, the risk of unexpected duplication is not ideal when we're 
talking hardware :-)

/ Emil




More information about the Haskell-Cafe mailing list