我有这个编码功能:
class Encode a where
encode :: a -> [Bit]
Run Code Online (Sandbox Code Playgroud)
我在编写一个函数时遇到问题,该函数将类型a的列表编码为位列表.我想递归编码列表的元素.根据我的理解,您可以使用map函数来实现此目的.问题是encode返回一个列表[Bit],而map只需要Bit.我怎么解决这个问题?这是该计划的相关部分.
instance Encode a => Encode [a] where
encode [] = [I, O, O, I, O, I]
encode m = ([I, O, O] ++ (map encode m) ++ [I, O, I])
Run Code Online (Sandbox Code Playgroud)
使用concatMap.concat在mapping它们之后它会显示结果.
instance Encode a => Encode [a] where
encode [] = [I, O, O, I, O, I]
encode m = ([I, O, O] ++ (concatMap encode m) ++ [I, O, I])
Run Code Online (Sandbox Code Playgroud)
你怎么能为自己找到这个:如果你搜索你想要的功能类型(a -> [Bit]) -> [a] -> [Bit],使用Hoogle,concatMap是第一个结果.