Design And Implementation Of An Optionally-Typed Functional Programming Language