package Ġio . github . aj oz . workshop . fsm Ċ Ċ /** Ċ Ġ* ĠDescri bes Ġavailable Ġtransitions Ġbetween Ġa ĠState ĠSymbol Ġpair Ġand Ġa ĠState . Ċ Ġ*/ Ċ data Ġclass ĠTrans itions < T , ĠV >( val Ġvalues : ĠMap < Match < T , ĠV >, ĠState < T >>) Ġ{ ĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠCreates Ġa Ġtransition Ġfunction Ġfrom Ġthe Ġgiven Ġarray Ġof Ġtransitions . ĠBe Ġaware Ġthat Ġthis Ġtransition Ġfunction ĊĠĠĠĠĠĠĠĠ Ġ* Ġdoesn 't Ġknow Ġwhat Ġto Ġdo Ġin Ġcase Ġof Ġa Ġmissing ĠState ĠSymbol Ġpair . ĠHere Ġwe Ġjust Ġsimply Ġexplode Ġ: P ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġfun Ġ< T , ĠV > Ġtransitions ( var arg Ġtransitions : ĠTrans itions < T , ĠV >): Ġ( State < T >, ĠSymbol < V >) Ġ-> ĠState < T > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġt Ġ= Ġtransitions . fold ( empty Map < Match < T , ĠV >, ĠState < T >> ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmap , Ġtrans Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmap Ġ+ Ġtrans . values ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfun ( st : ĠState < T >, Ġsy : ĠSymbol < V >): ĠState < T > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġstate Ġ= Ġt [ Match . match Of ( st , Ġsy )] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġstate !! Ġ// we Ġwant Ġthis Ġimplementation Ġto Ġdie Ġif Ġanything Ġbad Ġhappens Ġ:) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }