# Function definition specifications

`clojure.spec.alpha/fdef` defines a specification for a function definition, providing specific specification for

* arguments passed when calling a function
* return value expected
* relationships between arguments and return value

## Examples

The `practicalli.database-access/new-account-holder` function takes a customer details specification and returns an `account-holder-id` specification.

!!! EXAMPLE "practicalli.database-access/new-account-holder"
    ```
    (spec/fdef practicalli.database-access/new-account-holder
      :args (spec/cat :customer ::customer-details)
      :ret ::account-holder-id)
    ```