From Lambda to Ledger: An Architectural Comparison of Plinth and Plutarch
To appear in: FUNARCH '26
Plinth and Plutarch are two languages for writing smart contracts on the Cardano blockchain. Both are based on Haskell, have been used in production over the past few years, and share the same host ecosystem and compilation target. However, they have strikingly different architectures: Plinth compiles a subset of Haskell through deep integration with GHC, while Plutarch represents its programs as explicitly constructed typed terms embedded within Haskell. These choices lead to different balances between abstraction and performance, reuse and specialization, and user experience and implementation effort.
This paper presents an architectural comparison of these two approaches, grounded in the authors’ experience implementing and using both languages. We analyze their design trade-offs across multiple dimensions, and present an empirical evaluation on representative programs, examining how architectural choices affect source code, generated target code, and compiler error messages. Our comparison offers broader insights for language design, both within and beyond the blockchain domain.
