Haskell HDK

Haskell HDK

motivation

currently, Holochain only has an HDK for Rust.

for Sacred Capital’s Reputation Domain Specific Language, we are considering using Haskell either as the DSL itself, or as the implementation language for a shallowly embedded DSL.

Haskell offers us powerful language features like type classes and higher-kinded types, helpful libraries relevant to wrangling units in different dimensions, and packages for probabilistic programming. some of these features were planned to be built into a custom DSL, and we are now assessing whether doing the work of building a Haskell HDK would allow us to skip some custom language development work.

thus, having some sense for the scope of work of implementing an HDK, and the potential maintainenance work to keep it compatible as RSM evolves, informs an important near-term strategic decision for the project.

main questions

how much work is it to build an HDK for Holochain RSM?

how “standard” is the WASM API boundary between HDK apps and Holochain core?

how stable are the underlying APIs that HDKs rely on? how much maintenance work might there be to keep an HDK up to date?

changes in relation to Redux?

we found some related posts which are a bit old, and were written in the Holochain Redux era: 1 2 3.

how does HDK development now, with RSM, compare to before, with Redux?

are links 2 & 3 still relevant or useful to a would-be RSM HDK builder?


thanks!
@sidsthalekar, @pospi, @mhueschen

8 Likes

since this post continues to attract a trickle of likes :slightly_smiling_face:, I want to add some more context:

Sacred Capital (now publicly represented as Neighbourhoods) have decided to go with Rust and the (official) Rust HDK. we decided that implementing and maintaining a separate HDK was not worth it for us.

I continue to be interested in Haskell as a language for writing hApps, though, but feel it’s still pretty early to develop a 3rd party HDK (due to changes likely to occur in Holochain core) and it’s unlikely I’ll have time free for such a project anytime soon.

the most viable approach is probably to wrap the Rust HDK in Haskell. an effort was started here but did not progress far, to my knowledge. there exists a good amount of prior art, and a number of libraries to help with calling-Rust-from-Haskell, for example this & this & this.

1 Like