A typed, applicative programming environment