úÎ8     !(c) Hanzhong Xu, Meng Meng 2016,  MIT License hanzh.xu@gmail.com  experimental  portable Safe!"!(c) Hanzhong Xu, Meng Meng 2016,  MIT License hanzh.xu@gmail.com  experimental  portable Safe!"( is a type representing a state machine.&newSM is the same with SM constructor.=simpleSM is to build a simple SM which have only one SMState. (constSM build a SM which always return b execute SM a b with input [a]. cexecSM converts SM a b -> SM [a] [b], it is very useful to compose SM a [b] and SM b c to SM a [c].   , !"#$%&'()*+,-./0123456789:;<     =      ! " # $ % & ' ( ) * + , - . / 0 1 1 2 3 4 5 6 7 8 9 : ; ; <=>=?@AFSM_81w9CH9iUmIKM2TQmprdkdControl.AFSM.Event Control.AFSMEventENoEErrEExitESMSMStatenewSMsimpleSMconstSMexecexecSMidSM composeSMarrSMfirstSMsecondSM productSMfanoutSMleftSMrightSMsumSMfaninSMloopSM $fArrowLoopSM$fArrowChoiceSM $fArrowSM $fCategory*SMbase Control.Arrowarrfirstapp|||loopleftApp^<<<<^>>^^>>returnA&&&***secondArrow runKleisliKleisli zeroArrow ArrowZero<+> ArrowPlus+++rightleft ArrowChoice ArrowApply ArrowMonad ArrowLoopControl.Category>>><<<