packages feed

mini 1.5.4.0 → 1.5.5.0

raw patch · 6 files changed

+1093/−195 lines, 6 filesPVP ok

version bump matches the API change (PVP)

API changes (from Hackage documentation)

+ Mini.Data.Graph: graph :: (Map a (Set a) -> Map a (Set a) -> b) -> Graph a -> b
+ Mini.Data.Map: map :: b -> (Map k a -> k -> a -> Map k a -> b -> b -> b) -> Map k a -> b
+ Mini.Data.Recursion: bool :: a -> a -> Bool -> a
+ Mini.Data.Recursion: either :: (a -> c) -> (b -> c) -> Either a b -> c
+ Mini.Data.Recursion: graph :: (Map a (Set a) -> Map a (Set a) -> b) -> Graph a -> b
+ Mini.Data.Recursion: list :: b -> (a -> [a] -> b -> b) -> [a] -> b
+ Mini.Data.Recursion: map :: b -> (Map k a -> k -> a -> Map k a -> b -> b -> b) -> Map k a -> b
+ Mini.Data.Recursion: maybe :: b -> (a -> b) -> Maybe a -> b
+ Mini.Data.Recursion: nonEmpty :: (a -> [a] -> b) -> NonEmpty a -> b
+ Mini.Data.Recursion: ordering :: a -> a -> a -> Ordering -> a
+ Mini.Data.Recursion: set :: b -> (Set a -> a -> Set a -> b -> b -> b) -> Set a -> b
+ Mini.Data.Recursion: uncurry :: (t1 -> t2 -> t3) -> (t1, t2) -> t3
+ Mini.Data.Recursion: uncurry10 :: (t1 -> t2 -> t3 -> t4 -> t5 -> t6 -> t7 -> t8 -> t9 -> t10 -> t11) -> (t1, t2, t3, t4, t5, t6, t7, t8, t9, t10) -> t11
+ Mini.Data.Recursion: uncurry11 :: (t1 -> t2 -> t3 -> t4 -> t5 -> t6 -> t7 -> t8 -> t9 -> t10 -> t11 -> t12) -> (t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11) -> t12
+ Mini.Data.Recursion: uncurry12 :: (t1 -> t2 -> t3 -> t4 -> t5 -> t6 -> t7 -> t8 -> t9 -> t10 -> t11 -> t12 -> t13) -> (t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12) -> t13
+ Mini.Data.Recursion: uncurry13 :: (t1 -> t2 -> t3 -> t4 -> t5 -> t6 -> t7 -> t8 -> t9 -> t10 -> t11 -> t12 -> t13 -> t14) -> (t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13) -> t14
+ Mini.Data.Recursion: uncurry14 :: (t1 -> t2 -> t3 -> t4 -> t5 -> t6 -> t7 -> t8 -> t9 -> t10 -> t11 -> t12 -> t13 -> t14 -> t15) -> (t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14) -> t15
+ Mini.Data.Recursion: uncurry15 :: (t1 -> t2 -> t3 -> t4 -> t5 -> t6 -> t7 -> t8 -> t9 -> t10 -> t11 -> t12 -> t13 -> t14 -> t15 -> t16) -> (t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15) -> t16
+ Mini.Data.Recursion: uncurry16 :: (t1 -> t2 -> t3 -> t4 -> t5 -> t6 -> t7 -> t8 -> t9 -> t10 -> t11 -> t12 -> t13 -> t14 -> t15 -> t16 -> t17) -> (t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16) -> t17
+ Mini.Data.Recursion: uncurry17 :: (t1 -> t2 -> t3 -> t4 -> t5 -> t6 -> t7 -> t8 -> t9 -> t10 -> t11 -> t12 -> t13 -> t14 -> t15 -> t16 -> t17 -> t18) -> (t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17) -> t18
+ Mini.Data.Recursion: uncurry18 :: (t1 -> t2 -> t3 -> t4 -> t5 -> t6 -> t7 -> t8 -> t9 -> t10 -> t11 -> t12 -> t13 -> t14 -> t15 -> t16 -> t17 -> t18 -> t19) -> (t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18) -> t19
+ Mini.Data.Recursion: uncurry19 :: (t1 -> t2 -> t3 -> t4 -> t5 -> t6 -> t7 -> t8 -> t9 -> t10 -> t11 -> t12 -> t13 -> t14 -> t15 -> t16 -> t17 -> t18 -> t19 -> t20) -> (t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18, t19) -> t20
+ Mini.Data.Recursion: uncurry20 :: (t1 -> t2 -> t3 -> t4 -> t5 -> t6 -> t7 -> t8 -> t9 -> t10 -> t11 -> t12 -> t13 -> t14 -> t15 -> t16 -> t17 -> t18 -> t19 -> t20 -> t21) -> (t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18, t19, t20) -> t21
+ Mini.Data.Recursion: uncurry21 :: (t1 -> t2 -> t3 -> t4 -> t5 -> t6 -> t7 -> t8 -> t9 -> t10 -> t11 -> t12 -> t13 -> t14 -> t15 -> t16 -> t17 -> t18 -> t19 -> t20 -> t21 -> t22) -> (t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18, t19, t20, t21) -> t22
+ Mini.Data.Recursion: uncurry22 :: (t1 -> t2 -> t3 -> t4 -> t5 -> t6 -> t7 -> t8 -> t9 -> t10 -> t11 -> t12 -> t13 -> t14 -> t15 -> t16 -> t17 -> t18 -> t19 -> t20 -> t21 -> t22 -> t23) -> (t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18, t19, t20, t21, t22) -> t23
+ Mini.Data.Recursion: uncurry23 :: (t1 -> t2 -> t3 -> t4 -> t5 -> t6 -> t7 -> t8 -> t9 -> t10 -> t11 -> t12 -> t13 -> t14 -> t15 -> t16 -> t17 -> t18 -> t19 -> t20 -> t21 -> t22 -> t23 -> t24) -> (t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18, t19, t20, t21, t22, t23) -> t24
+ Mini.Data.Recursion: uncurry24 :: (t1 -> t2 -> t3 -> t4 -> t5 -> t6 -> t7 -> t8 -> t9 -> t10 -> t11 -> t12 -> t13 -> t14 -> t15 -> t16 -> t17 -> t18 -> t19 -> t20 -> t21 -> t22 -> t23 -> t24 -> t25) -> (t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18, t19, t20, t21, t22, t23, t24) -> t25
+ Mini.Data.Recursion: uncurry25 :: (t1 -> t2 -> t3 -> t4 -> t5 -> t6 -> t7 -> t8 -> t9 -> t10 -> t11 -> t12 -> t13 -> t14 -> t15 -> t16 -> t17 -> t18 -> t19 -> t20 -> t21 -> t22 -> t23 -> t24 -> t25 -> t26) -> (t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18, t19, t20, t21, t22, t23, t24, t25) -> t26
+ Mini.Data.Recursion: uncurry26 :: (t1 -> t2 -> t3 -> t4 -> t5 -> t6 -> t7 -> t8 -> t9 -> t10 -> t11 -> t12 -> t13 -> t14 -> t15 -> t16 -> t17 -> t18 -> t19 -> t20 -> t21 -> t22 -> t23 -> t24 -> t25 -> t26 -> t27) -> (t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18, t19, t20, t21, t22, t23, t24, t25, t26) -> t27
+ Mini.Data.Recursion: uncurry27 :: (t1 -> t2 -> t3 -> t4 -> t5 -> t6 -> t7 -> t8 -> t9 -> t10 -> t11 -> t12 -> t13 -> t14 -> t15 -> t16 -> t17 -> t18 -> t19 -> t20 -> t21 -> t22 -> t23 -> t24 -> t25 -> t26 -> t27 -> t28) -> (t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18, t19, t20, t21, t22, t23, t24, t25, t26, t27) -> t28
+ Mini.Data.Recursion: uncurry28 :: (t1 -> t2 -> t3 -> t4 -> t5 -> t6 -> t7 -> t8 -> t9 -> t10 -> t11 -> t12 -> t13 -> t14 -> t15 -> t16 -> t17 -> t18 -> t19 -> t20 -> t21 -> t22 -> t23 -> t24 -> t25 -> t26 -> t27 -> t28 -> t29) -> (t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18, t19, t20, t21, t22, t23, t24, t25, t26, t27, t28) -> t29
+ Mini.Data.Recursion: uncurry29 :: (t1 -> t2 -> t3 -> t4 -> t5 -> t6 -> t7 -> t8 -> t9 -> t10 -> t11 -> t12 -> t13 -> t14 -> t15 -> t16 -> t17 -> t18 -> t19 -> t20 -> t21 -> t22 -> t23 -> t24 -> t25 -> t26 -> t27 -> t28 -> t29 -> t30) -> (t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18, t19, t20, t21, t22, t23, t24, t25, t26, t27, t28, t29) -> t30
+ Mini.Data.Recursion: uncurry3 :: (t1 -> t2 -> t3 -> t4) -> (t1, t2, t3) -> t4
+ Mini.Data.Recursion: uncurry30 :: (t1 -> t2 -> t3 -> t4 -> t5 -> t6 -> t7 -> t8 -> t9 -> t10 -> t11 -> t12 -> t13 -> t14 -> t15 -> t16 -> t17 -> t18 -> t19 -> t20 -> t21 -> t22 -> t23 -> t24 -> t25 -> t26 -> t27 -> t28 -> t29 -> t30 -> t31) -> (t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18, t19, t20, t21, t22, t23, t24, t25, t26, t27, t28, t29, t30) -> t31
+ Mini.Data.Recursion: uncurry31 :: (t1 -> t2 -> t3 -> t4 -> t5 -> t6 -> t7 -> t8 -> t9 -> t10 -> t11 -> t12 -> t13 -> t14 -> t15 -> t16 -> t17 -> t18 -> t19 -> t20 -> t21 -> t22 -> t23 -> t24 -> t25 -> t26 -> t27 -> t28 -> t29 -> t30 -> t31 -> t32) -> (t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18, t19, t20, t21, t22, t23, t24, t25, t26, t27, t28, t29, t30, t31) -> t32
+ Mini.Data.Recursion: uncurry32 :: (t1 -> t2 -> t3 -> t4 -> t5 -> t6 -> t7 -> t8 -> t9 -> t10 -> t11 -> t12 -> t13 -> t14 -> t15 -> t16 -> t17 -> t18 -> t19 -> t20 -> t21 -> t22 -> t23 -> t24 -> t25 -> t26 -> t27 -> t28 -> t29 -> t30 -> t31 -> t32 -> t33) -> (t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18, t19, t20, t21, t22, t23, t24, t25, t26, t27, t28, t29, t30, t31, t32) -> t33
+ Mini.Data.Recursion: uncurry33 :: (t1 -> t2 -> t3 -> t4 -> t5 -> t6 -> t7 -> t8 -> t9 -> t10 -> t11 -> t12 -> t13 -> t14 -> t15 -> t16 -> t17 -> t18 -> t19 -> t20 -> t21 -> t22 -> t23 -> t24 -> t25 -> t26 -> t27 -> t28 -> t29 -> t30 -> t31 -> t32 -> t33 -> t34) -> (t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18, t19, t20, t21, t22, t23, t24, t25, t26, t27, t28, t29, t30, t31, t32, t33) -> t34
+ Mini.Data.Recursion: uncurry34 :: (t1 -> t2 -> t3 -> t4 -> t5 -> t6 -> t7 -> t8 -> t9 -> t10 -> t11 -> t12 -> t13 -> t14 -> t15 -> t16 -> t17 -> t18 -> t19 -> t20 -> t21 -> t22 -> t23 -> t24 -> t25 -> t26 -> t27 -> t28 -> t29 -> t30 -> t31 -> t32 -> t33 -> t34 -> t35) -> (t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18, t19, t20, t21, t22, t23, t24, t25, t26, t27, t28, t29, t30, t31, t32, t33, t34) -> t35
+ Mini.Data.Recursion: uncurry35 :: (t1 -> t2 -> t3 -> t4 -> t5 -> t6 -> t7 -> t8 -> t9 -> t10 -> t11 -> t12 -> t13 -> t14 -> t15 -> t16 -> t17 -> t18 -> t19 -> t20 -> t21 -> t22 -> t23 -> t24 -> t25 -> t26 -> t27 -> t28 -> t29 -> t30 -> t31 -> t32 -> t33 -> t34 -> t35 -> t36) -> (t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18, t19, t20, t21, t22, t23, t24, t25, t26, t27, t28, t29, t30, t31, t32, t33, t34, t35) -> t36
+ Mini.Data.Recursion: uncurry36 :: (t1 -> t2 -> t3 -> t4 -> t5 -> t6 -> t7 -> t8 -> t9 -> t10 -> t11 -> t12 -> t13 -> t14 -> t15 -> t16 -> t17 -> t18 -> t19 -> t20 -> t21 -> t22 -> t23 -> t24 -> t25 -> t26 -> t27 -> t28 -> t29 -> t30 -> t31 -> t32 -> t33 -> t34 -> t35 -> t36 -> t37) -> (t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18, t19, t20, t21, t22, t23, t24, t25, t26, t27, t28, t29, t30, t31, t32, t33, t34, t35, t36) -> t37
+ Mini.Data.Recursion: uncurry37 :: (t1 -> t2 -> t3 -> t4 -> t5 -> t6 -> t7 -> t8 -> t9 -> t10 -> t11 -> t12 -> t13 -> t14 -> t15 -> t16 -> t17 -> t18 -> t19 -> t20 -> t21 -> t22 -> t23 -> t24 -> t25 -> t26 -> t27 -> t28 -> t29 -> t30 -> t31 -> t32 -> t33 -> t34 -> t35 -> t36 -> t37 -> t38) -> (t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18, t19, t20, t21, t22, t23, t24, t25, t26, t27, t28, t29, t30, t31, t32, t33, t34, t35, t36, t37) -> t38
+ Mini.Data.Recursion: uncurry38 :: (t1 -> t2 -> t3 -> t4 -> t5 -> t6 -> t7 -> t8 -> t9 -> t10 -> t11 -> t12 -> t13 -> t14 -> t15 -> t16 -> t17 -> t18 -> t19 -> t20 -> t21 -> t22 -> t23 -> t24 -> t25 -> t26 -> t27 -> t28 -> t29 -> t30 -> t31 -> t32 -> t33 -> t34 -> t35 -> t36 -> t37 -> t38 -> t39) -> (t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18, t19, t20, t21, t22, t23, t24, t25, t26, t27, t28, t29, t30, t31, t32, t33, t34, t35, t36, t37, t38) -> t39
+ Mini.Data.Recursion: uncurry39 :: (t1 -> t2 -> t3 -> t4 -> t5 -> t6 -> t7 -> t8 -> t9 -> t10 -> t11 -> t12 -> t13 -> t14 -> t15 -> t16 -> t17 -> t18 -> t19 -> t20 -> t21 -> t22 -> t23 -> t24 -> t25 -> t26 -> t27 -> t28 -> t29 -> t30 -> t31 -> t32 -> t33 -> t34 -> t35 -> t36 -> t37 -> t38 -> t39 -> t40) -> (t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18, t19, t20, t21, t22, t23, t24, t25, t26, t27, t28, t29, t30, t31, t32, t33, t34, t35, t36, t37, t38, t39) -> t40
+ Mini.Data.Recursion: uncurry4 :: (t1 -> t2 -> t3 -> t4 -> t5) -> (t1, t2, t3, t4) -> t5
+ Mini.Data.Recursion: uncurry40 :: (t1 -> t2 -> t3 -> t4 -> t5 -> t6 -> t7 -> t8 -> t9 -> t10 -> t11 -> t12 -> t13 -> t14 -> t15 -> t16 -> t17 -> t18 -> t19 -> t20 -> t21 -> t22 -> t23 -> t24 -> t25 -> t26 -> t27 -> t28 -> t29 -> t30 -> t31 -> t32 -> t33 -> t34 -> t35 -> t36 -> t37 -> t38 -> t39 -> t40 -> t41) -> (t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18, t19, t20, t21, t22, t23, t24, t25, t26, t27, t28, t29, t30, t31, t32, t33, t34, t35, t36, t37, t38, t39, t40) -> t41
+ Mini.Data.Recursion: uncurry41 :: (t1 -> t2 -> t3 -> t4 -> t5 -> t6 -> t7 -> t8 -> t9 -> t10 -> t11 -> t12 -> t13 -> t14 -> t15 -> t16 -> t17 -> t18 -> t19 -> t20 -> t21 -> t22 -> t23 -> t24 -> t25 -> t26 -> t27 -> t28 -> t29 -> t30 -> t31 -> t32 -> t33 -> t34 -> t35 -> t36 -> t37 -> t38 -> t39 -> t40 -> t41 -> t42) -> (t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18, t19, t20, t21, t22, t23, t24, t25, t26, t27, t28, t29, t30, t31, t32, t33, t34, t35, t36, t37, t38, t39, t40, t41) -> t42
+ Mini.Data.Recursion: uncurry42 :: (t1 -> t2 -> t3 -> t4 -> t5 -> t6 -> t7 -> t8 -> t9 -> t10 -> t11 -> t12 -> t13 -> t14 -> t15 -> t16 -> t17 -> t18 -> t19 -> t20 -> t21 -> t22 -> t23 -> t24 -> t25 -> t26 -> t27 -> t28 -> t29 -> t30 -> t31 -> t32 -> t33 -> t34 -> t35 -> t36 -> t37 -> t38 -> t39 -> t40 -> t41 -> t42 -> t43) -> (t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18, t19, t20, t21, t22, t23, t24, t25, t26, t27, t28, t29, t30, t31, t32, t33, t34, t35, t36, t37, t38, t39, t40, t41, t42) -> t43
+ Mini.Data.Recursion: uncurry43 :: (t1 -> t2 -> t3 -> t4 -> t5 -> t6 -> t7 -> t8 -> t9 -> t10 -> t11 -> t12 -> t13 -> t14 -> t15 -> t16 -> t17 -> t18 -> t19 -> t20 -> t21 -> t22 -> t23 -> t24 -> t25 -> t26 -> t27 -> t28 -> t29 -> t30 -> t31 -> t32 -> t33 -> t34 -> t35 -> t36 -> t37 -> t38 -> t39 -> t40 -> t41 -> t42 -> t43 -> t44) -> (t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18, t19, t20, t21, t22, t23, t24, t25, t26, t27, t28, t29, t30, t31, t32, t33, t34, t35, t36, t37, t38, t39, t40, t41, t42, t43) -> t44
+ Mini.Data.Recursion: uncurry44 :: (t1 -> t2 -> t3 -> t4 -> t5 -> t6 -> t7 -> t8 -> t9 -> t10 -> t11 -> t12 -> t13 -> t14 -> t15 -> t16 -> t17 -> t18 -> t19 -> t20 -> t21 -> t22 -> t23 -> t24 -> t25 -> t26 -> t27 -> t28 -> t29 -> t30 -> t31 -> t32 -> t33 -> t34 -> t35 -> t36 -> t37 -> t38 -> t39 -> t40 -> t41 -> t42 -> t43 -> t44 -> t45) -> (t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18, t19, t20, t21, t22, t23, t24, t25, t26, t27, t28, t29, t30, t31, t32, t33, t34, t35, t36, t37, t38, t39, t40, t41, t42, t43, t44) -> t45
+ Mini.Data.Recursion: uncurry45 :: (t1 -> t2 -> t3 -> t4 -> t5 -> t6 -> t7 -> t8 -> t9 -> t10 -> t11 -> t12 -> t13 -> t14 -> t15 -> t16 -> t17 -> t18 -> t19 -> t20 -> t21 -> t22 -> t23 -> t24 -> t25 -> t26 -> t27 -> t28 -> t29 -> t30 -> t31 -> t32 -> t33 -> t34 -> t35 -> t36 -> t37 -> t38 -> t39 -> t40 -> t41 -> t42 -> t43 -> t44 -> t45 -> t46) -> (t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18, t19, t20, t21, t22, t23, t24, t25, t26, t27, t28, t29, t30, t31, t32, t33, t34, t35, t36, t37, t38, t39, t40, t41, t42, t43, t44, t45) -> t46
+ Mini.Data.Recursion: uncurry46 :: (t1 -> t2 -> t3 -> t4 -> t5 -> t6 -> t7 -> t8 -> t9 -> t10 -> t11 -> t12 -> t13 -> t14 -> t15 -> t16 -> t17 -> t18 -> t19 -> t20 -> t21 -> t22 -> t23 -> t24 -> t25 -> t26 -> t27 -> t28 -> t29 -> t30 -> t31 -> t32 -> t33 -> t34 -> t35 -> t36 -> t37 -> t38 -> t39 -> t40 -> t41 -> t42 -> t43 -> t44 -> t45 -> t46 -> t47) -> (t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18, t19, t20, t21, t22, t23, t24, t25, t26, t27, t28, t29, t30, t31, t32, t33, t34, t35, t36, t37, t38, t39, t40, t41, t42, t43, t44, t45, t46) -> t47
+ Mini.Data.Recursion: uncurry47 :: (t1 -> t2 -> t3 -> t4 -> t5 -> t6 -> t7 -> t8 -> t9 -> t10 -> t11 -> t12 -> t13 -> t14 -> t15 -> t16 -> t17 -> t18 -> t19 -> t20 -> t21 -> t22 -> t23 -> t24 -> t25 -> t26 -> t27 -> t28 -> t29 -> t30 -> t31 -> t32 -> t33 -> t34 -> t35 -> t36 -> t37 -> t38 -> t39 -> t40 -> t41 -> t42 -> t43 -> t44 -> t45 -> t46 -> t47 -> t48) -> (t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18, t19, t20, t21, t22, t23, t24, t25, t26, t27, t28, t29, t30, t31, t32, t33, t34, t35, t36, t37, t38, t39, t40, t41, t42, t43, t44, t45, t46, t47) -> t48
+ Mini.Data.Recursion: uncurry48 :: (t1 -> t2 -> t3 -> t4 -> t5 -> t6 -> t7 -> t8 -> t9 -> t10 -> t11 -> t12 -> t13 -> t14 -> t15 -> t16 -> t17 -> t18 -> t19 -> t20 -> t21 -> t22 -> t23 -> t24 -> t25 -> t26 -> t27 -> t28 -> t29 -> t30 -> t31 -> t32 -> t33 -> t34 -> t35 -> t36 -> t37 -> t38 -> t39 -> t40 -> t41 -> t42 -> t43 -> t44 -> t45 -> t46 -> t47 -> t48 -> t49) -> (t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18, t19, t20, t21, t22, t23, t24, t25, t26, t27, t28, t29, t30, t31, t32, t33, t34, t35, t36, t37, t38, t39, t40, t41, t42, t43, t44, t45, t46, t47, t48) -> t49
+ Mini.Data.Recursion: uncurry49 :: (t1 -> t2 -> t3 -> t4 -> t5 -> t6 -> t7 -> t8 -> t9 -> t10 -> t11 -> t12 -> t13 -> t14 -> t15 -> t16 -> t17 -> t18 -> t19 -> t20 -> t21 -> t22 -> t23 -> t24 -> t25 -> t26 -> t27 -> t28 -> t29 -> t30 -> t31 -> t32 -> t33 -> t34 -> t35 -> t36 -> t37 -> t38 -> t39 -> t40 -> t41 -> t42 -> t43 -> t44 -> t45 -> t46 -> t47 -> t48 -> t49 -> t50) -> (t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18, t19, t20, t21, t22, t23, t24, t25, t26, t27, t28, t29, t30, t31, t32, t33, t34, t35, t36, t37, t38, t39, t40, t41, t42, t43, t44, t45, t46, t47, t48, t49) -> t50
+ Mini.Data.Recursion: uncurry5 :: (t1 -> t2 -> t3 -> t4 -> t5 -> t6) -> (t1, t2, t3, t4, t5) -> t6
+ Mini.Data.Recursion: uncurry50 :: (t1 -> t2 -> t3 -> t4 -> t5 -> t6 -> t7 -> t8 -> t9 -> t10 -> t11 -> t12 -> t13 -> t14 -> t15 -> t16 -> t17 -> t18 -> t19 -> t20 -> t21 -> t22 -> t23 -> t24 -> t25 -> t26 -> t27 -> t28 -> t29 -> t30 -> t31 -> t32 -> t33 -> t34 -> t35 -> t36 -> t37 -> t38 -> t39 -> t40 -> t41 -> t42 -> t43 -> t44 -> t45 -> t46 -> t47 -> t48 -> t49 -> t50 -> t51) -> (t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18, t19, t20, t21, t22, t23, t24, t25, t26, t27, t28, t29, t30, t31, t32, t33, t34, t35, t36, t37, t38, t39, t40, t41, t42, t43, t44, t45, t46, t47, t48, t49, t50) -> t51
+ Mini.Data.Recursion: uncurry51 :: (t1 -> t2 -> t3 -> t4 -> t5 -> t6 -> t7 -> t8 -> t9 -> t10 -> t11 -> t12 -> t13 -> t14 -> t15 -> t16 -> t17 -> t18 -> t19 -> t20 -> t21 -> t22 -> t23 -> t24 -> t25 -> t26 -> t27 -> t28 -> t29 -> t30 -> t31 -> t32 -> t33 -> t34 -> t35 -> t36 -> t37 -> t38 -> t39 -> t40 -> t41 -> t42 -> t43 -> t44 -> t45 -> t46 -> t47 -> t48 -> t49 -> t50 -> t51 -> t52) -> (t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18, t19, t20, t21, t22, t23, t24, t25, t26, t27, t28, t29, t30, t31, t32, t33, t34, t35, t36, t37, t38, t39, t40, t41, t42, t43, t44, t45, t46, t47, t48, t49, t50, t51) -> t52
+ Mini.Data.Recursion: uncurry52 :: (t1 -> t2 -> t3 -> t4 -> t5 -> t6 -> t7 -> t8 -> t9 -> t10 -> t11 -> t12 -> t13 -> t14 -> t15 -> t16 -> t17 -> t18 -> t19 -> t20 -> t21 -> t22 -> t23 -> t24 -> t25 -> t26 -> t27 -> t28 -> t29 -> t30 -> t31 -> t32 -> t33 -> t34 -> t35 -> t36 -> t37 -> t38 -> t39 -> t40 -> t41 -> t42 -> t43 -> t44 -> t45 -> t46 -> t47 -> t48 -> t49 -> t50 -> t51 -> t52 -> t53) -> (t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18, t19, t20, t21, t22, t23, t24, t25, t26, t27, t28, t29, t30, t31, t32, t33, t34, t35, t36, t37, t38, t39, t40, t41, t42, t43, t44, t45, t46, t47, t48, t49, t50, t51, t52) -> t53
+ Mini.Data.Recursion: uncurry53 :: (t1 -> t2 -> t3 -> t4 -> t5 -> t6 -> t7 -> t8 -> t9 -> t10 -> t11 -> t12 -> t13 -> t14 -> t15 -> t16 -> t17 -> t18 -> t19 -> t20 -> t21 -> t22 -> t23 -> t24 -> t25 -> t26 -> t27 -> t28 -> t29 -> t30 -> t31 -> t32 -> t33 -> t34 -> t35 -> t36 -> t37 -> t38 -> t39 -> t40 -> t41 -> t42 -> t43 -> t44 -> t45 -> t46 -> t47 -> t48 -> t49 -> t50 -> t51 -> t52 -> t53 -> t54) -> (t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18, t19, t20, t21, t22, t23, t24, t25, t26, t27, t28, t29, t30, t31, t32, t33, t34, t35, t36, t37, t38, t39, t40, t41, t42, t43, t44, t45, t46, t47, t48, t49, t50, t51, t52, t53) -> t54
+ Mini.Data.Recursion: uncurry54 :: (t1 -> t2 -> t3 -> t4 -> t5 -> t6 -> t7 -> t8 -> t9 -> t10 -> t11 -> t12 -> t13 -> t14 -> t15 -> t16 -> t17 -> t18 -> t19 -> t20 -> t21 -> t22 -> t23 -> t24 -> t25 -> t26 -> t27 -> t28 -> t29 -> t30 -> t31 -> t32 -> t33 -> t34 -> t35 -> t36 -> t37 -> t38 -> t39 -> t40 -> t41 -> t42 -> t43 -> t44 -> t45 -> t46 -> t47 -> t48 -> t49 -> t50 -> t51 -> t52 -> t53 -> t54 -> t55) -> (t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18, t19, t20, t21, t22, t23, t24, t25, t26, t27, t28, t29, t30, t31, t32, t33, t34, t35, t36, t37, t38, t39, t40, t41, t42, t43, t44, t45, t46, t47, t48, t49, t50, t51, t52, t53, t54) -> t55
+ Mini.Data.Recursion: uncurry55 :: (t1 -> t2 -> t3 -> t4 -> t5 -> t6 -> t7 -> t8 -> t9 -> t10 -> t11 -> t12 -> t13 -> t14 -> t15 -> t16 -> t17 -> t18 -> t19 -> t20 -> t21 -> t22 -> t23 -> t24 -> t25 -> t26 -> t27 -> t28 -> t29 -> t30 -> t31 -> t32 -> t33 -> t34 -> t35 -> t36 -> t37 -> t38 -> t39 -> t40 -> t41 -> t42 -> t43 -> t44 -> t45 -> t46 -> t47 -> t48 -> t49 -> t50 -> t51 -> t52 -> t53 -> t54 -> t55 -> t56) -> (t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18, t19, t20, t21, t22, t23, t24, t25, t26, t27, t28, t29, t30, t31, t32, t33, t34, t35, t36, t37, t38, t39, t40, t41, t42, t43, t44, t45, t46, t47, t48, t49, t50, t51, t52, t53, t54, t55) -> t56
+ Mini.Data.Recursion: uncurry56 :: (t1 -> t2 -> t3 -> t4 -> t5 -> t6 -> t7 -> t8 -> t9 -> t10 -> t11 -> t12 -> t13 -> t14 -> t15 -> t16 -> t17 -> t18 -> t19 -> t20 -> t21 -> t22 -> t23 -> t24 -> t25 -> t26 -> t27 -> t28 -> t29 -> t30 -> t31 -> t32 -> t33 -> t34 -> t35 -> t36 -> t37 -> t38 -> t39 -> t40 -> t41 -> t42 -> t43 -> t44 -> t45 -> t46 -> t47 -> t48 -> t49 -> t50 -> t51 -> t52 -> t53 -> t54 -> t55 -> t56 -> t57) -> (t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18, t19, t20, t21, t22, t23, t24, t25, t26, t27, t28, t29, t30, t31, t32, t33, t34, t35, t36, t37, t38, t39, t40, t41, t42, t43, t44, t45, t46, t47, t48, t49, t50, t51, t52, t53, t54, t55, t56) -> t57
+ Mini.Data.Recursion: uncurry57 :: (t1 -> t2 -> t3 -> t4 -> t5 -> t6 -> t7 -> t8 -> t9 -> t10 -> t11 -> t12 -> t13 -> t14 -> t15 -> t16 -> t17 -> t18 -> t19 -> t20 -> t21 -> t22 -> t23 -> t24 -> t25 -> t26 -> t27 -> t28 -> t29 -> t30 -> t31 -> t32 -> t33 -> t34 -> t35 -> t36 -> t37 -> t38 -> t39 -> t40 -> t41 -> t42 -> t43 -> t44 -> t45 -> t46 -> t47 -> t48 -> t49 -> t50 -> t51 -> t52 -> t53 -> t54 -> t55 -> t56 -> t57 -> t58) -> (t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18, t19, t20, t21, t22, t23, t24, t25, t26, t27, t28, t29, t30, t31, t32, t33, t34, t35, t36, t37, t38, t39, t40, t41, t42, t43, t44, t45, t46, t47, t48, t49, t50, t51, t52, t53, t54, t55, t56, t57) -> t58
+ Mini.Data.Recursion: uncurry58 :: (t1 -> t2 -> t3 -> t4 -> t5 -> t6 -> t7 -> t8 -> t9 -> t10 -> t11 -> t12 -> t13 -> t14 -> t15 -> t16 -> t17 -> t18 -> t19 -> t20 -> t21 -> t22 -> t23 -> t24 -> t25 -> t26 -> t27 -> t28 -> t29 -> t30 -> t31 -> t32 -> t33 -> t34 -> t35 -> t36 -> t37 -> t38 -> t39 -> t40 -> t41 -> t42 -> t43 -> t44 -> t45 -> t46 -> t47 -> t48 -> t49 -> t50 -> t51 -> t52 -> t53 -> t54 -> t55 -> t56 -> t57 -> t58 -> t59) -> (t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18, t19, t20, t21, t22, t23, t24, t25, t26, t27, t28, t29, t30, t31, t32, t33, t34, t35, t36, t37, t38, t39, t40, t41, t42, t43, t44, t45, t46, t47, t48, t49, t50, t51, t52, t53, t54, t55, t56, t57, t58) -> t59
+ Mini.Data.Recursion: uncurry59 :: (t1 -> t2 -> t3 -> t4 -> t5 -> t6 -> t7 -> t8 -> t9 -> t10 -> t11 -> t12 -> t13 -> t14 -> t15 -> t16 -> t17 -> t18 -> t19 -> t20 -> t21 -> t22 -> t23 -> t24 -> t25 -> t26 -> t27 -> t28 -> t29 -> t30 -> t31 -> t32 -> t33 -> t34 -> t35 -> t36 -> t37 -> t38 -> t39 -> t40 -> t41 -> t42 -> t43 -> t44 -> t45 -> t46 -> t47 -> t48 -> t49 -> t50 -> t51 -> t52 -> t53 -> t54 -> t55 -> t56 -> t57 -> t58 -> t59 -> t60) -> (t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18, t19, t20, t21, t22, t23, t24, t25, t26, t27, t28, t29, t30, t31, t32, t33, t34, t35, t36, t37, t38, t39, t40, t41, t42, t43, t44, t45, t46, t47, t48, t49, t50, t51, t52, t53, t54, t55, t56, t57, t58, t59) -> t60
+ Mini.Data.Recursion: uncurry6 :: (t1 -> t2 -> t3 -> t4 -> t5 -> t6 -> t7) -> (t1, t2, t3, t4, t5, t6) -> t7
+ Mini.Data.Recursion: uncurry60 :: (t1 -> t2 -> t3 -> t4 -> t5 -> t6 -> t7 -> t8 -> t9 -> t10 -> t11 -> t12 -> t13 -> t14 -> t15 -> t16 -> t17 -> t18 -> t19 -> t20 -> t21 -> t22 -> t23 -> t24 -> t25 -> t26 -> t27 -> t28 -> t29 -> t30 -> t31 -> t32 -> t33 -> t34 -> t35 -> t36 -> t37 -> t38 -> t39 -> t40 -> t41 -> t42 -> t43 -> t44 -> t45 -> t46 -> t47 -> t48 -> t49 -> t50 -> t51 -> t52 -> t53 -> t54 -> t55 -> t56 -> t57 -> t58 -> t59 -> t60 -> t61) -> (t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18, t19, t20, t21, t22, t23, t24, t25, t26, t27, t28, t29, t30, t31, t32, t33, t34, t35, t36, t37, t38, t39, t40, t41, t42, t43, t44, t45, t46, t47, t48, t49, t50, t51, t52, t53, t54, t55, t56, t57, t58, t59, t60) -> t61
+ Mini.Data.Recursion: uncurry61 :: (t1 -> t2 -> t3 -> t4 -> t5 -> t6 -> t7 -> t8 -> t9 -> t10 -> t11 -> t12 -> t13 -> t14 -> t15 -> t16 -> t17 -> t18 -> t19 -> t20 -> t21 -> t22 -> t23 -> t24 -> t25 -> t26 -> t27 -> t28 -> t29 -> t30 -> t31 -> t32 -> t33 -> t34 -> t35 -> t36 -> t37 -> t38 -> t39 -> t40 -> t41 -> t42 -> t43 -> t44 -> t45 -> t46 -> t47 -> t48 -> t49 -> t50 -> t51 -> t52 -> t53 -> t54 -> t55 -> t56 -> t57 -> t58 -> t59 -> t60 -> t61 -> t62) -> (t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18, t19, t20, t21, t22, t23, t24, t25, t26, t27, t28, t29, t30, t31, t32, t33, t34, t35, t36, t37, t38, t39, t40, t41, t42, t43, t44, t45, t46, t47, t48, t49, t50, t51, t52, t53, t54, t55, t56, t57, t58, t59, t60, t61) -> t62
+ Mini.Data.Recursion: uncurry62 :: (t1 -> t2 -> t3 -> t4 -> t5 -> t6 -> t7 -> t8 -> t9 -> t10 -> t11 -> t12 -> t13 -> t14 -> t15 -> t16 -> t17 -> t18 -> t19 -> t20 -> t21 -> t22 -> t23 -> t24 -> t25 -> t26 -> t27 -> t28 -> t29 -> t30 -> t31 -> t32 -> t33 -> t34 -> t35 -> t36 -> t37 -> t38 -> t39 -> t40 -> t41 -> t42 -> t43 -> t44 -> t45 -> t46 -> t47 -> t48 -> t49 -> t50 -> t51 -> t52 -> t53 -> t54 -> t55 -> t56 -> t57 -> t58 -> t59 -> t60 -> t61 -> t62 -> t63) -> (t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18, t19, t20, t21, t22, t23, t24, t25, t26, t27, t28, t29, t30, t31, t32, t33, t34, t35, t36, t37, t38, t39, t40, t41, t42, t43, t44, t45, t46, t47, t48, t49, t50, t51, t52, t53, t54, t55, t56, t57, t58, t59, t60, t61, t62) -> t63
+ Mini.Data.Recursion: uncurry63 :: (t1 -> t2 -> t3 -> t4 -> t5 -> t6 -> t7 -> t8 -> t9 -> t10 -> t11 -> t12 -> t13 -> t14 -> t15 -> t16 -> t17 -> t18 -> t19 -> t20 -> t21 -> t22 -> t23 -> t24 -> t25 -> t26 -> t27 -> t28 -> t29 -> t30 -> t31 -> t32 -> t33 -> t34 -> t35 -> t36 -> t37 -> t38 -> t39 -> t40 -> t41 -> t42 -> t43 -> t44 -> t45 -> t46 -> t47 -> t48 -> t49 -> t50 -> t51 -> t52 -> t53 -> t54 -> t55 -> t56 -> t57 -> t58 -> t59 -> t60 -> t61 -> t62 -> t63 -> t64) -> (t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18, t19, t20, t21, t22, t23, t24, t25, t26, t27, t28, t29, t30, t31, t32, t33, t34, t35, t36, t37, t38, t39, t40, t41, t42, t43, t44, t45, t46, t47, t48, t49, t50, t51, t52, t53, t54, t55, t56, t57, t58, t59, t60, t61, t62, t63) -> t64
+ Mini.Data.Recursion: uncurry64 :: (t1 -> t2 -> t3 -> t4 -> t5 -> t6 -> t7 -> t8 -> t9 -> t10 -> t11 -> t12 -> t13 -> t14 -> t15 -> t16 -> t17 -> t18 -> t19 -> t20 -> t21 -> t22 -> t23 -> t24 -> t25 -> t26 -> t27 -> t28 -> t29 -> t30 -> t31 -> t32 -> t33 -> t34 -> t35 -> t36 -> t37 -> t38 -> t39 -> t40 -> t41 -> t42 -> t43 -> t44 -> t45 -> t46 -> t47 -> t48 -> t49 -> t50 -> t51 -> t52 -> t53 -> t54 -> t55 -> t56 -> t57 -> t58 -> t59 -> t60 -> t61 -> t62 -> t63 -> t64 -> t65) -> (t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18, t19, t20, t21, t22, t23, t24, t25, t26, t27, t28, t29, t30, t31, t32, t33, t34, t35, t36, t37, t38, t39, t40, t41, t42, t43, t44, t45, t46, t47, t48, t49, t50, t51, t52, t53, t54, t55, t56, t57, t58, t59, t60, t61, t62, t63, t64) -> t65
+ Mini.Data.Recursion: uncurry7 :: (t1 -> t2 -> t3 -> t4 -> t5 -> t6 -> t7 -> t8) -> (t1, t2, t3, t4, t5, t6, t7) -> t8
+ Mini.Data.Recursion: uncurry8 :: (t1 -> t2 -> t3 -> t4 -> t5 -> t6 -> t7 -> t8 -> t9) -> (t1, t2, t3, t4, t5, t6, t7, t8) -> t9
+ Mini.Data.Recursion: uncurry9 :: (t1 -> t2 -> t3 -> t4 -> t5 -> t6 -> t7 -> t8 -> t9 -> t10) -> (t1, t2, t3, t4, t5, t6, t7, t8, t9) -> t10
+ Mini.Data.Set: set :: b -> (Set a -> a -> Set a -> b -> b -> b) -> Set a -> b

Files

CHANGELOG.md view
@@ -1,3 +1,8 @@+1.5.5.0 [2025-01-20]+--------------------+* Create Mini.Data.Recursion: Primitive recursive+  functions on various data structures+ 1.5.4.0 [2025-01-18] -------------------- * Mini.Data.Map:
Mini/Data/Graph.hs view
@@ -6,6 +6,9 @@   -- * Type   Graph, +  -- * Primitive Recursion+  graph,+   -- * Algorithms   distance,   layers,@@ -166,6 +169,20 @@  instance (Ord a) => Monoid (Graph a) where   mempty = empty++{-+ - Primitive Recursion+ -}++-- | Primitive recursion on graphs (internally represented by adjacency lists)+graph+  :: (Map a (Set a) -> Map a (Set a) -> b)+  -- ^ Function applied to the adjacency lists of the graph:+  -- incoming edges, outgoing edges+  -> Graph a+  -- ^ The graph+  -> b+graph f (Graph ies oes) = f ies oes  {-  - Algorithms
Mini/Data/Map.hs view
@@ -1,4 +1,3 @@-{-# LANGUAGE TupleSections #-} -- incomplete patterns in 'fromDistinct{Asc,Desc}List' {-# OPTIONS_GHC -Wno-incomplete-uni-patterns #-} @@ -7,6 +6,9 @@   -- * Type   Map, +  -- * Primitive Recursion+  map,+   -- * Construction   empty,   singleton,@@ -217,23 +219,42 @@  - Primitive recursion  -} --- | Primitive recursion on maps+-- | Primitive recursion on maps (internally structured as trees) map   :: b-  -- ^ Empty bin+  -- ^ Value yielded in case of empty node   -> (Map k a -> k -> a -> Map k a -> b -> b -> b)-  -- ^ Left-heavy bin+  -- ^ Function applied in case of non-empty node:+  -- left child, key, value, right child, left recursion, right recursion+  -- (keys are lesser to the left, greater to the right)+  -> Map k a+  -- ^ Object of the case analysis+  -> b+map e f = map' e f f f++-- Primitive recursion on maps+map'+  :: b+  -- ^ Value yielded in case of empty node   -> (Map k a -> k -> a -> Map k a -> b -> b -> b)-  -- ^ Balanced bin+  -- ^ Function applied in case of left-heavy node:+  -- left child, key, value, right child, left recursion, right recursion+  -- (keys are lesser to the left, greater to the right)   -> (Map k a -> k -> a -> Map k a -> b -> b -> b)-  -- ^ Right-heavy bin+  -- ^ Function applied in case of balanced node:+  -- left child, key, value, right child, left recursion, right recursion+  -- (keys are lesser to the left, greater to the right)+  -> (Map k a -> k -> a -> Map k a -> b -> b -> b)+  -- ^ Function applied in case of right-heavy node:+  -- left child, key, value, right child, left recursion, right recursion+  -- (keys are lesser to the left, greater to the right)   -> Map k a-  -- ^ Map+  -- ^ Object of the case analysis   -> b-map e _ _ _ E = e-map e f g h (L l k a r) = f l k a r (map e f g h l) (map e f g h r)-map e f g h (B l k a r) = g l k a r (map e f g h l) (map e f g h r)-map e f g h (R l k a r) = h l k a r (map e f g h l) (map e f g h r)+map' e _ _ _ E = e+map' e f g h (L l k a r) = f l k a r (map' e f g h l) (map' e f g h r)+map' e f g h (B l k a r) = g l k a r (map' e f g h l) (map' e f g h r)+map' e f g h (R l k a r) = h l k a r (map' e f g h l) (map' e f g h r)  {-  - Construction@@ -315,7 +336,7 @@  -- | /O(n log m)/ Compose the keys of one set with the values of another compose :: (Ord b) => Map b c -> Map a b -> Map a c-compose t1 t2 = map empty go go go t1+compose t1 t2 = map' empty go go go t1  where   go _ _ _ _ _ _ =     fromDistinctAscList $@@ -326,7 +347,7 @@  -- | /O(m log n)/ Subtract a map by another via key matching difference :: (Ord k) => Map k a -> Map k b -> Map k a-difference t1 t2 = map empty go go go t1+difference t1 t2 = map' empty go go go t1  where   go _ _ _ _ _ _ = foldrWithKey (\k _ b -> delete k b) t1 t2 @@ -338,7 +359,7 @@ -- | /O(m log n)/ Subtract a map by another, updating bins of matching keys differenceWithKey   :: (Ord k) => (k -> a -> b -> Maybe a) -> Map k a -> Map k b -> Map k a-differenceWithKey f t1 t2 = map empty go go go t1+differenceWithKey f t1 t2 = map' empty go go go t1  where   go _ _ _ _ _ _ =     foldrWithKey@@ -367,7 +388,7 @@ -- | /O(n log m)/ Intersect a map with another by key matching, combining values intersectionWithKey   :: (Ord k) => (k -> a -> b -> c) -> Map k a -> Map k b -> Map k c-intersectionWithKey f t1 t2 = map empty go go go t2+intersectionWithKey f t1 t2 = map' empty go go go t2  where   go _ _ _ _ _ _ =     fromDistinctAscList $@@ -386,7 +407,7 @@  -- | /O(m log n)/ Unite a map with another, combining values of matching keys unionWithKey :: (Ord k) => (k -> a -> a -> a) -> Map k a -> Map k a -> Map k a-unionWithKey f t1 t2 = map t1 go go go t2+unionWithKey f t1 t2 = map' t1 go go go t2  where   go _ _ _ _ _ _ = foldrWithKey (insertWithKey f) t2 t1 @@ -420,13 +441,13 @@  -- | /O(n)/ Reduce a map with a left-associative operation and an accumulator foldlWithKey :: (b -> k -> a -> b) -> b -> Map k a -> b-foldlWithKey f b = map b go go go+foldlWithKey f b = map' b go go go  where   go _ k a r recl _ = foldlWithKey f (f recl k a) r  -- | /O(n)/ Reduce a map with a right-associative operation and an accumulator foldrWithKey :: (k -> a -> b -> b) -> b -> Map k a -> b-foldrWithKey f b = map b go go go+foldrWithKey f b = map' b go go go  where   go l k a _ _ recr = foldrWithKey f (f k a recr) l @@ -440,7 +461,7 @@  -- | /O(log n)/ Adjust with an operation the value of a key in a map adjustWithKey :: (Ord k) => (k -> a -> a) -> k -> Map k a -> Map k a-adjustWithKey f k0 = map E (go L) (go B) (go R)+adjustWithKey f k0 = map' E (go L) (go B) (go R)  where   go c l k a r recl recr = case compare k0 k of     LT -> c recl k a r@@ -453,9 +474,9 @@  -- | /O(log n)/ Adjust with an operation the value of the maximum key in a map adjustMaxWithKey :: (k -> a -> a) -> Map k a -> Map k a-adjustMaxWithKey f = map E (go L) (go B) (go R)+adjustMaxWithKey f = map' E (go L) (go B) (go R)  where-  go c l k a r _ recr = map (c l k (f k a) r) go' go' go' r+  go c l k a r _ recr = map' (c l k (f k a) r) go' go' go' r    where     go' _ _ _ _ _ _ = c l k a recr @@ -465,9 +486,9 @@  -- | /O(log n)/ Adjust with an operation the value of the minimum key in a map adjustMinWithKey :: (k -> a -> a) -> Map k a -> Map k a-adjustMinWithKey f = map E (go L) (go B) (go R)+adjustMinWithKey f = map' E (go L) (go B) (go R)  where-  go c l k a r recl _ = map (c l k (f k a) r) go' go' go' l+  go c l k a r recl _ = map' (c l k (f k a) r) go' go' go' l    where     go' _ _ _ _ _ _ = c recl k a r @@ -593,7 +614,7 @@  -- | /O(m log n)/ Check whether two maps have no keys in common disjoint :: (Ord k) => Map k a -> Map k a -> Bool-disjoint t1 t2 = map True go go go t1+disjoint t1 t2 = map' True go go go t1  where   go _ _ _ _ _ _ = not $ foldrWithKey (\k _ b -> k `member` t1 || b) False t2 @@ -603,7 +624,7 @@  -- | /O(n log m)/ Check if the bins of one map exist in the other by combination isSubmapOfBy :: (Ord k) => (a -> b -> Bool) -> Map k a -> Map k b -> Bool-isSubmapOfBy p t1 t2 = map (null t1) go go go t2+isSubmapOfBy p t1 t2 = map' (null t1) go go go t2  where   go _ _ _ _ _ _ =     foldrWithKey@@ -613,7 +634,7 @@  -- | /O(log n)/ Fetch the value of a key in a map, or 'Nothing' if absent lookup :: (Ord k) => k -> Map k a -> Maybe a-lookup k = map Nothing go go go+lookup k = map' Nothing go go go  where   go _ k' a _ recl recr = case compare k k' of     LT -> recl@@ -622,7 +643,7 @@  -- | /O(log n)/ Fetch the least bin greater than or equal to a key lookupGE :: (Ord k) => k -> Map k a -> Maybe (k, a)-lookupGE k0 = map Nothing go go go+lookupGE k0 = map' Nothing go go go  where   go _ k a _ recl recr = case compare k k0 of     LT -> recr@@ -631,7 +652,7 @@  -- | /O(log n)/ Fetch the least bin strictly greater than a key lookupGT :: (Ord k) => k -> Map k a -> Maybe (k, a)-lookupGT k0 = map Nothing go go go+lookupGT k0 = map' Nothing go go go  where   go _ k a _ recl recr = case compare k k0 of     LT -> recr@@ -640,7 +661,7 @@  -- | /O(log n)/ Fetch the greatest bin less than or equal to a key lookupLE :: (Ord k) => k -> Map k a -> Maybe (k, a)-lookupLE k0 = map Nothing go go go+lookupLE k0 = map' Nothing go go go  where   go _ k a _ recl recr = case compare k k0 of     LT -> recr <|> Just (k, a)@@ -649,7 +670,7 @@  -- | /O(log n)/ Fetch the greatest bin strictly less than a key lookupLT :: (Ord k) => k -> Map k a -> Maybe (k, a)-lookupLT k0 = map Nothing go go go+lookupLT k0 = map' Nothing go go go  where   go _ k a _ recl recr = case compare k k0 of     LT -> recr <|> Just (k, a)@@ -658,23 +679,23 @@  -- | /O(log n)/ Fetch the bin with the maximum key, or 'Nothing' if empty lookupMax :: Map k a -> Maybe (k, a)-lookupMax = map Nothing go go go+lookupMax = map' Nothing go go go  where-  go _ k a r _ recr = map (Just (k, a)) go' go' go' r+  go _ k a r _ recr = map' (Just (k, a)) go' go' go' r    where     go' _ _ _ _ _ _ = recr  -- | /O(log n)/ Fetch the bin with the minimum key, or 'Nothing' if empty lookupMin :: Map k a -> Maybe (k, a)-lookupMin = map Nothing go go go+lookupMin = map' Nothing go go go  where-  go l k a _ recl _ = map (Just (k, a)) go' go' go' l+  go l k a _ recl _ = map' (Just (k, a)) go' go' go' l    where     go' _ _ _ _ _ _ = recl  -- | /O(log n)/ Check whether a key is in a map member :: (Ord k) => k -> Map k a -> Bool-member k0 = map False go go go+member k0 = map' False go go go  where   go _ k _ _ recl recr = case compare k0 k of     LT -> recl@@ -683,11 +704,11 @@  -- | /O(1)/ Check whether a map is empty null :: Map k a -> Bool-null = map True go go go where go _ _ _ _ _ _ = False+null = map' True go go go where go _ _ _ _ _ _ = False  -- | /O(n)/ Get the size of a map size :: Map k a -> Int-size = map 0 go go go where go _ _ _ _ recl recr = 1 + recl + recr+size = map' 0 go go go where go _ _ _ _ recl recr = 1 + recl + recr  {-  - Traversal@@ -695,13 +716,13 @@  -- | /O(n)/ Apply an operation across a map, transforming its values fmapWithKey :: (k -> a -> b) -> Map k a -> Map k b-fmapWithKey f = map E (go L) (go B) (go R)+fmapWithKey f = map' E (go L) (go B) (go R)  where   go c _ k a _ recl = c recl k (f k a)  -- | /O(n)/ Lift a map with a lifting operation on keys and values traverseWithKey :: (Applicative f) => (k -> a -> f b) -> Map k a -> f (Map k b)-traverseWithKey f = map (pure E) (go L) (go B) (go R)+traverseWithKey f = map' (pure E) (go L) (go B) (go R)  where   go c _ k a _ recl recr = c <$> recl <*> pure k <*> f k a <*> recr @@ -714,19 +735,19 @@ valid = liftA2 (&&) balanced ordered  where   balanced =-    map+    map'       True       (\l _ _ r recl recr -> levels l - levels r == 1 && recl && recr)       (\l _ _ r recl recr -> levels l - levels r == 0 && recl && recr)       (\l _ _ r recl recr -> levels r - levels l == 1 && recl && recr)-  levels = map 0 go go go+  levels = map' 0 go go go    where     go _ _ _ _ recl recr = 1 + max recl recr :: Int-  ordered = map True go go go+  ordered = map' True go go go    where     go l k _ r recl recr =-      map True lt lt lt l-        && map True gt gt gt r+      map' True lt lt lt l+        && map' True gt gt gt r      where       lt _ lk _ _ _ _ = lk < k && recl && recr       gt _ rk _ _ _ _ = rk > k && recl && recr@@ -769,7 +790,7 @@ -- O(log n) Delete a key from a map without checking for membership delete' :: (Ord k) => k -> Map k a -> Map k a delete' k0 =-  map+  map'     (error "Map.delete: L0")     ( \l k a r _ _ ->         case compare k0 k of@@ -791,7 +812,7 @@     )  where   deleteRl l k a r =-    map+    map'       (error "Map.delete: L1")       ( \ll lk la lr _ _ ->           case compare k0 lk of@@ -813,7 +834,7 @@       )       l   deleteRr l k a =-    map+    map'       (error "Map.delete: L2")       ( \rl rk ra rr _ _ ->           case compare k0 rk of@@ -834,7 +855,7 @@             GT -> checkRightR l k a (deleteRr rl rk ra rr)       )   deleteBl l k a r =-    map+    map'       (error "Map.delete: L3")       ( \ll lk la lr _ _ ->           case compare k0 lk of@@ -856,7 +877,7 @@       )       l   deleteBr l k a =-    map+    map'       (error "Map.delete: L4")       ( \rl rk ra rr _ _ ->           case compare k0 rk of@@ -877,7 +898,7 @@             GT -> checkRightB l k a (deleteRr rl rk ra rr)       )   deleteLl l k a r =-    map+    map'       (error "Map.delete: L5")       ( \ll lk la lr _ _ ->           case compare k0 lk of@@ -899,7 +920,7 @@       )       l   deleteLr l k a =-    map+    map'       (error "Map.delete: L6")       ( \rl rk ra rr _ _ ->           case compare k0 rk of@@ -920,10 +941,10 @@             GT -> checkRightL l k a (deleteRr rl rk ra rr)       )   rebalanceR l k a =-    map+    map'       (error "Map.delete: L7")       ( \rl rk ra rr _ _ ->-          map+          map'             (error "Map.delete: L8")             (\rll rlk rla rlr _ _ -> B (B l k a rll) rlk rla (R rlr rk ra rr))             (\rll rlk rla rlr _ _ -> B (B l k a rll) rlk rla (B rlr rk ra rr))@@ -933,12 +954,12 @@       (\rl rk ra rr _ _ -> L (R l k a rl) rk ra rr)       (\rl rk ra rr _ _ -> B (B l k a rl) rk ra rr)   rebalanceL l k a r =-    map+    map'       (error "Map.delete: L9")       (\ll lk la lr _ _ -> B ll lk la (B lr k a r))       (\ll lk la lr _ _ -> R ll lk la (L lr k a r))       ( \ll lk la lr _ _ ->-          map+          map'             (error "Map.delete: L10")             (\lrl lrk lra lrr _ _ -> B (B ll lk la lrl) lrk lra (R lrr k a r))             (\lrl lrk lra lrr _ _ -> B (B ll lk la lrl) lrk lra (B lrr k a r))@@ -947,49 +968,49 @@       )       l   checkLeftR l k a r =-    map+    map'       (error "Map.delete: L11")       (\_ _ _ _ _ _ -> R l k a r)       (\_ _ _ _ _ _ -> rebalanceR l k a r)       (\_ _ _ _ _ _ -> R l k a r)       l   checkLeftB l k a r =-    map+    map'       (error "Map.delete: L12")       (\_ _ _ _ _ _ -> B l k a r)       (\_ _ _ _ _ _ -> R l k a r)       (\_ _ _ _ _ _ -> B l k a r)       l   checkLeftL l k a r =-    map+    map'       (error "Map.delete: L13")       (\_ _ _ _ _ _ -> L l k a r)       (\_ _ _ _ _ _ -> B l k a r)       (\_ _ _ _ _ _ -> L l k a r)       l   checkRightR l k a r =-    map+    map'       (error "Map.delete: L14")       (\_ _ _ _ _ _ -> R l k a r)       (\_ _ _ _ _ _ -> B l k a r)       (\_ _ _ _ _ _ -> R l k a r)       r   checkRightB l k a r =-    map+    map'       (error "Map.delete: L15")       (\_ _ _ _ _ _ -> B l k a r)       (\_ _ _ _ _ _ -> L l k a r)       (\_ _ _ _ _ _ -> B l k a r)       r   checkRightL l k a r =-    map+    map'       (error "Map.delete: L16")       (\_ _ _ _ _ _ -> L l k a r)       (\_ _ _ _ _ _ -> rebalanceL l k a r)       (\_ _ _ _ _ _ -> L l k a r)       r   substituteR l =-    map+    map'       (error "Map.delete: L17")       ( \rl rk ra rr _ _ ->           (\(k, a, r) -> checkRightR l k a r) $@@ -1004,7 +1025,7 @@             popLeftR rl rk ra rr       )   substituteBr l =-    map+    map'       E       ( \rl rk ra rr _ _ ->           (\(k, a, r) -> checkRightB l k a r) $@@ -1019,7 +1040,7 @@             popLeftR rl rk ra rr       )   substituteBl l r =-    map+    map'       E       ( \ll lk la lr _ _ ->           (\(l', k, a) -> checkLeftB l' k a r) $@@ -1035,7 +1056,7 @@       )       l   substituteL l r =-    map+    map'       (error "Map.delete: L18")       ( \ll lk la lr _ _ ->           (\(l', k, a) -> checkLeftL l' k a r) $@@ -1051,49 +1072,49 @@       )       l   checkLeftR' l k a r =-    map+    map'       (rebalanceR l k a r)       (\_ _ _ _ _ _ -> R l k a r)       (\_ _ _ _ _ _ -> R l k a r)       (\_ _ _ _ _ _ -> R l k a r)       l   checkLeftB' l k a r =-    map+    map'       (R l k a r)       (\_ _ _ _ _ _ -> B l k a r)       (\_ _ _ _ _ _ -> B l k a r)       (\_ _ _ _ _ _ -> B l k a r)       l   checkLeftL' l k a r =-    map+    map'       (B l k a r)       (\_ _ _ _ _ _ -> L l k a r)       (\_ _ _ _ _ _ -> L l k a r)       (\_ _ _ _ _ _ -> L l k a r)       l   checkRightR' l k a r =-    map+    map'       (B l k a r)       (\_ _ _ _ _ _ -> R l k a r)       (\_ _ _ _ _ _ -> R l k a r)       (\_ _ _ _ _ _ -> R l k a r)       r   checkRightB' l k a r =-    map+    map'       (L l k a r)       (\_ _ _ _ _ _ -> B l k a r)       (\_ _ _ _ _ _ -> B l k a r)       (\_ _ _ _ _ _ -> B l k a r)       r   checkRightL' l k a r =-    map+    map'       (rebalanceL l k a r)       (\_ _ _ _ _ _ -> L l k a r)       (\_ _ _ _ _ _ -> L l k a r)       (\_ _ _ _ _ _ -> L l k a r)       r   popLeftR l k a r =-    map+    map'       (k, a, r)       ( \ll lk la lr _ _ ->           (\(k', a', l') -> (k', a', checkLeftR l' k a r)) $@@ -1106,14 +1127,14 @@       )       l   popLeftB l k a r =-    map+    map'       (k, a, E)       (\ll lk la lr _ _ -> popLeftBL ll lk la lr k a r)       (\ll lk la lr _ _ -> popLeftBB ll lk la lr k a r)       (\ll lk la lr _ _ -> popLeftBR ll lk la lr k a r)       l   popLeftL l k a r =-    map+    map'       (error "Map.delete: L19")       ( \ll lk la lr _ _ ->           (\(k', a', l') -> (k', a', checkLeftL l' k a r)) $@@ -1126,7 +1147,7 @@       )       l   popLeftRB ll lk la lr k a r =-    map+    map'       (lk, la, rebalanceR E k a r)       ( \lll llk lla llr _ _ ->           (\(k', a', l) -> (k', a', R l k a r)) $@@ -1142,7 +1163,7 @@       )       ll   popLeftBB ll lk la lr k a r =-    map+    map'       (lk, la, R E k a r)       ( \lll llk lla llr _ _ ->           (\(k', a', l) -> (k', a', B l k a r)) $@@ -1158,7 +1179,7 @@       )       ll   popLeftLB ll lk la lr k a r =-    map+    map'       (lk, la, B E k a E)       ( \lll llk lla llr _ _ ->           (\(k', a', l) -> (k', a', L l k a r)) $@@ -1180,7 +1201,7 @@     (\(k', a', l) -> (k', a', checkLeftB l k a r)) $       popLeftL ll lk la lr   popRightR l k a =-    map+    map'       (error "Map.delete: L20")       ( \rl rk ra rr _ _ ->           (\(r, k', a') -> (checkRightR l k a r, k', a')) $@@ -1192,13 +1213,13 @@             popRightR rl rk ra rr       )   popRightB l k a =-    map+    map'       (E, k, a)       (\rl rk ra rr _ _ -> popRightBL l k a rl rk ra rr)       (\rl rk ra rr _ _ -> popRightBB l k a rl rk ra rr)       (\rl rk ra rr _ _ -> popRightBR l k a rl rk ra rr)   popRightL l k a =-    map+    map'       (l, k, a)       ( \rl rk ra rr _ _ ->           (\(r, k', a') -> (checkRightL l k a r, k', a')) $@@ -1210,7 +1231,7 @@             popRightR rl rk ra rr       )   popRightRB l k a rl rk ra =-    map+    map'       (B E k a E, rk, ra)       ( \rrl rrk rra rrr _ _ ->           (\(r, k', a') -> (R l k a r, k', a')) $@@ -1225,7 +1246,7 @@             popRightBR rl rk ra rrl rrk rra rrr       )   popRightBB l k a rl rk ra =-    map+    map'       (L l k a E, rk, ra)       ( \rrl rrk rra rrr _ _ ->           (\(r, k', a') -> (B l k a r, k', a')) $@@ -1240,7 +1261,7 @@             popRightBR rl rk ra rrl rrk rra rrr       )   popRightLB l k a rl rk ra =-    map+    map'       (rebalanceL l k a E, rk, ra)       ( \rrl rrk rra rrr _ _ ->           (\(r, k', a') -> (L l k a r, k', a')) $@@ -1264,7 +1285,7 @@ -- | /O(log n)/ Insert a key and its value, combining new and old if present insertWithKey :: (Ord k) => (k -> a -> a -> a) -> k -> a -> Map k a -> Map k a insertWithKey f k0 a0 =-  map+  map'     (B E k0 a0 E)     (\l k a r _ _ -> insertL l k a r)     (\l k a r _ _ -> insertB l k a r)@@ -1286,12 +1307,12 @@       EQ -> L l k (f k a0 a) r       GT -> insertLr l k a r   insertRl l k a r =-    map+    map'       (B (B E k0 a0 E) k a r)       (\ll lk la lr _ _ -> R (insertL ll lk la lr) k a r)       ( \ll lk la lr _ _ ->           let l' = insertB ll lk la lr-           in map+           in map'                 (error "Map.insert: L0")                 (\_ _ _ _ _ _ -> B l' k a r)                 (\_ _ _ _ _ _ -> R l' k a r)@@ -1301,12 +1322,12 @@       (\ll lk la lr _ _ -> R (insertR ll lk la lr) k a r)       l   insertBl l k a r =-    map+    map'       (L (B E k0 a0 E) k a r)       (\ll lk la lr _ _ -> B (insertL ll lk la lr) k a r)       ( \ll lk la lr _ _ ->           let l' = insertB ll lk la lr-           in map+           in map'                 (error "Map.insert: L1")                 (\_ _ _ _ _ _ -> L l' k a r)                 (\_ _ _ _ _ _ -> B l' k a r)@@ -1316,12 +1337,12 @@       (\ll lk la lr _ _ -> B (insertR ll lk la lr) k a r)       l   insertBr l k a =-    map+    map'       (R l k a (B E k0 a0 E))       (\rl rk ra rr _ _ -> B l k a (insertL rl rk ra rr))       ( \rl rk ra rr _ _ ->           let r = insertB rl rk ra rr-           in map+           in map'                 (error "Map.insert: L2")                 (\_ _ _ _ _ _ -> R l k a r)                 (\_ _ _ _ _ _ -> B l k a r)@@ -1330,12 +1351,12 @@       )       (\rl rk ra rr _ _ -> B l k a (insertR rl rk ra rr))   insertLr l k a =-    map+    map'       (B l k a (B E k0 a0 E))       (\rl rk ra rr _ _ -> L l k a (insertL rl rk ra rr))       ( \rl rk ra rr _ _ ->           let r = insertB rl rk ra rr-           in map+           in map'                 (error "Map.insert: L3")                 (\_ _ _ _ _ _ -> B l k a r)                 (\_ _ _ _ _ _ -> L l k a r)@@ -1344,7 +1365,7 @@       )       (\rl rk ra rr _ _ -> L l k a (insertR rl rk ra rr))   insertRr l k a =-    map+    map'       (error "Map.insert: L4")       (\rl rk ra rr _ _ -> R l k a (insertL rl rk ra rr))       ( \rl rk ra rr _ _ ->@@ -1355,7 +1376,7 @@       )       (\rl rk ra rr _ _ -> R l k a (insertR rl rk ra rr))   insertLl l k a r =-    map+    map'       (error "Map.insert: L5")       (\ll lk la lr _ _ -> L (insertL ll lk la lr) k a r)       ( \ll lk la lr _ _ ->@@ -1367,12 +1388,12 @@       (\ll lk la lr _ _ -> L (insertR ll lk la lr) k a r)       l   insertRrr l k a rl rk ra =-    map+    map'       (B (B l k a rl) rk ra (B E k0 a0 E))       (\rrl rrk rra rrr _ _ -> R l k a (B rl rk ra (insertL rrl rrk rra rrr)))       ( \rrl rrk rra rrr _ _ ->           let rr = insertB rrl rrk rra rrr-           in map+           in map'                 (error "Map.insert: L6")                 (\_ _ _ _ _ _ -> B (B l k a rl) rk ra rr)                 (\_ _ _ _ _ _ -> R l k a (B rl rk ra rr))@@ -1381,12 +1402,12 @@       )       (\rrl rrk rra rrr _ _ -> R l k a (B rl rk ra (insertR rrl rrk rra rrr)))   insertLll ll lk la lr k a r =-    map+    map'       (B (B E k0 a0 E) lk la (B lr k a r))       (\lll llk lla llr _ _ -> L (B (insertL lll llk lla llr) lk la lr) k a r)       ( \lll llk lla llr _ _ ->           let ll' = insertB lll llk lla llr-           in map+           in map'                 (error "Map.insert: L7")                 (\_ _ _ _ _ _ -> B ll' lk la (B lr k a r))                 (\_ _ _ _ _ _ -> L (B ll' lk la lr) k a r)@@ -1396,12 +1417,12 @@       (\lll llk lla llr _ _ -> L (B (insertR lll llk lla llr) lk la lr) k a r)       ll   insertRrl l k a rl rk ra rr =-    map+    map'       (B (B l k a E) k0 a0 (B E rk ra rr))       (\rll rlk rla rlr _ _ -> R l k a (B (insertL rll rlk rla rlr) rk ra rr))       ( \rll rlk rla rlr _ _ ->           let rl' = insertB rll rlk rla rlr-           in map+           in map'                 (error "Map.insert: L8")                 ( \rll' rlk' rla' rlr' _ _ ->                     B@@ -1423,12 +1444,12 @@       (\rll rlk rla rlr _ _ -> R l k a (B (insertR rll rlk rla rlr) rk ra rr))       rl   insertLlr ll lk la lr k a r =-    map+    map'       (B (B ll lk la E) k0 a0 (B E k a r))       (\lrl lrk lra lrr _ _ -> L (B ll lk la (insertL lrl lrk lra lrr)) k a r)       ( \lrl lrk lra lrr _ _ ->           let lr' = insertB lrl lrk lra lrr-           in map+           in map'                 (error "Map.insert: L9")                 ( \lrl' lrk' lra' lrr' _ _ ->                     B
+ Mini/Data/Recursion.hs view
@@ -0,0 +1,832 @@+-- | Primitive recursive functions on various data structures+module Mini.Data.Recursion (+  -- * Re-exports+  bool,+  either,+  maybe,+  uncurry,+  graph,+  map,+  set,++  -- * Lists+  list,+  nonEmpty,++  -- * Orderings+  ordering,++  -- * n-Tuples (3 to 64)+  uncurry3,+  uncurry4,+  uncurry5,+  uncurry6,+  uncurry7,+  uncurry8,+  uncurry9,+  uncurry10,+  uncurry11,+  uncurry12,+  uncurry13,+  uncurry14,+  uncurry15,+  uncurry16,+  uncurry17,+  uncurry18,+  uncurry19,+  uncurry20,+  uncurry21,+  uncurry22,+  uncurry23,+  uncurry24,+  uncurry25,+  uncurry26,+  uncurry27,+  uncurry28,+  uncurry29,+  uncurry30,+  uncurry31,+  uncurry32,+  uncurry33,+  uncurry34,+  uncurry35,+  uncurry36,+  uncurry37,+  uncurry38,+  uncurry39,+  uncurry40,+  uncurry41,+  uncurry42,+  uncurry43,+  uncurry44,+  uncurry45,+  uncurry46,+  uncurry47,+  uncurry48,+  uncurry49,+  uncurry50,+  uncurry51,+  uncurry52,+  uncurry53,+  uncurry54,+  uncurry55,+  uncurry56,+  uncurry57,+  uncurry58,+  uncurry59,+  uncurry60,+  uncurry61,+  uncurry62,+  uncurry63,+  uncurry64,+) where++import Data.Bool (+  Bool,+ )+import qualified Data.Bool as Bool (+  bool,+ )+import Data.Either (+  Either,+ )+import qualified Data.Either as Either (+  either,+ )+import Data.List.NonEmpty (+  NonEmpty (+    (:|)+  ),+ )+import Data.Maybe (+  Maybe,+ )+import qualified Data.Maybe as Maybe (+  maybe,+ )+import Data.Ord (+  Ordering (+    EQ,+    GT,+    LT+  ),+ )+import qualified Data.Tuple as Tuple (+  uncurry,+ )+import Mini.Data.Graph (+  graph,+ )+import Mini.Data.Map (+  map,+ )+import Mini.Data.Set (+  set,+ )++{-+ - Re-exports+ -}++-- | Primitive recursion on bools+bool+  :: a+  -- ^ Value yielded in case of 'Bool.False'+  -> a+  -- ^ Value yielded in case of 'Bool.True'+  -> Bool+  -- ^ Object of the case analysis+  -> a+bool = Bool.bool++-- | Primitive recursion on eithers+either+  :: (a -> c)+  -- ^ Function applied to @a@ in case of @'Either.Left' a@+  -> (b -> c)+  -- ^ Function applied to @b@ in case of @'Either.Right' b@+  -> Either a b+  -- ^ Object of the case analysis+  -> c+either = Either.either++-- | Primitive recursion on maybes+maybe+  :: b+  -- ^ Value yielded in case of 'Maybe.Nothing'+  -> (a -> b)+  -- ^ Function applied to @a@ in case of @'Maybe.Just' a@+  -> Maybe a+  -- ^ Object of the case analysis+  -> b+maybe = Maybe.maybe++-- | Primitive recursion on 2-tuples+uncurry+  :: (t1 -> t2 -> t3)+  -- ^ Function applied to the elements of the 2-tuple+  -> (t1, t2)+  -- ^ The 2-tuple+  -> t3+uncurry = Tuple.uncurry++{-+ - Lists+ -}++-- | Primitive recursion on lists+list+  :: b+  -- ^ Value yielded in case of empty list+  -> (a -> [a] -> b -> b)+  -- ^ Function applied in case of non-empty list: head, tail, recursion+  -> [a]+  -- ^ Object of the case analysis+  -> b+list e _ [] = e+list e f (a : as) = f a as (list e f as)++-- | Primitive recursion on non-empty lists+nonEmpty+  :: (a -> [a] -> b)+  -- ^ Function applied to the head and tail of the non-empty list+  -> NonEmpty a+  -- ^ The non-empty list+  -> b+nonEmpty f (a :| as) = f a as++{-+ - Orderings+ -}++-- | Primitive recursion on orderings+ordering+  :: a+  -- ^ Value yielded in case of 'LT'+  -> a+  -- ^ Value yielded in case of 'EQ'+  -> a+  -- ^ Value yielded in case of 'GT'+  -> Ordering+  -- ^ Object of the case analysis+  -> a+ordering lt _ _ LT = lt+ordering _ eq _ EQ = eq+ordering _ _ gt GT = gt++{-+ - n-Tuples (3 to 64)+ -}++-- | Primitive recursion on 3-tuples+uncurry3+  :: (t1 -> t2 -> t3 -> t4)+  -- ^ Function applied to the elements of the 3-tuple+  -> (t1, t2, t3)+  -- ^ The 3-tuple+  -> t4+uncurry3 f (t1, t2, t3) = f t1 t2 t3++-- | Primitive recursion on 4-tuples+uncurry4+  :: (t1 -> t2 -> t3 -> t4 -> t5)+  -- ^ Function applied to the elements of the 4-tuple+  -> (t1, t2, t3, t4)+  -- ^ The 4-tuple+  -> t5+uncurry4 f (t1, t2, t3, t4) = f t1 t2 t3 t4++-- | Primitive recursion on 5-tuples+uncurry5+  :: (t1 -> t2 -> t3 -> t4 -> t5 -> t6)+  -- ^ Function applied to the elements of the 5-tuple+  -> (t1, t2, t3, t4, t5)+  -- ^ The 5-tuple+  -> t6+uncurry5 f (t1, t2, t3, t4, t5) = f t1 t2 t3 t4 t5++-- | Primitive recursion on 6-tuples+uncurry6+  :: (t1 -> t2 -> t3 -> t4 -> t5 -> t6 -> t7)+  -- ^ Function applied to the elements of the 6-tuple+  -> (t1, t2, t3, t4, t5, t6)+  -- ^ The 6-tuple+  -> t7+uncurry6 f (t1, t2, t3, t4, t5, t6) = f t1 t2 t3 t4 t5 t6++-- | Primitive recursion on 7-tuples+uncurry7+  :: (t1 -> t2 -> t3 -> t4 -> t5 -> t6 -> t7 -> t8)+  -- ^ Function applied to the elements of the 7-tuple+  -> (t1, t2, t3, t4, t5, t6, t7)+  -- ^ The 7-tuple+  -> t8+uncurry7 f (t1, t2, t3, t4, t5, t6, t7) = f t1 t2 t3 t4 t5 t6 t7++-- | Primitive recursion on 8-tuples+uncurry8+  :: (t1 -> t2 -> t3 -> t4 -> t5 -> t6 -> t7 -> t8 -> t9)+  -- ^ Function applied to the elements of the 8-tuple+  -> (t1, t2, t3, t4, t5, t6, t7, t8)+  -- ^ The 8-tuple+  -> t9+uncurry8 f (t1, t2, t3, t4, t5, t6, t7, t8) = f t1 t2 t3 t4 t5 t6 t7 t8++-- | Primitive recursion on 9-tuples+uncurry9+  :: (t1 -> t2 -> t3 -> t4 -> t5 -> t6 -> t7 -> t8 -> t9 -> t10)+  -- ^ Function applied to the elements of the 9-tuple+  -> (t1, t2, t3, t4, t5, t6, t7, t8, t9)+  -- ^ The 9-tuple+  -> t10+uncurry9 f (t1, t2, t3, t4, t5, t6, t7, t8, t9) = f t1 t2 t3 t4 t5 t6 t7 t8 t9++-- | Primitive recursion on 10-tuples+uncurry10+  :: (t1 -> t2 -> t3 -> t4 -> t5 -> t6 -> t7 -> t8 -> t9 -> t10 -> t11)+  -- ^ Function applied to the elements of the 10-tuple+  -> (t1, t2, t3, t4, t5, t6, t7, t8, t9, t10)+  -- ^ The 10-tuple+  -> t11+uncurry10 f (t1, t2, t3, t4, t5, t6, t7, t8, t9, t10) =+  f t1 t2 t3 t4 t5 t6 t7 t8 t9 t10++-- | Primitive recursion on 11-tuples+uncurry11+  :: (t1 -> t2 -> t3 -> t4 -> t5 -> t6 -> t7 -> t8 -> t9 -> t10 -> t11 -> t12)+  -- ^ Function applied to the elements of the 11-tuple+  -> (t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11)+  -- ^ The 11-tuple+  -> t12+uncurry11 f (t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11) =+  f t1 t2 t3 t4 t5 t6 t7 t8 t9 t10 t11++-- | Primitive recursion on 12-tuples+uncurry12+  :: (t1 -> t2 -> t3 -> t4 -> t5 -> t6 -> t7 -> t8 -> t9 -> t10 -> t11 -> t12 -> t13)+  -- ^ Function applied to the elements of the 12-tuple+  -> (t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12)+  -- ^ The 12-tuple+  -> t13+uncurry12 f (t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12) =+  f t1 t2 t3 t4 t5 t6 t7 t8 t9 t10 t11 t12++-- | Primitive recursion on 13-tuples+uncurry13+  :: (t1 -> t2 -> t3 -> t4 -> t5 -> t6 -> t7 -> t8 -> t9 -> t10 -> t11 -> t12 -> t13 -> t14)+  -- ^ Function applied to the elements of the 13-tuple+  -> (t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13)+  -- ^ The 13-tuple+  -> t14+uncurry13 f (t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13) =+  f t1 t2 t3 t4 t5 t6 t7 t8 t9 t10 t11 t12 t13++-- | Primitive recursion on 14-tuples+uncurry14+  :: (t1 -> t2 -> t3 -> t4 -> t5 -> t6 -> t7 -> t8 -> t9 -> t10 -> t11 -> t12 -> t13 -> t14 -> t15)+  -- ^ Function applied to the elements of the 14-tuple+  -> (t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14)+  -- ^ The 14-tuple+  -> t15+uncurry14 f (t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14) =+  f t1 t2 t3 t4 t5 t6 t7 t8 t9 t10 t11 t12 t13 t14++-- | Primitive recursion on 15-tuples+uncurry15+  :: (t1 -> t2 -> t3 -> t4 -> t5 -> t6 -> t7 -> t8 -> t9 -> t10 -> t11 -> t12 -> t13 -> t14 -> t15 -> t16)+  -- ^ Function applied to the elements of the 15-tuple+  -> (t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15)+  -- ^ The 15-tuple+  -> t16+uncurry15 f (t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15) =+  f t1 t2 t3 t4 t5 t6 t7 t8 t9 t10 t11 t12 t13 t14 t15++-- | Primitive recursion on 16-tuples+uncurry16+  :: (t1 -> t2 -> t3 -> t4 -> t5 -> t6 -> t7 -> t8 -> t9 -> t10 -> t11 -> t12 -> t13 -> t14 -> t15 -> t16 -> t17)+  -- ^ Function applied to the elements of the 16-tuple+  -> (t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16)+  -- ^ The 16-tuple+  -> t17+uncurry16 f (t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16) =+  f t1 t2 t3 t4 t5 t6 t7 t8 t9 t10 t11 t12 t13 t14 t15 t16++-- | Primitive recursion on 17-tuples+uncurry17+  :: (t1 -> t2 -> t3 -> t4 -> t5 -> t6 -> t7 -> t8 -> t9 -> t10 -> t11 -> t12 -> t13 -> t14 -> t15 -> t16 -> t17 -> t18)+  -- ^ Function applied to the elements of the 17-tuple+  -> (t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17)+  -- ^ The 17-tuple+  -> t18+uncurry17 f (t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17) =+  f t1 t2 t3 t4 t5 t6 t7 t8 t9 t10 t11 t12 t13 t14 t15 t16 t17++-- | Primitive recursion on 18-tuples+uncurry18+  :: (t1 -> t2 -> t3 -> t4 -> t5 -> t6 -> t7 -> t8 -> t9 -> t10 -> t11 -> t12 -> t13 -> t14 -> t15 -> t16 -> t17 -> t18 -> t19)+  -- ^ Function applied to the elements of the 18-tuple+  -> (t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18)+  -- ^ The 18-tuple+  -> t19+uncurry18 f (t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18) =+  f t1 t2 t3 t4 t5 t6 t7 t8 t9 t10 t11 t12 t13 t14 t15 t16 t17 t18++-- | Primitive recursion on 19-tuples+uncurry19+  :: (t1 -> t2 -> t3 -> t4 -> t5 -> t6 -> t7 -> t8 -> t9 -> t10 -> t11 -> t12 -> t13 -> t14 -> t15 -> t16 -> t17 -> t18 -> t19 -> t20)+  -- ^ Function applied to the elements of the 19-tuple+  -> (t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18, t19)+  -- ^ The 19-tuple+  -> t20+uncurry19 f (t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18, t19) =+  f t1 t2 t3 t4 t5 t6 t7 t8 t9 t10 t11 t12 t13 t14 t15 t16 t17 t18 t19++-- | Primitive recursion on 20-tuples+uncurry20+  :: (t1 -> t2 -> t3 -> t4 -> t5 -> t6 -> t7 -> t8 -> t9 -> t10 -> t11 -> t12 -> t13 -> t14 -> t15 -> t16 -> t17 -> t18 -> t19 -> t20 -> t21)+  -- ^ Function applied to the elements of the 20-tuple+  -> (t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18, t19, t20)+  -- ^ The 20-tuple+  -> t21+uncurry20 f (t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18, t19, t20) =+  f t1 t2 t3 t4 t5 t6 t7 t8 t9 t10 t11 t12 t13 t14 t15 t16 t17 t18 t19 t20++-- | Primitive recursion on 21-tuples+uncurry21+  :: (t1 -> t2 -> t3 -> t4 -> t5 -> t6 -> t7 -> t8 -> t9 -> t10 -> t11 -> t12 -> t13 -> t14 -> t15 -> t16 -> t17 -> t18 -> t19 -> t20 -> t21 -> t22)+  -- ^ Function applied to the elements of the 21-tuple+  -> (t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18, t19, t20, t21)+  -- ^ The 21-tuple+  -> t22+uncurry21 f (t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18, t19, t20, t21) =+  f t1 t2 t3 t4 t5 t6 t7 t8 t9 t10 t11 t12 t13 t14 t15 t16 t17 t18 t19 t20 t21++-- | Primitive recursion on 22-tuples+uncurry22+  :: (t1 -> t2 -> t3 -> t4 -> t5 -> t6 -> t7 -> t8 -> t9 -> t10 -> t11 -> t12 -> t13 -> t14 -> t15 -> t16 -> t17 -> t18 -> t19 -> t20 -> t21 -> t22 -> t23)+  -- ^ Function applied to the elements of the 22-tuple+  -> (t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18, t19, t20, t21, t22)+  -- ^ The 22-tuple+  -> t23+uncurry22 f (t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18, t19, t20, t21, t22) =+  f t1 t2 t3 t4 t5 t6 t7 t8 t9 t10 t11 t12 t13 t14 t15 t16 t17 t18 t19 t20 t21 t22++-- | Primitive recursion on 23-tuples+uncurry23+  :: (t1 -> t2 -> t3 -> t4 -> t5 -> t6 -> t7 -> t8 -> t9 -> t10 -> t11 -> t12 -> t13 -> t14 -> t15 -> t16 -> t17 -> t18 -> t19 -> t20 -> t21 -> t22 -> t23 -> t24)+  -- ^ Function applied to the elements of the 23-tuple+  -> (t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18, t19, t20, t21, t22, t23)+  -- ^ The 23-tuple+  -> t24+uncurry23 f (t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18, t19, t20, t21, t22, t23) =+  f t1 t2 t3 t4 t5 t6 t7 t8 t9 t10 t11 t12 t13 t14 t15 t16 t17 t18 t19 t20 t21 t22 t23++-- | Primitive recursion on 24-tuples+uncurry24+  :: (t1 -> t2 -> t3 -> t4 -> t5 -> t6 -> t7 -> t8 -> t9 -> t10 -> t11 -> t12 -> t13 -> t14 -> t15 -> t16 -> t17 -> t18 -> t19 -> t20 -> t21 -> t22 -> t23 -> t24 -> t25)+  -- ^ Function applied to the elements of the 24-tuple+  -> (t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18, t19, t20, t21, t22, t23, t24)+  -- ^ The 24-tuple+  -> t25+uncurry24 f (t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18, t19, t20, t21, t22, t23, t24) =+  f t1 t2 t3 t4 t5 t6 t7 t8 t9 t10 t11 t12 t13 t14 t15 t16 t17 t18 t19 t20 t21 t22 t23 t24++-- | Primitive recursion on 25-tuples+uncurry25+  :: (t1 -> t2 -> t3 -> t4 -> t5 -> t6 -> t7 -> t8 -> t9 -> t10 -> t11 -> t12 -> t13 -> t14 -> t15 -> t16 -> t17 -> t18 -> t19 -> t20 -> t21 -> t22 -> t23 -> t24 -> t25 -> t26)+  -- ^ Function applied to the elements of the 25-tuple+  -> (t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18, t19, t20, t21, t22, t23, t24, t25)+  -- ^ The 25-tuple+  -> t26+uncurry25 f (t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18, t19, t20, t21, t22, t23, t24, t25) =+  f t1 t2 t3 t4 t5 t6 t7 t8 t9 t10 t11 t12 t13 t14 t15 t16 t17 t18 t19 t20 t21 t22 t23 t24 t25++-- | Primitive recursion on 26-tuples+uncurry26+  :: (t1 -> t2 -> t3 -> t4 -> t5 -> t6 -> t7 -> t8 -> t9 -> t10 -> t11 -> t12 -> t13 -> t14 -> t15 -> t16 -> t17 -> t18 -> t19 -> t20 -> t21 -> t22 -> t23 -> t24 -> t25 -> t26 -> t27)+  -- ^ Function applied to the elements of the 26-tuple+  -> (t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18, t19, t20, t21, t22, t23, t24, t25, t26)+  -- ^ The 26-tuple+  -> t27+uncurry26 f (t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18, t19, t20, t21, t22, t23, t24, t25, t26) =+  f t1 t2 t3 t4 t5 t6 t7 t8 t9 t10 t11 t12 t13 t14 t15 t16 t17 t18 t19 t20 t21 t22 t23 t24 t25 t26++-- | Primitive recursion on 27-tuples+uncurry27+  :: (t1 -> t2 -> t3 -> t4 -> t5 -> t6 -> t7 -> t8 -> t9 -> t10 -> t11 -> t12 -> t13 -> t14 -> t15 -> t16 -> t17 -> t18 -> t19 -> t20 -> t21 -> t22 -> t23 -> t24 -> t25 -> t26 -> t27 -> t28)+  -- ^ Function applied to the elements of the 27-tuple+  -> (t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18, t19, t20, t21, t22, t23, t24, t25, t26, t27)+  -- ^ The 27-tuple+  -> t28+uncurry27 f (t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18, t19, t20, t21, t22, t23, t24, t25, t26, t27) =+  f t1 t2 t3 t4 t5 t6 t7 t8 t9 t10 t11 t12 t13 t14 t15 t16 t17 t18 t19 t20 t21 t22 t23 t24 t25 t26 t27++-- | Primitive recursion on 28-tuples+uncurry28+  :: (t1 -> t2 -> t3 -> t4 -> t5 -> t6 -> t7 -> t8 -> t9 -> t10 -> t11 -> t12 -> t13 -> t14 -> t15 -> t16 -> t17 -> t18 -> t19 -> t20 -> t21 -> t22 -> t23 -> t24 -> t25 -> t26 -> t27 -> t28 -> t29)+  -- ^ Function applied to the elements of the 28-tuple+  -> (t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18, t19, t20, t21, t22, t23, t24, t25, t26, t27, t28)+  -- ^ The 28-tuple+  -> t29+uncurry28 f (t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18, t19, t20, t21, t22, t23, t24, t25, t26, t27, t28) =+  f t1 t2 t3 t4 t5 t6 t7 t8 t9 t10 t11 t12 t13 t14 t15 t16 t17 t18 t19 t20 t21 t22 t23 t24 t25 t26 t27 t28++-- | Primitive recursion on 29-tuples+uncurry29+  :: (t1 -> t2 -> t3 -> t4 -> t5 -> t6 -> t7 -> t8 -> t9 -> t10 -> t11 -> t12 -> t13 -> t14 -> t15 -> t16 -> t17 -> t18 -> t19 -> t20 -> t21 -> t22 -> t23 -> t24 -> t25 -> t26 -> t27 -> t28 -> t29 -> t30)+  -- ^ Function applied to the elements of the 29-tuple+  -> (t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18, t19, t20, t21, t22, t23, t24, t25, t26, t27, t28, t29)+  -- ^ The 29-tuple+  -> t30+uncurry29 f (t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18, t19, t20, t21, t22, t23, t24, t25, t26, t27, t28, t29) =+  f t1 t2 t3 t4 t5 t6 t7 t8 t9 t10 t11 t12 t13 t14 t15 t16 t17 t18 t19 t20 t21 t22 t23 t24 t25 t26 t27 t28 t29++-- | Primitive recursion on 30-tuples+uncurry30+  :: (t1 -> t2 -> t3 -> t4 -> t5 -> t6 -> t7 -> t8 -> t9 -> t10 -> t11 -> t12 -> t13 -> t14 -> t15 -> t16 -> t17 -> t18 -> t19 -> t20 -> t21 -> t22 -> t23 -> t24 -> t25 -> t26 -> t27 -> t28 -> t29 -> t30 -> t31)+  -- ^ Function applied to the elements of the 30-tuple+  -> (t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18, t19, t20, t21, t22, t23, t24, t25, t26, t27, t28, t29, t30)+  -- ^ The 30-tuple+  -> t31+uncurry30 f (t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18, t19, t20, t21, t22, t23, t24, t25, t26, t27, t28, t29, t30) =+  f t1 t2 t3 t4 t5 t6 t7 t8 t9 t10 t11 t12 t13 t14 t15 t16 t17 t18 t19 t20 t21 t22 t23 t24 t25 t26 t27 t28 t29 t30++-- | Primitive recursion on 31-tuples+uncurry31+  :: (t1 -> t2 -> t3 -> t4 -> t5 -> t6 -> t7 -> t8 -> t9 -> t10 -> t11 -> t12 -> t13 -> t14 -> t15 -> t16 -> t17 -> t18 -> t19 -> t20 -> t21 -> t22 -> t23 -> t24 -> t25 -> t26 -> t27 -> t28 -> t29 -> t30 -> t31 -> t32)+  -- ^ Function applied to the elements of the 31-tuple+  -> (t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18, t19, t20, t21, t22, t23, t24, t25, t26, t27, t28, t29, t30, t31)+  -- ^ The 31-tuple+  -> t32+uncurry31 f (t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18, t19, t20, t21, t22, t23, t24, t25, t26, t27, t28, t29, t30, t31) =+  f t1 t2 t3 t4 t5 t6 t7 t8 t9 t10 t11 t12 t13 t14 t15 t16 t17 t18 t19 t20 t21 t22 t23 t24 t25 t26 t27 t28 t29 t30 t31++-- | Primitive recursion on 32-tuples+uncurry32+  :: (t1 -> t2 -> t3 -> t4 -> t5 -> t6 -> t7 -> t8 -> t9 -> t10 -> t11 -> t12 -> t13 -> t14 -> t15 -> t16 -> t17 -> t18 -> t19 -> t20 -> t21 -> t22 -> t23 -> t24 -> t25 -> t26 -> t27 -> t28 -> t29 -> t30 -> t31 -> t32 -> t33)+  -- ^ Function applied to the elements of the 32-tuple+  -> (t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18, t19, t20, t21, t22, t23, t24, t25, t26, t27, t28, t29, t30, t31, t32)+  -- ^ The 32-tuple+  -> t33+uncurry32 f (t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18, t19, t20, t21, t22, t23, t24, t25, t26, t27, t28, t29, t30, t31, t32) =+  f t1 t2 t3 t4 t5 t6 t7 t8 t9 t10 t11 t12 t13 t14 t15 t16 t17 t18 t19 t20 t21 t22 t23 t24 t25 t26 t27 t28 t29 t30 t31 t32++-- | Primitive recursion on 33-tuples+uncurry33+  :: (t1 -> t2 -> t3 -> t4 -> t5 -> t6 -> t7 -> t8 -> t9 -> t10 -> t11 -> t12 -> t13 -> t14 -> t15 -> t16 -> t17 -> t18 -> t19 -> t20 -> t21 -> t22 -> t23 -> t24 -> t25 -> t26 -> t27 -> t28 -> t29 -> t30 -> t31 -> t32 -> t33 -> t34)+  -- ^ Function applied to the elements of the 33-tuple+  -> (t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18, t19, t20, t21, t22, t23, t24, t25, t26, t27, t28, t29, t30, t31, t32, t33)+  -- ^ The 33-tuple+  -> t34+uncurry33 f (t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18, t19, t20, t21, t22, t23, t24, t25, t26, t27, t28, t29, t30, t31, t32, t33) =+  f t1 t2 t3 t4 t5 t6 t7 t8 t9 t10 t11 t12 t13 t14 t15 t16 t17 t18 t19 t20 t21 t22 t23 t24 t25 t26 t27 t28 t29 t30 t31 t32 t33++-- | Primitive recursion on 34-tuples+uncurry34+  :: (t1 -> t2 -> t3 -> t4 -> t5 -> t6 -> t7 -> t8 -> t9 -> t10 -> t11 -> t12 -> t13 -> t14 -> t15 -> t16 -> t17 -> t18 -> t19 -> t20 -> t21 -> t22 -> t23 -> t24 -> t25 -> t26 -> t27 -> t28 -> t29 -> t30 -> t31 -> t32 -> t33 -> t34 -> t35)+  -- ^ Function applied to the elements of the 34-tuple+  -> (t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18, t19, t20, t21, t22, t23, t24, t25, t26, t27, t28, t29, t30, t31, t32, t33, t34)+  -- ^ The 34-tuple+  -> t35+uncurry34 f (t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18, t19, t20, t21, t22, t23, t24, t25, t26, t27, t28, t29, t30, t31, t32, t33, t34) =+  f t1 t2 t3 t4 t5 t6 t7 t8 t9 t10 t11 t12 t13 t14 t15 t16 t17 t18 t19 t20 t21 t22 t23 t24 t25 t26 t27 t28 t29 t30 t31 t32 t33 t34++-- | Primitive recursion on 35-tuples+uncurry35+  :: (t1 -> t2 -> t3 -> t4 -> t5 -> t6 -> t7 -> t8 -> t9 -> t10 -> t11 -> t12 -> t13 -> t14 -> t15 -> t16 -> t17 -> t18 -> t19 -> t20 -> t21 -> t22 -> t23 -> t24 -> t25 -> t26 -> t27 -> t28 -> t29 -> t30 -> t31 -> t32 -> t33 -> t34 -> t35 -> t36)+  -- ^ Function applied to the elements of the 35-tuple+  -> (t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18, t19, t20, t21, t22, t23, t24, t25, t26, t27, t28, t29, t30, t31, t32, t33, t34, t35)+  -- ^ The 35-tuple+  -> t36+uncurry35 f (t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18, t19, t20, t21, t22, t23, t24, t25, t26, t27, t28, t29, t30, t31, t32, t33, t34, t35) =+  f t1 t2 t3 t4 t5 t6 t7 t8 t9 t10 t11 t12 t13 t14 t15 t16 t17 t18 t19 t20 t21 t22 t23 t24 t25 t26 t27 t28 t29 t30 t31 t32 t33 t34 t35++-- | Primitive recursion on 36-tuples+uncurry36+  :: (t1 -> t2 -> t3 -> t4 -> t5 -> t6 -> t7 -> t8 -> t9 -> t10 -> t11 -> t12 -> t13 -> t14 -> t15 -> t16 -> t17 -> t18 -> t19 -> t20 -> t21 -> t22 -> t23 -> t24 -> t25 -> t26 -> t27 -> t28 -> t29 -> t30 -> t31 -> t32 -> t33 -> t34 -> t35 -> t36 -> t37)+  -- ^ Function applied to the elements of the 36-tuple+  -> (t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18, t19, t20, t21, t22, t23, t24, t25, t26, t27, t28, t29, t30, t31, t32, t33, t34, t35, t36)+  -- ^ The 36-tuple+  -> t37+uncurry36 f (t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18, t19, t20, t21, t22, t23, t24, t25, t26, t27, t28, t29, t30, t31, t32, t33, t34, t35, t36) =+  f t1 t2 t3 t4 t5 t6 t7 t8 t9 t10 t11 t12 t13 t14 t15 t16 t17 t18 t19 t20 t21 t22 t23 t24 t25 t26 t27 t28 t29 t30 t31 t32 t33 t34 t35 t36++-- | Primitive recursion on 37-tuples+uncurry37+  :: (t1 -> t2 -> t3 -> t4 -> t5 -> t6 -> t7 -> t8 -> t9 -> t10 -> t11 -> t12 -> t13 -> t14 -> t15 -> t16 -> t17 -> t18 -> t19 -> t20 -> t21 -> t22 -> t23 -> t24 -> t25 -> t26 -> t27 -> t28 -> t29 -> t30 -> t31 -> t32 -> t33 -> t34 -> t35 -> t36 -> t37 -> t38)+  -- ^ Function applied to the elements of the 37-tuple+  -> (t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18, t19, t20, t21, t22, t23, t24, t25, t26, t27, t28, t29, t30, t31, t32, t33, t34, t35, t36, t37)+  -- ^ The 37-tuple+  -> t38+uncurry37 f (t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18, t19, t20, t21, t22, t23, t24, t25, t26, t27, t28, t29, t30, t31, t32, t33, t34, t35, t36, t37) =+  f t1 t2 t3 t4 t5 t6 t7 t8 t9 t10 t11 t12 t13 t14 t15 t16 t17 t18 t19 t20 t21 t22 t23 t24 t25 t26 t27 t28 t29 t30 t31 t32 t33 t34 t35 t36 t37++-- | Primitive recursion on 38-tuples+uncurry38+  :: (t1 -> t2 -> t3 -> t4 -> t5 -> t6 -> t7 -> t8 -> t9 -> t10 -> t11 -> t12 -> t13 -> t14 -> t15 -> t16 -> t17 -> t18 -> t19 -> t20 -> t21 -> t22 -> t23 -> t24 -> t25 -> t26 -> t27 -> t28 -> t29 -> t30 -> t31 -> t32 -> t33 -> t34 -> t35 -> t36 -> t37 -> t38 -> t39)+  -- ^ Function applied to the elements of the 38-tuple+  -> (t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18, t19, t20, t21, t22, t23, t24, t25, t26, t27, t28, t29, t30, t31, t32, t33, t34, t35, t36, t37, t38)+  -- ^ The 38-tuple+  -> t39+uncurry38 f (t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18, t19, t20, t21, t22, t23, t24, t25, t26, t27, t28, t29, t30, t31, t32, t33, t34, t35, t36, t37, t38) =+  f t1 t2 t3 t4 t5 t6 t7 t8 t9 t10 t11 t12 t13 t14 t15 t16 t17 t18 t19 t20 t21 t22 t23 t24 t25 t26 t27 t28 t29 t30 t31 t32 t33 t34 t35 t36 t37 t38++-- | Primitive recursion on 39-tuples+uncurry39+  :: (t1 -> t2 -> t3 -> t4 -> t5 -> t6 -> t7 -> t8 -> t9 -> t10 -> t11 -> t12 -> t13 -> t14 -> t15 -> t16 -> t17 -> t18 -> t19 -> t20 -> t21 -> t22 -> t23 -> t24 -> t25 -> t26 -> t27 -> t28 -> t29 -> t30 -> t31 -> t32 -> t33 -> t34 -> t35 -> t36 -> t37 -> t38 -> t39 -> t40)+  -- ^ Function applied to the elements of the 39-tuple+  -> (t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18, t19, t20, t21, t22, t23, t24, t25, t26, t27, t28, t29, t30, t31, t32, t33, t34, t35, t36, t37, t38, t39)+  -- ^ The 39-tuple+  -> t40+uncurry39 f (t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18, t19, t20, t21, t22, t23, t24, t25, t26, t27, t28, t29, t30, t31, t32, t33, t34, t35, t36, t37, t38, t39) =+  f t1 t2 t3 t4 t5 t6 t7 t8 t9 t10 t11 t12 t13 t14 t15 t16 t17 t18 t19 t20 t21 t22 t23 t24 t25 t26 t27 t28 t29 t30 t31 t32 t33 t34 t35 t36 t37 t38 t39++-- | Primitive recursion on 40-tuples+uncurry40+  :: (t1 -> t2 -> t3 -> t4 -> t5 -> t6 -> t7 -> t8 -> t9 -> t10 -> t11 -> t12 -> t13 -> t14 -> t15 -> t16 -> t17 -> t18 -> t19 -> t20 -> t21 -> t22 -> t23 -> t24 -> t25 -> t26 -> t27 -> t28 -> t29 -> t30 -> t31 -> t32 -> t33 -> t34 -> t35 -> t36 -> t37 -> t38 -> t39 -> t40 -> t41)+  -- ^ Function applied to the elements of the 40-tuple+  -> (t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18, t19, t20, t21, t22, t23, t24, t25, t26, t27, t28, t29, t30, t31, t32, t33, t34, t35, t36, t37, t38, t39, t40)+  -- ^ The 40-tuple+  -> t41+uncurry40 f (t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18, t19, t20, t21, t22, t23, t24, t25, t26, t27, t28, t29, t30, t31, t32, t33, t34, t35, t36, t37, t38, t39, t40) =+  f t1 t2 t3 t4 t5 t6 t7 t8 t9 t10 t11 t12 t13 t14 t15 t16 t17 t18 t19 t20 t21 t22 t23 t24 t25 t26 t27 t28 t29 t30 t31 t32 t33 t34 t35 t36 t37 t38 t39 t40++-- | Primitive recursion on 41-tuples+uncurry41+  :: (t1 -> t2 -> t3 -> t4 -> t5 -> t6 -> t7 -> t8 -> t9 -> t10 -> t11 -> t12 -> t13 -> t14 -> t15 -> t16 -> t17 -> t18 -> t19 -> t20 -> t21 -> t22 -> t23 -> t24 -> t25 -> t26 -> t27 -> t28 -> t29 -> t30 -> t31 -> t32 -> t33 -> t34 -> t35 -> t36 -> t37 -> t38 -> t39 -> t40 -> t41 -> t42)+  -- ^ Function applied to the elements of the 41-tuple+  -> (t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18, t19, t20, t21, t22, t23, t24, t25, t26, t27, t28, t29, t30, t31, t32, t33, t34, t35, t36, t37, t38, t39, t40, t41)+  -- ^ The 41-tuple+  -> t42+uncurry41 f (t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18, t19, t20, t21, t22, t23, t24, t25, t26, t27, t28, t29, t30, t31, t32, t33, t34, t35, t36, t37, t38, t39, t40, t41) =+  f t1 t2 t3 t4 t5 t6 t7 t8 t9 t10 t11 t12 t13 t14 t15 t16 t17 t18 t19 t20 t21 t22 t23 t24 t25 t26 t27 t28 t29 t30 t31 t32 t33 t34 t35 t36 t37 t38 t39 t40 t41++-- | Primitive recursion on 42-tuples+uncurry42+  :: (t1 -> t2 -> t3 -> t4 -> t5 -> t6 -> t7 -> t8 -> t9 -> t10 -> t11 -> t12 -> t13 -> t14 -> t15 -> t16 -> t17 -> t18 -> t19 -> t20 -> t21 -> t22 -> t23 -> t24 -> t25 -> t26 -> t27 -> t28 -> t29 -> t30 -> t31 -> t32 -> t33 -> t34 -> t35 -> t36 -> t37 -> t38 -> t39 -> t40 -> t41 -> t42 -> t43)+  -- ^ Function applied to the elements of the 42-tuple+  -> (t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18, t19, t20, t21, t22, t23, t24, t25, t26, t27, t28, t29, t30, t31, t32, t33, t34, t35, t36, t37, t38, t39, t40, t41, t42)+  -- ^ The 42-tuple+  -> t43+uncurry42 f (t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18, t19, t20, t21, t22, t23, t24, t25, t26, t27, t28, t29, t30, t31, t32, t33, t34, t35, t36, t37, t38, t39, t40, t41, t42) =+  f t1 t2 t3 t4 t5 t6 t7 t8 t9 t10 t11 t12 t13 t14 t15 t16 t17 t18 t19 t20 t21 t22 t23 t24 t25 t26 t27 t28 t29 t30 t31 t32 t33 t34 t35 t36 t37 t38 t39 t40 t41 t42++-- | Primitive recursion on 43-tuples+uncurry43+  :: (t1 -> t2 -> t3 -> t4 -> t5 -> t6 -> t7 -> t8 -> t9 -> t10 -> t11 -> t12 -> t13 -> t14 -> t15 -> t16 -> t17 -> t18 -> t19 -> t20 -> t21 -> t22 -> t23 -> t24 -> t25 -> t26 -> t27 -> t28 -> t29 -> t30 -> t31 -> t32 -> t33 -> t34 -> t35 -> t36 -> t37 -> t38 -> t39 -> t40 -> t41 -> t42 -> t43 -> t44)+  -- ^ Function applied to the elements of the 43-tuple+  -> (t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18, t19, t20, t21, t22, t23, t24, t25, t26, t27, t28, t29, t30, t31, t32, t33, t34, t35, t36, t37, t38, t39, t40, t41, t42, t43)+  -- ^ The 43-tuple+  -> t44+uncurry43 f (t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18, t19, t20, t21, t22, t23, t24, t25, t26, t27, t28, t29, t30, t31, t32, t33, t34, t35, t36, t37, t38, t39, t40, t41, t42, t43) =+  f t1 t2 t3 t4 t5 t6 t7 t8 t9 t10 t11 t12 t13 t14 t15 t16 t17 t18 t19 t20 t21 t22 t23 t24 t25 t26 t27 t28 t29 t30 t31 t32 t33 t34 t35 t36 t37 t38 t39 t40 t41 t42 t43++-- | Primitive recursion on 44-tuples+uncurry44+  :: (t1 -> t2 -> t3 -> t4 -> t5 -> t6 -> t7 -> t8 -> t9 -> t10 -> t11 -> t12 -> t13 -> t14 -> t15 -> t16 -> t17 -> t18 -> t19 -> t20 -> t21 -> t22 -> t23 -> t24 -> t25 -> t26 -> t27 -> t28 -> t29 -> t30 -> t31 -> t32 -> t33 -> t34 -> t35 -> t36 -> t37 -> t38 -> t39 -> t40 -> t41 -> t42 -> t43 -> t44 -> t45)+  -- ^ Function applied to the elements of the 44-tuple+  -> (t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18, t19, t20, t21, t22, t23, t24, t25, t26, t27, t28, t29, t30, t31, t32, t33, t34, t35, t36, t37, t38, t39, t40, t41, t42, t43, t44)+  -- ^ The 44-tuple+  -> t45+uncurry44 f (t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18, t19, t20, t21, t22, t23, t24, t25, t26, t27, t28, t29, t30, t31, t32, t33, t34, t35, t36, t37, t38, t39, t40, t41, t42, t43, t44) =+  f t1 t2 t3 t4 t5 t6 t7 t8 t9 t10 t11 t12 t13 t14 t15 t16 t17 t18 t19 t20 t21 t22 t23 t24 t25 t26 t27 t28 t29 t30 t31 t32 t33 t34 t35 t36 t37 t38 t39 t40 t41 t42 t43 t44++-- | Primitive recursion on 45-tuples+uncurry45+  :: (t1 -> t2 -> t3 -> t4 -> t5 -> t6 -> t7 -> t8 -> t9 -> t10 -> t11 -> t12 -> t13 -> t14 -> t15 -> t16 -> t17 -> t18 -> t19 -> t20 -> t21 -> t22 -> t23 -> t24 -> t25 -> t26 -> t27 -> t28 -> t29 -> t30 -> t31 -> t32 -> t33 -> t34 -> t35 -> t36 -> t37 -> t38 -> t39 -> t40 -> t41 -> t42 -> t43 -> t44 -> t45 -> t46)+  -- ^ Function applied to the elements of the 45-tuple+  -> (t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18, t19, t20, t21, t22, t23, t24, t25, t26, t27, t28, t29, t30, t31, t32, t33, t34, t35, t36, t37, t38, t39, t40, t41, t42, t43, t44, t45)+  -- ^ The 45-tuple+  -> t46+uncurry45 f (t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18, t19, t20, t21, t22, t23, t24, t25, t26, t27, t28, t29, t30, t31, t32, t33, t34, t35, t36, t37, t38, t39, t40, t41, t42, t43, t44, t45) =+  f t1 t2 t3 t4 t5 t6 t7 t8 t9 t10 t11 t12 t13 t14 t15 t16 t17 t18 t19 t20 t21 t22 t23 t24 t25 t26 t27 t28 t29 t30 t31 t32 t33 t34 t35 t36 t37 t38 t39 t40 t41 t42 t43 t44 t45++-- | Primitive recursion on 46-tuples+uncurry46+  :: (t1 -> t2 -> t3 -> t4 -> t5 -> t6 -> t7 -> t8 -> t9 -> t10 -> t11 -> t12 -> t13 -> t14 -> t15 -> t16 -> t17 -> t18 -> t19 -> t20 -> t21 -> t22 -> t23 -> t24 -> t25 -> t26 -> t27 -> t28 -> t29 -> t30 -> t31 -> t32 -> t33 -> t34 -> t35 -> t36 -> t37 -> t38 -> t39 -> t40 -> t41 -> t42 -> t43 -> t44 -> t45 -> t46 -> t47)+  -- ^ Function applied to the elements of the 46-tuple+  -> (t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18, t19, t20, t21, t22, t23, t24, t25, t26, t27, t28, t29, t30, t31, t32, t33, t34, t35, t36, t37, t38, t39, t40, t41, t42, t43, t44, t45, t46)+  -- ^ The 46-tuple+  -> t47+uncurry46 f (t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18, t19, t20, t21, t22, t23, t24, t25, t26, t27, t28, t29, t30, t31, t32, t33, t34, t35, t36, t37, t38, t39, t40, t41, t42, t43, t44, t45, t46) =+  f t1 t2 t3 t4 t5 t6 t7 t8 t9 t10 t11 t12 t13 t14 t15 t16 t17 t18 t19 t20 t21 t22 t23 t24 t25 t26 t27 t28 t29 t30 t31 t32 t33 t34 t35 t36 t37 t38 t39 t40 t41 t42 t43 t44 t45 t46++-- | Primitive recursion on 47-tuples+uncurry47+  :: (t1 -> t2 -> t3 -> t4 -> t5 -> t6 -> t7 -> t8 -> t9 -> t10 -> t11 -> t12 -> t13 -> t14 -> t15 -> t16 -> t17 -> t18 -> t19 -> t20 -> t21 -> t22 -> t23 -> t24 -> t25 -> t26 -> t27 -> t28 -> t29 -> t30 -> t31 -> t32 -> t33 -> t34 -> t35 -> t36 -> t37 -> t38 -> t39 -> t40 -> t41 -> t42 -> t43 -> t44 -> t45 -> t46 -> t47 -> t48)+  -- ^ Function applied to the elements of the 47-tuple+  -> (t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18, t19, t20, t21, t22, t23, t24, t25, t26, t27, t28, t29, t30, t31, t32, t33, t34, t35, t36, t37, t38, t39, t40, t41, t42, t43, t44, t45, t46, t47)+  -- ^ The 47-tuple+  -> t48+uncurry47 f (t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18, t19, t20, t21, t22, t23, t24, t25, t26, t27, t28, t29, t30, t31, t32, t33, t34, t35, t36, t37, t38, t39, t40, t41, t42, t43, t44, t45, t46, t47) =+  f t1 t2 t3 t4 t5 t6 t7 t8 t9 t10 t11 t12 t13 t14 t15 t16 t17 t18 t19 t20 t21 t22 t23 t24 t25 t26 t27 t28 t29 t30 t31 t32 t33 t34 t35 t36 t37 t38 t39 t40 t41 t42 t43 t44 t45 t46 t47++-- | Primitive recursion on 48-tuples+uncurry48+  :: (t1 -> t2 -> t3 -> t4 -> t5 -> t6 -> t7 -> t8 -> t9 -> t10 -> t11 -> t12 -> t13 -> t14 -> t15 -> t16 -> t17 -> t18 -> t19 -> t20 -> t21 -> t22 -> t23 -> t24 -> t25 -> t26 -> t27 -> t28 -> t29 -> t30 -> t31 -> t32 -> t33 -> t34 -> t35 -> t36 -> t37 -> t38 -> t39 -> t40 -> t41 -> t42 -> t43 -> t44 -> t45 -> t46 -> t47 -> t48 -> t49)+  -- ^ Function applied to the elements of the 48-tuple+  -> (t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18, t19, t20, t21, t22, t23, t24, t25, t26, t27, t28, t29, t30, t31, t32, t33, t34, t35, t36, t37, t38, t39, t40, t41, t42, t43, t44, t45, t46, t47, t48)+  -- ^ The 48-tuple+  -> t49+uncurry48 f (t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18, t19, t20, t21, t22, t23, t24, t25, t26, t27, t28, t29, t30, t31, t32, t33, t34, t35, t36, t37, t38, t39, t40, t41, t42, t43, t44, t45, t46, t47, t48) =+  f t1 t2 t3 t4 t5 t6 t7 t8 t9 t10 t11 t12 t13 t14 t15 t16 t17 t18 t19 t20 t21 t22 t23 t24 t25 t26 t27 t28 t29 t30 t31 t32 t33 t34 t35 t36 t37 t38 t39 t40 t41 t42 t43 t44 t45 t46 t47 t48++-- | Primitive recursion on 49-tuples+uncurry49+  :: (t1 -> t2 -> t3 -> t4 -> t5 -> t6 -> t7 -> t8 -> t9 -> t10 -> t11 -> t12 -> t13 -> t14 -> t15 -> t16 -> t17 -> t18 -> t19 -> t20 -> t21 -> t22 -> t23 -> t24 -> t25 -> t26 -> t27 -> t28 -> t29 -> t30 -> t31 -> t32 -> t33 -> t34 -> t35 -> t36 -> t37 -> t38 -> t39 -> t40 -> t41 -> t42 -> t43 -> t44 -> t45 -> t46 -> t47 -> t48 -> t49 -> t50)+  -- ^ Function applied to the elements of the 49-tuple+  -> (t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18, t19, t20, t21, t22, t23, t24, t25, t26, t27, t28, t29, t30, t31, t32, t33, t34, t35, t36, t37, t38, t39, t40, t41, t42, t43, t44, t45, t46, t47, t48, t49)+  -- ^ The 49-tuple+  -> t50+uncurry49 f (t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18, t19, t20, t21, t22, t23, t24, t25, t26, t27, t28, t29, t30, t31, t32, t33, t34, t35, t36, t37, t38, t39, t40, t41, t42, t43, t44, t45, t46, t47, t48, t49) =+  f t1 t2 t3 t4 t5 t6 t7 t8 t9 t10 t11 t12 t13 t14 t15 t16 t17 t18 t19 t20 t21 t22 t23 t24 t25 t26 t27 t28 t29 t30 t31 t32 t33 t34 t35 t36 t37 t38 t39 t40 t41 t42 t43 t44 t45 t46 t47 t48 t49++-- | Primitive recursion on 50-tuples+uncurry50+  :: (t1 -> t2 -> t3 -> t4 -> t5 -> t6 -> t7 -> t8 -> t9 -> t10 -> t11 -> t12 -> t13 -> t14 -> t15 -> t16 -> t17 -> t18 -> t19 -> t20 -> t21 -> t22 -> t23 -> t24 -> t25 -> t26 -> t27 -> t28 -> t29 -> t30 -> t31 -> t32 -> t33 -> t34 -> t35 -> t36 -> t37 -> t38 -> t39 -> t40 -> t41 -> t42 -> t43 -> t44 -> t45 -> t46 -> t47 -> t48 -> t49 -> t50 -> t51)+  -- ^ Function applied to the elements of the 50-tuple+  -> (t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18, t19, t20, t21, t22, t23, t24, t25, t26, t27, t28, t29, t30, t31, t32, t33, t34, t35, t36, t37, t38, t39, t40, t41, t42, t43, t44, t45, t46, t47, t48, t49, t50)+  -- ^ The 50-tuple+  -> t51+uncurry50 f (t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18, t19, t20, t21, t22, t23, t24, t25, t26, t27, t28, t29, t30, t31, t32, t33, t34, t35, t36, t37, t38, t39, t40, t41, t42, t43, t44, t45, t46, t47, t48, t49, t50) =+  f t1 t2 t3 t4 t5 t6 t7 t8 t9 t10 t11 t12 t13 t14 t15 t16 t17 t18 t19 t20 t21 t22 t23 t24 t25 t26 t27 t28 t29 t30 t31 t32 t33 t34 t35 t36 t37 t38 t39 t40 t41 t42 t43 t44 t45 t46 t47 t48 t49 t50++-- | Primitive recursion on 51-tuples+uncurry51+  :: (t1 -> t2 -> t3 -> t4 -> t5 -> t6 -> t7 -> t8 -> t9 -> t10 -> t11 -> t12 -> t13 -> t14 -> t15 -> t16 -> t17 -> t18 -> t19 -> t20 -> t21 -> t22 -> t23 -> t24 -> t25 -> t26 -> t27 -> t28 -> t29 -> t30 -> t31 -> t32 -> t33 -> t34 -> t35 -> t36 -> t37 -> t38 -> t39 -> t40 -> t41 -> t42 -> t43 -> t44 -> t45 -> t46 -> t47 -> t48 -> t49 -> t50 -> t51 -> t52)+  -- ^ Function applied to the elements of the 51-tuple+  -> (t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18, t19, t20, t21, t22, t23, t24, t25, t26, t27, t28, t29, t30, t31, t32, t33, t34, t35, t36, t37, t38, t39, t40, t41, t42, t43, t44, t45, t46, t47, t48, t49, t50, t51)+  -- ^ The 51-tuple+  -> t52+uncurry51 f (t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18, t19, t20, t21, t22, t23, t24, t25, t26, t27, t28, t29, t30, t31, t32, t33, t34, t35, t36, t37, t38, t39, t40, t41, t42, t43, t44, t45, t46, t47, t48, t49, t50, t51) =+  f t1 t2 t3 t4 t5 t6 t7 t8 t9 t10 t11 t12 t13 t14 t15 t16 t17 t18 t19 t20 t21 t22 t23 t24 t25 t26 t27 t28 t29 t30 t31 t32 t33 t34 t35 t36 t37 t38 t39 t40 t41 t42 t43 t44 t45 t46 t47 t48 t49 t50 t51++-- | Primitive recursion on 52-tuples+uncurry52+  :: (t1 -> t2 -> t3 -> t4 -> t5 -> t6 -> t7 -> t8 -> t9 -> t10 -> t11 -> t12 -> t13 -> t14 -> t15 -> t16 -> t17 -> t18 -> t19 -> t20 -> t21 -> t22 -> t23 -> t24 -> t25 -> t26 -> t27 -> t28 -> t29 -> t30 -> t31 -> t32 -> t33 -> t34 -> t35 -> t36 -> t37 -> t38 -> t39 -> t40 -> t41 -> t42 -> t43 -> t44 -> t45 -> t46 -> t47 -> t48 -> t49 -> t50 -> t51 -> t52 -> t53)+  -- ^ Function applied to the elements of the 52-tuple+  -> (t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18, t19, t20, t21, t22, t23, t24, t25, t26, t27, t28, t29, t30, t31, t32, t33, t34, t35, t36, t37, t38, t39, t40, t41, t42, t43, t44, t45, t46, t47, t48, t49, t50, t51, t52)+  -- ^ The 52-tuple+  -> t53+uncurry52 f (t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18, t19, t20, t21, t22, t23, t24, t25, t26, t27, t28, t29, t30, t31, t32, t33, t34, t35, t36, t37, t38, t39, t40, t41, t42, t43, t44, t45, t46, t47, t48, t49, t50, t51, t52) =+  f t1 t2 t3 t4 t5 t6 t7 t8 t9 t10 t11 t12 t13 t14 t15 t16 t17 t18 t19 t20 t21 t22 t23 t24 t25 t26 t27 t28 t29 t30 t31 t32 t33 t34 t35 t36 t37 t38 t39 t40 t41 t42 t43 t44 t45 t46 t47 t48 t49 t50 t51 t52++-- | Primitive recursion on 53-tuples+uncurry53+  :: (t1 -> t2 -> t3 -> t4 -> t5 -> t6 -> t7 -> t8 -> t9 -> t10 -> t11 -> t12 -> t13 -> t14 -> t15 -> t16 -> t17 -> t18 -> t19 -> t20 -> t21 -> t22 -> t23 -> t24 -> t25 -> t26 -> t27 -> t28 -> t29 -> t30 -> t31 -> t32 -> t33 -> t34 -> t35 -> t36 -> t37 -> t38 -> t39 -> t40 -> t41 -> t42 -> t43 -> t44 -> t45 -> t46 -> t47 -> t48 -> t49 -> t50 -> t51 -> t52 -> t53 -> t54)+  -- ^ Function applied to the elements of the 53-tuple+  -> (t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18, t19, t20, t21, t22, t23, t24, t25, t26, t27, t28, t29, t30, t31, t32, t33, t34, t35, t36, t37, t38, t39, t40, t41, t42, t43, t44, t45, t46, t47, t48, t49, t50, t51, t52, t53)+  -- ^ The 53-tuple+  -> t54+uncurry53 f (t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18, t19, t20, t21, t22, t23, t24, t25, t26, t27, t28, t29, t30, t31, t32, t33, t34, t35, t36, t37, t38, t39, t40, t41, t42, t43, t44, t45, t46, t47, t48, t49, t50, t51, t52, t53) =+  f t1 t2 t3 t4 t5 t6 t7 t8 t9 t10 t11 t12 t13 t14 t15 t16 t17 t18 t19 t20 t21 t22 t23 t24 t25 t26 t27 t28 t29 t30 t31 t32 t33 t34 t35 t36 t37 t38 t39 t40 t41 t42 t43 t44 t45 t46 t47 t48 t49 t50 t51 t52 t53++-- | Primitive recursion on 54-tuples+uncurry54+  :: (t1 -> t2 -> t3 -> t4 -> t5 -> t6 -> t7 -> t8 -> t9 -> t10 -> t11 -> t12 -> t13 -> t14 -> t15 -> t16 -> t17 -> t18 -> t19 -> t20 -> t21 -> t22 -> t23 -> t24 -> t25 -> t26 -> t27 -> t28 -> t29 -> t30 -> t31 -> t32 -> t33 -> t34 -> t35 -> t36 -> t37 -> t38 -> t39 -> t40 -> t41 -> t42 -> t43 -> t44 -> t45 -> t46 -> t47 -> t48 -> t49 -> t50 -> t51 -> t52 -> t53 -> t54 -> t55)+  -- ^ Function applied to the elements of the 54-tuple+  -> (t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18, t19, t20, t21, t22, t23, t24, t25, t26, t27, t28, t29, t30, t31, t32, t33, t34, t35, t36, t37, t38, t39, t40, t41, t42, t43, t44, t45, t46, t47, t48, t49, t50, t51, t52, t53, t54)+  -- ^ The 54-tuple+  -> t55+uncurry54 f (t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18, t19, t20, t21, t22, t23, t24, t25, t26, t27, t28, t29, t30, t31, t32, t33, t34, t35, t36, t37, t38, t39, t40, t41, t42, t43, t44, t45, t46, t47, t48, t49, t50, t51, t52, t53, t54) =+  f t1 t2 t3 t4 t5 t6 t7 t8 t9 t10 t11 t12 t13 t14 t15 t16 t17 t18 t19 t20 t21 t22 t23 t24 t25 t26 t27 t28 t29 t30 t31 t32 t33 t34 t35 t36 t37 t38 t39 t40 t41 t42 t43 t44 t45 t46 t47 t48 t49 t50 t51 t52 t53 t54++-- | Primitive recursion on 55-tuples+uncurry55+  :: (t1 -> t2 -> t3 -> t4 -> t5 -> t6 -> t7 -> t8 -> t9 -> t10 -> t11 -> t12 -> t13 -> t14 -> t15 -> t16 -> t17 -> t18 -> t19 -> t20 -> t21 -> t22 -> t23 -> t24 -> t25 -> t26 -> t27 -> t28 -> t29 -> t30 -> t31 -> t32 -> t33 -> t34 -> t35 -> t36 -> t37 -> t38 -> t39 -> t40 -> t41 -> t42 -> t43 -> t44 -> t45 -> t46 -> t47 -> t48 -> t49 -> t50 -> t51 -> t52 -> t53 -> t54 -> t55 -> t56)+  -- ^ Function applied to the elements of the 55-tuple+  -> (t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18, t19, t20, t21, t22, t23, t24, t25, t26, t27, t28, t29, t30, t31, t32, t33, t34, t35, t36, t37, t38, t39, t40, t41, t42, t43, t44, t45, t46, t47, t48, t49, t50, t51, t52, t53, t54, t55)+  -- ^ The 55-tuple+  -> t56+uncurry55 f (t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18, t19, t20, t21, t22, t23, t24, t25, t26, t27, t28, t29, t30, t31, t32, t33, t34, t35, t36, t37, t38, t39, t40, t41, t42, t43, t44, t45, t46, t47, t48, t49, t50, t51, t52, t53, t54, t55) =+  f t1 t2 t3 t4 t5 t6 t7 t8 t9 t10 t11 t12 t13 t14 t15 t16 t17 t18 t19 t20 t21 t22 t23 t24 t25 t26 t27 t28 t29 t30 t31 t32 t33 t34 t35 t36 t37 t38 t39 t40 t41 t42 t43 t44 t45 t46 t47 t48 t49 t50 t51 t52 t53 t54 t55++-- | Primitive recursion on 56-tuples+uncurry56+  :: (t1 -> t2 -> t3 -> t4 -> t5 -> t6 -> t7 -> t8 -> t9 -> t10 -> t11 -> t12 -> t13 -> t14 -> t15 -> t16 -> t17 -> t18 -> t19 -> t20 -> t21 -> t22 -> t23 -> t24 -> t25 -> t26 -> t27 -> t28 -> t29 -> t30 -> t31 -> t32 -> t33 -> t34 -> t35 -> t36 -> t37 -> t38 -> t39 -> t40 -> t41 -> t42 -> t43 -> t44 -> t45 -> t46 -> t47 -> t48 -> t49 -> t50 -> t51 -> t52 -> t53 -> t54 -> t55 -> t56 -> t57)+  -- ^ Function applied to the elements of the 56-tuple+  -> (t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18, t19, t20, t21, t22, t23, t24, t25, t26, t27, t28, t29, t30, t31, t32, t33, t34, t35, t36, t37, t38, t39, t40, t41, t42, t43, t44, t45, t46, t47, t48, t49, t50, t51, t52, t53, t54, t55, t56)+  -- ^ The 56-tuple+  -> t57+uncurry56 f (t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18, t19, t20, t21, t22, t23, t24, t25, t26, t27, t28, t29, t30, t31, t32, t33, t34, t35, t36, t37, t38, t39, t40, t41, t42, t43, t44, t45, t46, t47, t48, t49, t50, t51, t52, t53, t54, t55, t56) =+  f t1 t2 t3 t4 t5 t6 t7 t8 t9 t10 t11 t12 t13 t14 t15 t16 t17 t18 t19 t20 t21 t22 t23 t24 t25 t26 t27 t28 t29 t30 t31 t32 t33 t34 t35 t36 t37 t38 t39 t40 t41 t42 t43 t44 t45 t46 t47 t48 t49 t50 t51 t52 t53 t54 t55 t56++-- | Primitive recursion on 57-tuples+uncurry57+  :: (t1 -> t2 -> t3 -> t4 -> t5 -> t6 -> t7 -> t8 -> t9 -> t10 -> t11 -> t12 -> t13 -> t14 -> t15 -> t16 -> t17 -> t18 -> t19 -> t20 -> t21 -> t22 -> t23 -> t24 -> t25 -> t26 -> t27 -> t28 -> t29 -> t30 -> t31 -> t32 -> t33 -> t34 -> t35 -> t36 -> t37 -> t38 -> t39 -> t40 -> t41 -> t42 -> t43 -> t44 -> t45 -> t46 -> t47 -> t48 -> t49 -> t50 -> t51 -> t52 -> t53 -> t54 -> t55 -> t56 -> t57 -> t58)+  -- ^ Function applied to the elements of the 57-tuple+  -> (t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18, t19, t20, t21, t22, t23, t24, t25, t26, t27, t28, t29, t30, t31, t32, t33, t34, t35, t36, t37, t38, t39, t40, t41, t42, t43, t44, t45, t46, t47, t48, t49, t50, t51, t52, t53, t54, t55, t56, t57)+  -- ^ The 57-tuple+  -> t58+uncurry57 f (t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18, t19, t20, t21, t22, t23, t24, t25, t26, t27, t28, t29, t30, t31, t32, t33, t34, t35, t36, t37, t38, t39, t40, t41, t42, t43, t44, t45, t46, t47, t48, t49, t50, t51, t52, t53, t54, t55, t56, t57) =+  f t1 t2 t3 t4 t5 t6 t7 t8 t9 t10 t11 t12 t13 t14 t15 t16 t17 t18 t19 t20 t21 t22 t23 t24 t25 t26 t27 t28 t29 t30 t31 t32 t33 t34 t35 t36 t37 t38 t39 t40 t41 t42 t43 t44 t45 t46 t47 t48 t49 t50 t51 t52 t53 t54 t55 t56 t57++-- | Primitive recursion on 58-tuples+uncurry58+  :: (t1 -> t2 -> t3 -> t4 -> t5 -> t6 -> t7 -> t8 -> t9 -> t10 -> t11 -> t12 -> t13 -> t14 -> t15 -> t16 -> t17 -> t18 -> t19 -> t20 -> t21 -> t22 -> t23 -> t24 -> t25 -> t26 -> t27 -> t28 -> t29 -> t30 -> t31 -> t32 -> t33 -> t34 -> t35 -> t36 -> t37 -> t38 -> t39 -> t40 -> t41 -> t42 -> t43 -> t44 -> t45 -> t46 -> t47 -> t48 -> t49 -> t50 -> t51 -> t52 -> t53 -> t54 -> t55 -> t56 -> t57 -> t58 -> t59)+  -- ^ Function applied to the elements of the 58-tuple+  -> (t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18, t19, t20, t21, t22, t23, t24, t25, t26, t27, t28, t29, t30, t31, t32, t33, t34, t35, t36, t37, t38, t39, t40, t41, t42, t43, t44, t45, t46, t47, t48, t49, t50, t51, t52, t53, t54, t55, t56, t57, t58)+  -- ^ The 58-tuple+  -> t59+uncurry58 f (t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18, t19, t20, t21, t22, t23, t24, t25, t26, t27, t28, t29, t30, t31, t32, t33, t34, t35, t36, t37, t38, t39, t40, t41, t42, t43, t44, t45, t46, t47, t48, t49, t50, t51, t52, t53, t54, t55, t56, t57, t58) =+  f t1 t2 t3 t4 t5 t6 t7 t8 t9 t10 t11 t12 t13 t14 t15 t16 t17 t18 t19 t20 t21 t22 t23 t24 t25 t26 t27 t28 t29 t30 t31 t32 t33 t34 t35 t36 t37 t38 t39 t40 t41 t42 t43 t44 t45 t46 t47 t48 t49 t50 t51 t52 t53 t54 t55 t56 t57 t58++-- | Primitive recursion on 59-tuples+uncurry59+  :: (t1 -> t2 -> t3 -> t4 -> t5 -> t6 -> t7 -> t8 -> t9 -> t10 -> t11 -> t12 -> t13 -> t14 -> t15 -> t16 -> t17 -> t18 -> t19 -> t20 -> t21 -> t22 -> t23 -> t24 -> t25 -> t26 -> t27 -> t28 -> t29 -> t30 -> t31 -> t32 -> t33 -> t34 -> t35 -> t36 -> t37 -> t38 -> t39 -> t40 -> t41 -> t42 -> t43 -> t44 -> t45 -> t46 -> t47 -> t48 -> t49 -> t50 -> t51 -> t52 -> t53 -> t54 -> t55 -> t56 -> t57 -> t58 -> t59 -> t60)+  -- ^ Function applied to the elements of the 59-tuple+  -> (t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18, t19, t20, t21, t22, t23, t24, t25, t26, t27, t28, t29, t30, t31, t32, t33, t34, t35, t36, t37, t38, t39, t40, t41, t42, t43, t44, t45, t46, t47, t48, t49, t50, t51, t52, t53, t54, t55, t56, t57, t58, t59)+  -- ^ The 59-tuple+  -> t60+uncurry59 f (t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18, t19, t20, t21, t22, t23, t24, t25, t26, t27, t28, t29, t30, t31, t32, t33, t34, t35, t36, t37, t38, t39, t40, t41, t42, t43, t44, t45, t46, t47, t48, t49, t50, t51, t52, t53, t54, t55, t56, t57, t58, t59) =+  f t1 t2 t3 t4 t5 t6 t7 t8 t9 t10 t11 t12 t13 t14 t15 t16 t17 t18 t19 t20 t21 t22 t23 t24 t25 t26 t27 t28 t29 t30 t31 t32 t33 t34 t35 t36 t37 t38 t39 t40 t41 t42 t43 t44 t45 t46 t47 t48 t49 t50 t51 t52 t53 t54 t55 t56 t57 t58 t59++-- | Primitive recursion on 60-tuples+uncurry60+  :: (t1 -> t2 -> t3 -> t4 -> t5 -> t6 -> t7 -> t8 -> t9 -> t10 -> t11 -> t12 -> t13 -> t14 -> t15 -> t16 -> t17 -> t18 -> t19 -> t20 -> t21 -> t22 -> t23 -> t24 -> t25 -> t26 -> t27 -> t28 -> t29 -> t30 -> t31 -> t32 -> t33 -> t34 -> t35 -> t36 -> t37 -> t38 -> t39 -> t40 -> t41 -> t42 -> t43 -> t44 -> t45 -> t46 -> t47 -> t48 -> t49 -> t50 -> t51 -> t52 -> t53 -> t54 -> t55 -> t56 -> t57 -> t58 -> t59 -> t60 -> t61)+  -- ^ Function applied to the elements of the 60-tuple+  -> (t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18, t19, t20, t21, t22, t23, t24, t25, t26, t27, t28, t29, t30, t31, t32, t33, t34, t35, t36, t37, t38, t39, t40, t41, t42, t43, t44, t45, t46, t47, t48, t49, t50, t51, t52, t53, t54, t55, t56, t57, t58, t59, t60)+  -- ^ The 60-tuple+  -> t61+uncurry60 f (t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18, t19, t20, t21, t22, t23, t24, t25, t26, t27, t28, t29, t30, t31, t32, t33, t34, t35, t36, t37, t38, t39, t40, t41, t42, t43, t44, t45, t46, t47, t48, t49, t50, t51, t52, t53, t54, t55, t56, t57, t58, t59, t60) =+  f t1 t2 t3 t4 t5 t6 t7 t8 t9 t10 t11 t12 t13 t14 t15 t16 t17 t18 t19 t20 t21 t22 t23 t24 t25 t26 t27 t28 t29 t30 t31 t32 t33 t34 t35 t36 t37 t38 t39 t40 t41 t42 t43 t44 t45 t46 t47 t48 t49 t50 t51 t52 t53 t54 t55 t56 t57 t58 t59 t60++-- | Primitive recursion on 61-tuples+uncurry61+  :: (t1 -> t2 -> t3 -> t4 -> t5 -> t6 -> t7 -> t8 -> t9 -> t10 -> t11 -> t12 -> t13 -> t14 -> t15 -> t16 -> t17 -> t18 -> t19 -> t20 -> t21 -> t22 -> t23 -> t24 -> t25 -> t26 -> t27 -> t28 -> t29 -> t30 -> t31 -> t32 -> t33 -> t34 -> t35 -> t36 -> t37 -> t38 -> t39 -> t40 -> t41 -> t42 -> t43 -> t44 -> t45 -> t46 -> t47 -> t48 -> t49 -> t50 -> t51 -> t52 -> t53 -> t54 -> t55 -> t56 -> t57 -> t58 -> t59 -> t60 -> t61 -> t62)+  -- ^ Function applied to the elements of the 61-tuple+  -> (t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18, t19, t20, t21, t22, t23, t24, t25, t26, t27, t28, t29, t30, t31, t32, t33, t34, t35, t36, t37, t38, t39, t40, t41, t42, t43, t44, t45, t46, t47, t48, t49, t50, t51, t52, t53, t54, t55, t56, t57, t58, t59, t60, t61)+  -- ^ The 61-tuple+  -> t62+uncurry61 f (t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18, t19, t20, t21, t22, t23, t24, t25, t26, t27, t28, t29, t30, t31, t32, t33, t34, t35, t36, t37, t38, t39, t40, t41, t42, t43, t44, t45, t46, t47, t48, t49, t50, t51, t52, t53, t54, t55, t56, t57, t58, t59, t60, t61) =+  f t1 t2 t3 t4 t5 t6 t7 t8 t9 t10 t11 t12 t13 t14 t15 t16 t17 t18 t19 t20 t21 t22 t23 t24 t25 t26 t27 t28 t29 t30 t31 t32 t33 t34 t35 t36 t37 t38 t39 t40 t41 t42 t43 t44 t45 t46 t47 t48 t49 t50 t51 t52 t53 t54 t55 t56 t57 t58 t59 t60 t61++-- | Primitive recursion on 62-tuples+uncurry62+  :: (t1 -> t2 -> t3 -> t4 -> t5 -> t6 -> t7 -> t8 -> t9 -> t10 -> t11 -> t12 -> t13 -> t14 -> t15 -> t16 -> t17 -> t18 -> t19 -> t20 -> t21 -> t22 -> t23 -> t24 -> t25 -> t26 -> t27 -> t28 -> t29 -> t30 -> t31 -> t32 -> t33 -> t34 -> t35 -> t36 -> t37 -> t38 -> t39 -> t40 -> t41 -> t42 -> t43 -> t44 -> t45 -> t46 -> t47 -> t48 -> t49 -> t50 -> t51 -> t52 -> t53 -> t54 -> t55 -> t56 -> t57 -> t58 -> t59 -> t60 -> t61 -> t62 -> t63)+  -- ^ Function applied to the elements of the 62-tuple+  -> (t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18, t19, t20, t21, t22, t23, t24, t25, t26, t27, t28, t29, t30, t31, t32, t33, t34, t35, t36, t37, t38, t39, t40, t41, t42, t43, t44, t45, t46, t47, t48, t49, t50, t51, t52, t53, t54, t55, t56, t57, t58, t59, t60, t61, t62)+  -- ^ The 62-tuple+  -> t63+uncurry62 f (t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18, t19, t20, t21, t22, t23, t24, t25, t26, t27, t28, t29, t30, t31, t32, t33, t34, t35, t36, t37, t38, t39, t40, t41, t42, t43, t44, t45, t46, t47, t48, t49, t50, t51, t52, t53, t54, t55, t56, t57, t58, t59, t60, t61, t62) =+  f t1 t2 t3 t4 t5 t6 t7 t8 t9 t10 t11 t12 t13 t14 t15 t16 t17 t18 t19 t20 t21 t22 t23 t24 t25 t26 t27 t28 t29 t30 t31 t32 t33 t34 t35 t36 t37 t38 t39 t40 t41 t42 t43 t44 t45 t46 t47 t48 t49 t50 t51 t52 t53 t54 t55 t56 t57 t58 t59 t60 t61 t62++-- | Primitive recursion on 63-tuples+uncurry63+  :: (t1 -> t2 -> t3 -> t4 -> t5 -> t6 -> t7 -> t8 -> t9 -> t10 -> t11 -> t12 -> t13 -> t14 -> t15 -> t16 -> t17 -> t18 -> t19 -> t20 -> t21 -> t22 -> t23 -> t24 -> t25 -> t26 -> t27 -> t28 -> t29 -> t30 -> t31 -> t32 -> t33 -> t34 -> t35 -> t36 -> t37 -> t38 -> t39 -> t40 -> t41 -> t42 -> t43 -> t44 -> t45 -> t46 -> t47 -> t48 -> t49 -> t50 -> t51 -> t52 -> t53 -> t54 -> t55 -> t56 -> t57 -> t58 -> t59 -> t60 -> t61 -> t62 -> t63 -> t64)+  -- ^ Function applied to the elements of the 63-tuple+  -> (t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18, t19, t20, t21, t22, t23, t24, t25, t26, t27, t28, t29, t30, t31, t32, t33, t34, t35, t36, t37, t38, t39, t40, t41, t42, t43, t44, t45, t46, t47, t48, t49, t50, t51, t52, t53, t54, t55, t56, t57, t58, t59, t60, t61, t62, t63)+  -- ^ The 63-tuple+  -> t64+uncurry63 f (t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18, t19, t20, t21, t22, t23, t24, t25, t26, t27, t28, t29, t30, t31, t32, t33, t34, t35, t36, t37, t38, t39, t40, t41, t42, t43, t44, t45, t46, t47, t48, t49, t50, t51, t52, t53, t54, t55, t56, t57, t58, t59, t60, t61, t62, t63) =+  f t1 t2 t3 t4 t5 t6 t7 t8 t9 t10 t11 t12 t13 t14 t15 t16 t17 t18 t19 t20 t21 t22 t23 t24 t25 t26 t27 t28 t29 t30 t31 t32 t33 t34 t35 t36 t37 t38 t39 t40 t41 t42 t43 t44 t45 t46 t47 t48 t49 t50 t51 t52 t53 t54 t55 t56 t57 t58 t59 t60 t61 t62 t63++-- | Primitive recursion on 64-tuples+uncurry64+  :: (t1 -> t2 -> t3 -> t4 -> t5 -> t6 -> t7 -> t8 -> t9 -> t10 -> t11 -> t12 -> t13 -> t14 -> t15 -> t16 -> t17 -> t18 -> t19 -> t20 -> t21 -> t22 -> t23 -> t24 -> t25 -> t26 -> t27 -> t28 -> t29 -> t30 -> t31 -> t32 -> t33 -> t34 -> t35 -> t36 -> t37 -> t38 -> t39 -> t40 -> t41 -> t42 -> t43 -> t44 -> t45 -> t46 -> t47 -> t48 -> t49 -> t50 -> t51 -> t52 -> t53 -> t54 -> t55 -> t56 -> t57 -> t58 -> t59 -> t60 -> t61 -> t62 -> t63 -> t64 -> t65)+  -- ^ Function applied to the elements of the 64-tuple+  -> (t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18, t19, t20, t21, t22, t23, t24, t25, t26, t27, t28, t29, t30, t31, t32, t33, t34, t35, t36, t37, t38, t39, t40, t41, t42, t43, t44, t45, t46, t47, t48, t49, t50, t51, t52, t53, t54, t55, t56, t57, t58, t59, t60, t61, t62, t63, t64)+  -- ^ The 64-tuple+  -> t65+uncurry64 f (t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18, t19, t20, t21, t22, t23, t24, t25, t26, t27, t28, t29, t30, t31, t32, t33, t34, t35, t36, t37, t38, t39, t40, t41, t42, t43, t44, t45, t46, t47, t48, t49, t50, t51, t52, t53, t54, t55, t56, t57, t58, t59, t60, t61, t62, t63, t64) =+  f t1 t2 t3 t4 t5 t6 t7 t8 t9 t10 t11 t12 t13 t14 t15 t16 t17 t18 t19 t20 t21 t22 t23 t24 t25 t26 t27 t28 t29 t30 t31 t32 t33 t34 t35 t36 t37 t38 t39 t40 t41 t42 t43 t44 t45 t46 t47 t48 t49 t50 t51 t52 t53 t54 t55 t56 t57 t58 t59 t60 t61 t62 t63 t64
Mini/Data/Set.hs view
@@ -1,4 +1,3 @@-{-# LANGUAGE TupleSections #-} -- incomplete patterns in 'from{Asc,Desc}List' {-# OPTIONS_GHC -Wno-incomplete-uni-patterns #-} @@ -7,6 +6,9 @@   -- * Type   Set, +  -- * Primitive Recursion+  set,+   -- * Construction   empty,   singleton,@@ -148,7 +150,7 @@   show = show . toAscList  instance Foldable Set where-  foldr f b = set b go go go+  foldr f b = set' b go go go    where     go l a _ _ recr = foldr f (f a recr) l @@ -162,23 +164,42 @@  - Primitive recursion  -} --- | Primitive recursion on sets+-- | Primitive recursion on sets (internally structured as trees) set   :: b-  -- ^ Empty node+  -- ^ Value yielded in case of empty node   -> (Set a -> a -> Set a -> b -> b -> b)-  -- ^ Left-heavy node+  -- ^ Function applied in case of non-empty node:+  -- left child, element, right child, left recursion, right recursion+  -- (elements are lesser to the left, greater to the right)+  -> Set a+  -- ^ Object of the case analysis+  -> b+set e f = set' e f f f++-- Primitive recursion on sets+set'+  :: b+  -- ^ Value yielded in case of empty node   -> (Set a -> a -> Set a -> b -> b -> b)-  -- ^ Balanced node+  -- ^ Function applied in case of left-heavy node:+  -- left child, element, right child, left recursion, right recursion+  -- (elements are lesser to the left, greater to the right)   -> (Set a -> a -> Set a -> b -> b -> b)-  -- ^ Right-heavy node+  -- ^ Function applied in case of balanced node:+  -- left child, element, right child, left recursion, right recursion+  -- (elements are lesser to the left, greater to the right)+  -> (Set a -> a -> Set a -> b -> b -> b)+  -- ^ Function applied in case of right-heavy node:+  -- left child, element, right child, left recursion, right recursion+  -- (elements are lesser to the left, greater to the right)   -> Set a-  -- ^ Set+  -- ^ Object of the case analysis   -> b-set e _ _ _ E = e-set e f g h (L l a r) = f l a r (set e f g h l) (set e f g h r)-set e f g h (B l a r) = g l a r (set e f g h l) (set e f g h r)-set e f g h (R l a r) = h l a r (set e f g h l) (set e f g h r)+set' e _ _ _ E = e+set' e f g h (L l a r) = f l a r (set' e f g h l) (set' e f g h r)+set' e f g h (B l a r) = g l a r (set' e f g h l) (set' e f g h r)+set' e f g h (R l a r) = h l a r (set' e f g h l) (set' e f g h r)  {-  - Construction@@ -236,13 +257,13 @@  -- | /O(m log n)/ Subtract a set by another difference :: (Ord a) => Set a -> Set a -> Set a-difference t1 t2 = set empty go go go t1+difference t1 t2 = set' empty go go go t1  where   go _ _ _ _ _ = foldr delete t1 t2  -- | /O(m log n)/ Intersect a set with another intersection :: (Ord a) => Set a -> Set a -> Set a-intersection t1 t2 = set empty go go go t2+intersection t1 t2 = set' empty go go go t2  where   go _ _ _ _ _ =     fromDistinctAscList $@@ -253,7 +274,7 @@  -- | /O(m log n)/ Unite a set with another union :: (Ord a) => Set a -> Set a -> Set a-union t1 t2 = set t2 go go go t1+union t1 t2 = set' t2 go go go t1  where   go _ _ _ _ _ = foldr insert t1 t2 @@ -335,19 +356,19 @@  -- | /O(m log n)/ Check whether two sets have no elements in common disjoint :: (Ord a) => Set a -> Set a -> Bool-disjoint t1 t2 = set True go go go t1+disjoint t1 t2 = set' True go go go t1  where   go _ _ _ _ _ = not $ any (`member` t1) t2  -- | /O(n log m)/ Check whether the elements of a set exist in the other isSubsetOf :: (Ord a) => Set a -> Set a -> Bool-isSubsetOf t1 t2 = set (null t1) go go go t2+isSubsetOf t1 t2 = set' (null t1) go go go t2  where   go _ _ _ _ _ = all (`member` t2) t1  -- | /O(log n)/ Fetch the least element greater than or equal to the given one lookupGE :: (Ord a) => a -> Set a -> Maybe a-lookupGE a0 = set Nothing go go go+lookupGE a0 = set' Nothing go go go  where   go _ a _ recl recr = case compare a a0 of     LT -> recr@@ -356,7 +377,7 @@  -- | /O(log n)/ Fetch the least element strictly greater than the given one lookupGT :: (Ord a) => a -> Set a -> Maybe a-lookupGT a0 = set Nothing go go go+lookupGT a0 = set' Nothing go go go  where   go _ a _ recl recr = case compare a a0 of     LT -> recr@@ -365,7 +386,7 @@  -- | /O(log n)/ Fetch the greatest element less than or equal to the given one lookupLE :: (Ord a) => a -> Set a -> Maybe a-lookupLE a0 = set Nothing go go go+lookupLE a0 = set' Nothing go go go  where   go _ a _ recl recr = case compare a a0 of     LT -> recr <|> Just a@@ -374,7 +395,7 @@  -- | /O(log n)/ Fetch the greatest element strictly less than the given one lookupLT :: (Ord a) => a -> Set a -> Maybe a-lookupLT a0 = set Nothing go go go+lookupLT a0 = set' Nothing go go go  where   go _ a _ recl recr = case compare a a0 of     LT -> recr <|> Just a@@ -383,23 +404,23 @@  -- | /O(log n)/ Fetch the maximum element, or 'Nothing' if the set is empty lookupMax :: Set a -> Maybe a-lookupMax = set Nothing go go go+lookupMax = set' Nothing go go go  where-  go _ a r _ recr = set (Just a) go' go' go' r+  go _ a r _ recr = set' (Just a) go' go' go' r    where     go' _ _ _ _ _ = recr  -- | /O(log n)/ Fetch the minimum element, or 'Nothing' if the set is empty lookupMin :: Set a -> Maybe a-lookupMin = set Nothing go go go+lookupMin = set' Nothing go go go  where-  go l a _ recl _ = set (Just a) go' go' go' l+  go l a _ recl _ = set' (Just a) go' go' go' l    where     go' _ _ _ _ _ = recl  -- | /O(log n)/ Check whether an element is in a set member :: (Ord a) => a -> Set a -> Bool-member a0 = set False go go go+member a0 = set' False go go go  where   go _ a _ recl recr = case compare a0 a of     LT -> recl@@ -408,11 +429,11 @@  -- | /O(1)/ Check whether a set is empty null :: Set a -> Bool-null = set True go go go where go _ _ _ _ _ = False+null = set' True go go go where go _ _ _ _ _ = False  -- | /O(n)/ Get the size of a set size :: Set a -> Int-size = set 0 go go go where go _ _ _ recl recr = 1 + recl + recr+size = set' 0 go go go where go _ _ _ recl recr = 1 + recl + recr  {-  - Validation@@ -423,19 +444,19 @@ valid = liftA2 (&&) balanced ordered  where   balanced =-    set+    set'       True       (\l _ r recl recr -> levels l - levels r == 1 && recl && recr)       (\l _ r recl recr -> levels l - levels r == 0 && recl && recr)       (\l _ r recl recr -> levels r - levels l == 1 && recl && recr)-  levels = set 0 go go go+  levels = set' 0 go go go    where     go _ _ _ recl recr = 1 + max recl recr :: Int-  ordered = set True go go go+  ordered = set' True go go go    where     go l a r recl recr =-      set True lt lt lt l-        && set True gt gt gt r+      set' True lt lt lt l+        && set' True gt gt gt r      where       lt _ la _ _ _ = la < a && recl && recr       gt _ ra _ _ _ = ra > a && recl && recr@@ -466,7 +487,7 @@ -- O(log n) Delete an element from a set without checking for membership delete' :: (Ord a) => a -> Set a -> Set a delete' a0 =-  set+  set'     (error "Set.delete: L0")     ( \l a r _ _ ->         case compare a0 a of@@ -488,7 +509,7 @@     )  where   deleteRl l a r =-    set+    set'       (error "Set.delete: L1")       ( \ll la lr _ _ ->           case compare a0 la of@@ -510,7 +531,7 @@       )       l   deleteRr l a =-    set+    set'       (error "Set.delete: L2")       ( \rl ra rr _ _ ->           case compare a0 ra of@@ -531,7 +552,7 @@             GT -> checkRightR l a (deleteRr rl ra rr)       )   deleteBl l a r =-    set+    set'       (error "Set.delete: L3")       ( \ll la lr _ _ ->           case compare a0 la of@@ -553,7 +574,7 @@       )       l   deleteBr l a =-    set+    set'       (error "Set.delete: L4")       ( \rl ra rr _ _ ->           case compare a0 ra of@@ -574,7 +595,7 @@             GT -> checkRightB l a (deleteRr rl ra rr)       )   deleteLl l a r =-    set+    set'       (error "Set.delete: L5")       ( \ll la lr _ _ ->           case compare a0 la of@@ -596,7 +617,7 @@       )       l   deleteLr l a =-    set+    set'       (error "Set.delete: L6")       ( \rl ra rr _ _ ->           case compare a0 ra of@@ -617,10 +638,10 @@             GT -> checkRightL l a (deleteRr rl ra rr)       )   rebalanceR l a =-    set+    set'       (error "Set.delete: L7")       ( \rl ra rr _ _ ->-          set+          set'             (error "Set.delete: L8")             (\rll rla rlr _ _ -> B (B l a rll) rla (R rlr ra rr))             (\rll rla rlr _ _ -> B (B l a rll) rla (B rlr ra rr))@@ -630,12 +651,12 @@       (\rl ra rr _ _ -> L (R l a rl) ra rr)       (\rl ra rr _ _ -> B (B l a rl) ra rr)   rebalanceL l a r =-    set+    set'       (error "Set.delete: L9")       (\ll la lr _ _ -> B ll la (B lr a r))       (\ll la lr _ _ -> R ll la (L lr a r))       ( \ll la lr _ _ ->-          set+          set'             (error "Set.delete: L10")             (\lrl lra lrr _ _ -> B (B ll la lrl) lra (R lrr a r))             (\lrl lra lrr _ _ -> B (B ll la lrl) lra (B lrr a r))@@ -644,117 +665,117 @@       )       l   checkLeftR l a r =-    set+    set'       (error "Set.delete: L11")       (\_ _ _ _ _ -> R l a r)       (\_ _ _ _ _ -> rebalanceR l a r)       (\_ _ _ _ _ -> R l a r)       l   checkLeftB l a r =-    set+    set'       (error "Set.delete: L12")       (\_ _ _ _ _ -> B l a r)       (\_ _ _ _ _ -> R l a r)       (\_ _ _ _ _ -> B l a r)       l   checkLeftL l a r =-    set+    set'       (error "Set.delete: L13")       (\_ _ _ _ _ -> L l a r)       (\_ _ _ _ _ -> B l a r)       (\_ _ _ _ _ -> L l a r)       l   checkRightR l a r =-    set+    set'       (error "Set.delete: L14")       (\_ _ _ _ _ -> R l a r)       (\_ _ _ _ _ -> B l a r)       (\_ _ _ _ _ -> R l a r)       r   checkRightB l a r =-    set+    set'       (error "Set.delete: L15")       (\_ _ _ _ _ -> B l a r)       (\_ _ _ _ _ -> L l a r)       (\_ _ _ _ _ -> B l a r)       r   checkRightL l a r =-    set+    set'       (error "Set.delete: L16")       (\_ _ _ _ _ -> L l a r)       (\_ _ _ _ _ -> rebalanceL l a r)       (\_ _ _ _ _ -> L l a r)       r   substituteR l =-    set+    set'       (error "Set.delete: L17")       (\rl ra rr _ _ -> uncurry (checkRightR l) $ popLeftL rl ra rr)       (\rl ra rr _ _ -> uncurry (checkRightR' l) $ popLeftB rl ra rr)       (\rl ra rr _ _ -> uncurry (checkRightR l) $ popLeftR rl ra rr)   substituteBr l =-    set+    set'       E       (\rl ra rr _ _ -> uncurry (checkRightB l) $ popLeftL rl ra rr)       (\rl ra rr _ _ -> uncurry (checkRightB' l) $ popLeftB rl ra rr)       (\rl ra rr _ _ -> uncurry (checkRightB l) $ popLeftR rl ra rr)   substituteBl l r =-    set+    set'       E       (\ll la lr _ _ -> (\(l', a) -> checkLeftB l' a r) $ popRightL ll la lr)       (\ll la lr _ _ -> (\(l', a) -> checkLeftB' l' a r) $ popRightB ll la lr)       (\ll la lr _ _ -> (\(l', a) -> checkLeftB l' a r) $ popRightR ll la lr)       l   substituteL l r =-    set+    set'       (error "Set.delete: L18")       (\ll la lr _ _ -> (\(l', a) -> checkLeftL l' a r) $ popRightL ll la lr)       (\ll la lr _ _ -> (\(l', a) -> checkLeftL' l' a r) $ popRightB ll la lr)       (\ll la lr _ _ -> (\(l', a) -> checkLeftL l' a r) $ popRightR ll la lr)       l   checkLeftR' l a r =-    set+    set'       (rebalanceR l a r)       (\_ _ _ _ _ -> R l a r)       (\_ _ _ _ _ -> R l a r)       (\_ _ _ _ _ -> R l a r)       l   checkLeftB' l a r =-    set+    set'       (R l a r)       (\_ _ _ _ _ -> B l a r)       (\_ _ _ _ _ -> B l a r)       (\_ _ _ _ _ -> B l a r)       l   checkLeftL' l a r =-    set+    set'       (B l a r)       (\_ _ _ _ _ -> L l a r)       (\_ _ _ _ _ -> L l a r)       (\_ _ _ _ _ -> L l a r)       l   checkRightR' l a r =-    set+    set'       (B l a r)       (\_ _ _ _ _ -> R l a r)       (\_ _ _ _ _ -> R l a r)       (\_ _ _ _ _ -> R l a r)       r   checkRightB' l a r =-    set+    set'       (L l a r)       (\_ _ _ _ _ -> B l a r)       (\_ _ _ _ _ -> B l a r)       (\_ _ _ _ _ -> B l a r)       r   checkRightL' l a r =-    set+    set'       (rebalanceL l a r)       (\_ _ _ _ _ -> L l a r)       (\_ _ _ _ _ -> L l a r)       (\_ _ _ _ _ -> L l a r)       r   popLeftR l a r =-    set+    set'       (a, r)       ( \ll la lr _ _ ->           (\(a', l') -> (a', checkLeftR l' a r)) $@@ -767,14 +788,14 @@       )       l   popLeftB l a r =-    set+    set'       (a, E)       (\ll la lr _ _ -> popLeftBL ll la lr a r)       (\ll la lr _ _ -> popLeftBB ll la lr a r)       (\ll la lr _ _ -> popLeftBR ll la lr a r)       l   popLeftL l a r =-    set+    set'       (error "Set.delete: L19")       ( \ll la lr _ _ ->           (\(a', l') -> (a', checkLeftL l' a r)) $@@ -787,7 +808,7 @@       )       l   popLeftRB ll la lr a r =-    set+    set'       (la, rebalanceR E a r)       ( \lll lla llr _ _ ->           (\(a', l) -> (a', R l a r)) $@@ -803,7 +824,7 @@       )       ll   popLeftBB ll la lr a r =-    set+    set'       (la, R E a r)       ( \lll lla llr _ _ ->           (\(a', l) -> (a', B l a r)) $@@ -819,7 +840,7 @@       )       ll   popLeftLB ll la lr a r =-    set+    set'       (la, B E a E)       ( \lll lla llr _ _ ->           (\(a', l) -> (a', L l a r)) $@@ -841,37 +862,37 @@     (\(a', l) -> (a', checkLeftB l a r)) $       popLeftL ll la lr   popRightR l a =-    set+    set'       (error "Set.delete: L20")       (\rl ra rr _ _ -> first (checkRightR l a) $ popRightL rl ra rr)       (\rl ra rr _ _ -> popRightRB l a rl ra rr)       (\rl ra rr _ _ -> first (checkRightR l a) $ popRightR rl ra rr)   popRightB l a =-    set+    set'       (E, a)       (\rl ra rr _ _ -> popRightBL l a rl ra rr)       (\rl ra rr _ _ -> popRightBB l a rl ra rr)       (\rl ra rr _ _ -> popRightBR l a rl ra rr)   popRightL l a =-    set+    set'       (l, a)       (\rl ra rr _ _ -> first (checkRightL l a) $ popRightL rl ra rr)       (\rl ra rr _ _ -> popRightLB l a rl ra rr)       (\rl ra rr _ _ -> first (checkRightL l a) $ popRightR rl ra rr)   popRightRB l a rl ra =-    set+    set'       (B E a E, ra)       (\rrl rra rrr _ _ -> first (R l a) $ popRightBL rl ra rrl rra rrr)       (\rrl rra rrr _ _ -> first (R l a) $ popRightBB rl ra rrl rra rrr)       (\rrl rra rrr _ _ -> first (R l a) $ popRightBR rl ra rrl rra rrr)   popRightBB l a rl ra =-    set+    set'       (L l a E, ra)       (\rrl rra rrr _ _ -> first (B l a) $ popRightBL rl ra rrl rra rrr)       (\rrl rra rrr _ _ -> first (B l a) $ popRightBB rl ra rrl rra rrr)       (\rrl rra rrr _ _ -> first (B l a) $ popRightBR rl ra rrl rra rrr)   popRightLB l a rl ra =-    set+    set'       (rebalanceL l a E, ra)       (\rrl rra rrr _ _ -> first (L l a) $ popRightBL rl ra rrl rra rrr)       (\rrl rra rrr _ _ -> first (L l a) $ popRightBB rl ra rrl rra rrr)@@ -882,7 +903,7 @@ -- O(log n) Insert an element into a set without checking for membership insert' :: (Ord a) => a -> Set a -> Set a insert' a0 =-  set+  set'     (B E a0 E)     (\l a r _ _ -> insertL l a r)     (\l a r _ _ -> insertB l a r)@@ -904,12 +925,12 @@       EQ -> L l a0 r       GT -> insertLr l a r   insertRl l a r =-    set+    set'       (B (B E a0 E) a r)       (\ll la lr _ _ -> R (insertL ll la lr) a r)       ( \ll la lr _ _ ->           let l' = insertB ll la lr-           in set+           in set'                 (error "Set.insert: L0")                 (\_ _ _ _ _ -> B l' a r)                 (\_ _ _ _ _ -> R l' a r)@@ -919,12 +940,12 @@       (\ll la lr _ _ -> R (insertR ll la lr) a r)       l   insertBl l a r =-    set+    set'       (L (B E a0 E) a r)       (\ll la lr _ _ -> B (insertL ll la lr) a r)       ( \ll la lr _ _ ->           let l' = insertB ll la lr-           in set+           in set'                 (error "Set.insert: L1")                 (\_ _ _ _ _ -> L l' a r)                 (\_ _ _ _ _ -> B l' a r)@@ -934,12 +955,12 @@       (\ll la lr _ _ -> B (insertR ll la lr) a r)       l   insertBr l a =-    set+    set'       (R l a (B E a0 E))       (\rl ra rr _ _ -> B l a (insertL rl ra rr))       ( \rl ra rr _ _ ->           let r = insertB rl ra rr-           in set+           in set'                 (error "Set.insert: L2")                 (\_ _ _ _ _ -> R l a r)                 (\_ _ _ _ _ -> B l a r)@@ -948,12 +969,12 @@       )       (\rl ra rr _ _ -> B l a (insertR rl ra rr))   insertLr l a =-    set+    set'       (B l a (B E a0 E))       (\rl ra rr _ _ -> L l a (insertL rl ra rr))       ( \rl ra rr _ _ ->           let r = insertB rl ra rr-           in set+           in set'                 (error "Set.insert: L3")                 (\_ _ _ _ _ -> B l a r)                 (\_ _ _ _ _ -> L l a r)@@ -962,7 +983,7 @@       )       (\rl ra rr _ _ -> L l a (insertR rl ra rr))   insertRr l a =-    set+    set'       (error "Set.insert: L4")       (\rl ra rr _ _ -> R l a (insertL rl ra rr))       ( \rl ra rr _ _ ->@@ -973,7 +994,7 @@       )       (\rl ra rr _ _ -> R l a (insertR rl ra rr))   insertLl l a r =-    set+    set'       (error "Set.insert: L5")       (\ll la lr _ _ -> L (insertL ll la lr) a r)       ( \ll la lr _ _ ->@@ -985,12 +1006,12 @@       (\ll la lr _ _ -> L (insertR ll la lr) a r)       l   insertRrr l a rl ra =-    set+    set'       (B (B l a rl) ra (B E a0 E))       (\rrl rra rrr _ _ -> R l a (B rl ra (insertL rrl rra rrr)))       ( \rrl rra rrr _ _ ->           let rr = insertB rrl rra rrr-           in set+           in set'                 (error "Set.insert: L6")                 (\_ _ _ _ _ -> B (B l a rl) ra rr)                 (\_ _ _ _ _ -> R l a (B rl ra rr))@@ -999,12 +1020,12 @@       )       (\rrl rra rrr _ _ -> R l a (B rl ra (insertR rrl rra rrr)))   insertLll ll la lr a r =-    set+    set'       (B (B E a0 E) la (B lr a r))       (\lll lla llr _ _ -> L (B (insertL lll lla llr) la lr) a r)       ( \lll lla llr _ _ ->           let ll' = insertB lll lla llr-           in set+           in set'                 (error "Set.insert: L7")                 (\_ _ _ _ _ -> B ll' la (B lr a r))                 (\_ _ _ _ _ -> L (B ll' la lr) a r)@@ -1014,12 +1035,12 @@       (\lll lla llr _ _ -> L (B (insertR lll lla llr) la lr) a r)       ll   insertRrl l a rl ra rr =-    set+    set'       (B (B l a E) a0 (B E ra rr))       (\rll rla rlr _ _ -> R l a (B (insertL rll rla rlr) ra rr))       ( \rll rla rlr _ _ ->           let rl' = insertB rll rla rlr-           in set+           in set'                 (error "Set.insert: L8")                 (\rll' rla' rlr' _ _ -> B (B l a rll') rla' (R rlr' ra rr))                 (\_ _ _ _ _ -> R l a (B rl' ra rr))@@ -1029,12 +1050,12 @@       (\rll rla rlr _ _ -> R l a (B (insertR rll rla rlr) ra rr))       rl   insertLlr ll la lr a r =-    set+    set'       (B (B ll la E) a0 (B E a r))       (\lrl lra lrr _ _ -> L (B ll la (insertL lrl lra lrr)) a r)       ( \lrl lra lrr _ _ ->           let lr' = insertB lrl lra lrr-           in set+           in set'                 (error "Set.insert: L9")                 (\lrl' lra' lrr' _ _ -> B (B ll la lrl') lra' (R lrr' a r))                 (\_ _ _ _ _ -> L (B ll la lr') a r)
mini.cabal view
@@ -1,6 +1,6 @@ cabal-version:      3.0 name:               mini-version:            1.5.4.0+version:            1.5.5.0 license:            MIT license-file:       LICENSE author:             Victor Wallsten <victor.wallsten@protonmail.com>@@ -9,7 +9,8 @@ bug-reports:        https://gitlab.com/vicwall/mini/issues synopsis:           Minimal essentials description:-  Everyday essentials: data structures, lenses, transformers, and parsing.+  Everyday essentials: data structures, primitive recursion, lenses,+  transformers, and parsing.    Uncompromisingly light on dependencies. @@ -48,6 +49,7 @@     Mini.Data.Array     Mini.Data.Graph     Mini.Data.Map+    Mini.Data.Recursion     Mini.Data.Set     Mini.Optics.Lens     Mini.Transformers.Class