내가 아래에있는 내 코드, 튜플을 반대하는 방법을 알아내는 데 문제가 오전에 튜플 역 어떻게 :나는 하스켈
HTree는 지능 (캐릭터에서 발생의 빈도로 정의된다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 :)
문자열)와 숯불 문자열에서 :
data HTree = Branch Int HTree HTree | Leaf Int Char
deriving (Show, Eq)
및 HCodeMap은 : 샤아가 characte가
type HCodeMap = [(Char, [Bit])]
인 경우 나무와 [비트]에서 R은 다음과 같습니다
data Bit = Zero | One deriving (Show, Eq)
지금은
"aaabbc"문자열의 트리를 통과 할 때 내가 얻을 : 내가하고 싶은 무엇
[('c',[Zero, Zero]),('b',[Zero, One]),('a',[One])]
입니다 다음과 같이되도록 괄호 목록()의 모든 항목을 반대로합니다.
[('a',[One]),('b',[Zero, One]),('c',[Zero, Zero])]
정렬을 시도했습니다. 반전이 기사에서 발견 된 내용이지만 방법이 확실하지 않습니다. https://codegolf.stackexchange.com/questions/3571/descending-sort-using-standard-ascending-sort-function
이전에 sortby (비교 대상의 'on'snd) 함수를 사용했지만이를 역으로 변경하려고 시도하는 것이 쉽지 않습니다. 내 머리.
저는 하스켈이 처음인데, 어리석은 질문이라면 유감입니다. 그냥 정상적인 목록에서 할 정말 쉽지만 튜플에서 어떻게 그것을 시각화 할 수 없습니다.
미리 감사드립니다.
'\ xs -> let (a, b) = zip에서 xs 압축 풀기 (역 b)' – user2407038