Interrelationship of `Data`, `BuiltinData`, and other Data-Related Alonzo Types

Because I sometimes find confusing the interrelationships of Data, BuiltinData, and other data-related types on Alonzo, I drew a diagram to clarify them:

If you know of any types or classes that are missing, I’d be happy to add them.


Somewhat related: Do you know of any tools that can generate architecture/design diagrams for Haskell / Plutus?
Unrelated side tangent: Are you just using GHCI or is there a better developer environment available?

Apparently I have wildly taken for granted all the powerful IDE and other tools for OOP …
Been relying on grep and old-school development tactics via terminal over here!

The diagram in the original post was generated using graphviz because I needed a special-purpose diagram (not standard UML, for instance). I haven’t used automated generators for Haskell software diagrams, but I imagine that there are some on hackage.

I formerly used Leksah, then hdevtools+vim, then ghcmod+vim as an IDE, but these tools went through difficult periods in the past. Since then I’ve used vim (with various plug-ins) integrated with Haskell Language Server, hoogle (command-line and local server), hlint, ghci or cabal repl, and pointfree/pointful, all within a tmux session. When needed, I use threadscope and profilers, but these aren’t integrated.

One thing I appreciate about functional programming relative to OOP is that reasoning about effects is easier and safer. I think that affects what one needs in an IDE, but I don’t know how to articulate that yet.

1 Like

graphviz is pretty automated if you write a little recursive snippet to build the nodes of the scene graph. Or at least I was able to do that with a rule engine dependency graph for Java in the past. I’m just spoiled. I like being able to create images from code and vice versa with tools like Enterprise Architect etc.

I’ll have to check out some of those plugins as I have been using vanilla vi + ghci mostly which is good enough for getting through Learn you a Haskell but not good enough for searching and dissecting Plutus examples and implementations across repositories.

A debt of gratitude is in order for the bit by bit instructional exercise. Brings about the ideal result! The arrangement worked for me on account of the local area and the individuals for the arrangement.