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