package ĠChapter 0 4 . Se aled Classes 1 Ċ Ċ interface ĠExpr Ċ class ĠNum ( val Ġvalue : ĠInt ): ĠExpr Ċ class ĠSum ( val Ġleft : ĠExpr , Ġval Ġright : ĠExpr ): ĠExpr Ċ Ċ fun Ġeval ( e : ĠExpr ): ĠInt Ġ= ĊĠĠĠĠĠĠĠ Ġwhen Ġ( e ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠNum Ġ-> Ġe . value ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠSum Ġ-> Ġeval ( e . left ) Ġ+ Ġeval ( e . right ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġthrow ĠIllegalArgumentException (" Unknown Ġexpression ") ĊĠĠĠĠĠĠĠ Ġ} Ċ Ċ fun Ġmain ( args : ĠArray < String >) Ġ{ ĊĠĠĠ Ġprintln ( eval ( Sum ( Sum ( Num ( 1 ), ĠNum ( 2 )), ĠNum ( 4 )))) ĊĠĠĠ Ġ// >>> 7 Ċ }