iteratorMap = (iterator, fmap) => createIterator(() => {
  const {
    done,
    value
  } = iterator.next();
  return {
    done,
    value: done ? undefined : fmap(value)
  };
})
@template T,M
@param {Iterator<T>} iterator
@param {function(T):M} fmap