Changelog History

v0.1.4.0
July 24, 2016 
v0.1.3.1 Changes
 add SF data type. It is the type of stateful functions, and it is the same with SMH type without empty storage.

v0.1.3.0 Changes
April 21, 2016 remove GADTs extension,
SM a b
becomesSM s a b
.  change
type SMState s a b = (s > a > (SM s a b, b))
tonewtype TF s a b = TF (s > a > (SM s a b, b))
. The reason is that TF is a SM without initial storage, and it is the instance of several class type.  change
data SM s a b = SM (SMState s a b) s
todata SM s a b = SM (TF s a b) s
. SM s a b
is no longer an instance of Arrow, butSM () a b
is still an instance of Arrow.type SMH a b = SM () a b
. the
SMFunctor
class, andsmfmap
helps you to useSM s a b
as a normal function.  more examples.
๐ Now, the GADTs extension has been removed, and a lot of things should been cleared up. For now, I just keep them right there.
SM a b
has became toSM s a b
, so it is not an instance of the Arrow class anymore. Instead, we are able to keep the information about each machine's storage. Also, we provide the same Arrow functions, such as<<<<
,>>>>
,****
and&&&&
.type SMH a b = SM () a b
is still an Arrow instance, andhideStorage :: SM s a b > SM () a b
can help you transformSM s a b
toSM () a b
, if you want to use the Arrow notation. The cost is that the information about storage is gone.type SMState s a b = (s > a > (SM a b, b))
becomesdata TF = TF (s > a > (SM a b, b))
. The reason about this changing is thattype SMState
is just defining an alias of an existing type, So it is not possible to define a instance forSMState
. We observed that(s > a > (SM a b, b))
is similiar withST monad
, and its behavior is also similiar withST monad
. I think it is a good chance to do something around.Although our original idea is removing
Time
concept and addingStorage
concept, now it is much closer withCircuit
model orState
model thanAFRP
. More precisely, it is a mixture ofCircuit
andState
.  remove GADTs extension,

v0.1.2.0 Changes
April 12, 2016 switch
SM :: s > (SMState s a b) > SM a b
toSM :: (SMState s a b) > s > SM a b
.  the ArrowApp instance
 new functions: foldlSM, foldlDelaySM, delaySM, concatSM.
 working on Event, several undefined functions about Event.
 It's always hard to pick a name! 'Event', 'Evnt', 'Ev' or 'E'?
 switch