So are you suggesting getting rid of f (more anonymous functions)?

John Myles White benchmarked this and said  "looks like there are no stable speed differences." https://gist.github.com/johnmyleswhite/5222915

I'm going to add an implementation for DiscreteDistribution soon.