Added a choice monad and added an encoding parameter to char.