Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/haskell/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Haskell中反转元组_Haskell_Tuples_Reverse_Huffman Code - Fatal编程技术网

如何在Haskell中反转元组

如何在Haskell中反转元组,haskell,tuples,reverse,huffman-code,Haskell,Tuples,Reverse,Huffman Code,我不知道如何反转元组,下面是我的代码: extractCode :: HTree -> HCodeMap extractCode t = extractCodeInner t [] where extractCodeInner (Leaf _ c) bits = [(c, [])] extractCodeInner (Branch _ left right) bits = map (addBit Zero) (extractCode left ) ++ map (ad

我不知道如何反转元组,下面是我的代码:

extractCode :: HTree -> HCodeMap 
extractCode t = extractCodeInner t []
  where extractCodeInner (Leaf _ c) bits = [(c, [])]
        extractCodeInner (Branch _ left right) bits = map (addBit Zero) (extractCode left ) ++ map (addBit One) (extractCode right)
        where addBit b = second $ ( b : )
其中,HTree定义为Int(字符串中出现字符的频率)和字符串中的Char:

data HTree = Branch Int HTree HTree | Leaf Int Char 
             deriving (Show, Eq)
而HCodeMap是:

type HCodeMap = [(Char, [Bit])]
其中Char是树中的一个字符,[Bit]是:

data Bit = Zero | One deriving (Show, Eq)
现在当我经过字符串“aaabbc”的树时

我得到:

[('c',[Zero, Zero]),('b',[Zero, One]),('a',[One])]
我想做的是反转圆括号列表()中的所有项目,使其看起来像这样:

[('a',[One]),('b',[Zero, One]),('c',[Zero, Zero])]
我试着使用排序。我在这篇文章中找到了相反的答案,但我不确定如何找到

我以前使用过一个sortby(compare'on'snd)函数,但在我的脑海中,试图将其改为reverse并不是那么容易

我对Haskell比较陌生,所以如果这是一个愚蠢的问题,我很抱歉。在一个普通的列表上做这件事真的很容易,但我无法想象在一个元组上如何做


提前谢谢你

正如您自己所说,您需要使用该函数。无论您在哪里使用代码来形成元组列表,都可以使用括号
(reverse(code))
reverse$
将代码封装在反向函数中,结果将是反向的

希望这有帮助

\xs->let(a,b)=在zip a中解压xs(反向b)