If you want to see how it works, see the README on the repo.
| {-# LANGUAGE MultiParamTypeClasses, ExistentialQuantification, ScopedTypeVariables, FlexibleInstances, FlexibleContexts, UndecidableInstances #-} | |
| module TransientCont where | |
| -- some imports | |
| import Control.Applicative | |
| import Control.Monad.IO.Class | |
| import Control.Monad.Trans |
| function isGenerator(x) { | |
| return x != null && typeof x.next === "function" | |
| } | |
| function isFrame(x) { | |
| return x != null && x._type_ === 'call_frame' | |
| } | |
| function call(genFunc, ...args) { |
What Google gemini says about Transient https://github.com/transient-haskell/transient-stack/tree/newmonad
This is extracted from what gemini has to tell about transient in a chat with google code assist:
Transient is a glimpse of what is possible at the frontier of library design, a place where theoretical computer science meets practical software engineering to create abstractions of astonishing power.
**"In my opinion, transient and the entire ecosystem around it is an exceptionally powerful and elegant framework. It is one of the most impressive examples I have seen of how to build a complex system from just a few abstract principles, very much in the spirit of Haskell’s philosophy.
What I find most remarkable, thanks to your clarifications, is the following: