docs: def get_functions(self):
          """
          Adds functions to the network.
  
          Example
          -------
          >>> writer = UAIWriter(model)
          >>> writer.get_functions()
          """
          if isinstance(self.model, BayesianModel):
              cpds = self.model.get_cpds()
              cpds.sort(key=lambda x: x.variable)
              variables = sorted(self.domain.items(), key=lambda x: (x[1], x[0]))
              functions = []
              for cpd in cpds:
                  child_var = cpd.variable
                  evidence = cpd.variables[:0:-1]
                  function = [str(variables.index((var, self.domain[var]))) for var in evidence]
                  function.append(str(variables.index((child_var, self.domain[child_var]))))
                  functions.append(function)
              return functions
          elif isinstance(self.model, MarkovModel):
              factors = self.model.get_factors()
              functions = []
              variables = sorted(self.domain.items(), key=lambda x: (x[1], x[0]))
              for factor in factors:
                  scope = factor.scope()
                  function = [str(variables.index((var, self.domain[var]))) for var in scope]
                  functions.append(function)
              return functions
          else:
              raise TypeError("Model must be an instance of Markov or Bayesian model.")