2021/11/22

2021-11-22 00:03:03 +0100bitdex_(~bitdex@gateway/tor-sasl/bitdex) (Ping timeout: 276 seconds)
2021-11-22 00:03:38 +0100zincy_(~zincy@2a00:23c8:970c:4801:78f3:43f3:fd48:5ac3) (Remote host closed the connection)
2021-11-22 00:04:17 +0100f-a(f2a@f2a.jujube.ircnow.org)
2021-11-22 00:04:45 +0100bitdex_(~bitdex@gateway/tor-sasl/bitdex)
2021-11-22 00:06:13 +0100raehik1(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
2021-11-22 00:08:27 +0100raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 256 seconds)
2021-11-22 00:08:57 +0100gehmehgeh(~user@user/gehmehgeh) (Quit: Leaving)
2021-11-22 00:14:07 +0100haritz(~hrtz@user/haritz) (Ping timeout: 256 seconds)
2021-11-22 00:15:06 +0100max22-(~maxime@2a01cb0883359800ebf1dbb598d360cc.ipv6.abo.wanadoo.fr) (Quit: Leaving)
2021-11-22 00:15:09 +0100 <unit73e> did the SDL2 animation example base on time. next will do movement. proper movement, not that choppy lazyfoo example.
2021-11-22 00:15:32 +0100 <unit73e> with colision that's enough for a simple game
2021-11-22 00:16:02 +0100Lycurgus(~juan@98.4.112.204)
2021-11-22 00:16:13 +0100 <unit73e> It's taking some time but I'll finish this
2021-11-22 00:16:19 +0100Tuplanolla(~Tuplanoll@91-159-69-50.elisa-laajakaista.fi) (Quit: Leaving.)
2021-11-22 00:16:23 +0100alx741(~alx741@186.178.108.219) (Ping timeout: 256 seconds)
2021-11-22 00:16:31 +0100 <unit73e> I mean this here: https://gitlab.com/unit73e/sdl2-examples
2021-11-22 00:16:43 +0100 <Lycurgus> what machine lang coders could/can say is that nothing is getting between them and the iron
2021-11-22 00:17:23 +0100 <unit73e> except what's between the chair and keyboard :p
2021-11-22 00:17:23 +0100 <dolio> They can't say that, though.
2021-11-22 00:17:45 +0100 <dolio> Unless they buy a CPU without microcode or something.
2021-11-22 00:18:15 +0100 <Lycurgus> in the day, microcoded arches weren't that common
2021-11-22 00:18:45 +0100 <dolio> I mean, people will still say it anyway.
2021-11-22 00:19:08 +0100haritz(~hrtz@2a02:8010:65b5:0:6009:6384:e3cb:2220)
2021-11-22 00:19:08 +0100haritz(~hrtz@2a02:8010:65b5:0:6009:6384:e3cb:2220) (Changing host)
2021-11-22 00:19:08 +0100haritz(~hrtz@user/haritz)
2021-11-22 00:19:15 +0100 <unit73e> if you're talking about why you like Haskell that's because I don't like to do maintenance and Haskell encourages programmers do avoid doing some of the silly things that will later make the app unmaintainable
2021-11-22 00:19:36 +0100 <Lycurgus> also there were user microprogrammable archees
2021-11-22 00:19:51 +0100 <Lycurgus> only one major one though
2021-11-22 00:19:53 +0100nitrix(~nitrix@user/nitrix) (Leaving)
2021-11-22 00:20:19 +0100euouae(~euouae@user/euouae) (Quit: )
2021-11-22 00:20:28 +0100shailangsa(~shailangs@host86-186-133-114.range86-186.btcentralplus.com)
2021-11-22 00:21:46 +0100ees(~user@pool-108-18-30-46.washdc.fios.verizon.net) (Ping timeout: 260 seconds)
2021-11-22 00:21:49 +0100 <unit73e> and then java/c/python/c# devs say, oh muh mutable objects are so much easier to work with, yes but it's also a lot easier to mess your entire program with that
2021-11-22 00:22:50 +0100 <Lycurgus> also the biggest microcoded arch, 360/370 the instruction set in effect was the machine/iron
2021-11-22 00:24:34 +0100 <Lycurgus> there's a lot of free stuff from haskell but generally you have no idea how it actually at the lowest level works
2021-11-22 00:25:25 +0100 <Lycurgus> relatively speaking, it's a faith
2021-11-22 00:26:32 +0100 <unit73e> does a driver have to care how the gasoline electrons collide with each other when the engine starts?
2021-11-22 00:26:46 +0100 <unit73e> it's the same for high level languages
2021-11-22 00:27:49 +0100 <Lycurgus> what you actually have to be believer of though is the pure mathematics is the only right model of computation
2021-11-22 00:27:52 +0100 <geekosaur> I'm inclined to agree with that. Even for C I'm placing my faith in the compiler
2021-11-22 00:27:59 +0100 <geekosaur> enh
2021-11-22 00:28:05 +0100f-a(f2a@f2a.jujube.ircnow.org) ()
2021-11-22 00:28:10 +0100 <geekosaur> Haskell is rather far from pure maths
2021-11-22 00:28:21 +0100 <geekosaur> and I never use it as if it were
2021-11-22 00:29:09 +0100 <geekosaur> something loike numeric-prelude gets you much closer to pure mathematics as computing substrate. you can go count how many packages use it at packdeps.haskellers.com/reverse
2021-11-22 00:29:53 +0100 <Lycurgus> i said that was the notional conceit, not the claimed realization
2021-11-22 00:30:02 +0100 <geekosaur> Monad is *inspired by* category theory. it doesn't require you to know CT to use it, or even to develop your own monads
2021-11-22 00:30:12 +0100 <Lycurgus> like communicating objects before it
2021-11-22 00:31:34 +0100 <smunix> unit73e, nice! What would it take to add nix to it? It may help remove the `Requirements` section
2021-11-22 00:31:43 +0100 <Lycurgus> well they were coeval igess, but then OO got stale and corporatized
2021-11-22 00:33:55 +0100cosimone(~user@2001:b07:ae5:db26:a7aa:8027:6b4e:2fb3) (Ping timeout: 250 seconds)
2021-11-22 00:34:30 +0100 <unit73e> smunix, nix as in nixos? I put SDL2 apps/plugins required to be generic for any OS. Should be easy enough for anyone to figure out, I think.
2021-11-22 00:34:43 +0100 <EvanR> unit73e, see also #haskell-game xD
2021-11-22 00:35:06 +0100 <unit73e> there's a specific haskell game server? lol
2021-11-22 00:35:07 +0100 <unit73e> thanks
2021-11-22 00:35:20 +0100 <EvanR> channel
2021-11-22 00:35:25 +0100 <EvanR> just a*
2021-11-22 00:35:28 +0100 <geekosaur> "room" if you prefer
2021-11-22 00:35:38 +0100 <unit73e> yes channel, I mix a lot because of discord and friends :\
2021-11-22 00:35:57 +0100 <EvanR> fr--- libera is the server lol
2021-11-22 00:36:02 +0100 <unit73e> yeah
2021-11-22 00:36:16 +0100 <EvanR> well, network I guess
2021-11-22 00:36:26 +0100 <unit73e> and hashtags used to mean channels but twitter ruined that lol
2021-11-22 00:36:46 +0100mimmy_(~mimmy@2607:fea8:6e0:7f90:7c3d:8173:a37e:d50a)
2021-11-22 00:36:51 +0100 <Sqaure> Is there some easy way to query Aeson "Value" type. Im thinking lens like getters if you will.
2021-11-22 00:38:08 +0100Topsi(~Tobias@dyndsl-037-138-064-016.ewe-ip-backbone.de)
2021-11-22 00:38:20 +0100 <unit73e> ? you have to give a type to Aeson, not the other way around, right?
2021-11-22 00:38:59 +0100stiell(~stiell@gateway/tor-sasl/stiell) (Remote host closed the connection)
2021-11-22 00:39:29 +0100 <Sqaure> Aeson is the lib that defines a tree like structure called Value. Basically just typed json. I see now there is lens-aeson
2021-11-22 00:40:05 +0100 <seanparsons> Sqaure: I can definitely recommend lens-aeson, I often use it to drill into instances of Value.
2021-11-22 00:40:30 +0100 <Sqaure> seanparsons, ah ok. I guess I'll roll with that then
2021-11-22 00:41:31 +0100mimmy_(~mimmy@2607:fea8:6e0:7f90:7c3d:8173:a37e:d50a) (Ping timeout: 250 seconds)
2021-11-22 00:44:17 +0100pfurla(~pfurla@2804:14d:5c81:4104:d09a:3c35:dab9:95ad)
2021-11-22 00:46:41 +0100Lycurgus(~juan@98.4.112.204) (Quit: Exeunt)
2021-11-22 00:47:01 +0100Jing(~hedgehog@2604:a840:3::1094) (Remote host closed the connection)
2021-11-22 00:47:22 +0100vysn(~vysn@user/vysn) (Ping timeout: 260 seconds)
2021-11-22 00:47:43 +0100Jing(~hedgehog@2604:a840:3::1094)
2021-11-22 00:47:57 +0100Feuermagier(~Feuermagi@user/feuermagier) (Remote host closed the connection)
2021-11-22 00:48:23 +0100nautical(~nautical@2601:602:900:1630::396f)
2021-11-22 00:50:44 +0100emf(~emf@2620:10d:c090:400::5:5322)
2021-11-22 00:50:54 +0100zincy_(~zincy@2a00:23c8:970c:4801:78f3:43f3:fd48:5ac3)
2021-11-22 00:53:31 +0100Feuermagier(~Feuermagi@user/feuermagier)
2021-11-22 00:55:23 +0100zincy_(~zincy@2a00:23c8:970c:4801:78f3:43f3:fd48:5ac3) (Ping timeout: 250 seconds)
2021-11-22 00:55:33 +0100myShoggoth(~myShoggot@97-120-85-195.ptld.qwest.net) (Read error: Connection reset by peer)
2021-11-22 00:55:51 +0100myShoggoth(~myShoggot@97-120-85-195.ptld.qwest.net)
2021-11-22 00:56:46 +0100emf(~emf@2620:10d:c090:400::5:5322) (Quit: emf)
2021-11-22 01:00:59 +0100alx741(~alx741@186.178.108.219)
2021-11-22 01:01:09 +0100pfurla(~pfurla@2804:14d:5c81:4104:d09a:3c35:dab9:95ad) (Quit: gone to sleep. ZZZzzz…)
2021-11-22 01:01:36 +0100lavaman(~lavaman@98.38.249.169)
2021-11-22 01:01:55 +0100mmhat(~mmh@55d438c0.access.ecotel.net) (Quit: WeeChat 3.3)
2021-11-22 01:02:24 +0100eggplantade(~Eggplanta@2600:1700:bef1:5e10:b4a8:9431:5c1:c0e0) (Remote host closed the connection)
2021-11-22 01:04:19 +0100Topsi1(~Tobias@dyndsl-037-138-064-016.ewe-ip-backbone.de)
2021-11-22 01:04:25 +0100 <dibblego> or waargonaut, but it's not aeson
2021-11-22 01:04:31 +0100 <dibblego> also, g'day seanparsons
2021-11-22 01:04:39 +0100retroid_(~retro@97e2ba2e.skybroadband.com)
2021-11-22 01:05:07 +0100retro_(~retro@97e2ba2e.skybroadband.com) (Ping timeout: 268 seconds)
2021-11-22 01:05:19 +0100Topsi2(~Tobias@dyndsl-037-138-064-016.ewe-ip-backbone.de)
2021-11-22 01:05:34 +0100myShoggoth(~myShoggot@97-120-85-195.ptld.qwest.net) (Ping timeout: 260 seconds)
2021-11-22 01:06:02 +0100lavaman(~lavaman@98.38.249.169) (Ping timeout: 260 seconds)
2021-11-22 01:07:58 +0100Topsi(~Tobias@dyndsl-037-138-064-016.ewe-ip-backbone.de) (Ping timeout: 260 seconds)
2021-11-22 01:08:54 +0100Topsi1(~Tobias@dyndsl-037-138-064-016.ewe-ip-backbone.de) (Ping timeout: 260 seconds)
2021-11-22 01:10:34 +0100 <Axman6> lens-aeson plus the uniplate stuff in the lens library lets you do some super powerful stuff with aeson Values - need to find all the URLs in strings anywhere? Bam, it's like 100 characters to do that
2021-11-22 01:13:35 +0100jinsun(~quassel@user/jinsun) (Ping timeout: 250 seconds)
2021-11-22 01:19:46 +0100jakalx(~jakalx@base.jakalx.net)
2021-11-22 01:24:02 +0100jess(~jess@libera/staff/jess) ()
2021-11-22 01:25:35 +0100Midjak(~Midjak@82-65-111-221.subs.proxad.net) (Quit: This computer has gone to sleep)
2021-11-22 01:26:42 +0100tabemann(~tabemann@172-13-49-137.lightspeed.milwwi.sbcglobal.net) (Quit: Leaving)
2021-11-22 01:32:44 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-11-22 01:34:08 +0100Lord_of_Life(~Lord@user/lord-of-life/x-2819915) (Ping timeout: 246 seconds)
2021-11-22 01:34:27 +0100Lord_of_Life(~Lord@user/lord-of-life/x-2819915)
2021-11-22 01:35:01 +0100sub0(~bc8165b6@217.29.117.252)
2021-11-22 01:37:09 +0100 <sub0> hi. what is the equivalent of this in haskell? TYPE *p = malloc(sizeof *p); cfunc(p);
2021-11-22 01:38:03 +0100 <sub0> closest I could get is this, but what if it was a pointer to a type where I can't or don't want to specify some dummy value: withArray [1] $ \p -> cfunc( p)
2021-11-22 01:41:04 +0100meinside(uid24933@id-24933.helmsley.irccloud.com)
2021-11-22 01:41:19 +0100 <geekosaur> @index alloca
2021-11-22 01:41:19 +0100 <lambdabot> Foreign.Marshal.Alloc, Foreign.Marshal, Foreign, Foreign.Safe, Foreign.Marshal.Safe
2021-11-22 01:42:07 +0100pfurla(~pfurla@2804:14d:5c81:4104:d09a:3c35:dab9:95ad)
2021-11-22 01:42:20 +0100 <geekosaur> there is also malloc but you'll really want to free it in a related value's finalizer
2021-11-22 01:45:38 +0100 <sub0> thanks, works nicely
2021-11-22 01:47:51 +0100 <sub0> alloca $ \p -> do cfunc p; peek p
2021-11-22 01:48:17 +0100mimmy_(~mimmy@2607:fea8:6e0:7f90:7c3d:8173:a37e:d50a)
2021-11-22 01:52:10 +0100 <jle`> any guide on how to migrate template haskell to the ghc 9.0 version that uses 'Code' for typed quotations?
2021-11-22 01:53:14 +0100mimmy_(~mimmy@2607:fea8:6e0:7f90:7c3d:8173:a37e:d50a) (Ping timeout: 268 seconds)
2021-11-22 01:53:58 +0100unit73e(~emanuel@2001:818:e8dd:7c00:32b5:c2ff:fe6b:5291) (Quit: Leaving)
2021-11-22 01:54:58 +0100yauhsien(~yauhsien@118-167-40-224.dynamic-ip.hinet.net)
2021-11-22 01:55:18 +0100 <jle`> oh i just needed to add a newtype wrapper in a careful place
2021-11-22 01:58:50 +0100Gurkenglas(~Gurkengla@dslb-002-203-144-204.002.203.pools.vodafone-ip.de) (Ping timeout: 260 seconds)
2021-11-22 01:59:08 +0100jmorris(uid433911@id-433911.hampstead.irccloud.com) (Quit: Connection closed for inactivity)
2021-11-22 01:59:31 +0100yauhsien(~yauhsien@118-167-40-224.dynamic-ip.hinet.net) (Ping timeout: 256 seconds)
2021-11-22 02:02:53 +0100eggplantade(~Eggplanta@2600:1700:bef1:5e10:b4a8:9431:5c1:c0e0)
2021-11-22 02:07:14 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 260 seconds)
2021-11-22 02:07:38 +0100eggplantade(~Eggplanta@2600:1700:bef1:5e10:b4a8:9431:5c1:c0e0) (Ping timeout: 260 seconds)
2021-11-22 02:10:17 +0100 <Axman6> Be wery wery careful, we're huntin' newtypes
2021-11-22 02:11:25 +0100albet70(~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection)
2021-11-22 02:13:35 +0100eggplantade(~Eggplanta@2600:1700:bef1:5e10:b4a8:9431:5c1:c0e0)
2021-11-22 02:15:53 +0100helby(helby@alpine/moderator/helby) ()
2021-11-22 02:17:32 +0100albet70(~xxx@2400:8902::f03c:92ff:fe60:98d8)
2021-11-22 02:19:01 +0100mvk(~mvk@2607:fea8:5cc1:fa00::4702)
2021-11-22 02:26:57 +0100Feuermagier(~Feuermagi@user/feuermagier) (Remote host closed the connection)
2021-11-22 02:27:16 +0100Feuermagier(~Feuermagi@user/feuermagier)
2021-11-22 02:28:00 +0100cjb(~cjb@user/cjb) (Ping timeout: 260 seconds)
2021-11-22 02:29:57 +0100pretty_dumm_guy(trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) (Quit: WeeChat 3.3)
2021-11-22 02:31:21 +0100eggplantade(~Eggplanta@2600:1700:bef1:5e10:b4a8:9431:5c1:c0e0) (Remote host closed the connection)
2021-11-22 02:31:39 +0100cjb(~cjb@user/cjb)
2021-11-22 02:37:20 +0100DNH(~DNH@2a02:8108:1100:16d8:14a5:84da:2caa:2854) (Quit: Textual IRC Client: www.textualapp.com)
2021-11-22 02:38:27 +0100burnsidesLlama(~burnsides@dhcp168-012.wadham.ox.ac.uk) (Remote host closed the connection)
2021-11-22 02:39:17 +0100pfurla(~pfurla@2804:14d:5c81:4104:d09a:3c35:dab9:95ad) (Quit: gone to sleep. ZZZzzz…)
2021-11-22 02:41:59 +0100mimmy_(~mimmy@2607:fea8:6e0:7f90:d9be:afe3:4e5b:d63)
2021-11-22 02:47:19 +0100pfurla(~pfurla@2804:14d:5c81:4104:d41b:9326:c4d8:9f2a)
2021-11-22 02:56:42 +0100mimmy(~mimmy@2607:fea8:6e0:7f90:9c35:bed7:e2c:e900)
2021-11-22 02:56:45 +0100machinedgod(~machinedg@135-23-192-217.cpe.pppoe.ca) (Ping timeout: 268 seconds)
2021-11-22 02:56:53 +0100mimmy(~mimmy@2607:fea8:6e0:7f90:9c35:bed7:e2c:e900) (Client Quit)
2021-11-22 02:58:13 +0100mimmy_(~mimmy@2607:fea8:6e0:7f90:d9be:afe3:4e5b:d63) (Ping timeout: 250 seconds)
2021-11-22 03:00:59 +0100stiell(~stiell@gateway/tor-sasl/stiell)
2021-11-22 03:06:18 +0100eggplantade(~Eggplanta@2600:1700:bef1:5e10:b4a8:9431:5c1:c0e0)
2021-11-22 03:08:27 +0100alzgh(~alzgh@user/alzgh) (Remote host closed the connection)
2021-11-22 03:16:39 +0100jmorris(uid433911@id-433911.hampstead.irccloud.com)
2021-11-22 03:20:56 +0100 <Axman6> @hoogle Lens s t a b -> (a -> m b) -> s -> m t
2021-11-22 03:20:57 +0100 <lambdabot> No results found
2021-11-22 03:22:37 +0100tabemann(~tabemann@172-13-49-137.lightspeed.milwwi.sbcglobal.net)
2021-11-22 03:23:34 +0100 <Axman6> there's definitely a lensy thing for that right?
2021-11-22 03:24:19 +0100 <awpr> > _1 print (2, 4)
2021-11-22 03:24:20 +0100 <lambdabot> <IO ((),Integer)>
2021-11-22 03:24:39 +0100 <awpr> the lens is already that result type to begin with (for any Functor m)
2021-11-22 03:25:01 +0100 <awpr> there might be a function `traverseOf` for that, but it's just `id`
2021-11-22 03:28:37 +0100geekosaur(~geekosaur@xmonad/geekosaur) (Remote host closed the connection)
2021-11-22 03:31:43 +0100geekosaur(~geekosaur@xmonad/geekosaur)
2021-11-22 03:31:43 +0100 <Boarders_> do any of you know in brick how I can add a background colour behind each of the widgets (not changing any of the widget colours?
2021-11-22 03:31:58 +0100 <Boarders_> it seems like the drawApp thing should allow me to do it with layering but I can't figure it out
2021-11-22 03:33:09 +0100 <Boarders_> e.g. in this snake example: https://samtay.github.io/posts/introduction-to-brick how would one render the area outside of the boxes as another colour?
2021-11-22 03:34:03 +0100jackhillKM4MBG
2021-11-22 03:34:33 +0100ceedon(~ceedon@h224.77.91.75.dynamic.ip.windstream.net)
2021-11-22 03:37:08 +0100 <sm> Boarders_: do something with the outermost/largest widget
2021-11-22 03:37:45 +0100 <sm> there is a `margin` function that puts a margin of a certain colour
2021-11-22 03:38:15 +0100 <sm> I guess you want it over the full screen, showing through transparent foreground widgets ?
2021-11-22 03:38:45 +0100 <Boarders_> yes, exactly that last thing
2021-11-22 03:39:21 +0100 <Boarders_> by outermost/largest, do you mean the last widget returned in appDraw?
2021-11-22 03:41:11 +0100 <Boarders_> ah no, I think that is something to do with buffering
2021-11-22 03:42:11 +0100 <sm> Boarders_: I don't see anything about transparency in brick or vty, unfortunately
2021-11-22 03:42:39 +0100ceedon(~ceedon@h224.77.91.75.dynamic.ip.windstream.net) (Ping timeout: 256 seconds)
2021-11-22 03:42:57 +0100 <sm> it might be in brick's issue tracker. If not I guess you have to implement it yourself (make a custom widget that combines your layers)
2021-11-22 03:43:35 +0100xff0x(~xff0x@2001:1a81:526f:1d00:d375:c485:c62f:a6f6) (Ping timeout: 264 seconds)
2021-11-22 03:43:42 +0100 <Boarders_> with the last option, do you make the widget and then just give it an attribute with the relevant background colour?
2021-11-22 03:43:47 +0100 <sm> ansi-terminal-game is a brick-like thing where transparency is easy, just FYI
2021-11-22 03:44:22 +0100 <Boarders_> thanks, I'll give that a look
2021-11-22 03:44:42 +0100 <sm> Boarders_: a widget that fills the window and within itself implements the painter's algorithm or something
2021-11-22 03:45:04 +0100xff0x(~xff0x@2001:1a81:52ae:a700:ef5b:bdbe:c8a4:8fd2)
2021-11-22 03:45:04 +0100 <sm> but I would ask jtdaugherty in the tracker, he is very responsive
2021-11-22 03:45:55 +0100 <sm> here's some discussion: https://github.com/jtdaugherty/brick/issues/74
2021-11-22 03:47:25 +0100 <sm> seems like you could make transparent edges (padding), but maybe holes are harder
2021-11-22 03:52:49 +0100renzhi(~xp@2607:fa49:6500:b100::6e7f) (Ping timeout: 250 seconds)
2021-11-22 03:55:52 +0100werneta(~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net) (Read error: Connection reset by peer)
2021-11-22 03:56:35 +0100yauhsien(~yauhsien@118-167-40-224.dynamic-ip.hinet.net)
2021-11-22 04:01:32 +0100werneta(~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net)
2021-11-22 04:01:34 +0100yauhsien(~yauhsien@118-167-40-224.dynamic-ip.hinet.net) (Ping timeout: 260 seconds)
2021-11-22 04:03:22 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-11-22 04:04:40 +0100lemonsnicks(~lemonsnic@cpc159519-perr18-2-0-cust114.19-1.cable.virginm.net) (Quit: ZNC 1.8.2 - https://znc.in)
2021-11-22 04:08:02 +0100 <jackdk> I have a function where I'm accumulating a result backwards, then reversing it at the end (like lisp `PUSH`/`NREVERSE` idiom, I guess). Does this have a common name or combinator somewhere?
2021-11-22 04:11:12 +0100myShoggoth(~myShoggot@97-120-85-195.ptld.qwest.net)
2021-11-22 04:11:17 +0100 <EvanR> no because if taken to extremes it can be pretty inefficient
2021-11-22 04:11:29 +0100 <EvanR> if you can, try to accumulate results forwards
2021-11-22 04:11:42 +0100 <EvanR> lazily
2021-11-22 04:12:08 +0100shailangsa(~shailangs@host86-186-133-114.range86-186.btcentralplus.com) (Remote host closed the connection)
2021-11-22 04:15:45 +0100lemonsnicks(~lemonsnic@cpc159519-perr18-2-0-cust114.19-1.cable.virginm.net)
2021-11-22 04:18:14 +0100pfurla(~pfurla@2804:14d:5c81:4104:d41b:9326:c4d8:9f2a) (Quit: gone to sleep. ZZZzzz…)
2021-11-22 04:21:31 +0100pfurla(~pfurla@2804:14d:5c81:4104:d09a:3c35:dab9:95ad)
2021-11-22 04:21:34 +0100pfurla(~pfurla@2804:14d:5c81:4104:d09a:3c35:dab9:95ad) (Client Quit)
2021-11-22 04:25:16 +0100KM4MBGjackhill
2021-11-22 04:30:24 +0100 <dsal> Can someone make Num smaller for the next ghc release?
2021-11-22 04:30:40 +0100 <dsal> I'm not quite sure how to think about things like `negate` on types that be negative.
2021-11-22 04:30:43 +0100 <jackdk> thanks EvanR . it turned out my problem was compactly expressed as a Data.List.unfold anyway
2021-11-22 04:31:03 +0100 <EvanR> cool
2021-11-22 04:31:46 +0100 <dsal> Related: ghci line editing is severely mangled on my machine. Does this sound like a known issue?
2021-11-22 04:31:58 +0100 <dsal> 8.10.7 on M1
2021-11-22 04:32:08 +0100mbuf(~Shakthi@223.178.114.167)
2021-11-22 04:32:59 +0100 <dsal> > negate (5 :: Word)
2021-11-22 04:33:01 +0100 <lambdabot> 18446744073709551611
2021-11-22 04:33:06 +0100 <dsal> I guess I can do something like that.
2021-11-22 04:33:22 +0100 <EvanR> > negate (5 :: Natural)
2021-11-22 04:33:23 +0100 <lambdabot> error:
2021-11-22 04:33:23 +0100 <lambdabot> Not in scope: type constructor or class ‘Natural’
2021-11-22 04:33:54 +0100 <EvanR> > negate (5 :: Numeric.Natural)
2021-11-22 04:33:55 +0100 <lambdabot> error:
2021-11-22 04:33:55 +0100 <lambdabot> Not in scope: type constructor or class ‘Numeric.Natural’
2021-11-22 04:34:16 +0100 <dsal> That's the other option.
2021-11-22 04:34:21 +0100 <EvanR> I guess Natural was voted off the island
2021-11-22 04:34:23 +0100 <dsal> I don't really like either.
2021-11-22 04:34:52 +0100 <dsal> I'm using Data.Fixed, so I can at least do something reasonable.
2021-11-22 04:35:29 +0100 <dsal> Er, Data.Finite
2021-11-22 04:36:01 +0100 <dsal> λ> negate (5 :: Finite 11)
2021-11-22 04:36:01 +0100 <dsal> finite 6
2021-11-22 04:36:16 +0100 <dsal> I guess since it already does it for me, I can just generalizednewtypederiving it and call it a day.
2021-11-22 04:37:41 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 250 seconds)
2021-11-22 04:38:17 +0100 <dsal> Oh, well, fromInteger is partial. I didn't expect that.
2021-11-22 04:41:04 +0100 <awpr> there's not really a good Num instance for the finite sets. modular arithmetic is okay enough, but in the not-uncommon case where people do arithmetic assuming it won't be out-of-range, having it silently wrap can hide bugs, and it's extra unintuitive for `fromInteger`
2021-11-22 04:42:00 +0100 <awpr> do you want Num for anything other than supporting integral literals?
2021-11-22 04:43:05 +0100 <dsal> Heh, not *really*. Maybe some addition or something.
2021-11-22 04:43:12 +0100 <dsal> I'm representing relative time as the number of minutes since midnight.
2021-11-22 04:43:28 +0100 <dsal> Yeah, addition might be nice, and them modulo is the right thing to do.
2021-11-22 04:43:56 +0100 <awpr> hmm, maybe. seems like you'd want modular addition with an overflow flag
2021-11-22 04:44:14 +0100 <awpr> like you'd have in adding digits of a positional number system
2021-11-22 04:44:29 +0100 <dsal> This is the kind of thing that's not likely to be used incorrectly, but I decided not to make it super difficult to use for the normal case where someone wants to just stick a number in a piece of code.
2021-11-22 04:46:14 +0100 <awpr> yeah, my thinking is that literals should be separate from the other parts of `Num`, and along with some extra features for validating literal values, that's `dependent-literals-plugin`
2021-11-22 04:46:30 +0100 <awpr> it was actually created specifically to deal with the problem of literals for `Fin`s
2021-11-22 04:48:04 +0100zhengcong(~zhengcong@113.140.11.120)
2021-11-22 04:49:36 +0100 <dsal> Yeah, I'd like to have just the representation thing, then maybe have + and * and abs/negate and - and stuff be all separate.
2021-11-22 04:50:02 +0100 <dsal> It's a small change, should be able to get in shortly.
2021-11-22 04:50:06 +0100td_(~td@muedsl-82-207-238-154.citykom.de) (Ping timeout: 260 seconds)
2021-11-22 04:51:22 +0100Codaraxis_(~Codaraxis@user/codaraxis)
2021-11-22 04:51:51 +0100 <awpr> lol that's why I went for a syntax plugin. very little chance for Num to grow a superclass or literals to move to another function, at least without some new typeclass features like implicit superclass impls
2021-11-22 04:51:58 +0100td_(~td@94.134.91.148)
2021-11-22 04:52:09 +0100 <awpr> but just rewriting literals to my own typeclass method is easy
2021-11-22 04:53:11 +0100Codaraxis_(~Codaraxis@user/codaraxis) (Remote host closed the connection)
2021-11-22 04:53:36 +0100 <dsal> For my use case, ~nobody's going to use this code and if I ever do, I'm just going to do a num literal probably. Or conversion from int that *should* fit.
2021-11-22 04:53:47 +0100FinnElija(~finn_elij@user/finn-elija/x-0085643) (Remote host closed the connection)
2021-11-22 04:54:39 +0100 <awpr> yeah, fair enough. it was only worth it to me because there were Fin literals all over the place, and if literals or arithmetic was out of range, there was no stack trace
2021-11-22 04:55:11 +0100Codaraxis__(~Codaraxis@user/codaraxis) (Ping timeout: 256 seconds)
2021-11-22 04:55:47 +0100FinnElija(~finn_elij@user/finn-elija/x-0085643)
2021-11-22 05:00:43 +0100yauhsien(~yauhsien@118-167-40-224.dynamic-ip.hinet.net)
2021-11-22 05:04:27 +0100nattiestnate(~nate@2001:448a:20a0:4134:25e:715f:d637:5263) (Quit: WeeChat 3.3)
2021-11-22 05:05:02 +0100yauhsien(~yauhsien@118-167-40-224.dynamic-ip.hinet.net) (Ping timeout: 240 seconds)
2021-11-22 05:07:47 +0100lechner(~lechner@debian/lechner) (Ping timeout: 250 seconds)
2021-11-22 05:12:06 +0100nautical(~nautical@2601:602:900:1630::396f) (Quit: WeeChat 3.3)
2021-11-22 05:19:33 +0100ralu(~ralu@static.211.245.203.116.clients.your-server.de) (Ping timeout: 256 seconds)
2021-11-22 05:21:25 +0100ralu(~ralu@static.211.245.203.116.clients.your-server.de)
2021-11-22 05:29:57 +0100jinsun(~quassel@user/jinsun)
2021-11-22 05:32:43 +0100drdo(~drdo@roach0.drdo.eu) (Ping timeout: 250 seconds)
2021-11-22 05:33:54 +0100waleee(~waleee@h-82-196-111-63.NA.cust.bahnhof.se) (Quit: WeeChat 3.3)
2021-11-22 05:35:04 +0100lavaman(~lavaman@98.38.249.169)
2021-11-22 05:40:05 +0100drdo(~drdo@roach0.drdo.eu)
2021-11-22 05:45:25 +0100deadmarshal(~deadmarsh@95.38.230.45)
2021-11-22 05:58:05 +0100monochrom(~trebla@216.138.220.146) (Ping timeout: 256 seconds)
2021-11-22 06:00:33 +0100alzgh(~alzgh@user/alzgh)
2021-11-22 06:00:50 +0100monochrom(~trebla@216.138.220.146)
2021-11-22 06:02:37 +0100raehik1(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 256 seconds)
2021-11-22 06:07:59 +0100yauhsien(~yauhsien@118-167-40-224.dynamic-ip.hinet.net)
2021-11-22 06:09:25 +0100drdo(~drdo@roach0.drdo.eu) (Ping timeout: 256 seconds)
2021-11-22 06:15:06 +0100slowButPresent(~slowButPr@user/slowbutpresent) (Quit: leaving)
2021-11-22 06:19:02 +0100[itchyjunk](~itchyjunk@user/itchyjunk/x-7353470) (Remote host closed the connection)
2021-11-22 06:21:20 +0100drdo(~drdo@roach0.drdo.eu)
2021-11-22 06:22:21 +0100yauhsien(~yauhsien@118-167-40-224.dynamic-ip.hinet.net) (Remote host closed the connection)
2021-11-22 06:27:56 +0100yauhsien(~yauhsien@118-167-40-224.dynamic-ip.hinet.net)
2021-11-22 06:28:23 +0100Topsi(~Tobias@dyndsl-095-033-023-020.ewe-ip-backbone.de)
2021-11-22 06:29:58 +0100Topsi2(~Tobias@dyndsl-037-138-064-016.ewe-ip-backbone.de) (Ping timeout: 260 seconds)
2021-11-22 06:31:20 +0100lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2021-11-22 06:31:36 +0100lavaman(~lavaman@98.38.249.169)
2021-11-22 06:31:42 +0100lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2021-11-22 06:32:05 +0100drdo(~drdo@roach0.drdo.eu) (Ping timeout: 250 seconds)
2021-11-22 06:33:42 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-11-22 06:37:54 +0100deadmarshal(~deadmarsh@95.38.230.45) (Ping timeout: 260 seconds)
2021-11-22 06:38:37 +0100tzh(~tzh@c-24-21-73-154.hsd1.or.comcast.net) (Quit: zzz)
2021-11-22 06:44:18 +0100sagax(~sagax_nb@user/sagax)
2021-11-22 06:47:20 +0100Sgeo_(~Sgeo@user/sgeo)
2021-11-22 06:47:53 +0100sub0(~bc8165b6@217.29.117.252) (Quit: http://www.okay.uz/ (Session timeout))
2021-11-22 06:48:48 +0100qwedfg_(~qwedfg@user/qwedfg) (*.net *.split)
2021-11-22 06:48:48 +0100mcfrdy(~mcfrdy@user/mcfrdy) (*.net *.split)
2021-11-22 06:48:48 +0100dexterfoo(dexter@2a01:7e00::f03c:91ff:fe86:59ec) (*.net *.split)
2021-11-22 06:48:48 +0100feliix42(~felix@gibbs.uberspace.de) (*.net *.split)
2021-11-22 06:48:48 +0100siers69(~ij@user/ij) (*.net *.split)
2021-11-22 06:48:48 +0100bens(~bens@www.typius.com) (*.net *.split)
2021-11-22 06:48:48 +0100xstill-(xstill@fimu/xstill) (*.net *.split)
2021-11-22 06:48:48 +0100matijja(~matijja@193.77.181.201) (*.net *.split)
2021-11-22 06:48:48 +0100megaTherion(~therion@unix.io) (*.net *.split)
2021-11-22 06:48:48 +0100gabiruh(~gabiruh@vps19177.publiccloud.com.br) (*.net *.split)
2021-11-22 06:49:01 +0100feliix42(~felix@gibbs.uberspace.de)
2021-11-22 06:49:01 +0100bens(~bens@www.typius.com)
2021-11-22 06:49:07 +0100xstill-(xstill@fimu/xstill)
2021-11-22 06:49:16 +0100dexterfoo(dexter@2a01:7e00::f03c:91ff:fe86:59ec)
2021-11-22 06:49:17 +0100gabiruh(~gabiruh@vps19177.publiccloud.com.br)
2021-11-22 06:49:28 +0100siers(~ij@user/ij)
2021-11-22 06:49:29 +0100mcfrdy(~mcfrdy@user/mcfrdy)
2021-11-22 06:49:34 +0100vysn(~vysn@user/vysn)
2021-11-22 06:49:34 +0100Sgeo(~Sgeo@user/sgeo) (Ping timeout: 260 seconds)
2021-11-22 06:50:21 +0100qwedfg(~qwedfg@user/qwedfg)
2021-11-22 06:53:04 +0100matijja(~matijja@193.77.181.201)
2021-11-22 06:54:59 +0100ircbrowse_tom(~ircbrowse@static.162.49.55.162.clients.your-server.de) (ZNC 1.7.5+deb4 - https://znc.in)
2021-11-22 06:56:36 +0100ircbrowse_tom(~ircbrowse@2a01:4f8:1c1c:9319::1)
2021-11-22 06:56:36 +0100Server+Cnt
2021-11-22 06:56:41 +0100ikke(~kevin@delta.ikke.info) (Changing host)
2021-11-22 06:56:41 +0100ikke(~kevin@alpine/developer/ikke)
2021-11-22 06:56:42 +0100tolt(~weechat-h@li219-154.members.linode.com)
2021-11-22 06:56:42 +0100hexology(~hexology@user/hexology)
2021-11-22 06:56:45 +0100incertia(~incertia@d4-50-26-103.nap.wideopenwest.com)
2021-11-22 06:56:45 +0100maerwald(~maerwald@mail.hasufell.de)
2021-11-22 06:56:48 +0100arahael(~arahael@125-209-128-15.tpgi.com.au)
2021-11-22 06:56:50 +0100heath(~heath@user/heath)
2021-11-22 06:56:53 +0100mrkajetanp(~mrkajetan@2a01:4b00:ea36:6c00:7994:941c:3f5d:2b88)
2021-11-22 06:56:53 +0100pierrot(~pi@user/pierrot)
2021-11-22 06:56:57 +0100blades(~blades@204.48.29.163)
2021-11-22 06:56:57 +0100beaky(~beaky@2a03:b0c0:0:1010::1e:a001)
2021-11-22 06:57:05 +0100robbert-vdh(~robbert@robbertvanderhelm.nl)
2021-11-22 06:58:03 +0100megaTherion(~therion@unix.io)
2021-11-22 06:58:20 +0100lavaman(~lavaman@98.38.249.169)
2021-11-22 07:00:17 +0100tureba(~tureba@tureba.org)
2021-11-22 07:00:17 +0100ozzymcduff(~mathieu@81-234-151-21-no94.tbcn.telia.com)
2021-11-22 07:03:05 +0100Ekho(~Ekho@user/ekho)
2021-11-22 07:08:14 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 260 seconds)
2021-11-22 07:09:47 +0100myShoggoth(~myShoggot@97-120-85-195.ptld.qwest.net) (Ping timeout: 250 seconds)
2021-11-22 07:11:07 +0100yauhsien(~yauhsien@118-167-40-224.dynamic-ip.hinet.net) (Remote host closed the connection)
2021-11-22 07:11:42 +0100yauhsien(~yauhsien@118-167-40-224.dynamic-ip.hinet.net)
2021-11-22 07:13:08 +0100takuan(~takuan@178-116-218-225.access.telenet.be)
2021-11-22 07:16:02 +0100yauhsien(~yauhsien@118-167-40-224.dynamic-ip.hinet.net) (Ping timeout: 240 seconds)
2021-11-22 07:16:39 +0100xkuru(~xkuru@user/xkuru) (Read error: Connection reset by peer)
2021-11-22 07:22:32 +0100xff0x(~xff0x@2001:1a81:52ae:a700:ef5b:bdbe:c8a4:8fd2) (Ping timeout: 268 seconds)
2021-11-22 07:23:10 +0100shapr(~user@pool-100-36-247-68.washdc.fios.verizon.net) (Ping timeout: 260 seconds)
2021-11-22 07:23:15 +0100xff0x(~xff0x@2001:1a81:52ae:a700:d47e:fd11:5546:7b77)
2021-11-22 07:29:23 +0100cjb(~cjb@user/cjb) (Quit: rcirc on GNU Emacs 29.0.50)
2021-11-22 07:30:37 +0100fef(~thedawn@user/thedawn)
2021-11-22 07:35:18 +0100zebrag(~chris@user/zebrag) (Quit: Konversation terminated!)
2021-11-22 07:44:43 +0100deadmarshal(~deadmarsh@95.38.230.45)
2021-11-22 07:47:44 +0100 <hololeap_> this might be a hard question to answer, but why does `cabal info` take so long to run?
2021-11-22 07:47:50 +0100hololeap_hololeap
2021-11-22 07:48:13 +0100emf(~emf@2620:10d:c090:400::5:b07b)
2021-11-22 07:49:06 +0100deadmarshal(~deadmarsh@95.38.230.45) (Ping timeout: 245 seconds)
2021-11-22 07:49:28 +0100emf(~emf@2620:10d:c090:400::5:b07b) (Client Quit)
2021-11-22 07:53:42 +0100deadmarshal(~deadmarsh@95.38.230.45)
2021-11-22 07:55:49 +0100mamehiko(~robbie@140.254.77.249)
2021-11-22 07:59:44 +0100drdo(~drdo@roach0.drdo.eu)
2021-11-22 08:03:31 +0100stiell(~stiell@gateway/tor-sasl/stiell) (Remote host closed the connection)
2021-11-22 08:03:52 +0100stiell(~stiell@gateway/tor-sasl/stiell)
2021-11-22 08:04:51 +0100yauhsien(~yauhsien@118-167-40-224.dynamic-ip.hinet.net)
2021-11-22 08:05:41 +0100mamehiko(~robbie@140.254.77.249) (Quit: Leaving)
2021-11-22 08:07:39 +0100xff0x(~xff0x@2001:1a81:52ae:a700:d47e:fd11:5546:7b77) (Ping timeout: 260 seconds)
2021-11-22 08:08:26 +0100xff0x(~xff0x@2001:1a81:52ae:a700:2e71:8ba4:bf99:ed92)
2021-11-22 08:09:27 +0100yauhsien(~yauhsien@118-167-40-224.dynamic-ip.hinet.net) (Ping timeout: 264 seconds)
2021-11-22 08:19:12 +0100_ht(~quassel@82-169-194-8.biz.kpn.net)
2021-11-22 08:21:36 +0100mc47(~mc47@xmonad/TheMC47)
2021-11-22 08:24:03 +0100zhengcong(~zhengcong@113.140.11.120) (Remote host closed the connection)
2021-11-22 08:24:10 +0100max22-(~maxime@lfbn-ren-1-762-224.w81-53.abo.wanadoo.fr)
2021-11-22 08:32:34 +0100lechner(~lechner@debian/lechner)
2021-11-22 08:38:33 +0100jonathanx(~jonathan@h-178-174-176-109.A357.priv.bahnhof.se)
2021-11-22 08:40:42 +0100jonathanx(~jonathan@h-178-174-176-109.A357.priv.bahnhof.se) (Remote host closed the connection)
2021-11-22 08:48:00 +0100jonathanx(~jonathan@h-178-174-176-109.A357.priv.bahnhof.se)
2021-11-22 08:48:33 +0100 <sclv> hololeap: it runs pretty quick for me on the latest cabal. but in general its got to (i think) scan through the entire zipped collection of hackage cabal files to find the ones of interest
2021-11-22 08:49:56 +0100deadmarshal(~deadmarsh@95.38.230.45) (Ping timeout: 245 seconds)
2021-11-22 08:50:35 +0100 <sclv> i.e. `cabal info bytestring` runs in 1.5 secs on my box
2021-11-22 08:51:57 +0100phma(~phma@2001:5b0:211f:e738:5c4d:dbc4:3f14:dae2) (Read error: Connection reset by peer)
2021-11-22 08:52:23 +0100Firedancer(sid336191@id-336191.hampstead.irccloud.com) (Ping timeout: 265 seconds)
2021-11-22 08:52:32 +0100meinside(uid24933@id-24933.helmsley.irccloud.com) (Ping timeout: 240 seconds)
2021-11-22 08:52:41 +0100davetapley(sid666@id-666.uxbridge.irccloud.com) (Ping timeout: 250 seconds)
2021-11-22 08:52:52 +0100nrr__(sid20938@id-20938.lymington.irccloud.com) (Ping timeout: 265 seconds)
2021-11-22 08:53:01 +0100phma(phma@2001:5b0:211b:e388:ee5a:511e:22c4:3b06)
2021-11-22 08:53:07 +0100alanz(sid110616@id-110616.uxbridge.irccloud.com) (Ping timeout: 250 seconds)
2021-11-22 08:53:29 +0100alanz(sid110616@id-110616.uxbridge.irccloud.com)
2021-11-22 08:53:53 +0100yauhsien(~yauhsien@118-167-40-224.dynamic-ip.hinet.net)
2021-11-22 08:54:17 +0100meinside(uid24933@id-24933.helmsley.irccloud.com)
2021-11-22 08:54:32 +0100nrr__(sid20938@id-20938.lymington.irccloud.com)
2021-11-22 08:54:51 +0100yauhsien(~yauhsien@118-167-40-224.dynamic-ip.hinet.net) (Remote host closed the connection)
2021-11-22 08:55:29 +0100yauhsien(~yauhsien@118-167-40-224.dynamic-ip.hinet.net)
2021-11-22 08:55:35 +0100Firedancer(sid336191@id-336191.hampstead.irccloud.com)
2021-11-22 08:55:35 +0100gehmehgeh(~user@user/gehmehgeh)
2021-11-22 08:55:55 +0100davetapley(sid666@id-666.uxbridge.irccloud.com)
2021-11-22 08:56:23 +0100_ht(~quassel@82-169-194-8.biz.kpn.net) (Remote host closed the connection)
2021-11-22 08:57:30 +0100Gurkenglas(~Gurkengla@dslb-002-203-144-204.002.203.pools.vodafone-ip.de)
2021-11-22 08:58:18 +0100deadmarshal(~deadmarsh@95.38.230.45)
2021-11-22 08:59:08 +0100jmorris(uid433911@id-433911.hampstead.irccloud.com) (Quit: Connection closed for inactivity)
2021-11-22 08:59:56 +0100yauhsien(~yauhsien@118-167-40-224.dynamic-ip.hinet.net) (Ping timeout: 245 seconds)
2021-11-22 09:01:20 +0100Sgeo_(~Sgeo@user/sgeo) (Read error: Connection reset by peer)
2021-11-22 09:03:54 +0100chele(~chele@user/chele)
2021-11-22 09:04:01 +0100lortabac(~lortabac@2a01:e0a:541:b8f0:7c6d:4c33:f4a3:2a22)
2021-11-22 09:04:58 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-11-22 09:06:03 +0100trcc(~trcc@users-5343.st.net.au.dk)
2021-11-22 09:06:05 +0100trcc(~trcc@users-5343.st.net.au.dk) (Remote host closed the connection)
2021-11-22 09:06:55 +0100trcc(~trcc@users-5343.st.net.au.dk)
2021-11-22 09:10:03 +0100yauhsien(~yauhsien@118-167-40-224.dynamic-ip.hinet.net)
2021-11-22 09:10:09 +0100trcc_(~trcc@eduroam09.au.dk)
2021-11-22 09:10:13 +0100dhouthoo(~dhouthoo@178-117-36-167.access.telenet.be)
2021-11-22 09:12:26 +0100trcc_(~trcc@eduroam09.au.dk) (Read error: Connection reset by peer)
2021-11-22 09:12:36 +0100trcc_(~trcc@eduroam09.au.dk)
2021-11-22 09:13:27 +0100trcc(~trcc@users-5343.st.net.au.dk) (Ping timeout: 260 seconds)
2021-11-22 09:14:47 +0100yauhsien(~yauhsien@118-167-40-224.dynamic-ip.hinet.net) (Remote host closed the connection)
2021-11-22 09:14:51 +0100deadmarshal(~deadmarsh@95.38.230.45) (Ping timeout: 264 seconds)
2021-11-22 09:15:21 +0100yauhsien(~yauhsien@118-167-40-224.dynamic-ip.hinet.net)
2021-11-22 09:25:37 +0100michalz(~michalz@185.246.204.33)
2021-11-22 09:30:32 +0100deadmarshal(~deadmarsh@95.38.230.45)
2021-11-22 09:30:38 +0100neurocyte0132889(~neurocyte@45.10.60.180)
2021-11-22 09:30:38 +0100neurocyte0132889(~neurocyte@45.10.60.180) (Changing host)
2021-11-22 09:30:38 +0100neurocyte0132889(~neurocyte@user/neurocyte)
2021-11-22 09:33:00 +0100mvk(~mvk@2607:fea8:5cc1:fa00::4702) (Read error: Connection reset by peer)
2021-11-22 09:33:13 +0100mvk(~mvk@2607:fea8:5cc1:fa00::4702)
2021-11-22 09:40:25 +0100yauhsien(~yauhsien@118-167-40-224.dynamic-ip.hinet.net) (Remote host closed the connection)
2021-11-22 09:43:45 +0100yauhsien(~yauhsien@118-167-40-224.dynamic-ip.hinet.net)
2021-11-22 09:48:41 +0100yauhsien(~yauhsien@118-167-40-224.dynamic-ip.hinet.net) (Ping timeout: 245 seconds)
2021-11-22 09:50:24 +0100machinedgod(~machinedg@135-23-192-217.cpe.pppoe.ca)
2021-11-22 09:51:34 +0100dsrt^(~dsrt@68.101.63.101) (Remote host closed the connection)
2021-11-22 09:53:12 +0100fendor(~fendor@178.165.196.64.wireless.dyn.drei.com)
2021-11-22 09:55:13 +0100yauhsien(~yauhsien@118-167-40-224.dynamic-ip.hinet.net)
2021-11-22 09:58:15 +0100deadmarshal(~deadmarsh@95.38.230.45) (Ping timeout: 260 seconds)
2021-11-22 10:02:40 +0100chexum(~quassel@gateway/tor-sasl/chexum) (Remote host closed the connection)
2021-11-22 10:02:41 +0100yauhsien(~yauhsien@118-167-40-224.dynamic-ip.hinet.net) (Read error: Connection reset by peer)
2021-11-22 10:02:53 +0100chexum(~quassel@gateway/tor-sasl/chexum)
2021-11-22 10:03:45 +0100yauhsien(~yauhsien@61-231-30-221.dynamic-ip.hinet.net)
2021-11-22 10:04:22 +0100shailangsa(~shailangs@host86-186-133-114.range86-186.btcentralplus.com)
2021-11-22 10:11:37 +0100kuribas(~user@ptr-25vy0i9f20n8puprvgm.18120a2.ip6.access.telenet.be)
2021-11-22 10:12:23 +0100trcc_(~trcc@eduroam09.au.dk) (Remote host closed the connection)
2021-11-22 10:16:09 +0100timCF(~timCF@200-149-20-81.sta.estpak.ee) (Quit: leaving)
2021-11-22 10:16:38 +0100trcc_(~trcc@users-1190.st.net.au.dk)
2021-11-22 10:16:57 +0100cfricke(~cfricke@user/cfricke)
2021-11-22 10:17:28 +0100allbery_b(~geekosaur@xmonad/geekosaur)
2021-11-22 10:17:28 +0100geekosaur(~geekosaur@xmonad/geekosaur) (Killed (NickServ (GHOST command used by allbery_b)))
2021-11-22 10:17:31 +0100allbery_bgeekosaur
2021-11-22 10:17:49 +0100econo(uid147250@user/econo) (Quit: Connection closed for inactivity)
2021-11-22 10:19:51 +0100alzgh(~alzgh@user/alzgh) (Ping timeout: 256 seconds)
2021-11-22 10:20:15 +0100mvk(~mvk@2607:fea8:5cc1:fa00::4702) (Ping timeout: 264 seconds)
2021-11-22 10:20:20 +0100fef(~thedawn@user/thedawn) (Remote host closed the connection)
2021-11-22 10:24:50 +0100acidjnk(~acidjnk@2001:16b8:6720:5a00:f48d:53a:53a4:d2dc)
2021-11-22 10:27:39 +0100edmundnoble(sid229620@id-229620.helmsley.irccloud.com) (Ping timeout: 260 seconds)
2021-11-22 10:27:39 +0100SethTisue__(sid14912@id-14912.ilkley.irccloud.com) (Ping timeout: 260 seconds)
2021-11-22 10:27:39 +0100caasih(sid13241@id-13241.ilkley.irccloud.com) (Ping timeout: 260 seconds)
2021-11-22 10:27:59 +0100jackdk(sid373013@cssa/jackdk) (Ping timeout: 264 seconds)
2021-11-22 10:27:59 +0100PotatoGim(sid99505@id-99505.lymington.irccloud.com) (Ping timeout: 264 seconds)
2021-11-22 10:27:59 +0100hongminhee(sid295@id-295.tinside.irccloud.com) (Ping timeout: 264 seconds)
2021-11-22 10:27:59 +0100truckasaurus(sid457088@id-457088.helmsley.irccloud.com) (Ping timeout: 264 seconds)
2021-11-22 10:28:08 +0100sa(sid1055@id-1055.tinside.irccloud.com) (Ping timeout: 268 seconds)
2021-11-22 10:28:08 +0100christiaanb(sid84827@id-84827.lymington.irccloud.com) (Ping timeout: 268 seconds)
2021-11-22 10:28:14 +0100dpratt__(sid193493@id-193493.helmsley.irccloud.com) (Ping timeout: 246 seconds)
2021-11-22 10:28:14 +0100mrianbloom(sid350277@id-350277.ilkley.irccloud.com) (Ping timeout: 246 seconds)
2021-11-22 10:28:14 +0100AndreasK__(sid320732@id-320732.uxbridge.irccloud.com) (Ping timeout: 246 seconds)
2021-11-22 10:28:14 +0100sa1_(sid7690@id-7690.ilkley.irccloud.com) (Ping timeout: 246 seconds)
2021-11-22 10:28:14 +0100b20n(sid115913@id-115913.uxbridge.irccloud.com) (Ping timeout: 246 seconds)
2021-11-22 10:28:16 +0100Firedancer(sid336191@id-336191.hampstead.irccloud.com) (Ping timeout: 245 seconds)
2021-11-22 10:28:16 +0100alanz(sid110616@id-110616.uxbridge.irccloud.com) (Ping timeout: 245 seconds)
2021-11-22 10:28:27 +0100davetapley(sid666@id-666.uxbridge.irccloud.com) (Ping timeout: 250 seconds)
2021-11-22 10:28:27 +0100Adeon(sid418992@id-418992.lymington.irccloud.com) (Ping timeout: 250 seconds)
2021-11-22 10:28:27 +0100parseval(sid239098@id-239098.helmsley.irccloud.com) (Ping timeout: 250 seconds)
2021-11-22 10:28:27 +0100bjs(sid190364@user/bjs) (Ping timeout: 250 seconds)
2021-11-22 10:28:27 +0100cln(sid336875@id-336875.ilkley.irccloud.com) (Ping timeout: 250 seconds)
2021-11-22 10:28:27 +0100ysh(sid6017@id-6017.ilkley.irccloud.com) (Ping timeout: 250 seconds)
2021-11-22 10:28:27 +0100aristid(sid1599@id-1599.uxbridge.irccloud.com) (Ping timeout: 250 seconds)
2021-11-22 10:28:32 +0100whez(sid470288@id-470288.lymington.irccloud.com) (Ping timeout: 240 seconds)
2021-11-22 10:28:34 +0100Pent(sid313808@id-313808.lymington.irccloud.com) (Ping timeout: 265 seconds)
2021-11-22 10:28:34 +0100teehemkay(sid14792@id-14792.lymington.irccloud.com) (Ping timeout: 265 seconds)
2021-11-22 10:28:34 +0100alinab(sid468903@id-468903.helmsley.irccloud.com) (Ping timeout: 265 seconds)
2021-11-22 10:28:35 +0100elvishjerricco(sid237756@id-237756.helmsley.irccloud.com) (Ping timeout: 246 seconds)
2021-11-22 10:28:35 +0100carter(sid14827@id-14827.helmsley.irccloud.com) (Ping timeout: 246 seconds)
2021-11-22 10:28:35 +0100rune(sid21167@id-21167.ilkley.irccloud.com) (Ping timeout: 246 seconds)
2021-11-22 10:28:35 +0100enemeth79(sid309041@id-309041.lymington.irccloud.com) (Ping timeout: 264 seconds)
2021-11-22 10:28:35 +0100taktoa[c](sid282096@id-282096.tinside.irccloud.com) (Ping timeout: 264 seconds)
2021-11-22 10:28:35 +0100dsal(sid13060@id-13060.lymington.irccloud.com) (Ping timeout: 264 seconds)
2021-11-22 10:28:35 +0100supersven(sid501114@id-501114.ilkley.irccloud.com) (Ping timeout: 264 seconds)
2021-11-22 10:28:35 +0100rtpg(sid443069@id-443069.ilkley.irccloud.com) (Ping timeout: 260 seconds)
2021-11-22 10:28:35 +0100hook54321(sid149355@user/hook54321) (Ping timeout: 260 seconds)
2021-11-22 10:28:35 +0100edwardk(sid47016@haskell/developer/edwardk) (Ping timeout: 260 seconds)
2021-11-22 10:28:35 +0100aarchi(sid486183@id-486183.uxbridge.irccloud.com) (Ping timeout: 260 seconds)
2021-11-22 10:28:35 +0100bw__(sid2730@id-2730.ilkley.irccloud.com) (Ping timeout: 260 seconds)
2021-11-22 10:28:35 +0100systemfault(sid267009@id-267009.uxbridge.irccloud.com) (Ping timeout: 260 seconds)
2021-11-22 10:28:41 +0100nrr__(sid20938@id-20938.lymington.irccloud.com) (Ping timeout: 245 seconds)
2021-11-22 10:28:45 +0100saolsen(sid26430@id-26430.lymington.irccloud.com) (Ping timeout: 268 seconds)
2021-11-22 10:28:53 +0100cbarrett(sid192934@id-192934.helmsley.irccloud.com) (Ping timeout: 250 seconds)
2021-11-22 10:28:53 +0100T_S_(sid501726@id-501726.uxbridge.irccloud.com) (Ping timeout: 250 seconds)
2021-11-22 10:28:53 +0100obviyus(sid415299@user/obviyus) (Ping timeout: 250 seconds)
2021-11-22 10:28:56 +0100angerman(sid209936@id-209936.ilkley.irccloud.com) (Ping timeout: 246 seconds)
2021-11-22 10:28:56 +0100bradparker(sid262931@id-262931.uxbridge.irccloud.com) (Ping timeout: 246 seconds)
2021-11-22 10:28:56 +0100SrPx(sid108780@id-108780.uxbridge.irccloud.com) (Ping timeout: 246 seconds)
2021-11-22 10:29:02 +0100linkedlistist(uid528169@id-528169.lymington.irccloud.com) (Ping timeout: 240 seconds)
2021-11-22 10:29:03 +0100SanchayanMaity(sid478177@id-478177.hampstead.irccloud.com) (Ping timeout: 265 seconds)
2021-11-22 10:29:03 +0100integral(sid296274@user/integral) (Ping timeout: 265 seconds)
2021-11-22 10:29:03 +0100bbhoss(sid18216@id-18216.tinside.irccloud.com) (Ping timeout: 265 seconds)
2021-11-22 10:29:03 +0100joel135(sid136450@id-136450.hampstead.irccloud.com) (Ping timeout: 265 seconds)
2021-11-22 10:29:03 +0100teehemkay_(sid14792@id-14792.lymington.irccloud.com) (Ping timeout: 265 seconds)
2021-11-22 10:29:03 +0100kaizen(sid501599@id-501599.helmsley.irccloud.com) (Ping timeout: 265 seconds)
2021-11-22 10:29:03 +0100tnks(sid412124@id-412124.helmsley.irccloud.com) (Ping timeout: 265 seconds)
2021-11-22 10:29:03 +0100lightandlight(sid135476@id-135476.helmsley.irccloud.com) (Ping timeout: 260 seconds)
2021-11-22 10:29:03 +0100vito(sid1962@user/vito) (Ping timeout: 260 seconds)
2021-11-22 10:29:11 +0100agander_m(sid407952@id-407952.tinside.irccloud.com) (Ping timeout: 264 seconds)
2021-11-22 10:29:11 +0100mustafa(sid502723@rockylinux/releng/mustafa) (Ping timeout: 264 seconds)
2021-11-22 10:29:11 +0100kristjansson_(sid126207@id-126207.tinside.irccloud.com) (Ping timeout: 264 seconds)
2021-11-22 10:29:11 +0100scav(sid309693@id-309693.helmsley.irccloud.com) (Ping timeout: 264 seconds)
2021-11-22 10:29:11 +0100degraafk(sid71464@id-71464.lymington.irccloud.com) (Ping timeout: 264 seconds)
2021-11-22 10:29:11 +0100JSharp(sid4580@id-4580.lymington.irccloud.com) (Ping timeout: 264 seconds)
2021-11-22 10:29:11 +0100grfn(sid449115@id-449115.helmsley.irccloud.com) (Ping timeout: 264 seconds)
2021-11-22 10:29:17 +0100S11001001(sid42510@id-42510.ilkley.irccloud.com) (Ping timeout: 246 seconds)
2021-11-22 10:29:18 +0100linkedlistist(uid528169@lymington.irccloud.com)
2021-11-22 10:29:19 +0100tapas(sid467876@id-467876.ilkley.irccloud.com) (Ping timeout: 250 seconds)
2021-11-22 10:29:19 +0100pepeiborra(sid443799@id-443799.ilkley.irccloud.com) (Ping timeout: 250 seconds)
2021-11-22 10:29:19 +0100ProofTechnique(sid79547@id-79547.ilkley.irccloud.com) (Ping timeout: 250 seconds)
2021-11-22 10:29:19 +0100gmc_(sid58314@id-58314.ilkley.irccloud.com) (Ping timeout: 250 seconds)
2021-11-22 10:29:19 +0100jonrh_(sid5185@id-5185.ilkley.irccloud.com) (Ping timeout: 250 seconds)
2021-11-22 10:29:20 +0100rune(sid21167@ilkley.irccloud.com)
2021-11-22 10:29:21 +0100whez(sid470288@lymington.irccloud.com)
2021-11-22 10:29:21 +0100gregberns___(sid315709@helmsley.irccloud.com)
2021-11-22 10:29:21 +0100alinab(sid468903@helmsley.irccloud.com)
2021-11-22 10:29:22 +0100tnks(sid412124@helmsley.irccloud.com)
2021-11-22 10:29:22 +0100agander_m(sid407952@tinside.irccloud.com)
2021-11-22 10:29:22 +0100_0x47(sid508683@id-508683.tinside.irccloud.com) (Ping timeout: 268 seconds)
2021-11-22 10:29:22 +0100hamishmack(sid389057@id-389057.hampstead.irccloud.com) (Ping timeout: 268 seconds)
2021-11-22 10:29:22 +0100rubin55(sid175221@id-175221.hampstead.irccloud.com) (Ping timeout: 268 seconds)
2021-11-22 10:29:22 +0100iphy(sid67735@id-67735.lymington.irccloud.com) (Ping timeout: 268 seconds)
2021-11-22 10:29:22 +0100dmj`(sid72307@id-72307.hampstead.irccloud.com) (Ping timeout: 268 seconds)
2021-11-22 10:29:22 +0100tritlo(sid58727@user/tritlo) (Ping timeout: 268 seconds)
2021-11-22 10:29:22 +0100gregberns__(sid315709@id-315709.helmsley.irccloud.com) (Ping timeout: 268 seconds)
2021-11-22 10:29:23 +0100gregberns___gregberns__
2021-11-22 10:29:23 +0100teehemkay_(sid14792@lymington.irccloud.com)
2021-11-22 10:29:23 +0100degraafk(sid71464@lymington.irccloud.com)
2021-11-22 10:29:23 +0100parseval(sid239098@helmsley.irccloud.com)
2021-11-22 10:29:23 +0100amir_(sid22336@user/amir)
2021-11-22 10:29:24 +0100iphy_(sid67735@lymington.irccloud.com)
2021-11-22 10:29:24 +0100grfn(sid449115@helmsley.irccloud.com)
2021-11-22 10:29:24 +0100hamishmack_(sid389057@hampstead.irccloud.com)
2021-11-22 10:29:25 +0100scav(sid309693@helmsley.irccloud.com)
2021-11-22 10:29:25 +0100_0x47_(sid508683@tinside.irccloud.com)
2021-11-22 10:29:25 +0100bbhoss(sid18216@tinside.irccloud.com)
2021-11-22 10:29:27 +0100T_S_(sid501726@uxbridge.irccloud.com)
2021-11-22 10:29:27 +0100gonz_____(sid304396@lymington.irccloud.com)
2021-11-22 10:29:32 +0100awpr(uid446117@id-446117.lymington.irccloud.com) (Ping timeout: 240 seconds)
2021-11-22 10:29:32 +0100gonz____(sid304396@id-304396.lymington.irccloud.com) (Ping timeout: 265 seconds)
2021-11-22 10:29:32 +0100sclv(sid39734@haskell/developer/sclv) (Ping timeout: 265 seconds)
2021-11-22 10:29:32 +0100NemesisD(sid24071@id-24071.lymington.irccloud.com) (Ping timeout: 265 seconds)
2021-11-22 10:29:32 +0100amir(sid22336@user/amir) (Ping timeout: 265 seconds)
2021-11-22 10:29:32 +0100NiKaN(sid385034@id-385034.helmsley.irccloud.com) (Ping timeout: 265 seconds)
2021-11-22 10:29:38 +0100aplainzetakind(~johndoe@captainludd.powered.by.lunarbnc.net) (Quit: Free ZNC ~ Powered by LunarBNC: https://LunarBNC.net)
2021-11-22 10:29:38 +0100amir_amir
2021-11-22 10:29:44 +0100deadmarshal(~deadmarsh@95.38.230.45)
2021-11-22 10:29:47 +0100angerman(sid209936@ilkley.irccloud.com)
2021-11-22 10:29:47 +0100hubvu(sid495858@user/hubvu) (Ping timeout: 264 seconds)
2021-11-22 10:29:47 +0100ephemient(uid407513@id-407513.lymington.irccloud.com) (Ping timeout: 264 seconds)
2021-11-22 10:29:47 +0100hendi(sid489601@id-489601.lymington.irccloud.com) (Ping timeout: 264 seconds)
2021-11-22 10:29:47 +0100Boarders_(sid425905@id-425905.lymington.irccloud.com) (Ping timeout: 264 seconds)
2021-11-22 10:29:47 +0100acertain(sid470584@id-470584.hampstead.irccloud.com) (Ping timeout: 264 seconds)
2021-11-22 10:29:47 +0100astra`(sid289983@user/amish) (Ping timeout: 264 seconds)
2021-11-22 10:29:47 +0100idnar(sid12240@debian/mithrandi) (Ping timeout: 264 seconds)
2021-11-22 10:29:47 +0100mcfilib(sid302703@user/mcfilib) (Ping timeout: 264 seconds)
2021-11-22 10:29:50 +0100sclv(sid39734@haskell/developer/sclv)
2021-11-22 10:29:51 +0100meinside(uid24933@id-24933.helmsley.irccloud.com) (Ping timeout: 264 seconds)
2021-11-22 10:29:53 +0100obviyus(sid415299@user/obviyus)
2021-11-22 10:29:59 +0100typetetris(sid275937@id-275937.tinside.irccloud.com) (Ping timeout: 268 seconds)
2021-11-22 10:29:59 +0100philpax_(sid516926@id-516926.lymington.irccloud.com) (Ping timeout: 268 seconds)
2021-11-22 10:29:59 +0100aria(sid380617@id-380617.lymington.irccloud.com) (Ping timeout: 268 seconds)
2021-11-22 10:29:59 +0100jmct_(sid160793@id-160793.tinside.irccloud.com) (Ping timeout: 268 seconds)
2021-11-22 10:29:59 +0100pjlsergeant(sid143467@id-143467.hampstead.irccloud.com) (Ping timeout: 268 seconds)
2021-11-22 10:29:59 +0100ehamberg(sid18208@id-18208.hampstead.irccloud.com) (Ping timeout: 268 seconds)
2021-11-22 10:30:01 +0100glowcoil(sid3405@id-3405.tinside.irccloud.com) (Ping timeout: 265 seconds)
2021-11-22 10:30:01 +0100jakesyl_(sid56879@id-56879.hampstead.irccloud.com) (Ping timeout: 265 seconds)
2021-11-22 10:30:01 +0100conjunctive(sid433686@id-433686.helmsley.irccloud.com) (Ping timeout: 265 seconds)
2021-11-22 10:30:01 +0100gaze___(sid387101@id-387101.helmsley.irccloud.com) (Ping timeout: 265 seconds)
2021-11-22 10:30:03 +0100tritlo(sid58727@user/tritlo)
2021-11-22 10:30:04 +0100rubin55(sid175221@hampstead.irccloud.com)
2021-11-22 10:30:16 +0100glowcoil(sid3405@tinside.irccloud.com)
2021-11-22 10:30:26 +0100aplainzetakind(~johndoe@captainludd.powered.by.lunarbnc.net)
2021-11-22 10:30:28 +0100gaze___(sid387101@helmsley.irccloud.com)
2021-11-22 10:30:33 +0100alanz(sid110616@uxbridge.irccloud.com)
2021-11-22 10:30:36 +0100taktoa[c](sid282096@tinside.irccloud.com)
2021-11-22 10:30:38 +0100Boarders_(sid425905@lymington.irccloud.com)
2021-11-22 10:30:41 +0100kristjansson_(sid126207@tinside.irccloud.com)
2021-11-22 10:30:42 +0100mcfilib(sid302703@user/mcfilib)
2021-11-22 10:30:47 +0100pepeiborra(sid443799@ilkley.irccloud.com)
2021-11-22 10:30:48 +0100ysh(sid6017@ilkley.irccloud.com)
2021-11-22 10:30:50 +0100typetetris(sid275937@tinside.irccloud.com)
2021-11-22 10:30:50 +0100cln(sid336875@ilkley.irccloud.com)
2021-11-22 10:31:02 +0100acidjnk(~acidjnk@2001:16b8:6720:5a00:f48d:53a:53a4:d2dc) (Ping timeout: 240 seconds)
2021-11-22 10:31:06 +0100joel135(sid136450@hampstead.irccloud.com)
2021-11-22 10:31:14 +0100yauhsien(~yauhsien@61-231-30-221.dynamic-ip.hinet.net) (Remote host closed the connection)
2021-11-22 10:31:25 +0100ehamberg(sid18208@hampstead.irccloud.com)
2021-11-22 10:31:26 +0100jmct_(sid160793@tinside.irccloud.com)
2021-11-22 10:31:29 +0100bjs(sid190364@user/bjs)
2021-11-22 10:31:35 +0100hubvu(sid495858@user/hubvu)
2021-11-22 10:31:44 +0100vito(sid1962@user/vito)
2021-11-22 10:31:46 +0100carter(sid14827@helmsley.irccloud.com)
2021-11-22 10:31:47 +0100nrr__(sid20938@lymington.irccloud.com)
2021-11-22 10:31:48 +0100kaizen(sid501599@helmsley.irccloud.com)
2021-11-22 10:31:48 +0100conjunctive(sid433686@helmsley.irccloud.com)
2021-11-22 10:31:48 +0100NiKaN(sid385034@helmsley.irccloud.com)
2021-11-22 10:31:48 +0100JSharp(sid4580@lymington.irccloud.com)
2021-11-22 10:31:49 +0100meinside(uid24933@helmsley.irccloud.com)
2021-11-22 10:31:50 +0100ProofTechnique(sid79547@ilkley.irccloud.com)
2021-11-22 10:31:51 +0100CiaoSen(~Jura@p200300c95716ce002a3a4dfffe84dbd5.dip0.t-ipconnect.de)
2021-11-22 10:31:51 +0100dpratt__(sid193493@helmsley.irccloud.com)
2021-11-22 10:31:56 +0100gmc_(sid58314@ilkley.irccloud.com)
2021-11-22 10:32:08 +0100enemeth79(sid309041@lymington.irccloud.com)
2021-11-22 10:32:08 +0100saolsen(sid26430@lymington.irccloud.com)
2021-11-22 10:32:11 +0100idnar(sid12240@debian/mithrandi)
2021-11-22 10:32:12 +0100tapas(sid467876@ilkley.irccloud.com)
2021-11-22 10:32:16 +0100ephemient(uid407513@lymington.irccloud.com)
2021-11-22 10:32:17 +0100jonrh_(sid5185@ilkley.irccloud.com)
2021-11-22 10:32:22 +0100mustafa(sid502723@rockylinux/releng/mustafa)
2021-11-22 10:32:23 +0100dsal(sid13060@lymington.irccloud.com)
2021-11-22 10:32:32 +0100awpr(uid446117@lymington.irccloud.com)
2021-11-22 10:32:47 +0100SanchayanMaity(sid478177@hampstead.irccloud.com)
2021-11-22 10:32:47 +0100pjlsergeant(sid143467@hampstead.irccloud.com)
2021-11-22 10:32:49 +0100astra`(sid289983@user/amish)
2021-11-22 10:32:54 +0100dmj`(sid72307@hampstead.irccloud.com)
2021-11-22 10:33:02 +0100hook54321(sid149355@user/hook54321)
2021-11-22 10:33:05 +0100truckasaurus(sid457088@helmsley.irccloud.com)
2021-11-22 10:33:07 +0100elvishjerricco(sid237756@helmsley.irccloud.com)
2021-11-22 10:33:13 +0100jakesyl_(sid56879@hampstead.irccloud.com)
2021-11-22 10:33:16 +0100NemesisD(sid24071@lymington.irccloud.com)
2021-11-22 10:33:17 +0100hendi(sid489601@lymington.irccloud.com)
2021-11-22 10:33:18 +0100philpax_(sid516926@lymington.irccloud.com)
2021-11-22 10:33:21 +0100Adeon(sid418992@lymington.irccloud.com)
2021-11-22 10:33:27 +0100systemfault(sid267009@uxbridge.irccloud.com)
2021-11-22 10:33:39 +0100SrPx(sid108780@uxbridge.irccloud.com)
2021-11-22 10:33:40 +0100alzgh(alzgh@user/alzgh)
2021-11-22 10:33:41 +0100bw__(sid2730@ilkley.irccloud.com)
2021-11-22 10:33:57 +0100aplainzetakind(~johndoe@captainludd.powered.by.lunarbnc.net) (Client Quit)
2021-11-22 10:33:57 +0100acertain(sid470584@hampstead.irccloud.com)
2021-11-22 10:33:58 +0100aria(sid380617@lymington.irccloud.com)
2021-11-22 10:34:03 +0100cbarrett(sid192934@helmsley.irccloud.com)
2021-11-22 10:34:06 +0100Firedancer(sid336191@hampstead.irccloud.com)
2021-11-22 10:34:07 +0100S11001001(sid42510@ilkley.irccloud.com)
2021-11-22 10:34:39 +0100yauhsien(~yauhsien@61-231-30-221.dynamic-ip.hinet.net)
2021-11-22 10:34:51 +0100Pent(sid313808@lymington.irccloud.com)
2021-11-22 10:34:58 +0100integral(sid296274@user/integral)
2021-11-22 10:35:02 +0100sa(sid1055@tinside.irccloud.com)
2021-11-22 10:35:04 +0100aarchi(sid486183@uxbridge.irccloud.com)
2021-11-22 10:35:07 +0100bradparker(sid262931@uxbridge.irccloud.com)
2021-11-22 10:35:08 +0100edwardk(sid47016@haskell/developer/edwardk)
2021-11-22 10:35:12 +0100aplainzetakind(~johndoe@captainludd.powered.by.lunarbnc.net)
2021-11-22 10:36:53 +0100eggplantade(~Eggplanta@2600:1700:bef1:5e10:b4a8:9431:5c1:c0e0) (Remote host closed the connection)
2021-11-22 10:37:32 +0100ProofTechnique(sid79547@ilkley.irccloud.com) (Ping timeout: 240 seconds)
2021-11-22 10:37:54 +0100Pent(sid313808@lymington.irccloud.com) (Max SendQ exceeded)
2021-11-22 10:37:55 +0100jakesyl_(sid56879@hampstead.irccloud.com) (Max SendQ exceeded)
2021-11-22 10:38:02 +0100rubin55(sid175221@hampstead.irccloud.com) (Ping timeout: 240 seconds)
2021-11-22 10:38:09 +0100Pent(sid313808@id-313808.lymington.irccloud.com)
2021-11-22 10:38:15 +0100typetetris(sid275937@tinside.irccloud.com) (Ping timeout: 264 seconds)
2021-11-22 10:38:33 +0100jakesyl_(sid56879@id-56879.hampstead.irccloud.com)
2021-11-22 10:38:41 +0100philpax_(sid516926@lymington.irccloud.com) (Ping timeout: 245 seconds)
2021-11-22 10:38:52 +0100philpax_(sid516926@id-516926.lymington.irccloud.com)
2021-11-22 10:39:12 +0100rubin55(sid175221@id-175221.hampstead.irccloud.com)
2021-11-22 10:40:42 +0100ProofTechnique(sid79547@id-79547.ilkley.irccloud.com)
2021-11-22 10:41:26 +0100typetetris(sid275937@id-275937.tinside.irccloud.com)
2021-11-22 10:42:17 +0100jackdk(sid373013@cssa/jackdk)
2021-11-22 10:42:18 +0100hongminhee(sid295@id-295.tinside.irccloud.com)
2021-11-22 10:42:21 +0100christiaanb(sid84827@id-84827.lymington.irccloud.com)
2021-11-22 10:42:26 +0100PotatoGim(sid99505@id-99505.lymington.irccloud.com)
2021-11-22 10:42:34 +0100SethTisue__(sid14912@id-14912.ilkley.irccloud.com)
2021-11-22 10:42:35 +0100edmundnoble(sid229620@id-229620.helmsley.irccloud.com)
2021-11-22 10:42:41 +0100caasih(sid13241@id-13241.ilkley.irccloud.com)
2021-11-22 10:42:51 +0100supersven(sid501114@id-501114.ilkley.irccloud.com)
2021-11-22 10:43:05 +0100lightandlight(sid135476@id-135476.helmsley.irccloud.com)
2021-11-22 10:43:35 +0100AndreasK__(sid320732@id-320732.uxbridge.irccloud.com)
2021-11-22 10:43:36 +0100b20n(sid115913@id-115913.uxbridge.irccloud.com)
2021-11-22 10:43:37 +0100mrianbloom(sid350277@id-350277.ilkley.irccloud.com)
2021-11-22 10:43:37 +0100rtpg(sid443069@id-443069.ilkley.irccloud.com)
2021-11-22 10:43:41 +0100sa1_(sid7690@id-7690.ilkley.irccloud.com)
2021-11-22 10:43:45 +0100aristid(sid1599@id-1599.uxbridge.irccloud.com)
2021-11-22 10:43:47 +0100davetapley(sid666@id-666.uxbridge.irccloud.com)
2021-11-22 10:43:56 +0100teehemkay(sid14792@id-14792.lymington.irccloud.com)
2021-11-22 10:47:12 +0100jakalx(~jakalx@base.jakalx.net) ()
2021-11-22 10:49:30 +0100jakalx(~jakalx@base.jakalx.net)
2021-11-22 10:56:16 +0100DNH(~DNH@2a02:8108:1100:16d8:64b0:a3f2:ec06:e597)
2021-11-22 10:59:33 +0100pavonia(~user@user/siracusa) (Quit: Bye!)
2021-11-22 11:00:17 +0100enoq(~enoq@2a05:1141:1f5:5600:b9c9:721a:599:bfe7)
2021-11-22 11:01:54 +0100fendor(~fendor@178.165.196.64.wireless.dyn.drei.com) (Read error: Connection reset by peer)
2021-11-22 11:02:28 +0100acidjnk(~acidjnk@p200300d0c7271e45b900d7f27b1ad71c.dip0.t-ipconnect.de)
2021-11-22 11:02:45 +0100cosimone(~user@2001:b07:ae5:db26:a7aa:8027:6b4e:2fb3)
2021-11-22 11:03:09 +0100max1984(~Massi@host-79-33-240-217.retail.telecomitalia.it)
2021-11-22 11:06:24 +0100max1984(~Massi@host-79-33-240-217.retail.telecomitalia.it) ()
2021-11-22 11:16:12 +0100ph88(~ph88@95.90.240.104)
2021-11-22 11:16:39 +0100deadmarshal(~deadmarsh@95.38.230.45) (Ping timeout: 264 seconds)
2021-11-22 11:16:43 +0100ph88(~ph88@95.90.240.104) (Client Quit)
2021-11-22 11:17:17 +0100ph88(~ph88@95.90.240.104)
2021-11-22 11:18:29 +0100chexum(~quassel@gateway/tor-sasl/chexum) (Remote host closed the connection)
2021-11-22 11:18:38 +0100chexum(~quassel@gateway/tor-sasl/chexum)
2021-11-22 11:20:21 +0100rribeiro(~rodrigo@2804:5c:55cc:9e00:440a:f8e5:a6cd:124c)
2021-11-22 11:22:04 +0100yauhsien(~yauhsien@61-231-30-221.dynamic-ip.hinet.net) (Remote host closed the connection)
2021-11-22 11:23:04 +0100tromp(~textual@dhcp-077-249-230-040.chello.nl)
2021-11-22 11:24:37 +0100yauhsien(~yauhsien@61-231-30-221.dynamic-ip.hinet.net)
2021-11-22 11:25:43 +0100sprout_(~quassel@2a02:a467:ccd6:1:990:f1e:8987:d5f9)
2021-11-22 11:29:11 +0100sprout(~quassel@2a02:a467:ccd6:1:7816:2c69:3dcc:933a) (Ping timeout: 264 seconds)
2021-11-22 11:29:51 +0100yauhsien(~yauhsien@61-231-30-221.dynamic-ip.hinet.net) (Ping timeout: 264 seconds)
2021-11-22 11:32:04 +0100sprout(~quassel@2a02:a467:ccd6:1:e931:44b2:abc5:155b)
2021-11-22 11:33:46 +0100sagax(~sagax_nb@user/sagax) (Excess Flood)
2021-11-22 11:33:52 +0100maerwald(~maerwald@mail.hasufell.de) (Changing host)
2021-11-22 11:33:52 +0100maerwald(~maerwald@user/maerwald)
2021-11-22 11:35:23 +0100Axma55388(~Axman6@user/axman6)
2021-11-22 11:35:51 +0100sprout_(~quassel@2a02:a467:ccd6:1:990:f1e:8987:d5f9) (Ping timeout: 264 seconds)
2021-11-22 11:35:58 +0100Axman6(~Axman6@user/axman6) (Ping timeout: 260 seconds)
2021-11-22 11:37:18 +0100eggplantade(~Eggplanta@2600:1700:bef1:5e10:dcf1:6c47:4df:1ed1)
2021-11-22 11:39:58 +0100chele(~chele@user/chele) (Remote host closed the connection)
2021-11-22 11:40:05 +0100chele_(~chele@user/chele)
2021-11-22 11:43:03 +0100eggplantade(~Eggplanta@2600:1700:bef1:5e10:dcf1:6c47:4df:1ed1) (Ping timeout: 264 seconds)
2021-11-22 11:43:55 +0100sprout_(~quassel@2a02:a467:ccd6:1:29bf:5ae9:f17:83c0)
2021-11-22 11:43:58 +0100chele_chele
2021-11-22 11:47:01 +0100sprout(~quassel@2a02:a467:ccd6:1:e931:44b2:abc5:155b) (Ping timeout: 245 seconds)
2021-11-22 11:51:20 +0100raoul(~raoul@95.179.203.88)
2021-11-22 11:58:11 +0100vysn(~vysn@user/vysn) (Ping timeout: 268 seconds)
2021-11-22 12:00:20 +0100deadmarshal(~deadmarsh@95.38.230.45)
2021-11-22 12:00:29 +0100sagax(~sagax_nb@user/sagax)
2021-11-22 12:02:28 +0100Topsi(~Tobias@dyndsl-095-033-023-020.ewe-ip-backbone.de) (Read error: Connection reset by peer)
2021-11-22 12:03:50 +0100__monty__(~toonn@user/toonn)
2021-11-22 12:04:10 +0100xsperry(~xs@user/xsperry) ()
2021-11-22 12:05:16 +0100Axma55388(~Axman6@user/axman6) (Ping timeout: 260 seconds)
2021-11-22 12:07:30 +0100Axman6(~Axman6@user/axman6)
2021-11-22 12:10:04 +0100Unhammer(~Unhammer@user/unhammer) (Ping timeout: 265 seconds)
2021-11-22 12:10:05 +0100blackcap(~blackcap@144.89-10-135.nextgentel.com) (Read error: Connection reset by peer)
2021-11-22 12:10:15 +0100yauhsien(~yauhsien@61-231-30-221.dynamic-ip.hinet.net)
2021-11-22 12:10:19 +0100neurocyte0132889(~neurocyte@user/neurocyte) (Ping timeout: 260 seconds)
2021-11-22 12:10:53 +0100neurocyte0132889(~neurocyte@45.10.60.180)
2021-11-22 12:10:53 +0100neurocyte0132889(~neurocyte@45.10.60.180) (Changing host)
2021-11-22 12:10:53 +0100neurocyte0132889(~neurocyte@user/neurocyte)
2021-11-22 12:14:37 +0100yauhsien(~yauhsien@61-231-30-221.dynamic-ip.hinet.net) (Ping timeout: 250 seconds)
2021-11-22 12:15:46 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 245 seconds)
2021-11-22 12:15:51 +0100blackcap(~blackcap@144.89-10-135.nextgentel.com)
2021-11-22 12:17:22 +0100Axman6(~Axman6@user/axman6) (Ping timeout: 260 seconds)
2021-11-22 12:17:35 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-11-22 12:18:54 +0100Axman6(~Axman6@user/axman6)
2021-11-22 12:22:51 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 245 seconds)
2021-11-22 12:23:18 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-11-22 12:28:29 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 250 seconds)
2021-11-22 12:28:53 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-11-22 12:29:22 +0100chomwitt(~chomwitt@2a02:587:dc14:4600:12c3:7bff:fe6d:d374)
2021-11-22 12:33:55 +0100xsperry(~xs@user/xsperry)
2021-11-22 12:34:06 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 245 seconds)
2021-11-22 12:34:31 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-11-22 12:39:31 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 245 seconds)
2021-11-22 12:40:05 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-11-22 12:44:31 +0100 <Franciman> does haskell allow talking about propositional identity?
2021-11-22 12:44:42 +0100sprout(~quassel@2a02:a467:ccd6:1:5cca:96d9:7234:6761)
2021-11-22 12:45:27 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 264 seconds)
2021-11-22 12:45:40 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-11-22 12:45:46 +0100CiaoSen(~Jura@p200300c95716ce002a3a4dfffe84dbd5.dip0.t-ipconnect.de) (Ping timeout: 245 seconds)
2021-11-22 12:46:05 +0100martin02(~silas@141.84.69.76) (Ping timeout: 256 seconds)
2021-11-22 12:47:15 +0100puke(~puke@user/puke) (Quit: puke)
2021-11-22 12:47:51 +0100sprout_(~quassel@2a02:a467:ccd6:1:29bf:5ae9:f17:83c0) (Ping timeout: 245 seconds)
2021-11-22 12:50:46 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 245 seconds)
2021-11-22 12:51:23 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-11-22 12:52:28 +0100rribeiro(~rodrigo@2804:5c:55cc:9e00:440a:f8e5:a6cd:124c) (Remote host closed the connection)
2021-11-22 12:52:31 +0100trcc(~trcc@eduroam09.au.dk)
2021-11-22 12:56:11 +0100trcc_(~trcc@users-1190.st.net.au.dk) (Ping timeout: 245 seconds)
2021-11-22 12:57:54 +0100trcc(~trcc@eduroam09.au.dk) (Remote host closed the connection)
2021-11-22 12:58:26 +0100trcc(~trcc@users-5343.st.net.au.dk)
2021-11-22 13:01:39 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 264 seconds)
2021-11-22 13:02:55 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-11-22 13:12:48 +0100yauhsien(~yauhsien@61-231-30-221.dynamic-ip.hinet.net)
2021-11-22 13:13:39 +0100deadmarshal(~deadmarsh@95.38.230.45) (Ping timeout: 264 seconds)
2021-11-22 13:15:23 +0100jippiedoe(~david@2a02-a44c-e14e-1-c6ad-4343-92dc-4cb2.fixed6.kpn.net)
2021-11-22 13:17:01 +0100yauhsien(~yauhsien@61-231-30-221.dynamic-ip.hinet.net) (Ping timeout: 250 seconds)
2021-11-22 13:26:20 +0100Cajun(~Cajun@user/cajun) (Quit: Client closed)
2021-11-22 13:31:03 +0100jippiedoe(~david@2a02-a44c-e14e-1-c6ad-4343-92dc-4cb2.fixed6.kpn.net) (Ping timeout: 264 seconds)
2021-11-22 13:38:36 +0100alzgh(alzgh@user/alzgh) (Remote host closed the connection)
2021-11-22 13:38:56 +0100alzgh(alzgh@user/alzgh)
2021-11-22 13:49:32 +0100jippiedoe(~david@2a02-a44c-e14e-1-c482-95c0-575a-83bc.fixed6.kpn.net)
2021-11-22 13:54:40 +0100Cajun(~Cajun@user/cajun)
2021-11-22 13:54:42 +0100CiaoSen(~Jura@p200300c95716ce002a3a4dfffe84dbd5.dip0.t-ipconnect.de)
2021-11-22 14:01:08 +0100dschrempf(~dominik@070-207.dynamic.dsl.fonira.net)
2021-11-22 14:10:48 +0100yauhsien(~yauhsien@61-231-30-221.dynamic-ip.hinet.net)
2021-11-22 14:11:39 +0100deadmarshal(~deadmarsh@95.38.230.45)
2021-11-22 14:15:21 +0100yauhsien(~yauhsien@61-231-30-221.dynamic-ip.hinet.net) (Ping timeout: 245 seconds)
2021-11-22 14:15:34 +0100bw__(sid2730@ilkley.irccloud.com) ()
2021-11-22 14:16:00 +0100bw(sid2730@user/betawaffle)
2021-11-22 14:26:05 +0100bitdex_(~bitdex@gateway/tor-sasl/bitdex) (Quit: = "")
2021-11-22 14:28:07 +0100troydm(~troydm@host-176-37-124-197.b025.la.net.ua) (Quit: What is Hope? That all of your wishes and all of your dreams come true? To turn back time because things were not supposed to happen like that (C) Rau Le Creuset)
2021-11-22 14:29:55 +0100troydm(~troydm@host-176-37-124-197.b025.la.net.ua)
2021-11-22 14:32:57 +0100V(~v@anomalous.eu) (Remote host closed the connection)
2021-11-22 14:34:15 +0100V(~v@anomalous.eu)
2021-11-22 14:36:48 +0100tromp(~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2021-11-22 14:45:18 +0100[itchyjunk](~itchyjunk@user/itchyjunk/x-7353470)
2021-11-22 14:48:57 +0100timCF(~timCF@200-149-20-81.sta.estpak.ee)
2021-11-22 14:50:12 +0100FinnElija(~finn_elij@user/finn-elija/x-0085643) (Remote host closed the connection)
2021-11-22 14:52:22 +0100 <timCF> Hello! Are there any runtime perfornamce issues because using TypeApplications `@a` syntax instead of `Proxy :: Proxy a` in generic functions with `forall a.`? For me `@a` looks better, and I'll use it any day of the week instead of Proxy, but is it coming for free in terms of performance?
2021-11-22 14:52:48 +0100 <merijn> timCF: Performance: Probably. Maintenance: No
2021-11-22 14:52:56 +0100 <dminuoso> TypeApplication could probably be cheaper since there's no token that GHC must optimize away
2021-11-22 14:53:08 +0100 <dminuoso> But I call premature optimization
2021-11-22 14:54:02 +0100 <timCF> You mean TypeApplications might be even better in terms of performance?
2021-11-22 14:54:03 +0100slowButPresent(~slowButPr@user/slowbutpresent)
2021-11-22 14:54:06 +0100FinnElija(~finn_elij@user/finn-elija/x-0085643)
2021-11-22 14:54:25 +0100 <merijn> TypeApplications may also break randomly when your dependencies *OR* compiler update, so...
2021-11-22 14:54:26 +0100 <dminuoso> timCF: Personally I prefer Proxy in most situations because a) it guarantees stable and communicatable API, b) doesn't demand yet-another extension from a user, and it's often easier to pass things around by binding a proxy pattern rather than introduce some forall at some outer level
2021-11-22 14:55:19 +0100 <merijn> TypeApplications is great, if you like things like "accidentall tying the stability of my API to implementation details of your specific compiler version"!
2021-11-22 14:55:20 +0100 <dminuoso> If both sides (the definition and call site) are under your full control, it probably doesn't matter
2021-11-22 14:55:34 +0100 <dminuoso> But be sure to introduce all variables explicitly via forall
2021-11-22 14:56:52 +0100 <timCF> merijn: dminuoso: thanks!
2021-11-22 14:57:23 +0100 <timCF> merijn: you mean it might brake when I'm using some dependency, and then they switch order in forall expression for some reason?
2021-11-22 14:57:38 +0100 <dminuoso> Also, TypeApplications tends to be a bit brittle when since you cant apply polymorphic things to visible type arguments after inference has done its job
2021-11-22 14:57:48 +0100 <merijn> timCF: Yes. And also if they never used an explicit forall and the GHC infers a different order for implicit foralls
2021-11-22 14:57:49 +0100 <dminuoso> e.g.:
2021-11-22 14:57:52 +0100 <dminuoso> % f = id
2021-11-22 14:57:52 +0100 <yahb> dminuoso:
2021-11-22 14:57:54 +0100 <dminuoso> % :t f
2021-11-22 14:57:54 +0100 <yahb> dminuoso: a -> a
2021-11-22 14:58:04 +0100 <dminuoso> % :t f @Int
2021-11-22 14:58:05 +0100 <yahb> dminuoso: ; <interactive>:1:1: error:; * Cannot apply expression of type `a0 -> a0'; to a visible type argument `Int'; * In the expression: f @Int
2021-11-22 14:58:06 +0100 <merijn> timCF: Which is not a hypothetical situation, because we've already had 1 GHC release that broke TypeApplications that way
2021-11-22 14:58:19 +0100 <merijn> (changed the order constraints were inferred in)
2021-11-22 14:58:23 +0100 <dminuoso> timCF: ^- Do instantly and intuitively know why this is?
2021-11-22 14:59:12 +0100 <timCF> dminuoso: AllowAmbiguousTypes or something like this?
2021-11-22 14:59:16 +0100 <dminuoso> Nope.
2021-11-22 14:59:31 +0100 <merijn> Is it...the monomorphism restriction? :D
2021-11-22 14:59:38 +0100 <dminuoso> Nope
2021-11-22 14:59:42 +0100 <merijn> aww
2021-11-22 14:59:43 +0100 <kuribas> merijn: solution: always use explicit forall.
2021-11-22 15:00:04 +0100 <dminuoso> timCF: You cant apply things with "invisible" type variables to visible type arguments.
2021-11-22 15:00:14 +0100 <dminuoso> There's subtle reasons for why all that is
2021-11-22 15:00:40 +0100 <dminuoso> But the consequence is that you cant use TypeApplications as freely because as soon as GHC does type inference, you cant use TypeApplications anymore
2021-11-22 15:00:51 +0100 <dminuoso> That is, if GHC repolymorphizes
2021-11-22 15:00:54 +0100 <merijn> kuribas: Do your dependencies do that, though?
2021-11-22 15:01:12 +0100 <dminuoso> timCF: Proxy is really much more solid and obvious. :)
2021-11-22 15:01:20 +0100 <timCF> merijn: who knows really :)
2021-11-22 15:01:22 +0100 <dminuoso> Albeit a bit noisy, but other than that it has mostly just benefits
2021-11-22 15:01:31 +0100 <merijn> kuribas: Also, I don't, because I dislike TypeApplications for reasons above
2021-11-22 15:01:31 +0100 <kuribas> merijn: I don't use TypeApplications if they don't.
2021-11-22 15:01:50 +0100 <dminuoso> timCF: Though you can do one interesting combination
2021-11-22 15:01:52 +0100 <dminuoso> That one I favor
2021-11-22 15:01:57 +0100 <dminuoso> Proxy *with* TypeApplications
2021-11-22 15:02:03 +0100 <kuribas> Just use a language where you can apply types as arguments.
2021-11-22 15:02:04 +0100 <dminuoso> f (Proxy @Int)
2021-11-22 15:02:12 +0100 <dminuoso> This is a nice middle ground
2021-11-22 15:02:16 +0100 <timCF> dminuoso: that's actually cool
2021-11-22 15:02:58 +0100 <timCF> kuribas: for example?
2021-11-22 15:03:05 +0100 <kuribas> timCF: idris
2021-11-22 15:03:07 +0100 <merijn> Idris :p
2021-11-22 15:03:10 +0100 <timCF> hmmm
2021-11-22 15:03:11 +0100 <merijn> Agda, Coq
2021-11-22 15:03:18 +0100 <merijn> timCF: He's mostly joking :p
2021-11-22 15:03:21 +0100 <merijn> (I assume)
2021-11-22 15:03:30 +0100 <timCF> Are they better version of Haskell then? :)
2021-11-22 15:03:42 +0100 <timCF> (probably not)
2021-11-22 15:03:52 +0100 <Hecate> Idris 2
2021-11-22 15:03:58 +0100 <kuribas> merijn: yes and no. If you are doing extensive type level programming, you may be better of with idris than with haskell.
2021-11-22 15:04:12 +0100 <merijn> timCF: Define "beter", "version", and "haskell" :p
2021-11-22 15:04:25 +0100tromp(~textual@dhcp-077-249-230-040.chello.nl)
2021-11-22 15:05:34 +0100 <timCF> Prelude> better version haskell
2021-11-22 15:05:34 +0100 <timCF> <interactive>:1:1: error:
2021-11-22 15:05:34 +0100 <timCF> Variable not in scope: better :: t0 -> t1 -> t
2021-11-22 15:05:36 +0100 <timCF> <interactive>:1:8: error: Variable not in scope: version
2021-11-22 15:05:41 +0100 <timCF> <interactive>:1:16: error: Variable not in scope: haskell
2021-11-22 15:05:45 +0100son0p(~ff@181.136.122.143)
2021-11-22 15:05:50 +0100 <timCF> :)
2021-11-22 15:07:31 +0100Cajun(~Cajun@user/cajun) (Quit: Client closed)
2021-11-22 15:09:23 +0100 <kuribas> merijn: idris is not production ready, but it will never be if people keep shoehorning type level stuff into haskell, instead of using a more appropriate language.
2021-11-22 15:09:37 +0100 <maerwald> kuribas++
2021-11-22 15:10:19 +0100 <merijn> Haskell won't be production ready if people keep doing that too :p
2021-11-22 15:10:31 +0100 <maerwald> but I want my toys!
2021-11-22 15:11:45 +0100 <kuribas> merijn: it has been for a long time.
2021-11-22 15:12:14 +0100 <kuribas> merijn: wait, you mean it will not be production ready if people keep adding on top of it?
2021-11-22 15:12:32 +0100Philonous_(~Philonous@user/philonous) (Quit: ZNC - https://znc.in)
2021-11-22 15:12:33 +0100 <timCF> merijn: I actually never tried any of them (Idris, Agda, Coq). Which of them is the most enterprise-oriented in your opinion? Toys are important, but I'm kinda doing web programming.. It will be hard without Persistent, Esqueleto, Yesod, Servant, Conduit and others
2021-11-22 15:12:54 +0100 <kuribas> merijn: If so, I agree. I'd rather see other improvements than DH.
2021-11-22 15:13:02 +0100Philonous(~Philonous@user/philonous)
2021-11-22 15:13:08 +0100 <kuribas> in particular tooling improvements.
2021-11-22 15:13:26 +0100 <merijn> kuribas: The latter, yes
2021-11-22 15:13:44 +0100 <dminuoso> Web development itself is a disgusting field honestly
2021-11-22 15:14:06 +0100 <kuribas> timCF: frankly none of them.
2021-11-22 15:14:11 +0100 <dminuoso> More so than other fields this requires good availability of libraries to help pull the weight.
2021-11-22 15:14:25 +0100 <kuribas> timCF: you may use them as a prototype, or for verifying parts of your program.
2021-11-22 15:14:28 +0100 <timCF> dminuoso: With Haskell not that disgusting actually. After switch from Erlang I'm sleeping much better at night.
2021-11-22 15:14:59 +0100 <dminuoso> We dont have a plethora of good options to generate HTML with
2021-11-22 15:15:10 +0100 <timCF> Yesod/Blaze?
2021-11-22 15:15:17 +0100 <dminuoso> Highly opinionated.
2021-11-22 15:15:24 +0100 <maerwald> dminuoso: because we're busy adding more complicated stuff to our toybelt
2021-11-22 15:15:29 +0100 <maerwald> that serves a few edge cases
2021-11-22 15:16:02 +0100 <dminuoso> There's also reflex-dom if you enjoy FRP
2021-11-22 15:16:13 +0100 <dminuoso> But the toolstack you start accomulating gets unreal
2021-11-22 15:16:18 +0100jpds(~jpds@gateway/tor-sasl/jpds) (Ping timeout: 276 seconds)
2021-11-22 15:16:34 +0100 <kuribas> IMO Dependent Haskell makes even less sense for teaching.
2021-11-22 15:17:53 +0100jpds(~jpds@gateway/tor-sasl/jpds)
2021-11-22 15:18:33 +0100 <dminuoso> timCF: Also yesod is becoming less and less relevant, there's not as many active contributions anymore
2021-11-22 15:18:50 +0100 <dminuoso> And it comes with a bus factor of 1.1
2021-11-22 15:18:54 +0100 <kuribas> dminuoso: as opposed to what?
2021-11-22 15:18:56 +0100 <maerwald> fpco seems to shift more into devops, rust and blockchain
2021-11-22 15:19:11 +0100 <dminuoso> kuribas: As opposed to the past.
2021-11-22 15:19:14 +0100 <dminuoso> https://github.com/yesodweb/yesod/graphs/contributors
2021-11-22 15:19:53 +0100 <kuribas> dminuoso: I meant, what are people using then?
2021-11-22 15:20:09 +0100 <dminuoso> No clue
2021-11-22 15:20:18 +0100 <kuribas> servant?
2021-11-22 15:20:26 +0100 <kuribas> spock, ...
2021-11-22 15:20:28 +0100 <dminuoso> Based on various factors Id assume web developers simply pick more suitable tools.
2021-11-22 15:20:36 +0100 <dminuoso> Based on surrounding technologies
2021-11-22 15:20:41 +0100 <maerwald> same for snap https://github.com/snapframework/snap/graphs/contributors
2021-11-22 15:20:41 +0100 <dminuoso> Say they might build the frontend in reactjs
2021-11-22 15:21:00 +0100jkaye(~jkaye@2601:281:8300:7530:c25c:6460:bfbf:33d6)
2021-11-22 15:21:22 +0100 <dminuoso> maerwald: Yup.
2021-11-22 15:21:53 +0100aliosablack(~chomwitt@2a02:587:dc14:4600:12c3:7bff:fe6d:d374)
2021-11-22 15:22:09 +0100chomwitt(~chomwitt@2a02:587:dc14:4600:12c3:7bff:fe6d:d374) (Read error: Connection reset by peer)
2021-11-22 15:22:42 +0100 <dminuoso> From a business point of view, deciding to simply do it in Django seems more worthwhile. You have to be fairly religious to do web development in Haskell.
2021-11-22 15:23:06 +0100lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2021-11-22 15:23:27 +0100 <merijn> dminuoso: The kinda religious that'd just switch to Ur/Web ;)
2021-11-22 15:23:47 +0100 <kuribas> dminuoso: or clojure?
2021-11-22 15:24:16 +0100 <timCF> dminuoso: Yesod is just enterprise web framework for Haskell, when I've started to use it - I had no idea how to write actual Haskell, but was already able to build websites with postgres storage. And then I've gradually learned about stuff like Functors, Applicatives, Monads, Alternatives (just new use cases when more complex web forms were needed)
2021-11-22 15:24:28 +0100 <dminuoso> timCF: What does "enterprise web framework" even mean?
2021-11-22 15:24:41 +0100 <maerwald> dminuoso: you start with no clue what you're doing
2021-11-22 15:24:47 +0100 <dminuoso> ah heh
2021-11-22 15:24:55 +0100 <timCF> dminuoso: maerwald: exactly
2021-11-22 15:25:36 +0100 <dminuoso> kuribas: Like I said, Id focus on picking a language that has rich tooling and active participation of wide industry. For web development, that's mostly JavaScript and some Python.
2021-11-22 15:25:43 +0100 <timCF> It's not the most efficient way of learning Haskell anyway. It's actually very inefficient, but works for some people
2021-11-22 15:25:53 +0100 <merijn> dminuoso: I have a better solution!
2021-11-22 15:25:58 +0100 <Franciman> dminuoso: I would choose a language which is not lazy
2021-11-22 15:25:59 +0100 <merijn> dminuoso: I just gave up on having a website! :p
2021-11-22 15:26:02 +0100 <dminuoso> merijn: Yup.
2021-11-22 15:26:19 +0100 <Franciman> default laziness is plain dumb, optimal evaluation is much better idea
2021-11-22 15:26:39 +0100 <kuribas> dminuoso: you might not use haskell at all! Except for the blockchain!
2021-11-22 15:26:41 +0100 <timCF> Franciman: just use StrictData and you will be safe in most cases
2021-11-22 15:26:45 +0100 <merijn> Default lazy is still better than default strict
2021-11-22 15:26:59 +0100 <maerwald> merijn: that's hard to assess
2021-11-22 15:27:22 +0100 <Franciman> sure
2021-11-22 15:27:26 +0100 <Franciman> default lazy on the web
2021-11-22 15:27:30 +0100 <Franciman> so that chromium consumes 200GB
2021-11-22 15:27:32 +0100 <Franciman> instead of 32
2021-11-22 15:27:39 +0100 <Franciman> is awesome choice
2021-11-22 15:27:44 +0100 <maerwald> the only real argument pro default laziness is that GHC can optimize *some* stuff better
2021-11-22 15:27:47 +0100 <Franciman> web sucks :P
2021-11-22 15:27:52 +0100yauhsien(~yauhsien@61-231-30-221.dynamic-ip.hinet.net)
2021-11-22 15:28:01 +0100 <maerwald> but that's a brittle argument from a language perspective
2021-11-22 15:28:04 +0100 <merijn> maerwald: I have a better argument
2021-11-22 15:28:18 +0100 <merijn> maerwald: "too lazy" can always be solved locally. "too strict" cannot
2021-11-22 15:28:21 +0100trcc_(~trcc@eduroam09.au.dk)
2021-11-22 15:28:26 +0100trcc_(~trcc@eduroam09.au.dk) (Remote host closed the connection)
2021-11-22 15:28:29 +0100 <Franciman> I am speaking about web dev
2021-11-22 15:28:35 +0100 <maerwald> merijn: well, that's not true... I have a complicated example where that didn't work
2021-11-22 15:28:38 +0100 <merijn> Therefore it's easier to obtain the desired semantics by having default lazy
2021-11-22 15:28:43 +0100 <maerwald> but it's proprietary code
2021-11-22 15:28:44 +0100 <dminuoso> Third opinion: Both suck, a lazy-polymorphic like levity would be ideal.
2021-11-22 15:28:51 +0100 <dminuoso> Let the user pick what they want.
2021-11-22 15:28:53 +0100 <merijn> dminuoso: Yes, that's what I want
2021-11-22 15:29:04 +0100 <merijn> dminuoso: And well get started on, as soon as someone will pay me :p
2021-11-22 15:29:17 +0100 <Franciman> I also don't understand why you have to pick between a totally wrong solution (laziness) and a totally incorrect approximation (strictness)
2021-11-22 15:29:18 +0100 <merijn> dminuoso: Together with proper, pure, exceptions
2021-11-22 15:29:21 +0100 <Franciman> when you can choose optimal evaluation
2021-11-22 15:29:25 +0100 <maerwald> the final value was forced, but there was a huge intermediate thunk buildup, which caused immense performance regression in a hot loop... forcing the final value doesn't help you at all
2021-11-22 15:30:06 +0100 <maerwald> so we had to go through the entire codebase and identify the issues... most of them were in data constructors
2021-11-22 15:30:32 +0100 <maerwald> that's why some people say laziness is global state
2021-11-22 15:30:45 +0100epolanski(uid312403@id-312403.helmsley.irccloud.com)
2021-11-22 15:30:54 +0100jpds(~jpds@gateway/tor-sasl/jpds) (Remote host closed the connection)
2021-11-22 15:31:15 +0100jpds(~jpds@gateway/tor-sasl/jpds)
2021-11-22 15:31:36 +0100trcc(~trcc@users-5343.st.net.au.dk) (Ping timeout: 245 seconds)
2021-11-22 15:31:55 +0100 <Franciman> laziness is a bit of cargo cult, because optimal evaluation is not industry read yet
2021-11-22 15:32:00 +0100 <maerwald> and that issue was disrupting the business
2021-11-22 15:32:05 +0100 <maerwald> and cost money
2021-11-22 15:32:12 +0100 <Franciman> it's become axiomatic
2021-11-22 15:32:17 +0100 <Franciman> either laziness or strictness
2021-11-22 15:32:20 +0100 <Franciman> how about no?
2021-11-22 15:32:51 +0100yauhsien(~yauhsien@61-231-30-221.dynamic-ip.hinet.net) (Ping timeout: 264 seconds)
2021-11-22 15:32:51 +0100neurocyte0132889(~neurocyte@user/neurocyte) (Ping timeout: 264 seconds)
2021-11-22 15:33:00 +0100 <maerwald> Franciman: by the time we have something better, I'll not be programming anymore :D
2021-11-22 15:33:02 +0100 <lortabac> Franciman: I guess you answered your own question. Optimal evaluation is not production-ready yet
2021-11-22 15:33:17 +0100 <lortabac> it's mostly a research topic AFAIK
2021-11-22 15:33:41 +0100 <Franciman> wasn't haskell the same?
2021-11-22 15:34:56 +0100CiaoSen(~Jura@p200300c95716ce002a3a4dfffe84dbd5.dip0.t-ipconnect.de) (Ping timeout: 245 seconds)
2021-11-22 15:35:41 +0100 <lortabac> Franciman: yes, it took a long time to make laziness even remotely usable
2021-11-22 15:35:53 +0100 <merijn> Not really, there were a bunch of lazy languages. Haskell exists so that people could focus their work on one language instead of reinventing the wheel every time
2021-11-22 15:35:55 +0100 <lortabac> the first IO system in Haskell was not very ergonomic
2021-11-22 15:36:16 +0100 <Franciman> merijn: not really to what?
2021-11-22 15:36:20 +0100 <lortabac> merijn: did those languages have a usable IO system?
2021-11-22 15:36:30 +0100 <Franciman> not really to not being cargo cult of laziness?
2021-11-22 15:36:31 +0100 <merijn> lortabac: Some, ys
2021-11-22 15:36:42 +0100 <Franciman> laziness as the only truth?
2021-11-22 15:37:16 +0100 <merijn> Franciman: That Haskell wasn't the only lazy language
2021-11-22 15:37:23 +0100 <Franciman> lol
2021-11-22 15:37:25 +0100 <Franciman> ok
2021-11-22 15:37:47 +0100 <merijn> The Haskell committee was *explicitly* formed to unify efforts in several lazy languages
2021-11-22 15:37:57 +0100 <Franciman> btw, I think that we could benefit from some easy tutorials on the internal STG machine
2021-11-22 15:38:00 +0100 <merijn> The first Haskell compiler was implemented in Lazy ML
2021-11-22 15:38:10 +0100 <merijn> So, obviously Haskell wasn't the first lazy language
2021-11-22 15:38:13 +0100 <Franciman> so that people get more sense of how laziness works
2021-11-22 15:38:13 +0100 <dminuoso> How can I easily share a bunch of common dependencies at preset verious in multiple components in a cabal file?
2021-11-22 15:38:17 +0100 <Franciman> instead of pretending haskell is magic
2021-11-22 15:38:21 +0100 <merijn> dminuoso: common block
2021-11-22 15:38:39 +0100 <lortabac> merijn: do you know another sane IO mechanism before monads?
2021-11-22 15:38:40 +0100 <Franciman> do we have, as a community good tutorials on STG machine?
2021-11-22 15:38:40 +0100 <merijn> dminuoso: https://github.com/merijn/Belewitte/blob/master/benchmark-analysis/benchmark-analysis.cabal#L34-L62
2021-11-22 15:38:51 +0100 <merijn> lortabac: Uniqueness types
2021-11-22 15:38:53 +0100 <merijn> lortabac: See Clean
2021-11-22 15:38:56 +0100 <dminuoso> merijn: Spot on, thanks!
2021-11-22 15:39:10 +0100 <merijn> dminuoso: You can even import multiple common blocks into one component to compose them
2021-11-22 15:39:31 +0100deadmarshal(~deadmarsh@95.38.230.45) (Ping timeout: 245 seconds)
2021-11-22 15:39:41 +0100 <maerwald> Franciman: I hate having to know internals of the compiler to understand how a language works (and behaves, operationally). The more important compiler knowledge becomes, the more broken I consider the language.
2021-11-22 15:40:03 +0100 <maerwald> which means C++ is utterly broken
2021-11-22 15:40:05 +0100 <Franciman> eh but then how do you understand haskell's computational model?
2021-11-22 15:40:08 +0100 <Franciman> if you want to optimize
2021-11-22 15:40:21 +0100 <Franciman> laziness is hard because you can't reason about it
2021-11-22 15:40:23 +0100 <Franciman> easily
2021-11-22 15:43:12 +0100 <Franciman> laziness requires graphs
2021-11-22 15:43:17 +0100 <Franciman> strictness is about trees
2021-11-22 15:43:33 +0100 <Franciman> I personally work better on trees, but just because I am more used to them
2021-11-22 15:43:43 +0100Sgeo(~Sgeo@user/sgeo)
2021-11-22 15:43:53 +0100 <Franciman> if you teach me how laziness computationally behaves, I think I can understand haskell's computational model better
2021-11-22 15:44:01 +0100 <Franciman> and fix laziness bugs earlier
2021-11-22 15:44:05 +0100nisstyre(~wes@li798-187.members.linode.com) (Changing host)
2021-11-22 15:44:05 +0100nisstyre(~wes@user/nisstyre)
2021-11-22 15:45:24 +0100 <Franciman> imho laziness is the best default when you are coding on paper and don't expect your code to run anywhere
2021-11-22 15:45:40 +0100 <Franciman> otherwise you also need to, some extent, understand the computational model of the machine
2021-11-22 15:45:58 +0100 <Franciman> hence, if you are so fond of retaining laziness, you need a way to understand how the code runs
2021-11-22 15:46:20 +0100 <maerwald> Franciman: that's a moving target
2021-11-22 15:46:40 +0100 <maerwald> inlining behavior etc changes a LOT between GHC versions
2021-11-22 15:48:23 +0100 <Franciman> then we are doomed
2021-11-22 15:48:25 +0100 <Franciman> whant can I say
2021-11-22 15:48:28 +0100 <Franciman> what*
2021-11-22 15:48:34 +0100 <Franciman> I thought haskell standard gave a semantics
2021-11-22 15:48:42 +0100 <Franciman> I understand that ghc can have its quircks
2021-11-22 15:48:50 +0100 <Franciman> but if they compose the 98% of the semantics of haskell
2021-11-22 15:48:52 +0100 <Franciman> we are doomed
2021-11-22 15:48:56 +0100 <Franciman> you can't reason about anything
2021-11-22 15:49:35 +0100 <dminuoso> You need to understand how the code runs irrspective of the language if you want performing code. And the reality is, you're going to be sad if you write code with the assumption of an implementation.
2021-11-22 15:49:53 +0100 <dminuoso> v8 made a major reengineering, which caused a massive performance degradation of thousands of JS packages
2021-11-22 15:50:06 +0100 <lortabac> I found this tool very interesting for GHC, I haven't tried it yet though: https://youtu.be/I4lnCG18TaY
2021-11-22 15:54:32 +0100 <Franciman> dminuoso: ok, but I don't have a freaking clue about what happens in my code
2021-11-22 15:54:40 +0100 <Franciman> I can only use a very abstract substitution based semantics
2021-11-22 15:54:42 +0100 <Franciman> to understand what happens
2021-11-22 15:54:53 +0100 <Franciman> it's hard to understand laziness
2021-11-22 15:55:00 +0100Lycurgus(~juan@98.4.112.204)
2021-11-22 15:55:01 +0100 <Franciman> that's why I said, probably we need to know better how ghc works
2021-11-22 15:55:14 +0100 <Franciman> if the behaviour of haskell changes 98% at every ghc version
2021-11-22 15:55:17 +0100 <Franciman> then that's a problem
2021-11-22 15:55:36 +0100 <Franciman> but if there is a core semantics, that mostly gets you an idea, that's a better approximation of saying
2021-11-22 15:55:37 +0100 <maerwald> performance properties, not behaviour
2021-11-22 15:55:37 +0100lavaman(~lavaman@98.38.249.169)
2021-11-22 15:55:39 +0100 <Franciman> uhm laziness magic!
2021-11-22 15:56:04 +0100 <Franciman> if we want the cargo cult of laziness as the ultimate magic you don't have to think about
2021-11-22 15:56:06 +0100 <Franciman> then ok
2021-11-22 15:56:16 +0100acidjnk(~acidjnk@p200300d0c7271e45b900d7f27b1ad71c.dip0.t-ipconnect.de) (Ping timeout: 265 seconds)
2021-11-22 15:56:24 +0100 <Franciman> but in practice i found myself wanting to understand what was going on
2021-11-22 15:57:35 +0100 <Franciman> imagine C++ with default lazy semantics
2021-11-22 15:57:43 +0100 <Franciman> that would be a nightmare
2021-11-22 15:57:45 +0100benin6(~benin@183.82.178.244)
2021-11-22 15:58:30 +0100 <Lycurgus> that's just like ur opinion man
2021-11-22 15:59:36 +0100 <Lycurgus> also a lot of people here think c/c++ are a nightmare regardless
2021-11-22 15:59:54 +0100benin(~benin@183.82.178.244) (Ping timeout: 268 seconds)
2021-11-22 15:59:55 +0100benin6benin
2021-11-22 16:00:08 +0100zincy_(~zincy@2a00:23c8:970c:4801:4518:ab7b:975d:2f47)
2021-11-22 16:00:09 +0100 <Franciman> now imagine mutable state + laziness
2021-11-22 16:00:20 +0100 <Franciman> + c++ quirks
2021-11-22 16:00:27 +0100lavaman(~lavaman@98.38.249.169) (Ping timeout: 264 seconds)
2021-11-22 16:01:26 +0100 <Lycurgus> a minority prolly recognize it as the defacto universal machine lang of this time
2021-11-22 16:02:23 +0100pretty_dumm_guy(trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655)
2021-11-22 16:04:01 +0100 <Lycurgus> ghc changing 98% even at every leading number change prolly wouldn work and i'm reasonably confident isn't in fact the case
2021-11-22 16:04:42 +0100 <Lycurgus> although it's rate of mutation is different than other comparable langs
2021-11-22 16:05:21 +0100 <Lycurgus> that would be like a complete rewrite on every major release
2021-11-22 16:05:56 +0100 <Lycurgus> 98% of something out the end of the thing maybe
2021-11-22 16:06:03 +0100rekahsoft(~rekahsoft@cpe0008a20f982f-cm64777d666260.cpe.net.cable.rogers.com)
2021-11-22 16:08:17 +0100zincy_(~zincy@2a00:23c8:970c:4801:4518:ab7b:975d:2f47) (Remote host closed the connection)
2021-11-22 16:08:44 +0100 <Lycurgus> *its rate
2021-11-22 16:11:06 +0100 <Franciman> Lycurgus: what I mean is probably best expressed by this meme
2021-11-22 16:11:20 +0100 <Franciman> this channel: laziness is godsent and is incredibly awesome for reasoning about code
2021-11-22 16:11:26 +0100 <Franciman> real world: *screams in all directions*
2021-11-22 16:11:34 +0100 <Franciman> so I suggested
2021-11-22 16:11:39 +0100 <Franciman> well I don't usggest
2021-11-22 16:11:49 +0100 <Lycurgus> turning it off?
2021-11-22 16:11:57 +0100 <Franciman> I suppose that if one learns a bit more about the internals of how laziness is used
2021-11-22 16:12:02 +0100 <Franciman> and executed
2021-11-22 16:12:05 +0100 <Franciman> i.e. the STG machine
2021-11-22 16:12:09 +0100 <Franciman> the screams get reduced
2021-11-22 16:13:41 +0100 <Lycurgus> telling a lisp audience that laziness sucks is like telling romance lang speakers their lang is effeminate or germans theirs is brutish
2021-11-22 16:13:51 +0100 <Lycurgus> *haskell audience
2021-11-22 16:14:42 +0100 <Franciman> I am not saying it sucks
2021-11-22 16:14:44 +0100 <Franciman> holy hell
2021-11-22 16:15:18 +0100 <lortabac> Lycurgus: they can say anything they want about my language, it's not me who invented it, I'm just a user :P
2021-11-22 16:15:25 +0100alzgh(alzgh@user/alzgh) (Remote host closed the connection)
2021-11-22 16:15:39 +0100 <lortabac> (I mean natural language)
2021-11-22 16:15:45 +0100alzgh(alzgh@user/alzgh)
2021-11-22 16:15:53 +0100 <Franciman> Lycurgus: I just said, maybe problems with laziness can be more easy to solve if we all learn about STG machine
2021-11-22 16:15:57 +0100 <Lycurgus> it's all perspective, a boon in the right mindset
2021-11-22 16:16:16 +0100 <geekosaur> not sure "the STG machine" is the right target here, either. STG is a way to efficiently do graph reduction. https://en.wikipedia.org/wiki/Graph_reduction may be more helpful
2021-11-22 16:16:22 +0100waleee(~waleee@2001:9b0:216:8200:d457:9189:7843:1dbd)
2021-11-22 16:16:38 +0100 <Franciman> I also said that I don't like the dychotomy `default laziness is of course better than strictness by default'
2021-11-22 16:16:43 +0100 <Franciman> because you have other solutions
2021-11-22 16:16:52 +0100 <geekosaur> that is, if you look for the details on STG you will find a lot of stuff on implementing it on hardware
2021-11-22 16:17:12 +0100 <geekosaur> because STG is about doing graph reduction on real hardware
2021-11-22 16:17:14 +0100 <Lycurgus> i don't wanna know about STG machine, just wanna be able to turn it off if it causes a problem I don't have time to fix right now
2021-11-22 16:18:34 +0100 <Lycurgus> in general I don't wanna know about anything internal any deeper than TH
2021-11-22 16:18:51 +0100 <geekosaur> and there is -XStrictData for that
2021-11-22 16:19:03 +0100 <Franciman> how often do you use it?
2021-11-22 16:19:11 +0100 <Franciman> rarely?
2021-11-22 16:19:20 +0100 <Lycurgus> i think people use it all the time
2021-11-22 16:19:25 +0100 <geekosaur> (-XStrict generally goes too far, you'd have to replace the Prelude and nobody has written a strict Prelude replacement yet)
2021-11-22 16:20:05 +0100 <maerwald> XStrict is also odd, I think it also depends on how you write down your functions
2021-11-22 16:20:09 +0100 <Franciman> it's been shown by maerwald that -XStrict can become dodgy
2021-11-22 16:20:14 +0100 <Franciman> oh well
2021-11-22 16:20:33 +0100 <maerwald> afair `foo x = id x` is not the same as `foo = id` under XStrict
2021-11-22 16:20:51 +0100 <merijn> Lycurgus: I'm pretty confident that the people using StrictData are the *vast* minority on hackage
2021-11-22 16:21:10 +0100 <Lycurgus> merijn, ack
2021-11-22 16:21:28 +0100pfurla(~pfurla@2804:14d:5c81:4104:d41b:9326:c4d8:9f2a)
2021-11-22 16:21:30 +0100 <lortabac> merijn: I have worked in 3 different teams, and all of them had StrictData enabled at project-level
2021-11-22 16:22:44 +0100 <geekosaur> #ghc also strongly suggests that -XStrictData is pretty common in larger environments
2021-11-22 16:22:59 +0100 <lortabac> it's recommended by some popular blog post
2021-11-22 16:23:00 +0100 <Hecate> yeah, we do so in my team as well
2021-11-22 16:23:02 +0100 <Hecate> hi lortabac o/ :)
2021-11-22 16:23:15 +0100 <lortabac> Hecate: hello :)
2021-11-22 16:23:31 +0100yauhsien(~yauhsien@61-231-30-221.dynamic-ip.hinet.net)
2021-11-22 16:23:31 +0100 <merijn> lortabac: There's lots of popular blog posts that aren't necessarily, correct, though :p
2021-11-22 16:23:47 +0100 <merijn> tbh, StrictData project wide seems like a "Go-lang" solution
2021-11-22 16:23:57 +0100dschrempf(~dominik@070-207.dynamic.dsl.fonira.net) (Quit: WeeChat 3.3)
2021-11-22 16:25:02 +0100 <merijn> In the "we can't be arsed or don't trust our juniors to be trained adequately to think about what they're doing, so we just settle for a predictable/plannable form of mediocre"-sense
2021-11-22 16:25:16 +0100 <merijn> There's certainly a business argument for that
2021-11-22 16:26:12 +0100 <maerwald> nonsense... the cases where you really need lazy data constructors isn't hard to figure out
2021-11-22 16:26:15 +0100 <merijn> But I don't like it
2021-11-22 16:26:56 +0100 <Franciman> good
2021-11-22 16:27:16 +0100 <maerwald> StrictData isn't enabled to make juniors more comfortable
2021-11-22 16:27:48 +0100hololeap(~hololeap@user/hololeap) (Ping timeout: 276 seconds)
2021-11-22 16:27:53 +0100learner-monad(~ehanneken@user/learner-monad)
2021-11-22 16:28:23 +0100hololeap(~hololeap@user/hololeap)
2021-11-22 16:28:23 +0100yauhsien(~yauhsien@61-231-30-221.dynamic-ip.hinet.net) (Ping timeout: 260 seconds)
2021-11-22 16:28:57 +0100 <maerwald> it's also enabled in network packages like warp... and Kazu isn't a junior
2021-11-22 16:29:37 +0100 <maerwald> https://github.com/yesodweb/wai/pull/752#issuecomment-501531386
2021-11-22 16:30:58 +0100shapr(~user@pool-100-36-247-68.washdc.fios.verizon.net)
2021-11-22 16:34:43 +0100learner-monad(~ehanneken@user/learner-monad) (Quit: WeeChat 3.3)
2021-11-22 16:39:06 +0100jippiedoe(~david@2a02-a44c-e14e-1-c482-95c0-575a-83bc.fixed6.kpn.net) (Ping timeout: 245 seconds)
2021-11-22 16:41:06 +0100Lycurgus(~juan@98.4.112.204) (Quit: Exeunt)
2021-11-22 16:43:57 +0100Kaiepi(~Kaiepi@156.34.44.192) (Ping timeout: 250 seconds)
2021-11-22 16:51:31 +0100learner-monad(~ehanneken@user/learner-monad)
2021-11-22 16:55:12 +0100 <vaibhavsagar[m]> we use -XStrict and -XStrictData in my work codebase
2021-11-22 16:55:32 +0100lavaman(~lavaman@98.38.249.169)
2021-11-22 16:56:55 +0100 <vaibhavsagar[m]> it's comforting to know other people do it too
2021-11-22 16:58:19 +0100hippoid(~hippoid@c-98-220-13-8.hsd1.il.comcast.net)
2021-11-22 16:58:36 +0100 <Hecate> :)
2021-11-22 16:59:43 +0100 <Hecate> < merijn> tbh, StrictData project wide seems like a "Go-lang" solution // These are strong words from someone who doesn't do it :P
2021-11-22 16:59:56 +0100lavaman(~lavaman@98.38.249.169) (Ping timeout: 245 seconds)
2021-11-22 17:00:08 +0100 <merijn> Hecate: How so?
2021-11-22 17:02:17 +0100 <Hecate> well, instead of being interested by the phenomenon and asking people *who actually do it at work all day long*, you go for statements like "Go-lang solution", "plannable form of mediocre", "we can't be arsed or don't trust our juniors"
2021-11-22 17:02:40 +0100 <Hecate> and the only valid argument that you allow is a business one even though you say that you dislike it
2021-11-22 17:03:21 +0100 <Hecate> Would you allow a valid technical argument for StrictData or shall I give the email of my senior colleagues so you can insult them directly? :)
2021-11-22 17:04:37 +0100 <hippoid> yeah, give us the emails
2021-11-22 17:04:53 +0100jippiedoe(~david@2a02-a44c-e14e-1-2aad-d997-6734-70a6.fixed6.kpn.net)
2021-11-22 17:05:10 +0100 <merijn> Hecate: I prefer to only insult vague unspecified groups of people who disagree with me, because that makes it easier to have plausible deniability of my opinion of any actual specific person :p
2021-11-22 17:05:21 +0100 <Hecate> hahahaha
2021-11-22 17:05:39 +0100 <merijn> Because it turns out insulting individuals makes it really hard to work with them, even if you're right >.>
2021-11-22 17:05:56 +0100 <Hecate> no fucking shit
2021-11-22 17:05:59 +0100 <Hecate> :p
2021-11-22 17:07:02 +0100 <merijn> Hecate: In general, the technical arguments I've seen so far don't convince me. Now, maybe I've only seen terrible technical arguments (not unlikely). I could be convinced with proper empirical science, but let's be real the state of "proper" empirical science when it comes to things as "programming language usage" is so abysmal it might as well not exist
2021-11-22 17:09:15 +0100deni_deni
2021-11-22 17:10:02 +0100 <merijn> Besides, I don't expect anyone who likes StrictData to care about my opinion on it
2021-11-22 17:10:13 +0100rekahsoft(~rekahsoft@cpe0008a20f982f-cm64777d666260.cpe.net.cable.rogers.com) (Ping timeout: 265 seconds)
2021-11-22 17:10:25 +0100kayvank(~user@52-119-115-185.PUBLIC.monkeybrains.net) (Remote host closed the connection)
2021-11-22 17:10:46 +0100xsperry(~xs@user/xsperry) (Ping timeout: 245 seconds)
2021-11-22 17:12:17 +0100 <merijn> Hecate: The main technical arguments I've seen presented in favour of it have been, essentially, "I hate having to think whether this data should be strict". Which I just haven't found to be such a huge issue, so I'm curious what the technical argument of your colleagues is if it isn't that
2021-11-22 17:13:44 +0100xsperry(~xs@user/xsperry)
2021-11-22 17:15:30 +0100puke(~puke@user/puke)
2021-11-22 17:18:58 +0100 <Hecate> merijn: because we have 150k LOC in our project and 8 years of production experience that tell us that it is the best course of action
2021-11-22 17:18:59 +0100 <sclv> i don't think there's technical arguments because in both cases you have control over strictness, and the only question is what the better default is
2021-11-22 17:19:09 +0100 <Hecate> ^ +1
2021-11-22 17:21:29 +0100 <merijn> sclv: Right, which given my previous defense of laziness means I dislike StrictData
2021-11-22 17:22:13 +0100nuh^(~nuh@68.101.63.101)
2021-11-22 17:22:15 +0100sajith_sajith
2021-11-22 17:22:19 +0100 <sclv> in my experience, it depends on what data structures you're defining. for our autogenerated Big Records that match up to other stuff going over the wire, strict by default is right
2021-11-22 17:22:33 +0100 <sclv> for our embedded ASTs, strict by default is wrong
2021-11-22 17:22:39 +0100mmhat(~mmh@55d44c37.access.ecotel.net)
2021-11-22 17:22:48 +0100 <merijn> Basically, there seems to have been a big influx of people into Haskell that seem like what they *really* want is SML. And it's kinda weird that they then keep complaining about Haskell all the time, instead of just, like, writing SML or Ocaml?
2021-11-22 17:23:09 +0100 <sclv> (i should add: strict and unpacked for those records!)
2021-11-22 17:23:12 +0100 <merijn> Like, it's fine to not like laziness
2021-11-22 17:23:28 +0100_ht(~quassel@82-169-194-8.biz.kpn.net)
2021-11-22 17:23:31 +0100 <merijn> But why you gotta keep complaining about it in Haskell discussions?
2021-11-22 17:24:18 +0100 <merijn> Ask Lennart for the mail addresses of SBC lawyers and complain at them to open source Mu instead or something >.>
2021-11-22 17:24:25 +0100 <sclv> i don't find strict data helps much with thunk leaks -- that's about writing code carefully. i do find it helps when pared with unpacking for controlling memory usage in certain specialized situations
2021-11-22 17:24:36 +0100 <merijn> Maybe legal will agree if they get annoyed too much
2021-11-22 17:26:05 +0100 <merijn> sclv: I mean, the big record case also seems fairly obvious, so I fail to see how "project wide StrictData" improves that situation.
2021-11-22 17:26:35 +0100cfricke(~cfricke@user/cfricke) (Quit: WeeChat 3.3)
2021-11-22 17:26:44 +0100 <sclv> not projectwide -- modulewide. easier to stick a pragma on top than clutter each field quite as much
2021-11-22 17:26:55 +0100 <merijn> The weirdest thing to me is people arguing "oh, but I can still make things lazy!". Ok, but then you still gotta think about what you're doing and then there's literally no benefit from StrictData except maybe "less annotations if you've got a lot of strictness"
2021-11-22 17:27:02 +0100 <merijn> sclv: Right, but nobody ever argues that
2021-11-22 17:27:16 +0100 <sclv> i do :-P
2021-11-22 17:27:17 +0100 <merijn> sclv: See in the previous discussion everyone talking about enabling it project wide
2021-11-22 17:28:24 +0100 <merijn> All the pro-StrictData discourse presents it as a magical bullet that solves all your laziness problems. Which just strikes as a weird ass position to take
2021-11-22 17:28:36 +0100 <maerwald> no one said that
2021-11-22 17:28:59 +0100 <merijn> maerwald: Lots of people say that on Twitter/issue trackers/what not
2021-11-22 17:29:02 +0100 <sclv> i do agree that there's been some overhype of it
2021-11-22 17:29:04 +0100 <c_wraith> every time I say "I write code that uses laziness and I would appreciate it if you didn't break it" I get told I'm doing it wrong
2021-11-22 17:29:14 +0100 <sclv> there's a time and place for it, and we learned it wasn't as magic as we thought
2021-11-22 17:29:32 +0100 <sclv> like there was an experimental "strict everything" pragma too iirc and it just turned out... not that helpful
2021-11-22 17:29:48 +0100 <c_wraith> yeah, so that crowd is going to be all-in on UnliftedDataTypes soon
2021-11-22 17:29:55 +0100 <c_wraith> only making things worse
2021-11-22 17:30:27 +0100fef(~thedawn@user/thedawn)
2021-11-22 17:30:48 +0100 <sclv> i mean performance is really 90% "find the tight inner loop" and 10% "do terrible things to that inner loop alone"
2021-11-22 17:30:50 +0100 <EvanR> nothing makes laziness more confusing than unexpected strictness xD
2021-11-22 17:30:54 +0100geekosaur(~geekosaur@xmonad/geekosaur) (Killed (NickServ (GHOST command used by allbery_b)))
2021-11-22 17:30:54 +0100allbery_b(~geekosaur@xmonad/geekosaur)
2021-11-22 17:30:57 +0100allbery_bgeekosaur
2021-11-22 17:31:23 +0100 <merijn> anyway
2021-11-22 17:31:34 +0100 <merijn> I gotta go dancing instead of arguing why people are wrong on the internet
2021-11-22 17:31:49 +0100 <maerwald> EvanR: yeah, like the `tar` package abusing lazy bytestring in ways that forces the entire file contents into memory
2021-11-22 17:31:55 +0100 <merijn> Before everything gets locked down again until, like, 2024 or something >.>
2021-11-22 17:32:25 +0100 <maralorn> I can contribute that I have been bitten by thinking StrictData works that way. I have a huge record, which really should be strict. But most fields are Maybes and Sets and when I disabled StrictData I wasn‘t knowledgable enough to realize how little this helps me.
2021-11-22 17:32:29 +0100 <int-e> Why does the search term "thunk cost fallacy" produce hits that have nothing to do with laziness, sad :P
2021-11-22 17:33:06 +0100 <lortabac> :D
2021-11-22 17:33:06 +0100 <sclv> lmao
2021-11-22 17:33:26 +0100cfricke(~cfricke@user/cfricke)
2021-11-22 17:33:31 +0100neurocyte0132889(~neurocyte@45.10.60.180)
2021-11-22 17:33:31 +0100neurocyte0132889(~neurocyte@45.10.60.180) (Changing host)
2021-11-22 17:33:31 +0100neurocyte0132889(~neurocyte@user/neurocyte)
2021-11-22 17:33:46 +0100 <[exa]> int-e: maybe there's no fallacy! :D
2021-11-22 17:34:18 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Quit: leaving)
2021-11-22 17:34:28 +0100cfricke(~cfricke@user/cfricke) (Client Quit)
2021-11-22 17:35:08 +0100 <[exa]> Hecate: sitting on 150kloc in haskell is one way to produce bias, honestly
2021-11-22 17:35:21 +0100 <int-e> [exa]: Tbf I'm not quite sure what that would be... but it could be a nice pun.
2021-11-22 17:39:27 +0100 <int-e> Maybe one should argue this way... Haskell is lazy by default... but that default can be changed with a pragma. So what that really means is that now there's another bit of information I need to track when reading code. :-/
2021-11-22 17:39:46 +0100 <dsal> I'm surprised again to not find an Alternative instance for Either. I feel like that surprises me a lot.
2021-11-22 17:40:04 +0100gustik(~gustik@2a01:c844:240a:de20:3606:7339:bc88:b5f5)
2021-11-22 17:40:09 +0100 <geekosaur> I feel like that's expected after Error went away?
2021-11-22 17:40:59 +0100 <dsal> I continue to not expect it. :)
2021-11-22 17:41:05 +0100 <[exa]> dsal: you may want Validation
2021-11-22 17:41:15 +0100DNH(~DNH@2a02:8108:1100:16d8:64b0:a3f2:ec06:e597) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2021-11-22 17:41:21 +0100 <lortabac> dsal: what would 'empty' be for Either a?
2021-11-22 17:41:40 +0100 <lortabac> anyway, there is Alt in semigroupoids
2021-11-22 17:41:47 +0100 <dsal> Oh, I remember Alt.
2021-11-22 17:42:41 +0100cfricke(~cfricke@user/cfricke)
2021-11-22 17:42:42 +0100eggplantade(~Eggplanta@2600:1700:bef1:5e10:dcf1:6c47:4df:1ed1)
2021-11-22 17:43:30 +0100 <int-e> dsal: I guess this happens because there are several equally plausible instances.
2021-11-22 17:44:00 +0100 <dsal> Yeah, I assume that's the case. It should just default to whatever I'm thinking is a good idea at the moment.
2021-11-22 17:44:12 +0100trcc(~trcc@2-104-60-169-cable.dk.customer.tdc.net)
2021-11-22 17:44:49 +0100 <c_wraith> that'd be the worst. someone else looks at your code and your already-compiled program changes behavior.
2021-11-22 17:44:50 +0100 <int-e> dsal: So, it should roll a die at compile time and synthesize one of the instances accordingly?
2021-11-22 17:44:51 +0100eggplantade(~Eggplanta@2600:1700:bef1:5e10:dcf1:6c47:4df:1ed1) (Remote host closed the connection)
2021-11-22 17:45:01 +0100eggplantade(~Eggplanta@2600:1700:bef1:5e10:dcf1:6c47:4df:1ed1)
2021-11-22 17:45:23 +0100 <dsal> I'm back into arguing that deeply nesting case statements isn't a good idea. Alt makes a lot of sense for this type of use case.
2021-11-22 17:45:25 +0100 <int-e> (we need more random compiler errors (cf. INTERCAL))
2021-11-22 17:46:14 +0100 <monochrom> I support enforcing UB by runtime randomization too >:)
2021-11-22 17:46:14 +0100 <int-e> dsal: maybe whoever you're arguing with isn't worth arguing with
2021-11-22 17:47:06 +0100 <dsal> At least it's a softer argument: "I really don't see the issue with code going to the right"
2021-11-22 17:47:21 +0100 <dsal> The last time it was that test code doesn't have to look like production code. Now it's actually production code. :/
2021-11-22 17:47:32 +0100 <monochrom> haha
2021-11-22 17:47:41 +0100lortabac(~lortabac@2a01:e0a:541:b8f0:7c6d:4c33:f4a3:2a22) (Quit: WeeChat 2.8)
2021-11-22 17:47:51 +0100 <int-e> . o O ( 32:9 monitors for all programmers now! )
2021-11-22 17:47:59 +0100 <c_wraith> I agree that you should keep nested cases to less than 10 levels of nesting
2021-11-22 17:48:13 +0100 <int-e> (this ultra-wide monitor trend is weird)
2021-11-22 17:48:15 +0100 <monochrom> I think 32:9 is already realized as "dual head"
2021-11-22 17:48:26 +0100cfricke(~cfricke@user/cfricke) (Quit: WeeChat 3.3)
2021-11-22 17:48:30 +0100 <int-e> monochrom: you can now get it as a single monitor
2021-11-22 17:48:33 +0100 <[exa]> dsal: what's wrong with just putting First in Validation tho? :D
2021-11-22 17:48:41 +0100 <monochrom> Yikes.
2021-11-22 17:48:44 +0100 <dsal> It's also ormolu, so each line only has like one word and there's two space indentation.
2021-11-22 17:49:07 +0100 <c_wraith> Ormolu is its own set of bad choices...
2021-11-22 17:49:30 +0100 <monochrom> ormolu helps you make your code look like Sheet Music Boss youtube videos >:)
2021-11-22 17:53:16 +0100 <monochrom> Back in the good old days, I heard this probably wise thought: If you compose a face from the most beautiful eyes, the most beautiful nose, the most beautiful mouth, ... the face can be the most ugly.
2021-11-22 17:53:32 +0100 <Hecate> int-e: +1 for "thunk cost fallacy", love it
2021-11-22 17:54:03 +0100 <monochrom> Then, around the turn of the century, someone actually did that for programming practices, called it "extreme programming".
2021-11-22 17:54:10 +0100 <Hecate> [exa]: well, it's not my first Haskell rodeo, and we have people working on the performance of our monolith, it's not something that came yesterday :P
2021-11-22 17:54:14 +0100 <monochrom> perhaps s/for/to/
2021-11-22 17:54:36 +0100 <monochrom> And now, someone does that to code layout, calls it "ormulu".
2021-11-22 17:54:50 +0100 <dsal> What is "thunk cost fallacy?"
2021-11-22 17:55:04 +0100 <EvanR> a play on words
2021-11-22 17:55:12 +0100 <dsal> Sure, but I mean what's the context?
2021-11-22 17:55:34 +0100 <dsal> There's a lot of cargo culting around strict fields in areas like the one thing we look at the one time at startup before copying it to something else.
2021-11-22 17:55:36 +0100 <monochrom> unexpected laziness and unexpected strictness
2021-11-22 17:56:21 +0100 <monochrom> and presuming that laziness hurts, strictness helps, blindly unconditionally
2021-11-22 17:56:28 +0100trcc(~trcc@2-104-60-169-cable.dk.customer.tdc.net) (Remote host closed the connection)
2021-11-22 17:56:37 +0100 <dsal> Also: That it matters at all, which is the thing I keep running into.
2021-11-22 17:56:46 +0100 <monochrom> Yeah, that too.
2021-11-22 17:57:00 +0100trcc(~trcc@2-104-60-169-cable.dk.customer.tdc.net)
2021-11-22 17:57:03 +0100 <monochrom> premature optimization again
2021-11-22 17:57:25 +0100myShoggoth(~myShoggot@97-120-85-195.ptld.qwest.net)
2021-11-22 17:57:54 +0100 <davean> Its not even an optimization
2021-11-22 17:57:58 +0100 <dsal> Why are all these types boxed? Unboxed is even more strict!
2021-11-22 17:58:35 +0100 <EvanR> unboxed linked list when
2021-11-22 17:58:37 +0100renzhi(~xp@2607:fa49:6500:b100::6e7f)
2021-11-22 17:59:04 +0100 <monochrom> Why is the unboxing day called the boxing day? >:)
2021-11-22 17:59:39 +0100 <EvanR> the phenomenon of unboxing needs a less negative word
2021-11-22 17:59:54 +0100 <EvanR> not sure what
2021-11-22 18:00:37 +0100ec(~ec@gateway/tor-sasl/ec)
2021-11-22 18:01:00 +0100 <c_wraith> boxing day is usually the day after unboxing day. Not that I know why
2021-11-22 18:01:07 +0100 <c_wraith> that seems to violate causality
2021-11-22 18:01:11 +0100trcc(~trcc@2-104-60-169-cable.dk.customer.tdc.net) (Ping timeout: 245 seconds)
2021-11-22 18:01:13 +0100tzh(~tzh@c-24-21-73-154.hsd1.or.comcast.net)
2021-11-22 18:04:39 +0100enoq(~enoq@2a05:1141:1f5:5600:b9c9:721a:599:bfe7) (Quit: enoq)
2021-11-22 18:04:55 +0100DNH(~DNH@2a02:8108:1100:16d8:64b0:a3f2:ec06:e597)
2021-11-22 18:05:42 +0100hippoid(~hippoid@c-98-220-13-8.hsd1.il.comcast.net) (Ping timeout: 268 seconds)
2021-11-22 18:05:54 +0100nschoe(~quassel@178.251.84.79)
2021-11-22 18:13:07 +0100enoq(~enoq@2a05:1141:1f5:5600:b9c9:721a:599:bfe7)
2021-11-22 18:16:11 +0100hippoid(~hippoid@c-98-220-13-8.hsd1.il.comcast.net)
2021-11-22 18:18:50 +0100 <int-e> dsal: I'm not sure yet... but something like the idea that thunks are expensive and therefore you should avoid them all by making everything strict.
2021-11-22 18:19:25 +0100 <dsal> That's what it sounded like. I think it'd be a great blog post with the three main case: True, False, Stop wasting your time.
2021-11-22 18:21:21 +0100mbuf(~Shakthi@223.178.114.167) (Quit: Leaving)
2021-11-22 18:21:29 +0100whatsupdoc(uid509081@id-509081.hampstead.irccloud.com)
2021-11-22 18:24:21 +0100hueso(~root@user/hueso) (Quit: hueso)
2021-11-22 18:25:02 +0100yauhsien(~yauhsien@61-231-30-221.dynamic-ip.hinet.net)
2021-11-22 18:25:53 +0100kuribas(~user@ptr-25vy0i9f20n8puprvgm.18120a2.ip6.access.telenet.be) (ERC (IRC client for Emacs 26.3))
2021-11-22 18:28:39 +0100benin(~benin@183.82.178.244) (Ping timeout: 264 seconds)
2021-11-22 18:29:01 +0100hueso(~root@user/hueso)
2021-11-22 18:29:27 +0100yauhsien(~yauhsien@61-231-30-221.dynamic-ip.hinet.net) (Ping timeout: 250 seconds)
2021-11-22 18:32:16 +0100 <EvanR> True, False, FileNotFound
2021-11-22 18:32:47 +0100bitdex(~bitdex@gateway/tor-sasl/bitdex)
2021-11-22 18:38:02 +0100benin(~benin@183.82.178.244)
2021-11-22 18:46:03 +0100benin(~benin@183.82.178.244) (Ping timeout: 264 seconds)
2021-11-22 18:47:01 +0100lavaman(~lavaman@98.38.249.169)
2021-11-22 18:48:08 +0100burnsidesLlama(~burnsides@dhcp168-042.wadham.ox.ac.uk)
2021-11-22 18:48:57 +0100hippoid(~hippoid@c-98-220-13-8.hsd1.il.comcast.net) (Ping timeout: 250 seconds)
2021-11-22 18:52:51 +0100cosimone(~user@2001:b07:ae5:db26:a7aa:8027:6b4e:2fb3) (Ping timeout: 245 seconds)
2021-11-22 18:54:27 +0100ph88(~ph88@95.90.240.104) (Ping timeout: 264 seconds)
2021-11-22 18:54:31 +0100waleee(~waleee@2001:9b0:216:8200:d457:9189:7843:1dbd) (Ping timeout: 245 seconds)
2021-11-22 18:54:56 +0100 <nf> int-e: how do i allow my own instance of lambdabot to import Control.Lens? should i add lens to trustedPackages? is that safe?
2021-11-22 18:56:44 +0100waleee(~waleee@h-82-196-111-63.NA.cust.bahnhof.se)
2021-11-22 18:56:57 +0100 <int-e> nf: Yes you need to trust lens to allow that. Is it safe? I don't know. Last I checked it looked like the worst thing it does is open access to `coerce`. But its huge and it's easy to miss something.
2021-11-22 18:58:38 +0100 <dsal> lens is bad because you can magnify things and start fires.
2021-11-22 18:58:43 +0100 <int-e> (Data.Coerce is unsafe... and indeed it was initially riddled with various type checking problems that allowed people to write `unsafeCoerce`. But I think they've been addressed.
2021-11-22 18:58:50 +0100 <int-e> )
2021-11-22 18:58:58 +0100 <dsal> Data.Coerce is unsafe?
2021-11-22 18:59:00 +0100 <int-e> sorry, "is unsafe" meaning it's declared as unsafe.
2021-11-22 18:59:18 +0100jonathanx(~jonathan@h-178-174-176-109.A357.priv.bahnhof.se) (Remote host closed the connection)
2021-11-22 18:59:21 +0100 <nf> by safety i really mean unability to run arbitrary IO
2021-11-22 18:59:31 +0100tromp(~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2021-11-22 18:59:37 +0100 <nf> that shouldn't be a problem, right?
2021-11-22 18:59:57 +0100 <int-e> https://gitlab.haskell.org/ghc/ghc/-/blob/master/libraries/base/Data/Coerce.hs#L1
2021-11-22 19:00:19 +0100 <dsal> Lame
2021-11-22 19:00:20 +0100 <int-e> nf: It *should*, yes.
2021-11-22 19:00:33 +0100jonathanx(~jonathan@h-178-174-176-109.A357.priv.bahnhof.se)
2021-11-22 19:02:34 +0100nvmd(~nvmd@user/nvmd)
2021-11-22 19:02:56 +0100 <nf> hm, i'm still getting "Control.Lens: Can't be safely imported! The module itself isn't safe."
2021-11-22 19:03:19 +0100econo(uid147250@user/econo)
2021-11-22 19:03:26 +0100 <int-e> you need to trust some of lens's dependencies too; profunctors in particular.
2021-11-22 19:04:03 +0100cheater(~Username@user/cheater) (Ping timeout: 256 seconds)
2021-11-22 19:04:12 +0100 <int-e> wait
2021-11-22 19:04:28 +0100jonathanx(~jonathan@h-178-174-176-109.A357.priv.bahnhof.se) (Remote host closed the connection)
2021-11-22 19:04:36 +0100cheater(~Username@user/cheater)
2021-11-22 19:04:48 +0100 <int-e> That actually sounds like safety support in Lens may have bitrotted a bit.
2021-11-22 19:05:08 +0100 <nf> still not
2021-11-22 19:05:31 +0100jonathanx(~jonathan@h-178-174-176-109.A357.priv.bahnhof.se)
2021-11-22 19:06:48 +0100 <int-e> (this lambdabot is on lens-4.19.2, I have not tried lens-5.x)
2021-11-22 19:06:54 +0100alx741(~alx741@186.178.108.219) (Ping timeout: 260 seconds)
2021-11-22 19:08:37 +0100 <int-e> anyway, I usually try these things out with ghci -XSafe (invoking mueval directly is also an option, but lambdabot's truncated error messages aren't helpful for tracking these things down)
2021-11-22 19:09:51 +0100 <nf> how can i know which module is causing the unsafeness with ghci?
2021-11-22 19:09:59 +0100 <int-e> huh, actually 4.19.2 seems to require a patch too: https://github.com/lambdabot/lambdabot/blob/libera/patches/lens-4.19.2.patch
2021-11-22 19:11:20 +0100 <nf> :/
2021-11-22 19:11:29 +0100hippoid(~hippoid@c-98-220-13-8.hsd1.il.comcast.net)
2021-11-22 19:11:52 +0100 <int-e> nf: well it alrady told you that Control.Lens isn't safe. Since Control.Lens isn't marked as Trustworthy, that is an inferred property. So you can import the modules it depends on to narrow things down.
2021-11-22 19:12:17 +0100 <nf> i see
2021-11-22 19:12:27 +0100 <int-e> It's no fun... there's no tooling (beyond ghci) around SafeHaskell as far as I know.
2021-11-22 19:12:45 +0100 <nf> disclaimer i have no idea what Trustworthy or even Safe mean
2021-11-22 19:13:37 +0100 <int-e> "Trustworthy" is how you override the inferred unsafety of a module: if the user trusts the package that contains a Trustworthy module, then that module can be imported from Safe modules.
2021-11-22 19:14:37 +0100 <int-e> So... "inferred safe" basically means that all imports are Safe or trusted and Trustworthy.
2021-11-22 19:14:57 +0100 <nf> ok
2021-11-22 19:16:11 +0100hippoid(~hippoid@c-98-220-13-8.hsd1.il.comcast.net) (Ping timeout: 245 seconds)
2021-11-22 19:16:30 +0100xkuru(~xkuru@user/xkuru)
2021-11-22 19:16:42 +0100DNH(~DNH@2a02:8108:1100:16d8:64b0:a3f2:ec06:e597) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2021-11-22 19:17:01 +0100 <int-e> nf: Huh, apparently profunctors doesn't need to be trusted anymore. https://github.com/lambdabot/lambdabot/blob/libera/lambdabot/scripts/online/run.sh#L4-L15 is what lambdabot uses (with lens-4.19.2 plus the above patch)
2021-11-22 19:17:16 +0100DNH(~DNH@2a02:8108:1100:16d8:64b0:a3f2:ec06:e597)
2021-11-22 19:19:04 +0100 <nf> thanks
2021-11-22 19:20:39 +0100 <nf> so apparently Control.Lens.Equality imports GHC.Exts which is unsafe
2021-11-22 19:21:13 +0100hippoid(~hippoid@c-98-220-13-8.hsd1.il.comcast.net)
2021-11-22 19:21:26 +0100 <nf> right, this is what your patch is about
2021-11-22 19:21:45 +0100pfurla(~pfurla@2804:14d:5c81:4104:d41b:9326:c4d8:9f2a) (Quit: gone to sleep. ZZZzzz…)
2021-11-22 19:21:46 +0100 <nf> should that patch be upstreamed maybe?
2021-11-22 19:22:03 +0100nschoe(~quassel@178.251.84.79) (Ping timeout: 264 seconds)
2021-11-22 19:22:16 +0100 <int-e> undoubtedly
2021-11-22 19:22:25 +0100 <int-e> I'd do it to if I wasn't so great at procrastination
2021-11-22 19:22:27 +0100 <nf> oh https://github.com/ekmett/lens/blob/master/src/Control/Lens/Equality.hs#L7
2021-11-22 19:22:42 +0100 <nf> you did it 2 years ago lmao
2021-11-22 19:22:47 +0100 <int-e> Ah.
2021-11-22 19:22:57 +0100 <nf> more like precrastination
2021-11-22 19:23:13 +0100 <int-e> well, one year ago
2021-11-22 19:23:14 +0100mvk(~mvk@2607:fea8:5cc1:fa00::4702)
2021-11-22 19:23:40 +0100 <int-e> Let's meet in the middle, 1 1/2.
2021-11-22 19:23:47 +0100 <nf> right
2021-11-22 19:24:03 +0100 <nf> anyway, that's in v5 and i just realised i'm also on 4.19.2
2021-11-22 19:24:25 +0100 <nf> i think i will figure this out now
2021-11-22 19:24:27 +0100 <nf> thanks for your help
2021-11-22 19:25:50 +0100cosimone(~user@2001:b07:ae5:db26:a7aa:8027:6b4e:2fb3)
2021-11-22 19:31:47 +0100yauhsien(~yauhsien@61-231-30-221.dynamic-ip.hinet.net)
2021-11-22 19:31:55 +0100gdown(~gavin@h69-11-248-109.kndrid.broadband.dynamic.tds.net)
2021-11-22 19:32:23 +0100pavonia(~user@user/siracusa)
2021-11-22 19:34:25 +0100 <nf> it works with 5.0.1 :)
2021-11-22 19:34:28 +0100deadmarshal(~deadmarsh@95.38.230.45)
2021-11-22 19:39:06 +0100yauhsien(~yauhsien@61-231-30-221.dynamic-ip.hinet.net) (Ping timeout: 260 seconds)
2021-11-22 19:40:05 +0100cosimone`(~user@2001:b07:ae5:db26:a7aa:8027:6b4e:2fb3)
2021-11-22 19:41:42 +0100cosimone(~user@2001:b07:ae5:db26:a7aa:8027:6b4e:2fb3) (Read error: Connection reset by peer)
2021-11-22 19:41:51 +0100hippoid(~hippoid@c-98-220-13-8.hsd1.il.comcast.net) (Ping timeout: 264 seconds)
2021-11-22 19:42:15 +0100jippiedoe(~david@2a02-a44c-e14e-1-2aad-d997-6734-70a6.fixed6.kpn.net) (Ping timeout: 250 seconds)
2021-11-22 19:43:24 +0100hippoid(~hippoid@c-98-220-13-8.hsd1.il.comcast.net)
2021-11-22 19:46:11 +0100benin(~benin@183.82.179.164)
2021-11-22 19:48:45 +0100lavaman(~lavaman@98.38.249.169) (Ping timeout: 265 seconds)
2021-11-22 19:49:19 +0100alx741(~alx741@186.178.108.219)
2021-11-22 19:51:36 +0100cosimone`(~user@2001:b07:ae5:db26:a7aa:8027:6b4e:2fb3) (Ping timeout: 245 seconds)
2021-11-22 19:52:51 +0100 <dsal> Does `T {..}` look better than `T{..}` to people? That space always looks weird to me.
2021-11-22 19:53:42 +0100 <nf> definitely looks better
2021-11-22 19:54:09 +0100 <EvanR> T <backspace> { double strike would save space and still be recognizable xD
2021-11-22 19:55:37 +0100 <geekosaur> narrow space? :þ
2021-11-22 19:59:15 +0100hippoid(~hippoid@c-98-220-13-8.hsd1.il.comcast.net) (Ping timeout: 264 seconds)
2021-11-22 20:01:00 +0100bitdex(~bitdex@gateway/tor-sasl/bitdex) (Ping timeout: 276 seconds)
2021-11-22 20:01:30 +0100neurocyte0132889(~neurocyte@user/neurocyte) (Quit: The Lounge - https://thelounge.chat)
2021-11-22 20:04:05 +0100 <dsal> nf: space looks better you say?
2021-11-22 20:04:24 +0100 <dsal> It's not the space savings, it's' just that it ends up looking like a distinct argument.
2021-11-22 20:05:01 +0100 <EvanR> T {..} looks like application, T{..} looks like an atomic piece of syntax
2021-11-22 20:05:03 +0100 <dsal> So my brain has to compensate and think "no wait, this is part of the previous argument, it's just got a space in the middle for some reason"
2021-11-22 20:05:32 +0100max22-(~maxime@lfbn-ren-1-762-224.w81-53.abo.wanadoo.fr) (Ping timeout: 240 seconds)
2021-11-22 20:06:03 +0100nschoe(~quassel@2a01:e0a:8e:a190:c8ff:e615:b6b0:62dc)
2021-11-22 20:06:03 +0100nschoe(~quassel@2a01:e0a:8e:a190:c8ff:e615:b6b0:62dc) (Client Quit)
2021-11-22 20:06:08 +0100raehik1(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
2021-11-22 20:06:22 +0100 <monochrom> "T {..}" has the benefit of being consistent with "Just 5".
2021-11-22 20:06:49 +0100 <monochrom> "T{..}" has the benefit of following the Python style guide that you don't need a space here.
2021-11-22 20:06:57 +0100 <dsal> But you can't write `f Just 5 = ...`
2021-11-22 20:08:24 +0100 <EvanR> record syntax shouldn't be confused for application
2021-11-22 20:08:51 +0100 <EvanR> it's hard enough to get people on board with f x xD
2021-11-22 20:09:07 +0100 <monochrom> That is orthogonal to coding style, IMO.
2021-11-22 20:09:10 +0100 <int-e> nf: good to know ("works with 5.0.1")
2021-11-22 20:09:22 +0100tromp(~textual@dhcp-077-249-230-040.chello.nl)
2021-11-22 20:09:26 +0100deadmarshal(~deadmarsh@95.38.230.45) (Ping timeout: 260 seconds)
2021-11-22 20:10:00 +0100 <dsal> It doesn't *really* matter, as ormolu's gonna ormolu. I'm just surprised that it looks clear to people.
2021-11-22 20:10:06 +0100trcc(~trcc@2-104-60-169-cable.dk.customer.tdc.net)
2021-11-22 20:10:43 +0100 <dsal> Speaking of things that look clear to people, inline per-character color coded diffs of expected vs. got output are hilarious.
2021-11-22 20:15:57 +0100 <tomsmeding> % import Control.Concurrent
2021-11-22 20:15:57 +0100 <yahb> tomsmeding:
2021-11-22 20:15:59 +0100 <tomsmeding> % forkIO (putStrLn "hello") >> forkIO (putStrLn "goodbye")
2021-11-22 20:15:59 +0100 <yahb> tomsmeding: ThhgreoeloalddobI; yde ; 95
2021-11-22 20:16:05 +0100 <tomsmeding> dsal: does it look like that?
2021-11-22 20:16:12 +0100 <dsal> Yes, but in color!
2021-11-22 20:16:26 +0100 <dsal> I can kind of read it when I try hard.
2021-11-22 20:16:34 +0100 <tomsmeding> beautiful
2021-11-22 20:16:45 +0100 <dsal> It's beginning to look a lot like Christmas.
2021-11-22 20:16:55 +0100 <tomsmeding> maybe there's a reason then
2021-11-22 20:17:09 +0100dsalwages war on Christmas
2021-11-22 20:17:30 +0100 <tomsmeding> with ghc?
2021-11-22 20:18:09 +0100 <dsal> This is someone's test framework thing.
2021-11-22 20:18:23 +0100 <dsal> But I do have a ghc problem. The line editing stuff is completely wrecked.
2021-11-22 20:18:32 +0100 <dsal> Has anyone heard of completely wrecked line editing stuff in ghc?
2021-11-22 20:19:09 +0100 <dsal> er ghci
2021-11-22 20:19:39 +0100raehik1(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 264 seconds)
2021-11-22 20:19:41 +0100 <tomsmeding> I've had it before, and I vaguely recall it having to do with changing the window size and then editing a multiline command
2021-11-22 20:19:54 +0100 <xerox> dsal: what os and versuon
2021-11-22 20:20:14 +0100 <geekosaur> there was also a report of it being broken in 9.0.1 on arm, iirc
2021-11-22 20:20:15 +0100 <xerox> that's what I get for trying to type with gloves on
2021-11-22 20:20:36 +0100 <geekosaur> which is probably what xerox is asking about :þ
2021-11-22 20:20:44 +0100 <dsal> Yeah, it's that one.
2021-11-22 20:20:47 +0100 <xerox> yep! that one has been solved! :-)
2021-11-22 20:21:00 +0100 <xerox> an ffi mismatch with made wrong ioctls
2021-11-22 20:21:02 +0100 <dsal> Oh cool. Actually, this one is 8.10.7
2021-11-22 20:21:29 +0100 <xerox> if you want a workaround you can do "TERM=dumb ghci"
2021-11-22 20:21:37 +0100raehik1(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
2021-11-22 20:21:45 +0100 <xerox> till you get a fixed version
2021-11-22 20:21:54 +0100 <dsal> I don't want dumb ghci :(
2021-11-22 20:22:05 +0100 <dsal> dsmac:tesla dustin$ TERM=dumb stack ghci
2021-11-22 20:22:05 +0100 <dsal> Segmentation fault: 11
2021-11-22 20:22:08 +0100 <dsal> Oh good, I don't get one.
2021-11-22 20:22:14 +0100 <xerox> ooops
2021-11-22 20:22:30 +0100 <dsal> It *almost* works.
2021-11-22 20:22:31 +0100 <tomsmeding> terminal is too smart for you, rejects being made dumb
2021-11-22 20:22:38 +0100tromp(~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2021-11-22 20:23:42 +0100 <xerox> I ended up compiling a fixed ghc and that was that
2021-11-22 20:23:54 +0100pfurla(~pfurla@2804:14d:5c81:4104:d41b:9326:c4d8:9f2a)
2021-11-22 20:23:59 +0100neurocyte0132889(~neurocyte@user/neurocyte)
2021-11-22 20:24:16 +0100jippiedoe(~david@2a02-a44c-e14e-1-3aa6-b22c-891-c248.fixed6.kpn.net)
2021-11-22 20:26:59 +0100 <monochrom> perhaps TERM=vt100 works a bit better
2021-11-22 20:27:52 +0100 <awpr> I've had broken line editing in ghci resulting from using color sequences without the appropriate width annotations
2021-11-22 20:28:05 +0100 <geekosaur> still runs into the terminal ioctls being wrong
2021-11-22 20:28:12 +0100 <monochrom> Ah OK.
2021-11-22 20:28:20 +0100 <awpr> does it go horribly wrong when line-wrapping a long line, and put the cursor in the wrong place?
2021-11-22 20:28:27 +0100fef(~thedawn@user/thedawn) (Remote host closed the connection)
2021-11-22 20:28:28 +0100 <geekosaur> this is an FFI issue, the only way TERM helps is TERM=dumb prevents them from being used at all
2021-11-22 20:29:30 +0100tromp(~textual@dhcp-077-249-230-040.chello.nl)
2021-11-22 20:33:27 +0100jonathanx(~jonathan@h-178-174-176-109.A357.priv.bahnhof.se) (Ping timeout: 264 seconds)
2021-11-22 20:33:49 +0100 <dsal> mine goes horribly wrong whenever I edit anything. Trying to insert characters just mangles everything.
2021-11-22 20:34:44 +0100 <xerox> do you have haskeline customizations?
2021-11-22 20:35:07 +0100 <awpr> ok, probably a different issue then. here's a reference for the ANSI escape sequence issue I had, though: https://github.com/judah/haskeline/wiki/ControlSequencesInPrompt
2021-11-22 20:38:48 +0100ByronJohnson(~bairyn@50-250-232-19-static.hfc.comcastbusiness.net) (Remote host closed the connection)
2021-11-22 20:39:32 +0100unit73e(~emanuel@2001:818:e8dd:7c00:32b5:c2ff:fe6b:5291)
2021-11-22 20:41:36 +0100tromp(~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2021-11-22 20:42:01 +0100max22-(~maxime@2a01cb0883359800a5783feecd0598ff.ipv6.abo.wanadoo.fr)
2021-11-22 20:47:44 +0100alzgh(alzgh@user/alzgh) (Remote host closed the connection)
2021-11-22 20:48:04 +0100alzgh(alzgh@user/alzgh)
2021-11-22 20:49:02 +0100 <dsal> xerox: I don't think I have anything fancy. This is the only thing that's kind of broken when I switch to the native build.
2021-11-22 20:50:32 +0100tromp(~textual@dhcp-077-249-230-040.chello.nl)
2021-11-22 20:50:44 +0100hippoid(~hippoid@c-98-220-13-8.hsd1.il.comcast.net)
2021-11-22 20:52:01 +0100duckonomy(~duckonomy@177.ip-144-217-84.net) (*.net *.split)
2021-11-22 20:52:01 +0100marienz(~marienz@libera/staff/marienz) (*.net *.split)
2021-11-22 20:52:01 +0100Inoperable(~PLAYER_1@fancydata.science) (*.net *.split)
2021-11-22 20:52:01 +0100dkeohane2(~dkeohane@ec2-18-189-29-140.us-east-2.compute.amazonaws.com) (*.net *.split)
2021-11-22 20:52:13 +0100marienz(~marienz@libera/staff/marienz)
2021-11-22 20:52:32 +0100yauhsien(~yauhsien@61-231-30-221.dynamic-ip.hinet.net)
2021-11-22 20:52:40 +0100dkeohane2(~dkeohane@ec2-18-189-29-140.us-east-2.compute.amazonaws.com)
2021-11-22 20:53:21 +0100Inoperable(~PLAYER_1@fancydata.science)
2021-11-22 20:53:52 +0100duckonomy(~duckonomy@177.ip-144-217-84.net)
2021-11-22 20:57:01 +0100yauhsien(~yauhsien@61-231-30-221.dynamic-ip.hinet.net) (Ping timeout: 245 seconds)
2021-11-22 20:58:41 +0100hippoid(~hippoid@c-98-220-13-8.hsd1.il.comcast.net) (Ping timeout: 245 seconds)
2021-11-22 20:59:47 +0100burnsidesLlama(~burnsides@dhcp168-042.wadham.ox.ac.uk) (Remote host closed the connection)
2021-11-22 21:00:18 +0100wootehfoot(~wootehfoo@user/wootehfoot)
2021-11-22 21:00:20 +0100hippoid(~hippoid@c-98-220-13-8.hsd1.il.comcast.net)
2021-11-22 21:00:33 +0100epolanski(uid312403@id-312403.helmsley.irccloud.com) (Quit: Connection closed for inactivity)
2021-11-22 21:04:43 +0100pfurla(~pfurla@2804:14d:5c81:4104:d41b:9326:c4d8:9f2a) (Quit: gone to sleep. ZZZzzz…)
2021-11-22 21:04:45 +0100wootehfoot(~wootehfoo@user/wootehfoot) (Read error: Connection reset by peer)
2021-11-22 21:05:25 +0100enoq(~enoq@2a05:1141:1f5:5600:b9c9:721a:599:bfe7) (Quit: enoq)
2021-11-22 21:05:26 +0100juhp(~juhp@128.106.188.82) (Ping timeout: 260 seconds)
2021-11-22 21:06:00 +0100hololeap(~hololeap@user/hololeap) (Ping timeout: 276 seconds)
2021-11-22 21:06:22 +0100hololeap(~hololeap@user/hololeap)
2021-11-22 21:06:24 +0100pfurla(~pfurla@2804:14d:5c81:4104:d09a:3c35:dab9:95ad)
2021-11-22 21:06:31 +0100tromp(~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2021-11-22 21:07:06 +0100juhp(~juhp@128.106.188.82)
2021-11-22 21:11:33 +0100deadmarshal(~deadmarsh@95.38.230.45)
2021-11-22 21:12:01 +0100hippoid(~hippoid@c-98-220-13-8.hsd1.il.comcast.net) (Ping timeout: 245 seconds)
2021-11-22 21:12:39 +0100hippoid(~hippoid@c-98-220-13-8.hsd1.il.comcast.net)
2021-11-22 21:13:09 +0100hololeap(~hololeap@user/hololeap) (Ping timeout: 276 seconds)
2021-11-22 21:13:50 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-11-22 21:15:14 +0100tromp(~textual@dhcp-077-249-230-040.chello.nl)
2021-11-22 21:15:25 +0100hololeap(~hololeap@user/hololeap)
2021-11-22 21:16:05 +0100deadmarshal(~deadmarsh@95.38.230.45) (Ping timeout: 256 seconds)
2021-11-22 21:17:47 +0100hippoid(~hippoid@c-98-220-13-8.hsd1.il.comcast.net) (Ping timeout: 256 seconds)
2021-11-22 21:25:30 +0100myShoggoth(~myShoggot@97-120-85-195.ptld.qwest.net) (Ping timeout: 268 seconds)
2021-11-22 21:26:06 +0100cjb(~cjb@user/cjb)
2021-11-22 21:26:31 +0100trcc(~trcc@2-104-60-169-cable.dk.customer.tdc.net) (Remote host closed the connection)
2021-11-22 21:27:03 +0100trcc(~trcc@2-104-60-169-cable.dk.customer.tdc.net)
2021-11-22 21:27:37 +0100pfurla(~pfurla@2804:14d:5c81:4104:d09a:3c35:dab9:95ad) (Quit: gone to sleep. ZZZzzz…)
2021-11-22 21:28:43 +0100hippoid(~hippoid@c-98-220-13-8.hsd1.il.comcast.net)
2021-11-22 21:31:11 +0100trcc(~trcc@2-104-60-169-cable.dk.customer.tdc.net) (Ping timeout: 245 seconds)
2021-11-22 21:31:27 +0100trcc(~trcc@2-104-60-169-cable.dk.customer.tdc.net)
2021-11-22 21:32:21 +0100myShoggoth(~myShoggot@97-120-85-195.ptld.qwest.net)
2021-11-22 21:33:27 +0100perrierjouet(~perrier-j@modemcable012.251-130-66.mc.videotron.ca) (Quit: WeeChat 3.3)
2021-11-22 21:34:31 +0100waleee(~waleee@h-82-196-111-63.NA.cust.bahnhof.se) (Ping timeout: 245 seconds)
2021-11-22 21:36:05 +0100reumeth(~reumeth@user/reumeth)
2021-11-22 21:36:27 +0100alx741(~alx741@186.178.108.219) (Ping timeout: 264 seconds)
2021-11-22 21:38:52 +0100waleee(~waleee@2001:9b0:216:8200:d457:9189:7843:1dbd)
2021-11-22 21:39:26 +0100 <reumeth> I'm new to Haskell trying to make a function Aeson.Value -> Aeson.Value that fuzzes JSON values. I managed to create a deterministic function of that type, but I really want the function to replace all strings with random string/int (kind of like the strings/ints QuickCheck generates)
2021-11-22 21:40:27 +0100 <reumeth> Since I want some randomness it feels like I have to do this in IO or something? Or at least seed some generator and send it as an argument to my function?
2021-11-22 21:40:49 +0100hippoid_(~hippoid@c-98-220-13-8.hsd1.il.comcast.net)
2021-11-22 21:41:28 +0100 <geekosaur> the ideal way to use randomness is indeed you seed it in IO and pass the generator around
2021-11-22 21:42:11 +0100 <geekosaur> System.Random has a number of functions that will help you do this, and you can pick a number of RNG backends
2021-11-22 21:42:21 +0100 <reumeth> Is there a way to reuse the strings/ints Quickcheck generates?
2021-11-22 21:42:25 +0100 <geekosaur> ("random" package)
2021-11-22 21:42:46 +0100 <reumeth> geekosaur: That will only fix my random integer problem though, right?
2021-11-22 21:43:02 +0100 <geekosaur> you can use `arbitrary` but you'll pull in QuickCheck and its dependencies and you might find that a little heavy just for `arbitrary`
2021-11-22 21:43:15 +0100 <geekosaur> there are ways to generate random strings and such as well
2021-11-22 21:43:16 +0100hippoid(~hippoid@c-98-220-13-8.hsd1.il.comcast.net) (Ping timeout: 245 seconds)
2021-11-22 21:43:42 +0100hololeap(~hololeap@user/hololeap) (Ping timeout: 276 seconds)
2021-11-22 21:43:50 +0100 <geekosaur> (every so often one wishes `arbitrary` were available separately from QC for things like this)
2021-11-22 21:43:57 +0100hololeap(~hololeap@user/hololeap)
2021-11-22 21:44:04 +0100 <reumeth> geekosaur: For me that will be fine. I like the fact that QuickCheck has lots of different generator like (valid utf8 strings, random bytestrings etc)
2021-11-22 21:44:36 +0100[Kalisto](~nico@user/kalisto/x-8968079) (The Lounge - https://thelounge.chat)
2021-11-22 21:44:45 +0100 <reumeth> I'm just struggling to see where/how I can use the arbitrary from QC
2021-11-22 21:45:16 +0100_ht(~quassel@82-169-194-8.biz.kpn.net) (Remote host closed the connection)
2021-11-22 21:45:36 +0100hippoid_(~hippoid@c-98-220-13-8.hsd1.il.comcast.net) (Client Quit)
2021-11-22 21:45:48 +0100hippoid(~hippoid@c-98-220-13-8.hsd1.il.comcast.net)
2021-11-22 21:46:04 +0100ByronJohnson(~bairyn@50-250-232-19-static.hfc.comcastbusiness.net)
2021-11-22 21:46:08 +0100HuGoDrOcHa(~hugodroch@179.158.241.142)
2021-11-22 21:47:13 +0100 <reumeth> Right now my fuzz function is stupid and is of the form: fuzz (Array x) = map fuzz x; fuzz (Number x) = Number (x + 1) etc.
2021-11-22 21:47:14 +0100vicfred(~vicfred@user/vicfred)
2021-11-22 21:47:57 +0100 <reumeth> I'm pretty sure I can't just add QC.arbitrary stuff inside here, at least the signature of fuzz will have to change, right?
2021-11-22 21:48:45 +0100 <geekosaur> yes
2021-11-22 21:49:06 +0100 <geekosaur> https://hackage.haskell.org/package/QuickCheck-2.14.2/docs/Test-QuickCheck-Gen.html#t:Gen
2021-11-22 21:49:29 +0100 <geekosaur> it's a monad, so your signature becomes Aeson.Value -> Gen Aeson.Value
2021-11-22 21:49:47 +0100 <HuGoDrOcHa> ?
2021-11-22 21:50:09 +0100 <geekosaur> …yes?
2021-11-22 21:50:18 +0100 <HuGoDrOcHa> yes
2021-11-22 21:50:23 +0100alx741(~alx741@186.178.108.244)
2021-11-22 21:50:51 +0100 <reumeth> geekosaur: Hm, ok I'll try to see if I can get any further. Thanks
2021-11-22 21:50:53 +0100eggplantade(~Eggplanta@2600:1700:bef1:5e10:dcf1:6c47:4df:1ed1) (Remote host closed the connection)
2021-11-22 21:51:47 +0100HuGoDrOcHa(~hugodroch@179.158.241.142) ()
2021-11-22 21:54:06 +0100hololeap(~hololeap@user/hololeap) (Ping timeout: 276 seconds)
2021-11-22 21:54:31 +0100hololeap(~hololeap@user/hololeap)
2021-11-22 21:55:46 +0100zincy_(~zincy@2a00:23c8:970c:4801:4518:ab7b:975d:2f47)
2021-11-22 21:58:03 +0100myShoggoth(~myShoggot@97-120-85-195.ptld.qwest.net) (Ping timeout: 264 seconds)
2021-11-22 21:58:07 +0100acidjnk(~acidjnk@p200300d0c7271e823d8ddc81d8ce7005.dip0.t-ipconnect.de)
2021-11-22 21:59:31 +0100hololeap_(~hololeap@user/hololeap)
2021-11-22 21:59:53 +0100ec(~ec@gateway/tor-sasl/ec) (Remote host closed the connection)
2021-11-22 22:00:34 +0100myShoggoth(~myShoggot@97-120-85-195.ptld.qwest.net)
2021-11-22 22:01:15 +0100hololeap(~hololeap@user/hololeap) (Ping timeout: 276 seconds)
2021-11-22 22:02:03 +0100eggplantade(~Eggplanta@2600:1700:bef1:5e10:dcf1:6c47:4df:1ed1)
2021-11-22 22:03:09 +0100tromp(~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2021-11-22 22:03:46 +0100hololeap(~hololeap@user/hololeap)
2021-11-22 22:04:47 +0100Inoperable(~PLAYER_1@fancydata.science) (Excess Flood)
2021-11-22 22:05:45 +0100jippiedoe(~david@2a02-a44c-e14e-1-3aa6-b22c-891-c248.fixed6.kpn.net) (Quit: Leaving)
2021-11-22 22:05:48 +0100hololeap_(~hololeap@user/hololeap) (Ping timeout: 276 seconds)
2021-11-22 22:06:03 +0100Kaiepi(~Kaiepi@156.34.44.192)
2021-11-22 22:07:05 +0100ec(~ec@gateway/tor-sasl/ec)
2021-11-22 22:09:07 +0100blackcap(~blackcap@144.89-10-135.nextgentel.com) (Remote host closed the connection)
2021-11-22 22:10:09 +0100vysn(~vysn@user/vysn)
2021-11-22 22:12:54 +0100pfurla(~pfurla@2804:14d:5c81:4104:d09a:3c35:dab9:95ad)
2021-11-22 22:14:15 +0100Inoperable(~PLAYER_1@fancydata.science)
2021-11-22 22:15:00 +0100trcc(~trcc@2-104-60-169-cable.dk.customer.tdc.net) (Remote host closed the connection)
2021-11-22 22:16:03 +0100hippoid(~hippoid@c-98-220-13-8.hsd1.il.comcast.net) (Ping timeout: 264 seconds)
2021-11-22 22:16:05 +0100kupi(uid212005@id-212005.hampstead.irccloud.com)
2021-11-22 22:16:22 +0100tromp(~textual@dhcp-077-249-230-040.chello.nl)
2021-11-22 22:18:09 +0100ec(~ec@gateway/tor-sasl/ec) (Ping timeout: 276 seconds)
2021-11-22 22:19:46 +0100ec(~ec@gateway/tor-sasl/ec)
2021-11-22 22:21:06 +0100nvmd(~nvmd@user/nvmd) (Quit: Later, nerds.)
2021-11-22 22:22:07 +0100justsomeguy(~justsomeg@user/justsomeguy)
2021-11-22 22:23:30 +0100Midjak(~Midjak@82-65-111-221.subs.proxad.net)
2021-11-22 22:23:36 +0100hippoid(~hippoid@c-98-220-13-8.hsd1.il.comcast.net)
2021-11-22 22:23:47 +0100perrierjouet(~perrier-j@modemcable012.251-130-66.mc.videotron.ca)
2021-11-22 22:24:08 +0100eggplantade(~Eggplanta@2600:1700:bef1:5e10:dcf1:6c47:4df:1ed1) (Remote host closed the connection)
2021-11-22 22:31:03 +0100 <jle`> anyone familiar with the Cabal library? is there any -> IO PackageDescription function to get the description of the current project?
2021-11-22 22:31:07 +0100tromp(~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2021-11-22 22:31:36 +0100reumeth(~reumeth@user/reumeth) (Ping timeout: 245 seconds)
2021-11-22 22:32:45 +0100 <jle`> hm i guess i could use Distribution.Parsec (maybe?) but i'd still need to get the cabal file name
2021-11-22 22:33:34 +0100 <sclv> jle`: yeah given a file there's easy functions to read the package description
2021-11-22 22:33:58 +0100 <jle`> hm, is there a way to get the name of the current project? is that what that Paths_ module is for?
2021-11-22 22:34:02 +0100 <sclv> but not sure what the easy function is to pick the "right" filename
2021-11-22 22:34:47 +0100 <maerwald> https://hackage.haskell.org/package/Cabal-3.6.2.0/docs/Distribution-PackageDescription-Parsec.html…
2021-11-22 22:34:51 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds)
2021-11-22 22:36:21 +0100 <jle`> whoa there's both a Distribution.PackageDescription and a Description.Types.PackageDescription, thanks for the tip
2021-11-22 22:36:52 +0100 <jle`> hm, is the ByteString option here the contents of the file?
2021-11-22 22:36:57 +0100 <jle`> s/option/argument
2021-11-22 22:36:57 +0100 <sclv> yes
2021-11-22 22:37:27 +0100 <jle`> ah, thanks
2021-11-22 22:37:33 +0100 <jle`> hm i guess i just have to find a way to get the project name then
2021-11-22 22:37:43 +0100 <jle`> or i guess i could glob for *.cabal
2021-11-22 22:38:44 +0100 <maerwald> https://hackage.haskell.org/package/filepattern
2021-11-22 22:41:10 +0100zincy_(~zincy@2a00:23c8:970c:4801:4518:ab7b:975d:2f47) (Remote host closed the connection)
2021-11-22 22:41:38 +0100 <jle`> ooh thanks :)
2021-11-22 22:41:43 +0100pfurla(~pfurla@2804:14d:5c81:4104:d09a:3c35:dab9:95ad) (Quit: gone to sleep. ZZZzzz…)
2021-11-22 22:43:15 +0100 <jle`> and then i can use it with getDatadir
2021-11-22 22:43:17 +0100 <sclv> the cabal logic as i understand it is it just looks for a unique file and throws if there's more than one and none is explicitly specified
2021-11-22 22:44:51 +0100 <jle`> yeah, i meant i can use it to get the directory to search in
2021-11-22 22:45:04 +0100 <sclv> jle`: ooh, found it! https://hackage.haskell.org/package/Cabal-3.6.2.0/docs/Distribution-Simple-Utils.html#v:defaultPac…
2021-11-22 22:45:34 +0100 <jle`> :O
2021-11-22 22:45:51 +0100 <jle`> sweet, thanks a bunch
2021-11-22 22:47:24 +0100ec(~ec@gateway/tor-sasl/ec) (Ping timeout: 276 seconds)
2021-11-22 22:50:35 +0100hiruji(~hiruji@user/hiruji) (Quit: ZNC 1.8.2 - https://znc.in)
2021-11-22 22:50:50 +0100ec(~ec@gateway/tor-sasl/ec)
2021-11-22 22:50:52 +0100hiruji(~hiruji@user/hiruji)
2021-11-22 22:51:28 +0100pfurla(~pfurla@2804:14d:5c81:4104:d09a:3c35:dab9:95ad)
2021-11-22 22:53:51 +0100hippoid(~hippoid@c-98-220-13-8.hsd1.il.comcast.net) (Ping timeout: 264 seconds)
2021-11-22 22:54:04 +0100hippoid(~hippoid@c-98-220-13-8.hsd1.il.comcast.net)
2021-11-22 22:54:10 +0100yauhsien(~yauhsien@61-231-30-221.dynamic-ip.hinet.net)
2021-11-22 22:55:56 +0100 <[itchyjunk]> Hi, wondering if this makes sense `if fst(divMod n 10) == 0 then snd(divMod n 10) else snd(divMod n 10)`
2021-11-22 22:56:38 +0100 <[itchyjunk]> i know logically its not brushed up yet, just syntactically
2021-11-22 22:57:14 +0100 <dsal> That's weird in several ways.
2021-11-22 22:57:29 +0100 <dsal> The lack of space between the function and the parameter is super weird, let me get past that one.
2021-11-22 22:57:40 +0100 <dsal> But then like, why are you using divMod if you just want div or mod?
2021-11-22 22:58:13 +0100 <[itchyjunk]> i want to do mod based on the value of div but i haven't sorted that out in my head yet
2021-11-22 22:58:46 +0100 <dsal> > let f n = let (d,m) = divMod n 10 in if d == 0 then m else m in f 11
2021-11-22 22:58:46 +0100justsomeguy(~justsomeg@user/justsomeguy) (Quit: WeeChat 3.3)
2021-11-22 22:58:47 +0100 <lambdabot> 1
2021-11-22 22:58:50 +0100yauhsien(~yauhsien@61-231-30-221.dynamic-ip.hinet.net) (Ping timeout: 260 seconds)
2021-11-22 22:59:41 +0100burnsidesLlama(~burnsides@dhcp168-042.wadham.ox.ac.uk)
2021-11-22 22:59:51 +0100eggplantade(~Eggplanta@2600:1700:bef1:5e10:dcf1:6c47:4df:1ed1)
2021-11-22 23:01:10 +0100ByronJohnson(~bairyn@50-250-232-19-static.hfc.comcastbusiness.net) (Remote host closed the connection)
2021-11-22 23:01:25 +0100 <monochrom> Saying "divMod n 10 Beetlejuice" 3 times in a row is a serious violation of DRY. In any language.
2021-11-22 23:01:50 +0100alzgh(alzgh@user/alzgh) (Remote host closed the connection)
2021-11-22 23:02:10 +0100alzgh(alzgh@user/alzgh)
2021-11-22 23:02:21 +0100 <maerwald> people still follow DRY? :p
2021-11-22 23:02:36 +0100 <dsal> I get into arguments about repetition a lot. I *kind* of get them, but the arguments are often readability vs. building a new (local) abstraction that makes it clear that it's actually the same thing three times and not some typos or something.
2021-11-22 23:02:47 +0100 <dsal> I slow down a lot more when I see what looks like a copy and paste.
2021-11-22 23:02:52 +0100 <maerwald> I always start with repetition.
2021-11-22 23:03:02 +0100 <monochrom> You know, I have long realized that if a desirable principle has a name, it means people are refusing to do it. >:)
2021-11-22 23:03:11 +0100 <maerwald> and then after a while, an abstraction will show itself (or it doesn't)
2021-11-22 23:03:23 +0100 <monochrom> Yes I'm OK with that.
2021-11-22 23:03:27 +0100 <dsal> Oh sure. There's nothing wrong with repeating yourself until you realize that copying and pasting the same thing a bunch might be a pain.
2021-11-22 23:03:38 +0100 <monochrom> But this one is way too basic.
2021-11-22 23:04:04 +0100 <dsal> The one I just looked at was just three copies of some code and a review comment about adding a comment as to when we should add new ones. I'm like, "Hey, can we just make this a list?"
2021-11-22 23:04:33 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-11-22 23:04:36 +0100 <monochrom> There are very obvious, staring at your face repetitions that even 1st-year students can easily recognize.
2021-11-22 23:04:50 +0100 <dsal> One of the bits of code that was copied and pasted a lot (because that's good for tests!) needed to be updated for a change I made this morning and I figured out that the original one that got copied a lot *also* had a bug.
2021-11-22 23:05:34 +0100 <maerwald> I've long ceased to be that invested in stuff when being paid for coding
2021-11-22 23:05:39 +0100 <monochrom> What you're referring to are less obvious cases that really takes experience to see, and even then you can argue about pros and cons.
2021-11-22 23:05:40 +0100 <dsal> haha
2021-11-22 23:06:17 +0100mc47(~mc47@xmonad/TheMC47) (Remote host closed the connection)
2021-11-22 23:06:54 +0100 <dsal> monochrom: that's kind of the approach I'm taking. I'll probably catch flak for even spending time on this, but let me write up a big thing describing why copying and pasting this is bad and various benefits of putting stuff in a list instead of unrolling the loop in a big do block.
2021-11-22 23:07:15 +0100 <maerwald> monochrom: many coders I've seen start thinking about the abstraction too early... when they should really just copy paste. And that leads to really shitty abstractions
2021-11-22 23:07:32 +0100 <dsal> Yeah, I've definitely been in those code bases as well.
2021-11-22 23:07:57 +0100 <dsal> that's part of the reason there's knee-jerk in the opposite direction here. Previous Prelude was insanely large. No idea where anything came from and all kinds of weird stuff happening.
2021-11-22 23:08:22 +0100 <monochrom> That is caused by OOP education. Or at least bad OOP education. (Perhaps there is good OOP education too.)
2021-11-22 23:08:36 +0100 <dsal> That's why I qualified (local) abstraction. They love naming various values with extremely long names and stuff. But then strategies just get copied and pasted.
2021-11-22 23:09:11 +0100 <[itchyjunk]> Every second I confuse myself more.
2021-11-22 23:09:22 +0100 <dsal> [itchyjunk]: It's called "learning"
2021-11-22 23:09:25 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds)
2021-11-22 23:09:27 +0100 <[itchyjunk]> lol
2021-11-22 23:09:33 +0100 <[itchyjunk]> In that case, great!
2021-11-22 23:09:46 +0100 <monochrom> 1st-year OOP courses, the bad ones, tend to start with "What's wrong with this struct? Person = { String name; int age; }"
2021-11-22 23:09:51 +0100 <maerwald> Code is so unpredictable... you think up something in your head and when you try it, it turns out totally different, because of a bazillion reasons (unexpected API, bugs, corner cases).
2021-11-22 23:09:53 +0100 <monochrom> Really, there is nothing wrong.
2021-11-22 23:10:24 +0100 <maerwald> the crap has to settle first
2021-11-22 23:10:42 +0100 <dsal> Yep, don't disagree.
2021-11-22 23:10:45 +0100 <maerwald> like a dough
2021-11-22 23:10:47 +0100 <monochrom> Then the party line reveals the model answer: "It is not hidden behind an interface. What if there are future changes? The right thing to do is getter methods."
2021-11-22 23:11:15 +0100 <[itchyjunk]> I have a function and it does a tiny step of what i want. i want to save each of the mini results in a list. i should have a small working function then stitch it so that this another function uses this function and puts the result in a list. then have a third function that uses this whole thing multiple times?
2021-11-22 23:11:16 +0100 <monochrom> That kind of brainwashing in 1st-year courses is why people have premature abstractions. "abstractions"
2021-11-22 23:11:17 +0100 <dsal> "What if there are future changes" is an argument both for and against abstractions, depending on who's proposing them. :)
2021-11-22 23:11:48 +0100 <[itchyjunk]> I am in a first year OOP course @_@
2021-11-22 23:11:59 +0100 <maerwald> dsal: write code that's easy to delete.
2021-11-22 23:12:11 +0100 <dsal> Yep, I love deleting code.
2021-11-22 23:12:13 +0100 <monochrom> Really, even if there are future changes, you don't even know which direction it will be in. The expression problem implies that if you enable one, you disable the other.
2021-11-22 23:12:43 +0100 <maerwald> yes, so better delete the previous code and start anew
2021-11-22 23:12:50 +0100ees(~user@pool-108-18-30-46.washdc.fios.verizon.net)
2021-11-22 23:12:53 +0100tromp(~textual@dhcp-077-249-230-040.chello.nl)
2021-11-22 23:13:07 +0100 <maerwald> but people still think that starting anew is too expensive
2021-11-22 23:13:16 +0100 <maerwald> it is if your code is hard to delete
2021-11-22 23:13:18 +0100 <geekosaur> sunk code fallacy?
2021-11-22 23:13:35 +0100 <dsal> I argue that fairly tall code with 8 levels of indentation in nested case blocks (with two space indentation) is kind of hard to follow and should be clearer. It's completely local, but like, I have to think too hard to follow it. Just give the structure a bit of name.
2021-11-22 23:14:00 +0100 <monochrom> However! DRY is still a good principle, and does not conflict with what I said. I am just against premature interfaces.
2021-11-22 23:14:40 +0100 <maerwald> monochrom: well, but dry doesn't focus on abstraction. Deduplication and abstraction is not the same
2021-11-22 23:14:43 +0100 <dsal> I got it down to a square of around 6 levels of indentation and 6-8 lines tall with the whole thing on a page so you can see it all at once.
2021-11-22 23:15:17 +0100 <maerwald> sometimes, when you see repetition, the abstraction is really somewhere else
2021-11-22 23:15:50 +0100 <maerwald> but because we're educated with DRY, we focus on removing the repetition
2021-11-22 23:20:47 +0100 <[itchyjunk]> if i have a function returning r and i do (r):[], is this list created locally within that context and lost later on?
2021-11-22 23:21:05 +0100 <[itchyjunk]> i.e should i be `let myList = []` and using myList to hold the returns?
2021-11-22 23:21:32 +0100 <monochrom> myList will always be [].
2021-11-22 23:21:52 +0100 <monochrom> even s/be/stay as/
2021-11-22 23:21:58 +0100 <monochrom> For eternity!
2021-11-22 23:22:08 +0100 <[itchyjunk]> oh rigiht.. r:myList creates a new list with [r]
2021-11-22 23:22:16 +0100[itchyjunk]recursively rips hair
2021-11-22 23:22:17 +0100 <monochrom> Yes.
2021-11-22 23:24:05 +0100 <monochrom> This is why in my course I open with "think 'function' as in math functions, not C functions; think algebra, not control flow".
2021-11-22 23:24:30 +0100 <[itchyjunk]> You teach haskell?
2021-11-22 23:24:41 +0100 <jle`> oh now i have to convert Cabal's Extension type to haskell-src-ext's extension type
2021-11-22 23:24:47 +0100jle`. o ( read . show )
2021-11-22 23:25:07 +0100michalz(~michalz@185.246.204.33) (Remote host closed the connection)
2021-11-22 23:25:08 +0100 <[itchyjunk]> I thought i'd do a simple exercise to feel I have been productive. Instead i've put myself into a hole :D
2021-11-22 23:25:30 +0100 <monochrom> And don't worry, I don't really say that thinking C functions and control flow are wrong, I just say that you'll have a better time at the beginning if you think my way. After you're experienced, it doesn't matter then.
2021-11-22 23:26:03 +0100 <monochrom> Well, strictly speaking, I'm supposed to teach principles of programming languages. I end up doing more Haskell than I should.
2021-11-22 23:26:07 +0100jmorris(uid433911@id-433911.hampstead.irccloud.com)
2021-11-22 23:26:22 +0100Alleria(~textual@user/alleria) (Ping timeout: 268 seconds)
2021-11-22 23:26:46 +0100 <[itchyjunk]> I'm in a "Accelerated object oriented programming" class
2021-11-22 23:26:49 +0100 <maerwald> interesting, I always think in control flow, no matter the language
2021-11-22 23:26:57 +0100 <[itchyjunk]> we use java
2021-11-22 23:27:24 +0100nf(~n@monade.li) (Quit: Fairfarren.)
2021-11-22 23:27:32 +0100 <monochrom> And what does the unaccelerated one do?
2021-11-22 23:28:12 +0100nf(~n@monade.li)
2021-11-22 23:28:40 +0100 <dsal> I learned Java after learning Eiffel (from Object Oriented Software Construction). Most of the important OO principles from eiffel are exactly the opposite of java best practices.
2021-11-22 23:28:44 +0100 <[itchyjunk]> the unaccelerated one is shorter course. this one is supposidly 3 fused into one. principle of programming, intro to OOP and intro to Java
2021-11-22 23:28:54 +0100 <maerwald> wow
2021-11-22 23:29:04 +0100 <[itchyjunk]> i just needed the principles class but they weren't offering one so i was thrown into this one :(
2021-11-22 23:29:07 +0100[itchyjunk]is no programmer
2021-11-22 23:29:22 +0100 <maerwald> learning principles of programming through java? ok.
2021-11-22 23:29:39 +0100 <[itchyjunk]> I don't think my uni offers anything else to start off with
2021-11-22 23:29:47 +0100 <[itchyjunk]> ive heard there are graduate level FP classes
2021-11-22 23:29:52 +0100 <maerwald> well, you'll know what getters and setters are pretty soon
2021-11-22 23:30:00 +0100 <[itchyjunk]> I know those!
2021-11-22 23:30:03 +0100 <maerwald> and that's all you need to know for java
2021-11-22 23:30:09 +0100 <[itchyjunk]> lol
2021-11-22 23:30:12 +0100 <monochrom> haha
2021-11-22 23:30:26 +0100 <monochrom> I can't say there is nothing else to know.
2021-11-22 23:30:37 +0100chele(~chele@user/chele) (Remote host closed the connection)
2021-11-22 23:30:44 +0100 <monochrom> But my students do behave like that's all they have learned. >:)
2021-11-22 23:30:47 +0100 <dsal> You also get to learn about building factories.
2021-11-22 23:31:09 +0100 <dsal> Anyone can construct a new object, but not just anyone can build a whole factory that constructs objects.
2021-11-22 23:31:19 +0100 <[itchyjunk]> if i do r:[] to create [r], how to i refrence to this [r] list ?
2021-11-22 23:31:25 +0100 <[itchyjunk]> its lost in memory somewhere?
2021-11-22 23:31:26 +0100 <geekosaur> and then FactoryFactory, etc.
2021-11-22 23:31:35 +0100 <dsal> [itchyjunk]: how do you want to reference it?
2021-11-22 23:31:41 +0100 <dsal> Also, [r] is a fine way to make [r]
2021-11-22 23:31:46 +0100 <maerwald> well, you can also learn about Java generics and then realize they're just difficult to understand implicit casts
2021-11-22 23:31:49 +0100 <monochrom> If I provide "data X = MkX Int X" on an assignment, many of my students code up "getInt :: X -> Int" and "getNext: X -> X" right away.
2021-11-22 23:31:59 +0100 <[itchyjunk]> i have a function doing things and i want to store the return values somewhere
2021-11-22 23:32:07 +0100 <dsal> monochrom: They don't start writing lenses?
2021-11-22 23:32:15 +0100 <monochrom> Nah.
2021-11-22 23:32:28 +0100 <maerwald> xD
2021-11-22 23:32:31 +0100 <dsal> [itchyjunk]: It's really best to start by thinking of what you want your functions to look like. Type signatures do most of the work for you when you let them.
2021-11-22 23:32:36 +0100 <monochrom> Heh
2021-11-22 23:33:05 +0100 <maerwald> store the return value? You could use a database
2021-11-22 23:33:10 +0100 <maerwald> start with beam
2021-11-22 23:33:20 +0100 <monochrom> No, use a file system... >:)
2021-11-22 23:33:20 +0100 <geekosaur> "store" isn't really a thing in Haskell. "pass" is
2021-11-22 23:33:37 +0100 <maerwald> file system is too easy.. you want to debug SQL errors when you start your application
2021-11-22 23:33:40 +0100 <geekosaur> think functions, not "variables"
2021-11-22 23:34:16 +0100 <monochrom> No no, you want to worry about file locking when you start your application...
2021-11-22 23:34:27 +0100 <maerwald> well, don't ship for windows
2021-11-22 23:34:32 +0100dsaluses a software transactional filesystem
2021-11-22 23:34:33 +0100 <geekosaur> use sqlite, then you get to deal with both! }:>
2021-11-22 23:34:44 +0100 <monochrom> \∩/
2021-11-22 23:34:50 +0100 <dsal> Actually, that's true, I just use SQLite.
2021-11-22 23:34:55 +0100 <dsal> Except now I'm using Postgres.
2021-11-22 23:35:06 +0100 <dsal> Totally forgot how much I like postgres.
2021-11-22 23:35:13 +0100 <maerwald> such webscale
2021-11-22 23:35:19 +0100 <monochrom> The Pilgrim's Postgres.
2021-11-22 23:35:47 +0100 <maerwald> [itchyjunk]: was that helpful? :)
2021-11-22 23:35:55 +0100 <monochrom> The Pilsqlim's Postgres.
2021-11-22 23:35:56 +0100eggplantade(~Eggplanta@2600:1700:bef1:5e10:dcf1:6c47:4df:1ed1) (Remote host closed the connection)
2021-11-22 23:36:03 +0100 <[itchyjunk]> If i apply f to n, i get (a,b). i want b to go in a list. then apply f to a and get (c,d), then i want d in the same list and apply f to c ad nausium
2021-11-22 23:36:15 +0100zebrag(~chris@user/zebrag)
2021-11-22 23:36:39 +0100 <dsal> What are `n`, `a`, and `b`?
2021-11-22 23:37:07 +0100 <monochrom> Perhaps you can write a simple recursion for it.
2021-11-22 23:37:14 +0100 <dsal> That's kind of a strangely shaped thing. Are you writing unfoldr?
2021-11-22 23:37:18 +0100 <dsal> :t unfoldr
2021-11-22 23:37:19 +0100 <lambdabot> (b -> Maybe (a, b)) -> b -> [a]
2021-11-22 23:37:19 +0100 <maerwald> [itchyjunk]: the way you'd do that is that your "store" is an argument to your recursive function
2021-11-22 23:37:22 +0100 <[itchyjunk]> n is the input i give f, f maps n to (a,b)
2021-11-22 23:37:27 +0100 <monochrom> I can write it for you but I think it's within your reach.
2021-11-22 23:37:31 +0100 <[itchyjunk]> yes i need recursion but nothign is simple :D
2021-11-22 23:37:35 +0100 <maerwald> when your recursive function terminates, you return the "store"
2021-11-22 23:37:46 +0100 <monochrom> OK, beginner-level.
2021-11-22 23:38:16 +0100 <dsal> [itchyjunk]: Can you write the actual type signature? I'm not sure I understand `:: n -> (a,b)` -- those types have to come from somewhere.
2021-11-22 23:38:22 +0100 <geekosaur> what defines "terminates" here?
2021-11-22 23:38:48 +0100 <maerwald> crashes with an SQL error
2021-11-22 23:38:54 +0100 <[itchyjunk]> if the first value in the tuple is 0
2021-11-22 23:39:00 +0100 <[itchyjunk]> let me think of the signature
2021-11-22 23:39:01 +0100 <dsal> So it's an Int?
2021-11-22 23:39:18 +0100 <[itchyjunk]> yes n , a , b are ints
2021-11-22 23:39:23 +0100 <dsal> Ooh. that's very different
2021-11-22 23:39:35 +0100 <dsal> `:: Int -> (Int, Int)`
2021-11-22 23:40:12 +0100 <monochrom> But that's for f. And this f may be already given.
2021-11-22 23:40:26 +0100 <[itchyjunk]> thats what happens in each step but i want to get a [Int] after all is said an done
2021-11-22 23:40:30 +0100 <monochrom> In question is another function, call it g, that uses f again and again etc.
2021-11-22 23:40:45 +0100 <[itchyjunk]> okay, then i was kinda in the right track
2021-11-22 23:41:02 +0100 <[itchyjunk]> i have a function that applies this once that i have called helperf
2021-11-22 23:41:22 +0100 <dsal> Yeah, doing it just once is great. Then you can just keep calling it.
2021-11-22 23:41:24 +0100 <dsal> > let f n = (n + 1, n * 2) in iterate (f . snd) (1,1)
2021-11-22 23:41:25 +0100 <lambdabot> [(1,1),(2,2),(3,4),(5,8),(9,16),(17,32),(33,64),(65,128),(129,256),(257,512)...
2021-11-22 23:41:31 +0100random-jellyfish(~random-je@user/random-jellyfish)
2021-11-22 23:41:38 +0100 <dsal> > let f n = (n + 1, n * 2) in snd <$> iterate (f . snd) (1,1)
2021-11-22 23:41:39 +0100 <lambdabot> [1,2,4,8,16,32,64,128,256,512,1024,2048,4096,8192,16384,32768,65536,131072,2...
2021-11-22 23:41:52 +0100 <dsal> That's a dumb function. I assume yours isn't. heh
2021-11-22 23:42:07 +0100geekosaur(~geekosaur@xmonad/geekosaur) (Remote host closed the connection)
2021-11-22 23:42:18 +0100 <monochrom> Here is a hint. You probably haven't thought that you can do this:
2021-11-22 23:42:20 +0100 <monochrom> @src map
2021-11-22 23:42:20 +0100 <lambdabot> map _ [] = []
2021-11-22 23:42:20 +0100 <lambdabot> map f (x:xs) = f x : map f xs
2021-11-22 23:42:37 +0100 <monochrom> Sleep on that. You don't always need an "accumulator".
2021-11-22 23:43:31 +0100 <dsal> @src unfoldr
2021-11-22 23:43:31 +0100 <lambdabot> unfoldr f b = case f b of
2021-11-22 23:43:31 +0100 <lambdabot> Just (a, b') -> a : unfoldr f b'
2021-11-22 23:43:31 +0100 <lambdabot> Nothing -> []
2021-11-22 23:43:38 +0100 <dsal> ooh. I didn't think that'd work.
2021-11-22 23:43:54 +0100geekosaur(~geekosaur@xmonad/geekosaur)
2021-11-22 23:44:44 +0100 <dsal> @src iterate
2021-11-22 23:44:44 +0100 <lambdabot> iterate f x = x : iterate f (f x)
2021-11-22 23:45:32 +0100 <dsal> We should just teach fix and get rid of all this recursion stuff.
2021-11-22 23:45:33 +0100 <dsal> @src fix
2021-11-22 23:45:34 +0100 <lambdabot> fix f = let x = f x in x
2021-11-22 23:46:04 +0100lavaman(~lavaman@98.38.249.169)
2021-11-22 23:49:48 +0100 <monochrom> That also gets rids of a lot of the weaker students. >:)
2021-11-22 23:49:54 +0100 <dsal> heh
2021-11-22 23:50:32 +0100 <monochrom> I am very uncomfortable with getting rid of weak students because I don't want my class average to be too damn high!
2021-11-22 23:50:33 +0100Gurkenglas(~Gurkengla@dslb-002-203-144-204.002.203.pools.vodafone-ip.de) (Ping timeout: 250 seconds)
2021-11-22 23:50:51 +0100lavaman(~lavaman@98.38.249.169) (Ping timeout: 264 seconds)
2021-11-22 23:52:34 +0100 <zero> get rid of map and just fold
2021-11-22 23:52:34 +0100 <dsal> Do you get paid by a measurable amount of education you put into people?
2021-11-22 23:52:43 +0100 <dsal> I like fold
2021-11-22 23:52:58 +0100cosimone(~user@2001:b07:ae5:db26:c24a:d20:4d91:1e20)
2021-11-22 23:52:58 +0100 <monochrom> Do you go one step further, switch to untyped lambda calculus, so that you don't even need that version of fix? >:)
2021-11-22 23:53:19 +0100 <maerwald> dsal: ahaha
2021-11-22 23:53:30 +0100 <monochrom> No, my pay is not tied to the class average.
2021-11-22 23:54:17 +0100 <monochrom> But sometimes if the class average is too damn high or too damn low, the department chair needs to ask me why. And really, I don't know!
2021-11-22 23:54:35 +0100 <dsal> monochrom: The Musical
2021-11-22 23:55:45 +0100 <zero> i think education suffers from the observer effect. you cant grade students without the fact that you're grading them has an effect on their performance
2021-11-22 23:56:13 +0100 <zero> and it's a big effect
2021-11-22 23:56:17 +0100 <xerox> if it doesn't have an effect why would they enroll
2021-11-22 23:56:36 +0100 <monochrom> What's wrong with that?
2021-11-22 23:56:56 +0100betelgeuse(~betelgeus@94-225-47-8.access.telenet.be)
2021-11-22 23:56:57 +0100 <zero> because universities print some papers that get them jobs
2021-11-22 23:57:25 +0100 <monochrom> Don't tell me naïve left-wing answers such as "after graudation they are never graded again".
2021-11-22 23:57:30 +0100 <zero> it's not inherently wrong
2021-11-22 23:58:04 +0100DNH(~DNH@2a02:8108:1100:16d8:64b0:a3f2:ec06:e597) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2021-11-22 23:58:14 +0100 <EvanR> this is where curves come in
2021-11-22 23:58:16 +0100 <zero> it's just impossible not to let it often get in the way of things
2021-11-22 23:58:21 +0100 <EvanR> the great equalizer
2021-11-22 23:59:04 +0100 <geekosaur> this is all kinda offtopic by now…
2021-11-22 23:59:08 +0100 <maerwald> zero: grades are a concept from military. There it's used to distinguish the people who perform best under *pressure*. Because that's what matters there.
2021-11-22 23:59:17 +0100 <arahael> maerwald: hey, before i switch to rust for my alpine rpi3, is there anything else i could do to get haskell running? the ghcup stuff has missing symbols even if i find and satisfy the libraries.
2021-11-22 23:59:56 +0100 <monochrom> Perhaps forsake alpine?