Question: In functional programming, it's often important to optimize any "looping" code to be tail recursive. Tail recursive algorithms are usually split between two functions, however - one which sets up the base case, and another that implements the actual loop. A good (albeit academic) example would be the reverse function.

```
reverse :: [a] -> [a]
reverse = reverse_helper []

reverse_helper :: [a] -> [a] -> [a]
reverse_helper result [] = result
reverse_helper result (x:xs) = reverse_helper (x:result) xs

```

"reverse\_helper" isn't really a good, descriptive name. However, "reverse\_recursive\_part" is just awkward.

What naming convention would you use for helper functions like this?

Answer: 
I use `aux` or `foo_aux` (for main function `foo`), and nest the definition so it's not externally visible.
setup and execute

example:

```
function whateverSetup() { ... }
function whateverExecute() { ... }

```