main = Cichelli.Start Cichelli.Start = <{Cichelli._c;198;4_100}> (Cichelli.cichelli_67 (Flite.Cons (Flite.str "as") (Flite.Cons (Flite.str "case") (Flite.Cons (Flite.str "class") (Flite.Cons (Flite.str "data") (Flite.Cons (Flite.str "default") (Flite.Cons (Flite.str "deriving") (Flite.Cons (Flite.str "do") (Flite.Cons (Flite.str "else") (Flite.Cons (Flite.str "hiding") (Flite.Cons (Flite.str "if") (Flite.Cons (Flite.str "import") (Flite.Cons (Flite.str "in") (Flite.Cons (Flite.str "infix") (Flite.Cons (Flite.str "infixl") (Flite.Cons (Flite.str "infixr") (Flite.Cons (Flite.str "instance") (Flite.Cons (Flite.str "let") (Flite.Cons (Flite.str "module") (Flite.Cons (Flite.str "newtype") (Flite.Cons (Flite.str "of") (Flite.Cons (Flite.str "qualified") (Flite.Cons (Flite.str "then") (Flite.Cons (Flite.str "type") (Flite.Cons (Flite.str "where") Flite.Nil))))))))))))))))))))))))) :: Flite.List = Flite.Nil | Flite.Cons a1 a2 Flite.str !_x_0 = if (eq _x_0 "") Flite.Nil (Flite.Cons (Flite.char (string_select _x_0 0)) (Flite.str (<{StdString.%_10}> _x_0 (_predefined._Tuple2 1 (strlen _x_0))))) :: _predefined._Tuple = _predefined._Tuple2 a1 a2 <{StdString.%_10}> str_0 _x_1 = select _x_1 (_predefined._Tuple2 a b -> string_slice str_0 a b) Flite.char !c_0 = toInt_char c_0 Cichelli.cichelli_67 !ss_0 = <{Cichelli._c;165;15_99}> (Cichelli.freqSorted_68 (Cichelli.map Cichelli.enKey ss_0)) Cichelli.enKey k_0 = Cichelli.K k_0 (Cichelli.head k_0) (Cichelli.last k_0) (Cichelli.len k_0) Cichelli.len !xs_0 = Cichelli.lenAcc 0 xs_0 Cichelli.lenAcc !acc_0 !_x_1 = select _x_1 (Flite.Nil -> acc_0) (Flite.Cons x_1_0 xs_1_1 -> Cichelli.lenAcc (add acc_0 1) xs_1_1) Cichelli.last !_x_0 = select _x_0 (Flite.Cons x_1_0 xs_1_1 -> if (Cichelli.null xs_1_1) x_1_0 (Cichelli.last xs_1_1)) Cichelli.null !_x_0 = select _x_0 (Flite.Nil -> True) (Flite.Cons x_1_0 xs_1_1 -> False) Cichelli.head !_x_0 = select _x_0 (Flite.Cons x_1_0 xs_1_1 -> x_1_0) :: Cichelli.K = Cichelli.K a1 a2 a3 a4 Cichelli.map f_0 !_x_1 = select _x_1 (Flite.Nil -> Flite.Nil) (Flite.Cons x_1_0 xs_1_1 -> Flite.Cons (f_0 x_1_0) (Cichelli.map f_0 xs_1_1)) Cichelli.freqSorted_68 ks_0 = let ft_1_0 = Cichelli.freqTabOf_69 ks_0 in Flite.Pair (Cichelli.sorted (Cichelli.decreasingFrequencyIn_72 ft_1_0) ks_0) (Cichelli.len ft_1_0) Cichelli.decreasingFrequencyIn_72 !ft_0 !_x_1 !_x_2 = select _x_1 (Cichelli.K s0_1_0 a_1_1 x_1_2 n0_1_3 -> select _x_2 (Cichelli.K s1_2_0 b_2_1 y_2_2 n1_2_3 -> let freq_3_0 = Cichelli.flip Cichelli.assoc_73 ft_0 in Cichelli.gt_57 (add (freq_3_0 a_1_1) (freq_3_0 x_1_2)) (add (freq_3_0 b_2_1) (freq_3_0 y_2_2))) ) Cichelli.gt_57 !m_0 !n_1 = if (<{Cichelli.<=_58}> m_0 n_1) False True <{Cichelli.<=_58}> !x_0 !y_1 = not (lt y_1 x_0) Cichelli.assoc_73 !x_0 !_x_1 = select _x_1 (Flite.Cons _x_1_0 yzs_1_1 -> select _x_1_0 (Flite.Pair y_2_0 z_2_1 -> if (eq x_0 y_2_0) z_2_1 (Cichelli.assoc_73 x_0 yzs_1_1)) ) :: Flite.Pair = Flite.Pair a1 a2 Cichelli.flip !f_0 x_1 y_2 = f_0 y_2 x_1 Cichelli.sorted lt_0 = Cichelli.foldr (Cichelli.ordins lt_0) Flite.Nil Cichelli.ordins lt_0 x_1 !_x_2 = select _x_2 (Flite.Nil -> Flite.Cons x_1 Flite.Nil) (Flite.Cons y_1_0 ys_1_1 -> if (lt_0 x_1 y_1_0) (Flite.Cons x_1 (Flite.Cons y_1_0 ys_1_1)) (Flite.Cons y_1_0 (Cichelli.ordins lt_0 x_1 ys_1_1))) Cichelli.foldr f_0 z_1 !_x_2 = select _x_2 (Flite.Nil -> z_1) (Flite.Cons x_1_0 xs_1_1 -> f_0 x_1_0 (Cichelli.foldr f_0 z_1 xs_1_1)) Cichelli.freqTabOf_69 !ks_0 = Cichelli.histo_70 (Cichelli.concatMap Cichelli.ends ks_0) Cichelli.ends !_x_0 = select _x_0 (Cichelli.K s_1_0 a_1_1 z_1_2 n_1_3 -> Flite.Cons a_1_1 (Flite.Cons z_1_2 Flite.Nil)) Cichelli.concatMap f_0 !_x_1 = select _x_1 (Flite.Nil -> Flite.Nil) (Flite.Cons x_1_0 xs_1_1 -> Cichelli.append (f_0 x_1_0) (Cichelli.concatMap f_0 xs_1_1)) Cichelli.append !_x_0 ys_1 = select _x_0 (Flite.Nil -> ys_1) (Flite.Cons x_1_0 xs_1_1 -> Flite.Cons x_1_0 (Cichelli.append xs_1_1 ys_1)) Cichelli.histo_70 !xs_0 = Cichelli.foldr Cichelli.histins_71 Flite.Nil xs_0 Cichelli.histins_71 x_0 !_x_1 = select _x_1 (Flite.Nil -> Flite.Cons (Flite.Pair x_0 1) Flite.Nil) (Flite.Cons yn_1_0 yns_1_1 -> <{Cichelli._c;72;3_95}> yn_1_0 x_0 yns_1_1) <{Cichelli._c;72;3_95}> !yn_0 !x_1 yns_2 = select yn_0 (Flite.Pair y_1_0 n_1_1 -> if (eq x_1 y_1_0) (Flite.Cons (Flite.Pair y_1_0 (add n_1_1 1)) yns_2) (Flite.Cons yn_0 (Cichelli.histins_71 x_1 yns_2))) <{Cichelli._c;165;15_99}> !_x_0 = select _x_0 (Flite.Pair ks_1_0 mv_1_1 -> Cichelli.findhash_80 mv_1_1 (Cichelli.blocked_74 ks_1_0)) Cichelli.blocked_74 = Cichelli.blockedWith_75 Flite.Nil Cichelli.blockedWith_75 ds_0 !_x_1 = select _x_1 (Flite.Nil -> Flite.Nil) (Flite.Cons k_1_0 ks_1_1 -> let dsk_2_0 = Cichelli.union_76 ds_0 (Cichelli.ends k_1_0), eks_2_1 = Cichelli.endsSubset_78 dsk_2_0 in Flite.Cons k_1_0 (Cichelli.append (Cichelli.filter eks_2_1 ks_1_1) (Cichelli.blockedWith_75 dsk_2_0 (Cichelli.filter (Cichelli.non eks_2_1) ks_1_1)))) Cichelli.non !f_0 x_1 = if (f_0 x_1) False True Cichelli.filter p_0 !_x_1 = select _x_1 (Flite.Nil -> Flite.Nil) (Flite.Cons x_1_0 xs_1_1 -> if (p_0 x_1_0) (Flite.Cons x_1_0 (Cichelli.filter p_0 xs_1_1)) (Cichelli.filter p_0 xs_1_1)) Cichelli.endsSubset_78 !ds_0 !k_1 = Cichelli.subset_79 (Cichelli.ends k_1) ds_0 Cichelli.subset_79 !_x_0 ys_1 = select _x_0 (Flite.Nil -> True) (Flite.Cons x_1_0 xs_1_1 -> if (Cichelli.elem_64 x_1_0 ys_1) (Cichelli.subset_79 xs_1_1 ys_1) False) Cichelli.elem_64 x_0 !_x_1 = select _x_1 (Flite.Nil -> False) (Flite.Cons y_1_0 ys_1_1 -> if (eq x_0 y_1_0) True (Cichelli.elem_64 x_0 ys_1_1)) Cichelli.union_76 !xs_0 !ys_1 = Cichelli.foldr Cichelli.ins_77 xs_0 ys_1 Cichelli.ins_77 x_0 !ys_1 = if (Cichelli.elem_64 x_0 ys_1) ys_1 (Flite.Cons x_0 ys_1) Cichelli.findhash_80 mv_0 !ks_1 = <{Cichelli._c;125;3_98}> (Cichelli.hashes_81 mv_0 (Cichelli.len ks_1) ks_1 (Cichelli.Hash (Cichelli.H Flite.Nothing Flite.Nothing Flite.Nil) Flite.Nil)) :: Flite.Maybe = Flite.Nothing | Flite.Just a1 :: Cichelli.H = Cichelli.H a1 a2 a3 :: Cichelli.Hash = Cichelli.Hash a1 a2 Cichelli.hashes_81 maxval_0 nk_1 !_x_2 h_3 = select _x_2 (Flite.Nil -> Flite.Cons h_3 Flite.Nil) (Flite.Cons k_1_0 ks_1_1 -> Cichelli.concatMap (Cichelli.hashes_81 maxval_0 nk_1 ks_1_1) (Cichelli.concatMap (Cichelli.insertKey_82 nk_1 k_1_0) (Cichelli.concatMap (Cichelli.assignUpto_84 maxval_0 (Cichelli.lastLetter k_1_0)) (Cichelli.assignUpto_84 maxval_0 (Cichelli.firstLetter k_1_0) h_3)))) Cichelli.firstLetter !_x_0 = select _x_0 (Cichelli.K s_1_0 a_1_1 z_1_2 n_1_3 -> a_1_1) Cichelli.assignUpto_84 maxval_0 c_1 !h_2 = <{Cichelli._c;138;3_96}> (Cichelli.assocm_85 c_1 (Cichelli.hashAssoc h_2)) c_1 h_2 maxval_0 Cichelli.hashAssoc !_x_0 = select _x_0 (Cichelli.Hash hs_1_0 hf_1_1 -> hf_1_1) Cichelli.assocm_85 x_0 !_x_1 = select _x_1 (Flite.Nil -> Flite.Nothing) (Flite.Cons _x_1_0 yzs_1_1 -> select _x_1_0 (Flite.Pair y_2_0 z_2_1 -> if (eq x_0 y_2_0) (Flite.Just z_2_1) (Cichelli.assocm_85 x_0 yzs_1_1)) ) <{Cichelli._c;138;3_96}> !_x_0 c_1 h_2 maxval_3 = select _x_0 (Flite.Nothing -> Cichelli.map (Cichelli.assign c_1 h_2) (Cichelli.enumFromTo 0 maxval_3)) (Flite.Just v_1_0 -> Flite.Cons h_2 Flite.Nil) Cichelli.enumFromTo !m_0 !n_1 = if (<{Cichelli.<=_55}> m_0 n_1) (Flite.Cons m_0 (Cichelli.enumFromTo (add m_0 1) n_1)) Flite.Nil <{Cichelli.<=_55}> !x_0 !y_1 = not (lt y_1 x_0) Cichelli.assign c_0 !_x_1 v_2 = select _x_1 (Cichelli.Hash hs_1_0 hf_1_1 -> Cichelli.Hash hs_1_0 (Flite.Cons (Flite.Pair c_0 v_2) hf_1_1)) Cichelli.lastLetter !_x_0 = select _x_0 (Cichelli.K s_1_0 a_1_1 z_1_2 n_1_3 -> z_1_2) Cichelli.insertKey_82 nk_0 !k_1 !_x_2 = select _x_2 (Cichelli.Hash hs_1_0 hf_1_1 -> <{Cichelli._c;144;3_97}> (Cichelli.hinsert nk_0 (Cichelli.hash_83 hf_1_1 k_1) hs_1_0) hf_1_1) Cichelli.hash_83 !hf_0 !_x_1 = select _x_1 (Cichelli.K s_1_0 a_1_1 z_1_2 n_1_3 -> add n_1_3 (add (Cichelli.assoc_73 a_1_1 hf_0) (Cichelli.assoc_73 z_1_2 hf_0))) Cichelli.hinsert nk_0 !h_1 !_x_2 = select _x_2 (Cichelli.H lo_1_0 hi_1_1 hs_1_2 -> <{Cichelli._c;155;5_91}> (Cichelli.elem_64 h_1 hs_1_2) lo_1_0 h_1 hi_1_1 nk_0 hs_1_2) <{Cichelli._c;155;5_91}> !_x_0 lo_1 h_2 hi_3 nk_4 hs_5 = if (eq _x_0 True) Flite.Nothing (if (eq _x_0 False) (let newhi_1_0 = <{Cichelli._c;153;19_89}> hi_3 h_2, newlo_1_1 = <{Cichelli._c;152;19_88}> lo_1 h_2 in <{Cichelli._c;157;14_90}> (<{Cichelli.<=_65}> (sub (add 1 newhi_1_0) newlo_1_1) nk_4) newlo_1_1 newhi_1_0 h_2 hs_5) nomatch) <{Cichelli.<=_65}> !x_0 !y_1 = not (lt y_1 x_0) <{Cichelli._c;157;14_90}> !_x_0 newlo_1 newhi_2 h_3 hs_4 = if (eq _x_0 False) Flite.Nothing (if (eq _x_0 True) (Flite.Just (Cichelli.H (Flite.Just newlo_1) (Flite.Just newhi_2) (Flite.Cons h_3 hs_4))) nomatch) <{Cichelli._c;152;19_88}> !lo_0 !h_1 = select lo_0 (Flite.Nothing -> h_1) (Flite.Just x_1_0 -> Cichelli.mini_60 x_1_0 h_1) Cichelli.mini_60 !m_0 !n_1 = if (<{Cichelli.<=_61}> m_0 n_1) m_0 n_1 <{Cichelli.<=_61}> !x_0 !y_1 = not (lt y_1 x_0) <{Cichelli._c;153;19_89}> !hi_0 !h_1 = select hi_0 (Flite.Nothing -> h_1) (Flite.Just x_1_0 -> Cichelli.maxi_62 x_1_0 h_1) Cichelli.maxi_62 !m_0 !n_1 = if (<{Cichelli.<=_63}> m_0 n_1) n_1 m_0 <{Cichelli.<=_63}> !x_0 !y_1 = not (lt y_1 x_0) <{Cichelli._c;144;3_97}> !_x_0 hf_1 = select _x_0 (Flite.Nothing -> Flite.Nil) (Flite.Just hsNew_1_0 -> Flite.Cons (Cichelli.Hash hsNew_1_0 hf_1) Flite.Nil) <{Cichelli._c;125;3_98}> !_x_0 = select _x_0 (Flite.Cons _x_1_0 hs_1_1 -> select _x_1_0 (Cichelli.Hash s_2_0 f_2_1 -> Flite.Just f_2_1) ) (Flite.Nil -> Flite.Nothing) <{Cichelli._c;198;4_100}> !_x_0 = select _x_0 (Flite.Just hf_1_0 -> Cichelli.emitHashFun hf_1_0) (Flite.Nothing -> 0) Cichelli.emitHashFun !_x_0 = select _x_0 (Flite.Nil -> 0) (Flite.Cons _x_1_0 hf_1_1 -> select _x_1_0 (Flite.Pair c_2_0 n_2_1 -> add (add c_2_0 n_2_1) (Cichelli.emitHashFun hf_1_1)) )