ref: 167b705bc7becf8a61fb3c9376c389ae8364dc6f
parent: 5d9e006be85458b1898d4be1c8c3de477f8d0380
author: Lennart Augustsson <lennart@augustsson.net>
date: Sun Oct 29 12:07:42 EDT 2023
Add more functions.
--- a/comb/mhs.comb
+++ b/comb/mhs.comb
@@ -1,3 +1,3 @@
v4.0
-1145
-((A :0 ((B (B (B (B C)))) ((B (B (B C))) ((B (B C)) P)))) ((A :1 (T (BK (BK (BK K))))) ((A :2 (T (K (BK (BK K))))) ((A :3 (T (K (K (BK K))))) ((A :4 (T (K (K (K K))))) ((A :5 (T (K (K (K A))))) ((A :6 (K (noDefault "Applicative.pure"))) ((A :7 (K (noDefault "Applicative.<*>"))) ((A :8 (((S' B) _3) (((C' _112) _1) _104))) ((A :9 (((S' B) _3) (((C' _115) _1) _105))) ((A :10 _977) ((A :11 ((B _1019) _10)) ((A :12 (((S' _1019) _10) I)) ((A :13 _947) ((A :14 (_13 "undefined")) ((A :15 I) ((A :16 (((C' B) _976) ((C _103) _15))) ((A :17 (((C' _16) ((_111 _990) _92)) ((_103 (_23 _992)) _91))) ((A :18 ((B ((S _1019) (_23 _992))) _13)) ((A :19 ((B (B (B C))) ((B (B C)) P))) ((A :20 (T (BK (BK K)))) ((A :21 (T (K (BK K)))) ((A :22 (T (K (K K)))) ((A :23 (T (K (K A)))) ((A :24 (K (noDefault "Monad.>>="))) ((A :25 (((C' (C' B)) _21) K)) ((A :26 ((B _2) _20)) ((A :27 (((S' (C' B)) _21) (((S' (C' B)) _21) (B' _23)))) ((A :28 P) ((A :29 (T K)) ((A :30 (T A)) ((A :31 (K _13)) ((A :32 ((B (B Y)) (((S' B) (B' ((B P) ((C _23) _147)))) (((S' (C' B)) ((B (B (C' B))) (B' _21))) (((S' (C' (C' B))) (B' _21)) (((C' B) (B' _23)) _148)))))) ((A :33 ((B (B Y)) (((S' B) (B' ((B P) ((C _23) _905)))) (((C' (C' B)) ((B (B (C' B))) (B' _21))) BK)))) ((A :34 ((B T) ((C _23) _905))) ((A :35 ((C _32) _104)) ((A :36 T) ((A :37 ((_110 ((B (B (_101 _36))) ((B ((C' C) _40)) (B P)))) (_114 _37))) ((A :38 (((((_0 _37) ((B (_101 _36)) P)) (_27 _39)) ((B (B (_101 _36))) (((C' B) ((B C) _40)) (BK _40)))) (_9 _38))) ((A :39 ((((_19 _38) ((B (B (_101 _36))) (((C' B) ((B C) _40)) (B _40)))) (_4 _38)) (_2 _38))) ((A :40 (T I)) ((A :41 ((B (_103 _235)) _40)) ((A :42 ((B (_101 _36)) (B (P _905)))) ((A :43 ((B (_101 _36)) (BK (P _905)))) ((A :44 ((_101 _36) ((S P) I))) ((A :45 ((B (_101 _36)) ((C (S' P)) I))) ((A :46 (R _53)) ((A :47 (T _52)) ((A :48 ((P _53) _52)) ((A :49 _53) ((A :50 ((C ((C S') _48)) I)) ((A :51 ((C S) _48)) ((A :52 K) ((A :53 A) ((A :54 ((_95 _941) _942)) ((A :55 ((_95 _951) (_99 _55))) ((A :56 _952) ((A :57 _953) ((A :58 (((S' _47) (_944 #97)) ((C _944) #122))) ((A :59 (((S' _47) (_944 #65)) ((C _944) #90))) ((A :60 (((S' _46) _58) _59)) ((A :61 (((S' _47) (_944 #48)) ((C _944) #57))) ((A :62 (((S' _47) (_944 #32)) ((C _944) #126))) ((A :63 _941) ((A :64 _942) ((A :65 _944) ((A :66 _943) ((A :67 (((S' _46) ((C (_96 _54)) #32)) (((S' _46) ((C (_96 _54)) #9)) ((C (_96 _54)) #10)))) ((A :68 ((S ((S (((S' _47) (_65 #65)) ((C _65) #90))) (_53 (((noMatch "lib/Data/Char.hs") #3) #8)))) ((B _56) (((C' _116) (((C' _117) _57) (_57 #65))) (_57 #97))))) ((A :69 ((S ((S (((S' _47) (_65 #97)) ((C _65) #97))) (_53 (((noMatch "lib/Data/Char.hs") #3) #8)))) ((B _56) (((C' _116) (((C' _117) _57) (_57 #97))) (_57 #65))))) ((A :70 _912) ((A :71 _913) ((A :72 _914) ((A :73 _915) ((A :74 (_71 %0.0)) ((A :75 _70) ((A :76 _71) ((A :77 _72) ((A :78 _73) ((A :79 ((_95 _916) _917)) ((A :80 (_96 _79)) ((A :81 (_97 _79)) ((A :82 _918) ((A :83 _919) ((A :84 _920) ((A :85 _921) ((A :86 _82) ((A :87 _83) ((A :88 _84) ((A :89 _85) ((A :90 _922) ((A :91 ((B BK) T)) ((A :92 (BK T)) ((A :93 (((S' _95) (((S' C) ((B (C S')) (((C' C) ((B (C C')) ((B _96) (T K)))) (K _52)))) ((B ((C' B) (T (K _52)))) ((B _96) (T A))))) ((B _99) ((B _93) (((S' P) (T K)) (T A)))))) ((A :94 P) ((A :95 P) ((A :96 (T K)) ((A :97 (T A)) ((A :98 (K (noDefault "Eq.=="))) ((A :99 ((B (B (B _48))) _96)) ((A :100 ((_95 ((C ((C S') _48)) I)) (_99 _100))) ((A :101 I) ((A :102 (S _949)) ((A :103 B) ((A :104 I) ((A :105 K) ((A :106 C) ((A :107 _948) ((A :108 ((C ((C S') _235)) _236)) ((A :109 (((C' (S' (C' B))) B) I)) ((A :110 P) ((A :111 (T K)) ((A :112 (T A)) ((A :113 (K (noDefault "Functor.fmap"))) ((A :114 (((C' _103) _111) _105)) ((A :115 _111) ((A :116 _906) ((A :117 _907) ((A :118 _908) ((A :119 _909) ((A :120 _910) ((A :121 _911) ((A :122 (_117 #0)) ((A :123 ((_95 _929) _930)) ((A :124 _931) ((A :125 _932) ((A :126 _933) ((A :127 _934) ((A :128 (BK K)) ((A :129 ((B BK) ((B (B BK)) P))) ((A :130 ((B (B (B BK))) ((B (B (B BK))) ((B (B (B C))) ((B (B C)) P))))) ((A :131 (((S' S) (((S' (S' C)) (((C' (C' S)) (((C' B)
\ No newline at end of file
+1148
+((A :0 ((B (B (B (B C)))) ((B (B (B C))) ((B (B C)) P)))) ((A :1 (T (BK (BK (BK K))))) ((A :2 (T (K (BK (BK K))))) ((A :3 (T (K (K (BK K))))) ((A :4 (T (K (K (K K))))) ((A :5 (T (K (K (K A))))) ((A :6 (K (noDefault "Applicative.pure"))) ((A :7 (K (noDefault "Applicative.<*>"))) ((A :8 (((S' B) _3) (((C' _115) _1) _107))) ((A :9 (((S' B) _3) (((C' _118) _1) _108))) ((A :10 _980) ((A :11 ((B _1022) _10)) ((A :12 (((S' _1022) _10) I)) ((A :13 _950) ((A :14 (_13 "undefined")) ((A :15 I) ((A :16 (((C' B) _979) ((C _106) _15))) ((A :17 (((C' _16) ((_114 _993) _95)) ((_106 (_23 _995)) _94))) ((A :18 ((B ((S _1022) (_23 _995))) _13)) ((A :19 ((B (B (B C))) ((B (B C)) P))) ((A :20 (T (BK (BK K)))) ((A :21 (T (K (BK K)))) ((A :22 (T (K (K K)))) ((A :23 (T (K (K A)))) ((A :24 (K (noDefault "Monad.>>="))) ((A :25 (((C' (C' B)) _21) K)) ((A :26 ((B _2) _20)) ((A :27 (((S' (C' B)) _21) (((S' (C' B)) _21) (B' _23)))) ((A :28 P) ((A :29 (T K)) ((A :30 (T A)) ((A :31 (K _13)) ((A :32 ((B (B Y)) (((S' B) (B' ((B P) ((C _23) _150)))) (((S' (C' B)) ((B (B (C' B))) (B' _21))) (((S' (C' (C' B))) (B' _21)) (((C' B) (B' _23)) _151)))))) ((A :33 ((B (B Y)) (((S' B) (B' ((B P) ((C _23) _908)))) (((C' (C' B)) ((B (B (C' B))) (B' _21))) BK)))) ((A :34 ((B T) ((C _23) _908))) ((A :35 ((C _32) _107)) ((A :36 ((B _109) _21)) ((A :37 ((B C) ((B C') _21))) ((A :38 ((B _109) _37)) ((A :39 T) ((A :40 ((_113 ((B (B (_104 _39))) ((B ((C' C) _43)) (B P)))) (_117 _40))) ((A :41 (((((_0 _40) ((B (_104 _39)) P)) (_27 _42)) ((B (B (_104 _39))) (((C' B) ((B C) _43)) (BK _43)))) (_9 _41))) ((A :42 ((((_19 _41) ((B (B (_104 _39))) (((C' B) ((B C) _43)) (B _43)))) (_4 _41)) (_2 _41))) ((A :43 (T I)) ((A :44 ((B (_106 _238)) _43)) ((A :45 ((B (_104 _39)) (B (P _908)))) ((A :46 ((B (_104 _39)) (BK (P _908)))) ((A :47 ((_104 _39) ((S P) I))) ((A :48 ((B (_104 _39)) ((C (S' P)) I))) ((A :49 (R _56)) ((A :50 (T _55)) ((A :51 ((P _56) _55)) ((A :52 _56) ((A :53 ((C ((C S') _51)) I)) ((A :54 ((C S) _51)) ((A :55 K) ((A :56 A) ((A :57 ((_98 _944) _945)) ((A :58 ((_98 _954) (_102 _58))) ((A :59 _955) ((A :60 _956) ((A :61 (((S' _50) (_947 #97)) ((C _947) #122))) ((A :62 (((S' _50) (_947 #65)) ((C _947) #90))) ((A :63 (((S' _49) _61) _62)) ((A :64 (((S' _50) (_947 #48)) ((C _947) #57))) ((A :65 (((S' _50) (_947 #32)) ((C _947) #126))) ((A :66 _944) ((A :67 _945) ((A :68 _947) ((A :69 _946) ((A :70 (((S' _49) ((C (_99 _57)) #32)) (((S' _49) ((C (_99 _57)) #9)) ((C (_99 _57)) #10)))) ((A :71 ((S ((S (((S' _50) (_68 #65)) ((C _68) #90))) (_56 (((noMatch "lib/Data/Char.hs") #3) #8)))) ((B _59) (((C' _119) (((C' _120) _60) (_60 #65))) (_60 #97))))) ((A :72 ((S ((S (((S' _50) (_68 #97)) ((C _68) #97))) (_56 (((noMatch "lib/Data/Char.hs") #3) #8)))) ((B _59) (((C' _119) (((C' _120) _60) (_60 #97))) (_60 #65))))) ((A :73 _915) ((A :74 _916) ((A :75 _917) ((A :76 _918) ((A :77 (_74 %0.0)) ((A :78 _73) ((A :79 _74) ((A :80 _75) ((A :81 _76) ((A :82 ((_98 _919) _920)) ((A :83 (_99 _82)) ((A :84 (_100 _82)) ((A :85 _921) ((A :86 _922) ((A :87 _923) ((A :88 _924) ((A :89 _85) ((A :90 _86) ((A :91 _87) ((A :92 _88) ((A :93 _925) ((A :94 ((B BK) T)) ((A :95 (BK T)) ((A :96 (((S' _98) (((S' C) ((B (C S')) (((C' C) ((B (C C')) ((B _99) (T K)))) (K _55)))) ((B ((C' B) (T (K _55)))) ((B _99) (T A))))) ((B _102) ((B _96) (((S' P) (T K)) (T A)))))) ((A :97 P) ((A :98 P) ((A :99 (T K)) ((A :100 (T A)) ((A :101 (K (noDefault "Eq.=="))) ((A :102 ((B (B (B _51))) _99)) ((A :103 ((_98 ((C ((C S') _51)) I)) (_102 _103))) ((A :104 I) ((A :105 (S _952)) ((A :106 B) ((A :107 I) ((A :108 K) ((A :109 C) ((A :110 _951) ((A :111 ((C ((C S') _238)) _239)) ((A :112 (((C' (S' (C' B))) B) I)) ((A :113 P) ((A :114 (T K)) ((A :115 (T A)) ((A :116 (K (noDefault "Functor.fmap"))) ((A :117 (((C' _106) _114) _108)) ((A :118 _114) ((A :119 _909) ((A :120 _910) ((A :121 _911) ((A :122 _912) ((A :123 _913) ((A :124 _914) ((A :125 (_120 #0)) ((A :126 ((_98 _932) _933)) ((A :127 _934) ((A :128 _935) ((A :129 _936) ((A :130 _937) ((A :131 (BK K)) ((A :132 ((B BK) ((B (B BK)) P))) ((A :133 ((B (B (B BK))) ((B (B (B BK))) ((B
\ No newline at end of file
--- a/lib/Control/Monad.hs
+++ b/lib/Control/Monad.hs
@@ -58,3 +58,16 @@
sequence :: forall (m :: Type -> Type) a . Monad m => [m a] -> m [a]
sequence = mapM id
+
+(=<<) :: forall (m :: Type -> Type) a b . Monad m => (a -> m b) -> m a -> m b
+(=<<) = flip (>>=)
+
+infixr 1 <=<
+(<=<) :: forall (m :: Type -> Type) a b c . Monad m => (b -> m c) -> (a -> m b) -> (a -> m c)
+f <=< g = \ a -> do
+ b <- g a
+ f b
+
+infixr 1 >=>
+(>=>) :: forall (m :: Type -> Type) a b c . Monad m => (a -> m b) -> (b -> m c) -> (a -> m c)
+(>=>) = flip (<=<)
--
⑨