package Ġexploration . functional Programming . functional General Structure Design Ċ Ċ import Ġcore . algebra ic DataTypes And Pattern Matching . algebra ic DataType . b Ċ import Ġexploration . functional Programming . implement Type class . List Fold able Ċ Ċ /** Ċ Ġ* ĠCreated Ġby ĠChen J in X in Ġon Ġ 2 0 2 1 / 7 / 2 1 Ġä¸ĭåįĪ 3 : 2 6 Ċ Ġ*/ Ċ interface ĠMon oid < A > Ġ{ ĊĠĠĠ Ġfun Ġzero (): ĠA ĊĠĠĠ Ġfun ĠA . append ( b : ĠA ): ĠA Ċ } Ċ Ċ object ĠString Concat Mon oid Ġ: ĠMon oid < String > Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġzero (): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġ"" ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠString . append ( b : ĠString ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġthis Ġ+ Ġb ĊĠĠĠ Ġ} Ċ } Ċ Ċ /* Ċ fun Ġ< A > ĠList < A >. sum ( ma : ĠMon oid < A >): ĠA Ġ{ ĊĠĠĠ Ġval Ġfa Ġ= Ġthis ĊĠĠĠ Ġreturn ĠList Fold able . run Ġ{ ĊĠĠĠĠĠĠĠ Ġfa . fold ( ma . zero ()) ({ Ġs , Ġi Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġma . run Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġs . append ( i ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} Ċ }*/ Ċ