typechecker + f# unit tests