2022/07/14

2022-07-14 00:00:04 +0200 <geekosaur> they're too wedded to the record dot abomination
2022-07-14 00:01:09 +0200 <monochrom> They now say "-X GHC2021" but I don't know whether that package has what you want.
2022-07-14 00:01:20 +0200 <hpc> i can live with record dot
2022-07-14 00:01:29 +0200 <hpc> i always compose functions as f . g anyway
2022-07-14 00:02:06 +0200 <monochrom> But it is referentially transparent glasgow extensions :)
2022-07-14 00:03:33 +0200 <monochrom> nix-style glasgow extensions >:)
2022-07-14 00:04:36 +0200matthewmosior(~matthewmo@173.170.253.91) (Remote host closed the connection)
2022-07-14 00:04:47 +0200 <yax__> isnt the correct way to use grep is to do `grep <pattern> <files>`
2022-07-14 00:04:58 +0200 <hpc> if you don't specify a file, grep uses stdin
2022-07-14 00:05:02 +0200 <yax__> instead of a pipe from cat
2022-07-14 00:05:16 +0200 <hpc> it's meant to be used from pipelines, everything else is random conveniences
2022-07-14 00:05:18 +0200 <monochrom> I did have grep <pattern> <one file>
2022-07-14 00:05:35 +0200 <monochrom> I did not pipe from cat to grep. Read again.
2022-07-14 00:05:45 +0200 <monochrom> I piped either cat or grep to sort.
2022-07-14 00:05:53 +0200 <monochrom> Yes you can do that.
2022-07-14 00:06:02 +0200 <hpc> monochrom: i meant how you put an empty cat at the end of the pipeline
2022-07-14 00:06:04 +0200 <monochrom> Yes you can have if-then-else | sort
2022-07-14 00:06:06 +0200ski. o O ( `< file blah | bleh' )
2022-07-14 00:06:31 +0200 <yax__> i was talking about hpc's message
2022-07-14 00:06:38 +0200 <monochrom> OTOH yes grep is happy to read stdin too.
2022-07-14 00:06:39 +0200 <hpc> oh, heh
2022-07-14 00:06:47 +0200 <hpc> ski: <() is a pretty good construct too, yeah
2022-07-14 00:07:01 +0200 <geekosaur> yax__ hence the "useless use of cat" remark
2022-07-14 00:07:03 +0200 <hpc> diff <(foo) <(bar) is a staple of my shell scripts
2022-07-14 00:07:03 +0200 <yax__> im not sure, which is the preferable way, pipe from cat or grep file
2022-07-14 00:07:15 +0200 <geekosaur> either
2022-07-14 00:07:18 +0200 <yax__> ive heard arguments for both but idk which one is better
2022-07-14 00:07:51 +0200 <geekosaur> beauty is in the eye of the beholder
2022-07-14 00:07:56 +0200mvk(~mvk@2607:fea8:5ce3:8500::909a) (Ping timeout: 244 seconds)
2022-07-14 00:08:01 +0200 <monochrom> Depends on what you want to convey.
2022-07-14 00:08:08 +0200 <yax__> mhm
2022-07-14 00:08:11 +0200 <monochrom> (convey to people who read your code)
2022-07-14 00:08:18 +0200 <hpc> yax__: a good way to see how fundamental piping is, is to see how all the commands handle specified files just a little bit differently
2022-07-14 00:08:44 +0200segfaultfizzbuzz(~segfaultf@157-131-253-58.fiber.dynamic.sonic.net)
2022-07-14 00:08:45 +0200 <monochrom> So just yesterday a student asked me (about C) should you write "a[0]" or should you write "*a" (when char *a)
2022-07-14 00:08:47 +0200 <hpc> you might see that the file is an --option instead of a positional argument, or that input and output files are specified oddly
2022-07-14 00:08:47 +0200jmdaemon(~jmdaemon@user/jmdaemon)
2022-07-14 00:08:57 +0200 <hpc> or that recursive is -r sometimes and -R other times
2022-07-14 00:09:21 +0200 <monochrom> And my answer is again "depends on whether you want to emphasize arrayness or pointerness to people who read your code"
2022-07-14 00:09:40 +0200 <hpc> everyone knows it's 0[a]
2022-07-14 00:09:58 +0200 <yax__> monochrom: write 0[a]
2022-07-14 00:10:05 +0200 <yax__> eeeee you said it befor me
2022-07-14 00:10:08 +0200 <monochrom> Any other argument is pointless.
2022-07-14 00:10:15 +0200 <hpc> @quote .stereo
2022-07-14 00:10:15 +0200 <lambdabot> xplat says: Welcome to #haskell-blah, where your bot commands are executed in triumphant stereo!
2022-07-14 00:10:28 +0200 <hpc> bah, there's a million of those quotes now
2022-07-14 00:10:39 +0200nightbreak[Away](~nightbrea@2600:1700:70d1:d800:7997:c6a5:32b7:3d2e) (Ping timeout: 272 seconds)
2022-07-14 00:10:52 +0200 <monochrom> As if programmers were a communist party and one single party line is to be imposed and anyone deviating is to be excommunicated.
2022-07-14 00:11:19 +0200 <yax__> what
2022-07-14 00:11:32 +0200 <hpc> thou shalt always CamelCase, except for mysql_real_escape_string
2022-07-14 00:11:33 +0200 <monochrom> This is why I made a fugue quote rather than a stereo quote :)
2022-07-14 00:11:36 +0200 <monochrom> @quote fugue
2022-07-14 00:11:36 +0200 <lambdabot> monochrom says: Welcome to #haskell, where your questions are answered in contrapuntal fugues.
2022-07-14 00:11:54 +0200 <hpc> that's a totally different situation
2022-07-14 00:12:05 +0200 <hpc> completing each other's sentences instead of just saying the same thing
2022-07-14 00:12:22 +0200 <hpc> although that's also a really good one, that happens pretty frequently too
2022-07-14 00:13:05 +0200tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2022-07-14 00:13:50 +0200pagnol(~me@213-205-209-87.ftth.glasoperator.nl) (Ping timeout: 240 seconds)
2022-07-14 00:14:07 +0200 <monochrom> But fugues also have multiple parts singing the same thing, and sometimes time-delayed.
2022-07-14 00:14:29 +0200skubcat(~skubcat@156.57.184.235)
2022-07-14 00:14:58 +0200pagnol(~me@213-205-209-87.ftth.glasoperator.nl)
2022-07-14 00:15:08 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:a9e5:8234:e3a4:dc0e) (Remote host closed the connection)
2022-07-14 00:15:24 +0200 <hpc> if we accept electronic music slang, we could say #haskell is a layer 2 protocol, because it's full of arps :D
2022-07-14 00:15:47 +0200 <monochrom> Yikes I don't understand that, but haha.
2022-07-14 00:15:57 +0200 <hpc> arp is arpeggio, when you fake a chord by alternating notes
2022-07-14 00:16:09 +0200 <monochrom> haha
2022-07-14 00:16:43 +0200 <hpc> (and for the non-network people reading scrollback, https://en.wikipedia.org/wiki/Address_Resolution_Protocol)
2022-07-14 00:16:44 +0200 <monochrom> OK that one I think I learned from twosetviolin
2022-07-14 00:17:35 +0200 <hpc> monophonic synths were so common they needed to shorten the name of it because you had to do it everywhere just for technical reasons
2022-07-14 00:18:17 +0200 <monochrom> Apparently in some circles "conflict of interests" is common enough to earn its acronym "COI" hehe
2022-07-14 00:18:25 +0200 <hpc> heh
2022-07-14 00:19:15 +0200 <yax__> add the Haskell's prayer to the bot
2022-07-14 00:19:18 +0200juri_(~juri@84-19-175-179.pool.ovpn.com) (Ping timeout: 244 seconds)
2022-07-14 00:19:27 +0200Dutchgriffon_(~Laurens@70.36.53.134)
2022-07-14 00:19:56 +0200Dutchgriffon(~Laurens@70.36.53.134) (Read error: Connection reset by peer)
2022-07-14 00:20:41 +0200matthewmosior(~matthewmo@173.170.253.91)
2022-07-14 00:24:59 +0200matthewmosior(~matthewmo@173.170.253.91) (Ping timeout: 244 seconds)
2022-07-14 00:26:10 +0200gurkenglas(~gurkengla@dslb-002-203-144-112.002.203.pools.vodafone-ip.de) (Ping timeout: 240 seconds)
2022-07-14 00:26:10 +0200juri_(~juri@dynamic-089-204-138-046.89.204.138.pool.telefonica.de)
2022-07-14 00:26:59 +0200matthewmosior(~matthewmo@173.170.253.91)
2022-07-14 00:30:35 +0200 <slack1256> Has anyone used three generations on the garbage collection (-G3)? What kind of test did you run to decide it was a good idea? or it was just a "this is long lived program with long lived data structures".
2022-07-14 00:31:18 +0200matthewmosior(~matthewmo@173.170.253.91) (Remote host closed the connection)
2022-07-14 00:31:24 +0200matthewmosior(~matthewmo@173.170.253.91)
2022-07-14 00:31:59 +0200juri_(~juri@dynamic-089-204-138-046.89.204.138.pool.telefonica.de) (Read error: Connection reset by peer)
2022-07-14 00:32:18 +0200jeetelongname(~jeet@cpc96970-rdng25-2-0-cust390.15-3.cable.virginm.net) (Remote host closed the connection)
2022-07-14 00:36:10 +0200juri_(~juri@dynamic-089-204-138-046.89.204.138.pool.telefonica.de)
2022-07-14 00:36:27 +0200kyborg2011(~kyborg201@88.155.101.148)
2022-07-14 00:36:51 +0200kyborg2011(~kyborg201@88.155.101.148) (Client Quit)
2022-07-14 00:40:54 +0200juri_(~juri@dynamic-089-204-138-046.89.204.138.pool.telefonica.de) (Read error: Connection reset by peer)
2022-07-14 00:41:00 +0200mvk(~mvk@2607:fea8:5ce3:8500::909a)
2022-07-14 00:43:24 +0200acidjnk_new(~acidjnk@p200300d6e7058698ed7ff12f14b44c79.dip0.t-ipconnect.de) (Ping timeout: 272 seconds)
2022-07-14 00:45:59 +0200gurkenglas(~gurkengla@dslb-002-203-144-112.002.203.pools.vodafone-ip.de)
2022-07-14 00:46:07 +0200yax__(~yax@user/yax/x-9576643) (Ping timeout: 272 seconds)
2022-07-14 00:47:10 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:a9e5:8234:e3a4:dc0e)
2022-07-14 00:49:15 +0200Pickchea(~private@user/pickchea) (Quit: Leaving)
2022-07-14 00:49:50 +0200acidjnk_new(~acidjnk@p200300d6e7058698ed7ff12f14b44c79.dip0.t-ipconnect.de)
2022-07-14 00:51:11 +0200juri_(~juri@dynamic-089-204-138-046.89.204.138.pool.telefonica.de)
2022-07-14 00:52:04 +0200bitdex(~bitdex@gateway/tor-sasl/bitdex)
2022-07-14 00:53:18 +0200merijn(~merijn@c-001-001-023.client.esciencecenter.eduvpn.nl)
2022-07-14 00:54:34 +0200juri_(~juri@dynamic-089-204-138-046.89.204.138.pool.telefonica.de) (Read error: Connection reset by peer)
2022-07-14 00:54:54 +0200pretty_dumm_guy(trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) (Quit: WeeChat 3.5)
2022-07-14 00:55:29 +0200mon_aaraj(~MonAaraj@user/mon-aaraj/x-4416475) (Ping timeout: 244 seconds)
2022-07-14 00:56:45 +0200mon_aaraj(~MonAaraj@user/mon-aaraj/x-4416475)
2022-07-14 01:01:11 +0200juri_(~juri@dynamic-089-204-138-046.89.204.138.pool.telefonica.de)
2022-07-14 01:01:57 +0200acidjnk_new(~acidjnk@p200300d6e7058698ed7ff12f14b44c79.dip0.t-ipconnect.de) (Ping timeout: 272 seconds)
2022-07-14 01:02:02 +0200img(~img@user/img) (Quit: ZNC 1.8.2 - https://znc.in)
2022-07-14 01:02:14 +0200Dutchgriffon_Dutchgriffon
2022-07-14 01:03:22 +0200gustik(~gustik@2a01:c844:2457:2220:475d:34f:d571:996f) (Quit: Leaving)
2022-07-14 01:04:57 +0200img(~img@user/img)
2022-07-14 01:05:17 +0200gurkenglas(~gurkengla@dslb-002-203-144-112.002.203.pools.vodafone-ip.de) (Ping timeout: 244 seconds)
2022-07-14 01:05:51 +0200yauhsien(~yauhsien@61-231-21-122.dynamic-ip.hinet.net)
2022-07-14 01:06:19 +0200juri__(~juri@79.140.115.119)
2022-07-14 01:06:26 +0200juri_(~juri@dynamic-089-204-138-046.89.204.138.pool.telefonica.de) (Read error: Connection reset by peer)
2022-07-14 01:08:35 +0200geschwindig(~John_Ivan@user/john-ivan/x-1515935) (Quit: Leaving)
2022-07-14 01:11:16 +0200juri__(~juri@79.140.115.119) (Ping timeout: 272 seconds)
2022-07-14 01:11:16 +0200yauhsien(~yauhsien@61-231-21-122.dynamic-ip.hinet.net) (Ping timeout: 272 seconds)
2022-07-14 01:11:43 +0200juri_(~juri@dynamic-089-204-138-046.89.204.138.pool.telefonica.de)
2022-07-14 01:12:29 +0200juri_(~juri@dynamic-089-204-138-046.89.204.138.pool.telefonica.de) (Read error: Connection reset by peer)
2022-07-14 01:16:20 +0200 <vulpine> @pl \x -> map (fst) x
2022-07-14 01:16:20 +0200 <lambdabot> map fst
2022-07-14 01:16:44 +0200juri_(~juri@dynamic-089-204-138-046.89.204.138.pool.telefonica.de)
2022-07-14 01:18:18 +0200pagnol(~me@213-205-209-87.ftth.glasoperator.nl) (Ping timeout: 276 seconds)
2022-07-14 01:21:19 +0200juri_(~juri@dynamic-089-204-138-046.89.204.138.pool.telefonica.de) (Ping timeout: 244 seconds)
2022-07-14 01:21:34 +0200jmorris(uid537181@id-537181.uxbridge.irccloud.com)
2022-07-14 01:21:44 +0200juri_(~juri@79.140.115.122)
2022-07-14 01:22:21 +0200merijn(~merijn@c-001-001-023.client.esciencecenter.eduvpn.nl) (Ping timeout: 244 seconds)
2022-07-14 01:24:20 +0200gurkenglas(~gurkengla@dslb-002-203-144-112.002.203.pools.vodafone-ip.de)
2022-07-14 01:24:30 +0200kjak(~kjak@pool-108-31-68-111.washdc.fios.verizon.net) (Ping timeout: 268 seconds)
2022-07-14 01:27:31 +0200segfaultfizzbuzz(~segfaultf@157-131-253-58.fiber.dynamic.sonic.net) (Ping timeout: 244 seconds)
2022-07-14 01:35:04 +0200tomgus1(~tomgus1@2a02:c7e:4229:d900:dea6:32ff:fe3d:d1a3)
2022-07-14 01:36:49 +0200Lord_of_Life_(~Lord@user/lord-of-life/x-2819915)
2022-07-14 01:37:12 +0200skubcat(~skubcat@156.57.184.235) (Quit: Client closed)
2022-07-14 01:38:03 +0200Lord_of_Life(~Lord@user/lord-of-life/x-2819915) (Ping timeout: 272 seconds)
2022-07-14 01:38:04 +0200Lord_of_Life_Lord_of_Life
2022-07-14 01:45:28 +0200alp(~alp@user/alp) (Ping timeout: 268 seconds)
2022-07-14 01:53:04 +0200matthewmosior(~matthewmo@173.170.253.91) (Remote host closed the connection)
2022-07-14 01:57:56 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:a9e5:8234:e3a4:dc0e) (Remote host closed the connection)
2022-07-14 01:58:34 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:a9e5:8234:e3a4:dc0e)
2022-07-14 01:59:35 +0200jgeerds(~jgeerds@55d437cf.access.ecotel.net) (Ping timeout: 272 seconds)
2022-07-14 02:03:30 +0200Tuplanolla(~Tuplanoll@91-159-69-97.elisa-laajakaista.fi) (Quit: Leaving.)
2022-07-14 02:03:44 +0200califax(~califax@user/califx) (Remote host closed the connection)
2022-07-14 02:04:08 +0200img(~img@user/img) (Quit: ZNC 1.8.2 - https://znc.in)
2022-07-14 02:05:18 +0200 <albet70> this is a cabal conflict, I use allow-newer, but it still, https://paste.tomsmeding.com/lAFSZnqt
2022-07-14 02:06:02 +0200califax(~califax@user/califx)
2022-07-14 02:07:02 +0200img(~img@user/img)
2022-07-14 02:07:36 +0200tomgus1(~tomgus1@2a02:c7e:4229:d900:dea6:32ff:fe3d:d1a3) (Quit: ZNC 1.8.2+deb2 - https://znc.in)
2022-07-14 02:08:24 +0200tomgus1(~tomgus1@2a02:c7e:4229:d900:dea6:32ff:fe3d:d1a3)
2022-07-14 02:09:45 +0200matthewmosior(~matthewmo@173.170.253.91)
2022-07-14 02:15:36 +0200mmhat(~mmh@p200300f1c7090754ee086bfffe095315.dip0.t-ipconnect.de) (Quit: WeeChat 3.5)
2022-07-14 02:23:39 +0200gurkenglas(~gurkengla@dslb-002-203-144-112.002.203.pools.vodafone-ip.de) (Ping timeout: 272 seconds)
2022-07-14 02:23:57 +0200chomwitt(~chomwitt@2a02:587:dc0d:4a00:dd89:2ce:aa76:b885) (Ping timeout: 276 seconds)
2022-07-14 02:38:40 +0200dcoutts(~duncan@host86-167-206-10.range86-167.btcentralplus.com)
2022-07-14 02:40:45 +0200dcoutts_(~duncan@host86-151-9-33.range86-151.btcentralplus.com) (Ping timeout: 272 seconds)
2022-07-14 02:40:45 +0200dcoutts__(~duncan@host86-151-9-33.range86-151.btcentralplus.com) (Ping timeout: 272 seconds)
2022-07-14 02:41:10 +0200 <jackdk> albet70: don't think that's how allow-newer works. I think you've allowed it for one package and then asked it to build all the others
2022-07-14 02:41:16 +0200dcoutts_(~duncan@host86-167-206-10.range86-167.btcentralplus.com)
2022-07-14 02:41:34 +0200slac79805(~slack1256@186.11.42.111)
2022-07-14 02:43:19 +0200ryanbooker(uid4340@id-4340.hampstead.irccloud.com)
2022-07-14 02:43:28 +0200slack1256(~slack1256@191.125.99.86) (Ping timeout: 244 seconds)
2022-07-14 02:45:27 +0200nate4(~nate@98.45.169.16)
2022-07-14 02:47:37 +0200merijn(~merijn@c-001-001-023.client.esciencecenter.eduvpn.nl)
2022-07-14 02:48:55 +0200 <albet70> "🟢 jackdk :albet70: don't think that's how allow-newer works. I think you've allowed it for one package and then asked it to build all the others", what's the right way to solve this?
2022-07-14 02:49:14 +0200 <jackdk> What does "green circle" mean?
2022-07-14 02:50:41 +0200 <jackdk> Also, the manual has the answers you seek: https://cabal.readthedocs.io/en/3.6/setup-commands.html#cmdoption-runhaskell-Setup.hs-configure-al…
2022-07-14 02:51:55 +0200nki[m](~nkimnkaga@2001:470:69fc:105::2:3a8d)
2022-07-14 02:55:55 +0200 <albet70> "jackdk :What does "green circle" mean?", what is green circle?
2022-07-14 02:57:33 +0200 <geekosaur> your message [14 00:48:55] <albet70> "🟢 jackdk :albet70: don't think that's how allow-newer works. I think you've allowed it for one package and then asked it to build all the others", what's the right way to solve this?
2022-07-14 02:57:38 +0200 <jackdk> You tell me, you're the one who sent it: https://usercontent.irccloud-cdn.com/file/DGVQcAfq/green_circle.png
2022-07-14 02:57:40 +0200 <geekosaur> why does it have a green circle in it?
2022-07-14 02:59:31 +0200 <albet70> oh this green circle is the highlight from my irc client, I should change it one day, sorry for the bother
2022-07-14 02:59:50 +0200 <jackdk> no worries, was confusing is all
2022-07-14 03:02:02 +0200 <albet70> why some package limit the upper and lower version?
2022-07-14 03:02:25 +0200 <albet70> like 1.2<x<2.0
2022-07-14 03:02:38 +0200 <geekosaur> because they're known not to work with the other versions?
2022-07-14 03:02:59 +0200 <jackdk> https://pvp.haskell.org/
2022-07-14 03:03:10 +0200 <albet70> why they don't keep compatible?
2022-07-14 03:03:52 +0200 <jackdk> because package maintainers are often volunteers with less than infinite free time?
2022-07-14 03:04:00 +0200xff0x(~xff0x@2405:6580:b080:900:226f:8243:60d1:9235) (Ping timeout: 272 seconds)
2022-07-14 03:04:50 +0200hpc. o O ( because pvp is also short for "programmer versus programmer" )
2022-07-14 03:04:56 +0200 <jackdk> Hackage trustees ask packagers to upload packages with upper bounds on their dependencies, so that newer versions with breaking changes don't make it into build plans and break other people's builds
2022-07-14 03:04:58 +0200 <jackdk> hpc: LOL
2022-07-14 03:05:21 +0200 <albet70> I saw that ghc also doesn't keep compatible...
2022-07-14 03:05:48 +0200 <jackdk> Once a new version is known to be working, then maintainers can (should) update their dependency bounds to admit the new version, or update and release a new version if code changes are required
2022-07-14 03:08:19 +0200NaturalNumber(~monadam@137.229.82.64)
2022-07-14 03:08:30 +0200 <Axman6> albet70: welcome to the world of software engineering for open source software, it is impossible for everything to always keep up to date with everything else. If you would like yo change that, you should volunteer to maintain packages
2022-07-14 03:10:40 +0200albet70(~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection)
2022-07-14 03:14:04 +0200matthewmosior(~matthewmo@173.170.253.91) (Ping timeout: 244 seconds)
2022-07-14 03:14:41 +0200frost(~frost@user/frost)
2022-07-14 03:14:50 +0200jao(~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net) (Remote host closed the connection)
2022-07-14 03:16:48 +0200albet70(~xxx@2400:8902::f03c:92ff:fe60:98d8)
2022-07-14 03:20:47 +0200[itchyjunk](~itchyjunk@user/itchyjunk/x-7353470) (Ping timeout: 255 seconds)
2022-07-14 03:22:33 +0200merijn(~merijn@c-001-001-023.client.esciencecenter.eduvpn.nl) (Ping timeout: 272 seconds)
2022-07-14 03:22:52 +0200segfaultfizzbuzz(~segfaultf@157-131-253-58.fiber.dynamic.sonic.net)
2022-07-14 03:24:48 +0200[itchyjunk](~itchyjunk@user/itchyjunk/x-7353470)
2022-07-14 03:27:16 +0200abhinav(~abhinav@c-67-169-139-16.hsd1.ca.comcast.net)
2022-07-14 03:28:57 +0200segfaultfizzbuzz(~segfaultf@157-131-253-58.fiber.dynamic.sonic.net) (Ping timeout: 276 seconds)
2022-07-14 03:30:07 +0200matthewmosior(~matthewmo@173.170.253.91)
2022-07-14 03:30:36 +0200machinedgod(~machinedg@d172-219-86-154.abhsia.telus.net) (Ping timeout: 272 seconds)
2022-07-14 03:40:18 +0200waleee(~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340) (Ping timeout: 240 seconds)
2022-07-14 03:40:29 +0200img(~img@user/img) (Quit: ZNC 1.8.2 - https://znc.in)
2022-07-14 03:43:22 +0200img(~img@user/img)
2022-07-14 03:43:54 +0200xff0x(~xff0x@125x103x176x34.ap125.ftth.ucom.ne.jp)
2022-07-14 03:48:38 +0200nate4(~nate@98.45.169.16) (Ping timeout: 240 seconds)
2022-07-14 03:49:18 +0200dcoutts_(~duncan@host86-167-206-10.range86-167.btcentralplus.com) (Remote host closed the connection)
2022-07-14 03:49:36 +0200dcoutts_(~duncan@host86-167-206-10.range86-167.btcentralplus.com)
2022-07-14 03:56:46 +0200img(~img@user/img) (Quit: ZNC 1.8.2 - https://znc.in)
2022-07-14 03:58:53 +0200segfaultfizzbuzz(~segfaultf@157-131-253-58.fiber.dynamic.sonic.net)
2022-07-14 03:59:38 +0200img(~img@user/img)
2022-07-14 04:04:16 +0200jao(~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net)
2022-07-14 04:04:58 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:a9e5:8234:e3a4:dc0e) (Remote host closed the connection)
2022-07-14 04:06:15 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:a9e5:8234:e3a4:dc0e)
2022-07-14 04:10:31 +0200[Leary](~Leary]@122-58-224-198-vdsl.sparkbb.co.nz)
2022-07-14 04:14:55 +0200abhinav(~abhinav@c-67-169-139-16.hsd1.ca.comcast.net) (Ping timeout: 244 seconds)
2022-07-14 04:16:40 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:a9e5:8234:e3a4:dc0e) (Remote host closed the connection)
2022-07-14 04:18:55 +0200jao(~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net) (Ping timeout: 272 seconds)
2022-07-14 04:20:53 +0200hasbae(~hippoid@c-98-220-13-8.hsd1.il.comcast.net)
2022-07-14 04:21:36 +0200 <hasbae> how can I figure out where the definition of (:+:) is coming from when I load a module in ghci?
2022-07-14 04:23:32 +0200img(~img@user/img) (Quit: ZNC 1.8.2 - https://znc.in)
2022-07-14 04:23:39 +0200 <hasbae> specifically, it's this file I'm :loading https://github.com/DSLsofMath/DSLsofMath/blob/master/L/DSLsofMath/FunExp.lhs
2022-07-14 04:24:04 +0200zxx7529(~Thunderbi@user/zxx7529)
2022-07-14 04:24:42 +0200bitdex(~bitdex@gateway/tor-sasl/bitdex) (Quit: = "")
2022-07-14 04:25:06 +0200 <monochrom> In ghci you can say ":info :+:", it tells you where the definition is (and a lot of other information)
2022-07-14 04:25:55 +0200mtjm(~mutantmel@2604:a880:2:d0::208b:d001) (Remote host closed the connection)
2022-07-14 04:26:25 +0200img(~img@user/img)
2022-07-14 04:27:02 +0200segfaultfizzbuzz(~segfaultf@157-131-253-58.fiber.dynamic.sonic.net) (Ping timeout: 268 seconds)
2022-07-14 04:27:08 +0200mtjm(~mutantmel@2604:a880:2:d0::208b:d001)
2022-07-14 04:27:09 +0200 <hasbae> ah, ok, I think it's just a custom operator. doing :i (:+:) says it's defined on line 10 of that file i linked
2022-07-14 04:27:10 +0200td_(~td@muedsl-82-207-238-241.citykom.de) (Ping timeout: 260 seconds)
2022-07-14 04:28:41 +0200td_(~td@muedsl-82-207-238-204.citykom.de)
2022-07-14 04:29:28 +0200 <monochrom> :)
2022-07-14 04:30:17 +0200 <monochrom> It is common, but in this warped sense: Everyone likes to use it for a different purpose >:)
2022-07-14 04:32:42 +0200abhinav(~abhinav@c-67-169-139-16.hsd1.ca.comcast.net)
2022-07-14 04:33:55 +0200yauhsien(~yauhsien@61-231-21-122.dynamic-ip.hinet.net)
2022-07-14 04:37:14 +0200nate4(~nate@98.45.169.16)
2022-07-14 04:38:05 +0200 <hasbae> yeah it was staring right at me. I was expecting to be something fancy. I search hoogle and it landed me on Data.Generics and I thought 'oh no'
2022-07-14 04:39:25 +0200 <monochrom> Data.Complex also has it. x :+: y means x + i y
2022-07-14 04:40:29 +0200 <monochrom> Data.Generics's though is a simple "like Either but for functors". data (:+:) f g a = Case1 (f a) | Case2 (g a)
2022-07-14 04:41:06 +0200yauhsien(~yauhsien@61-231-21-122.dynamic-ip.hinet.net) (Ping timeout: 276 seconds)
2022-07-14 04:42:03 +0200 <hasbae> I did a import Data.Complex and then :i (:+:) and ghci says 'not in scope'
2022-07-14 04:42:20 +0200 <monochrom> Hrm
2022-07-14 04:42:25 +0200matthewmosior(~matthewmo@173.170.253.91) (Ping timeout: 244 seconds)
2022-07-14 04:42:41 +0200dcoutts(~duncan@host86-167-206-10.range86-167.btcentralplus.com) (Remote host closed the connection)
2022-07-14 04:42:48 +0200dcoutts_(~duncan@host86-167-206-10.range86-167.btcentralplus.com) (Remote host closed the connection)
2022-07-14 04:42:49 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:a9e5:8234:e3a4:dc0e)
2022-07-14 04:42:53 +0200 <monochrom> Ooops, I erred, Data.Complex goes with :+ , no colon after the +
2022-07-14 04:43:01 +0200dcoutts(~duncan@host86-167-206-10.range86-167.btcentralplus.com)
2022-07-14 04:43:13 +0200 <hasbae> yup, there it is :)
2022-07-14 04:43:25 +0200Sciencentistguy(~sciencent@hacksoc/ordinary-member) (Quit: Ping timeout (120 seconds))
2022-07-14 04:43:44 +0200Sciencentistguy(~sciencent@hacksoc/ordinary-member)
2022-07-14 04:44:10 +0200dcoutts_(~duncan@host86-167-206-10.range86-167.btcentralplus.com)
2022-07-14 04:46:10 +0200merijn(~merijn@c-001-001-023.client.esciencecenter.eduvpn.nl)
2022-07-14 04:46:15 +0200 <jackdk> I wish the generics one was in Data.Functor.Sum =/
2022-07-14 04:48:33 +0200LiChen(uid561437@id-561437.tinside.irccloud.com)
2022-07-14 04:48:39 +0200nightbreak(~nightbrea@2600:1700:70d1:d800:38ac:cd9e:758c:fd93)
2022-07-14 04:48:58 +0200nightbreaknightbreak[Away]
2022-07-14 04:53:58 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:a9e5:8234:e3a4:dc0e) (Remote host closed the connection)
2022-07-14 04:57:38 +0200matthewmosior(~matthewmo@173.170.253.91)
2022-07-14 04:59:45 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:a9e5:8234:e3a4:dc0e)
2022-07-14 05:00:01 +0200haasn(~nand@haasn.dev) (Quit: ZNC 1.7.5+deb4 - https://znc.in)
2022-07-14 05:00:22 +0200nate4(~nate@98.45.169.16) (Ping timeout: 244 seconds)
2022-07-14 05:01:18 +0200haasn(~nand@haasn.dev)
2022-07-14 05:07:46 +0200ezzieyguywuf(~Unknown@user/ezzieyguywuf) (Remote host closed the connection)
2022-07-14 05:09:50 +0200[itchyjunk](~itchyjunk@user/itchyjunk/x-7353470) (Remote host closed the connection)
2022-07-14 05:10:27 +0200ezzieyguywuf(~Unknown@user/ezzieyguywuf)
2022-07-14 05:13:54 +0200werneta(~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net) (Ping timeout: 264 seconds)
2022-07-14 05:14:07 +0200werneta(~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net)
2022-07-14 05:15:59 +0200cosimone`(~user@93-44-186-171.ip98.fastwebnet.it) (Ping timeout: 255 seconds)
2022-07-14 05:16:53 +0200talismanick(~talismani@2601:200:c100:3850::dd64)
2022-07-14 05:17:17 +0200talismanickGuest1921
2022-07-14 05:20:30 +0200merijn(~merijn@c-001-001-023.client.esciencecenter.eduvpn.nl) (Ping timeout: 264 seconds)
2022-07-14 05:21:49 +0200ryanbooker(uid4340@id-4340.hampstead.irccloud.com) (Quit: Connection closed for inactivity)
2022-07-14 05:23:51 +0200yauhsien(~yauhsien@61-231-21-122.dynamic-ip.hinet.net)
2022-07-14 05:27:24 +0200nate4(~nate@98.45.169.16)
2022-07-14 05:32:24 +0200nate4(~nate@98.45.169.16) (Ping timeout: 244 seconds)
2022-07-14 05:35:43 +0200Cajun(~Cajun@user/cajun)
2022-07-14 05:36:02 +0200rembo10(~rembo10@main.remulis.com) (Quit: ZNC 1.8.2 - https://znc.in)
2022-07-14 05:37:02 +0200rembo10(~rembo10@main.remulis.com)
2022-07-14 05:39:02 +0200slac79805(~slack1256@186.11.42.111) (Remote host closed the connection)
2022-07-14 05:41:43 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:a9e5:8234:e3a4:dc0e) (Remote host closed the connection)
2022-07-14 05:44:34 +0200hasbae(~hippoid@c-98-220-13-8.hsd1.il.comcast.net) (Quit: WeeChat 3.5)
2022-07-14 05:45:43 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:a9e5:8234:e3a4:dc0e)
2022-07-14 05:48:13 +0200ski(~ski@ext-1-468.eduroam.chalmers.se) (Ping timeout: 272 seconds)
2022-07-14 05:52:15 +0200seriously(~seriously@ool-18bd55d4.dyn.optonline.net)
2022-07-14 05:55:00 +0200bontaq(~user@ool-45779fe5.dyn.optonline.net) (Ping timeout: 272 seconds)
2022-07-14 05:55:26 +0200 <seriously> Does someone mind giving me an extra hint to problem 2 here ? https://paste.tomsmeding.com/aMdyFv2c
2022-07-14 05:56:27 +0200 <seriously> composing functions on a list input was easy to grasp but im struggling to compose
2022-07-14 05:56:27 +0200mon_aaraj(~MonAaraj@user/mon-aaraj/x-4416475) (Quit: WeeChat 3.5)
2022-07-14 05:57:04 +0200 <seriously> functions that work on a primitive input that ... given that the original function used recursion
2022-07-14 05:57:23 +0200mon_aaraj(~MonAaraj@user/mon-aaraj/x-4416475)
2022-07-14 05:59:55 +0200matthewmosior(~matthewmo@173.170.253.91) (Ping timeout: 244 seconds)
2022-07-14 05:59:56 +0200elvishjerricco(sid237756@id-237756.helmsley.irccloud.com) ()
2022-07-14 06:00:21 +0200yauhsien(~yauhsien@61-231-21-122.dynamic-ip.hinet.net) (Read error: Connection reset by peer)
2022-07-14 06:00:39 +0200nate4(~nate@98.45.169.16)
2022-07-14 06:00:53 +0200yauhsien(~yauhsien@61-231-21-122.dynamic-ip.hinet.net)
2022-07-14 06:03:52 +0200Cale(~cale@cpef48e38ee8583-cm30b7d4b3fc20.cpe.net.cable.rogers.com) (Ping timeout: 272 seconds)
2022-07-14 06:06:21 +0200triteraf1opstriteraflops
2022-07-14 06:07:02 +0200nate4(~nate@98.45.169.16) (Ping timeout: 244 seconds)
2022-07-14 06:13:44 +0200califax(~califax@user/califx) (Ping timeout: 268 seconds)
2022-07-14 06:17:22 +0200elvishjerricco_(sid237756@id-237756.helmsley.irccloud.com)
2022-07-14 06:17:37 +0200elvishjerricco_(sid237756@id-237756.helmsley.irccloud.com) (Client Quit)
2022-07-14 06:17:42 +0200califax(~califax@user/califx)
2022-07-14 06:19:00 +0200seriously(~seriously@ool-18bd55d4.dyn.optonline.net) (Ping timeout: 252 seconds)
2022-07-14 06:20:18 +0200nate4(~nate@98.45.169.16)
2022-07-14 06:23:08 +0200elvishjerricco(~elvishjer@2001:470:69fc:105::6172)
2022-07-14 06:24:13 +0200jinsun__(~jinsun@user/jinsun)
2022-07-14 06:24:13 +0200jinsunGuest3789
2022-07-14 06:24:13 +0200jinsun__jinsun
2022-07-14 06:24:27 +0200Guest3789(~jinsun@user/jinsun) ()
2022-07-14 06:25:10 +0200nate4(~nate@98.45.169.16) (Ping timeout: 240 seconds)
2022-07-14 06:30:10 +0200matthewmosior(~matthewmo@173.170.253.91)
2022-07-14 06:31:17 +0200yauhsien(~yauhsien@61-231-21-122.dynamic-ip.hinet.net) (Remote host closed the connection)
2022-07-14 06:32:17 +0200yauhsien(~yauhsien@61-231-21-122.dynamic-ip.hinet.net)
2022-07-14 06:33:53 +0200mvk(~mvk@2607:fea8:5ce3:8500::909a) (Ping timeout: 244 seconds)
2022-07-14 06:34:24 +0200matthewmosior(~matthewmo@173.170.253.91) (Ping timeout: 244 seconds)
2022-07-14 06:36:48 +0200notzmv(~zmv@user/notzmv)
2022-07-14 06:36:59 +0200yauhsien(~yauhsien@61-231-21-122.dynamic-ip.hinet.net) (Ping timeout: 272 seconds)
2022-07-14 06:40:30 +0200mbuf(~Shakthi@122.165.55.71)
2022-07-14 06:41:17 +0200zebrag(~chris@user/zebrag) (Quit: Konversation terminated!)
2022-07-14 06:41:44 +0200seriously(~seriously@ool-18bd55d4.dyn.optonline.net)
2022-07-14 06:42:47 +0200 <Axman6> seriously: Hey, do you have any examples of things you've tried so far?
2022-07-14 06:42:54 +0200mon_aaraj(~MonAaraj@user/mon-aaraj/x-4416475) (Quit: WeeChat 3.5)
2022-07-14 06:43:22 +0200 <Axman6> for the first one, some functions that might be useful are map, filter and product
2022-07-14 06:43:36 +0200mon_aaraj(~MonAaraj@user/mon-aaraj/x-4416475)
2022-07-14 06:45:34 +0200vst(~Thunderbi@w118010235.w118010.starhub.net.sg)
2022-07-14 06:46:30 +0200seriously(~seriously@ool-18bd55d4.dyn.optonline.net) (Ping timeout: 252 seconds)
2022-07-14 06:46:58 +0200vst(~Thunderbi@w118010235.w118010.starhub.net.sg) (Client Quit)
2022-07-14 06:47:09 +0200vst(~Thunderbi@w118010235.w118010.starhub.net.sg)
2022-07-14 06:47:25 +0200matthewmosior(~matthewmo@173.170.253.91)
2022-07-14 06:50:43 +0200vst(~Thunderbi@w118010235.w118010.starhub.net.sg) (Client Quit)
2022-07-14 06:51:06 +0200vst(~Thunderbi@w118010235.w118010.starhub.net.sg)
2022-07-14 06:52:44 +0200merijn(~merijn@c-001-001-023.client.esciencecenter.eduvpn.nl)
2022-07-14 06:54:33 +0200notzmv(~zmv@user/notzmv) (Ping timeout: 244 seconds)
2022-07-14 06:57:25 +0200nate4(~nate@98.45.169.16)
2022-07-14 07:00:16 +0200Batzy(~quassel@user/batzy) (Quit: https://quassel-irc.org - Chat comfortably. Anywhere.)
2022-07-14 07:01:21 +0200Batzy(~quassel@user/batzy)
2022-07-14 07:03:41 +0200califax(~califax@user/califx) (Ping timeout: 268 seconds)
2022-07-14 07:05:29 +0200nate4(~nate@98.45.169.16) (Ping timeout: 272 seconds)
2022-07-14 07:05:40 +0200yauhsien(~yauhsien@61-231-21-122.dynamic-ip.hinet.net)
2022-07-14 07:07:38 +0200califax(~califax@user/califx)
2022-07-14 07:08:47 +0200ytw(~ytw@c-67-160-116-19.hsd1.wa.comcast.net)
2022-07-14 07:12:33 +0200yauhsien(~yauhsien@61-231-21-122.dynamic-ip.hinet.net) (Ping timeout: 276 seconds)
2022-07-14 07:14:38 +0200Kaiepi(~Kaiepi@156.34.47.253) (Read error: Connection reset by peer)
2022-07-14 07:21:28 +0200mixfix41(~sdenynine@user/mixfix41) (Quit: g2g seeya)
2022-07-14 07:22:35 +0200merijn(~merijn@c-001-001-023.client.esciencecenter.eduvpn.nl) (Ping timeout: 272 seconds)
2022-07-14 07:23:26 +0200zebrag(~chris@user/zebrag)
2022-07-14 07:32:17 +0200NaturalNumber(~monadam@137.229.82.64) (Quit: Have a nice day)
2022-07-14 07:36:29 +0200takuan(~takuan@178-116-218-225.access.telenet.be)
2022-07-14 07:38:24 +0200mon_aaraj(~MonAaraj@user/mon-aaraj/x-4416475) (Quit: WeeChat 3.5)
2022-07-14 07:38:46 +0200mon_aaraj(~MonAaraj@user/mon-aaraj/x-4416475)
2022-07-14 07:41:16 +0200bilegeek(~bilegeek@2600:1008:b01a:fd78:eb30:da7d:1e1b:a7f7)
2022-07-14 07:44:57 +0200yauhsien(~yauhsien@61-231-21-122.dynamic-ip.hinet.net)
2022-07-14 07:46:56 +0200zebrag(~chris@user/zebrag) (Quit: Konversation terminated!)
2022-07-14 07:48:03 +0200segfaultfizzbuzz(~segfaultf@157-131-253-58.fiber.dynamic.sonic.net)
2022-07-14 07:48:11 +0200qwedfg(~qwedfg@user/qwedfg) (Read error: Connection reset by peer)
2022-07-14 07:49:55 +0200qwedfg(~qwedfg@user/qwedfg)
2022-07-14 07:50:27 +0200coot(~coot@213.134.190.95)
2022-07-14 07:50:29 +0200matthewmosior(~matthewmo@173.170.253.91) (Ping timeout: 244 seconds)
2022-07-14 07:55:53 +0200mmhat(~mmh@p200300f1c7090754ee086bfffe095315.dip0.t-ipconnect.de)
2022-07-14 07:56:06 +0200abhinav(~abhinav@c-67-169-139-16.hsd1.ca.comcast.net) (Ping timeout: 276 seconds)
2022-07-14 07:57:02 +0200incertia(~incertia@d47-69-133-171.try.wideopenwest.com) (Ping timeout: 255 seconds)
2022-07-14 07:58:29 +0200incertia(~incertia@d47-69-133-171.try.wideopenwest.com)
2022-07-14 08:04:05 +0200zxx7530(~Thunderbi@user/zxx7529)
2022-07-14 08:04:12 +0200zxx7529(~Thunderbi@user/zxx7529) (Remote host closed the connection)
2022-07-14 08:04:12 +0200zxx7530zxx7529
2022-07-14 08:07:38 +0200zaquest(~notzaques@5.130.79.72) (Remote host closed the connection)
2022-07-14 08:09:16 +0200zaquest(~notzaques@5.130.79.72)
2022-07-14 08:11:59 +0200acidjnk_new(~acidjnk@p200300d6e7058608806bdf82a214d350.dip0.t-ipconnect.de)
2022-07-14 08:13:33 +0200derelict_(~derelict@user/derelict)
2022-07-14 08:13:40 +0200pgass(~pg@190.247.245.154)
2022-07-14 08:14:25 +0200incertia(~incertia@d47-69-133-171.try.wideopenwest.com) (*.net *.split)
2022-07-14 08:14:25 +0200ezzieyguywuf(~Unknown@user/ezzieyguywuf) (*.net *.split)
2022-07-14 08:14:25 +0200Lord_of_Life(~Lord@user/lord-of-life/x-2819915) (*.net *.split)
2022-07-14 08:14:25 +0200vglfr(~vglfr@coupling.penchant.volia.net) (*.net *.split)
2022-07-14 08:14:25 +0200geekosaur(~geekosaur@xmonad/geekosaur) (*.net *.split)
2022-07-14 08:14:25 +0200pgas(~pg@190.247.245.154) (*.net *.split)
2022-07-14 08:14:25 +0200Igloo(~ian@matrix.chaos.earth.li) (*.net *.split)
2022-07-14 08:14:25 +0200wz1000(~zubin@static.11.113.47.78.clients.your-server.de) (*.net *.split)
2022-07-14 08:14:25 +0200Midjak(~Midjak@82.66.147.146) (*.net *.split)
2022-07-14 08:14:25 +0200lemonsnicks(~lemonsnic@cpc159519-perr18-2-0-cust114.19-1.cable.virginm.net) (*.net *.split)
2022-07-14 08:14:25 +0200heath(~heath@user/heath) (*.net *.split)
2022-07-14 08:14:25 +0200cross(~cross@spitfire.i.gajendra.net) (*.net *.split)
2022-07-14 08:14:25 +0200wolfshappen(~waff@irc.furworks.de) (*.net *.split)
2022-07-14 08:14:25 +0200auri(~auri@fsf/member/auri) (*.net *.split)
2022-07-14 08:14:25 +0200jjhoo(~jahakala@user/jjhoo) (*.net *.split)
2022-07-14 08:14:25 +0200mstksg(~jle`@cpe-23-240-75-236.socal.res.rr.com) (*.net *.split)
2022-07-14 08:14:25 +0200kmein(~weechat@user/kmein) (*.net *.split)
2022-07-14 08:14:25 +0200_________(~nobody@user/noodly) (*.net *.split)
2022-07-14 08:14:25 +0200Goodbye_Vincent(cyvahl@freakshells.net) (*.net *.split)
2022-07-14 08:14:25 +0200FragByte(~christian@user/fragbyte) (*.net *.split)
2022-07-14 08:14:25 +0200fryguybob(~fryguybob@cpe-74-67-169-145.rochester.res.rr.com) (*.net *.split)
2022-07-14 08:14:25 +0200Square(~a@user/square) (*.net *.split)
2022-07-14 08:14:25 +0200aforemny(~aforemny@static.248.158.34.188.clients.your-server.de) (*.net *.split)
2022-07-14 08:14:25 +0200kaol(~kaol@94-237-42-30.nl-ams1.upcloud.host) (*.net *.split)
2022-07-14 08:14:25 +0200joo-_(~joo-_@fsf/member/joo--) (*.net *.split)
2022-07-14 08:14:25 +0200rodental(~rodental@38.146.5.222) (*.net *.split)
2022-07-14 08:14:25 +0200Guest1698(~Guest1698@20.83.116.49) (*.net *.split)
2022-07-14 08:14:25 +0200APic(apic@apic.name) (*.net *.split)
2022-07-14 08:14:25 +0200Patternmaster(~georg@user/Patternmaster) (*.net *.split)
2022-07-14 08:14:25 +0200xstill_(xstill@fimu/xstill) (*.net *.split)
2022-07-14 08:14:25 +0200shane_(~shane@ana.rch.ist) (*.net *.split)
2022-07-14 08:14:25 +0200statusfailed(~statusfai@statusfailed.com) (*.net *.split)
2022-07-14 08:14:25 +0200djanatyn1(~djanatyn@vps-7f49a6b0.vps.ovh.ca) (*.net *.split)
2022-07-14 08:14:25 +0200tomsmeding(~tomsmedin@static.21.109.88.23.clients.your-server.de) (*.net *.split)
2022-07-14 08:14:25 +0200glider(~glider@user/glider) (*.net *.split)
2022-07-14 08:14:25 +0200eldritch(~eldritch@user/eldritch) (*.net *.split)
2022-07-14 08:14:25 +0200orcus(~orcus@user/brprice) (*.net *.split)
2022-07-14 08:14:25 +0200kawen(~quassel@static.208.191.216.95.clients.your-server.de) (*.net *.split)
2022-07-14 08:14:26 +0200niko(niko@libera/staff/niko) (*.net *.split)
2022-07-14 08:14:26 +0200infinity0(~infinity0@185.112.146.113) (*.net *.split)
2022-07-14 08:14:26 +0200sajith(~sajith@user/sajith) (*.net *.split)
2022-07-14 08:14:26 +0200tired(~tired@user/tired) (*.net *.split)
2022-07-14 08:14:26 +0200Hecate(~mariposa@user/hecate) (*.net *.split)
2022-07-14 08:14:26 +0200derelict(~derelict@user/derelict) (*.net *.split)
2022-07-14 08:14:26 +0200hltk(~hltk@hltk.fi) (*.net *.split)
2022-07-14 08:14:26 +0200Heffalump(~ganesh@urchin.earth.li) (*.net *.split)
2022-07-14 08:14:26 +0200Unode(~Unode@194.94.44.220) (*.net *.split)
2022-07-14 08:14:26 +0200CAT_S(apic@brezn3.muc.ccc.de) (*.net *.split)
2022-07-14 08:14:26 +0200eagleflo(~aku@163.172.137.34) (*.net *.split)
2022-07-14 08:14:26 +0200ouroboros(~ouroboros@user/ouroboros) (*.net *.split)
2022-07-14 08:14:26 +0200aweinstock(~aweinstoc@cpe-74-76-189-75.nycap.res.rr.com) (*.net *.split)
2022-07-14 08:14:39 +0200joo-_(~joo-_@172-105-65-159.ip.linodeusercontent.com)
2022-07-14 08:14:39 +0200joo-_(~joo-_@172-105-65-159.ip.linodeusercontent.com) (Changing host)
2022-07-14 08:14:39 +0200joo-_(~joo-_@fsf/member/joo--)
2022-07-14 08:15:09 +0200wz1000(~zubin@static.11.113.47.78.clients.your-server.de)
2022-07-14 08:15:23 +0200vglfr(~vglfr@coupling.penchant.volia.net)
2022-07-14 08:15:39 +0200qhong_(~qhong@DN200ouo5.stanford.edu)
2022-07-14 08:16:18 +0200Lord_of_Life(~Lord@user/lord-of-life/x-2819915)
2022-07-14 08:16:26 +0200eldritch(~eldritch@user/eldritch)
2022-07-14 08:17:16 +0200derelict_derelict
2022-07-14 08:17:42 +0200incertia(~incertia@d47-69-133-171.try.wideopenwest.com)
2022-07-14 08:17:42 +0200ezzieyguywuf(~Unknown@user/ezzieyguywuf)
2022-07-14 08:17:42 +0200geekosaur(~geekosaur@xmonad/geekosaur)
2022-07-14 08:17:42 +0200Igloo(~ian@matrix.chaos.earth.li)
2022-07-14 08:17:42 +0200Midjak(~Midjak@82.66.147.146)
2022-07-14 08:17:42 +0200lemonsnicks(~lemonsnic@cpc159519-perr18-2-0-cust114.19-1.cable.virginm.net)
2022-07-14 08:17:42 +0200heath(~heath@user/heath)
2022-07-14 08:17:42 +0200cross(~cross@spitfire.i.gajendra.net)
2022-07-14 08:17:42 +0200wolfshappen(~waff@irc.furworks.de)
2022-07-14 08:17:42 +0200auri(~auri@fsf/member/auri)
2022-07-14 08:17:42 +0200jjhoo(~jahakala@user/jjhoo)
2022-07-14 08:17:42 +0200mstksg(~jle`@cpe-23-240-75-236.socal.res.rr.com)
2022-07-14 08:17:42 +0200kmein(~weechat@user/kmein)
2022-07-14 08:17:42 +0200_________(~nobody@user/noodly)
2022-07-14 08:17:42 +0200Goodbye_Vincent(cyvahl@freakshells.net)
2022-07-14 08:17:42 +0200FragByte(~christian@user/fragbyte)
2022-07-14 08:17:42 +0200fryguybob(~fryguybob@cpe-74-67-169-145.rochester.res.rr.com)
2022-07-14 08:17:42 +0200Square(~a@user/square)
2022-07-14 08:17:42 +0200aforemny(~aforemny@static.248.158.34.188.clients.your-server.de)
2022-07-14 08:17:42 +0200kaol(~kaol@94-237-42-30.nl-ams1.upcloud.host)
2022-07-14 08:17:42 +0200rodental(~rodental@38.146.5.222)
2022-07-14 08:17:42 +0200Guest1698(~Guest1698@20.83.116.49)
2022-07-14 08:17:42 +0200APic(apic@apic.name)
2022-07-14 08:17:42 +0200Patternmaster(~georg@user/Patternmaster)
2022-07-14 08:17:42 +0200xstill_(xstill@fimu/xstill)
2022-07-14 08:17:42 +0200shane_(~shane@ana.rch.ist)
2022-07-14 08:17:42 +0200statusfailed(~statusfai@statusfailed.com)
2022-07-14 08:17:42 +0200djanatyn1(~djanatyn@vps-7f49a6b0.vps.ovh.ca)
2022-07-14 08:17:42 +0200tomsmeding(~tomsmedin@static.21.109.88.23.clients.your-server.de)
2022-07-14 08:17:42 +0200glider(~glider@user/glider)
2022-07-14 08:17:42 +0200orcus(~orcus@user/brprice)
2022-07-14 08:17:42 +0200kawen(~quassel@static.208.191.216.95.clients.your-server.de)
2022-07-14 08:17:42 +0200niko(niko@libera/staff/niko)
2022-07-14 08:17:42 +0200infinity0(~infinity0@185.112.146.113)
2022-07-14 08:17:42 +0200Heffalump(~ganesh@urchin.earth.li)
2022-07-14 08:17:42 +0200sajith(~sajith@user/sajith)
2022-07-14 08:17:42 +0200tired(~tired@user/tired)
2022-07-14 08:17:42 +0200Hecate(~mariposa@user/hecate)
2022-07-14 08:17:42 +0200hltk(~hltk@hltk.fi)
2022-07-14 08:17:42 +0200Unode(~Unode@194.94.44.220)
2022-07-14 08:17:42 +0200CAT_S(apic@brezn3.muc.ccc.de)
2022-07-14 08:17:42 +0200eagleflo(~aku@163.172.137.34)
2022-07-14 08:17:42 +0200ouroboros(~ouroboros@user/ouroboros)
2022-07-14 08:17:42 +0200aweinstock(~aweinstoc@cpe-74-76-189-75.nycap.res.rr.com)
2022-07-14 08:18:19 +0200lemonsnicks(~lemonsnic@cpc159519-perr18-2-0-cust114.19-1.cable.virginm.net) (Max SendQ exceeded)
2022-07-14 08:18:22 +0200CAT_S(apic@brezn3.muc.ccc.de) (Max SendQ exceeded)
2022-07-14 08:18:22 +0200auri(~auri@fsf/member/auri) (Max SendQ exceeded)
2022-07-14 08:18:22 +0200_________(~nobody@user/noodly) (Max SendQ exceeded)
2022-07-14 08:18:22 +0200APic(apic@apic.name) (Max SendQ exceeded)
2022-07-14 08:18:22 +0200glider(~glider@user/glider) (Max SendQ exceeded)
2022-07-14 08:18:22 +0200wolfshappen(~waff@irc.furworks.de) (Max SendQ exceeded)
2022-07-14 08:18:29 +0200CAT_S(apic@brezn3.muc.ccc.de)
2022-07-14 08:18:32 +0200auri(~auri@fsf/member/auri)
2022-07-14 08:18:33 +0200APic(apic@apic.name)
2022-07-14 08:18:37 +0200mcglk(~mcglk@131.191.49.120) (Read error: Connection reset by peer)
2022-07-14 08:18:38 +0200wolfshappen(~waff@irc.furworks.de)
2022-07-14 08:18:41 +0200_________(~nobody@user/noodly)
2022-07-14 08:18:41 +0200lemonsnicks(~lemonsnic@cpc159519-perr18-2-0-cust114.19-1.cable.virginm.net)
2022-07-14 08:18:57 +0200qhong(~qhong@rescomp-21-400677.stanford.edu) (Ping timeout: 272 seconds)
2022-07-14 08:19:05 +0200mcglk(~mcglk@131.191.49.120)
2022-07-14 08:19:32 +0200gmg(~user@user/gehmehgeh)
2022-07-14 08:19:40 +0200matthewmosior(~matthewmo@173.170.253.91)
2022-07-14 08:20:18 +0200glider(~glider@user/glider)
2022-07-14 08:21:38 +0200mon_aaraj(~MonAaraj@user/mon-aaraj/x-4416475) (Ping timeout: 240 seconds)
2022-07-14 08:23:56 +0200matthewmosior(~matthewmo@173.170.253.91) (Ping timeout: 244 seconds)
2022-07-14 08:28:38 +0200DigitalKiwi(~kiwi@137.184.156.191) (Quit: quite.)
2022-07-14 08:29:19 +0200DigitalKiwi(~kiwi@137.184.156.191)
2022-07-14 08:30:23 +0200gentauro(~gentauro@user/gentauro) (Ping timeout: 255 seconds)
2022-07-14 08:31:56 +0200christiansen(~christian@83-95-137-75-dynamic.dk.customer.tdc.net)
2022-07-14 08:34:32 +0200gurkenglas(~gurkengla@dslb-002-203-144-112.002.203.pools.vodafone-ip.de)
2022-07-14 08:35:53 +0200seriously(~seriously@ool-18bd55d4.dyn.optonline.net)
2022-07-14 08:37:04 +0200gentauro(~gentauro@user/gentauro)
2022-07-14 08:38:39 +0200matthewmosior(~matthewmo@173.170.253.91)
2022-07-14 08:44:16 +0200echoreply(~echoreply@45.32.163.16) (Quit: WeeChat 2.8)
2022-07-14 08:45:33 +0200echoreply(~echoreply@45.32.163.16)
2022-07-14 08:57:10 +0200cfricke(~cfricke@user/cfricke)
2022-07-14 09:02:01 +0200segfaultfizzbuzz(~segfaultf@157-131-253-58.fiber.dynamic.sonic.net) (Ping timeout: 272 seconds)
2022-07-14 09:03:44 +0200notzmv(~zmv@user/notzmv)
2022-07-14 09:08:52 +0200azimut(~azimut@gateway/tor-sasl/azimut) (Ping timeout: 268 seconds)
2022-07-14 09:16:26 +0200merijn(~merijn@c-001-001-023.client.esciencecenter.eduvpn.nl)
2022-07-14 09:18:18 +0200tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
2022-07-14 09:20:08 +0200seriously(~seriously@ool-18bd55d4.dyn.optonline.net) (Ping timeout: 252 seconds)
2022-07-14 09:21:12 +0200adanwan(~adanwan@gateway/tor-sasl/adanwan) (Remote host closed the connection)
2022-07-14 09:21:40 +0200adanwan(~adanwan@gateway/tor-sasl/adanwan)
2022-07-14 09:28:57 +0200Guest1921(~talismani@2601:200:c100:3850::dd64) (Quit: Using Circe, the loveliest of all IRC clients)
2022-07-14 09:33:41 +0200zxx7529(~Thunderbi@user/zxx7529) (Ping timeout: 244 seconds)
2022-07-14 09:34:38 +0200qwedfg(~qwedfg@user/qwedfg) (Ping timeout: 240 seconds)
2022-07-14 09:37:51 +0200jpds(~jpds@gateway/tor-sasl/jpds) (Ping timeout: 268 seconds)
2022-07-14 09:38:02 +0200alp(~alp@user/alp)
2022-07-14 09:39:07 +0200ccntrq(~Thunderbi@2a01:c22:91f0:c800:77dc:2eb1:fe47:5fbc)
2022-07-14 09:39:29 +0200jpds(~jpds@gateway/tor-sasl/jpds)
2022-07-14 09:41:34 +0200MajorBiscuit(~MajorBisc@wlan-145-94-167-213.wlan.tudelft.nl)
2022-07-14 09:42:05 +0200matthewmosior(~matthewmo@173.170.253.91) (Ping timeout: 244 seconds)
2022-07-14 09:43:16 +0200Sgeo(~Sgeo@user/sgeo) (Read error: Connection reset by peer)
2022-07-14 09:45:44 +0200chomwitt(~chomwitt@2a02:587:dc0d:4a00:5f16:ac72:f625:5e79)
2022-07-14 09:45:45 +0200Vajb(~Vajb@n1zigc3rgo9mpde2w-1.v6.elisa-mobile.fi) (Read error: Connection reset by peer)
2022-07-14 09:46:36 +0200Vajb(~Vajb@hag-jnsbng11-58c3ad-40.dhcp.inet.fi)
2022-07-14 09:46:40 +0200MajorBiscuit(~MajorBisc@wlan-145-94-167-213.wlan.tudelft.nl) (Quit: WeeChat 3.5)
2022-07-14 09:50:52 +0200jgeerds(~jgeerds@55d437cf.access.ecotel.net)
2022-07-14 09:51:15 +0200zxx7529(~Thunderbi@user/zxx7529)
2022-07-14 09:52:04 +0200tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2022-07-14 09:53:13 +0200MajorBiscuit(~MajorBisc@wlan-145-94-167-213.wlan.tudelft.nl)
2022-07-14 09:53:22 +0200chele(~chele@user/chele)
2022-07-14 09:55:36 +0200matthewmosior(~matthewmo@173.170.253.91)
2022-07-14 09:55:58 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:a9e5:8234:e3a4:dc0e) (Remote host closed the connection)
2022-07-14 09:58:23 +0200machinedgod(~machinedg@d172-219-86-154.abhsia.telus.net)
2022-07-14 10:01:05 +0200mima(~mmh@aftr-62-216-210-53.dynamic.mnet-online.de)
2022-07-14 10:02:11 +0200jgeerds(~jgeerds@55d437cf.access.ecotel.net) (Ping timeout: 272 seconds)
2022-07-14 10:02:34 +0200tzh(~tzh@c-24-21-73-154.hsd1.wa.comcast.net) (Quit: zzz)
2022-07-14 10:02:37 +0200matthewmosior(~matthewmo@173.170.253.91) (Ping timeout: 244 seconds)
2022-07-14 10:05:49 +0200NaturalNumber(~monadam@137.229.82.64)
2022-07-14 10:09:09 +0200zer0bitz(~zer0bitz@2001:2003:f748:2000:1a4:ed4b:5e9f:8674) (Read error: Connection reset by peer)
2022-07-14 10:09:53 +0200silph(~silph@67-208-31-162.ip.tor.radiant.net)
2022-07-14 10:10:11 +0200 <silph> I have a beginner question. I am reading hte Haskell wikibook.
2022-07-14 10:10:35 +0200 <silph> Question 1: the following is a line of code in the wikibook:
2022-07-14 10:11:05 +0200jmorris(uid537181@id-537181.uxbridge.irccloud.com) (Quit: Connection closed for inactivity)
2022-07-14 10:11:32 +0200 <silph> sum (x:xs) = x + sum xs
2022-07-14 10:11:47 +0200 <silph> question 1: are the brackets in "(x:xs)" necessary?
2022-07-14 10:12:22 +0200 <silph> question 2: am i allowed to write "sum(xs)" instead of "sum xs", if i want to make my Java brain more comfortable?
2022-07-14 10:12:24 +0200 <merijn> silph: Yes, patterns that include operators or whitespace should be delimited with parenthesis
2022-07-14 10:12:42 +0200Tuplanolla(~Tuplanoll@91-159-69-97.elisa-laajakaista.fi)
2022-07-14 10:12:51 +0200 <silph> why should they be delimited? what happens if you don't put in the brackets?
2022-07-14 10:13:00 +0200 <merijn> silph: You can write "sum(xs)", but you really, REALLY shouldn't, because it's a crutch that will make it much harder for you to read other people's code
2022-07-14 10:13:25 +0200 <merijn> silph: It becomes ambiguous how many arguments a function has if you don't
2022-07-14 10:13:43 +0200 <merijn> silph: Consider "foo (Just x)" vs "foo Just x" <- looks like it has 2 arguments, instead of 1
2022-07-14 10:13:45 +0200 <int-e> silph: sum x:xs would bve (sum x):xs, and that would result in a parse error
2022-07-14 10:14:10 +0200 <silph> (is Just a special thing in Haskell? i haven't learned about Just, yet)
2022-07-14 10:14:11 +0200 <Axman6> silph: sum x: xs means (sum x) : xs, not sum (x:xs)
2022-07-14 10:14:45 +0200 <silph> int-e: oh, i see about "(sum x):xs". i guess function names have higher precedence than (:)
2022-07-14 10:14:49 +0200 <Axman6> and if you write functions like sum(xs), then you'll start wanting to write foldr(f,z,xs) which isn't correct, the closest would be foldr(f)(z)(xs)
2022-07-14 10:14:55 +0200 <int-e> > let Just x ? y = x; Nothing ? y = y in (Just 42 ? 10, Nothing ? 10)
2022-07-14 10:14:57 +0200 <lambdabot> (42,10)
2022-07-14 10:15:40 +0200 <silph> (int-e : your Just example is too difficult for my slow brain to undersatnd, so i'll ignore it for now. but thanks anyways for tryign to explain it).
2022-07-14 10:15:56 +0200 <silph> i have a second question ( a harder to explain question) that is making my Java brain very uncomfortable.
2022-07-14 10:16:28 +0200 <int-e> (that's defining an infix operator called `?`, demonstrating that this idea that the left-hand sides of bindings are parsed similar to expressions carries further)
2022-07-14 10:17:29 +0200 <int-e> > let (?) (Just x) y = x; (?) Nothing y = y in (Just 42 ? 10, Nothing ? 10) -- equivalent version
2022-07-14 10:17:31 +0200 <lambdabot> (42,10)
2022-07-14 10:17:46 +0200int-eshrugs
2022-07-14 10:17:57 +0200 <int-e> yeah maybe you haven't thought about infix operators much yet
2022-07-14 10:25:31 +0200 <silph> (oh darn! i wrote my question in pastebin, but pastebin added strange colour formatting to normal English words, haha)
2022-07-14 10:25:32 +0200 <silph> https://paste.tomsmeding.com/SU1HIhUD
2022-07-14 10:29:33 +0200 <jackdk> I can't think of a better answer than "experience", though it's rare for functions to have a squillion arguments without some of them being packaged up into a record
2022-07-14 10:30:46 +0200toluene3(~toluene@user/toulene)
2022-07-14 10:31:26 +0200toluene(~toluene@user/toulene) (Ping timeout: 255 seconds)
2022-07-14 10:31:27 +0200toluene3toluene
2022-07-14 10:31:49 +0200 <silph> jackdk:  (i don't know what a record is, but i'm inferring from your answer that it's something helps a person parse arguments when doing a function call)
2022-07-14 10:32:27 +0200 <jackdk> silph: think "struct", or "class, but without any kind of bundled behaviour attached to instances", or "POJO", maybe?
2022-07-14 10:32:30 +0200 <silph> if the first argument to foldl /could/ be the final result of the function "f", is it possible that my wrong parsing that i outlined in the pastebin question, could in fact be correct?
2022-07-14 10:32:47 +0200 <silph> (ugh, let me rephrase that)
2022-07-14 10:33:19 +0200 <silph> suppose foldl returns an Integer, and that the function f returns an Integer. then, i can call:
2022-07-14 10:33:31 +0200 <silph> foldl f x y
2022-07-14 10:33:36 +0200matthewmosior(~matthewmo@173.170.253.91)
2022-07-14 10:33:37 +0200 <silph> which will evalute to
2022-07-14 10:33:42 +0200 <silph> foldl [some Integer]
2022-07-14 10:33:53 +0200 <silph> and which would be evaluated successfully.
2022-07-14 10:34:07 +0200 <silph> suppose it was indeed the case that foldl can accept an Integer as its only argument.
2022-07-14 10:34:22 +0200 <silph> then is it really the case that the following is ambiguous:
2022-07-14 10:34:31 +0200 <jackdk> let's stop using the word foldl for a second, so there's no semantic baggage
2022-07-14 10:34:32 +0200 <silph> foldl f (f acc x) xs
2022-07-14 10:34:35 +0200 <int-e> I'm afraid this whole tupling of arguments idea isn't too helpful.
2022-07-14 10:35:04 +0200 <jackdk> `foo bar baz quux` will parse as `((foo bar) baz) quux` because that's the rules of haskell syntax
2022-07-14 10:35:15 +0200 <silph> could this indeed be parsed as ""f (f acc x) xs" is a fucntion call. then pass the final result to foldl"?
2022-07-14 10:36:05 +0200 <jackdk> no, `foldl f (f acc x) xs` is parsed as `((foldl f) (f acc x)) xs` because that's the rules of haskell syntax
2022-07-14 10:36:18 +0200 <int-e> (((foldl f) ((f acc) x)) xs)
2022-07-14 10:36:21 +0200kuribas(~user@ptr-17d51enm6mimio3yhxb.18120a2.ip6.access.telenet.be)
2022-07-14 10:36:30 +0200 <jackdk> all functions in haskell take one argument, but we say things like "foldl takes three arguments" as a linguistic convenience
2022-07-14 10:36:50 +0200acidjnk_new(~acidjnk@p200300d6e7058608806bdf82a214d350.dip0.t-ipconnect.de) (Ping timeout: 255 seconds)
2022-07-14 10:37:03 +0200 <kuribas> well, both are correct.
2022-07-14 10:37:10 +0200 <int-e> This will come with practice, but when you have `foldl f ...`, the f is the first argument of foldl. You don't have to look at the ... part at all.
2022-07-14 10:38:08 +0200matthewmosior(~matthewmo@173.170.253.91) (Ping timeout: 255 seconds)
2022-07-14 10:38:10 +0200 <silph> i'm looking at the responses and i think i'm missing some fundamental understnading that i need to understand the responses.
2022-07-14 10:38:33 +0200 <silph> maybe i'll ask a question which might clarify something for me.
2022-07-14 10:38:34 +0200 <int-e> Note also that `foldl f` is a valid expression by itself (keyword: partial application). So trying to reason in terms of arities (number of arguments) is kind of doomed.
2022-07-14 10:39:22 +0200 <silph> int-e: i did read the (first) section about currying in the haskell wikibook, so at least i understand what you're saying about partial application. the wikibook still talks abotu foldl as "taking three arguments", so that's not an idea i can throw away right now.
2022-07-14 10:39:24 +0200 <int-e> This part of the syntax is completely unlike Java.
2022-07-14 10:39:47 +0200 <silph> jackd said:
2022-07-14 10:39:48 +0200 <silph> no, `foldl f (f acc x) xs` is parsed as `((foldl f) (f acc x)) xs` because that's the rules of haskell syntax
2022-07-14 10:39:49 +0200 <int-e> :t fold (+)
2022-07-14 10:39:51 +0200 <lambdabot> (Foldable ((->) a), Monoid a, Num a) => a -> a
2022-07-14 10:40:01 +0200 <int-e> whoops
2022-07-14 10:40:13 +0200 <silph> can someone help me understand the "rules of haskell syntax" that makes jackd  understand how Haskell parse that line of code?
2022-07-14 10:40:19 +0200 <int-e> :t foldl (+) :: Integer -> [Integer] -> Integer
2022-07-14 10:40:21 +0200 <lambdabot> Integer -> [Integer] -> Integer
2022-07-14 10:40:31 +0200 <int-e> oh do you realize how types connect to function application?
2022-07-14 10:40:42 +0200 <silph> int-e: i don't understnad yoru question?
2022-07-14 10:40:48 +0200 <silph> so i guess the answer is "no"?
2022-07-14 10:40:52 +0200 <int-e> Like, if you have f :: a -> b and x :: a, then you have f x :: b?
2022-07-14 10:41:16 +0200 <kuribas> silph: lookup "currying"
2022-07-14 10:41:20 +0200 <silph> int-e i do in fact understand what you just wrote
2022-07-14 10:41:26 +0200dschrempf(~dominik@mobiledyn-62-240-134-33.mrsn.at)
2022-07-14 10:41:29 +0200 <kuribas> silph: hint, it doesn't have anything to do with spicing food.
2022-07-14 10:41:37 +0200 <silph> but only at as a basic level, from what i read in the first sectoin that introduces currying in the HAskell wikibook
2022-07-14 10:42:39 +0200NaturalNumber123(~monadam@137.229.82.64)
2022-07-14 10:43:26 +0200 <kuribas> silph: do you understand higher order functions?
2022-07-14 10:43:41 +0200 <kuribas> silph: functions that can take or return other functions?
2022-07-14 10:43:57 +0200 <jackdk> silph: https://www.haskell.org/onlinereport/haskell2010/haskellch3.html#x8-260003.3 the "chapter-and-verse" answer is that the report says so. function application is what is meant when you put two applications next to each other, and because applications associate to the left, we can say `((e1 e2) e3) e4` <=> `e1 e2 e3 e4`
2022-07-14 10:44:01 +0200 <int-e> "foldl takes three arguments" is a shorthand for something like "foldl is a function that when applied to an argument (the first) returns a function that when applied to an argument (the second) returns a function that when applied to an argument (the third) returns a value that's not necessarily a function."
2022-07-14 10:45:23 +0200NaturalNumber(~monadam@137.229.82.64) (Ping timeout: 255 seconds)
2022-07-14 10:45:32 +0200 <silph> int-e: yes. i understand what you're sayinig. but i'm asking you to enter into my poor beginner brain. when the haskell wikibook says "foldl takes three arguments", it really is asking me to think of foldl as a typical Java / mathematical function that takes three arguments. the haskell wikibook knows that my poor brain isn't thinking in terms of
2022-07-14 10:45:33 +0200 <silph> confidnet Haskellers' understanding of currying.
2022-07-14 10:45:57 +0200 <jackdk> silph: you asked about `foldl f (f acc x) xs`; I see four expressions next to each other: first `foldl`, then `f`, then `(f acc x)` (because parens), and then `xs`. Because function application associates to the left, I know that if I want to explicitly parenthesise, I must work left-to-right, hence `(foldl f) (f acc x) xs`, and then `((foldl f) (f acc x)) xs`.
2022-07-14 10:46:26 +0200 <silph> so, i am hoping there's an explanation on how Haskell parses "foldl f (f acc s) xs" that doesn't need currying understanding.
2022-07-14 10:46:53 +0200 <silph> jackdk: okay, maybe i can make sense of your last message. let me think about it more..
2022-07-14 10:47:38 +0200 <silph> okay, i think i understand your explanation. it did require me to understand currying, but luckily my b asic understanding was sufficient!
2022-07-14 10:47:53 +0200 <int-e> > foldl (.) id [succ,succ] 40 -- `foldl` operates on functions of type Integer -> Integer here; we need a fourth argument to turn that into a number. arities are not clear-cut.
2022-07-14 10:47:55 +0200 <silph> so, if i had `function1 function2 (function2 x y) z`, and my intention was to have "function2 (function2 x y) z" to be evaluted first (ie, with "function2 x y" being one argument, and z being the second argument), then could i force this by putting in brackets: `function1 (function2 (function2 x y) z)` ?
2022-07-14 10:47:55 +0200 <lambdabot> 42
2022-07-14 10:48:16 +0200 <int-e> yes, you need parentheses for that
2022-07-14 10:48:23 +0200 <jackdk> silph: sure, if the types line up
2022-07-14 10:48:29 +0200NaturalNumber123(~monadam@137.229.82.64) (Quit: Have a nice day)
2022-07-14 10:48:35 +0200 <silph> jackdk: okay, thanks! my question has been answered now.
2022-07-14 10:49:04 +0200 <silph> it turns out that jackdk's explanation was simple engouh for my beginner brain.
2022-07-14 10:49:15 +0200 <jackdk> it's more a discussion of associativity rather than currying itself, made a little harder to follow because application is triggered by whitespace
2022-07-14 10:49:15 +0200 <silph> sometimes when reading the Haskell wikibook, i realize that i might be too stupid to learn HAskell.
2022-07-14 10:49:23 +0200 <silph> but i'm continuing to try to learn it, anyways.
2022-07-14 10:49:57 +0200 <jackdk> I tend to assume innocent failure on the authors' part rather than the student
2022-07-14 10:50:30 +0200yauhsien(~yauhsien@61-231-21-122.dynamic-ip.hinet.net) (Remote host closed the connection)
2022-07-14 10:50:58 +0200 <silph> when i was a Java tutor, i realized that things that seemed obvious to me, really aren't obvious to someone who's never programmed before.
2022-07-14 10:51:20 +0200 <silph> now i'm expeirencing what my studetns experienced in their Java classrooms, when trying to learn Haskell..
2022-07-14 10:52:01 +0200 <silph> but i've found that "learn yourself a haskell" and the "haskell book" (i think it was called "HAskell from first principles"?) were too difficult for me. the haskell wikibook has been the easiest of the three to understand...
2022-07-14 10:52:10 +0200 <silph> ... but i still need extra help from this IRC channel.
2022-07-14 10:52:22 +0200 <jackdk> yeah, the paradigm shift is a doozy. when moving between Java and say Python and Ruby, the jump is a lot smaller
2022-07-14 10:53:10 +0200 <silph> i have this desire to re-write parts of the Haskell wikibook (or at least supplment it for people who are only as smart as i am), but it looks like contributions to the Haskell wikibook stopped a few years ago!
2022-07-14 10:53:31 +0200qhong_qhong
2022-07-14 10:54:01 +0200 <silph> i am finding that in order to understand (for example) a page of the wikibook, i really do have to take 20 or 30 minutes to work out examples of my own. only then do i understand a page of the wikibook.
2022-07-14 10:54:24 +0200jmorris(uid537181@id-537181.uxbridge.irccloud.com)
2022-07-14 10:54:37 +0200 <jackdk> I am working through a mathematics text at a similar pace
2022-07-14 10:54:40 +0200 <silph> i had never seen recursion that passed an accumulator as an argument, in any of my Java programming school exercises before, and so it took some time to understand that!
2022-07-14 10:54:54 +0200v0d1ch(~v0d1ch@cable-178-148-112-180.dynamic.sbb.rs)
2022-07-14 10:54:55 +0200 <silph> jackdk: are there IRC channels or other extra help for you, when you get stuck on that textbook?
2022-07-14 10:55:17 +0200coot(~coot@213.134.190.95) (Quit: coot)
2022-07-14 10:55:58 +0200 <jackdk> that's because you have mutable variables in java or whatever so you're not likely to discover that pattern, but accumulating parameters are "cleaner" in that the function remains pure
2022-07-14 10:56:14 +0200coot(~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba)
2022-07-14 10:56:22 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:a9e5:8234:e3a4:dc0e)
2022-07-14 10:56:25 +0200 <jackdk> silph: I have a weekly call with a friend to discuss and unstick myself
2022-07-14 10:56:52 +0200 <silph> knowing that you get stuck, too, and need help, makes me feel better for needing the support of #haskell to unstick myself!
2022-07-14 10:57:06 +0200 <jackdk> Nobody got here alone.
2022-07-14 10:57:22 +0200 <silph> thanks for your help :) . i'm going to log off of here now.
2022-07-14 10:57:25 +0200 <silph> i appreciate it a lot.
2022-07-14 10:57:30 +0200 <jackdk> adios!
2022-07-14 10:57:39 +0200 <jackdk> you're welcome.
2022-07-14 10:58:01 +0200nate4(~nate@98.45.169.16)
2022-07-14 10:59:56 +0200silph(~silph@67-208-31-162.ip.tor.radiant.net) (Quit: Client closed)
2022-07-14 10:59:58 +0200gurkenglas(~gurkengla@dslb-002-203-144-112.002.203.pools.vodafone-ip.de) (Ping timeout: 244 seconds)
2022-07-14 11:00:30 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:a9e5:8234:e3a4:dc0e) (Ping timeout: 244 seconds)
2022-07-14 11:02:17 +0200gmg(~user@user/gehmehgeh) (Quit: Leaving)
2022-07-14 11:02:30 +0200nate4(~nate@98.45.169.16) (Ping timeout: 240 seconds)
2022-07-14 11:02:51 +0200ytw(~ytw@c-67-160-116-19.hsd1.wa.comcast.net) (Read error: Connection reset by peer)
2022-07-14 11:03:06 +0200zxx7529(~Thunderbi@user/zxx7529) (Quit: zxx7529)
2022-07-14 11:06:28 +0200matthewmosior(~matthewmo@173.170.253.91)
2022-07-14 11:07:36 +0200tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
2022-07-14 11:10:49 +0200matthewmosior(~matthewmo@173.170.253.91) (Ping timeout: 244 seconds)
2022-07-14 11:14:42 +0200econo(uid147250@user/econo) (Quit: Connection closed for inactivity)
2022-07-14 11:21:42 +0200yauhsien(~yauhsien@61-231-21-122.dynamic-ip.hinet.net)
2022-07-14 11:23:23 +0200bilegeek(~bilegeek@2600:1008:b01a:fd78:eb30:da7d:1e1b:a7f7) (Quit: Leaving)
2022-07-14 11:26:42 +0200yauhsien(~yauhsien@61-231-21-122.dynamic-ip.hinet.net) (Ping timeout: 276 seconds)
2022-07-14 11:33:46 +0200lemonsni-(~lemonsnic@cpc159519-perr18-2-0-cust114.19-1.cable.virginm.net)
2022-07-14 11:34:01 +0200lemonsnicks(~lemonsnic@cpc159519-perr18-2-0-cust114.19-1.cable.virginm.net) (Ping timeout: 272 seconds)
2022-07-14 11:34:39 +0200mmhat(~mmh@p200300f1c7090754ee086bfffe095315.dip0.t-ipconnect.de) (Ping timeout: 272 seconds)
2022-07-14 11:35:33 +0200yauhsien(~yauhsien@61-231-21-122.dynamic-ip.hinet.net)
2022-07-14 11:36:13 +0200Pickchea(~private@user/pickchea)
2022-07-14 11:41:23 +0200matthewmosior(~matthewmo@173.170.253.91)
2022-07-14 11:47:07 +0200tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2022-07-14 11:47:56 +0200mmhat(~mmh@p200300f1c70907fcee086bfffe095315.dip0.t-ipconnect.de)
2022-07-14 11:50:27 +0200gurkenglas(~gurkengla@dslb-002-203-144-112.002.203.pools.vodafone-ip.de)
2022-07-14 11:58:36 +0200perrierjouet(~perrier-j@modemcable012.251-130-66.mc.videotron.ca) (Quit: WeeChat 3.5)
2022-07-14 11:59:01 +0200perrierjouet(~perrier-j@modemcable012.251-130-66.mc.videotron.ca)
2022-07-14 12:00:31 +0200benin0(~benin@183.82.24.82)
2022-07-14 12:02:26 +0200 <phma> If a program does 4000 or so levels of recursion, is something bad likely to happen?
2022-07-14 12:02:52 +0200 <[exa]> no
2022-07-14 12:02:58 +0200 <[exa]> (in general)
2022-07-14 12:03:15 +0200 <Rembane> if it allocates 14Gb of memory in each recursion things might get exciting
2022-07-14 12:05:08 +0200 <phma> 14 gigabits? I don't think so.
2022-07-14 12:05:28 +0200juri_(~juri@79.140.115.122) (Read error: Connection reset by peer)
2022-07-14 12:05:50 +0200 <Rembane> Good, then keep recursing. :)
2022-07-14 12:05:57 +0200juri_(~juri@79.140.115.122)
2022-07-14 12:06:19 +0200 <phma> I think it'll allocate a 4000-bit number on each level, down to a 1-bit number.
2022-07-14 12:06:28 +0200 <phma> What if I want to rebless instead?
2022-07-14 12:07:11 +0200 <Rembane> That's cool too
2022-07-14 12:08:37 +0200tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
2022-07-14 12:09:08 +0200juri_(~juri@79.140.115.122) (Read error: Connection reset by peer)
2022-07-14 12:13:15 +0200juri_(~juri@84-19-175-179.pool.ovpn.com)
2022-07-14 12:14:27 +0200 <merijn> phma: Note that GHC doesn't use a callstack for function calls, so the only real boundary is memory usage
2022-07-14 12:22:45 +0200Benzi-Junior(~BenziJuni@88-149-64-179.du.xdsl.is) (Quit: ZNC 1.8.2 - https://znc.in)
2022-07-14 12:25:57 +0200xff0x(~xff0x@125x103x176x34.ap125.ftth.ucom.ne.jp) (Ping timeout: 272 seconds)
2022-07-14 12:29:45 +0200toluene0(~toluene@user/toulene)
2022-07-14 12:30:24 +0200toluene(~toluene@user/toulene) (Ping timeout: 244 seconds)
2022-07-14 12:30:24 +0200toluene0toluene
2022-07-14 12:31:01 +0200alexhandy(~trace@user/trace) (Read error: Connection reset by peer)
2022-07-14 12:31:12 +0200alexhandy(~trace@user/trace)
2022-07-14 12:32:45 +0200shriekingnoise(~shrieking@201.212.175.181) (Quit: Quit)
2022-07-14 12:33:31 +0200jgeerds(~jgeerds@55d437cf.access.ecotel.net)
2022-07-14 12:34:00 +0200v0d1ch(~v0d1ch@cable-178-148-112-180.dynamic.sbb.rs) (Quit: Client closed)
2022-07-14 12:38:35 +0200[itchyjunk](~itchyjunk@user/itchyjunk/x-7353470)
2022-07-14 12:45:30 +0200matthewmosior(~matthewmo@173.170.253.91) (Ping timeout: 244 seconds)
2022-07-14 12:48:00 +0200yauhsien(~yauhsien@61-231-21-122.dynamic-ip.hinet.net) (Remote host closed the connection)
2022-07-14 12:48:41 +0200yauhsien(~yauhsien@61-231-21-122.dynamic-ip.hinet.net)
2022-07-14 12:49:10 +0200gurkenglas(~gurkengla@dslb-002-203-144-112.002.203.pools.vodafone-ip.de) (Ping timeout: 240 seconds)
2022-07-14 12:58:09 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:a9e5:8234:e3a4:dc0e)
2022-07-14 12:58:39 +0200Benzi-Junior(~BenziJuni@dsl-149-64-179.hive.is)
2022-07-14 13:02:10 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:a9e5:8234:e3a4:dc0e) (Ping timeout: 240 seconds)
2022-07-14 13:02:47 +0200edrx(~Eduardo@2804:56c:d2c1:9700:5761:f063:d847:85bd)
2022-07-14 13:03:10 +0200matthewmosior(~matthewmo@173.170.253.91)
2022-07-14 13:03:41 +0200tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2022-07-14 13:04:16 +0200somniad(~gigabitte@098-127-010-012.res.spectrum.com)
2022-07-14 13:04:23 +0200tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
2022-07-14 13:05:33 +0200Cajun(~Cajun@user/cajun) (Quit: Client closed)
2022-07-14 13:05:57 +0200 <somniad> okay so I am officially confused
2022-07-14 13:06:07 +0200 <somniad> I might be able to track down the answer on my own eventually but it's gonna be way faster to just ask
2022-07-14 13:06:36 +0200acidjnk_new(~acidjnk@p200300d6e7058608806bdf82a214d350.dip0.t-ipconnect.de)
2022-07-14 13:07:06 +0200 <somniad> I used haskell very casually for a while when I was much worse at coding and it was great except that I always had dependency problems
2022-07-14 13:07:27 +0200 <somniad> and I think there must be something I'm missing, because I only want to install one package and I'm still having issues
2022-07-14 13:07:35 +0200matthewmosior(~matthewmo@173.170.253.91) (Ping timeout: 244 seconds)
2022-07-14 13:07:56 +0200 <merijn> somniad: what you're missing is that the entire notion of "install one package" is mostly obsoleted
2022-07-14 13:08:19 +0200 <somniad> well yes obviously the package has its own dependencies
2022-07-14 13:08:25 +0200 <merijn> somniad: Because "install one package" kinda assumes "there is one global scope to install into"
2022-07-14 13:08:35 +0200 <merijn> somniad: And we got rid of the "one global scope"
2022-07-14 13:08:44 +0200 <somniad> ah okay that explains half my problem
2022-07-14 13:09:05 +0200 <somniad> if I do "stack install <package>" it should still try to install it for use in the local project though right
2022-07-14 13:09:21 +0200 <merijn> ah, I dunno exactly how stack does things
2022-07-14 13:09:27 +0200 <somniad> fair enough
2022-07-14 13:09:30 +0200 <somniad> it's just that
2022-07-14 13:09:35 +0200 <merijn> Because I don't use it. But I do recall people saying "don't use stack install" :p
2022-07-14 13:09:44 +0200 <somniad> lol
2022-07-14 13:09:46 +0200 <somniad> okay
2022-07-14 13:10:19 +0200 <somniad> uh, okay so I wanted to just try getting my feet wet with haskell again with an idea I had for some image processing stuff
2022-07-14 13:10:41 +0200 <somniad> so I looked around and found hip which seems pretty easy to use
2022-07-14 13:11:04 +0200 <edrx> hi all! I draw most of my LaTeX diagrams using this - http://angg.twu.net/dednat6/tug-slides.pdf - that is written in Lua, and I realized that many diagrams that I need would be easier to draw by using Haskell to generate Lua code... anyway, my beginner question of the day is: how do I write a function in Haskell that runs an external program with some input? for example, myfunction "foo" would run something roughly
2022-07-14 13:11:04 +0200 <edrx> equivalent to "echo 'foo' | luaprogram.lua" and would return the output of that...
2022-07-14 13:11:10 +0200 <somniad> but `stack install hip` tells me to add some crazy thing to extra-deps and then trying again it just dies
2022-07-14 13:11:29 +0200 <somniad> what is the alternative method to `stack install` for getting stuff off stackage? hopefully something more reliable?
2022-07-14 13:11:47 +0200 <somniad> has cabal been improved since I was around last?
2022-07-14 13:12:37 +0200 <Rembane> It has changed
2022-07-14 13:13:10 +0200xff0x(~xff0x@b133147.ppp.asahi-net.or.jp)
2022-07-14 13:13:18 +0200 <merijn> somniad: Depends when "last around" was :p
2022-07-14 13:13:30 +0200 <somniad> hehe, fair
2022-07-14 13:14:15 +0200 <somniad> how long ago was it, maybe three years? not horribly long
2022-07-14 13:14:37 +0200 <somniad> but not horribly short
2022-07-14 13:14:45 +0200nate4(~nate@98.45.169.16)
2022-07-14 13:15:25 +0200 <somniad> I was under the impression that stack was made to address serious shortcomings of cabal but also it's not like I'm currently getting back up to speed because I never was up in the first place
2022-07-14 13:15:28 +0200 <tomsmeding> somniad: did it have the new- or v2- commands?
2022-07-14 13:16:39 +0200 <merijn> somniad: I mean "serious shortcomings" is very debatable and depends on how much you buy into certain people/companies vision of how things should be :p
2022-07-14 13:17:18 +0200raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
2022-07-14 13:17:39 +0200 <somniad> tomsmeding: definitely not v2
2022-07-14 13:17:56 +0200 <[exa]> edrx: you probably need uniq package and some kind of spawn() or exec() equivalents. But honestly it's much easier (and more portable and maintainable) to have your haskell program to just write the output to stdout, and pipe it with a shell.
2022-07-14 13:18:12 +0200 <[exa]> edrx: managing processes _correctly_ is a mess
2022-07-14 13:18:22 +0200 <merijn> somniad: v2 has made the production of buildplans far more robust
2022-07-14 13:18:51 +0200 <somniad> alright, then, that's good
2022-07-14 13:18:54 +0200 <merijn> somniad: basically: there's the global store (i.e. disk space where dependencies are stored) which allows arbitrarily many conflicting versions/configurations of packages to be installed
2022-07-14 13:19:01 +0200 <edrx> [exa]: I am going to call that function mostly from the ghci repl
2022-07-14 13:19:10 +0200 <[exa]> ah so, so for convenience
2022-07-14 13:19:10 +0200nate4(~nate@98.45.169.16) (Ping timeout: 240 seconds)
2022-07-14 13:19:14 +0200 <edrx> yes
2022-07-14 13:19:17 +0200matthewmosior(~matthewmo@173.170.253.91)
2022-07-14 13:19:20 +0200 <merijn> somniad: Then the buildplan is produced per project/package and only brings one coherent set of dependencies into scope for that project
2022-07-14 13:19:33 +0200 <merijn> somniad: So you no longer have issues with conflicting dependencies between projects
2022-07-14 13:20:03 +0200 <[exa]> edrx: System.Process seems to have pretty well wrapped facilities
2022-07-14 13:20:09 +0200 <[exa]> edrx: here https://hackage.haskell.org/package/process-1.6.14.0/docs/System-Process.html
2022-07-14 13:20:19 +0200 <somniad> neat, that makes a lot of sense and I'm not totally sure why or how it wasn't that way before
2022-07-14 13:20:21 +0200 <edrx> [exa]: great! thanks a lot!!!
2022-07-14 13:20:36 +0200 <merijn> somniad: Same reason none of the other languages do that yet either :p
2022-07-14 13:21:04 +0200edrx(~Eduardo@2804:56c:d2c1:9700:5761:f063:d847:85bd) (Killed buffer)
2022-07-14 13:21:08 +0200 <merijn> somniad: See all the various sandbox/pipenv/pyenv/rubyenv/whatever hacks in other languages
2022-07-14 13:21:45 +0200 <somniad> merijn: dependency management is strictly speaking a hard problem but it's always baffled me how it always seems to be even harder than it should be
2022-07-14 13:22:27 +0200 <somniad> I don't have extensive experience with large projects - any idea why it's like this?
2022-07-14 13:23:27 +0200frost(~frost@user/frost) (Quit: Client closed)
2022-07-14 13:27:16 +0200 <hpc> it's easier to make your own than to try and support all the distros' own packaging systems
2022-07-14 13:27:54 +0200 <hpc> and you can bake in a lot of language-specific logic
2022-07-14 13:32:54 +0200 <somniad> hpc: I suppose the fact that there's such advantages to baking your own is a significant contributing factor to those systems being rough around the edges
2022-07-14 13:33:26 +0200 <somniad> still, I would have thought that a simple, effective approach would have emerged by now and become the norm, or at least a simple approach with minimal severe issues
2022-07-14 13:37:47 +0200__monty__(~toonn@user/toonn)
2022-07-14 13:40:23 +0200frost(~frost@user/frost)
2022-07-14 13:40:50 +0200{-d0t-}(~q_q@user/-d0t-/x-7915216)
2022-07-14 13:41:03 +0200{-d0t-}(~q_q@user/-d0t-/x-7915216) (Client Quit)
2022-07-14 13:45:25 +0200jao(~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net)
2022-07-14 13:45:28 +0200 <sm> it is somewhat specific to your programming language and its compiler
2022-07-14 13:46:55 +0200jao(~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net) (Remote host closed the connection)
2022-07-14 13:49:03 +0200jao(~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net)
2022-07-14 13:54:23 +0200Benzi-Junior(~BenziJuni@dsl-149-64-179.hive.is) (Ping timeout: 255 seconds)
2022-07-14 13:57:24 +0200yauhsien(~yauhsien@61-231-21-122.dynamic-ip.hinet.net) (Remote host closed the connection)
2022-07-14 13:58:10 +0200Benzi-Junior(~BenziJuni@88-149-64-179.du.xdsl.is)
2022-07-14 13:58:25 +0200Pickchea(~private@user/pickchea) (Ping timeout: 272 seconds)
2022-07-14 13:58:47 +0200CiaoSen(~Jura@p200300c9570ffb002a3a4dfffe84dbd5.dip0.t-ipconnect.de)
2022-07-14 13:59:56 +0200notzmv(~zmv@user/notzmv) (Remote host closed the connection)
2022-07-14 14:06:14 +0200frost(~frost@user/frost) (Quit: Client closed)
2022-07-14 14:12:59 +0200califax(~califax@user/califx) (Remote host closed the connection)
2022-07-14 14:13:16 +0200yax__(~yax@user/yax/x-9576643)
2022-07-14 14:14:56 +0200Guest34(~Guest34@2605:a601:a615:f600:b4b5:b98c:22db:6664)
2022-07-14 14:18:29 +0200yauhsien(~yauhsien@61-231-21-122.dynamic-ip.hinet.net)
2022-07-14 14:22:17 +0200califax(~califax@user/califx)
2022-07-14 14:22:41 +0200matthewmosior(~matthewmo@173.170.253.91) (Ping timeout: 255 seconds)
2022-07-14 14:22:44 +0200acidjnk_new(~acidjnk@p200300d6e7058608806bdf82a214d350.dip0.t-ipconnect.de) (Ping timeout: 255 seconds)
2022-07-14 14:23:45 +0200jmdaemon(~jmdaemon@user/jmdaemon) (Ping timeout: 272 seconds)
2022-07-14 14:23:51 +0200notzmv(~zmv@user/notzmv)
2022-07-14 14:27:11 +0200tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2022-07-14 14:30:29 +0200califax(~califax@user/califx) (Remote host closed the connection)
2022-07-14 14:30:30 +0200yauhsien(~yauhsien@61-231-21-122.dynamic-ip.hinet.net) (Read error: Connection reset by peer)
2022-07-14 14:30:53 +0200yauhsien(~yauhsien@61-231-21-122.dynamic-ip.hinet.net)
2022-07-14 14:32:02 +0200califax(~califax@user/califx)
2022-07-14 14:32:41 +0200tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
2022-07-14 14:33:27 +0200frost(~frost@user/frost)
2022-07-14 14:34:12 +0200geekosaur(~geekosaur@xmonad/geekosaur) (Quit: Leaving)
2022-07-14 14:35:13 +0200yauhsien(~yauhsien@61-231-21-122.dynamic-ip.hinet.net) (Remote host closed the connection)
2022-07-14 14:36:25 +0200matthewmosior(~matthewmo@173.170.253.91)
2022-07-14 14:40:35 +0200matthewmosior(~matthewmo@173.170.253.91) (Ping timeout: 244 seconds)
2022-07-14 14:43:18 +0200__monty__(~toonn@user/toonn) (Quit: leaving)
2022-07-14 14:44:14 +0200rekahsoft(~rekahsoft@bras-base-wdston4533w-grc-02-142-113-160-8.dsl.bell.ca)
2022-07-14 14:44:44 +0200rekahsoft(~rekahsoft@bras-base-wdston4533w-grc-02-142-113-160-8.dsl.bell.ca) (Remote host closed the connection)
2022-07-14 14:45:23 +0200geekosaur(~geekosaur@xmonad/geekosaur)
2022-07-14 14:45:24 +0200rekahsoft(~rekahsoft@bras-base-wdston4533w-grc-02-142-113-160-8.dsl.bell.ca)
2022-07-14 14:46:51 +0200sammelweis(~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10)
2022-07-14 14:48:50 +0200xff0x(~xff0x@b133147.ppp.asahi-net.or.jp) (Ping timeout: 240 seconds)
2022-07-14 14:53:29 +0200tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2022-07-14 14:55:46 +0200tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
2022-07-14 14:56:01 +0200yax__(~yax@user/yax/x-9576643) (Remote host closed the connection)
2022-07-14 14:56:22 +0200xff0x(~xff0x@2405:6580:b080:900:d119:3d9a:eb96:d442)
2022-07-14 14:59:21 +0200acidjnk_new(~acidjnk@p200300d6e7058608806bdf82a214d350.dip0.t-ipconnect.de)
2022-07-14 14:59:24 +0200ccntrq(~Thunderbi@2a01:c22:91f0:c800:77dc:2eb1:fe47:5fbc) (Remote host closed the connection)
2022-07-14 14:59:44 +0200ccntrq(~Thunderbi@2a01:c22:91f0:c800:77dc:2eb1:fe47:5fbc)
2022-07-14 15:00:11 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:a9e5:8234:e3a4:dc0e)
2022-07-14 15:00:46 +0200frost(~frost@user/frost) (Ping timeout: 252 seconds)
2022-07-14 15:01:42 +0200 <qrpnxz> is there a way to tell GHC that a branch is absolutely unreachable for optimization
2022-07-14 15:04:21 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:a9e5:8234:e3a4:dc0e) (Ping timeout: 244 seconds)
2022-07-14 15:08:06 +0200Pickchea(~private@user/pickchea)
2022-07-14 15:09:36 +0200matthewmosior(~matthewmo@173.170.253.91)
2022-07-14 15:10:35 +0200jgeerds(~jgeerds@55d437cf.access.ecotel.net) (Ping timeout: 260 seconds)
2022-07-14 15:13:03 +0200fserucas_(~fserucas@89.214.126.41)
2022-07-14 15:15:30 +0200fserucas(~fserucas@1.75.114.89.rev.vodafone.pt) (Ping timeout: 240 seconds)
2022-07-14 15:15:52 +0200fserucas(~fserucas@89.214.126.41)
2022-07-14 15:16:08 +0200fserucas__(~fserucas@1.75.114.89.rev.vodafone.pt) (Ping timeout: 272 seconds)
2022-07-14 15:18:52 +0200 <tomsmeding> Do an FFI call to __builtin_unreachable()
2022-07-14 15:19:07 +0200 <tomsmeding> (not a serious suggestion)
2022-07-14 15:20:14 +0200 <qrpnxz> lmao, too bad i don't think that'd work 🤣
2022-07-14 15:20:43 +0200 <geekosaur> absurd? (also not a serious suggestion)
2022-07-14 15:22:52 +0200yauhsien(~yauhsien@61-231-21-122.dynamic-ip.hinet.net)
2022-07-14 15:22:59 +0200waleee(~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340)
2022-07-14 15:23:59 +0200ccntrq(~Thunderbi@2a01:c22:91f0:c800:77dc:2eb1:fe47:5fbc) (Ping timeout: 244 seconds)
2022-07-14 15:24:17 +0200ccntrq(~Thunderbi@dynamic-077-001-123-045.77.1.pool.telefonica.de)
2022-07-14 15:26:01 +0200Vajb(~Vajb@hag-jnsbng11-58c3ad-40.dhcp.inet.fi) (Read error: Connection reset by peer)
2022-07-14 15:26:01 +0200fserucas(~fserucas@89.214.126.41) (Read error: Connection reset by peer)
2022-07-14 15:26:01 +0200fserucas_(~fserucas@89.214.126.41) (Read error: Connection reset by peer)
2022-07-14 15:26:17 +0200zxx7529(~Thunderbi@user/zxx7529)
2022-07-14 15:26:32 +0200fserucas_(~fserucas@1.75.114.89.rev.vodafone.pt)
2022-07-14 15:26:32 +0200fserucas(~fserucas@1.75.114.89.rev.vodafone.pt)
2022-07-14 15:27:43 +0200yauhsien(~yauhsien@61-231-21-122.dynamic-ip.hinet.net) (Ping timeout: 272 seconds)
2022-07-14 15:27:48 +0200Vajb(~Vajb@n1zigc3rgo9mpde2w-1.v6.elisa-mobile.fi)
2022-07-14 15:29:21 +0200jpds(~jpds@gateway/tor-sasl/jpds) (Ping timeout: 268 seconds)
2022-07-14 15:30:03 +0200acidjnk_new3(~acidjnk@p200300d6e7058608e98f24795f89a9fd.dip0.t-ipconnect.de)
2022-07-14 15:30:31 +0200causal(~user@50.35.83.177) (Quit: WeeChat 3.5)
2022-07-14 15:30:40 +0200jpds(~jpds@gateway/tor-sasl/jpds)
2022-07-14 15:32:59 +0200ccntrq1(~Thunderbi@2a01:c23:8dfc:4700:ab64:e678:4e37:1ce0)
2022-07-14 15:34:03 +0200acidjnk_new(~acidjnk@p200300d6e7058608806bdf82a214d350.dip0.t-ipconnect.de) (Ping timeout: 272 seconds)
2022-07-14 15:34:30 +0200raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 240 seconds)
2022-07-14 15:35:00 +0200ccntrq(~Thunderbi@dynamic-077-001-123-045.77.1.pool.telefonica.de) (Ping timeout: 276 seconds)
2022-07-14 15:35:00 +0200ccntrq1ccntrq
2022-07-14 15:37:38 +0200ccntrq(~Thunderbi@2a01:c23:8dfc:4700:ab64:e678:4e37:1ce0) (Remote host closed the connection)
2022-07-14 15:41:13 +0200dschrempf(~dominik@mobiledyn-62-240-134-33.mrsn.at) (Quit: WeeChat 3.5)
2022-07-14 15:46:24 +0200jpds(~jpds@gateway/tor-sasl/jpds) (Remote host closed the connection)
2022-07-14 15:48:32 +0200pmarg(~pmarg@2a01:799:159f:9b00:73b5:8656:352c:a78e)
2022-07-14 15:50:21 +0200 <qrpnxz> kind of like that yeah, but GHC knows Void is empty
2022-07-14 15:51:00 +0200jpds(~jpds@gateway/tor-sasl/jpds)
2022-07-14 15:51:14 +0200jpds(~jpds@gateway/tor-sasl/jpds) (Remote host closed the connection)
2022-07-14 15:51:37 +0200jpds(~jpds@gateway/tor-sasl/jpds)
2022-07-14 15:54:29 +0200xff0x(~xff0x@2405:6580:b080:900:d119:3d9a:eb96:d442) (Ping timeout: 244 seconds)
2022-07-14 15:55:20 +0200 <tomsmeding> I don't think you can, apart from arranging your types in such a way that the branch is already known to be impossible in the type checker
2022-07-14 15:55:37 +0200 <tomsmeding> But iirc even then ghc sometimes needs to emit code for unreachable cases
2022-07-14 15:55:53 +0200acidjnk_new3(~acidjnk@p200300d6e7058608e98f24795f89a9fd.dip0.t-ipconnect.de) (Ping timeout: 255 seconds)
2022-07-14 15:56:10 +0200hasbae(~hippoid@c-98-220-13-8.hsd1.il.comcast.net)
2022-07-14 15:57:50 +0200qwedfg(~qwedfg@user/qwedfg)
2022-07-14 16:01:03 +0200gensyst(gensyst@user/gensyst)
2022-07-14 16:01:10 +0200radhika(uid560836@id-560836.helmsley.irccloud.com) (Quit: Connection closed for inactivity)
2022-07-14 16:01:56 +0200 <gensyst> I've got an IORef that I'm, from many places (many threads) doing this: atomicModifyIORef' followed by readIORef.
2022-07-14 16:02:05 +0200 <gensyst> Can anyone think of why this is causing a deadlock?
2022-07-14 16:02:05 +0200 <qrpnxz> Too bad. Well, I don't want to unnecessarily box anyway, so I'm gonna write a subclass without the Maybe in the function and then add a default definition for the one with a Maybe. At that point I'm strongly debating whether to just allow "error", but I don't like partial functions.
2022-07-14 16:03:30 +0200Pickchea(~private@user/pickchea) (Ping timeout: 240 seconds)
2022-07-14 16:03:49 +0200TonyStone(~TonyStone@cpe-74-76-51-197.nycap.res.rr.com) (Ping timeout: 272 seconds)
2022-07-14 16:04:29 +0200Benzi-Junior(~BenziJuni@88-149-64-179.du.xdsl.is) (Ping timeout: 268 seconds)
2022-07-14 16:07:19 +0200raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
2022-07-14 16:07:55 +0200dcoutts(~duncan@host86-167-206-10.range86-167.btcentralplus.com) (Ping timeout: 244 seconds)
2022-07-14 16:08:06 +0200Benzi-Junior(~BenziJuni@88-149-67-162.du.xdsl.is)
2022-07-14 16:09:21 +0200segfaultfizzbuzz(~segfaultf@157-131-253-58.fiber.dynamic.sonic.net)
2022-07-14 16:11:05 +0200jmorris(uid537181@id-537181.uxbridge.irccloud.com) (Quit: Connection closed for inactivity)
2022-07-14 16:11:08 +0200 <qrpnxz> gensyst: sounds like the logic of your program is just bad. Hard to say anything specific.
2022-07-14 16:11:13 +0200Fischmiep(~Fischmiep@user/Fischmiep) (Quit: WeeChat 3.0)
2022-07-14 16:11:44 +0200 <geekosaur> I'm thinking this sounds more like it calls for STM, tbh
2022-07-14 16:12:46 +0200 <qrpnxz> i thought about suggesting that, but hard to say without knowing more. Though generally for concurrent programs with atomic ops on shared values stm is the first thing to come to mind indeed.
2022-07-14 16:13:43 +0200matthewmosior(~matthewmo@173.170.253.91) (Ping timeout: 244 seconds)
2022-07-14 16:14:34 +0200acidjnk_new3(~acidjnk@p200300d6e7058608e98f24795f89a9fd.dip0.t-ipconnect.de)
2022-07-14 16:15:30 +0200pmarg_(~pmarg@2a01:799:159f:9b00:73b5:8656:352c:a78e)
2022-07-14 16:15:42 +0200pmarg(~pmarg@2a01:799:159f:9b00:73b5:8656:352c:a78e) (Read error: Connection reset by peer)
2022-07-14 16:17:10 +0200pmarg_(~pmarg@2a01:799:159f:9b00:73b5:8656:352c:a78e) (Remote host closed the connection)
2022-07-14 16:17:14 +0200TonyStone(~TonyStone@2603-7080-8607-c36a-c542-8032-a2eb-86d5.res6.spectrum.com)
2022-07-14 16:17:28 +0200xff0x(~xff0x@2405:6580:b080:900:85b3:13a9:d157:738a)
2022-07-14 16:18:35 +0200pmarg(~pmarg@2a01:799:159f:9b00:73b5:8656:352c:a78e)
2022-07-14 16:20:08 +0200 <hasbae> when I do :i [] in ghci, it says that it's defined in GHC.Types. How can I find GHC.Types on my hard drive to open up in a text editor?
2022-07-14 16:20:38 +0200zxx7529(~Thunderbi@user/zxx7529) (Remote host closed the connection)
2022-07-14 16:20:54 +0200zxx7529(~Thunderbi@user/zxx7529)
2022-07-14 16:21:01 +0200 <Rembane> hasbae: Is this good enough? https://hackage.haskell.org/package/ghc-prim-0.8.0/docs/GHC-Types.html
2022-07-14 16:22:44 +0200 <geekosaur> hasbae, the sources to the core packages usually aren't provided, since they're part of the ghc source tree. (what is provided are .o and .hi files, neither of which are text. but there is `ghc --show-iface` to dump .hi files as text)
2022-07-14 16:22:51 +0200 <lyiriyah[m]> hasbae: you can't do that
2022-07-14 16:22:51 +0200 <lyiriyah[m]> more to the point, why do you want to?
2022-07-14 16:23:45 +0200 <geekosaur> also, lists are actually wired into the compiler because they're syntactically odd, so you won't actually be able to see much from the source
2022-07-14 16:23:53 +0200 <hasbae> i want to because I want to see the definition for Monad [] becuase I'm trying to implement it myself and got stuck
2022-07-14 16:24:04 +0200 <geekosaur> iirc the source is only there to generate an "info table" which is how types are tracked
2022-07-14 16:24:43 +0200 <qrpnxz> it's magic :) https://hackage.haskell.org/package/base-4.16.2.0/docs/src/GHC.Base.html#line-1176
2022-07-14 16:24:44 +0200 <gensyst> qrpnxz, geekosaur ok so here's the concrete goal: have a worker thread (bound OS thread) where I can do stuff from multiple threads. (this stuff on the bound OS thread takes little time compared to actual work on these other multiple threads).
2022-07-14 16:25:06 +0200 <gensyst> i've made a mess of this, i guess..
2022-07-14 16:25:33 +0200 <gensyst> it's important that all this work happens on the *same* bound thread, so i gotta keep it alive
2022-07-14 16:25:57 +0200 <qrpnxz> by "do stuff from multiple threads" do you mean can receive work from multiple threads?
2022-07-14 16:26:35 +0200 <hasbae> qrpnxz: how did you manage to find that? Whenever I search hoogle or hackage I can never seem to manage to find what I want ...
2022-07-14 16:26:42 +0200 <gensyst> i mean, multiple threads will do work, including schedule things (quick things) onto the bound thread.
2022-07-14 16:27:14 +0200 <gensyst> and not just schedule, but wait for the result.
2022-07-14 16:27:22 +0200 <qrpnxz> hasbae: i went to Control.Monad on hackage.haskell.com/package/base, then I scrolled down to Monad type class, scroll into the instances, and where it says "Monad []" i click source
2022-07-14 16:29:02 +0200 <hasbae> thanks much!
2022-07-14 16:30:05 +0200 <geekosaur> gensyst, that sounds like a TChan for input and a TMVar for the result, maybe
2022-07-14 16:30:11 +0200 <qrpnxz> gensyst: well, you could have a TQueue where threads put a request and a TMVar, then the producer waits on the bound thread to populate the TMVar with the result.
2022-07-14 16:30:12 +0200 <hasbae> I'm surprised the definition of Monad [] uses do notation. That seems circular... wouldn't do notation require the definition of >>=
2022-07-14 16:30:26 +0200 <Rembane> hasbae: do-notation desugars to >>= etc.
2022-07-14 16:30:30 +0200 <qrpnxz> geekosaur: ok i feel more confident on my answer now that you say the same thing lol
2022-07-14 16:30:48 +0200 <qrpnxz> it does seem to be the most make sense way to do it
2022-07-14 16:30:58 +0200 <hasbae> ah, I see. so the whole definition can be written with just >>=
2022-07-14 16:31:03 +0200 <qrpnxz> hasbae: it's cause list is built in and magic :)
2022-07-14 16:31:18 +0200 <hasbae> what do you mean by "magic"?
2022-07-14 16:31:48 +0200 <geekosaur> well, the list monad isn't. also the definition I looked up actually uses a list comprehension, which does *not* desugar to monad notation unless MonadComprehensions is enabled
2022-07-14 16:31:51 +0200 <qrpnxz> well it's just builtin
2022-07-14 16:32:07 +0200 <geekosaur> that is, it isn't magic or built in, only the definition of a list itself is wired in
2022-07-14 16:32:27 +0200 <qrpnxz> and comprehension also built in no?
2022-07-14 16:32:36 +0200 <qrpnxz> because from where is that being pulled
2022-07-14 16:32:42 +0200 <geekosaur> comprehensions are built in but desugar to operations that aren't
2022-07-14 16:32:46 +0200 <geekosaur> map, filter, etc.
2022-07-14 16:33:39 +0200 <qrpnxz> oh right, hasbae remember that you can defined a monad from fmap and join, so for your type try to define join (concat)
2022-07-14 16:34:11 +0200 <qrpnxz> then a >>= k = join (fmap k a)
2022-07-14 16:34:54 +0200waleee(~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340) (Ping timeout: 264 seconds)
2022-07-14 16:34:55 +0200 <hasbae> are list comprehensions and do notation separate concepts? I had the understanding that they're the same thing
2022-07-14 16:35:33 +0200 <qrpnxz> well they are separate sugar, but idk that list comprehensions work for any monad other than list except apparently if you use MonadComprehensions
2022-07-14 16:35:33 +0200 <geekosaur> they're similar enough that MonadComprehensions exists, but distinct enough that they're implemented differently by default
2022-07-14 16:36:00 +0200zxx7529(~Thunderbi@user/zxx7529) (Remote host closed the connection)
2022-07-14 16:36:10 +0200 <hasbae> ok ill put that caveat in my brain and let it make sense later. Thanks all for the help!
2022-07-14 16:36:16 +0200zxx7529(~Thunderbi@user/zxx7529)
2022-07-14 16:36:33 +0200 <qrpnxz> 👍
2022-07-14 16:37:11 +0200 <gensyst> geekosaur, qrpnxz, sure, i have something like it... and this TChan/TQueue thing puts things into a Map within IORef using atomicModifyIORef' (each identified with a unique key). Then I use readIORef to get it (using the same key).
2022-07-14 16:37:26 +0200 <gensyst> but for some reason i get this deadlock
2022-07-14 16:37:27 +0200 <ncf> has anyone ever tried encoding Girard's paradox in haskell?
2022-07-14 16:37:59 +0200matthewmosior(~matthewmo@173.170.253.91)
2022-07-14 16:38:48 +0200 <qrpnxz> gensyst: so you rolled your own queue type? What is the type?
2022-07-14 16:39:15 +0200 <geekosaur> gensyst, tbh I would put into the TChan/TQueue a tuple of a thing to be done in the bound thread and a TMVar for the result. then the original thread blocks on the TMVar. the bound thread reads off the TChan/TQueue, does the operation, and does putTMVar
2022-07-14 16:39:27 +0200 <geekosaur> isn't TChan already a queue?
2022-07-14 16:39:39 +0200 <qrpnxz> yeah that's what i was suggesting geek :)
2022-07-14 16:39:41 +0200albet70(~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection)
2022-07-14 16:39:52 +0200jgeerds(~jgeerds@55d437cf.access.ecotel.net)
2022-07-14 16:40:37 +0200 <qrpnxz> and TChan and TQueue are similar yes, but TQueue is faster if you don't need dup or clone
2022-07-14 16:41:13 +0200 <qrpnxz> (which i don't think are necessary in this scenario)
2022-07-14 16:41:16 +0200jakalx(~jakalx@base.jakalx.net) (Error from remote client)
2022-07-14 16:45:48 +0200albet70(~xxx@2400:8902::f03c:92ff:fe60:98d8)
2022-07-14 16:46:33 +0200jakalx(~jakalx@base.jakalx.net)
2022-07-14 16:46:51 +0200 <gensyst> is there a book that teaches you this stuff....
2022-07-14 16:47:03 +0200 <gensyst> this is such pain :S
2022-07-14 16:48:57 +0200 <raehik> gensyst: there's a concurrency book written by one of the main authors of the system, Parallel and Concurrent Programming in Haskell
2022-07-14 16:49:23 +0200 <geekosaur> @where parconc
2022-07-14 16:49:23 +0200 <lambdabot> https://www.safaribooksonline.com/library/view/parallel-and-concurrent/9781449335939/
2022-07-14 16:49:23 +0200 <gensyst> isn't that outdated now?
2022-07-14 16:49:25 +0200alp(~alp@user/alp) (Ping timeout: 272 seconds)
2022-07-14 16:49:35 +0200 <raehik> I used it a little bit when learning stm... though it felt like it was aimed at implementors, not users
2022-07-14 16:49:41 +0200 <geekosaur> nope, the things used in there haven't changed in a long time
2022-07-14 16:49:52 +0200mmhat(~mmh@p200300f1c70907fcee086bfffe095315.dip0.t-ipconnect.de) (Quit: WeeChat 3.5)
2022-07-14 16:51:10 +0200Sgeo(~Sgeo@user/sgeo)
2022-07-14 16:53:05 +0200 <qrpnxz> Go Proverbs relating to concurrency help :) In particular: "Don't communicate by sharing memory, share memory by communicating."
2022-07-14 16:53:47 +0200 <qrpnxz> communicating in Go you'd use channels. In Haskell it's TQueue et. al
2022-07-14 16:55:27 +0200 <qrpnxz> more here https://go-proverbs.github.io/
2022-07-14 17:01:46 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:a9e5:8234:e3a4:dc0e)
2022-07-14 17:02:32 +0200shriekingnoise(~shrieking@201.212.175.181)
2022-07-14 17:03:04 +0200Typedfern(~Typedfern@202.red-83-37-35.dynamicip.rima-tde.net) (Ping timeout: 268 seconds)
2022-07-14 17:03:25 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:a9e5:8234:e3a4:dc0e) (Remote host closed the connection)
2022-07-14 17:03:34 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:a9e5:8234:e3a4:dc0e)
2022-07-14 17:04:27 +0200Typedfern(~Typedfern@202.red-83-37-35.dynamicip.rima-tde.net)
2022-07-14 17:08:47 +0200mvk(~mvk@2607:fea8:5ce3:8500::909a)
2022-07-14 17:12:23 +0200yax(~yax@user/yax/x-9576643)
2022-07-14 17:12:34 +0200yaxyax__
2022-07-14 17:15:45 +0200Pickchea(~private@user/pickchea)
2022-07-14 17:16:13 +0200nate4(~nate@98.45.169.16)
2022-07-14 17:18:42 +0200yax__(~yax@user/yax/x-9576643) (Remote host closed the connection)
2022-07-14 17:20:38 +0200zxx7529(~Thunderbi@user/zxx7529) (Remote host closed the connection)
2022-07-14 17:20:53 +0200zxx7529(~Thunderbi@user/zxx7529)
2022-07-14 17:21:34 +0200bgamari(~bgamari@64.223.170.242) (Remote host closed the connection)
2022-07-14 17:21:43 +0200nate4(~nate@98.45.169.16) (Ping timeout: 272 seconds)
2022-07-14 17:24:20 +0200wootehfoot(~wootehfoo@user/wootehfoot)
2022-07-14 17:24:24 +0200wootehfoot(~wootehfoo@user/wootehfoot) (Remote host closed the connection)
2022-07-14 17:24:59 +0200segfaultfizzbuzz(~segfaultf@157-131-253-58.fiber.dynamic.sonic.net) (Ping timeout: 255 seconds)
2022-07-14 17:25:40 +0200bgamari(~bgamari@64.223.157.165)
2022-07-14 17:36:44 +0200MajorBiscuit(~MajorBisc@wlan-145-94-167-213.wlan.tudelft.nl) (Ping timeout: 272 seconds)
2022-07-14 17:36:56 +0200ec(~ec@gateway/tor-sasl/ec)
2022-07-14 17:40:18 +0200jgeerds(~jgeerds@55d437cf.access.ecotel.net) (Ping timeout: 240 seconds)
2022-07-14 17:42:28 +0200matthewmosior(~matthewmo@173.170.253.91) (Ping timeout: 244 seconds)
2022-07-14 17:43:21 +0200jakalx(~jakalx@base.jakalx.net) ()
2022-07-14 17:44:40 +0200hasbae(~hippoid@c-98-220-13-8.hsd1.il.comcast.net) (Quit: WeeChat 3.5)
2022-07-14 17:46:59 +0200tzh(~tzh@c-24-21-73-154.hsd1.or.comcast.net)
2022-07-14 17:48:53 +0200Fischmiep(~Fischmiep@user/Fischmiep)
2022-07-14 17:49:15 +0200jakalx(~jakalx@base.jakalx.net)
2022-07-14 17:50:01 +0200benin0(~benin@183.82.24.82) (Quit: The Lounge - https://thelounge.chat)
2022-07-14 17:52:16 +0200segfaultfizzbuzz(~segfaultf@157-131-253-58.fiber.dynamic.sonic.net)
2022-07-14 17:52:48 +0200dextaa(~DV@user/dextaa) (Ping timeout: 276 seconds)
2022-07-14 17:54:15 +0200CiaoSen(~Jura@p200300c9570ffb002a3a4dfffe84dbd5.dip0.t-ipconnect.de) (Ping timeout: 268 seconds)
2022-07-14 17:56:06 +0200chele(~chele@user/chele) (Remote host closed the connection)
2022-07-14 17:57:24 +0200zebrag(~chris@user/zebrag)
2022-07-14 17:59:08 +0200Haskelytic(~Haskelyti@118.179.211.17)
2022-07-14 17:59:16 +0200 <Haskelytic> fellas, back with more stupid questions
2022-07-14 17:59:18 +0200jonathanx_(~jonathan@h-178-174-176-109.A357.priv.bahnhof.se) (Remote host closed the connection)
2022-07-14 17:59:35 +0200jonathanx_(~jonathan@h-178-174-176-109.A357.priv.bahnhof.se)
2022-07-14 18:00:09 +0200 <Haskelytic> I was acquainting myself with the Control.Applicative module contents and I keep seeing this term "action" used to refer to values from an Applicative
2022-07-14 18:00:13 +0200 <Haskelytic> why call it action?
2022-07-14 18:00:30 +0200 <Rembane> Haskelytic: It could be doing something, at least if it's in IO
2022-07-14 18:00:51 +0200 <Haskelytic> Hmm, I suppose if I take IO as an example, that makes sense
2022-07-14 18:01:13 +0200 <Rembane> Probably in ST and STM too, but in many others it's strange.
2022-07-14 18:01:17 +0200 <Rembane> For instance in Maybe.
2022-07-14 18:01:24 +0200 <Haskelytic> but I was just thinking that "action" would be needlessly evocative of a certain type of value
2022-07-14 18:01:32 +0200 <Haskelytic> Rembane: yeah, exactly like Maybe
2022-07-14 18:02:08 +0200 <Haskelytic> but maybe some wise guy here will come in and reframe Maybe as an action now :)
2022-07-14 18:02:18 +0200 <Rembane> Haskelytic: I agree, I think the module is a result of a paper where they do effectful programming: https://www.staff.city.ac.uk/~ross/papers/Applicative.html
2022-07-14 18:03:09 +0200 <Haskelytic> The McBride paper
2022-07-14 18:03:15 +0200 <geekosaur> most often what you're applying *is* an action. but you can think of Maybe's action as a possible computation (where Nothing disables that computation)
2022-07-14 18:03:21 +0200 <Rembane> Haskelytic: I suppose that if you squint enough you could see Maybe as an action that evaluates to either a Just result or Nothing if things didn't work out.
2022-07-14 18:03:58 +0200 <Haskelytic> I skimmed through parts of that paper before but it's honestly a little too advanced at places. It's like reading the work of a zen master :)
2022-07-14 18:04:31 +0200 <Rembane> Sounds like all papers by McBride. :)
2022-07-14 18:04:52 +0200matthewmosior(~matthewmo@173.170.253.91)
2022-07-14 18:05:24 +0200 <Haskelytic> geekosaur: Hmm...I guess I never thought "hey all-or-nothing computations are actions" :)
2022-07-14 18:05:40 +0200 <dmj`> anyone aware of an order independent Eq for aeson Value
2022-07-14 18:05:42 +0200 <Haskelytic> RembaneXD
2022-07-14 18:06:03 +0200segfaultfizzbuzz(~segfaultf@157-131-253-58.fiber.dynamic.sonic.net) (Ping timeout: 272 seconds)
2022-07-14 18:06:10 +0200acidjnk_new3(~acidjnk@p200300d6e7058608e98f24795f89a9fd.dip0.t-ipconnect.de) (Ping timeout: 260 seconds)
2022-07-14 18:06:40 +0200Guest34(~Guest34@2605:a601:a615:f600:b4b5:b98c:22db:6664) (Ping timeout: 252 seconds)
2022-07-14 18:09:27 +0200matthewmosior(~matthewmo@173.170.253.91) (Ping timeout: 244 seconds)
2022-07-14 18:10:18 +0200dextaa(~DV@user/dextaa)
2022-07-14 18:14:17 +0200fserucas(~fserucas@1.75.114.89.rev.vodafone.pt) (Quit: Leaving)
2022-07-14 18:14:17 +0200fserucas_(~fserucas@1.75.114.89.rev.vodafone.pt) (Quit: Leaving)
2022-07-14 18:15:42 +0200mbuf(~Shakthi@122.165.55.71) (Quit: Leaving)
2022-07-14 18:22:29 +0200alp(~alp@user/alp)
2022-07-14 18:23:06 +0200Guest34(~Guest34@2605:a601:a615:f600:2884:9a0b:9c02:6827)
2022-07-14 18:32:30 +0200califax(~califax@user/califx) (Ping timeout: 268 seconds)
2022-07-14 18:34:27 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:a9e5:8234:e3a4:dc0e) (Remote host closed the connection)
2022-07-14 18:37:32 +0200acidjnk_new3(~acidjnk@p200300d6e7058608dd2acf5cdcaee246.dip0.t-ipconnect.de)
2022-07-14 18:37:58 +0200matthewmosior(~matthewmo@173.170.253.91)
2022-07-14 18:41:16 +0200califax(~califax@user/califx)
2022-07-14 18:41:55 +0200quarkyalice(~alice@user/quarkyalice)
2022-07-14 18:43:58 +0200econo(uid147250@user/econo)
2022-07-14 18:45:43 +0200azimut(~azimut@gateway/tor-sasl/azimut)
2022-07-14 18:45:56 +0200 <gensyst> geekosaur, why did you suggest TMVar instead of just MVar above?
2022-07-14 18:46:34 +0200 <geekosaur> because it works with STM
2022-07-14 18:47:14 +0200 <geekosaur> in particular it works with STM transactions, whereas MVars only care about themselves and don't support the notion of transactions
2022-07-14 18:47:47 +0200 <geekosaur> this will both help with deadlocks and make it clearer where a deadlock is happening
2022-07-14 18:48:02 +0200pmarg_(~pmarg@138.199.6.217)
2022-07-14 18:48:24 +0200 <gensyst> ok i'll keep this in mind, thanks
2022-07-14 18:48:29 +0200 <gensyst> lots to learn..
2022-07-14 18:49:32 +0200 <APic> Yup.
2022-07-14 18:51:18 +0200pmarg(~pmarg@2a01:799:159f:9b00:73b5:8656:352c:a78e) (Ping timeout: 276 seconds)
2022-07-14 18:51:18 +0200pmarg_pmarg
2022-07-14 18:56:16 +0200dcoutts(~duncan@host86-167-206-10.range86-167.btcentralplus.com)
2022-07-14 18:58:37 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:a9e5:8234:e3a4:dc0e)
2022-07-14 18:59:39 +0200pmarg_(~pmarg@2a01:799:159f:9b00:73b5:8656:352c:a78e)
2022-07-14 18:59:58 +0200machinedgod(~machinedg@d172-219-86-154.abhsia.telus.net) (Ping timeout: 244 seconds)
2022-07-14 19:02:30 +0200pmarg(~pmarg@138.199.6.217) (Ping timeout: 264 seconds)
2022-07-14 19:02:30 +0200pmarg_pmarg
2022-07-14 19:03:51 +0200coot(~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba) (Quit: coot)
2022-07-14 19:05:02 +0200jakalx(~jakalx@base.jakalx.net) ()
2022-07-14 19:05:30 +0200cfricke(~cfricke@user/cfricke) (Quit: WeeChat 3.5)
2022-07-14 19:09:36 +0200jakalx(~jakalx@base.jakalx.net)
2022-07-14 19:23:47 +0200yauhsien(~yauhsien@61-231-21-122.dynamic-ip.hinet.net)
2022-07-14 19:23:56 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:a9e5:8234:e3a4:dc0e) (Remote host closed the connection)
2022-07-14 19:25:16 +0200pavonia(~user@user/siracusa) (Quit: Bye!)
2022-07-14 19:27:58 +0200yauhsien(~yauhsien@61-231-21-122.dynamic-ip.hinet.net) (Ping timeout: 240 seconds)
2022-07-14 19:28:23 +0200TMA(tma@twin.jikos.cz) (Ping timeout: 272 seconds)
2022-07-14 19:29:01 +0200tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2022-07-14 19:34:21 +0200tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
2022-07-14 19:35:19 +0200jeetelongname(~jeet@cpc96970-rdng25-2-0-cust390.15-3.cable.virginm.net)
2022-07-14 19:36:21 +0200alecs(~alecs@151.62.28.92)
2022-07-14 19:36:59 +0200phma(phma@2001:5b0:210d:adb8:1b94:33b4:266b:899a) (Read error: Connection reset by peer)
2022-07-14 19:38:15 +0200phma(phma@2001:5b0:211f:fc78:8858:65c6:c56c:d940)
2022-07-14 19:43:25 +0200jgeerds(~jgeerds@55d437cf.access.ecotel.net)
2022-07-14 19:44:01 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:a9e5:8234:e3a4:dc0e)
2022-07-14 19:45:56 +0200matthewmosior(~matthewmo@173.170.253.91) (Ping timeout: 244 seconds)
2022-07-14 19:46:02 +0200Guest34(~Guest34@2605:a601:a615:f600:2884:9a0b:9c02:6827) (Quit: Client closed)
2022-07-14 19:48:05 +0200tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2022-07-14 19:48:44 +0200tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
2022-07-14 19:50:47 +0200raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 255 seconds)
2022-07-14 19:53:05 +0200Pickchea(~private@user/pickchea) (Ping timeout: 272 seconds)
2022-07-14 19:55:50 +0200zxx7529(~Thunderbi@user/zxx7529) (Remote host closed the connection)
2022-07-14 19:56:39 +0200raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
2022-07-14 19:57:08 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:a9e5:8234:e3a4:dc0e) (Remote host closed the connection)
2022-07-14 19:59:32 +0200matthewmosior(~matthewmo@173.170.253.91)
2022-07-14 20:00:28 +0200tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2022-07-14 20:02:31 +0200ec(~ec@gateway/tor-sasl/ec) (Remote host closed the connection)
2022-07-14 20:04:27 +0200_ht(~quassel@231-169-21-31.ftth.glasoperator.nl)
2022-07-14 20:05:21 +0200toluene(~toluene@user/toulene) (Quit: Ping timeout (120 seconds))
2022-07-14 20:05:56 +0200Guest34(~Guest34@2605:a601:a615:f600:2884:9a0b:9c02:6827)
2022-07-14 20:06:50 +0200toluene(~toluene@user/toulene)
2022-07-14 20:07:13 +0200k`(~user@2605:a601:a615:f600:2884:9a0b:9c02:6827)
2022-07-14 20:07:27 +0200Guest34(~Guest34@2605:a601:a615:f600:2884:9a0b:9c02:6827) (Client Quit)
2022-07-14 20:10:02 +0200gensyst(gensyst@user/gensyst) (Quit: Leaving)
2022-07-14 20:11:28 +0200mixfix41(~sdenynine@user/mixfix41)
2022-07-14 20:12:50 +0200merijn(~merijn@c-001-001-023.client.esciencecenter.eduvpn.nl) (Ping timeout: 240 seconds)
2022-07-14 20:13:26 +0200kuribas(~user@ptr-17d51enm6mimio3yhxb.18120a2.ip6.access.telenet.be) (Remote host closed the connection)
2022-07-14 20:14:29 +0200Topsi(~Topsi@host-88-217-154-179.customer.m-online.net)
2022-07-14 20:15:50 +0200raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 240 seconds)
2022-07-14 20:17:33 +0200alecs(~alecs@151.62.28.92) (Quit: WeeChat 3.5)
2022-07-14 20:20:35 +0200tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
2022-07-14 20:21:04 +0200notzmv(~zmv@user/notzmv) (Ping timeout: 244 seconds)
2022-07-14 20:22:33 +0200 <qrpnxz> Haskelytic: a good way to think about monads in general is if i have (m a) then I have "a computation that will result in 'a'". Bind (>>=) :: m a -> (a -> m b) -> m b simply takes a continuation for that value, right? So Maybe Int is a computation that returns an Int. You might think, well what about Nothing? Well in the Maybe monad world Nothing doesn't exist. I can always fmap and (<*>) and
2022-07-14 20:22:35 +0200 <qrpnxz> stuff to a (Maybe Int). In the Maybe world, I've got an Int. You only get Nothing once you try to pattern match into normal haskell.
2022-07-14 20:26:21 +0200 <qrpnxz> Though when you are just talking about an Applicative, with no implication whatsoever that it's a Monad, I can see it being a bit weird to call it an A
2022-07-14 20:26:25 +0200 <qrpnxz> an "action"
2022-07-14 20:26:40 +0200 <qrpnxz> in that context, i like the word "idiom" from the whitepaper
2022-07-14 20:40:59 +0200seriously(~seriously@ool-18bd55d4.dyn.optonline.net)
2022-07-14 20:44:43 +0200Haskelytic(~Haskelyti@118.179.211.17) (Quit: Client closed)
2022-07-14 20:44:58 +0200Haskelytic(~Haskelyti@118.179.211.17)
2022-07-14 20:45:37 +0200raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
2022-07-14 20:46:14 +0200 <Haskelytic> qrpnxz: yes, I have found the "idiomatic function application" a good description for my own mental model of applicatives
2022-07-14 20:48:10 +0200christiansen(~christian@83-95-137-75-dynamic.dk.customer.tdc.net) (Ping timeout: 240 seconds)
2022-07-14 20:48:34 +0200 <Rembane> Haskelytic: What's idiomatic function application?
2022-07-14 20:51:59 +0200 <Haskelytic> Rembane: the way I understood it, your type `t` has its own peculiar notion of applying a function `f` to a value `a` to produce a `b` entirely within the context of `t`
2022-07-14 20:51:59 +0200raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 255 seconds)
2022-07-14 20:52:17 +0200quarkyalice(~alice@user/quarkyalice) (Remote host closed the connection)
2022-07-14 20:52:29 +0200 <Haskelytic> ZipList would be one example
2022-07-14 20:52:36 +0200quarkyalice(~alice@172.77.29.178)
2022-07-14 20:52:36 +0200quarkyalice(~alice@172.77.29.178) (Changing host)
2022-07-14 20:52:36 +0200quarkyalice(~alice@user/quarkyalice)
2022-07-14 20:52:38 +0200_ht(~quassel@231-169-21-31.ftth.glasoperator.nl) (Read error: Connection reset by peer)
2022-07-14 20:53:29 +0200 <Haskelytic> where the non-peculiar notion is just the usual haskell `f a`
2022-07-14 20:53:40 +0200 <Rembane> Haskelytic: That's cool.
2022-07-14 20:53:59 +0200 <Haskelytic> but idk man I need some more experience with applicatives tbh
2022-07-14 20:54:00 +0200 <Rembane> Haskelytic: It takes a while to make sense of it. Interesting.
2022-07-14 20:54:01 +0200kenaryn(~aurele@cre71-h03-89-88-44-27.dsl.sta.abo.bbox.fr)
2022-07-14 20:55:21 +0200 <Haskelytic> while we're on the topic of typeclasses
2022-07-14 20:55:30 +0200 <Haskelytic> these laws man, who comes up with them :)
2022-07-14 20:56:02 +0200 <Rembane> They usually come from category theory, or some other mathematic area.
2022-07-14 20:56:20 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:a9e5:8234:e3a4:dc0e)
2022-07-14 20:56:32 +0200 <Haskelytic> Hah, no wonder they are impenetrable :)
2022-07-14 20:56:37 +0200 <Rembane> I guess there are papers where they are formulated, so you could point to some specific authors of the laws. :)
2022-07-14 20:56:42 +0200 <Rembane> Do you have any examples?
2022-07-14 20:57:04 +0200 <Haskelytic> take the traversal law
2022-07-14 20:57:19 +0200 <Haskelytic> So `t . traverse f = traverse (t . f)`
2022-07-14 20:57:34 +0200lifter(~lifter@99-73-149-100.lightspeed.livnmi.sbcglobal.net)
2022-07-14 20:57:36 +0200 <Haskelytic> How the hell do you cook that up lol
2022-07-14 20:57:48 +0200 <tomsmeding> The Monad laws in particular have a much nicer presentation when expressed about >=> instead of >>=, they mostly become the monoid laws
2022-07-14 20:57:57 +0200 <Rembane> Haskelytic: Is it traversal that needs Functor?
2022-07-14 20:58:12 +0200 <Haskelytic> Rembane: yep, Foldable too
2022-07-14 20:58:15 +0200 <tomsmeding> Rembane: Functor is a superclass of Traverse
2022-07-14 20:58:23 +0200 <tomsmeding> *Traversable
2022-07-14 20:58:40 +0200 <darkling> Haskelytic: At the maths level, it's usually "it would be useful if *this* was true, because then we could assume *that* happens"
2022-07-14 20:58:43 +0200 <Rembane> Haskelytic, tomsmeding: Then I propose that's why traversal has a law that looks like a law from Functor. :D
2022-07-14 20:58:51 +0200 <Haskelytic> tomsmeding: Hmm never saw it presented with the fish
2022-07-14 20:59:01 +0200 <Haskelytic> maybe i'll try that on my own sometime
2022-07-14 20:59:03 +0200 <Rembane> The fish operator lets you write pointless code <3
2022-07-14 20:59:03 +0200 <tomsmeding> Haskelytic: Foldable doesn't require Functor
2022-07-14 20:59:35 +0200 <Haskelytic> tomsmeding: oops meant to say that it's Traversable needs both foldable / functor
2022-07-14 21:00:02 +0200 <tomsmeding> Haskelytic: https://stackoverflow.com/a/69668319/1608468
2022-07-14 21:00:28 +0200 <tomsmeding> (the second answer, in case the deep link fails)
2022-07-14 21:00:30 +0200 <Haskelytic> darkling: so is that all there is to it? some wizard man went, "here's a nice property P we should have" :)
2022-07-14 21:00:45 +0200 <Haskelytic> I guess for the functor laws it seems quite sane
2022-07-14 21:01:39 +0200 <Haskelytic> I imagine functors where `fmap (f . g) /= fmap f . fmap g` would be quite chaotic
2022-07-14 21:02:04 +0200 <Haskelytic> tomsmeding: oh nice, thanks for the link
2022-07-14 21:02:07 +0200 <Rembane> Haskelytic: I think they built a system where all the pieces fit together, and then the Haskell folks have implemented it in Haskell.
2022-07-14 21:02:10 +0200 <darkling> Pretty much. Most of them are "sane" in the sense that they either reflect a common use case or imply a particular kind of utility..
2022-07-14 21:02:22 +0200 <tomsmeding> Haskelytic: in maths, a functor is something that preserves identity and function composition -- the haskell laws say precisely thag
2022-07-14 21:03:13 +0200 <Rembane> It's even on the Wikipedia page: https://en.wikipedia.org/wiki/Functor
2022-07-14 21:03:20 +0200kenaryn(~aurele@cre71-h03-89-88-44-27.dsl.sta.abo.bbox.fr) (Quit: leaving)
2022-07-14 21:03:46 +0200 <qrpnxz> laws in the base classes are usually really common sense in the sense that they usually basically say "nothing funny is going on"
2022-07-14 21:04:05 +0200 <darkling> You then get to the point of identifying similar things, or composability of things (Functor/Applicative/Monad in the first case; identity/associativity/invertibility in the case of algebraic structures)
2022-07-14 21:04:55 +0200 <darkling> https://en.wikipedia.org/wiki/Monoid#/media/File:Algebraic_structures_-_magma_to_group.svg is a really good picture for the latter.
2022-07-14 21:07:20 +0200 <qrpnxz> hey, there a way to negate a constraint? How to say "'a' is NOT Eq"
2022-07-14 21:07:29 +0200_ht(~quassel@231-169-21-31.ftth.glasoperator.nl)
2022-07-14 21:07:35 +0200aisa(~serum@2a02:8388:6bc1:1d00:6ddd:7a24:70:80) (Quit: WeeChat 3.4.1)
2022-07-14 21:07:46 +0200 <geekosaur> qrpnxz, no
2022-07-14 21:07:50 +0200aisa(~aisa@2a02:8388:6bc1:1d00:72a:7712:9acd:74b4)
2022-07-14 21:08:29 +0200 <qrpnxz> tragic
2022-07-14 21:08:34 +0200 <geekosaur> the witness for presence of a constraint is the constraint dictionary, absence requires some other way to witness it
2022-07-14 21:08:52 +0200aisa(~aisa@2a02:8388:6bc1:1d00:72a:7712:9acd:74b4) (Changing host)
2022-07-14 21:08:52 +0200aisa(~aisa@user/aisa)
2022-07-14 21:08:59 +0200 <lifter> Is GeneralizedNewtypeDeriving on by default? This appears to be the case in my code, unless I did something inadvertently to turn it on somehow.
2022-07-14 21:09:14 +0200 <qrpnxz> you might have it enabled in your cabal
2022-07-14 21:09:16 +0200 <qrpnxz> file
2022-07-14 21:09:18 +0200 <Rembane> lifter: You turned it on without knowing. Do you have an example?
2022-07-14 21:09:45 +0200 <tomsmeding> Haskelytic: the first traverse law I kind of read like this: https://tomsmeding.com/vang/SDwj5t/temp.jpg
2022-07-14 21:09:57 +0200 <geekosaur> no, it's off by default. but GHC2021 implies it
2022-07-14 21:10:00 +0200abrar_(~abrar@static-108-2-152-54.phlapa.fios.verizon.net) (Quit: WeeChat 3.5)
2022-07-14 21:10:08 +0200 <tomsmeding> Both ways to go from a to G (T b) should result in the same thing
2022-07-14 21:10:20 +0200aisa(~aisa@user/aisa) ()
2022-07-14 21:10:24 +0200abrar(~abrar@static-108-2-152-54.phlapa.fios.verizon.net)
2022-07-14 21:10:50 +0200segfaultfizzbuzz(~segfaultf@157-131-253-58.fiber.dynamic.sonic.net)
2022-07-14 21:11:05 +0200 <lifter> OK, maybe it's due to the version of GHC I'm using, which is 9.2.2
2022-07-14 21:11:22 +0200 <geekosaur> that may default to -XGHC2021, yes
2022-07-14 21:11:26 +0200 <tomsmeding> Haskelytic: The ~ was intended to mean "natural transformation", which literally means that it has a type signature like the one written
2022-07-14 21:12:47 +0200 <tomsmeding> And then the other two traverse laws are _kind of_ that it preserves identity and "composition", for as far as that makes sense
2022-07-14 21:13:06 +0200 <tomsmeding> Composition of a -> f b functions in this case
2022-07-14 21:13:41 +0200 <tomsmeding> That is, composition of an a -> f b and a b -> g c into an a -> f (g c)
2022-07-14 21:14:26 +0200 <lifter> Rembane: https://paste.tomsmeding.com/5I8MbAaG#file-1
2022-07-14 21:14:33 +0200 <tomsmeding> Where the Compose just turns f (g c) into (Compose f g) c, so that the function given to traverse is of the form a -> f' c, f' being Compose f g
2022-07-14 21:15:32 +0200 <Rembane> lifter: Sweet! I believe that geekosaur has the solution to this some minutes ago. Does anything happen if you add GeneralizedNewtypeDeriving again?
2022-07-14 21:15:47 +0200 <lifter> Rembane: Nope, nothing happens.
2022-07-14 21:16:04 +0200 <tomsmeding> lifter: outside of a cabal project that specifies otherwise using e.g. "default-language: Haskell2010", ghc chooses some default; for a long time that was Haskell2010, but as geekosaur said this recently changed to GHC2021
2022-07-14 21:16:10 +0200 <Rembane> lifter: Good.
2022-07-14 21:16:33 +0200 <geekosaur> cabal uses the defaultof that ghc, and ghc 9.2.x defaults to GHC2021 which includes GND
2022-07-14 21:16:58 +0200 <lifter> Interesting, I didn't know that GHC2021 is a thing. Thanks all.
2022-07-14 21:17:27 +0200 <tomsmeding> Indeed since 9.2 https://github.com/ghc-proposals/ghc-proposals/blob/master/proposals/0380-ghc2021.rst
2022-07-14 21:17:57 +0200segfaultfizzbuzz(~segfaultf@157-131-253-58.fiber.dynamic.sonic.net) (Ping timeout: 272 seconds)
2022-07-14 21:18:11 +0200 <geekosaur> https://downloads.haskell.org/ghc/9.2.1/docs/html/users_guide/exts/control.html
2022-07-14 21:18:28 +0200 <geekosaur> gives the full list of extensions in GHC2021
2022-07-14 21:19:02 +0200 <geekosaur> if you prefer not to be surprised by this, specify language: Haskell2010
2022-07-14 21:19:03 +0200 <lifter> Nice!
2022-07-14 21:19:42 +0200 <geekosaur> (or for users to be surprised when your package fails to compile on older ghc versions, remembering 8.10.7 is still widely used)
2022-07-14 21:19:51 +0200 <Rembane> \o/ We're in the future! \o/
2022-07-14 21:19:56 +0200 <lifter> I actually do have "default-language: Haskell2010" in my cabal file, it must be overridev.
2022-07-14 21:20:57 +0200nate4(~nate@98.45.169.16)
2022-07-14 21:23:05 +0200 <Haskelytic> tomsmeding: that explanation of Compose made things a bit clearer, thanks!
2022-07-14 21:26:11 +0200nate4(~nate@98.45.169.16) (Ping timeout: 272 seconds)
2022-07-14 21:26:18 +0200pretty_dumm_guy(trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655)
2022-07-14 21:26:20 +0200yauhsien(~Yau-Hsien@61-231-21-122.dynamic-ip.hinet.net)
2022-07-14 21:27:56 +0200 <Philonous> What's the cheapest way to block a thread until another thread wakes it up? MVar perhaps?
2022-07-14 21:28:43 +0200 <geekosaur> MVar or TMVar, yeh
2022-07-14 21:29:31 +0200 <Philonous> I don't think STM helps me here, so I'll just use an MVar. Thanks!
2022-07-14 21:30:35 +0200seriously(~seriously@ool-18bd55d4.dyn.optonline.net) (Quit: Client closed)
2022-07-14 21:35:30 +0200machinedgod(~machinedg@d172-219-86-154.abhsia.telus.net)
2022-07-14 21:37:15 +0200yauhsien(~Yau-Hsien@61-231-21-122.dynamic-ip.hinet.net) (Quit: Leaving)
2022-07-14 21:48:52 +0200tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2022-07-14 21:52:00 +0200 <qrpnxz> >GHC2021
2022-07-14 21:52:05 +0200 <qrpnxz> hadn't heard of that cool
2022-07-14 21:53:33 +0200 <qrpnxz> extensions to not feel bad about in list form :)
2022-07-14 21:56:12 +0200abhinav(~abhinav@c-67-169-139-16.hsd1.ca.comcast.net)
2022-07-14 21:56:33 +0200machinedgod(~machinedg@d172-219-86-154.abhsia.telus.net) (Ping timeout: 276 seconds)
2022-07-14 21:57:02 +0200alp(~alp@user/alp) (Ping timeout: 272 seconds)
2022-07-14 21:58:34 +0200Pickchea(~private@user/pickchea)
2022-07-14 22:02:20 +0200seriously(~seriously@ool-18bd55d4.dyn.optonline.net)
2022-07-14 22:03:53 +0200_ht(~quassel@231-169-21-31.ftth.glasoperator.nl) (Remote host closed the connection)
2022-07-14 22:05:21 +0200jinsun__(~jinsun@user/jinsun)
2022-07-14 22:05:21 +0200jinsunGuest6181
2022-07-14 22:05:21 +0200jinsun__jinsun
2022-07-14 22:05:41 +0200coot(~coot@213.134.190.95)
2022-07-14 22:07:32 +0200matthewmosior(~matthewmo@173.170.253.91) (Ping timeout: 255 seconds)
2022-07-14 22:09:09 +0200 <lifter> I have a question about terminology. The term "product" as related to algebraic data types seems specifically concerned with data constructors (that are arity 2+). However, I often see it used as "product type," which seems to be a more general sense. So is a "product type" any type with an arity 2+ data constructor?
2022-07-14 22:09:53 +0200Guest6181(~jinsun@user/jinsun) (Ping timeout: 272 seconds)
2022-07-14 22:10:31 +0200dsrt^(~dsrt@c-73-207-207-252.hsd1.ga.comcast.net)
2022-07-14 22:12:39 +0200 <geekosaur> it helps to think of it as doing math on numbers of possible values
2022-07-14 22:13:07 +0200 <geekosaur> Maybe is a sum type: it adds one possible value (Nothing) to the nnumber of possible values of the type it's applied to
2022-07-14 22:13:10 +0200alp(~alp@user/alp)
2022-07-14 22:13:52 +0200 <geekosaur> a product type multiplies the number of values: Foo Word8 Word8 has 256*256 possible values
2022-07-14 22:14:38 +0200 <geekosaur> (Haskell types can combine these, by having multiple constructors (addition) which may hold multiple values (multiplication)
2022-07-14 22:14:40 +0200 <geekosaur> )
2022-07-14 22:15:41 +0200pavonia(~user@user/siracusa)
2022-07-14 22:15:47 +0200 <geekosaur> this is why we call them algebraic data types: you can do algebra in this way on the number of values a data constructor can have
2022-07-14 22:15:57 +0200 <int-e> we can add, multiply, exponentiate, and do something weird called a least fixed point... and then a bit on top of that.
2022-07-14 22:16:13 +0200 <geekosaur> which algebra operates on the type level instead of the value level
2022-07-14 22:16:30 +0200 <lifter> Yeah, I'm feeling pretty clear on that. I'm just wondering, if given "data A = A Int Int", "A Int Int" is a product (data constructor)... OK, then what is a "product type"? In contrast, the term "sum type" makes more sense to me because it describes not a given data constructor but a type with multiple data constructors.
2022-07-14 22:16:54 +0200 <int-e> (weird: `data Tree a = Leaf a | Nest (Tree (a,a))`. And GADTs too.)
2022-07-14 22:17:32 +0200 <geekosaur> lifter, that is a product type. the only weirdness is how Haskell can do both at the same time
2022-07-14 22:17:55 +0200 <geekosaur> the "weird" examoke int-e just showed being one example
2022-07-14 22:18:11 +0200 <lifter> OK... Then next question :) Given "data MyType = A | B Int Int", is MyType a sum or a product type?
2022-07-14 22:18:21 +0200 <Rembane> lifter: Yes! :D
2022-07-14 22:18:43 +0200 <geekosaur> it's both
2022-07-14 22:18:49 +0200 <int-e> "examoke" is cute, because it's pronouncible. ("example")
2022-07-14 22:18:58 +0200 <geekosaur> it has (2^64)*(2^64)+1 values
2022-07-14 22:19:03 +0200 <lifter> OK, that makes sense.
2022-07-14 22:19:15 +0200geekosauris good at typoes 🙂
2022-07-14 22:19:19 +0200 <Haskelytic> Sum and Product are best friends because they collaborate well :)
2022-07-14 22:20:00 +0200 <Haskelytic> I appear to be good at terms, not so much at types (yet) :)
2022-07-14 22:20:08 +0200int-eresists the temptation to mention bottoms... not.
2022-07-14 22:20:20 +0200 <int-e> (they mess up the algebra considerably)
2022-07-14 22:20:34 +0200 <Rembane> int-e: Don't they mess up absolutely everything?
2022-07-14 22:20:47 +0200 <int-e> Rembane: Ah but they're also essential for laziness.
2022-07-14 22:20:59 +0200 <int-e> So it's a price we pay gladly ;)
2022-07-14 22:21:08 +0200 <Haskelytic> I feel like there must be a hidden reason to call them "bottoms" if you catch my drift ;)
2022-07-14 22:21:10 +0200 <geekosaur> "fast and loose reasoning is morally correct"… if you're careful
2022-07-14 22:21:19 +0200 <int-e> (We also complain a lot.)
2022-07-14 22:21:21 +0200 <Rembane> int-e: I haven't understood why, but it seems reasonable. Is bottom necessary because there are some values that are never evaluated?
2022-07-14 22:21:23 +0200 <geekosaur> least defined value = bottom
2022-07-14 22:21:53 +0200 <Rembane> Haskelytic: They are the opposites to tops! In a lettuce... eh...
2022-07-14 22:22:13 +0200 <Haskelytic> geekosaur: what is a most defined value?
2022-07-14 22:22:18 +0200 <Rembane> Haskelytic: https://ncatlab.org/nlab/show/lattice
2022-07-14 22:22:34 +0200tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
2022-07-14 22:22:43 +0200 <geekosaur> in a programming language most values are "most defined", there's no distinguishing at that level
2022-07-14 22:22:56 +0200 <int-e> Rembane: Well, in the face of arbitrary recursion, laziness allows f x = f x, and then that needs to have a value if you give it semantics...
2022-07-14 22:23:25 +0200 <Haskelytic> geekosaur: so is it just a dichotomy? you're either bottom or defined?
2022-07-14 22:23:26 +0200 <int-e> Rembane: So, it's a mix of arbitrary recursion and laziness really. Bottoms are also convenient for *modeling* laziness; they feature in Böhm trees.
2022-07-14 22:23:26 +0200 <Rembane> int-e: Is this the halting problem with a value?
2022-07-14 22:23:32 +0200 <geekosaur> but you do have intermediate states: consider A Int Int from earlier, where one is defined and the other is not/bottom. this is not most defined, whereas both defined would be most defined
2022-07-14 22:24:10 +0200 <geekosaur> note that this is still useful as long as the least defined part is never evaluated
2022-07-14 22:24:12 +0200 <int-e> Rembane: There's some wiggle space here. "necessary" is too strong. CPUs don't have bottoms :P
2022-07-14 22:24:29 +0200 <Rembane> int-e: No, they have interrupts and flags. :)
2022-07-14 22:24:30 +0200 <geekosaur> sure they do, they're called exceptions
2022-07-14 22:24:36 +0200 <Haskelytic> geekosaur: ahh nice example
2022-07-14 22:25:00 +0200 <int-e> That's just an elaborate change of control flow.
2022-07-14 22:25:14 +0200 <geekosaur> and then there's IEEE floating point, where NaNs constitute a group of least defined values
2022-07-14 22:25:18 +0200 <int-e> . o O ( triple fault )
2022-07-14 22:25:38 +0200 <geekosaur> with well defined rules for how they interact
2022-07-14 22:25:51 +0200 <Haskelytic> int-e: I think you could consider a malfunctioning CPU to have hit bottom :)
2022-07-14 22:26:04 +0200 <geekosaur> F0 0F E8 E7 🙂
2022-07-14 22:26:20 +0200 <int-e> Haskelytic: True, I do tend to think of CPUs as ideal ones that always perform according to specification.
2022-07-14 22:26:51 +0200 <int-e> https://en.wikipedia.org/wiki/Halt_and_Catch_Fire_(computing)
2022-07-14 22:26:51 +0200 <Haskelytic> geekosaur: I hate floating point math, even after studying it
2022-07-14 22:26:57 +0200 <int-e> None of that :P
2022-07-14 22:27:27 +0200 <darkling> Haskelytic: Odd. That phrase is usually "especially after", not "even after". :)
2022-07-14 22:27:45 +0200matthewmosior(~matthewmo@173.170.253.91)
2022-07-14 22:27:59 +0200 <Haskelytic> i was saving keystrokes :)
2022-07-14 22:28:42 +0200 <Haskelytic> but now at work I need to deal with floating point daily
2022-07-14 22:28:56 +0200 <Haskelytic> the anxiety is real
2022-07-14 22:29:01 +0200 <Haskelytic> Haskell is my cope
2022-07-14 22:31:07 +0200 <int-e> > sort [0/0, 1, 0/0, -1]
2022-07-14 22:31:09 +0200 <lambdabot> [-1.0,NaN,1.0,NaN]
2022-07-14 22:31:34 +0200 <int-e> Hmm, can we get 1 before -1 doing that?
2022-07-14 22:32:13 +0200adanwan(~adanwan@gateway/tor-sasl/adanwan) (Write error: Connection reset by peer)
2022-07-14 22:32:13 +0200FinnElija(~finn_elij@user/finn-elija/x-0085643) (Remote host closed the connection)
2022-07-14 22:32:13 +0200califax(~califax@user/califx) (Read error: Connection reset by peer)
2022-07-14 22:32:41 +0200califax(~califax@user/califx)
2022-07-14 22:32:47 +0200FinnElija(~finn_elij@user/finn-elija/x-0085643)
2022-07-14 22:32:52 +0200adanwan(~adanwan@gateway/tor-sasl/adanwan)
2022-07-14 22:32:57 +0200 <int-e> > sort [-1, 0/0, 1]
2022-07-14 22:32:59 +0200 <lambdabot> [1.0,NaN,-1.0]
2022-07-14 22:33:06 +0200 <Rembane> I wonder why the NaNs aren't next to each other
2022-07-14 22:33:32 +0200 <int-e> > (0/0 `compare` 1, 1 `compare` 0/0)
2022-07-14 22:33:34 +0200 <lambdabot> error:
2022-07-14 22:33:34 +0200 <lambdabot> • No instance for (Num Ordering) arising from the literal ‘0’
2022-07-14 22:33:34 +0200 <lambdabot> • In the first argument of ‘(/)’, namely ‘0’
2022-07-14 22:33:46 +0200 <int-e> > ((0/0) `compare` 1, 1 `compare` (0/0))
2022-07-14 22:33:48 +0200 <lambdabot> (GT,GT)
2022-07-14 22:34:06 +0200 <Rembane> That is starting to look like NULL in SQL
2022-07-14 22:34:30 +0200 <int-e> Rembane: At the CPU level, all comparisons involving NaN are false.
2022-07-14 22:35:12 +0200 <int-e> This manifests as an illegal Ord instance, and that breaks sorting.
2022-07-14 22:35:35 +0200 <geekosaur> ^
2022-07-14 22:35:47 +0200 <Haskelytic> basically NaNs are unordered, trichotomy is dead :)
2022-07-14 22:35:59 +0200 <Rembane> int-e: Cool, I was expecting that NaNs propagated through everything, and it doesn't seem so.
2022-07-14 22:36:00 +0200 <geekosaur> which means among other things that Maps with NaNs in them do odd things
2022-07-14 22:36:06 +0200 <darkling> There's always this: https://en.wikipedia.org/wiki/James_A._D._W._Anderson#Transreal_arithmetic
2022-07-14 22:36:12 +0200segfaultfizzbuzz(~segfaultf@157-131-253-58.fiber.dynamic.sonic.net)
2022-07-14 22:36:16 +0200 <darkling> (That was sarcasm.)
2022-07-14 22:36:17 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:a9e5:8234:e3a4:dc0e) (Remote host closed the connection)
2022-07-14 22:36:17 +0200 <Rembane> Transreal arithmetic is the best name.
2022-07-14 22:36:24 +0200 <geekosaur> well, you can't have NaN :: Bool
2022-07-14 22:36:48 +0200 <geekosaur> so it has to have some value that fits a Bool, even in CPU level operations
2022-07-14 22:36:49 +0200 <int-e> A lot of code involving floating point numbers just pretends that NaNs aren't real. :P
2022-07-14 22:37:08 +0200 <darkling> Rembane: I worked in that department for a while. I have a... jaded opinion on the subject.
2022-07-14 22:37:12 +0200 <Haskelytic> I wish I could pretend floating point isn't real :)
2022-07-14 22:37:32 +0200 <int-e> But it's too useful to go away anytime soon.
2022-07-14 22:37:59 +0200 <Rembane> darkling: Interesting. If we're ever in the same place I'll buy you a beer and ask you to elucidate.
2022-07-14 22:38:22 +0200seriously(~seriously@ool-18bd55d4.dyn.optonline.net) (Ping timeout: 252 seconds)
2022-07-14 22:38:28 +0200 <Rembane> Haskelytic: You could work in a domain where floating point arithmetic doesn't exist. Like banking for instance.
2022-07-14 22:42:08 +0200dsrt^(~dsrt@c-73-207-207-252.hsd1.ga.comcast.net) (Ping timeout: 244 seconds)
2022-07-14 22:44:19 +0200dsrt^(~dsrt@c-73-207-207-252.hsd1.ga.comcast.net)
2022-07-14 22:46:15 +0200mvk(~mvk@2607:fea8:5ce3:8500::909a) (Ping timeout: 244 seconds)
2022-07-14 22:50:52 +0200k`(~user@2605:a601:a615:f600:2884:9a0b:9c02:6827) (Ping timeout: 272 seconds)
2022-07-14 22:53:04 +0200coot(~coot@213.134.190.95) (Quit: coot)
2022-07-14 22:58:44 +0200Topsi(~Topsi@host-88-217-154-179.customer.m-online.net) (Read error: Connection reset by peer)
2022-07-14 23:07:51 +0200waleee(~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340)
2022-07-14 23:20:24 +0200Guest67(~Guest67@39.41.127.107)
2022-07-14 23:21:42 +0200pmarg(~pmarg@2a01:799:159f:9b00:73b5:8656:352c:a78e) (Remote host closed the connection)
2022-07-14 23:23:04 +0200Guest67(~Guest67@39.41.127.107) (Client Quit)
2022-07-14 23:24:32 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:a9e5:8234:e3a4:dc0e)
2022-07-14 23:28:45 +0200jeetelongname(~jeet@cpc96970-rdng25-2-0-cust390.15-3.cable.virginm.net) (Ping timeout: 260 seconds)
2022-07-14 23:31:43 +0200matthewmosior(~matthewmo@173.170.253.91) (Ping timeout: 244 seconds)
2022-07-14 23:33:30 +0200 <EvanR> >decides to work in a domain where floating point arithmetic doesn't exist
2022-07-14 23:34:00 +0200 <EvanR> >downloads "arbitrary precision" library for ruby, and it's decimal floating point
2022-07-14 23:36:40 +0200 <tomsmeding> Arbitrary != Infinite
2022-07-14 23:37:58 +0200Pickchea(~private@user/pickchea) (Ping timeout: 240 seconds)
2022-07-14 23:38:02 +0200 <tomsmeding> https://hackage.haskell.org/package/exact-real-0.12.5.1/docs/Data-CReal.html
2022-07-14 23:38:49 +0200 <tomsmeding> Oh wait those are arbitrary too
2022-07-14 23:39:49 +0200 <monochrom> CReal does infinite. Then it goes on to arbitrarily decides that == just needs 40 digis. >:)
2022-07-14 23:39:49 +0200rekahsoft(~rekahsoft@bras-base-wdston4533w-grc-02-142-113-160-8.dsl.bell.ca) (Ping timeout: 272 seconds)
2022-07-14 23:43:29 +0200adanwan(~adanwan@gateway/tor-sasl/adanwan) (Remote host closed the connection)
2022-07-14 23:43:44 +0200adanwan(~adanwan@gateway/tor-sasl/adanwan)
2022-07-14 23:44:04 +0200 <tomsmeding> Oh right, only the comparison functions care about the actual precision I guess
2022-07-14 23:44:47 +0200 <tomsmeding> Otherwise there is apparently99,99 this, in a weird package I've never heard of https://hackage.haskell.org/package/toysolver-0.0.5/docs/Data-AlgebraicNumber-Real.html
2022-07-14 23:45:06 +0200matthewmosior(~matthewmo@173.170.253.91)
2022-07-14 23:45:31 +0200 <EvanR> drake meme cannot abide arbitrary precision real "comparison"
2022-07-14 23:45:43 +0200 <EvanR> drake meme prefers arbitrary precision real min and max xD
2022-07-14 23:46:32 +0200 <monochrom> heh
2022-07-14 23:46:47 +0200machinedgod(~machinedg@d172-219-86-154.abhsia.telus.net)
2022-07-14 23:47:52 +0200 <tomsmeding> That Data.AlgebraicNumber.Real looks really99,99 expensive :p
2022-07-14 23:47:58 +0200tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2022-07-14 23:48:03 +0200 <tomsmeding> Unsurprisingly
2022-07-14 23:48:29 +0200 <dolio> Actual real numbers are not very nice for calculation, generally.
2022-07-14 23:56:17 +0200lifter(~lifter@99-73-149-100.lightspeed.livnmi.sbcglobal.net) ()
2022-07-14 23:58:12 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:a9e5:8234:e3a4:dc0e) (Remote host closed the connection)
2022-07-14 23:59:37 +0200king_gs(~Thunderbi@2806:103e:29:b4b2:136b:52c2:803e:56a9)