code: def compose(*funcs):
      '''
      Compose an ordered list of functions. Args of a,b,c,d evaluates as a(b(c(d(ctx))))
      '''
      def _compose(ctx):
          # last func gets context, rest get result of previous func
          _result = funcs[-1](ctx)
          for f in reversed(funcs[:-1]):
              _result = f(_result)
  
          return _result
      return _composf compose(*funcs):
      '''
      Compose an ordered list of functions. Args of a,b,c,d evaluates as a(b(c(d(ctx))))
      '''
      def _compose(ctx):
          # last func gets context, rest get result of previous func
          _result = funcs[-1](ctx)
          for f in reversed(funcs[:-1]):
              _result = f(_result)
  
          return _result
      return _compose
docs: Compose an ordered list of functions. Args of a,b,c,d evaluates as a(b(c(d(ctx))))