尾递归在FP领域中可以说是个非常非常重要的语法
这是个结构尾递归
import Data.Char (digitToInt)
asInt xs = loop 0 xs
loop :: Int -> String->Int
loop acc [] = acc
loop acc (x:xs) = let acc' = acc * 10 + digitToInt x
in loop acc' xs
这里要认识一个概念:
结构递归与非结构递归
有处理空类型的递归可称为结构递归,仿之为非结构递归