GADTs and functional dependencies?