在函数式编程中,将任何“循环”代码优化为尾递归通常很重要。然而,尾递归算法通常分为两个函数 - 一个设置基本情况,另一个实现实际循环。一个好的(尽管是学术的)例子是反向函数。
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”并不是一个很好的描述性名称。但是,“reverse_recursive_part”很尴尬。
对于这样的辅助函数,您会使用什么命名约定?