### Navigation

- index
- modules |
- next |
- previous |
- Miscellaneous »

# Constant functions

Constant functions

class `sage.misc.constant_function.``ConstantFunction`

  Bases: `sage.structure.sage_object.SageObject`

  A class for function objects implementing constant functions.

  EXAMPLES:

      sage: f = ConstantFunction(3)
      sage: f
      The constant function (...) -> 3
      sage: f()
      3
      sage: f(5)
      3

  Such a function could be implemented as a lambda expression, but this is not (currently) picklable:

      sage: g = lambda x: 3
      sage: g == loads(dumps(g))
      Traceback (most recent call last):
      ...
      PicklingError: Can't pickle <type 'function'>: attribute lookup __builtin__.function failed
      sage: f == loads(dumps(f))
      True

  Also, in the long run, the information that this function is constant could be used by some algorithms.

  TODO:

  - Should constant functions have unique representation?
  - Should the number of arguments be specified in the input?
  - Should this go into `sage.categories.maps`? Then what should be the parent (e.g. for `lambda x: True`)?

  TESTS:

  These tests do fail if we try to use `UniqueRepresentation`:

      sage: f = ConstantFunction(True)
      sage: g = ConstantFunction(1)
      sage: f(), g()
      (True, 1)

  That’s because `1` and `True` cannot be distinguished as keys in a dictionary (argl!):

      sage: { 1: 'a', True: 'b' }
      {1: 'b'}

### Navigation

- index
- modules |
- next |
- previous |
- Miscellaneous »