<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def from_file(self, loader, filename, encoding='utf-8', silent=False):
 """ Updates recursively the value in the the config from some file. :param loader: (function) a function that receives a file object and returns a dictionary to be merged into settings :param filename: (str) a filename to be opened :param encoding: (str) an encoding of the filename :param silent: (bool) fails silently if something wrong with json file .. versionadded:: 0.4.0 """

        conf = {}
        try:
            with open(filename, encoding=encoding) as f:
                conf = loader(f)
        except Exception:
            if not silent:
                raise
        self.update(conf)