A principled approach to language integrated queries