An efficient immutable vector implementation