constructs a typed list of length n by successively applying fn to x. fn must map item? items to item? itesm.