# HCL User Functions Extension This HCL extension allows a calling application to support user-defined functions. Functions are defined via a specific block type, like this: ```hcl function "add" { params = [a, b] result = a + b } function "list" { params = [] variadic_param = items result = items } ``` The extension is implemented as a pre-processor for `cty.Body` objects. Given a body that may contain functions, the `DecodeUserFunctions` function searches for blocks that define functions and returns a functions map suitable for inclusion in a `hcl.EvalContext`. It also returns a new `cty.Body` that contains the remainder of the content from the given body, allowing for further processing of remaining content. For more information, see [the godoc reference](https://pkg.go.dev/github.com/hashicorp/hcl/v2/ext/userfunc?tab=doc).