Logs: liberachat/#haskell
| 2026-03-20 07:05:09 | × | haasn quits (sid579015@id-579015.hampstead.irccloud.com) (Ping timeout: 268 seconds) |
| 2026-03-20 07:05:32 | → | haasn joins (sid579015@id-579015.hampstead.irccloud.com) |
| 2026-03-20 07:06:00 | × | NiKaN quits (sid385034@id-385034.helmsley.irccloud.com) (Ping timeout: 256 seconds) |
| 2026-03-20 07:06:02 | × | arandombit quits (~arandombi@user/arandombit) (Ping timeout: 252 seconds) |
| 2026-03-20 07:06:21 | × | jonrh quits (sid5185@id-5185.ilkley.irccloud.com) (Ping timeout: 272 seconds) |
| 2026-03-20 07:06:23 | × | lisbeths quits (uid135845@id-135845.lymington.irccloud.com) (Ping timeout: 268 seconds) |
| 2026-03-20 07:06:23 | × | astra quits (sid289983@id-289983.hampstead.irccloud.com) (Ping timeout: 268 seconds) |
| 2026-03-20 07:06:34 | × | fun-safe-math quits (~fun-safe-@97.115.234.213) (Ping timeout: 256 seconds) |
| 2026-03-20 07:06:49 | × | edm quits (sid147314@id-147314.hampstead.irccloud.com) (Ping timeout: 248 seconds) |
| 2026-03-20 07:06:56 | → | fun-safe-math joins (~fun-safe-@97.115.234.213) |
| 2026-03-20 07:07:14 | → | NiKaN joins (sid385034@id-385034.helmsley.irccloud.com) |
| 2026-03-20 07:07:44 | → | jonrh joins (sid5185@id-5185.ilkley.irccloud.com) |
| 2026-03-20 07:08:10 | → | astra joins (sid289983@id-289983.hampstead.irccloud.com) |
| 2026-03-20 07:08:55 | → | lisbeths joins (uid135845@id-135845.lymington.irccloud.com) |
| 2026-03-20 07:09:37 | → | edm joins (sid147314@id-147314.hampstead.irccloud.com) |
| 2026-03-20 07:13:13 | → | CiaoSen joins (~Jura@p549cb690.dip0.t-ipconnect.de) |
| 2026-03-20 07:13:56 | → | merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl) |
| 2026-03-20 07:14:04 | → | tri joins (~tri@ool-44c70bcb.dyn.optonline.net) |
| 2026-03-20 07:19:01 | × | merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 272 seconds) |
| 2026-03-20 07:28:49 | × | ft quits (~ft@p508db341.dip0.t-ipconnect.de) (Quit: leaving) |
| 2026-03-20 07:28:51 | → | merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl) |
| 2026-03-20 07:33:03 | × | merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 246 seconds) |
| 2026-03-20 07:42:33 | × | tri quits (~tri@ool-44c70bcb.dyn.optonline.net) (Ping timeout: 248 seconds) |
| 2026-03-20 07:44:13 | → | merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl) |
| 2026-03-20 07:51:19 | × | merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 264 seconds) |
| 2026-03-20 07:56:53 | → | tri joins (~tri@ool-44c70bcb.dyn.optonline.net) |
| 2026-03-20 08:01:30 | → | arandombit joins (~arandombi@user/arandombit) |
| 2026-03-20 08:02:15 | → | merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl) |
| 2026-03-20 08:05:57 | × | Sgeo quits (~Sgeo@user/sgeo) (Read error: Connection reset by peer) |
| 2026-03-20 08:05:58 | × | Googulator quits (~Googulato@84-236-126-177.pool.digikabel.hu) (Ping timeout: 240 seconds) |
| 2026-03-20 08:07:07 | × | merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 276 seconds) |
| 2026-03-20 08:17:36 | → | merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl) |
| 2026-03-20 08:18:19 | × | tri quits (~tri@ool-44c70bcb.dyn.optonline.net) (Ping timeout: 264 seconds) |
| 2026-03-20 08:22:12 | × | merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 244 seconds) |
| 2026-03-20 08:23:04 | × | PotatoGim quits (sid99505@id-99505.lymington.irccloud.com) (Ping timeout: 256 seconds) |
| 2026-03-20 08:26:56 | → | PotatoGim joins (sid99505@id-99505.lymington.irccloud.com) |
| 2026-03-20 08:29:50 | → | merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl) |
| 2026-03-20 08:32:36 | → | tri joins (~tri@ool-44c70bcb.dyn.optonline.net) |
| 2026-03-20 08:33:44 | → | oskarw joins (~user@user/oskarw) |
| 2026-03-20 08:34:30 | × | rainbyte quits (~rainbyte@181.47.219.110) (Read error: Connection reset by peer) |
| 2026-03-20 08:34:34 | × | merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 268 seconds) |
| 2026-03-20 08:36:35 | → | rainbyte joins (~rainbyte@181.47.219.110) |
| 2026-03-20 08:37:40 | × | tri quits (~tri@ool-44c70bcb.dyn.optonline.net) (Ping timeout: 245 seconds) |
| 2026-03-20 08:39:59 | → | weary-traveler joins (~user@user/user363627) |
| 2026-03-20 08:45:19 | → | merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl) |
| 2026-03-20 08:49:54 | × | merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 248 seconds) |
| 2026-03-20 08:53:13 | → | somemathguy joins (~somemathg@user/somemathguy) |
| 2026-03-20 08:59:22 | → | acidjnk_new3 joins (~acidjnk@p200300d6e700e541daf6366eab32adad.dip0.t-ipconnect.de) |
| 2026-03-20 09:00:42 | → | merijn joins (~merijn@62.45.136.136) |
| 2026-03-20 09:04:54 | × | merijn quits (~merijn@62.45.136.136) (Ping timeout: 245 seconds) |
| 2026-03-20 09:05:45 | × | arandombit quits (~arandombi@user/arandombit) (Ping timeout: 248 seconds) |
| 2026-03-20 09:07:57 | → | tri joins (~tri@ool-44c70bcb.dyn.optonline.net) |
| 2026-03-20 09:08:22 | → | merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl) |
| 2026-03-20 09:12:49 | × | merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 245 seconds) |
| 2026-03-20 09:14:04 | × | tri quits (~tri@ool-44c70bcb.dyn.optonline.net) (Ping timeout: 245 seconds) |
| 2026-03-20 09:15:19 | → | merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl) |
| 2026-03-20 09:20:34 | × | merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 276 seconds) |
| 2026-03-20 09:23:31 | → | kuribas joins (~user@2a02:1808:4f:27d0:bdf3:9bb4:5714:ba09) |
| 2026-03-20 09:26:24 | → | danza joins (~danza@user/danza) |
| 2026-03-20 09:30:39 | → | merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl) |
| 2026-03-20 09:35:05 | <gentauro> | what's the easiest way to flatten a list of either types? -> `[Either [a] [b]] -> Either [a] [b]`? |
| 2026-03-20 09:35:52 | → | kuribas` joins (~user@ip-188-118-57-242.reverse.destiny.be) |
| 2026-03-20 09:36:12 | <int-e> | :t Data.Either.partitionEithers |
| 2026-03-20 09:36:13 | <lambdabot> | [Either a b] -> ([a], [b]) |
| 2026-03-20 09:36:30 | <int-e> | (your type isn't gonna play nicely) |
| 2026-03-20 09:36:33 | → | arandombit joins (~arandombi@user/arandombit) |
| 2026-03-20 09:37:33 | <[exa]> | gentauro: what do you do with [Left [1], Right [2]] ? |
| 2026-03-20 09:37:36 | × | kuribas quits (~user@2a02:1808:4f:27d0:bdf3:9bb4:5714:ba09) (Ping timeout: 264 seconds) |
| 2026-03-20 09:37:42 | × | merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 268 seconds) |
| 2026-03-20 09:37:53 | <gentauro> | [exa]: combine and show end-user |
| 2026-03-20 09:38:06 | <gentauro> | but it seems that int-e has the solution |
| 2026-03-20 09:38:09 | <[exa]> | how do you combine tho |
| 2026-03-20 09:38:29 | <[exa]> | (spoiler: you might love Data.These) |
| 2026-03-20 09:38:31 | <int-e> | :t (concat *** concat) . Data.Either.partitionEithers |
| 2026-03-20 09:38:32 | <lambdabot> | [Either [a1] [a2]] -> ([a1], [a2]) |
| 2026-03-20 09:39:59 | <gentauro> | `***`? |
| 2026-03-20 09:40:14 | <int-e> | :t (***) |
| 2026-03-20 09:40:15 | <lambdabot> | Arrow a => a b c -> a b' c' -> a (b, b') (c, c') |
| 2026-03-20 09:41:04 | <Leary> | % :t foldMap \case{ Left xs -> (xs, []); Right ys -> ([], ys) } |
| 2026-03-20 09:41:04 | <yahb2> | foldMap \case{ Left xs -> (xs, []); Right ys -> ([], ys) } ; :: Foldable t => t (Either [a1] [a2]) -> ([a1], [a2]) |
| 2026-03-20 09:41:21 | <int-e> | in this case it's just \f g (x, y) -> (f x, g y) |
| 2026-03-20 09:41:24 | × | arandombit quits (~arandombi@user/arandombit) (Ping timeout: 268 seconds) |
| 2026-03-20 09:42:41 | <gentauro> | Leary: yeah, ended up writing something like that |
| 2026-03-20 09:45:26 | <int-e> | :t foldMap (partitionEithers . pure) |
| 2026-03-20 09:45:27 | <lambdabot> | Foldable t => t (Either a b) -> ([a], [b]) |
| 2026-03-20 09:45:40 | → | tri joins (~tri@ool-44c70bcb.dyn.optonline.net) |
| 2026-03-20 09:45:57 | <int-e> | ah. no, of course that's just partitionEithers again |
| 2026-03-20 09:48:09 | <newmind> | hmm, i don't see how this is supposed to work, since the input list can be a's or b's mixed, but the output.. can only have one of them |
| 2026-03-20 09:48:41 | → | merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl) |
| 2026-03-20 09:49:01 | <newmind> | except for an impolied "if there are any bs, give me thoese, otherwise i'll take the as" |
| 2026-03-20 09:53:04 | <int-e> | :t partitionEithers . foldMap (either (map Left) (map Right)) {- looks clean, but inefficient because of all the intermediate Eithers -} |
| 2026-03-20 09:53:05 | × | merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 245 seconds) |
| 2026-03-20 09:53:05 | <lambdabot> | Foldable t => t (Either [a] [b]) -> ([a], [b]) |
| 2026-03-20 09:53:50 | <gentauro> | int-e: partitionEithers creates a tuple. If `left` has any item, then there are errors. Otherwise, just show list of `rights` |
| 2026-03-20 09:54:22 | × | tri quits (~tri@ool-44c70bcb.dyn.optonline.net) (Ping timeout: 276 seconds) |
| 2026-03-20 09:57:25 | <Leary> | :t getAp . foldMap Ap |
| 2026-03-20 09:57:26 | <lambdabot> | k}. (Foldable t, Monoid (Ap f a)) => t (f a) -> f a |
| 2026-03-20 09:57:45 | <Leary> | > getAp . foldMap Ap $ [Right [1, 2], Right [3, 4]] |
| 2026-03-20 09:57:46 | <lambdabot> | Right [1,2,3,4] |
| 2026-03-20 09:57:51 | <Leary> | > getAp . foldMap Ap $ [Right [1, 2], Left [3, 4]] |
All times are in UTC.