2025/02/11

2025-02-11 00:04:30 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-02-11 00:09:40 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 272 seconds)
2025-02-11 00:09:54 +0100hololeap(~quassel@user/hololeap) (Quit: Bye)
2025-02-11 00:10:57 +0100hololeap(~quassel@user/hololeap) hololeap
2025-02-11 00:15:26 +0100peterbecich(~Thunderbi@syn-047-229-123-186.res.spectrum.com) (Ping timeout: 252 seconds)
2025-02-11 00:19:52 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-02-11 00:24:39 +0100sawilagar(~sawilagar@user/sawilagar) (Ping timeout: 265 seconds)
2025-02-11 00:26:59 +0100alfiee(~alfiee@user/alfiee) alfiee
2025-02-11 00:27:09 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds)
2025-02-11 00:31:11 +0100alfiee(~alfiee@user/alfiee) (Ping timeout: 252 seconds)
2025-02-11 00:39:33 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-02-11 00:44:19 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 260 seconds)
2025-02-11 00:53:47 +0100Sgeo(~Sgeo@user/sgeo) Sgeo
2025-02-11 00:53:48 +0100otbergsten(~otbergste@user/otbergsten) (Remote host closed the connection)
2025-02-11 00:54:55 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-02-11 00:59:39 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 260 seconds)
2025-02-11 01:07:21 +0100Tuplanolla(~Tuplanoll@91-159-69-59.elisa-laajakaista.fi) (Quit: Leaving.)
2025-02-11 01:10:17 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-02-11 01:13:13 +0100athan(~athan@syn-173-042-095-241.biz.spectrum.com) athan
2025-02-11 01:14:33 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 246 seconds)
2025-02-11 01:15:03 +0100alfiee(~alfiee@user/alfiee) alfiee
2025-02-11 01:16:54 +0100 <lyxia> I somehow need existential newtypes in Haskell... are there any workarounds (or have they been implemented already)?
2025-02-11 01:17:47 +0100ljdarj1(~Thunderbi@user/ljdarj) ljdarj
2025-02-11 01:19:06 +0100alfiee(~alfiee@user/alfiee) (Ping timeout: 246 seconds)
2025-02-11 01:19:58 +0100ljdarj(~Thunderbi@user/ljdarj) (Ping timeout: 272 seconds)
2025-02-11 01:19:58 +0100ljdarj1ljdarj
2025-02-11 01:21:51 +0100 <Leary> lyxia: You can use a smart constructor that secretly `unsafeCoerce`s the hidden type to `Any`, then provide a Rank2 `withFoo` for unwrapping. See `Data.Some.Newtype` for an example in the wild.
2025-02-11 01:22:39 +0100athan(~athan@syn-173-042-095-241.biz.spectrum.com) (Quit: Konversation terminated!)
2025-02-11 01:25:39 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-02-11 01:27:49 +0100 <Leary> There's also a similar trick to give the constructor a constraint, so long as any runtime data can be computed from the argument: https://gist.github.com/LSLeary/ef0f75468938fa6ff505331171bb011c
2025-02-11 01:32:26 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds)
2025-02-11 01:35:15 +0100 <lyxia> Very cursed, thank you :)
2025-02-11 01:43:18 +0100acidjnk_new3(~acidjnk@p200300d6e7283f999088022741b454a0.dip0.t-ipconnect.de) (Ping timeout: 245 seconds)
2025-02-11 01:43:43 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-02-11 01:48:12 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds)
2025-02-11 01:58:39 +0100hammond(proscan@gateway04.insomnia247.nl) (Ping timeout: 246 seconds)
2025-02-11 01:59:04 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-02-11 02:02:01 +0100sprotte24(~sprotte24@p200300d16f01b7005c77723fc43a3702.dip0.t-ipconnect.de) (Quit: Leaving)
2025-02-11 02:03:28 +0100alfiee(~alfiee@user/alfiee) alfiee
2025-02-11 02:03:49 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 248 seconds)
2025-02-11 02:04:53 +0100tri(~tri@ool-44c70bcb.dyn.optonline.net)
2025-02-11 02:07:33 +0100alfiee(~alfiee@user/alfiee) (Ping timeout: 248 seconds)
2025-02-11 02:09:39 +0100tri(~tri@ool-44c70bcb.dyn.optonline.net) (Ping timeout: 260 seconds)
2025-02-11 02:14:00 +0100neto(~Netnet@143-208-42-129.users.certto.com.br)
2025-02-11 02:14:26 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-02-11 02:19:29 +0100euouae(~euouae@user/euouae) (Remote host closed the connection)
2025-02-11 02:19:30 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 272 seconds)
2025-02-11 02:19:50 +0100neto(~Netnet@143-208-42-129.users.certto.com.br) (Remote host closed the connection)
2025-02-11 02:20:08 +0100L29Ah(~L29Ah@wikipedia/L29Ah) (Ping timeout: 272 seconds)
2025-02-11 02:20:41 +0100hammond(proscan@gateway04.insomnia247.nl)
2025-02-11 02:24:35 +0100L29Ah(~L29Ah@wikipedia/L29Ah) L29Ah
2025-02-11 02:25:23 +0100ljdarj(~Thunderbi@user/ljdarj) (Ping timeout: 245 seconds)
2025-02-11 02:29:49 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-02-11 02:34:24 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds)
2025-02-11 02:38:21 +0100 <lisbeths> bash_macros(){ while read -r i; do eval "$( printf "%s" "$i" | awk "$1" ; )" ; done ; } ;
2025-02-11 02:39:54 +0100peterbecich(~Thunderbi@syn-047-229-123-186.res.spectrum.com) peterbecich
2025-02-11 02:43:56 +0100machinedgod(~machinedg@d108-173-18-100.abhsia.telus.net) (Ping timeout: 252 seconds)
2025-02-11 02:45:11 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-02-11 02:49:34 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 244 seconds)
2025-02-11 02:52:33 +0100alfiee(~alfiee@user/alfiee) alfiee
2025-02-11 02:57:12 +0100alfiee(~alfiee@user/alfiee) (Ping timeout: 268 seconds)
2025-02-11 03:00:35 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-02-11 03:07:49 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 260 seconds)
2025-02-11 03:12:50 +0100tri(~tri@ool-44c70bcb.dyn.optonline.net)
2025-02-11 03:13:33 +0100robobub(uid248673@id-248673.uxbridge.irccloud.com) (Quit: Connection closed for inactivity)
2025-02-11 03:17:18 +0100tri(~tri@ool-44c70bcb.dyn.optonline.net) (Ping timeout: 252 seconds)
2025-02-11 03:17:45 +0100peterbecich(~Thunderbi@syn-047-229-123-186.res.spectrum.com) (Ping timeout: 246 seconds)
2025-02-11 03:18:36 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-02-11 03:23:03 +0100pikajude(~jude@2001:19f0:ac01:373:5400:2ff:fe86:3274) (Quit: ZNC 1.8.2 - https://znc.in)
2025-02-11 03:23:06 +0100pounce(~pounce@user/cute/pounce) (Read error: Connection reset by peer)
2025-02-11 03:23:13 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 248 seconds)
2025-02-11 03:23:14 +0100Vajb(~Vajb@n84e9ei03jkqt6rm3ev-1.v6.elisa-mobile.fi) (Ping timeout: 248 seconds)
2025-02-11 03:23:19 +0100pounce(~pounce@user/cute/pounce) pounce
2025-02-11 03:23:23 +0100pikajude(~jude@149.28.207.64) pikajude
2025-02-11 03:23:40 +0100andreas303(andreas303@is.drunk.and.ready-to.party) (Quit: fBNC - https://bnc4free.com)
2025-02-11 03:24:02 +0100berberman(~berberman@user/berberman) (Quit: ZNC 1.8.2 - https://znc.in)
2025-02-11 03:24:15 +0100berberman(~berberman@user/berberman) berberman
2025-02-11 03:24:18 +0100andreas303(andreas303@is.drunk.and.ready-to.party) andreas303
2025-02-11 03:24:21 +0100bryanv(~quassel@2603:c028:4503:7500:45b7:933:ab17:bc10) (Quit: No Ping reply in 180 seconds.)
2025-02-11 03:25:34 +0100bryanv(~quassel@2603:c028:4503:7500:45b7:933:ab17:bc10)
2025-02-11 03:25:54 +0100ggVGc(~ggVGc@a.lowtech.earth) (Ping timeout: 248 seconds)
2025-02-11 03:25:54 +0100[_________](~oos95GWG@user/oos95GWG) (Ping timeout: 248 seconds)
2025-02-11 03:26:46 +0100ggVGc(~ggVGc@a.lowtech.earth)
2025-02-11 03:26:47 +0100[_________](~oos95GWG@user/oos95GWG) oos95GWG
2025-02-11 03:28:21 +0100Axma24393Axman6
2025-02-11 03:29:36 +0100 <haskellbridge> <thirdofmay18081814goya> Where is lens' Fold composition defined?
2025-02-11 03:29:41 +0100yegorc(~yegorc@user/yegorc) (Leaving)
2025-02-11 03:33:58 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-02-11 03:35:10 +0100 <c_wraith> a Fold is still a function of shape `(a -> f b) -> s -> f t', so they compose with (.) like every other optic
2025-02-11 03:35:46 +0100 <c_wraith> The only thing special about a Fold is that they add a Contravariant constraint to f
2025-02-11 03:36:49 +0100 <c_wraith> which when combined with the Applicative constraint means that you can't use them with any choice of f that would actually contain a t
2025-02-11 03:39:08 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 268 seconds)
2025-02-11 03:40:39 +0100alfiee(~alfiee@user/alfiee) alfiee
2025-02-11 03:45:14 +0100alfiee(~alfiee@user/alfiee) (Ping timeout: 265 seconds)
2025-02-11 03:49:21 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-02-11 03:53:55 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 265 seconds)
2025-02-11 03:53:56 +0100m5zs7k(aquares@web10.mydevil.net) (Ping timeout: 268 seconds)
2025-02-11 03:58:16 +0100 <haskellbridge> <thirdofmay18081814goya> ah right ok I see, ty!
2025-02-11 03:58:41 +0100Square3(~Square@user/square) Square
2025-02-11 03:59:48 +0100tri(~tri@ool-44c70bcb.dyn.optonline.net)
2025-02-11 04:00:14 +0100Square3Square
2025-02-11 04:01:05 +0100chiselfuse(~chiselfus@user/chiselfuse) (Remote host closed the connection)
2025-02-11 04:01:47 +0100chiselfuse(~chiselfus@user/chiselfuse) chiselfuse
2025-02-11 04:04:43 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-02-11 04:09:08 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 244 seconds)
2025-02-11 04:20:05 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-02-11 04:21:28 +0100vanishingideal(~vanishing@user/vanishingideal) (Ping timeout: 252 seconds)
2025-02-11 04:23:14 +0100vanishingideal(~vanishing@user/vanishingideal) vanishingideal
2025-02-11 04:24:33 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 248 seconds)
2025-02-11 04:28:38 +0100tri(~tri@ool-44c70bcb.dyn.optonline.net) (Remote host closed the connection)
2025-02-11 04:30:55 +0100alfiee(~alfiee@user/alfiee) alfiee
2025-02-11 04:33:34 +0100m5zs7k(aquares@web10.mydevil.net) m5zs7k
2025-02-11 04:35:02 +0100alfiee(~alfiee@user/alfiee) (Ping timeout: 252 seconds)
2025-02-11 04:35:02 +0100tri(~tri@ool-44c70bcb.dyn.optonline.net)
2025-02-11 04:35:28 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-02-11 04:42:12 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 244 seconds)
2025-02-11 04:43:34 +0100manwithluck`(~manwithlu@2a09:bac1:5be0:20::49:de) (Remote host closed the connection)
2025-02-11 04:47:19 +0100hattckory(~hattckry@user/hattckory) hattckory
2025-02-11 04:51:30 +0100vanishingideal(~vanishing@user/vanishingideal) (Ping timeout: 244 seconds)
2025-02-11 04:53:20 +0100vanishingideal(~vanishing@user/vanishingideal) vanishingideal
2025-02-11 04:53:31 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-02-11 04:53:48 +0100hattckoryattk
2025-02-11 04:57:53 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 245 seconds)
2025-02-11 04:57:54 +0100tavare(~tavare@user/tavare) tavare
2025-02-11 05:04:17 +0100bitdex(~bitdex@gateway/tor-sasl/bitdex) bitdex
2025-02-11 05:08:52 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-02-11 05:13:37 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 248 seconds)
2025-02-11 05:18:08 +0100Googulator28(~Googulato@2a01-036d-0106-4074-758c-12a1-cbb4-05eb.pool6.digikabel.hu) (Quit: Client closed)
2025-02-11 05:18:23 +0100Googulator28(~Googulato@2a01-036d-0106-4074-758c-12a1-cbb4-05eb.pool6.digikabel.hu)
2025-02-11 05:18:58 +0100alfiee(~alfiee@user/alfiee) alfiee
2025-02-11 05:21:52 +0100peterbecich(~Thunderbi@syn-047-229-123-186.res.spectrum.com) peterbecich
2025-02-11 05:23:26 +0100alfiee(~alfiee@user/alfiee) (Ping timeout: 252 seconds)
2025-02-11 05:24:16 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-02-11 05:28:42 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 244 seconds)
2025-02-11 05:33:48 +0100infinity0(~infinity0@pwned.gg) (Ping timeout: 252 seconds)
2025-02-11 05:34:03 +0100attk(~hattckry@user/hattckory) (Quit: attk)
2025-02-11 05:35:32 +0100foul_owl(~kerry@193.42.0.122) (Ping timeout: 252 seconds)
2025-02-11 05:38:09 +0100peterbecich(~Thunderbi@syn-047-229-123-186.res.spectrum.com) (Ping timeout: 268 seconds)
2025-02-11 05:39:39 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-02-11 05:43:58 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds)
2025-02-11 05:48:10 +0100lol_(~lol@2603:3016:1e01:b9c0:f7:4b70:33ec:27a0)
2025-02-11 05:48:17 +0100foul_owl(~kerry@193.42.0.122) foul_owl
2025-02-11 05:51:03 +0100aforemny(~aforemny@2001:9e8:6cfe:5000:87c7:acaa:b551:71f7) (Ping timeout: 246 seconds)
2025-02-11 05:51:46 +0100aforemny(~aforemny@i59F4C4A3.versanet.de) aforemny
2025-02-11 05:52:39 +0100jcarpenter2(~lol@2603:3016:1e01:b9c0:41a0:c194:66be:75a1) (Ping timeout: 276 seconds)
2025-02-11 05:54:10 +0100m5zs7k(aquares@web10.mydevil.net) (Ping timeout: 248 seconds)
2025-02-11 05:54:36 +0100infinity0(~infinity0@pwned.gg) infinity0
2025-02-11 05:55:01 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-02-11 05:58:53 +0100m5zs7k(aquares@web10.mydevil.net) m5zs7k
2025-02-11 05:59:16 +0100peterbecich(~Thunderbi@syn-047-229-123-186.res.spectrum.com) peterbecich
2025-02-11 05:59:29 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 248 seconds)
2025-02-11 06:07:22 +0100alfiee(~alfiee@user/alfiee) alfiee
2025-02-11 06:10:25 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-02-11 06:11:44 +0100alfiee(~alfiee@user/alfiee) (Ping timeout: 260 seconds)
2025-02-11 06:14:02 +0100emmanuelux(~emmanuelu@user/emmanuelux) (Quit: au revoir)
2025-02-11 06:14:24 +0100mrmr155334346318(~mrmr@user/mrmr) (Ping timeout: 252 seconds)
2025-02-11 06:17:05 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 248 seconds)
2025-02-11 06:23:54 +0100tri(~tri@ool-44c70bcb.dyn.optonline.net) (Remote host closed the connection)
2025-02-11 06:24:33 +0100vanishingideal(~vanishing@user/vanishingideal) (Ping timeout: 248 seconds)
2025-02-11 06:24:41 +0100tri(~tri@ool-44c70bcb.dyn.optonline.net)
2025-02-11 06:26:26 +0100vanishingideal(~vanishing@user/vanishingideal) vanishingideal
2025-02-11 06:28:28 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-02-11 06:29:21 +0100tri(~tri@ool-44c70bcb.dyn.optonline.net) (Ping timeout: 248 seconds)
2025-02-11 06:32:27 +0100attk(~attk@bras-base-toroon4524w-grc-50-70-31-30-224.dsl.bell.ca) attk
2025-02-11 06:33:05 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 248 seconds)
2025-02-11 06:35:09 +0100 <haskellbridge> <thirdofmay18081814goya> does anyone have examples of transformations that are particularly clearly expressed using profunctor optics?
2025-02-11 06:35:40 +0100peterbecich(~Thunderbi@syn-047-229-123-186.res.spectrum.com) (Ping timeout: 252 seconds)
2025-02-11 06:38:14 +0100foul_owl(~kerry@193.42.0.122) (Ping timeout: 252 seconds)
2025-02-11 06:39:13 +0100tri(~tri@ool-44c70bcb.dyn.optonline.net)
2025-02-11 06:43:30 +0100fmira(~user@user/fmira) fmira
2025-02-11 06:43:49 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-02-11 06:48:08 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds)
2025-02-11 06:50:54 +0100tri(~tri@ool-44c70bcb.dyn.optonline.net) (Remote host closed the connection)
2025-02-11 06:52:16 +0100Square2(~Square4@user/square) Square
2025-02-11 06:52:42 +0100foul_owl(~kerry@174-21-138-88.tukw.qwest.net) foul_owl
2025-02-11 06:53:16 +0100Square(~Square@user/square) (Ping timeout: 252 seconds)
2025-02-11 06:55:26 +0100alfiee(~alfiee@user/alfiee) alfiee
2025-02-11 06:57:35 +0100lunitur(~lunitur@86.33.73.151) (Ping timeout: 265 seconds)
2025-02-11 06:59:13 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-02-11 06:59:45 +0100alfiee(~alfiee@user/alfiee) (Ping timeout: 248 seconds)
2025-02-11 07:02:56 +0100hgolden(~hgolden@2603:8000:9d00:3ed1:6ff3:8389:b901:6363) (Remote host closed the connection)
2025-02-11 07:03:29 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 248 seconds)
2025-02-11 07:04:02 +0100hattckory(~hattckory@user/hattckory) hattckory
2025-02-11 07:08:22 +0100hgolden(~hgolden@2603:8000:9d00:3ed1:6ff3:8389:b901:6363) hgolden
2025-02-11 07:09:18 +0100michalz(~michalz@185.246.207.200)
2025-02-11 07:13:30 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-02-11 07:16:22 +0100JeremyB99(~JeremyB99@dhcp-251-168.resnet.purdue.edu)
2025-02-11 07:16:27 +0100Googulator31(~Googulato@2a01-036d-0106-4074-758c-12a1-cbb4-05eb.pool6.digikabel.hu)
2025-02-11 07:17:25 +0100takuan(~takuan@d8D86B601.access.telenet.be)
2025-02-11 07:17:53 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 248 seconds)
2025-02-11 07:18:08 +0100Googulator28(~Googulato@2a01-036d-0106-4074-758c-12a1-cbb4-05eb.pool6.digikabel.hu) (Quit: Client closed)
2025-02-11 07:18:34 +0100lunitur(~lunitur@86.33.95.148)
2025-02-11 07:28:04 +0100hattckory(~hattckory@user/hattckory) (Remote host closed the connection)
2025-02-11 07:28:19 +0100hattckory(~hattckory@bras-base-toroon4524w-grc-50-70-31-30-224.dsl.bell.ca)
2025-02-11 07:28:52 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-02-11 07:29:43 +0100misterfish(~misterfis@84.53.85.146) misterfish
2025-02-11 07:32:52 +0100tnt1(~Thunderbi@user/tnt1) (Ping timeout: 252 seconds)
2025-02-11 07:33:09 +0100tnt1(~Thunderbi@user/tnt1) tnt1
2025-02-11 07:33:14 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds)
2025-02-11 07:33:57 +0100mrmr155334346318(~mrmr@user/mrmr) mrmr
2025-02-11 07:34:37 +0100tri(~tri@ool-44c70bcb.dyn.optonline.net)
2025-02-11 07:38:33 +0100mrmr155334346318(~mrmr@user/mrmr) (Read error: Connection reset by peer)
2025-02-11 07:38:54 +0100tri(~tri@ool-44c70bcb.dyn.optonline.net) (Ping timeout: 244 seconds)
2025-02-11 07:39:53 +0100 <dminuoso> thirdofmay18081814goya: What do you mean by transformations?
2025-02-11 07:40:29 +0100mange(~user@user/mange) (Quit: Quittin' time!)
2025-02-11 07:40:55 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-02-11 07:43:11 +0100alfiee(~alfiee@user/alfiee) alfiee
2025-02-11 07:44:53 +0100 <haskellbridge> <thirdofmay18081814goya> dminuoso: the applying of a lens and an action to a datatype
2025-02-11 07:45:09 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 248 seconds)
2025-02-11 07:45:17 +0100 <dminuoso> They dont differ from van laarhoven or the mixed (van laarhoven + profunctor-style) in that sense.
2025-02-11 07:45:25 +0100 <dminuoso> Profunctors are an implementation detail here.
2025-02-11 07:46:14 +0100 <haskellbridge> <thirdofmay18081814goya> we'd expect composition to be easier when using a higher abstraction no?
2025-02-11 07:46:29 +0100 <haskellbridge> <Bowuigi> thirdofmay18081814goya cleanly wrt VL lenses or in general?
2025-02-11 07:47:13 +0100alfiee(~alfiee@user/alfiee) (Ping timeout: 248 seconds)
2025-02-11 07:47:18 +0100 <haskellbridge> <thirdofmay18081814goya> Bowuigi: in general
2025-02-11 07:47:57 +0100 <haskellbridge> <thirdofmay18081814goya> it's not a rigorous question tbh, I'm just looking for personal opinions of instructive usages of the profunctor encoding
2025-02-11 07:49:21 +0100 <haskellbridge> <Bowuigi> Ah, the nice part of the profunctor encoding is that you have access to the profunctor API. But since arrows are profunctors it doesn't make much of a difference wrt VL lenses
2025-02-11 07:49:40 +0100ft(~ft@p4fc2a610.dip0.t-ipconnect.de) (Quit: leaving)
2025-02-11 07:51:06 +0100 <haskellbridge> <Bowuigi> But switching the underlying profunctor that you use in a combined VL/profunctor optic could help yeah
2025-02-11 07:51:53 +0100 <haskellbridge> <Bowuigi> Like, to get effectful lenses over Kleisli or something like that
2025-02-11 07:52:26 +0100 <haskellbridge> <thirdofmay18081814goya> hm I see
2025-02-11 07:59:09 +0100 <haskellbridge> <Bowuigi> I had a "type Optic p f s t a b = p a (f b) -> p s (f t)" sitting around my projects
2025-02-11 07:59:56 +0100 <haskellbridge> <Bowuigi> Oddly enough the definition on profunctor-optics is "type Optic p s t a b = p a b -> p s t", which is equivalent
2025-02-11 08:04:10 +0100 <haskellbridge> <Bowuigi> Namely, "Optic1 p f s t a b = Optic2 (\x y -> p x (f y)) s t a b" and "Optic2 p s t a b = Optic1 p Identity s t a b"
2025-02-11 08:06:16 +0100hattckory(~hattckory@bras-base-toroon4524w-grc-50-70-31-30-224.dsl.bell.ca) (Remote host closed the connection)
2025-02-11 08:06:26 +0100 <haskellbridge> <thirdofmay18081814goya> huh I haven't encountered a case where "f" is not the identity functor yet
2025-02-11 08:06:30 +0100 <haskellbridge> <thirdofmay18081814goya> what did you use it for?
2025-02-11 08:08:21 +0100sabathan(~sabathan@amarseille-159-1-12-107.w86-203.abo.wanadoo.fr) (Read error: Connection reset by peer)
2025-02-11 08:08:26 +0100tnt1(~Thunderbi@user/tnt1) (Ping timeout: 252 seconds)
2025-02-11 08:08:27 +0100tnt2(~Thunderbi@user/tnt1) tnt1
2025-02-11 08:09:19 +0100 <haskellbridge> <Bowuigi> It's a bit nicer to write VL lenses with it. For example, the usual Lens (not generalizing over the profunctor) is just "forall f. Functor f => Optic (->) f s t a b"
2025-02-11 08:09:36 +0100polykernel_(~polykerne@user/polykernel) polykernel
2025-02-11 08:10:41 +0100 <haskellbridge> <Bowuigi> Similar syntax can be achieved for the rest of the hierarchy using constraints, like how lens does it but with much less type aliases
2025-02-11 08:10:42 +0100hattckory(~hattckory@bras-base-toroon4524w-grc-50-70-31-30-224.dsl.bell.ca)
2025-02-11 08:10:44 +0100tnt2tnt1
2025-02-11 08:11:53 +0100sabathan(~sabathan@amarseille-159-1-12-107.w86-203.abo.wanadoo.fr)
2025-02-11 08:12:20 +0100hattckory(~hattckory@bras-base-toroon4524w-grc-50-70-31-30-224.dsl.bell.ca) (Remote host closed the connection)
2025-02-11 08:12:34 +0100hattckory(~hattckory@bras-base-toroon4524w-grc-50-70-31-30-224.dsl.bell.ca)
2025-02-11 08:13:28 +0100polykernel(~polykerne@user/polykernel) (Ping timeout: 265 seconds)
2025-02-11 08:13:29 +0100polykernel_polykernel
2025-02-11 08:14:41 +0100hattckory(~hattckory@bras-base-toroon4524w-grc-50-70-31-30-224.dsl.bell.ca) (Remote host closed the connection)
2025-02-11 08:15:01 +0100hattckory(~hattckory@bras-base-toroon4524w-grc-50-70-31-30-224.dsl.bell.ca)
2025-02-11 08:15:09 +0100hattckory(~hattckory@bras-base-toroon4524w-grc-50-70-31-30-224.dsl.bell.ca) (Remote host closed the connection)
2025-02-11 08:15:34 +0100hattckory(~hattckory@bras-base-toroon4524w-grc-50-70-31-30-224.dsl.bell.ca)
2025-02-11 08:17:34 +0100tnt1(~Thunderbi@user/tnt1) (Ping timeout: 260 seconds)
2025-02-11 08:20:10 +0100polykernel(~polykerne@user/polykernel) (Ping timeout: 252 seconds)
2025-02-11 08:21:27 +0100tnt1(~Thunderbi@user/tnt1) tnt1
2025-02-11 08:21:48 +0100 <haskellbridge> <thirdofmay18081814goya> oh cool
2025-02-11 08:22:26 +0100 <dminuoso> One should say, that VL lenses themselves are an ancient construct that is not used by `lens` either.
2025-02-11 08:22:38 +0100 <dminuoso> Lens uses an encoding that is a mixture of VL and profunctor.
2025-02-11 08:23:10 +0100CiaoSen(~Jura@2a02:8071:64e1:7180:4e50:ddff:fe9b:8922) CiaoSen
2025-02-11 08:23:28 +0100 <dminuoso> thirdofmay18081814goya: The big advantage of the profunctor encoding is that the implementation becomes completely uniform, there's no weird encodings depending on the type of optic.
2025-02-11 08:23:36 +0100 <dminuoso> Like `lens` has.
2025-02-11 08:26:06 +0100hattckory(~hattckory@bras-base-toroon4524w-grc-50-70-31-30-224.dsl.bell.ca) (Remote host closed the connection)
2025-02-11 08:26:21 +0100hattckory(~hattckory@bras-base-toroon4524w-grc-50-70-31-30-224.dsl.bell.ca)
2025-02-11 08:27:00 +0100hattckory(~hattckory@bras-base-toroon4524w-grc-50-70-31-30-224.dsl.bell.ca) (Remote host closed the connection)
2025-02-11 08:27:16 +0100hattckory(~hattckory@bras-base-toroon4524w-grc-50-70-31-30-224.dsl.bell.ca)
2025-02-11 08:28:47 +0100akegalj(~akegalj@78-3-100-82.adsl.net.t-com.hr) akegalj
2025-02-11 08:30:40 +0100 <energizer> am i missing anything relevant? https://bpa.st/CF7A
2025-02-11 08:30:53 +0100alfiee(~alfiee@user/alfiee) alfiee
2025-02-11 08:31:47 +0100 <haskellbridge> <thirdofmay18081814goya> dminuoso: ah that's nice
2025-02-11 08:35:13 +0100alfiee(~alfiee@user/alfiee) (Ping timeout: 248 seconds)
2025-02-11 08:35:26 +0100hattckory(~hattckory@bras-base-toroon4524w-grc-50-70-31-30-224.dsl.bell.ca) (Remote host closed the connection)
2025-02-11 08:35:40 +0100hattckory(~hattckory@bras-base-toroon4524w-grc-50-70-31-30-224.dsl.bell.ca)
2025-02-11 08:36:05 +0100hattckory(~hattckory@bras-base-toroon4524w-grc-50-70-31-30-224.dsl.bell.ca) (Remote host closed the connection)
2025-02-11 08:36:28 +0100hattckory(~hattckory@bras-base-toroon4524w-grc-50-70-31-30-224.dsl.bell.ca)
2025-02-11 08:36:48 +0100hattckory(~hattckory@bras-base-toroon4524w-grc-50-70-31-30-224.dsl.bell.ca) (Remote host closed the connection)
2025-02-11 08:36:58 +0100CiaoSen(~Jura@2a02:8071:64e1:7180:4e50:ddff:fe9b:8922) (Ping timeout: 272 seconds)
2025-02-11 08:37:02 +0100hattckory(~hattckory@bras-base-toroon4524w-grc-50-70-31-30-224.dsl.bell.ca)
2025-02-11 08:38:35 +0100CiaoSen(~Jura@2a02:8071:64e1:7180:4e50:ddff:fe9b:8922) CiaoSen
2025-02-11 08:40:06 +0100sawilagar(~sawilagar@user/sawilagar) sawilagar
2025-02-11 08:44:49 +0100CiaoSen(~Jura@2a02:8071:64e1:7180:4e50:ddff:fe9b:8922) (Ping timeout: 248 seconds)
2025-02-11 08:47:09 +0100CiaoSen(~Jura@ip-037-201-241-067.um10.pools.vodafone-ip.de) CiaoSen
2025-02-11 08:52:35 +0100tri(~tri@ool-44c70bcb.dyn.optonline.net)
2025-02-11 08:55:54 +0100hattckory(~hattckory@bras-base-toroon4524w-grc-50-70-31-30-224.dsl.bell.ca) (Remote host closed the connection)
2025-02-11 08:57:03 +0100tri(~tri@ool-44c70bcb.dyn.optonline.net) (Ping timeout: 245 seconds)
2025-02-11 08:58:00 +0100hattckory(~hattckory@bras-base-toroon4524w-grc-50-70-31-30-224.dsl.bell.ca)
2025-02-11 08:58:34 +0100dtman34(~dtman34@c-75-72-179-251.hsd1.mn.comcast.net) (Ping timeout: 268 seconds)
2025-02-11 08:58:45 +0100hattckory(~hattckory@bras-base-toroon4524w-grc-50-70-31-30-224.dsl.bell.ca) (Remote host closed the connection)
2025-02-11 08:58:48 +0100lortabac(~lortabac@2a01:e0a:541:b8f0:55ab:e185:7f81:54a4)
2025-02-11 08:58:53 +0100sord937(~sord937@gateway/tor-sasl/sord937) sord937
2025-02-11 08:58:59 +0100hattckory(~hattckory@bras-base-toroon4524w-grc-50-70-31-30-224.dsl.bell.ca)
2025-02-11 09:00:01 +0100caconym(~caconym@user/caconym) (Quit: bye)
2025-02-11 09:00:33 +0100dtman34(~dtman34@2601:447:d000:1f5e:74c2:4ec:de8d:13d3) dtman34
2025-02-11 09:00:40 +0100tzh(~tzh@c-76-115-131-146.hsd1.or.comcast.net) (Quit: zzz)
2025-02-11 09:00:50 +0100caconym(~caconym@user/caconym) caconym
2025-02-11 09:00:51 +0100 <ski> energizer : occasionally `(<*>>) :: f (a -> f b) -> f a -> f b' is useful (`frob <$> foo <*> bar <*> baz <*>> quux')
2025-02-11 09:02:07 +0100 <energizer> ski: i don't see that on hoogle. is that a recognized thing?
2025-02-11 09:02:21 +0100 <ski> custom think i define, at times
2025-02-11 09:03:38 +0100misterfish(~misterfis@84.53.85.146) (Ping timeout: 244 seconds)
2025-02-11 09:04:21 +0100hattckory(~hattckory@bras-base-toroon4524w-grc-50-70-31-30-224.dsl.bell.ca) (Remote host closed the connection)
2025-02-11 09:04:21 +0100 <ski> imagine (with `Monad f') `frob :: a -> b -> c -> d -> f e', `foo :: f a', `bar :: f b', `baz :: f c', `quux :: f d', and then `frob <$> foo <*> bar <*> baz <*>> quux :: f e'
2025-02-11 09:04:35 +0100hattckory(~hattckory@bras-base-toroon4524w-grc-50-70-31-30-224.dsl.bell.ca)
2025-02-11 09:04:59 +0100hattckory(~hattckory@bras-base-toroon4524w-grc-50-70-31-30-224.dsl.bell.ca) (Remote host closed the connection)
2025-02-11 09:05:07 +0100 <ski> allows you to use the idiomatic/applicative combinators with an occasional monadic `join' effect
2025-02-11 09:05:13 +0100hattckory(~hattckory@bras-base-toroon4524w-grc-50-70-31-30-224.dsl.bell.ca)
2025-02-11 09:06:51 +0100 <energizer> interesting
2025-02-11 09:06:54 +0100 <dminuoso> thirdofmay18081814goya: For instance, consider type IndexedFold i s a = forall p f. (Indexable i p, Contravariant f, Applicative f) => p a (f a) -> s -> f s
2025-02-11 09:07:02 +0100 <ski> @hoogle (a -> f b) -> f (a -> b)
2025-02-11 09:07:02 +0100 <lambdabot> No results found
2025-02-11 09:08:15 +0100 <ski> energizer : because it can get annoying, cluttered, to have to write `join (frob <$> foo <*> bar <*> baz <*> quux)'
2025-02-11 09:08:17 +0100 <haskellbridge> <thirdofmay18081814goya> dminuoso: any chance you know of an example?
2025-02-11 09:08:33 +0100 <dminuoso> Just gave you one.
2025-02-11 09:08:47 +0100 <haskellbridge> <thirdofmay18081814goya> I meant a particular action on it
2025-02-11 09:10:05 +0100 <ski> (that `(a -> f b) -> f (a -> b)' would be kinda opposite of `(??) :: f (a -> b) -> a -> f b'. would only work for quite special `f's)
2025-02-11 09:10:14 +0100 <haskellbridge> <thirdofmay18081814goya> dminuoso: but yeah you're right, that is a simpler type than some of the other ones
2025-02-11 09:14:28 +0100ash3en(~Thunderbi@2a03:7846:b6eb:101:93ac:a90a:da67:f207) ash3en
2025-02-11 09:14:52 +0100hattckory(~hattckory@bras-base-toroon4524w-grc-50-70-31-30-224.dsl.bell.ca) (Remote host closed the connection)
2025-02-11 09:15:06 +0100hattckory(~hattckory@bras-base-toroon4524w-grc-50-70-31-30-224.dsl.bell.ca)
2025-02-11 09:15:13 +0100hattckory(~hattckory@bras-base-toroon4524w-grc-50-70-31-30-224.dsl.bell.ca) (Remote host closed the connection)
2025-02-11 09:16:02 +0100hattckory(~hattckory@bras-base-toroon4524w-grc-50-70-31-30-224.dsl.bell.ca)
2025-02-11 09:16:42 +0100hattckory(~hattckory@bras-base-toroon4524w-grc-50-70-31-30-224.dsl.bell.ca) (Remote host closed the connection)
2025-02-11 09:16:59 +0100hattckory(~hattckory@bras-base-toroon4524w-grc-50-70-31-30-224.dsl.bell.ca)
2025-02-11 09:18:17 +0100JuanDaugherty(~juan@user/JuanDaugherty) JuanDaugherty
2025-02-11 09:19:15 +0100merijn(~merijn@77.242.116.146) merijn
2025-02-11 09:20:31 +0100alfiee(~alfiee@user/alfiee) alfiee
2025-02-11 09:21:34 +0100hattckory(~hattckory@bras-base-toroon4524w-grc-50-70-31-30-224.dsl.bell.ca) (Remote host closed the connection)
2025-02-11 09:21:48 +0100hattckory(~hattckory@bras-base-toroon4524w-grc-50-70-31-30-224.dsl.bell.ca)
2025-02-11 09:22:16 +0100gmg(~user@user/gehmehgeh) (Quit: Leaving)
2025-02-11 09:24:49 +0100alfiee(~alfiee@user/alfiee) (Ping timeout: 248 seconds)
2025-02-11 09:25:56 +0100gmg(~user@user/gehmehgeh) gehmehgeh
2025-02-11 09:28:50 +0100hattckory(~hattckory@bras-base-toroon4524w-grc-50-70-31-30-224.dsl.bell.ca) (Remote host closed the connection)
2025-02-11 09:29:06 +0100merijn(~merijn@77.242.116.146) (Ping timeout: 248 seconds)
2025-02-11 09:29:07 +0100hattckory(~hattckory@bras-base-toroon4524w-grc-50-70-31-30-224.dsl.bell.ca)
2025-02-11 09:30:36 +0100hattckory(~hattckory@bras-base-toroon4524w-grc-50-70-31-30-224.dsl.bell.ca) (Remote host closed the connection)
2025-02-11 09:30:51 +0100hattckory(~hattckory@bras-base-toroon4524w-grc-50-70-31-30-224.dsl.bell.ca)
2025-02-11 09:39:53 +0100Googulator31(~Googulato@2a01-036d-0106-4074-758c-12a1-cbb4-05eb.pool6.digikabel.hu) (Quit: Client closed)
2025-02-11 09:40:03 +0100Googulator(~Googulato@2a01-036d-0106-4074-758c-12a1-cbb4-05eb.pool6.digikabel.hu)
2025-02-11 09:42:45 +0100talismanick(~user@2601:644:937c:ed10::ae5) (Ping timeout: 276 seconds)
2025-02-11 09:43:24 +0100merijn(~merijn@77.242.116.146) merijn
2025-02-11 09:44:51 +0100dtman34(~dtman34@2601:447:d000:1f5e:74c2:4ec:de8d:13d3) (Ping timeout: 246 seconds)
2025-02-11 09:45:23 +0100Sgeo(~Sgeo@user/sgeo) (Read error: Connection reset by peer)
2025-02-11 09:48:31 +0100mulk(~mulk@pd95141d7.dip0.t-ipconnect.de) (Ping timeout: 268 seconds)
2025-02-11 09:48:58 +0100mulk(~mulk@p5b2dc995.dip0.t-ipconnect.de) mulk
2025-02-11 09:52:03 +0100acidjnk_new3(~acidjnk@p200300d6e7283f949088022741b454a0.dip0.t-ipconnect.de)
2025-02-11 09:56:15 +0100machinedgod(~machinedg@d108-173-18-100.abhsia.telus.net) machinedgod
2025-02-11 09:59:55 +0100chele(~chele@user/chele) chele
2025-02-11 10:00:33 +0100JuanDaugherty(~juan@user/JuanDaugherty) (Quit: praxis.meansofproduction.biz (juan@acm.org))
2025-02-11 10:07:16 +0100alfiee(~alfiee@user/alfiee) alfiee
2025-02-11 10:10:07 +0100tnt1(~Thunderbi@user/tnt1) (Read error: Connection reset by peer)
2025-02-11 10:11:38 +0100alfiee(~alfiee@user/alfiee) (Ping timeout: 252 seconds)
2025-02-11 10:13:06 +0100tabaqui1(~root@87.200.129.102) tabaqui
2025-02-11 10:17:11 +0100lxsameer(~lxsameer@Serene/lxsameer) lxsameer
2025-02-11 10:24:29 +0100divya(divya@140.238.251.170) (Remote host closed the connection)
2025-02-11 10:24:52 +0100tnt1(~Thunderbi@user/tnt1) tnt1
2025-02-11 10:25:27 +0100dysfigured(~dfg@dfg.rocks)
2025-02-11 10:26:24 +0100dfg(~dfg@user/dfg) (Ping timeout: 252 seconds)
2025-02-11 10:27:18 +0100divya(divya@140.238.251.170) divya
2025-02-11 10:28:58 +0100tnt2(~Thunderbi@user/tnt1) tnt1
2025-02-11 10:29:34 +0100tnt1(~Thunderbi@user/tnt1) (Ping timeout: 260 seconds)
2025-02-11 10:29:36 +0100 <mniip> ski, nowadays I recognize it as more of a crutch for not having proper idiom brackets :P
2025-02-11 10:31:47 +0100 <ski> yea .. this got me thinking (again) on my ideas for something better than idiom brackets
2025-02-11 10:32:20 +0100tnt1(~Thunderbi@user/tnt1) tnt1
2025-02-11 10:32:55 +0100 <ski> (why i was thinking about `(a -> f b) -> f (a -> b)')
2025-02-11 10:33:32 +0100vanishingideal(~vanishing@user/vanishingideal) (Ping timeout: 268 seconds)
2025-02-11 10:33:39 +0100tnt2(~Thunderbi@user/tnt1) (Ping timeout: 260 seconds)
2025-02-11 10:35:08 +0100vanishingideal(~vanishing@user/vanishingideal) vanishingideal
2025-02-11 10:35:58 +0100 <ski> iirc, `forall a b. (a,f b) -> f (a,b)', alternatively `forall a b. f (a -> b) -> (a -> f b)', are sometimes known as "strength". i'm wondering whether there's a traditional name for `forall a b. (a -> f b) -> f (a -> b)', and what reasonable laws would be
2025-02-11 10:36:56 +0100lunitur(~lunitur@86.33.95.148) (Ping timeout: 252 seconds)
2025-02-11 10:39:54 +0100merijn(~merijn@77.242.116.146) (Ping timeout: 260 seconds)
2025-02-11 10:40:32 +0100tnt2(~Thunderbi@user/tnt1) tnt1
2025-02-11 10:41:06 +0100tnt1(~Thunderbi@user/tnt1) (Ping timeout: 248 seconds)
2025-02-11 10:43:59 +0100tnt1(~Thunderbi@user/tnt1) tnt1
2025-02-11 10:45:22 +0100tnt2(~Thunderbi@user/tnt1) (Ping timeout: 248 seconds)
2025-02-11 10:45:37 +0100otbergsten(~otbergste@user/otbergsten) otbergsten
2025-02-11 10:46:10 +0100 <mniip> ski, have you seen what lean has in store?
2025-02-11 10:46:45 +0100 <mniip> do <- frob (<- foo) (<- bar) (<- baz) (<- quux)
2025-02-11 10:47:14 +0100merijn(~merijn@77.242.116.146) merijn
2025-02-11 10:48:26 +0100 <ski> hm, not that i recall atm
2025-02-11 10:51:13 +0100Smiles(uid551636@id-551636.lymington.irccloud.com) Smiles
2025-02-11 10:55:41 +0100 <ski> mhm, seems to be documented at <https://lean-lang.org/doc/reference/latest/Functors___-Monads-and--do--Notation/Syntax/#do-notation>
2025-02-11 10:56:00 +0100alfiee(~alfiee@user/alfiee) alfiee
2025-02-11 10:57:41 +0100tri(~tri@ool-44c70bcb.dyn.optonline.net)
2025-02-11 11:00:24 +0100alfiee(~alfiee@user/alfiee) (Ping timeout: 252 seconds)
2025-02-11 11:02:14 +0100tri(~tri@ool-44c70bcb.dyn.optonline.net) (Ping timeout: 252 seconds)
2025-02-11 11:03:19 +0100JamesMowery(~JamesMowe@ip68-228-212-232.ph.ph.cox.net) (Ping timeout: 252 seconds)
2025-02-11 11:04:28 +0100 <mauke> :t \x -> fmap ($ x)
2025-02-11 11:04:29 +0100 <lambdabot> Functor f => a -> f (a -> b) -> f b
2025-02-11 11:06:08 +0100 <ski> yes
2025-02-11 11:11:28 +0100CiaoSen(~Jura@ip-037-201-241-067.um10.pools.vodafone-ip.de) (Ping timeout: 244 seconds)
2025-02-11 11:14:37 +0100 <mauke> hmm, flipping arrows but not products to sums
2025-02-11 11:21:59 +0100aniketd(32aa4844cd@2a03:6000:1812:100::dcb) (Remote host closed the connection)
2025-02-11 11:21:59 +0100shreyasminocha(51fdc93eda@user/shreyasminocha) (Remote host closed the connection)
2025-02-11 11:21:59 +0100cpli(77fc530071@2a03:6000:1812:100::252) (Remote host closed the connection)
2025-02-11 11:21:59 +0100duncan(c6181279e3@user/meow/duncan) (Remote host closed the connection)
2025-02-11 11:21:59 +0100bheesham(3aa22d8375@2a03:6000:1812:100::e40) (Remote host closed the connection)
2025-02-11 11:21:59 +0100jmcantrell(644f1bed9a@user/jmcantrell) (Remote host closed the connection)
2025-02-11 11:21:59 +0100whereiseveryone(206ba86c98@2a03:6000:1812:100::2e4) (Remote host closed the connection)
2025-02-11 11:21:59 +0100smiesner(b0cf5acf8c@user/smiesner) (Remote host closed the connection)
2025-02-11 11:21:59 +0100bsima1(9d7e39c8ad@2a03:6000:1812:100::dd) (Remote host closed the connection)
2025-02-11 11:21:59 +0100fvr(ef3e56ca8b@2a03:6000:1812:100::3c4) (Remote host closed the connection)
2025-02-11 11:21:59 +0100jleightcap(7bc4014b62@user/jleightcap) (Remote host closed the connection)
2025-02-11 11:21:59 +0100bgtdsword(b968c1779f@2a03:6000:1812:100::1460) (Remote host closed the connection)
2025-02-11 11:21:59 +0100arcadewise(52968ed80d@2a03:6000:1812:100::3df) (Remote host closed the connection)
2025-02-11 11:21:59 +0100b0o(0e4a0bf4c9@2a03:6000:1812:100::1bf) (Remote host closed the connection)
2025-02-11 11:21:59 +0100evanrelf(3addc196af@2a03:6000:1812:100::f0) (Remote host closed the connection)
2025-02-11 11:21:59 +0100raghavgururajan(ea769b8000@user/raghavgururajan) (Remote host closed the connection)
2025-02-11 11:21:59 +0100thatonelutenist(8216c46202@2a03:6000:1812:100::fb3) (Remote host closed the connection)
2025-02-11 11:21:59 +0100sm2n(ae95cb1267@user/sm2n) (Remote host closed the connection)
2025-02-11 11:21:59 +0100fgaz(1ff9197ed6@2a03:6000:1812:100::11ea) (Remote host closed the connection)
2025-02-11 11:21:59 +0100filwisher(2e6936c793@2a03:6000:1812:100::170) (Remote host closed the connection)
2025-02-11 11:22:00 +0100jakzale(6291399afa@user/jakzale) (Remote host closed the connection)
2025-02-11 11:22:00 +0100sus(1b7af6299f@user/zeromomentum) (Remote host closed the connection)
2025-02-11 11:22:00 +0100Ankhers(e99e97ef8e@2a03:6000:1812:100::2a2) (Remote host closed the connection)
2025-02-11 11:22:00 +0100rselim(ce261f06ff@user/milesrout) (Remote host closed the connection)
2025-02-11 11:22:00 +0100simendsjo(34b0550437@2a03:6000:1812:100::1441) (Remote host closed the connection)
2025-02-11 11:22:00 +0100samhh(7569f027cf@2a03:6000:1812:100::e4) (Remote host closed the connection)
2025-02-11 11:22:00 +0100fn_lumi(3d621153a5@2a03:6000:1812:100::df7) (Remote host closed the connection)
2025-02-11 11:22:00 +0100probie(cc0b34050a@user/probie) (Remote host closed the connection)
2025-02-11 11:22:01 +0100JoelMcCracken(5ea8252fbb@2a03:6000:1812:100::10e3) (Remote host closed the connection)
2025-02-11 11:22:01 +0100eso(a0662dfd5e@2a03:6000:1812:100::1266) (Remote host closed the connection)
2025-02-11 11:22:01 +0100pmk(6afe4476a1@2a03:6000:1812:100::26d) (Remote host closed the connection)
2025-02-11 11:22:01 +0100ymherklotz(cb2c9cfbdd@2a03:6000:1812:100::29a) (Remote host closed the connection)
2025-02-11 11:22:01 +0100lane(809450f172@2a03:6000:1812:100::1300) (Remote host closed the connection)
2025-02-11 11:22:02 +0100ggb(a62ffbaf4f@2a03:6000:1812:100::3ac) (Write error: Broken pipe)
2025-02-11 11:22:02 +0100lucyy(228ee8f0ce@user/lucyy) (Remote host closed the connection)
2025-02-11 11:22:02 +0100akspecs(00cc8321af@sourcehut/user/akspecs) (Write error: Broken pipe)
2025-02-11 11:22:02 +0100ursa-major(114efe6c39@2a03:6000:1812:100::11f3) (Remote host closed the connection)
2025-02-11 11:22:02 +0100jkoshy(99b9359beb@user/jkoshy) (Remote host closed the connection)
2025-02-11 11:22:02 +0100chaitlatte0(ea29c0bb16@user/chaitlatte0) (Remote host closed the connection)
2025-02-11 11:23:14 +0100foul_owl(~kerry@174-21-138-88.tukw.qwest.net) (Ping timeout: 248 seconds)
2025-02-11 11:24:15 +0100samhh_(7569f027cf@2a03:6000:1812:100::e4) (Ping timeout: 246 seconds)
2025-02-11 11:24:27 +0100RussetParrotBear(45ce440a48@2a03:6000:1812:100::e2) (Read error: Connection reset by peer)
2025-02-11 11:24:27 +0100henrytill(e0180937c3@2a03:6000:1812:100::e8c) (Read error: Connection reset by peer)
2025-02-11 11:24:27 +0100lukec(9dfd4d094e@2a03:6000:1812:100::10e) (Remote host closed the connection)
2025-02-11 11:27:15 +0100nschoe(~nschoe@2a01:e0a:8e:a190:c1a:8d45:26a8:2ec3) (Quit: ZNC 1.8.2 - https://znc.in)
2025-02-11 11:27:32 +0100nschoe(~nschoe@2a01:e0a:8e:a190:e51:40e8:9bc8:8d19) nschoe
2025-02-11 11:33:21 +0100Maxdamantus(~Maxdamant@user/maxdamantus) (Ping timeout: 268 seconds)
2025-02-11 11:33:23 +0100ash3en(~Thunderbi@2a03:7846:b6eb:101:93ac:a90a:da67:f207) (Ping timeout: 252 seconds)
2025-02-11 11:33:51 +0100Googulator(~Googulato@2a01-036d-0106-4074-758c-12a1-cbb4-05eb.pool6.digikabel.hu) (Quit: Client closed)
2025-02-11 11:34:06 +0100Googulator(~Googulato@2a01-036d-0106-4074-758c-12a1-cbb4-05eb.pool6.digikabel.hu)
2025-02-11 11:34:53 +0100img(~img@user/img) (Quit: ZNC 1.8.2 - https://znc.in)
2025-02-11 11:36:12 +0100img(~img@user/img) img
2025-02-11 11:36:35 +0100foul_owl(~kerry@193.42.0.124) foul_owl
2025-02-11 11:40:41 +0100 <ncf> mauke: what is?
2025-02-11 11:42:38 +0100Maxdamantus(~Maxdamant@user/maxdamantus) Maxdamantus
2025-02-11 11:43:12 +0100Googulator(~Googulato@2a01-036d-0106-4074-758c-12a1-cbb4-05eb.pool6.digikabel.hu) (Quit: Client closed)
2025-02-11 11:43:22 +0100Googulator(~Googulato@2a01-036d-0106-4074-758c-12a1-cbb4-05eb.pool6.digikabel.hu)
2025-02-11 11:45:38 +0100alfiee(~alfiee@user/alfiee) alfiee
2025-02-11 11:47:23 +0100CiaoSen(~Jura@2a02:8071:64e1:7180:4e50:ddff:fe9b:8922) CiaoSen
2025-02-11 11:49:53 +0100Square2(~Square4@user/square) (Ping timeout: 248 seconds)
2025-02-11 11:50:08 +0100alfiee(~alfiee@user/alfiee) (Ping timeout: 272 seconds)
2025-02-11 11:58:57 +0100tnt1(~Thunderbi@user/tnt1) (Ping timeout: 248 seconds)
2025-02-11 11:58:58 +0100tnt2(~Thunderbi@user/tnt1) tnt1
2025-02-11 12:04:04 +0100tnt2(~Thunderbi@user/tnt1) (Ping timeout: 272 seconds)
2025-02-11 12:07:26 +0100tnt1(~Thunderbi@user/tnt1) tnt1
2025-02-11 12:13:25 +0100vanishingideal(~vanishing@user/vanishingideal) (Ping timeout: 248 seconds)
2025-02-11 12:18:30 +0100merijn(~merijn@77.242.116.146) (Ping timeout: 252 seconds)
2025-02-11 12:19:57 +0100haritzsaimazoon
2025-02-11 12:20:23 +0100vanishingideal(~vanishing@user/vanishingideal) vanishingideal
2025-02-11 12:21:10 +0100CiaoSen(~Jura@2a02:8071:64e1:7180:4e50:ddff:fe9b:8922) (Ping timeout: 272 seconds)
2025-02-11 12:23:05 +0100CiaoSen(~Jura@ip-037-201-241-067.um10.pools.vodafone-ip.de) CiaoSen
2025-02-11 12:24:53 +0100 <bwe> I've multiple functions `(a, b) -> Maybe c`. How can I chain them, i. e. if first yields Nothing, second is performed on input etc., if none yields a `Just c`, then I manually define a return value.
2025-02-11 12:29:37 +0100Akshat(~Akshat@2409:40d0:11e1:cd05:62b2:b7f8:bf3f:70d)
2025-02-11 12:30:20 +0100merijn(~merijn@77.242.116.146) merijn
2025-02-11 12:30:28 +0100Akshat(~Akshat@2409:40d0:11e1:cd05:62b2:b7f8:bf3f:70d) (Client Quit)
2025-02-11 12:30:39 +0100Akshat(~Akshat@2409:40d0:11e1:cd05:62b2:b7f8:bf3f:70d)
2025-02-11 12:34:55 +0100alfiee(~alfiee@user/alfiee) alfiee
2025-02-11 12:35:02 +0100ggb(a62ffbaf4f@2a03:6000:1812:100::3ac) ggb
2025-02-11 12:35:03 +0100filwisher(2e6936c793@2a03:6000:1812:100::170)
2025-02-11 12:35:03 +0100bsima1(9d7e39c8ad@2a03:6000:1812:100::dd)
2025-02-11 12:35:03 +0100pmk(6afe4476a1@2a03:6000:1812:100::26d) pmk
2025-02-11 12:35:03 +0100fgaz(1ff9197ed6@2a03:6000:1812:100::11ea) fgaz
2025-02-11 12:35:03 +0100lukec(9dfd4d094e@2a03:6000:1812:100::10e)
2025-02-11 12:35:03 +0100arcadewise(52968ed80d@2a03:6000:1812:100::3df) l3gacyb3ta
2025-02-11 12:35:04 +0100bgtdsword(b968c1779f@2a03:6000:1812:100::1460)
2025-02-11 12:35:04 +0100smiesner(b0cf5acf8c@user/smiesner) smiesner
2025-02-11 12:35:04 +0100samhh(7569f027cf@2a03:6000:1812:100::e4) samhh
2025-02-11 12:35:04 +0100rselim(ce261f06ff@user/milesrout) milesrout
2025-02-11 12:35:04 +0100lane(809450f172@2a03:6000:1812:100::1300) lane
2025-02-11 12:35:05 +0100jkoshy(99b9359beb@user/jkoshy) jkoshy
2025-02-11 12:35:05 +0100RussetParrotBear(45ce440a48@2a03:6000:1812:100::e2)
2025-02-11 12:35:06 +0100thatonelutenist(8216c46202@2a03:6000:1812:100::fb3) thatonelutenist
2025-02-11 12:35:06 +0100chaitlatte0(ea29c0bb16@user/chaitlatte0) chaitlatte0
2025-02-11 12:35:06 +0100cpli(77fc530071@2a03:6000:1812:100::252) cpli
2025-02-11 12:35:06 +0100akspecs(00cc8321af@sourcehut/user/akspecs) akspecs
2025-02-11 12:35:06 +0100lucyy(228ee8f0ce@user/lucyy) lucyy
2025-02-11 12:35:06 +0100sus(1b7af6299f@user/zeromomentum) zeromomentum
2025-02-11 12:35:07 +0100fn_lumi(3d621153a5@2a03:6000:1812:100::df7) fn_lumi
2025-02-11 12:35:07 +0100jmcantrell(644f1bed9a@user/jmcantrell) jmcantrell
2025-02-11 12:35:08 +0100jakzale(6291399afa@user/jakzale) jakzale
2025-02-11 12:35:08 +0100probie(cc0b34050a@user/probie) probie
2025-02-11 12:35:09 +0100samhh_(7569f027cf@2a03:6000:1812:100::e4) samhh
2025-02-11 12:35:09 +0100jleightcap(7bc4014b62@user/jleightcap) jleightcap
2025-02-11 12:35:09 +0100raghavgururajan(ea769b8000@user/raghavgururajan) raghavgururajan
2025-02-11 12:35:09 +0100JoelMcCracken(5ea8252fbb@2a03:6000:1812:100::10e3) JoelMcCracken
2025-02-11 12:35:10 +0100henrytill(e0180937c3@2a03:6000:1812:100::e8c) henrytill
2025-02-11 12:35:10 +0100shreyasminocha(51fdc93eda@user/shreyasminocha) shreyasminocha
2025-02-11 12:35:10 +0100simendsjo(34b0550437@2a03:6000:1812:100::1441) simendsjo
2025-02-11 12:35:10 +0100aniketd(32aa4844cd@2a03:6000:1812:100::dcb) aniketd
2025-02-11 12:35:10 +0100sm2n(ae95cb1267@user/sm2n) sm2n
2025-02-11 12:35:10 +0100b0o(0e4a0bf4c9@2a03:6000:1812:100::1bf) b0o
2025-02-11 12:35:10 +0100whereiseveryone(206ba86c98@2a03:6000:1812:100::2e4) whereiseveryone
2025-02-11 12:35:10 +0100ursa-major(114efe6c39@2a03:6000:1812:100::11f3) ursa-major
2025-02-11 12:35:11 +0100eso(a0662dfd5e@2a03:6000:1812:100::1266) jeso
2025-02-11 12:35:14 +0100duncan(c6181279e3@user/meow/duncan) duncan
2025-02-11 12:35:14 +0100fvr(ef3e56ca8b@2a03:6000:1812:100::3c4) fvr
2025-02-11 12:35:14 +0100bheesham(3aa22d8375@2a03:6000:1812:100::e40) bheesham
2025-02-11 12:35:14 +0100Ankhers(e99e97ef8e@2a03:6000:1812:100::2a2) Ankhers
2025-02-11 12:37:14 +0100CiaoSen(~Jura@ip-037-201-241-067.um10.pools.vodafone-ip.de) (Ping timeout: 244 seconds)
2025-02-11 12:38:05 +0100 <ski> > let foo n | even n = Just (n `div` 2) | otherwise = Nothing; bar 1 = Nothing; bar n = Just (3 * n + 1) in intercalate "," [(maybe "stop" show . getFirst) ((First . foo <> First . bar) n) | n <- [1 .. 8] :: [Integer]] -- hrm ..
2025-02-11 12:38:06 +0100 <lambdabot> "stop,1,10,2,16,3,22,4"
2025-02-11 12:38:46 +0100 <akegalj> bwe: I would explicitly chain them (\input -> fun1 input <|> fun2 input <|> fun3 input <|> Just 4) (a,b)
2025-02-11 12:39:08 +0100 <ski> > let foo n | even n = Just (n `div` 2) | otherwise = Nothing; bar 1 = Nothing; bar n = Just (3 * n + 1) in intercalate "," [maybe "stop" show (foo n <|> bar n) | n <- [1 .. 8] :: [Integer]] -- simpler
2025-02-11 12:39:10 +0100 <lambdabot> "stop,1,10,2,16,3,22,4"
2025-02-11 12:39:18 +0100alfiee(~alfiee@user/alfiee) (Ping timeout: 244 seconds)
2025-02-11 12:40:14 +0100CalimeroTeknik(~calimero@user/calimeroteknik) (Ping timeout: 260 seconds)
2025-02-11 12:44:49 +0100 <haskellbridge> <alexfmpe> bwe: fromMaybe defaultValue $ asum $ fmap ($ input) [fun1, fun2,...]
2025-02-11 12:49:30 +0100ash3en(~Thunderbi@2a03:7846:b6eb:101:93ac:a90a:da67:f207) ash3en
2025-02-11 12:52:30 +0100CalimeroTeknik(~calimero@ctkarch.org)
2025-02-11 12:53:02 +0100Akshat(~Akshat@2409:40d0:11e1:cd05:62b2:b7f8:bf3f:70d) (Quit: Client closed)
2025-02-11 12:57:23 +0100merijn(~merijn@77.242.116.146) (Ping timeout: 244 seconds)
2025-02-11 12:59:33 +0100merijn(~merijn@77.242.116.146) merijn
2025-02-11 13:00:02 +0100JeremyB99(~JeremyB99@dhcp-251-168.resnet.purdue.edu) (Remote host closed the connection)
2025-02-11 13:00:04 +0100caconym(~caconym@user/caconym) (Quit: bye)
2025-02-11 13:00:11 +0100JeremyB99(~JeremyB99@2607:ac80:407:7:b132:8d6d:8d5:36a3)
2025-02-11 13:02:11 +0100caconym(~caconym@user/caconym) caconym
2025-02-11 13:02:30 +0100akegalj(~akegalj@78-3-100-82.adsl.net.t-com.hr) (Ping timeout: 252 seconds)
2025-02-11 13:06:06 +0100merijn(~merijn@77.242.116.146) (Ping timeout: 246 seconds)
2025-02-11 13:07:47 +0100JeremyB99(~JeremyB99@2607:ac80:407:7:b132:8d6d:8d5:36a3) (Read error: Connection reset by peer)
2025-02-11 13:11:20 +0100JeremyB99(~JeremyB99@2607:ac80:407:7:b132:8d6d:8d5:36a3)
2025-02-11 13:12:39 +0100merijn(~merijn@77.242.116.146) merijn
2025-02-11 13:17:01 +0100picnoir(~picnoir@about/aquilenet/vodoo/NinjaTrappeur) (Quit: WeeChat 4.5.1)
2025-02-11 13:17:13 +0100chele_(~chele@user/chele) chele
2025-02-11 13:17:49 +0100JeremyB99(~JeremyB99@2607:ac80:407:7:b132:8d6d:8d5:36a3) (Read error: Connection reset by peer)
2025-02-11 13:18:25 +0100picnoir(~picnoir@about/aquilenet/vodoo/NinjaTrappeur) NinjaTrappeur
2025-02-11 13:18:42 +0100wootehfoot(~wootehfoo@user/wootehfoot) wootehfoot
2025-02-11 13:19:40 +0100chele__(~chele@user/chele) chele
2025-02-11 13:20:30 +0100chele(~chele@user/chele) (Ping timeout: 276 seconds)
2025-02-11 13:22:09 +0100chele_(~chele@user/chele) (Ping timeout: 248 seconds)
2025-02-11 13:22:42 +0100 <dminuoso> thirdofmay18081814goya: Roughly, the way you "run" a lens does not differ too wildly between all three variants (VL, mixed and profunctor).
2025-02-11 13:24:06 +0100sprotte24(~sprotte24@p200300d16f05dc007daaf3d6dd12202b.dip0.t-ipconnect.de)
2025-02-11 13:27:00 +0100jespada(~jespada@2800:a4:2211:9c00:4cb1:4c0:c141:d649) jespada
2025-02-11 13:27:38 +0100 <dminuoso> thirdofmay18081814goya: The cute trick in profunctor representation that all optics are just profunctor transformer functions, so "using" them amounts to just applying them to a particular choice of a profunctor
2025-02-11 13:28:02 +0100tavare(~tavare@user/tavare) (Remote host closed the connection)
2025-02-11 13:28:12 +0100 <dminuoso> Similarly to how in VL representation you pick a particular functor to "use" it
2025-02-11 13:28:21 +0100alfiee(~alfiee@user/alfiee) alfiee
2025-02-11 13:28:26 +0100tavare(~tavare@user/tavare) tavare
2025-02-11 13:29:55 +0100 <dminuoso> Compare `type LensP s t a b = forall p. Strong p => Optic p s t a b` with `type LensVL s t a b = forall f . Functor f => (a -> f b) -> s -> f t`
2025-02-11 13:30:21 +0100 <dminuoso> Where type Optic p s t a b = p a b -> p s t
2025-02-11 13:30:22 +0100JeremyB99(~JeremyB99@2607:ac80:407:7:b132:8d6d:8d5:36a3)
2025-02-11 13:30:33 +0100 <dminuoso> So `type LensP s t a b = forall p. Strong p => p a b -> p s t`
2025-02-11 13:31:12 +0100 <dminuoso> If we write `p` in an infix position with a nice operator instead, the similarity becomes more obvious:
2025-02-11 13:32:40 +0100 <dminuoso> type LensP s t a b = forall (:=>). Strong (:=>) => (a :=> b) -> s :=> t
2025-02-11 13:32:46 +0100 <dminuoso> type LensVL s t a b = forall f . Functor f => (a -> f b) -> s -> f t
2025-02-11 13:32:58 +0100alfiee(~alfiee@user/alfiee) (Ping timeout: 265 seconds)
2025-02-11 13:33:19 +0100JeremyB99(~JeremyB99@2607:ac80:407:7:b132:8d6d:8d5:36a3) (Read error: Connection reset by peer)
2025-02-11 13:34:21 +0100 <dminuoso> So a simple way to run a LensP would be to just turn it into a LensVL by just picking :=> ~ UpStar
2025-02-11 13:35:01 +0100 <dminuoso> In this particular example, the profunctor representation is just vastly more generalized.
2025-02-11 13:37:25 +0100 <bwe> alexfmpe, akegalj, ski: thanks, I've gone for alexfmpe's approach, solves my requirement.
2025-02-11 13:37:57 +0100 <dminuoso> `viewL l = runConst . l Const` and `viewP l = getConst . (l (UpStar Const))`
2025-02-11 13:38:10 +0100 <dminuoso> Oh
2025-02-11 13:38:21 +0100 <dminuoso> `viewP l = getConst . runUpStar (l (UpStar Const))` of course.
2025-02-11 13:40:19 +0100Smiles(uid551636@id-551636.lymington.irccloud.com) (Quit: Connection closed for inactivity)
2025-02-11 13:40:23 +0100tri(~tri@ool-44c70bcb.dyn.optonline.net)
2025-02-11 13:44:37 +0100tri(~tri@ool-44c70bcb.dyn.optonline.net) (Ping timeout: 248 seconds)
2025-02-11 13:51:49 +0100Square2(~Square4@user/square) Square
2025-02-11 13:53:08 +0100JeremyB99(~JeremyB99@2607:ac80:407:7:b132:8d6d:8d5:36a3)
2025-02-11 13:54:46 +0100JeremyB99(~JeremyB99@2607:ac80:407:7:b132:8d6d:8d5:36a3) (Read error: Connection reset by peer)
2025-02-11 13:55:19 +0100kuribas(~user@ip-188-118-57-242.reverse.destiny.be) kuribas
2025-02-11 13:59:33 +0100ash3en(~Thunderbi@2a03:7846:b6eb:101:93ac:a90a:da67:f207) (Ping timeout: 248 seconds)
2025-02-11 14:01:14 +0100Digitteknohippie(~user@user/digit) Digit
2025-02-11 14:02:28 +0100Digit(~user@user/digit) (Ping timeout: 245 seconds)
2025-02-11 14:10:00 +0100akegalj(~akegalj@168-206.dsl.iskon.hr)
2025-02-11 14:10:43 +0100CiaoSen(~Jura@ip-037-201-241-067.um10.pools.vodafone-ip.de) CiaoSen
2025-02-11 14:11:08 +0100tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
2025-02-11 14:16:25 +0100alfiee(~alfiee@user/alfiee) alfiee
2025-02-11 14:20:35 +0100alfiee(~alfiee@user/alfiee) (Ping timeout: 252 seconds)
2025-02-11 14:25:40 +0100causal(~eric@50.35.84.231) causal
2025-02-11 14:29:08 +0100merijn(~merijn@77.242.116.146) (Ping timeout: 244 seconds)
2025-02-11 14:30:32 +0100merijn(~merijn@77.242.116.146) merijn
2025-02-11 14:33:27 +0100SlackCoder(~SlackCode@64-94-63-8.ip.weststar.net.ky) SlackCoder
2025-02-11 14:37:58 +0100tavare(~tavare@user/tavare) (Remote host closed the connection)
2025-02-11 14:40:51 +0100bitdex(~bitdex@gateway/tor-sasl/bitdex) (Quit: = "")
2025-02-11 14:41:48 +0100tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2025-02-11 14:52:01 +0100DigitteknohippieDigit
2025-02-11 14:57:29 +0100otbergsten(~otbergste@user/otbergsten) (Remote host closed the connection)
2025-02-11 14:57:59 +0100weary-traveler(~user@user/user363627) user363627
2025-02-11 15:03:19 +0100JeremyB99(~JeremyB99@2607:ac80:407:7:b132:8d6d:8d5:36a3)
2025-02-11 15:04:49 +0100alfiee(~alfiee@user/alfiee) alfiee
2025-02-11 15:08:00 +0100comerijn(~merijn@77.242.116.146) merijn
2025-02-11 15:08:01 +0100JeremyB99(~JeremyB99@2607:ac80:407:7:b132:8d6d:8d5:36a3) (Read error: Connection reset by peer)
2025-02-11 15:09:24 +0100alfiee(~alfiee@user/alfiee) (Ping timeout: 260 seconds)
2025-02-11 15:10:50 +0100merijn(~merijn@77.242.116.146) (Ping timeout: 252 seconds)
2025-02-11 15:13:06 +0100JuanDaugherty(~juan@user/JuanDaugherty) JuanDaugherty
2025-02-11 15:17:49 +0100 <kaol> Is there something more powerful than :r in ghci to recompile a different library in the same cabal file as well? Something I could use instead of restarting ghci itself.
2025-02-11 15:21:54 +0100 <dminuoso> kaol: Given that the whole business of how libraries end up in GHC is usually managed by cabal-install...
2025-02-11 15:22:24 +0100 <dminuoso> I suppose you could use `ghcid` with a bit of massage
2025-02-11 15:22:35 +0100 <dminuoso> It really depends on how you intend to detect "different library"
2025-02-11 15:22:47 +0100 <dminuoso> Or what you want to use GHCi for
2025-02-11 15:26:35 +0100 <kaol> I really don't care about ghcid.
2025-02-11 15:26:59 +0100 <kaol> I'm running my tests in a repl and the library part of my code has a bug.
2025-02-11 15:27:52 +0100 <kaol> And apparently this is some barrier that requires either copying the module to my test directory or restarting ghci all the time.
2025-02-11 15:28:28 +0100weary-traveler(~user@user/user363627) (Remote host closed the connection)
2025-02-11 15:29:39 +0100 <kaol> I'm calling my test's main in repl.
2025-02-11 15:29:53 +0100CiaoSen(~Jura@ip-037-201-241-067.um10.pools.vodafone-ip.de) (Ping timeout: 252 seconds)
2025-02-11 15:30:16 +0100weary-traveler(~user@user/user363627) user363627
2025-02-11 15:30:35 +0100sprotte24(~sprotte24@p200300d16f05dc007daaf3d6dd12202b.dip0.t-ipconnect.de) (Quit: Leaving)
2025-02-11 15:31:05 +0100tri(~tri@ool-44c70bcb.dyn.optonline.net)
2025-02-11 15:31:11 +0100JeremyB99(~JeremyB99@2607:ac80:407:7:b132:8d6d:8d5:36a3)
2025-02-11 15:31:43 +0100 <kaol> different library as in my cabal file having two stanzas, one for library and another for test-suite.
2025-02-11 15:33:47 +0100 <kaol> I guess I can do with just removing the library dependency from the test, copying over any missing build-depends and adding both directories to hs-source-dirs.
2025-02-11 15:34:54 +0100tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
2025-02-11 15:35:23 +0100tri(~tri@ool-44c70bcb.dyn.optonline.net) (Ping timeout: 252 seconds)
2025-02-11 15:38:57 +0100comerijn(~merijn@77.242.116.146) (Ping timeout: 276 seconds)
2025-02-11 15:40:42 +0100JeremyB99(~JeremyB99@2607:ac80:407:7:b132:8d6d:8d5:36a3) (Read error: Connection reset by peer)
2025-02-11 15:41:23 +0100 <kaol> Not a fan of these ergonomics.
2025-02-11 15:41:49 +0100JeremyB99(~JeremyB99@2607:ac80:407:7:b132:8d6d:8d5:36a3)
2025-02-11 15:41:53 +0100polykernel(~polykerne@user/polykernel) polykernel
2025-02-11 15:46:17 +0100JeremyB99(~JeremyB99@2607:ac80:407:7:b132:8d6d:8d5:36a3) (Remote host closed the connection)
2025-02-11 15:46:25 +0100JeremyB99(~JeremyB99@2607:ac80:407:7:b132:8d6d:8d5:36a3)
2025-02-11 15:48:21 +0100JuanDaugherty(~juan@user/JuanDaugherty) (Quit: praxis.meansofproduction.biz (juan@acm.org))
2025-02-11 15:51:00 +0100merijn(~merijn@77.242.116.146) merijn
2025-02-11 15:53:33 +0100alfiee(~alfiee@user/alfiee) alfiee
2025-02-11 15:54:05 +0100misterfish(~misterfis@84.53.85.146) misterfish
2025-02-11 15:57:58 +0100alfiee(~alfiee@user/alfiee) (Ping timeout: 265 seconds)
2025-02-11 16:01:00 +0100Smiles(uid551636@id-551636.lymington.irccloud.com) Smiles
2025-02-11 16:02:21 +0100son0p(~ff@2800:e6:4000:d723:c181:4205:f2b1:437a) (Quit: Leaving)
2025-02-11 16:03:19 +0100JeremyB99(~JeremyB99@2607:ac80:407:7:b132:8d6d:8d5:36a3) (Remote host closed the connection)
2025-02-11 16:03:28 +0100JeremyB99(~JeremyB99@2607:ac80:407:7:b132:8d6d:8d5:36a3)
2025-02-11 16:06:10 +0100 <haskellbridge> <sm> kaol: I didn't follow that exactly but it sounds like something stack build --fast --file-watch is good for
2025-02-11 16:15:46 +0100rembo10_(~rembo10@main.remulis.com) (Quit: ZNC 1.8.2 - https://znc.in)
2025-02-11 16:16:34 +0100Anushka(~Anushka@101.0.63.190)
2025-02-11 16:17:12 +0100rembo10(~rembo10@main.remulis.com) rembo10
2025-02-11 16:20:47 +0100__monty__(~toonn@user/toonn) toonn
2025-02-11 16:25:15 +0100 <tomsmeding> kaol: I'm fairly sure ghci can only have one component loaded at a time; the others will be used as compiled dependencies. It can only reload the loaded component, so what you want is impossible, currently, I think
2025-02-11 16:26:15 +0100 <tomsmeding> if you can put your tests in a haskell file instead of running them manually in a repl, then making that an executable/test-suite component of your package allows you to simply use `cabal run` to run the tests, which does have better ergonomics (but perhaps longer roundtrip times)
2025-02-11 16:27:50 +0100todi(~todi@p57803331.dip0.t-ipconnect.de) (Ping timeout: 252 seconds)
2025-02-11 16:28:53 +0100todi(~todi@p57803331.dip0.t-ipconnect.de) todi
2025-02-11 16:29:21 +0100merijn(~merijn@77.242.116.146) (Ping timeout: 268 seconds)
2025-02-11 16:36:12 +0100 <haskellbridge> <sm> oh.. I have a ghci script that uses various ghc options like -i to load from multiple packages into ghci as if they were in one package, for better reloading
2025-02-11 16:38:22 +0100 <haskellbridge> <sm> https://github.com/simonmichael/hledger/blob/fbbe897133fabbef337f30cd746386a90545f45d/Justfile#L353
2025-02-11 16:38:22 +0100 <haskellbridge> ... long message truncated: https://kf8nh.com/_heisenbridge/media/kf8nh.com/wEXSVISAROaeFNEYxArasFqE/RCSq550tWp4 (4 lines)
2025-02-11 16:39:41 +0100 <haskellbridge> <sm> just add the source paths with -i, it seems like
2025-02-11 16:40:45 +0100merijn(~merijn@77.242.116.146) merijn
2025-02-11 16:41:17 +0100alfiee(~alfiee@user/alfiee) alfiee
2025-02-11 16:43:06 +0100tri(~tri@ool-44c70bcb.dyn.optonline.net)
2025-02-11 16:45:32 +0100alfiee(~alfiee@user/alfiee) (Ping timeout: 244 seconds)
2025-02-11 16:47:30 +0100tri(~tri@ool-44c70bcb.dyn.optonline.net) (Ping timeout: 248 seconds)
2025-02-11 16:47:59 +0100euouae(~euouae@user/euouae) euouae
2025-02-11 16:48:52 +0100 <euouae> dminuoso: okay, I reflected a bit on the Vec3 exercise. The <$> f-wraps the constructor, and the <*> applies f-values one by one until it is reduced to an f-value.
2025-02-11 16:49:41 +0100merijn(~merijn@77.242.116.146) (Ping timeout: 248 seconds)
2025-02-11 16:50:30 +0100merijn(~merijn@77.242.116.146) merijn
2025-02-11 17:00:57 +0100 <dminuoso> euouae: Perfect. Now off to the final variantĂ–
2025-02-11 17:01:25 +0100 <dminuoso> Now write a `traverseVec3X` that does the same thing, except it only applies its action to the X component of Vec3. Write variants for Y and Z too.
2025-02-11 17:01:33 +0100Digit(~user@user/digit) (Ping timeout: 244 seconds)
2025-02-11 17:01:46 +0100JeremyB99(~JeremyB99@2607:ac80:407:7:b132:8d6d:8d5:36a3) (Remote host closed the connection)
2025-02-11 17:01:46 +0100vanishingideal(~vanishing@user/vanishingideal) (Ping timeout: 244 seconds)
2025-02-11 17:01:54 +0100JeremyB99(~JeremyB99@2607:ac80:407:7:b132:8d6d:8d5:36a3)
2025-02-11 17:03:54 +0100Digit(~user@user/digit) Digit
2025-02-11 17:08:03 +0100SlackCoder(~SlackCode@64-94-63-8.ip.weststar.net.ky) (Read error: Connection reset by peer)
2025-02-11 17:13:36 +0100pavonia(~user@user/siracusa) (Quit: Bye!)
2025-02-11 17:14:36 +0100ec(~ec@gateway/tor-sasl/ec) (Ping timeout: 264 seconds)
2025-02-11 17:15:06 +0100ec(~ec@gateway/tor-sasl/ec) ec
2025-02-11 17:18:02 +0100JeremyB99(~JeremyB99@2607:ac80:407:7:b132:8d6d:8d5:36a3) (Remote host closed the connection)
2025-02-11 17:18:10 +0100JeremyB99(~JeremyB99@2607:ac80:407:7:b132:8d6d:8d5:36a3)
2025-02-11 17:18:38 +0100vanishingideal(~vanishing@user/vanishingideal) vanishingideal
2025-02-11 17:21:30 +0100chele__(~chele@user/chele) (Remote host closed the connection)
2025-02-11 17:22:22 +0100 <euouae> something like: traverseVecX f (Vec3 x y z) = Vec3 <$> f x <*> pure y <*> pure z
2025-02-11 17:22:31 +0100 <euouae> although now I have to have :: Applicative f => (a -> f a) -> Vec3 a -> f (Vec3 a)
2025-02-11 17:22:37 +0100 <euouae> i.e. I can't hve it a -> f b anymore.
2025-02-11 17:22:58 +0100 <euouae> well, what seems to me like is that we have composable setters now
2025-02-11 17:24:49 +0100 <haskellbridge> <alexfmpe> kaol: cabal repl all --enable-multi-repl
2025-02-11 17:24:59 +0100 <haskellbridge> <alexfmpe> Need cabal 3.12
2025-02-11 17:25:23 +0100 <haskellbridge> <alexfmpe> Still a bit rough around the edges but mostly works
2025-02-11 17:26:13 +0100CalimeroTeknik(~calimero@ctkarch.org) (Changing host)
2025-02-11 17:26:13 +0100CalimeroTeknik(~calimero@user/calimeroteknik) CalimeroTeknik
2025-02-11 17:28:43 +0100JeremyB99(~JeremyB99@2607:ac80:407:7:b132:8d6d:8d5:36a3) (Remote host closed the connection)
2025-02-11 17:28:50 +0100JeremyB99(~JeremyB99@2607:ac80:407:7:b132:8d6d:8d5:36a3)
2025-02-11 17:29:21 +0100alfiee(~alfiee@user/alfiee) alfiee
2025-02-11 17:32:53 +0100 <tomsmeding> :def is unsupported in multi-mode, lol
2025-02-11 17:33:18 +0100 <tomsmeding> nor is :m or :set
2025-02-11 17:33:42 +0100 <euouae> does haskell have a good sql (or otherwise) database
2025-02-11 17:33:44 +0100 <euouae> library
2025-02-11 17:34:00 +0100alfiee(~alfiee@user/alfiee) (Ping timeout: 276 seconds)
2025-02-11 17:34:20 +0100 <euouae> I was using SQLAlchemy on Python and it works nicely, I was able to declaratively put together all the tables of the schema
2025-02-11 17:34:26 +0100 <euouae> including their relationships
2025-02-11 17:34:56 +0100 <EvanR> I've used sqlite-simple and postgres-simple
2025-02-11 17:35:04 +0100 <EvanR> keeping it simple
2025-02-11 17:36:24 +0100 <euouae> how about db migrations? by hand?
2025-02-11 17:36:27 +0100 <kaol> hasql is my default choice. Anything that tries to model anything by duplicating table definitions in the source is sure to raise my blood pressure.
2025-02-11 17:36:57 +0100 <euouae> kaol: ORM in general or just that aspect?
2025-02-11 17:37:50 +0100 <euouae> I do use PostgreSQL so it's nice that hasql uses it too
2025-02-11 17:38:22 +0100 <kuribas> euouae: shameless plug, my sql generator library https://hackage.haskell.org/package/hasqlator-mysql-0.2.1
2025-02-11 17:38:34 +0100 <kuribas> no PostgreSQL yet though...
2025-02-11 17:38:51 +0100 <kaol> I think much better by writing and thinking in SQL than trying to play ship bottle building game with some other abstraction.
2025-02-11 17:39:28 +0100 <kuribas> my library tries to be as close as possible to SQL, but remaining composable and type safe.
2025-02-11 17:39:32 +0100 <kaol> Queries as profunctors is as natural as I've ever seen anything to be.
2025-02-11 17:39:45 +0100vanishingideal(~vanishing@user/vanishingideal) (Ping timeout: 248 seconds)
2025-02-11 17:39:47 +0100 <kuribas> opaleye?
2025-02-11 17:40:44 +0100 <kaol> If I'd have a use case for constructing queries dynamically routinely I might consider some other library.
2025-02-11 17:41:00 +0100 <kaol> Composable is kind of no op if you write the query only once.
2025-02-11 17:41:24 +0100 <kuribas> Yeah, my library is meant for when you want to compose dynamic queries. If you just need a static query, then *-simple is the easiest way.
2025-02-11 17:41:26 +0100vanishingideal(~vanishing@user/vanishingideal) vanishingideal
2025-02-11 17:41:40 +0100 <kaol> Or type safety. It doesn't even solve the whole problem unless you access the DB schema to check it against it too.
2025-02-11 17:42:02 +0100 <tomsmeding> (please don't make me run a database to compile your code)
2025-02-11 17:42:03 +0100 <kaol> Or duplicate the schema.
2025-02-11 17:42:15 +0100gmg(~user@user/gehmehgeh) (Remote host closed the connection)
2025-02-11 17:42:37 +0100 <kaol> My dream is something I can just give pg_dump -s and it'd use it for everything.
2025-02-11 17:42:46 +0100 <kuribas> kaol: you cannot check against the schema without including it as types...
2025-02-11 17:42:55 +0100ft(~ft@p4fc2a610.dip0.t-ipconnect.de) ft
2025-02-11 17:43:00 +0100gmg(~user@user/gehmehgeh) gehmehgeh
2025-02-11 17:43:00 +0100 <euouae> kaol: so from your perspective the best benefit is to learn postgresql/sql as best as one can
2025-02-11 17:43:05 +0100 <kaol> Feed the schema dump to TH to get types.
2025-02-11 17:43:08 +0100euphores(~SASL_euph@user/euphores) (Quit: Leaving.)
2025-02-11 17:43:39 +0100 <kuribas> kaol: in my library you export the schema to a haskell type, then feed it to TH to get your types.
2025-02-11 17:43:54 +0100 <kuribas> well, export to a haskell value.
2025-02-11 17:44:08 +0100 <kuribas> kaol: this way you don't need access to a DB to compile the code.
2025-02-11 17:44:12 +0100 <kaol> Schema? As in from pg_dump output or some other representation?
2025-02-11 17:44:30 +0100 <kuribas> kaol: It reads the information schema of the given database.
2025-02-11 17:45:26 +0100prasad(~Thunderbi@2601:243:c001:3f07::5c)
2025-02-11 17:46:15 +0100rvalue-(~rvalue@user/rvalue) rvalue
2025-02-11 17:46:40 +0100rvalue(~rvalue@user/rvalue) (Ping timeout: 252 seconds)
2025-02-11 17:47:01 +0100merijn(~merijn@77.242.116.146) (Ping timeout: 244 seconds)
2025-02-11 17:49:01 +0100 <kuribas> You fetch the table info from the connection: https://hackage.haskell.org/package/hasqlator-mysql-0.2.1/docs/Database-MySQL-Hasqlator-Typed-Sche…
2025-02-11 17:49:27 +0100 <kuribas> Then pretty print it into some module: https://hackage.haskell.org/package/hasqlator-mysql-0.2.1/docs/Database-MySQL-Hasqlator-Typed-Sche…
2025-02-11 17:52:39 +0100 <kuribas> Or if you like, you can put this in a script or a CI/CD pipeline.
2025-02-11 17:52:56 +0100rvalue-rvalue
2025-02-11 17:52:57 +0100 <kuribas> regen_schemas.sh or something.
2025-02-11 17:53:08 +0100ash3en(~Thunderbi@2a03:7846:b6eb:101:93ac:a90a:da67:f207) ash3en
2025-02-11 17:53:41 +0100tri(~tri@ool-44c70bcb.dyn.optonline.net)
2025-02-11 17:55:54 +0100jespada(~jespada@2800:a4:2211:9c00:4cb1:4c0:c141:d649) (Ping timeout: 265 seconds)
2025-02-11 17:57:36 +0100jespada(~jespada@2800:a4:2230:3e00:3974:82a3:7f20:1404) jespada
2025-02-11 17:58:02 +0100tri(~tri@ool-44c70bcb.dyn.optonline.net) (Ping timeout: 252 seconds)
2025-02-11 17:58:28 +0100JeremyB99(~JeremyB99@2607:ac80:407:7:b132:8d6d:8d5:36a3) (Remote host closed the connection)
2025-02-11 17:58:36 +0100JeremyB99(~JeremyB99@2607:ac80:407:7:b132:8d6d:8d5:36a3)
2025-02-11 17:58:53 +0100causal(~eric@50.35.84.231) (Quit: WeeChat 4.5.1)
2025-02-11 17:59:13 +0100euphores(~SASL_euph@user/euphores) euphores
2025-02-11 18:06:35 +0100kuribas(~user@ip-188-118-57-242.reverse.destiny.be) (Remote host closed the connection)
2025-02-11 18:10:22 +0100lortabac(~lortabac@2a01:e0a:541:b8f0:55ab:e185:7f81:54a4) (Quit: WeeChat 4.4.2)
2025-02-11 18:11:17 +0100JeremyB99(~JeremyB99@2607:ac80:407:7:b132:8d6d:8d5:36a3) (Ping timeout: 248 seconds)
2025-02-11 18:12:17 +0100machinedgod(~machinedg@d108-173-18-100.abhsia.telus.net) (Ping timeout: 248 seconds)
2025-02-11 18:12:55 +0100JeremyB99(~JeremyB99@dhcp-248-27.resnet.purdue.edu)
2025-02-11 18:12:55 +0100JeremyB99(~JeremyB99@dhcp-248-27.resnet.purdue.edu) (Read error: Connection reset by peer)
2025-02-11 18:13:24 +0100Googulator(~Googulato@2a01-036d-0106-4074-758c-12a1-cbb4-05eb.pool6.digikabel.hu) (Quit: Client closed)
2025-02-11 18:13:38 +0100Googulator(~Googulato@2a01-036d-0106-4074-758c-12a1-cbb4-05eb.pool6.digikabel.hu)
2025-02-11 18:17:36 +0100gmg(~user@user/gehmehgeh) (Ping timeout: 264 seconds)
2025-02-11 18:17:36 +0100gehmehgeh(~user@user/gehmehgeh) gehmehgeh
2025-02-11 18:17:55 +0100alfiee(~alfiee@user/alfiee) alfiee
2025-02-11 18:18:30 +0100tzh(~tzh@c-76-115-131-146.hsd1.or.comcast.net) tzh
2025-02-11 18:21:05 +0100Square(~Square@user/square) Square
2025-02-11 18:21:30 +0100todi(~todi@p57803331.dip0.t-ipconnect.de) (Ping timeout: 252 seconds)
2025-02-11 18:21:40 +0100todi(~todi@p57803331.dip0.t-ipconnect.de) todi
2025-02-11 18:22:29 +0100alfiee(~alfiee@user/alfiee) (Ping timeout: 265 seconds)
2025-02-11 18:23:04 +0100JeremyB99(~JeremyB99@2607:fb90:a2d0:c4aa:65e5:970a:4d0b:8e34)
2025-02-11 18:23:23 +0100JeremyB99(~JeremyB99@2607:fb90:a2d0:c4aa:65e5:970a:4d0b:8e34) (Read error: Connection reset by peer)
2025-02-11 18:24:04 +0100ash3en(~Thunderbi@2a03:7846:b6eb:101:93ac:a90a:da67:f207) (Quit: ash3en)
2025-02-11 18:24:26 +0100Square2(~Square4@user/square) (Ping timeout: 252 seconds)
2025-02-11 18:24:44 +0100urdh_(~urdh@user/urdh) urdh
2025-02-11 18:25:54 +0100urdh(~urdh@user/urdh) (Ping timeout: 268 seconds)
2025-02-11 18:25:54 +0100urdh_urdh
2025-02-11 18:31:36 +0100JeremyB99(~JeremyB99@pal-210-106-73.itap.purdue.edu)
2025-02-11 18:34:49 +0100wootehfoot(~wootehfoo@user/wootehfoot) (Read error: Connection reset by peer)
2025-02-11 18:35:05 +0100JeremyB99(~JeremyB99@pal-210-106-73.itap.purdue.edu) (Read error: Connection reset by peer)
2025-02-11 18:35:42 +0100wootehfoot(~wootehfoo@user/wootehfoot) wootehfoot
2025-02-11 18:36:18 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-02-11 18:39:53 +0100JeremyB99(~JeremyB99@pal-210-106-73.itap.purdue.edu)
2025-02-11 18:42:07 +0100JeremyB99(~JeremyB99@pal-210-106-73.itap.purdue.edu) (Read error: Connection reset by peer)
2025-02-11 18:43:33 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 276 seconds)
2025-02-11 18:44:08 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-02-11 18:49:44 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds)
2025-02-11 18:51:12 +0100polykernel(~polykerne@user/polykernel) (Ping timeout: 252 seconds)
2025-02-11 18:51:26 +0100polykernel(~polykerne@user/polykernel) polykernel
2025-02-11 18:52:35 +0100JeremyB99(~JeremyB99@pal-210-106-73.itap.purdue.edu)
2025-02-11 18:53:12 +0100sord937(~sord937@gateway/tor-sasl/sord937) (Quit: sord937)
2025-02-11 18:58:49 +0100JeremyB99(~JeremyB99@pal-210-106-73.itap.purdue.edu) (Read error: Connection reset by peer)
2025-02-11 18:59:14 +0100lockywolf(~lockywolf@coconut.lockywolf.net) (Ping timeout: 248 seconds)
2025-02-11 18:59:38 +0100misterfish(~misterfis@84.53.85.146) (Ping timeout: 252 seconds)
2025-02-11 19:05:23 +0100lxsameer(~lxsameer@Serene/lxsameer) (Ping timeout: 245 seconds)
2025-02-11 19:05:47 +0100tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2025-02-11 19:05:59 +0100alfiee(~alfiee@user/alfiee) alfiee
2025-02-11 19:07:31 +0100Googulator(~Googulato@2a01-036d-0106-4074-758c-12a1-cbb4-05eb.pool6.digikabel.hu) (Quit: Client closed)
2025-02-11 19:07:47 +0100Googulator(~Googulato@2a01-036d-0106-4074-758c-12a1-cbb4-05eb.pool6.digikabel.hu)
2025-02-11 19:08:50 +0100JeremyB99(~JeremyB99@pal-210-106-73.itap.purdue.edu)
2025-02-11 19:10:12 +0100alfiee(~alfiee@user/alfiee) (Ping timeout: 244 seconds)
2025-02-11 19:10:15 +0100Anushka(~Anushka@101.0.63.190) (Quit: Client closed)
2025-02-11 19:11:15 +0100JeremyB99(~JeremyB99@pal-210-106-73.itap.purdue.edu) (Read error: Connection reset by peer)
2025-02-11 19:11:35 +0100justsomeguy(~justsomeg@user/justsomeguy) justsomeguy
2025-02-11 19:12:37 +0100 <justsomeguy> Can someone help me understand what Traversable is all about?
2025-02-11 19:14:37 +0100 <ncf> justsomeguy: did you see https://wiki.haskell.org/Typeclassopedia#Traversable ?
2025-02-11 19:15:12 +0100 <ncf> or https://en.wikibooks.org/wiki/Haskell/Traversable
2025-02-11 19:16:44 +0100jespada(~jespada@2800:a4:2230:3e00:3974:82a3:7f20:1404) (Quit: My Mac has gone to sleep. ZZZzzz…)
2025-02-11 19:16:54 +0100tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
2025-02-11 19:17:49 +0100lockywolf(~lockywolf@coconut.lockywolf.net) lockywolf
2025-02-11 19:18:05 +0100 <EvanR> a generalization of mapM
2025-02-11 19:20:19 +0100Smiles(uid551636@id-551636.lymington.irccloud.com) (Quit: Connection closed for inactivity)
2025-02-11 19:21:14 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-02-11 19:21:46 +0100 <monochrom> If it helps: traverse is impure fmap.
2025-02-11 19:22:37 +0100JeremyB99(~JeremyB99@172.59.98.128)
2025-02-11 19:23:32 +0100 <justsomeguy> At this point the examples make sense, but I'm not sure how they evaluate.
2025-02-11 19:23:46 +0100 <justsomeguy> Maybe I just have to write it out on paper.
2025-02-11 19:23:50 +0100TheCoffeMaker(~TheCoffeM@user/thecoffemaker) (Remote host closed the connection)
2025-02-11 19:24:09 +0100JeremyB99(~JeremyB99@172.59.98.128) (Remote host closed the connection)
2025-02-11 19:24:18 +0100JeremyB99(~JeremyB99@2607:fb90:d362:29:704c:ca03:6a71:2d6c)
2025-02-11 19:24:48 +0100lisbeths(uid135845@id-135845.lymington.irccloud.com) (Quit: Connection closed for inactivity)
2025-02-11 19:25:40 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds)
2025-02-11 19:25:48 +0100ljdarj(~Thunderbi@user/ljdarj) ljdarj
2025-02-11 19:26:32 +0100 <monochrom> If I'm allowed to illustrate sequence instead: sequence [foo, goo, hoo] = liftA2 (:) foo (liftA2 (:) goo (liftA2 (:) hoo (pure [])))))
2025-02-11 19:26:52 +0100 <monochrom> It may be useful motivate why one would want it.
2025-02-11 19:27:04 +0100peterbecich(~Thunderbi@syn-047-229-123-186.res.spectrum.com) peterbecich
2025-02-11 19:27:34 +0100 <monochrom> Remember how you can DIY liftA10, liftA11, liftA12 etc by pure and a lot of liftA2?
2025-02-11 19:29:13 +0100 <haskellbridge> <alexfmpe> Yeah, I'd say sequence is basically folding with applicative, but with a fold function that preserves the original structure.
2025-02-11 19:29:15 +0100 <haskellbridge> Traverse is fmap followed by sequence, so it's kind of foldMap with applicative
2025-02-11 19:29:22 +0100 <monochrom> You can then go ambitious and say "but liftA10 is always 10. can I make it variable length?". Answer: sequence accepts an arbitary list so it's variable length. (The compromise is that we only have homogeneous lists, so the input list has to be homogeneous, whereas liftA10 is OK with 10 different types.)
2025-02-11 19:29:25 +0100JeremyB99(~JeremyB99@2607:fb90:d362:29:704c:ca03:6a71:2d6c) (Ping timeout: 268 seconds)
2025-02-11 19:29:32 +0100 <haskellbridge> <alexfmpe> * suitable combining
2025-02-11 19:29:41 +0100 <monochrom> If you accept sequence, then traverse is just sequence and fmap.
2025-02-11 19:30:30 +0100jespada(~jespada@2800:a4:2230:3e00:3974:82a3:7f20:1404) jespada
2025-02-11 19:30:35 +0100 <EvanR> :t sequence
2025-02-11 19:30:36 +0100 <lambdabot> (Traversable t, Monad m) => t (m a) -> m (t a)
2025-02-11 19:30:41 +0100 <EvanR> :t sequenceA
2025-02-11 19:30:42 +0100 <lambdabot> (Traversable t, Applicative f) => t (f a) -> f (t a)
2025-02-11 19:30:52 +0100 <haskellbridge> <alexfmpe> * only works when there's
2025-02-11 19:30:53 +0100 <monochrom> OK yeah sequenceA.
2025-02-11 19:31:30 +0100TheCoffeMaker(~TheCoffeM@user/thecoffemaker) TheCoffeMaker
2025-02-11 19:31:44 +0100 <EvanR> the next in the pattern would be something of the form (Traversable t, Functor f) => t (f a) -> f (t a)
2025-02-11 19:32:13 +0100 <EvanR> haskell hasn't figured this one out yet
2025-02-11 19:32:33 +0100 <monochrom> Application: Suppose you want a procedure foo such that foo n reads n lines from stdin and return the list of those n lines. Then it is: sequenceA (replicate n getLine)
2025-02-11 19:32:37 +0100 <tomsmeding> I'm not sure if a "pattern" is the right way to look at those :P
2025-02-11 19:32:41 +0100 <EvanR> lol
2025-02-11 19:33:01 +0100 <monochrom> perhaps s/pattern/generalization/
2025-02-11 19:33:34 +0100 <monochrom> But I think weakening to functor is impossible.
2025-02-11 19:33:41 +0100 <euouae> what's a profunctor?
2025-02-11 19:34:03 +0100 <EvanR> do you know what a contravariant functor is
2025-02-11 19:34:18 +0100 <euouae> yes
2025-02-11 19:34:59 +0100 <EvanR> profunctor class is for types which are functor in one parameter and contravariant functor in the other
2025-02-11 19:35:42 +0100 <euouae> oh I see. hm.. I'll keep it in mind when I encounter it
2025-02-11 19:35:58 +0100 <ncf> (->) is the canonical example
2025-02-11 19:36:40 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-02-11 19:37:09 +0100 <monochrom> lambda the ultimate goto. (->) the ultimate instance.
2025-02-11 19:37:30 +0100 <EvanR> (A -> a, A <- b)
2025-02-11 19:39:54 +0100Lord_of_Life_(~Lord@user/lord-of-life/x-2819915) Lord_of_Life
2025-02-11 19:40:48 +0100Lord_of_Life(~Lord@user/lord-of-life/x-2819915) (Ping timeout: 252 seconds)
2025-02-11 19:41:06 +0100Guest93(~Guest93@pool-96-250-224-152.nycmny.fios.verizon.net)
2025-02-11 19:41:18 +0100Lord_of_Life_Lord_of_Life
2025-02-11 19:41:21 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 248 seconds)
2025-02-11 19:42:01 +0100Guest93(~Guest93@pool-96-250-224-152.nycmny.fios.verizon.net) (Client Quit)
2025-02-11 19:44:48 +0100mniip(mniip@libera/staff/mniip) (Quit: This page is intentionally left blank)
2025-02-11 19:46:41 +0100peterbecich(~Thunderbi@syn-047-229-123-186.res.spectrum.com) (Ping timeout: 268 seconds)
2025-02-11 19:46:45 +0100 <euouae> Thanks
2025-02-11 19:49:01 +0100euphores(~SASL_euph@user/euphores) (Quit: Leaving.)
2025-02-11 19:52:00 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-02-11 19:54:24 +0100akegalj(~akegalj@168-206.dsl.iskon.hr) (Quit: leaving)
2025-02-11 19:54:43 +0100alfiee(~alfiee@user/alfiee) alfiee
2025-02-11 19:55:03 +0100euphores(~SASL_euph@user/euphores) euphores
2025-02-11 19:56:34 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 260 seconds)
2025-02-11 19:59:09 +0100alfiee(~alfiee@user/alfiee) (Ping timeout: 265 seconds)
2025-02-11 20:04:06 +0100sprotte24(~sprotte24@p200300d16f05dc00448362a75cf21d07.dip0.t-ipconnect.de)
2025-02-11 20:05:56 +0100notzmv(~umar@user/notzmv) notzmv
2025-02-11 20:07:24 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-02-11 20:11:52 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds)
2025-02-11 20:17:29 +0100 <euouae> When I see something like `base:Data.Semigroup.Internal.Endo [a]` in the output of an exported type with `:t`, what exactly does it mean?
2025-02-11 20:18:01 +0100 <EvanR> Endo [a]
2025-02-11 20:18:06 +0100 <euouae> I know it's some constriction of some kind placed on [a], but it seems private/implementation?
2025-02-11 20:18:09 +0100 <euouae> Is it just using GHC features?
2025-02-11 20:18:10 +0100 <EvanR> just more specific
2025-02-11 20:18:36 +0100 <euouae> Oh I'm not worried about what this specific type means, just why would it be .Internal exposed to the user of the API
2025-02-11 20:18:38 +0100 <EvanR> Endo a is a newtype to add Monoid support for a -> a
2025-02-11 20:18:46 +0100 <int-e> you get it from importing Data.Semigroup or Data.Monoid
2025-02-11 20:19:09 +0100 <EvanR> modules can reexport stuff defined in an internal module
2025-02-11 20:19:31 +0100 <euouae> But isn't it finnicky to re export internal stuff? You're tied to something that can blow up at any time
2025-02-11 20:19:42 +0100 <EvanR> and you never would have known about it if it wasn't for that pesky verbose output and their dog!
2025-02-11 20:20:00 +0100 <euouae> lol
2025-02-11 20:20:07 +0100 <mauke> euouae: ?? it's your own implementation details
2025-02-11 20:20:09 +0100 <EvanR> well whatever is exported is by definition the public API
2025-02-11 20:20:11 +0100 <EvanR> wherever it came from
2025-02-11 20:20:20 +0100 <mauke> you're allowed to depend on yourself
2025-02-11 20:20:43 +0100 <int-e> Endo [a] is usually used as a difference list, to avoid a quadratic slowdown when concatenating many lists
2025-02-11 20:20:55 +0100 <euouae> Yeah this is a fold
2025-02-11 20:20:59 +0100machinedgod(~machinedg@d108-173-18-100.abhsia.telus.net) machinedgod
2025-02-11 20:21:06 +0100 <euouae> I guess that's the optimization
2025-02-11 20:21:40 +0100 <euouae> It's just that... I guess what I'm asking is, if you're a library writer (like lens here) and you dig into GHC internal modules, are you committing a sin? Perhaps GHC documentation says this is okay?
2025-02-11 20:22:16 +0100 <euouae> I understand that there are be optimizations in lens that are GHC specific, but I hadn't seen anything before, maybe this is my first exposure
2025-02-11 20:22:45 +0100 <int-e> GHC is the dominant implementation anyway.
2025-02-11 20:22:48 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-02-11 20:22:53 +0100 <mauke> wait, are you saying lens is using ghc internal modules?
2025-02-11 20:23:07 +0100 <int-e> I'd be surprised if it didn't
2025-02-11 20:23:26 +0100 <mauke> because https://hackage.haskell.org/package/base-4.21.0.0/docs/Data-Monoid.html#t:Endo is public
2025-02-11 20:23:41 +0100notzmv(~umar@user/notzmv) (Ping timeout: 268 seconds)
2025-02-11 20:23:49 +0100 <int-e> But yeah I think those two questions are not connected.
2025-02-11 20:23:55 +0100 <mauke> it's just originally defined in GHC.Internal.Data.Semigroup.Internal
2025-02-11 20:24:09 +0100 <mauke> but Data.Monoid re-exports it
2025-02-11 20:24:31 +0100 <int-e> (It's slightly unfortunate that ghci doesn't tell you where to import Endo from but that information is hard to track.)
2025-02-11 20:24:46 +0100 <euouae> Oh, I see...
2025-02-11 20:24:55 +0100 <euouae> mauke, I didn't realize it was a public type!
2025-02-11 20:25:05 +0100 <euouae> I just went with what :t told me
2025-02-11 20:25:14 +0100 <int-e> euouae: note how my first answer was two modules that you can import it from, maybe you missed it
2025-02-11 20:25:46 +0100 <euouae> Yeah but you said Endo a, and I thought maybe my type was different
2025-02-11 20:25:58 +0100 <euouae> I thought Endo might've been public but that base:...Internal thing might've been an optimization
2025-02-11 20:26:07 +0100 <int-e> No, it was just the unqualified version of the same thing
2025-02-11 20:26:32 +0100 <euouae> right, makes sense
2025-02-11 20:26:35 +0100JeremyB99(~JeremyB99@2607:ac80:407:7:faad:86de:6310:fa61)
2025-02-11 20:27:19 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 260 seconds)
2025-02-11 20:30:01 +0100JeremyB99(~JeremyB99@2607:ac80:407:7:faad:86de:6310:fa61) (Remote host closed the connection)