---
name: "erl_internal"
section: "3erl"
platform: "linux"
package: "erlang-manpages"
version: "1:25.2.3+dfsg-1+deb12u4"
release: "Debian 12 (Bookworm)"
platforms: ["linux"]
url: "https://new.carta.tech/erl_internal"
---

# erl\_internal(3erl)

Internal Erlang definitions.

## NAME

erl\_internal - Internal Erlang definitions.

## DESCRIPTION

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

## EXPORTS

```
add_predefined_functions(Forms) -> UpdatedForms
```

Types:

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) -> boolean()
```

Types:

OpName = atom()\
 Arity = arity()\

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

```
bif(Name, Arity) -> boolean()
```

Types:

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) -> boolean()
```

Types:

OpName = atom()\
 Arity = arity()\

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

```
comp_op(OpName, Arity) -> boolean()
```

Types:

OpName = atom()\
 Arity = arity()\

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

```
guard_bif(Name, Arity) -> boolean()
```

Types:

Name = atom()\
 Arity = arity()\

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

```
list_op(OpName, Arity) -> boolean()
```

Types:

OpName = atom()\
 Arity = arity()\

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

```
op_type(OpName, Arity) -> Type
```

Types:

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) -> boolean()
```

Types:

OpName = atom()\
 Arity = arity()\

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

```
type_test(Name, Arity) -> boolean()
```

Types:

Name = atom()\
 Arity = arity()\

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