Persistent data structures and functional programming utilities for JavaScript