バレバレな気がするけど、Control.Monad.joinのjoinは最小上界(上限)
という意味で正しい?
http://en.wikipedia.org/wiki/Join_and_meet