Krypton: A functional approach to knowledge representation