package Ġfunctions Ċ Ċ import Ġjava . lang . Math .* Ċ Ċ fun Ġread ( b : ĠArray < Byte >, Ġoff : ĠInt Ġ= Ġ 0 , Ġlen : ĠInt Ġ= Ġb . size Ġ- Ġoff ): ĠList < Byte > Ġ{ ĊĠĠĠ Ġreturn Ġb . slice ( off Ġuntil Ġoff + len ) Ċ } Ċ Ċ open Ġclass ĠFA Ġ{ ĊĠĠĠ Ġopen Ġfun Ġfoo ( i : ĠInt Ġ= Ġ 1 0 ) Ġ{ ĊĠĠĠĠĠĠĠ Ġprintln (" FA Ġfoo Ġ$ i ") ĊĠĠĠ Ġ} Ċ } Ċ Ċ class ĠFB : ĠFA () Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġfoo ( i : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġprintln (" FB Ġfoo Ġ$ i ") ĊĠĠĠ Ġ} Ċ } Ċ Ċ fun Ġfoo ( bar : ĠInt Ġ= Ġ 0 , Ġbaz : ĠInt ) Ġ{ ĊĠĠĠ Ġprintln (" foo Ġbar =$ bar Ġbaz =$ baz ") Ċ } Ċ Ċ fun Ġbar ( foo : ĠInt = 0 , Ġbaz : ĠInt Ġ= Ġ 1 , Ġqu x : Ġ() -> ĠUnit ) Ġ{ ĊĠĠĠ Ġprintln (" bar Ġfoo =$ foo Ġbaz =$ baz ") ĊĠĠĠ Ġqu x () Ċ } Ċ Ċ fun Ġ< T > Ġas List ( var arg Ġts : ĠT ): ĠList < T > Ġ{ ĊĠĠĠ Ġval Ġresult Ġ= ĠArrayList < T >(); ĊĠĠĠ Ġfor Ġ( t Ġin Ġts ) Ġ{ ĊĠĠĠĠĠĠĠ Ġresult . add ( t ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn Ġresult Ċ } Ċ Ċ infix Ġfun ĠInt . w tf ( y : ĠInt ): ĠInt Ġ{ ĊĠĠĠ Ġif (( this Ġxor Ġy )== 0 ) Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ; ĊĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġy ; ĊĠĠĠ Ġ} Ċ } Ċ Ċ fun Ġouter () Ġ{ ĊĠĠĠ Ġfun Ġinner () Ġ{ ĊĠĠĠĠĠĠĠ Ġprintln (" inner Ġfunction ") ĊĠĠĠ Ġ} ĊĠĠĠ Ġinner () ĊĠĠĠ Ġprintln (" outer Ġfunction ") Ċ } Ċ Ċ val Ġeps Ġ= Ġ 1 E - 1 0 Ċ Ċ tail rec Ġfun Ġfind Fix Point ( x : ĠDouble Ġ= Ġ 1 . 0 ): ĠDouble ĊĠĠĠĠĠĠĠ Ġ= Ġif Ġ( abs ( x Ġ- Ġcos ( x )) Ġ< Ġeps ) Ġx Ġelse Ġfind Fix Point ( cos ( x )) Ċ Ċ fun Ġmain () Ġ{ ĊĠĠĠ Ġrun Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġarr Ġ= ĠarrayOf < Byte >( 1 , 2 , 3 , 4 , 5 ) ĊĠĠĠĠĠĠĠ Ġval Ġlst Ġ= Ġread ( arr , Ġ 0 ) ĊĠĠĠĠĠĠĠ Ġprintln ( lst . toString ()) ĊĠĠĠ Ġ} ĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġoverride Ġmethods Ġalways Ġuse Ġthe Ġsame Ġdefault Ġparameter Ġas Ġsuper Ġtype ĊĠĠĠĠ Ġ* Ġyou Ġshould Ġignore Ġthe Ġdefault Ġparameter Ġin Ġoverride Ġmethod ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġrun Ġ{ ĊĠĠĠĠĠĠĠ ĠFB (). foo () ĊĠĠĠ Ġ} ĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġany Ġparameter Ġafter Ġparameters Ġthat Ġhave Ġdefault Ġvalue ĊĠĠĠĠ Ġ* Ġmust Ġbe Ġcalled Ġwith Ġits Ġname ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġrun Ġ{ ĊĠĠĠĠĠĠĠ Ġfoo ( baz = 1 ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġif Ġthe Ġlast Ġparameter Ġis Ġlambda , Ġit Ġcan Ġbe Ġcalled Ġwith Ġname Ġin Ġparentheses ĊĠĠĠĠ Ġ* Ġor Ġas Ġfunction Ġblock Ġoutside Ġthe Ġparentheses ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġrun Ġ{ ĊĠĠĠĠĠĠĠ Ġbar ( 1 ) Ġ{ Ġprintln (" hello ") Ġ} ĊĠĠĠĠĠĠĠ Ġbar Ġ( Ġqu x Ġ= Ġ{ Ġprintln (" hello ") Ġ} Ġ) ĊĠĠĠĠĠĠĠ Ġbar Ġ{ Ġprintln (" hello ") Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġwhen Ġcall Ġjava Ġfunction , Ġyou Ġcan Ġnot Ġuse Ġnamed Ġparameters ĊĠĠĠĠ Ġ* Ġbecause Ġjava Ġwill Ġnot Ġalways Ġsave Ġthe Ġname Ġinformation ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġyou Ġcan Ġignore Ġthe ĠUnit Ġreturn Ġtype ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġif Ġthere Ġis Ġonly Ġsingle Ġexpression Ġin Ġfunction Ġbody Ġblock ĊĠĠĠĠ Ġ* Ġyou Ġcan Ġuse Ġsingle Ġexpression Ġfunction ĊĠĠĠĠ Ġ* Ġthe Ġexpression Ġwill Ġbe Ġreturned ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġrun Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġlist Ġ= ĠarrayOf ( 1 , 2 , 3 ) ĊĠĠĠĠĠĠĠ Ġval Ġa Ġ= Ġas List ( 0 , Ġ* list ) ĊĠĠĠĠĠĠĠ Ġprintln ( a . toString ()) ĊĠĠĠ Ġ} ĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġin fix Ġfunction Ġshould : ĊĠĠĠĠ Ġ* Ġ- Ġmust Ġbe Ġmethod Ġor Ġextension ĊĠĠĠĠ Ġ* Ġ- Ġrequire Ġand Ġmust Ġhave Ġa Ġsingle Ġparameter ĊĠĠĠĠ Ġ* Ġ- Ġcan Ġnot Ġreceive Ġvar arg Ġor Ġdefault Ġparameter ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġrun Ġ{ ĊĠĠĠĠĠĠĠ Ġprintln ( 1 Ġw tf Ġ 2 ); ĊĠĠĠ Ġ} ĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġsupport Ġlocal Ġfunctions , Ġmethods , Ġgener ics Ġfunctions ĊĠĠĠĠ Ġ* Ġinner Ġfunctions , Ġextensions , Ġhigh Ġorder Ġfunctions Ġand Ġlamb das ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġrun Ġ{ ĊĠĠĠĠĠĠĠ Ġouter () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġrun Ġ{ ĊĠĠĠĠĠĠĠ Ġprintln ( find Fix Point ( 1 0 . 0 )) ĊĠĠĠ Ġ} Ċ }