# functor/3

### Module: builtins

`functor/3`

— builds structures and retrieves information about them

## FORMS

```
functor(Structure, Functor, Arity)
```

## DESCRIPTION

The principal functor of term `Structure`

has name `Functor`

and arity `Arity`

, where `Functor`

is an atom. Either `Structure`

must be instantiated to a term or an atom, or `Functor`

and `Arity`

must be instantiated to an atom and a non-negative integer, respectively.

In the case where `Structure`

is initially unbound, `functor/3`

will unify `Structure`

with a structured term of `Arity`

arguments, where the principal functor of the term is `Functor`

. Each argument of the new structure will be a new uninstantiated variable.

When `Structure`

is instantiated to a structured term, `Functor`

will be unified with the principal functor of `Structure`

and `Arity`

will be unified with the arity. `functor/3`

treats atoms as structured terms with arity 0. The principal functor of a list is ‘ . ‘ with arity 2.

## EXAMPLES

```
?- functor(Structure,fish,2).
Structure=fish(_123,_124)
yes.
?- functor(city('SantaMonica','CA','USA'), Functor, Arity).
Functor=city
Arity=3
yes.
```