write m* in typed racket with more useful type