implements srfi-17(generalized-set!)