Build a kind of multiple dispatch thing in racket