úÎÊÙ     !(c) Hanzhong Xu, Meng Meng 2016,  MIT License hanzh.xu@gmail.com  experimental  portable Safe%&Z type, there are 4 different events: event a, no event, error event string and exit event.!(c) Hanzhong Xu, Meng Meng 2016,  MIT License hanzh.xu@gmail.com  experimental  portable Safe%& ( is a type representing a state machine.  @ is the transition function s: storage, a: input, b: output 'It is the same with the SM constructor. .build a simple SM which have only one SMState.  build a SM which always return b the same with foldl;the difference from foldlSM is it output the storage first.Ddelay the input with given value. delaySM = foldlDelaySM (const id)\converts SM a b -> SM [a] [b], it is very useful to compose SM a [b] and SM b c to SM a [c].execute SM a b with input [a].%  !"#$%&'()*+,1-./0123456789:;<=>?@ABCDEFGHIJKL   $  !"#$%&'()*+,M       !"#$%&'()*+,-./0./1./2./3./4./5./6./7./8./9./:./;./<./<./=./>./?./@./A./B./C./D./E./F./G./H./I./I./J./K.LM.LNO#AFSM-0.1.2.0-53Ebo1jmnGVHpa8Bv0G8CmControl.AFSM.Event Control.AFSMEventNoEventErrEvent ExitEvent $fShowEvent $fEqEvent $fOrdEventSMSMStatenewSMsimpleSMconstSMfoldlSM foldlDelaySMdelaySMexecSMconcatSMidSMexec $fFunctorSM $fArrowLoopSM$fArrowApplySM$fArrowChoiceSM $fArrowSM$fCategoryTYPESMholdSMfilterSM eventOutSMeventSM slowdownSM composeSMarrSMfirstSMsecondSM productSMfanoutSMleftSMrightSMsumSMfaninSMappSMloopSMfmapSMbase Control.ArrowleftApp^<<<<^>>^^>>returnAArrowarrfirstsecond***&&&Kleisli runKleisli ArrowZero zeroArrow ArrowPlus<+> ArrowChoice|||+++leftright ArrowApplyapp ArrowMonad ArrowLooploopControl.Category>>><<<