// ĠFIR _ IGNORE Ċ // ĠWITH _ STD LIB Ċ data Ġclass ĠTuple ( val Ġx : ĠInt , Ġval Ġy : ĠInt ) Ċ Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠInt Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠâĶĤ Ġfun Ġ(( P 1 ) Ġ-> ĠR ). invoke ( P 1 ): ĠR Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠâĶĤ ĠâĶĤ Ġconstructor ĠTuple ( Int , ĠInt ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠâĶĤ ĠâĶĤ ĠâĶĤ ĠĠĠĠ ĠInt Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠâĶĤ ĠâĶĤ ĠâĶĤ ĠĠĠĠ ĠâĶĤ Ġ ĠInt Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠâĶĤ ĠâĶĤ ĠâĶĤ ĠĠĠĠ ĠâĶĤ Ġ ĠâĶĤ Ċ inline Ġfun Ġuse ( f : Ġ( Tuple ) Ġ-> ĠInt ) Ġ= Ġf ( Tuple ( 1 , Ġ 2 )) Ċ Ċ fun Ġfoo (): ĠInt Ġ{ Ċ // ĠĠĠĠĠ Ġ( Tuple ) Ġ-> ĠInt Ċ // ĠĠĠĠĠ ĠâĶĤ ĊĠĠĠ Ġval Ġl 1 Ġ= Ġ{ Ġt : ĠTuple Ġ-> Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfoo .< anonymous >. t : ĠTuple Ċ // ĠĠĠĠĠĠĠĠĠ ĠInt ĠâĶĤ Ġval Ġ( Tuple ). x : ĠInt Ċ // ĠĠĠĠĠĠĠĠĠ ĠâĶĤ ĠĠ ĠâĶĤ ĠâĶĤ ĊĠĠĠĠĠĠĠ Ġval Ġx Ġ= Ġt . x Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfoo .< anonymous >. t : ĠTuple Ċ // ĠĠĠĠĠĠĠĠĠ ĠInt ĠâĶĤ Ġval Ġ( Tuple ). y : ĠInt Ċ // ĠĠĠĠĠĠĠĠĠ ĠâĶĤ ĠĠ ĠâĶĤ ĠâĶĤ ĊĠĠĠĠĠĠĠ Ġval Ġy Ġ= Ġt . y Ċ // ĠĠĠĠĠ Ġval Ġfoo .< anonymous >. x : ĠInt Ċ // ĠĠĠĠĠ ĠâĶĤ Ġfun Ġ( Int ). plus ( Int ): ĠInt Ċ // ĠĠĠĠĠ ĠâĶĤ ĠâĶĤ Ġval Ġfoo .< anonymous >. y : ĠInt Ċ // ĠĠĠĠĠ ĠâĶĤ ĠâĶĤ ĠâĶĤ ĊĠĠĠĠĠĠĠ Ġx Ġ+ Ġy ĊĠĠĠ Ġ} Ċ // Ġ Ġfun Ġuse (( Tuple ) Ġ-> ĠInt ): ĠInt Ċ // Ġ ĠâĶĤ ĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfoo .< anonymous >. x : ĠInt Ċ // Ġ ĠâĶĤ ĠĠĠĠĠ ĠInt ĠĠĠĠĠ ĠâĶĤ Ġfun Ġ( Int ). plus ( Int ): ĠInt Ċ // Ġ ĠâĶĤ ĠĠĠĠĠ ĠâĶĤ Ġ ĠInt ĠĠ ĠâĶĤ ĠâĶĤ Ġval Ġfoo .< anonymous >. y : ĠInt Ċ // Ġ ĠâĶĤ ĠĠĠĠĠ ĠâĶĤ Ġ ĠâĶĤ ĠĠĠĠ ĠâĶĤ ĠâĶĤ ĠâĶĤ ĊĠĠĠ Ġuse Ġ{ Ġ( x , Ġy ) Ġ-> Ġx Ġ+ Ġy Ġ} Ċ Ċ // ĠĠĠĠĠĠĠĠ Ġfun Ġuse (( Tuple ) Ġ-> ĠInt ): ĠInt Ċ // ĠĠĠĠĠĠĠĠ ĠâĶĤ ĊĠĠĠ Ġreturn Ġuse Ġ{ Ċ // ĠĠĠĠĠ ĠUnit Ċ // ĠĠĠĠĠ ĠâĶĤ ĠĠ Ġfoo .< anonymous >. it : ĠTuple Ċ // ĠĠĠĠĠ ĠâĶĤ ĠĠ ĠâĶĤ Ġ Ġval Ġ( Tuple ). x : ĠInt Ċ // ĠĠĠĠĠ ĠâĶĤ ĠĠ ĠâĶĤ Ġ ĠâĶĤ ĠE Q Ġoperator Ġcall Ċ // ĠĠĠĠĠ ĠâĶĤ ĠĠ ĠâĶĤ Ġ ĠâĶĤ ĠâĶĤ Ġ ĠInt ĠĠĠĠĠĠĠĠĠĠ ĠInt Ċ // ĠĠĠĠĠ ĠâĶĤ ĠĠ ĠâĶĤ Ġ ĠâĶĤ ĠâĶĤ Ġ ĠâĶĤ ĠĠĠĠĠĠĠĠĠĠĠĠ ĠâĶĤ ĊĠĠĠĠĠĠĠ Ġif Ġ( it . x Ġ== Ġ 0 ) Ġreturn @ foo Ġ 0 Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfoo .< anonymous >. it : ĠTuple Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠâĶĤ Ġ Ġval Ġ( Tuple ). y : ĠInt Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠâĶĤ Ġ ĠâĶĤ ĊĠĠĠĠĠĠĠ Ġreturn @ use Ġit . y ĊĠĠĠ Ġ} Ċ } Ċ Ċ fun Ġbar (): ĠInt Ġ{ Ċ // ĠĠĠĠĠĠĠĠ Ġfun Ġuse (( Tuple ) Ġ-> ĠInt ): ĠInt Ċ // ĠĠĠĠĠĠĠĠ ĠâĶĤ ĊĠĠĠ Ġreturn Ġuse Ġlambda @{ Ċ // ĠĠĠĠĠ ĠUnit Ċ // ĠĠĠĠĠ ĠâĶĤ ĠĠ Ġbar .< anonymous >. it : ĠTuple Ċ // ĠĠĠĠĠ ĠâĶĤ ĠĠ ĠâĶĤ Ġ Ġval Ġ( Tuple ). x : ĠInt Ċ // ĠĠĠĠĠ ĠâĶĤ ĠĠ ĠâĶĤ Ġ ĠâĶĤ ĠE Q Ġoperator Ġcall Ċ // ĠĠĠĠĠ ĠâĶĤ ĠĠ ĠâĶĤ Ġ ĠâĶĤ ĠâĶĤ Ġ ĠInt ĠĠĠĠĠĠĠĠĠĠ ĠInt Ċ // ĠĠĠĠĠ ĠâĶĤ ĠĠ ĠâĶĤ Ġ ĠâĶĤ ĠâĶĤ Ġ ĠâĶĤ ĠĠĠĠĠĠĠĠĠĠĠĠ ĠâĶĤ ĊĠĠĠĠĠĠĠ Ġif Ġ( it . x Ġ== Ġ 0 ) Ġreturn @ bar Ġ 0 Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbar .< anonymous >. it : ĠTuple Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠâĶĤ Ġ Ġval Ġ( Tuple ). y : ĠInt Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠâĶĤ Ġ ĠâĶĤ ĊĠĠĠĠĠĠĠ Ġreturn @ lambda Ġit . y ĊĠĠĠ Ġ} Ċ } Ċ Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠ Ġcollections / List < Int > Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠ ĠâĶĤ Ċ fun Ġtest ( list : ĠList < Int >) Ġ{ Ċ // ĠĠĠĠĠ Ġcollections / Mutable Map < Int , ĠString > Ċ // ĠĠĠĠĠ ĠâĶĤ ĠĠĠĠ Ġfun Ġ< K , ĠV > Ġcollections / mutable Map Of < Int , ĠString > (): Ġcollections / Mutable Map < K , ĠV > Ċ // ĠĠĠĠĠ ĠâĶĤ ĠĠĠĠ ĠâĶĤ ĊĠĠĠ Ġval Ġmap Ġ= Ġmutable Map Of < Int , ĠString >() Ċ // Ġ Ġtest . list : Ġcollections / List < Int > Ċ // Ġ ĠâĶĤ ĠĠĠ Ġfun Ġ< T > Ġcollections / Iterable < T >. forEach < Int >(( T ) Ġ-> ĠUnit ): ĠUnit Ċ // Ġ ĠâĶĤ ĠĠĠ ĠâĶĤ ĠĠĠĠĠĠĠĠ Ġval Ġtest . map : Ġcollections / Mutable Map < Int , ĠString > Ċ // Ġ ĠâĶĤ ĠĠĠ ĠâĶĤ ĠĠĠĠĠĠĠĠ ĠâĶĤ ĠĠ Ġfun Ġ< K , ĠV > Ġcollections / Mutable Map < K , ĠV >. get Or Put < Int , ĠString >( K , Ġ() Ġ-> ĠV ): ĠV Ċ // Ġ ĠâĶĤ ĠĠĠ ĠâĶĤ ĠĠĠĠĠĠĠĠ ĠâĶĤ ĠĠ ĠâĶĤ ĠĠĠĠĠĠĠ Ġtest .< anonymous >. it : ĠInt Ċ // Ġ ĠâĶĤ ĠĠĠ ĠâĶĤ ĠĠĠĠĠĠĠĠ ĠâĶĤ ĠĠ ĠâĶĤ ĠĠĠĠĠĠĠ ĠâĶĤ ĠĠĠĠ Ġfun Ġ< T > Ġcollections / mutable ListOf <? ? ?> (): Ġcollections / Mutable List < T > Ċ // Ġ ĠâĶĤ ĠĠĠ ĠâĶĤ ĠĠĠĠĠĠĠĠ ĠâĶĤ ĠĠ ĠâĶĤ ĠĠĠĠĠĠĠ ĠâĶĤ ĠĠĠĠ ĠâĶĤ ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfun Ġ( String ). plus ( Any ?): ĠString Ċ // Ġ ĠâĶĤ ĠĠĠ ĠâĶĤ ĠĠĠĠĠĠĠĠ ĠâĶĤ ĠĠ ĠâĶĤ ĠĠĠĠĠĠĠ ĠâĶĤ ĠĠĠĠ ĠâĶĤ ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠâĶĤ ĊĠĠĠ Ġlist . forEach Ġ{ Ġmap . get Or Put ( it , Ġ{ Ġmutable ListOf () Ġ}) Ġ+= Ġ"" Ġ} Ċ } Ċ Ċ // Ġ Ġ() Ġ-> ĠUnit Ċ // Ġ ĠâĶĤ Ċ val Ġsimple Ġ= Ġ{ Ġ} Ċ Ċ // Ġ Ġ() Ġ-> ĠInt ĠĠ ĠInt Ċ // Ġ ĠâĶĤ ĠĠĠĠĠĠĠĠĠĠ ĠâĶĤ Ċ val Ġanother Ġ= Ġ{ Ġ 4 2 Ġ} Ċ