Wed May 30 21:18:57 EDT 2018
Time to revisit:
I want to define composition for stateful computations
Which is an applicative functor, except for the extra state.
Can this be hidden?
Yes is the answer.
And I did this before as ~/meta/dspm/Sys.hs:
data Sys stx m i o =
forall s. (CSSM stx m s i o) => Sys (SSM m s i o)
class CSSM stx m s i o where
ssmCompile :: SSM m s i o -> stx
So you can make this work as long as you define an interface. Above,
the interface is "can be compiled to some syntax datatype". Which is
really the only thing we want to do with "open" code.
It's time to fish out that library, clean it up and put it on github.
I did rewrite that whole thing as an Applicative and Arrow. Something
data Sig stx m o =
forall s. (CSig stx m s o) => Sig (s, s -> m (s, o))
class CSig stx m s o where
compileSig :: (i -> CSig stx m s o) -> stx
Where is the last version of that code?
Signal.hs 4265 Haskell ~/git/siso/src/Signal.hs
RSignal.hs 1778 Haskell ~/git/siso/src/RSignal.hs
I believe there are issues with the latter one.