Sat Aug 18 02:13:57 EDT 2018

Clash, Lava

Clash uses a static analysis approach.  ( Implemented as plugin? )

Different from eDSL like the Lava languages.

I see no monads..
Brings me to sharing.

How do we turn a Lava program into a Graph?

Use a Monad – Xilinx Lava does this.

Tag every binding with a unique tag – Hydra does this.

Automate the introduction of unique tags.
 Destroys referential transparency.
 Chalmers Lava does this.
 Not a big problem in practice.

Use a function that can see certain classes of sharing.
 Like a reflective parser.
 Kansas Lava does this.
 Like Chalmers Lava, can be unsafe.

Data.Reify uses StableNames

Seems like dirty hacks galore..

Stick to Monad.  Less surprises.

Some more on Chalmers Lava: