Search documentation of stdlib

# erl_internal (stdlib v7.3)

Copy Markdown View Source

Internal Erlang definitions.

This module defines Erlang BIFs, guard tests, and operators. This module is only of interest to programmers who manipulate Erlang code.

## Summary

### Functions

add_predefined_functions(Forms)

Adds to `Forms` the code for the standard pre-defined functions (such as `module_info/0`) that are to be included in every module.

arith_op(OpName, Arity)

Returns `true` if `OpName/Arity` is an arithmetic operator, otherwise `false`.

bif(Name, Arity)

Returns `true` if `Name/Arity` is an Erlang BIF that is automatically recognized by the compiler, otherwise `false`.

bool_op(OpName, Arity)

Returns `true` if `OpName/Arity` is a Boolean operator, otherwise `false`.

comp_op(OpName, Arity)

Returns `true` if `OpName/Arity` is a comparison operator, otherwise `false`.

guard_bif(Name, Arity)

Returns `true` if `Name/Arity` is an Erlang BIF that is allowed in guards, otherwise `false`.

list_op(OpName, Arity)

Returns `true` if `OpName/Arity` is a list operator, otherwise `false`.

op_type(OpName, Arity)

Returns the `Type` of operator that `OpName/Arity` belongs to, or generates a `function_clause` error if it is not an operator.

send_op(OpName, Arity)

Returns `true` if `OpName/Arity` is a send operator, otherwise `false`.

type_test(Name, Arity)

Returns `true` if `Name/Arity` is a valid Erlang type test, otherwise `false`.

## Functions

# add_predefined_functions(Forms)

(since OTP 20.0)

    -spec add_predefined_functions(Forms) -> UpdatedForms
                                      when
                                          Forms :: [erl_parse:abstract_form() | erl_parse:form_info()],
                                          UpdatedForms ::
                                              [erl_parse:abstract_form() | erl_parse:form_info()].

Adds to `Forms` the code for the standard pre-defined functions (such as `module_info/0`) that are to be included in every module.

# arith_op(OpName, Arity)

    -spec arith_op(OpName, Arity) -> boolean() when OpName :: atom(), Arity :: arity().

Returns `true` if `OpName/Arity` is an arithmetic operator, otherwise `false`.

# bif(Name, Arity)

    -spec bif(Name, Arity) -> boolean() when Name :: atom(), Arity :: arity().

Returns `true` if `Name/Arity` is an Erlang BIF that is automatically recognized by the compiler, otherwise `false`.

# bool_op(OpName, Arity)

    -spec bool_op(OpName, Arity) -> boolean() when OpName :: atom(), Arity :: arity().

Returns `true` if `OpName/Arity` is a Boolean operator, otherwise `false`.

# comp_op(OpName, Arity)

    -spec comp_op(OpName, Arity) -> boolean() when OpName :: atom(), Arity :: arity().

Returns `true` if `OpName/Arity` is a comparison operator, otherwise `false`.

# guard_bif(Name, Arity)

    -spec guard_bif(Name, Arity) -> boolean() when Name :: atom(), Arity :: arity().

Returns `true` if `Name/Arity` is an Erlang BIF that is allowed in guards, otherwise `false`.

# list_op(OpName, Arity)

    -spec list_op(OpName, Arity) -> boolean() when OpName :: atom(), Arity :: arity().

Returns `true` if `OpName/Arity` is a list operator, otherwise `false`.

# op_type(OpName, Arity)

    -spec op_type(OpName, Arity) -> Type
                     when OpName :: atom(), Arity :: arity(), Type :: arith | bool | comp | list | send.

Returns the `Type` of operator that `OpName/Arity` belongs to, or generates a `function_clause` error if it is not an operator.

# send_op(OpName, Arity)

    -spec send_op(OpName, Arity) -> boolean() when OpName :: atom(), Arity :: arity().

Returns `true` if `OpName/Arity` is a send operator, otherwise `false`.

# type_test(Name, Arity)

    -spec type_test(Name, Arity) -> boolean() when Name :: atom(), Arity :: arity().

Returns `true` if `Name/Arity` is a valid Erlang type test, otherwise `false`.