<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def construct_format(f, type_map=CONSTRUCT_CODE):
 """ Formats for Construct. """

  formatted = ""
  if type_map.get(f.type_id, None):
    return "'{identifier}' / {type_id}".format(type_id=type_map.get(f.type_id),
                                             identifier=f.identifier)
  elif f.type_id == 'string' and f.options.get('size', None):
    return "'{id}'/ construct.Bytes({size})".format(id=f.identifier,
                                                   size=f.options['size'].value)
  elif f.type_id == 'string':
    return "'{id}' / construct.GreedyBytes".format(id=f.identifier)
  elif f.type_id == 'array' and f.options.get('size', None):
    fill = f.options['fill'].value
    f_ = copy.copy(f)
    f_.type_id = fill
    s = f.options.get('size', None).value
    return "'{id}' / construct.Array({size}, {type})".format(id=f.identifier, size=s, type=type_map.get(f_.type_id, 'construct.Byte'))
  elif f.type_id == 'array':
    fill = f.options['fill'].value
    f_ = copy.copy(f)
    f_.type_id = fill
    return "construct.GreedyRange(%s)" % construct_format(f_)
  else:
    return "'%s' / construct.Struct(%s._parser)" % (f.identifier, f.type_id)
  return formatted