Class FunctionDefinition

  • All Implemented Interfaces:
    java.io.Serializable, java.lang.Comparable<FunctionDefinition>

    public class FunctionDefinition
    extends java.lang.Object
    implements java.io.Serializable, java.lang.Comparable<FunctionDefinition>
    A named function definition. Serializes as (defn name [params] body) in Clojure, (defun name (params) body) in Emacs Lisp and Common Lisp, (define (name params) body) in Scheme
    See Also:
    Serialized Form
    • Field Detail

      • TYPE_

        public static final Name TYPE_
        Name of the hydra.lisp.syntax.FunctionDefinition type.
      • NAME

        public static final Name NAME
        Name of the hydra.lisp.syntax.FunctionDefinition.name field.
      • PARAMS

        public static final Name PARAMS
        Name of the hydra.lisp.syntax.FunctionDefinition.params field.
      • REST_PARAM

        public static final Name REST_PARAM
        Name of the hydra.lisp.syntax.FunctionDefinition.restParam field.
      • DOC

        public static final Name DOC
        Name of the hydra.lisp.syntax.FunctionDefinition.doc field.
      • TYPE_HINTS

        public static final Name TYPE_HINTS
        Name of the hydra.lisp.syntax.FunctionDefinition.typeHints field.
      • BODY

        public static final Name BODY
        Name of the hydra.lisp.syntax.FunctionDefinition.body field.
      • name

        public final Symbol name
        The function name
      • params

        public final java.util.List<Symbol> params
        The parameter list
      • restParam

        public final Optional<Symbol> restParam
        Optional rest/variadic parameter
      • typeHints

        public final java.util.List<TypeHint> typeHints
        Optional type hints for parameters and return type
      • body

        public final java.util.List<Expression> body
        The function body (one or more expressions)
    • Constructor Detail

      • FunctionDefinition

        public FunctionDefinition​(Symbol name,
                                  java.util.List<Symbol> params,
                                  Optional<Symbol> restParam,
                                  Optional<Docstring> doc,
                                  java.util.List<TypeHint> typeHints,
                                  java.util.List<Expression> body)
        Constructs an immutable FunctionDefinition.
        Parameters:
        name - The function name
        params - The parameter list
        restParam - Optional rest/variadic parameter
        doc - Optional docstring
        typeHints - Optional type hints for parameters and return type
        body - The function body (one or more expressions)