Haskell中compose函数空列表参数的返回值求解
Haskell中compose函数空列表的处理
你写的递归逻辑没问题,但缺少递归的基例——空列表的情况。从函数组合的逻辑来看,当没有任何函数需要组合时,这个“空组合”应该是恒等函数id,因为恒等函数是函数组合的单位元:任何函数和它组合都不会改变原函数的行为,刚好对应“没有函数作用时返回原输入”的需求。
完整的代码应该是:
compose :: [a -> a] -> (a -> a) compose [] = id compose (f:fs) = f . compose fs
举几个验证例子:
compose [] 5会返回5,符合空组合的预期;compose [(+1), (*2)] 3等价于(+1) ((*2) 3),结果是7;compose ([] ++ [(+1)]) 3和compose [(+1)] 3结果一致,都是4,保证了组合逻辑的连贯性。
内容的提问来源于stack exchange,提问作者Daan Van de Wiel
相关产品推荐
相关产品推荐

