introduce writer monad
define parse error and unknown type