0
我有这个编码功能:Haskell:使用带有返回列表的函数的映射?
class Encode a where
encode :: a -> [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])
谢谢,这工作。 :) – user2367390 2013-05-09 18:15:43
你甚至不需要特殊处理空列表@ user2367390,它也被第二个方程所涵盖。 – 2013-05-09 18:21:19
继续关于Hoogle的评论 - 对这种情况的有用方法是放置一个自定义函数,使用undefined定义它,然后使用ghci来查找类型(':t function')。这显示了编译器推断的类型;这可以帮助编写该功能,或者您可以使用Hoogle搜索签名。 (这里意味着定义'encode m =([I,O,O] ++(map'encode m)++ [I,O,I])'和'map'= undefined';在ghci中加载并输入':t map'')。 – isturdy 2013-05-09 19:31:15