package Ġcom . github . em ill und strm . al der lang . builtins Ċ Ċ import Ġcom . github . em ill und strm . al der lang . ast .* Ċ Ċ val Ġread Ln Ġ= ĠIO Action Ġ{ ĠString Literal ( readLine () !! ) Ġ} Ċ Ċ val Ġprint Ġ= ĠNative Function Ġ{ Ġ_, Ġarg Ġ-> ĊĠĠĠ ĠIO Action Ġ{ Ġeval Ġ-> ĊĠĠĠĠĠĠĠ Ġval Ġstr Ġ= Ġeval ( arg ) Ġas ĠString Literal ĊĠĠĠĠĠĠĠ Ġprint ( str . value ) ĊĠĠĠĠĠĠĠ ĠTyped Value (" Unit ") ĊĠĠĠ Ġ} Ċ } Ċ Ċ // :: ĠIO Ġa Ġ-> Ġ( a Ġ-> ĠIO Ġb ) Ġ-> ĠIO Ġb Ċ val Ġchain IO Ġ= ĠNative Function Ġ{ Ġ_, Ġfirst Ġ-> ĊĠĠĠ ĠNative Function Ġ{ Ġ_, Ġnext Ġ-> ĊĠĠĠĠĠĠĠ ĠIO Action Ġ{ Ġeval Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġa Ġ= Ġ( eval ( first ) Ġas ĠIO Action ). perform ( eval ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġb Ġ= Ġ( eval ( Apply ( next , Ġa )) Ġas ĠIO Action ). perform ( eval ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġb ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ val Ġnoop Ġ= ĠIO Action Ġ{ ĠTyped Value (" Unit ") Ġ}