package Ġpw . for st . kat lib Ċ Ċ /** Ċ Ġ* ĠPrints Ġ@ param Ġ[ prompt Text ], Ġreads Ġinput Ġfrom Ġconsole Ġand Ġapplies Ġ@ param Ġ[ transform ] Ġto Ġit . Ċ Ġ* ĠIf Ġ@ param Ġ[ transform ] Ġthrows Ġan Ġexception Ġon Ġuser Ġinput , Ġ@ param Ġ[ exception Handler ] Ġwill Ġbe Ġinvoked , Ċ Ġ* Ġand Ġprompt Ġwill Ġbe Ġrepeated . Ċ Ġ* Ċ Ġ* ĠExample : Ġsnippet Ġbelow Ġwill Ġask Ġuser Ġfor Ġinput Ġuntil Ġgiven Ġinput Ġcan Ġbe Ġparsed Ġto ĠDouble Ċ Ġ* Ġ``` Ċ Ġ* Ġprompt ( Ċ Ġ* Ġ ĉ " input Ġnumber :", Ċ Ġ* Ġ ĉ { Ġ" this Ġis Ġnot Ġa Ġnumber " Ġ}, Ċ Ġ* Ġ) Ċ Ġ* Ġ{ Ġit . toFloat () Ġ} Ċ Ġ* Ġ``` Ċ Ġ* Ġ@ return Ġuser Ġinput Ġwith Ġtransform Ġapplied Ċ Ġ*/ Ċ fun Ġ< R > Ġprompt ( prompt Text : ĠString , Ġexception Handler : Ġ( e : ĠException ) Ġ-> ĠString ? Ġ= Ġ{ Ġnull Ġ}, Ġtransform : Ġ( input : ĠString ) Ġ-> ĠR ): ĠR Ġ{ Ċ ĉ while Ġ( true ) Ġ{ Ċĉ ĉ print ( prompt Text ) Ċĉ ĉ try Ġ{ Ċĉĉ ĉ return Ġtransform ( read ln ()) Ċĉ ĉ } Ġcatch Ġ( e : ĠException ) Ġ{ Ċĉĉ ĉ exception Handler ( e )?. let Ġ{ Ġprintln ( it ) Ġ} Ċĉ ĉ } Ċ ĉ } Ċ } Ċ