<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def get_config_parameter(config: ConfigParser, section: str, param: str, fn: Callable[[Any], Any], default: Any) -> Any: """ Fetch parameter from ``configparser`` ``.INI`` file. Args: config: :class:`ConfigParser` object section: section name within config file param: name of parameter within section fn: function to apply to string parameter (e.g. ``int``) default: default value Returns: parameter value, or ``None`` if ``default is None``, or ``fn(default)`` """

    try:
        value = fn(config.get(section, param))
    except (TypeError, ValueError, NoOptionError):
        log.warning(
            "Configuration variable {} not found or improper in section [{}]; "
            "using default of {!r}", param, section, default)
        if default is None:
            value = default
        else:
            value = fn(default)
    return value