Home liberachat/#haskell: Logs Calendar

Logs on 2025-05-02 (liberachat/#haskell)

00:00:56 peterbecich joins (~Thunderbi@syn-047-229-123-186.res.spectrum.com)
00:02:45 × merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 260 seconds)
00:03:10 × nitrix quits (~nitrix@user/meow/nitrix) (Ping timeout: 252 seconds)
00:05:12 LainIwakura joins (~LainIwaku@user/LainIwakura)
00:07:11 nitrix joins (~nitrix@user/meow/nitrix)
00:13:30 merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl)
00:17:37 × Tuplanolla quits (~Tuplanoll@91-159-69-59.elisa-laajakaista.fi) (Quit: Leaving.)
00:18:09 j1n37- joins (~j1n37@user/j1n37)
00:18:54 × j1n37 quits (~j1n37@user/j1n37) (Ping timeout: 260 seconds)
00:19:18 × tremon quits (~tremon@83.80.159.219) (Quit: getting boxed in)
00:20:24 × merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds)
00:22:57 machinedgod joins (~machinedg@d108-173-18-100.abhsia.telus.net)
00:31:34 merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl)
00:36:37 × merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 272 seconds)
00:38:12 × otto_s quits (~user@p4ff271c5.dip0.t-ipconnect.de) (Ping timeout: 265 seconds)
00:39:29 otto_s joins (~user@p4ff270d6.dip0.t-ipconnect.de)
00:47:20 merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl)
00:51:55 × peterbecich quits (~Thunderbi@syn-047-229-123-186.res.spectrum.com) (Ping timeout: 252 seconds)
00:52:52 × merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 276 seconds)
00:53:36 <sim590> How much time after you pushed a new package version to hackage does it take usually for cabal update to pick the new version?
00:55:38 __jmcantrell__ joins (~weechat@user/jmcantrell)
00:56:33 × ttybitnik quits (~ttybitnik@user/wolper) (Quit: Fading out...)
00:57:29 <sim590> nvm. it was pretty quick. I guess it might have been my version rule that wasn't right.
00:59:11 <geekosaur> all I can say is that it takes several minutes
00:59:25 <geekosaur> I thought I had a discussion in my backscroll but I'm not finding it now
00:59:43 <sim590> So, I just made a package release with `cabal sdist`, but it didn't include the `cabal.project` file. Which ignores my previous fix. What cabal field should I use to include that file?
01:00:23 <sim590> extra-source-files?
01:02:03 <geekosaur> /home/allbery/.config/hexchat/logs/irccloud bnc/#hackage.log-Apr 09 03:12:12 <sclv> probably a brief delay, no more than five minutes
01:02:43 <geekosaur> cabal.project isn't normally uploaded at all, since hackage doesn't understand projects, only packages
01:03:08 merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl)
01:03:08 <geekosaur> projects are a development thing, not a deployment thing
01:03:10 <sim590> But, my package needs to build on other people's computer. And for that it needs the fix for GCC 15.
01:04:06 <sim590> I need to have `c2hs-options: -C -std=gnu18` shipped with my package.
01:04:37 <geekosaur> then you need to find a way to get that into the cabal file, because a project file, even if you manage to include one, won't be used when building as a transitive dependency
01:05:58 a_fantom joins (~fantom@33be818f.skybroadband.com)
01:06:18 × fantom quits (~fantom@2.219.56.221) (Ping timeout: 244 seconds)
01:08:04 × merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 244 seconds)
01:09:32 × cyphase quits (~cyphase@user/cyphase) (Ping timeout: 252 seconds)
01:11:55 <sim590> hmmmm. I tried many things with the cabal file but it didn't work. :/ Are you 100% sure cabal.project won't be used when compiling as transitive dependency? If the file is there, why would it work differently when it's build as a transitive dependency?
01:12:02 × xff0x quits (~xff0x@2409:251:9040:2c00:1c47:7f78:37e8:e2a1) (Ping timeout: 265 seconds)
01:13:12 <geekosaur> 100% sure
01:13:33 <geekosaur> what's supposed to happen if it's already using `cabal.project`?
01:13:53 <sim590> I don't understand the question.
01:14:27 <geekosaur> someone's using your package as a dependency in a development tree with a `cabal.project`. what happens?
01:15:09 <geekosaur> fwiw I just asked about `c2hs-options` not working in the cabal dev channel; it seems very wrong that it works in a project file but not the cabal file
01:15:39 <sim590> OK, thanks for the initiative.
01:15:47 <geekosaur> (unfortunately most of the dev team is asleep at this time of their night)
01:16:12 <sim590> So for your question, I guess it both files could be nested. The user's file and the dependency's file?
01:17:30 <geekosaur> but you need to include a `packages:` entry, which would override the main one and result it the package being installed in its own project's `dist-newstyle` where it won't be found by the main project
01:18:26 Typedfern joins (~Typedfern@135.red-83-37-43.dynamicip.rima-tde.net)
01:18:56 merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl)
01:21:28 × typedfern_ quits (~Typedfern@135.red-83-37-43.dynamicip.rima-tde.net) (Ping timeout: 276 seconds)
01:23:44 × merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 245 seconds)
01:24:09 × Typedfern quits (~Typedfern@135.red-83-37-43.dynamicip.rima-tde.net) (Remote host closed the connection)
01:25:20 <sim590> Hmmmm. OK. I don't really know why, but I guess I need prerequisites to undestand it. I don't really know how the build system does its thing, so I don't see the logic here, but OK. So I guess, my only chance now, is to have a fix from the cabal team so that c2hs-options be added to a cabal release.
01:25:47 <geekosaur> I told you, it's a development thing. You're trying to use it for something else
01:26:28 Typedfern joins (~Typedfern@135.red-83-37-43.dynamicip.rima-tde.net)
01:34:42 merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl)
01:35:17 bitdex joins (~bitdex@gateway/tor-sasl/bitdex)
01:37:47 cyphase joins (~cyphase@user/cyphase)
01:40:19 × merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 276 seconds)
01:40:33 <sim590> I don't know if I'm at the right spot, but I see hsc2hs-options seems to be be part of the list of recognized fields here: https://github.com/haskell/cabal/blob/7e0f040d1147770b57e76b2e51123f01e83ce263/Cabal-syntax/src/Distribution/PackageDescription/FieldGrammar.hs#L625
01:40:40 <sim590> But c2hs is not there.
01:43:34 <sim590> It might be an easy PR for me to make. I could basically mimic pretty much everything that's done for hsc2hs-options, but do it for c2hs-options.
01:46:12 × j1n37- quits (~j1n37@user/j1n37) (Ping timeout: 252 seconds)
01:46:45 j1n37 joins (~j1n37@user/j1n37)
01:47:47 sajenim joins (~sajenim@user/sajenim)
01:49:04 <geekosaur> 👍
01:50:29 merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl)
01:50:38 × volsand quits (~volsand@2804:1b1:1080:da6:192e:6849:5950:90dd) (Quit: volsand)
01:51:49 <sim590> Thanks again for the support
01:52:17 <geekosaur> what's puzzling me is, if it's not supported there, it shouldn't work in `cabal.project` either
01:57:12 × merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds)
01:57:52 <sim590> hmmmm. So, there are references in the code about `c2hs-options`, but they're not in the FieldGrammar module under the PackageDescription dir. I think that explains the difference.
01:58:42 stef204 joins (~stef204@user/stef204)
01:58:52 <sim590> So, actually, the only references I saw seems to be in test files. And they are related to the $HOME/.cabal/config file interpreter I think.
01:58:57 <geekosaur> it explains the parsing, but not why it works at all
01:59:41 <sim590> Yeah I agree.
01:59:43 <geekosaur> did someone put it in the LBI but not then add a field for parsing?
02:00:28 <geekosaur> makes me wonder how many other fields might be missing
02:01:47 <geekosaur> (sorry, that might not be clear: LocalBuildInfo. the central data structures are abbreviated all over the codebase)
02:02:18 <geekosaur> er, LocalBuildInformation
02:06:13 <sim590> So, in the whole codebase, the string c2hs-optins only appears in test files.
02:06:55 <sim590> Or could it be that c2hs actually reads the `cabal.project` file and parses the options himself? That would not have been cool, but it's just a thought.
02:07:21 typedfern_ joins (~Typedfern@135.red-83-37-43.dynamicip.rima-tde.net)
02:07:37 × Typedfern quits (~Typedfern@135.red-83-37-43.dynamicip.rima-tde.net) (Ping timeout: 276 seconds)
02:08:16 <geekosaur> highly unlikely. most probable to me is that it's simply ignored when parsing a cabal file, but it's in LocalBuildInformation so when the cabal.project parser sees it it can add it there
02:08:32 merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl)
02:10:57 <geekosaur> and I will not be surprised to find that various others (probably in the same class: build-tool-depends) are also missing
02:10:59 <int-e> AFAICS for config-like files (that includes cabal.project.local?) the field names are computed here: https://github.com/haskell/cabal/blob/master/cabal-install/src/Distribution/Client/ProjectConfig/Legacy.hs#L2011
02:12:09 werneta joins (~werneta@syn-071-083-160-242.res.spectrum.com)
02:13:49 × merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 260 seconds)
02:14:00 <int-e> which should eventually trace back to https://github.com/haskell/cabal/blob/master/Cabal/src/Distribution/Simple/Program/Builtin.hs#L67 and since the most obvious thing works when you add a new program there... it's easy to miss that the .cabal file syntax is completely separate
02:14:07 <sim590> So may be the `cabal.project` file is agnostic about the program name and it just passes arguments to whatever you tell it to? But inside, `*.cabal`, it's not.
02:15:24 <geekosaur> it has to be in the programDb. but cabal files are more specific, yes
02:15:25 × ljdarj quits (~Thunderbi@user/ljdarj) (Ping timeout: 276 seconds)
02:15:49 <sim590> Yeah, that's what I just realized. I couldn't properly phrase it. Thanks. :P
02:15:50 <geekosaur> I mentioned earlier that the project file parser is a bit half-assed; here, that's working in your favor 🙂
02:17:04 × td_ quits (~td@i53870904.versanet.de) (Ping timeout: 245 seconds)
02:17:38 <geekosaur> (it does still have to be in the progDb or it wouldn't have anywhere to store the option)
02:19:12 td_ joins (~td@i53870923.versanet.de)
02:19:16 <int-e> (and progDb is populated from the builtinPrograms list)
02:24:19 merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl)
02:25:19 × stef204 quits (~stef204@user/stef204) (Quit: WeeChat 4.2.1)
02:29:06 × merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds)
02:31:06 todi joins (~todi@p57803331.dip0.t-ipconnect.de)
02:35:45 × lambdabot quits (~lambdabot@haskell/bot/lambdabot) (Remote host closed the connection)
02:35:52 lambdabot joins (~lambdabot@haskell/bot/lambdabot)
02:35:52 ChanServ sets mode +v lambdabot
02:39:40 todi1 joins (~todi@183.96.168.66)
02:40:07 merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl)
02:40:28 × todi quits (~todi@p57803331.dip0.t-ipconnect.de) (Ping timeout: 252 seconds)
02:44:52 × merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds)
02:49:09 peterbecich joins (~Thunderbi@syn-047-229-123-186.res.spectrum.com)
02:52:34 × euleritian quits (~euleritia@ip4d17f82f.dynamic.kabel-deutschland.de) (Read error: Connection reset by peer)
02:52:52 euleritian joins (~euleritia@ip4d17f82f.dynamic.kabel-deutschland.de)
02:55:54 merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl)
02:56:14 × machinedgod quits (~machinedg@d108-173-18-100.abhsia.telus.net) (Ping timeout: 252 seconds)
03:00:29 × merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 244 seconds)
03:01:03 × euleritian quits (~euleritia@ip4d17f82f.dynamic.kabel-deutschland.de) (Read error: Connection reset by peer)
03:01:14 stef204 joins (~stef204@user/stef204)
03:02:04 × stef204 quits (~stef204@user/stef204) (Client Quit)
03:02:19 euleritian joins (~euleritia@ip4d17f82f.dynamic.kabel-deutschland.de)
03:06:39 × Googulator65 quits (~Googulato@2a01-036d-0106-4a24-1dc7-297e-fae3-e794.pool6.digikabel.hu) (Quit: Client closed)
03:06:56 Googulator65 joins (~Googulato@2a01-036d-0106-4a24-1dc7-297e-fae3-e794.pool6.digikabel.hu)
03:20:48 merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl)
03:26:09 × merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 260 seconds)
03:36:34 merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl)
03:43:49 × merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 276 seconds)
03:48:48 × nacation quits (~m-3l4s76@user/nacation) (Remote host closed the connection)
03:49:29 nacation joins (~m-3l4s76@user/nacation)
03:54:37 merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl)
03:58:07 × peterbecich quits (~Thunderbi@syn-047-229-123-186.res.spectrum.com) (Ping timeout: 276 seconds)
03:59:25 × merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds)
04:07:48 × j1n37 quits (~j1n37@user/j1n37) (Read error: Connection reset by peer)
04:10:24 merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl)
04:10:44 j1n37 joins (~j1n37@user/j1n37)
04:11:13 × gorignak quits (~gorignak@user/gorignak) (Quit: quit)
04:14:00 gorignak joins (~gorignak@user/gorignak)
04:15:26 × merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds)
04:22:05 michalz joins (~michalz@185.246.207.203)
04:26:12 merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl)
04:31:12 × merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds)
04:39:59 takuan joins (~takuan@d8D86B601.access.telenet.be)
04:41:58 merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl)
04:47:14 × merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 260 seconds)
04:52:33 × euleritian quits (~euleritia@ip4d17f82f.dynamic.kabel-deutschland.de) (Ping timeout: 248 seconds)
04:56:22 euleritian joins (~euleritia@ip4d17f82f.dynamic.kabel-deutschland.de)
04:57:45 merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl)
04:58:46 dontdieych2 joins (~quassel@user/dontdieych2)
05:00:28 × pavonia quits (~user@user/siracusa) (Quit: Bye!)
05:02:44 × merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds)
05:03:10 × euleritian quits (~euleritia@ip4d17f82f.dynamic.kabel-deutschland.de) (Ping timeout: 260 seconds)
05:05:44 euleritian joins (~euleritia@dynamic-176-006-131-036.176.6.pool.telefonica.de)
05:06:00 merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl)
05:08:22 × euleritian quits (~euleritia@dynamic-176-006-131-036.176.6.pool.telefonica.de) (Read error: Connection reset by peer)
05:08:42 euleritian joins (~euleritia@ip4d17f82f.dynamic.kabel-deutschland.de)
05:10:48 × merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds)
05:11:27 × euleritian quits (~euleritia@ip4d17f82f.dynamic.kabel-deutschland.de) (Read error: Connection reset by peer)
05:12:10 euleritian joins (~euleritia@ip4d17f82f.dynamic.kabel-deutschland.de)
05:12:16 × __jmcantrell__ quits (~weechat@user/jmcantrell) (Quit: WeeChat 4.6.2)
05:15:38 × Square3 quits (~Square@user/square) (Ping timeout: 265 seconds)
05:16:05 × dontdieych2 quits (~quassel@user/dontdieych2) (Quit: https://quassel-irc.org - Chat comfortably. Anywhere.)
05:21:46 merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl)
05:25:42 × LainIwakura quits (~LainIwaku@user/LainIwakura) (Ping timeout: 240 seconds)
05:26:18 × euleritian quits (~euleritia@ip4d17f82f.dynamic.kabel-deutschland.de) (Ping timeout: 252 seconds)
05:28:24 × merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds)
05:30:08 euleritian joins (~euleritia@dynamic-176-006-131-036.176.6.pool.telefonica.de)
05:34:48 × weary-traveler quits (~user@user/user363627) (Remote host closed the connection)
05:39:01 × noctux quits (~noctux@user/noctux) (Ping timeout: 248 seconds)
05:39:15 noctux joins (~noctux@user/noctux)
05:39:50 merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl)
05:40:07 × Natch quits (~natch@c-92-34-7-158.bbcust.telenor.se) (Ping timeout: 252 seconds)
05:41:13 × m1dnight quits (~m1dnight@d8D861908.access.telenet.be) (Ping timeout: 252 seconds)
05:42:19 × disconnect3d quits (~disconnec@user/disconnect3d) (Ping timeout: 252 seconds)
05:42:27 disconnect3d joins (~disconnec@user/disconnect3d)
05:43:09 × mrmr quits (~mrmr@user/mrmr) (Ping timeout: 272 seconds)
05:43:11 Natch joins (~natch@c-92-34-7-158.bbcust.telenor.se)
05:43:32 mrmr joins (~mrmr@user/mrmr)
05:44:59 × merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 260 seconds)
05:47:52 × haritz quits (~hrtz@user/haritz) (Remote host closed the connection)
05:55:38 merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl)
06:00:52 × merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 272 seconds)
06:07:02 merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl)
06:08:49 LainIwakura joins (~LainIwaku@user/LainIwakura)
06:11:39 × todi1 quits (~todi@183.96.168.66) (Ping timeout: 272 seconds)
06:12:05 × merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 248 seconds)
06:12:14 todi joins (~todi@p57803331.dip0.t-ipconnect.de)
06:22:49 merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl)
06:22:54 × LainIwakura quits (~LainIwaku@user/LainIwakura) (Ping timeout: 240 seconds)
06:24:21 × iteratee_ quits (~kyle@199.119.84.78) (Ping timeout: 268 seconds)
06:26:24 iteratee joins (~kyle@199.119.84.78)
06:28:08 × merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 265 seconds)
06:29:33 biberu joins (~biberu@user/biberu)
06:30:46 × iteratee quits (~kyle@199.119.84.78) (Ping timeout: 244 seconds)
06:34:55 amadaluzia joins (~amadaluzi@user/amadaluzia)
06:38:37 merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl)
06:38:48 LainIwakura joins (~LainIwaku@user/LainIwakura)
06:43:56 × merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 272 seconds)
06:44:05 × LainIwakura quits (~LainIwaku@user/LainIwakura) (Quit: Client closed)
06:46:27 iteratee joins (~kyle@199.119.84.78)
06:49:49 michalz_ joins (~michalz@185.246.207.197)
06:50:50 peterbecich joins (~Thunderbi@syn-047-229-123-186.res.spectrum.com)
06:51:16 × Lord_of_Life quits (~Lord@user/lord-of-life/x-2819915) (Ping timeout: 252 seconds)
06:51:18 acidjnk_new joins (~acidjnk@p200300d6e71c4f9799b2fc54a11dfedb.dip0.t-ipconnect.de)
06:51:38 × michalz quits (~michalz@185.246.207.203) (Ping timeout: 252 seconds)
06:53:08 Katarushisu2 joins (~Katarushi@finc-20-b2-v4wan-169598-cust1799.vm7.cable.virginm.net)
06:54:20 merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl)
06:54:56 × adamCS quits (~adamCS@70.19.85.77) (Ping timeout: 252 seconds)
06:54:56 × Katarushisu quits (~Katarushi@finc-20-b2-v4wan-169598-cust1799.vm7.cable.virginm.net) (Ping timeout: 252 seconds)
06:54:56 Katarushisu2 is now known as Katarushisu
06:55:44 × euleritian quits (~euleritia@dynamic-176-006-131-036.176.6.pool.telefonica.de) (Read error: Connection reset by peer)
06:56:03 euleritian joins (~euleritia@ip4d17f82f.dynamic.kabel-deutschland.de)
06:58:03 adamCS joins (~adamCS@70.19.85.77)
06:58:12 Lord_of_Life joins (~Lord@user/lord-of-life/x-2819915)
06:59:15 × merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 260 seconds)
07:00:02 × caconym7 quits (~caconym@user/caconym) (Quit: bye)
07:00:34 × Sgeo quits (~Sgeo@user/sgeo) (Read error: Connection reset by peer)
07:00:44 caconym7 joins (~caconym@user/caconym)
07:05:03 fp joins (~Thunderbi@2001:708:20:1406::10c5)
07:05:09 ljdarj joins (~Thunderbi@user/ljdarj)
07:06:06 CiaoSen joins (~Jura@2a02:8071:64e1:da0:5a47:caff:fe78:33db)
07:06:29 × nacation quits (~m-3l4s76@user/nacation) (Read error: Connection reset by peer)
07:08:02 merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl)
07:08:14 nacation joins (~m-3l4s76@user/nacation)
07:14:00 × Googulator65 quits (~Googulato@2a01-036d-0106-4a24-1dc7-297e-fae3-e794.pool6.digikabel.hu) (Quit: Client closed)
07:14:14 Googulator65 joins (~Googulato@2a01-036d-0106-4a24-1dc7-297e-fae3-e794.pool6.digikabel.hu)
07:14:44 × merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds)
07:18:51 tromp joins (~textual@2001:1c00:3487:1b00:31c9:5f27:18bf:4d4e)
07:20:27 × j1n37 quits (~j1n37@user/j1n37) (Ping timeout: 268 seconds)
07:20:50 × nadja quits (~dequbed@banana-new.kilobyte22.de) (Ping timeout: 260 seconds)
07:20:50 × hsw quits (~hsw@112-104-12-126.adsl.dynamic.seed.net.tw) (Ping timeout: 260 seconds)
07:20:56 j1n37 joins (~j1n37@user/j1n37)
07:21:55 hsw joins (~hsw@112-104-12-126.adsl.dynamic.seed.net.tw)
07:23:45 × Lord_of_Life quits (~Lord@user/lord-of-life/x-2819915) (Ping timeout: 260 seconds)
07:24:57 Lord_of_Life joins (~Lord@user/lord-of-life/x-2819915)
07:26:06 merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl)
07:26:42 × amadaluzia quits (~amadaluzi@user/amadaluzia) (Ping timeout: 248 seconds)
07:27:50 × peterbecich quits (~Thunderbi@syn-047-229-123-186.res.spectrum.com) (Ping timeout: 260 seconds)
07:30:23 nadja joins (~dequbed@banana-new.kilobyte22.de)
07:30:55 × merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 244 seconds)
07:34:53 amadaluzia joins (~amadaluzi@user/amadaluzia)
07:41:50 merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl)
07:46:43 × merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 244 seconds)
07:52:35 j1n37- joins (~j1n37@user/j1n37)
07:53:36 × j1n37 quits (~j1n37@user/j1n37) (Ping timeout: 272 seconds)
07:54:57 merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl)
07:58:37 × amadaluzia quits (~amadaluzi@user/amadaluzia) (Ping timeout: 276 seconds)
07:59:13 × merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 248 seconds)
08:09:02 merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl)
08:13:46 × merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds)
08:14:30 xff0x joins (~xff0x@2405:6580:b080:900:70da:5e:441c:b741)
08:15:20 merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl)
08:16:10 × nacation quits (~m-3l4s76@user/nacation) (Ping timeout: 276 seconds)
08:17:42 × pabs3 quits (~pabs3@user/pabs3) (Read error: Connection reset by peer)
08:18:36 pabs3 joins (~pabs3@user/pabs3)
08:18:48 nacation joins (~m-3l4s76@user/nacation)
08:19:52 × nacation quits (~m-3l4s76@user/nacation) (Remote host closed the connection)
08:22:54 nacation joins (~m-3l4s76@user/nacation)
08:27:20 × tzh quits (~tzh@c-76-115-131-146.hsd1.or.comcast.net) (Quit: zzz)
08:29:58 × tromp quits (~textual@2001:1c00:3487:1b00:31c9:5f27:18bf:4d4e) (Quit: My iMac has gone to sleep. ZZZzzz…)
08:35:21 chele joins (~chele@user/chele)
08:36:51 × fp quits (~Thunderbi@2001:708:20:1406::10c5) (Ping timeout: 252 seconds)
08:41:59 × xff0x quits (~xff0x@2405:6580:b080:900:70da:5e:441c:b741) (Ping timeout: 252 seconds)
08:43:44 fp joins (~Thunderbi@wireless-86-50-140-117.open.aalto.fi)
08:44:31 m1dnight joins (~m1dnight@d8D861908.access.telenet.be)
08:45:33 × poscat quits (~poscat@user/poscat) (Remote host closed the connection)
08:48:42 poscat joins (~poscat@user/poscat)
08:49:37 xff0x joins (~xff0x@2405:6580:b080:900:70da:5e:441c:b741)
08:53:15 × sabathan2 quits (~sabathan@amarseille-159-1-12-107.w86-203.abo.wanadoo.fr) (Read error: Connection reset by peer)
08:56:33 sabathan2 joins (~sabathan@amarseille-159-1-12-107.w86-203.abo.wanadoo.fr)
08:57:55 gmg joins (~user@user/gehmehgeh)
08:58:36 JuanDaugherty joins (~juan@user/JuanDaugherty)
09:00:19 × ljdarj quits (~Thunderbi@user/ljdarj) (Ping timeout: 252 seconds)
09:02:35 m1dnight_ joins (~m1dnight@d8D861908.access.telenet.be)
09:03:19 × m1dnight quits (~m1dnight@d8D861908.access.telenet.be) (Ping timeout: 260 seconds)
09:03:46 ljdarj joins (~Thunderbi@user/ljdarj)
09:08:54 × euleritian quits (~euleritia@ip4d17f82f.dynamic.kabel-deutschland.de) (Ping timeout: 276 seconds)
09:09:14 euleritian joins (~euleritia@dynamic-176-006-138-168.176.6.pool.telefonica.de)
09:09:35 × euleritian quits (~euleritia@dynamic-176-006-138-168.176.6.pool.telefonica.de) (Read error: Connection reset by peer)
09:10:11 euleritian joins (~euleritia@ip4d17f82f.dynamic.kabel-deutschland.de)
09:16:05 × nacation quits (~m-3l4s76@user/nacation) (Remote host closed the connection)
09:19:02 × euleritian quits (~euleritia@ip4d17f82f.dynamic.kabel-deutschland.de) (Ping timeout: 252 seconds)
09:20:08 nacation joins (~m-3l4s76@user/nacation)
09:21:46 dhil joins (~dhil@openvpn-125-1069.inf.ed.ac.uk)
09:21:48 euleritian joins (~euleritia@dynamic-176-006-138-168.176.6.pool.telefonica.de)
09:25:20 sord937 joins (~sord937@gateway/tor-sasl/sord937)
09:25:37 × nadja quits (~dequbed@banana-new.kilobyte22.de) (Ping timeout: 244 seconds)
09:25:53 JuanDaugherty is now known as ColinRobinson
09:27:33 nadja joins (~dequbed@banana-new.kilobyte22.de)
09:28:58 × xff0x quits (~xff0x@2405:6580:b080:900:70da:5e:441c:b741) (Ping timeout: 276 seconds)
09:29:24 xff0x joins (~xff0x@2405:6580:b080:900:eadd:b346:77f9:cfbc)
09:33:15 × nadja quits (~dequbed@banana-new.kilobyte22.de) (Ping timeout: 265 seconds)
09:36:19 tromp joins (~textual@2001:1c00:3487:1b00:31c9:5f27:18bf:4d4e)
09:37:02 nadja joins (~dequbed@banana-new.kilobyte22.de)
09:46:45 × tcard quits (~tcard@2400:4051:5801:7500:cf17:befc:ff82:5303) (Quit: Leaving)
09:46:57 × euleritian quits (~euleritia@dynamic-176-006-138-168.176.6.pool.telefonica.de) (Read error: Connection reset by peer)
09:47:25 euleritian joins (~euleritia@dynamic-176-006-138-168.176.6.pool.telefonica.de)
09:48:01 × xff0x quits (~xff0x@2405:6580:b080:900:eadd:b346:77f9:cfbc) (Quit: xff0x)
09:50:32 × tromp quits (~textual@2001:1c00:3487:1b00:31c9:5f27:18bf:4d4e) (Quit: My iMac has gone to sleep. ZZZzzz…)
09:51:15 xff0x joins (~xff0x@2405:6580:b080:900:7099:7f52:1441:1e43)
09:51:36 × euleritian quits (~euleritia@dynamic-176-006-138-168.176.6.pool.telefonica.de) (Read error: Connection reset by peer)
09:51:54 euleritian joins (~euleritia@77.23.248.47)
09:51:58 hellwolf just realized that I need Cont, after getting cute and trying to come up some clever jigsaw mechanism.
09:52:43 <hellwolf> Cont is both easy and hard to understand at the same time. I remember geek o saur said something about that too
09:55:02 <merijn> @quote didn't.you.write
09:55:02 <lambdabot> dobblego says: <dobblego> Cale, didn't you write one? :) <Cale> dobblego: two actually, and a half.
09:55:05 <merijn> aww
09:55:07 <merijn> wrong quote
09:55:13 <merijn> @quote stares.at
09:55:14 <lambdabot> autrijus says: * autrijus stares at type Eval x = forall r. ContT r (ReaderT x IO) (ReaderT x IO x) and feels very lost <shapr> Didn't you write that code? <autrijus> yeah. and it works <autrijus> I
09:55:14 <lambdabot> just don't know what it means.
09:55:18 <merijn> That one :)
09:55:55 hellwolf feeling every day I am just discovering new programs; I have not created much new things.
09:58:32 <hellwolf> @quote cute
09:58:32 <lambdabot> Jafet says: In Soviet Russia, State executes you
09:59:27 <hellwolf> @quote SovietT
09:59:27 <lambdabot> No quotes match. And you call yourself a Rocket Scientist!
09:59:51 × euleritian quits (~euleritia@77.23.248.47) (Read error: Connection reset by peer)
09:59:59 euleritian joins (~euleritia@dynamic-176-006-138-168.176.6.pool.telefonica.de)
10:00:08 tcard joins (~tcard@2400:4051:5801:7500:cf17:befc:ff82:5303)
10:00:21 × euleritian quits (~euleritia@dynamic-176-006-138-168.176.6.pool.telefonica.de) (Read error: Connection reset by peer)
10:00:36 × sord937 quits (~sord937@gateway/tor-sasl/sord937) (Remote host closed the connection)
10:00:38 euleritian joins (~euleritia@ip4d17f82f.dynamic.kabel-deutschland.de)
10:00:56 sord937 joins (~sord937@gateway/tor-sasl/sord937)
10:03:15 tromp joins (~textual@2001:1c00:3487:1b00:31c9:5f27:18bf:4d4e)
10:09:08 <haskellbridge> <hellwolf> Thanks haskellbridge, leaking my location.
10:09:08 <haskellbridge> <hellwolf> again
10:09:19 × zmt01 quits (~zmt00@user/zmt00) (Ping timeout: 244 seconds)
10:14:44 zmt00 joins (~zmt00@user/zmt00)
10:14:59 j1n37 joins (~j1n37@user/j1n37)
10:15:03 × zmt00 quits (~zmt00@user/zmt00) (Remote host closed the connection)
10:15:28 zmt00 joins (~zmt00@user/zmt00)
10:15:52 × j1n37- quits (~j1n37@user/j1n37) (Ping timeout: 252 seconds)
10:16:33 × malte quits (~malte@mal.tc) (Ping timeout: 244 seconds)
10:29:33 malte joins (~malte@mal.tc)
10:32:22 × fp quits (~Thunderbi@wireless-86-50-140-117.open.aalto.fi) (Ping timeout: 252 seconds)
10:35:06 alecs joins (~alecs@61.pool85-58-154.dynamic.orange.es)
10:36:46 poscat0x04 joins (~poscat@user/poscat)
10:37:13 × poscat quits (~poscat@user/poscat) (Ping timeout: 244 seconds)
10:37:51 × ColinRobinson quits (~juan@user/JuanDaugherty) (Quit: praxis.meansofproduction.biz (juan@acm.org))
10:39:10 × acidjnk_new quits (~acidjnk@p200300d6e71c4f9799b2fc54a11dfedb.dip0.t-ipconnect.de) (Ping timeout: 260 seconds)
10:39:34 acidjnk_new joins (~acidjnk@p200300d6e71c4f9778386121231aa5f9.dip0.t-ipconnect.de)
10:44:42 × connrs quits (~connrs@conners.plus.com) (Read error: Connection reset by peer)
10:45:11 × euleritian quits (~euleritia@ip4d17f82f.dynamic.kabel-deutschland.de) (Read error: Connection reset by peer)
10:45:52 euleritian joins (~euleritia@ip4d17f82f.dynamic.kabel-deutschland.de)
10:49:03 connrs joins (~connrs@user/connrs)
10:51:05 × ljdarj quits (~Thunderbi@user/ljdarj) (Quit: ljdarj)
10:51:23 ljdarj joins (~Thunderbi@user/ljdarj)
10:52:42 × j1n37 quits (~j1n37@user/j1n37) (Read error: Connection reset by peer)
10:53:16 zmt01 joins (~zmt00@user/zmt00)
10:54:07 × zmt00 quits (~zmt00@user/zmt00) (Ping timeout: 276 seconds)
10:55:39 j1n37 joins (~j1n37@user/j1n37)
10:56:19 × j1n37 quits (~j1n37@user/j1n37) (Read error: Connection reset by peer)
10:59:23 zmt00 joins (~zmt00@user/zmt00)
11:00:18 swamp_ joins (~zmt00@user/zmt00)
11:01:35 × alecs quits (~alecs@61.pool85-58-154.dynamic.orange.es) (Quit: Client closed)
11:01:42 × zmt01 quits (~zmt00@user/zmt00) (Ping timeout: 272 seconds)
11:01:59 haritz joins (~hrtz@2a01:4b00:bc2e:7000::2)
11:01:59 × haritz quits (~hrtz@2a01:4b00:bc2e:7000::2) (Changing host)
11:01:59 haritz joins (~hrtz@user/haritz)
11:02:07 zmt01 joins (~zmt00@user/zmt00)
11:02:19 jespada joins (~jespada@r179-25-202-180.dialup.adsl.anteldata.net.uy)
11:03:32 × zmt00 quits (~zmt00@user/zmt00) (Ping timeout: 252 seconds)
11:04:38 × swamp_ quits (~zmt00@user/zmt00) (Ping timeout: 252 seconds)
11:06:52 tabaqui joins (~tabaqui@167.71.80.236)
11:09:02 × Googulator65 quits (~Googulato@2a01-036d-0106-4a24-1dc7-297e-fae3-e794.pool6.digikabel.hu) (Quit: Client closed)
11:09:20 Googulator65 joins (~Googulato@2a01-036d-0106-4a24-1dc7-297e-fae3-e794.pool6.digikabel.hu)
11:17:03 j1n37 joins (~j1n37@user/j1n37)
11:31:28 × ljdarj quits (~Thunderbi@user/ljdarj) (Quit: ljdarj)
11:31:45 ljdarj joins (~Thunderbi@user/ljdarj)
11:51:04 × tromp quits (~textual@2001:1c00:3487:1b00:31c9:5f27:18bf:4d4e) (Quit: My iMac has gone to sleep. ZZZzzz…)
11:59:33 ljdarj1 joins (~Thunderbi@user/ljdarj)
12:02:59 × ljdarj quits (~Thunderbi@user/ljdarj) (Ping timeout: 260 seconds)
12:02:59 ljdarj1 is now known as ljdarj
12:15:11 × acidjnk_new quits (~acidjnk@p200300d6e71c4f9778386121231aa5f9.dip0.t-ipconnect.de) (Ping timeout: 272 seconds)
12:18:42 × j1n37 quits (~j1n37@user/j1n37) (Ping timeout: 244 seconds)
12:20:39 j1n37 joins (~j1n37@user/j1n37)
12:21:22 acidjnk_new joins (~acidjnk@p200300d6e71c4f9778386121231aa5f9.dip0.t-ipconnect.de)
12:24:46 × la1n23 quits (~la1n@176.59.57.19) (Read error: Connection reset by peer)
12:28:17 la1n joins (~la1n@176.59.162.120)
12:28:40 fp joins (~Thunderbi@2001:708:20:1406::1370)
12:32:09 volsand joins (~volsand@2804:1b1:1080:da6:b270:c4db:8a27:6d61)
12:33:10 × jespada quits (~jespada@r179-25-202-180.dialup.adsl.anteldata.net.uy) (Quit: My Mac has gone to sleep. ZZZzzz…)
12:35:05 jespada joins (~jespada@r179-25-202-180.dialup.adsl.anteldata.net.uy)
12:44:22 × euleritian quits (~euleritia@ip4d17f82f.dynamic.kabel-deutschland.de) (Ping timeout: 252 seconds)
12:45:31 euleritian joins (~euleritia@dynamic-176-006-138-168.176.6.pool.telefonica.de)
12:48:19 × fp quits (~Thunderbi@2001:708:20:1406::1370) (Quit: fp)
12:48:23 × euleritian quits (~euleritia@dynamic-176-006-138-168.176.6.pool.telefonica.de) (Remote host closed the connection)
12:49:13 euleritian joins (~euleritia@dynamic-176-006-138-168.176.6.pool.telefonica.de)
12:49:49 fp joins (~Thunderbi@2001:708:20:1406::1370)
12:50:04 × fp quits (~Thunderbi@2001:708:20:1406::1370) (Client Quit)
12:51:46 fp joins (~Thunderbi@2001:708:20:1406::1370)
12:56:24 × fp quits (~Thunderbi@2001:708:20:1406::1370) (Remote host closed the connection)
12:57:21 fp joins (~Thunderbi@2001:708:20:1406::1370)
13:02:49 × gabriel_sevecek quits (~gabriel@188-167-229-200.dynamic.chello.sk) (Ping timeout: 276 seconds)
13:05:25 × dhil quits (~dhil@openvpn-125-1069.inf.ed.ac.uk) (Ping timeout: 276 seconds)
13:09:18 × bitdex quits (~bitdex@gateway/tor-sasl/bitdex) (Quit: = "")
13:09:31 gabriel_sevecek joins (~gabriel@188-167-229-200.dynamic.chello.sk)
13:16:16 weary-traveler joins (~user@user/user363627)
13:17:32 × Googulator65 quits (~Googulato@2a01-036d-0106-4a24-1dc7-297e-fae3-e794.pool6.digikabel.hu) (Quit: Client closed)
13:17:46 × CiaoSen quits (~Jura@2a02:8071:64e1:da0:5a47:caff:fe78:33db) (Ping timeout: 276 seconds)
13:17:49 Googulator65 joins (~Googulato@2a01-036d-0106-4a24-1dc7-297e-fae3-e794.pool6.digikabel.hu)
13:18:11 dhil joins (~dhil@5.151.29.138)
13:32:25 × fp quits (~Thunderbi@2001:708:20:1406::1370) (Quit: fp)
13:41:13 × gorignak quits (~gorignak@user/gorignak) (Quit: quit)
13:41:35 gorignak joins (~gorignak@user/gorignak)
13:44:23 × la1n quits (~la1n@176.59.162.120) (Read error: Connection reset by peer)
13:44:34 la1n joins (~la1n@176.59.162.120)
13:46:15 × acidjnk_new quits (~acidjnk@p200300d6e71c4f9778386121231aa5f9.dip0.t-ipconnect.de) (Ping timeout: 252 seconds)
13:49:45 Square3 joins (~Square@user/square)
13:50:41 × michalz_ quits (~michalz@185.246.207.197) (Remote host closed the connection)
13:51:33 acidjnk_new joins (~acidjnk@p200300d6e71c4f9778386121231aa5f9.dip0.t-ipconnect.de)
13:54:41 × xdej quits (~xdej@quatramaran.salle-s.org) (Remote host closed the connection)
13:58:35 × rvalue quits (~rvalue@user/rvalue) (Read error: Connection reset by peer)
13:59:08 rvalue joins (~rvalue@user/rvalue)
14:03:45 tromp joins (~textual@2001:1c00:3487:1b00:31c9:5f27:18bf:4d4e)
14:07:44 × Googulator65 quits (~Googulato@2a01-036d-0106-4a24-1dc7-297e-fae3-e794.pool6.digikabel.hu) (Quit: Client closed)
14:08:03 Googulator65 joins (~Googulato@2a01-036d-0106-4a24-1dc7-297e-fae3-e794.pool6.digikabel.hu)
14:13:02 xdej joins (~xdej@quatramaran.salle-s.org)
14:18:36 × dhil quits (~dhil@5.151.29.138) (Ping timeout: 252 seconds)
14:31:03 Sgeo joins (~Sgeo@user/sgeo)
14:31:52 michalz joins (~michalz@185.246.207.200)
14:40:53 × euleritian quits (~euleritia@dynamic-176-006-138-168.176.6.pool.telefonica.de) (Ping timeout: 248 seconds)
14:40:55 JuanDaugherty joins (~juan@user/JuanDaugherty)
14:42:24 mrmr8 joins (~mrmr@user/mrmr)
14:43:09 × michalz quits (~michalz@185.246.207.200) (Remote host closed the connection)
14:43:50 euleritian joins (~euleritia@dynamic-176-006-129-211.176.6.pool.telefonica.de)
14:43:51 × mrmr quits (~mrmr@user/mrmr) (Ping timeout: 268 seconds)
14:43:51 mrmr8 is now known as mrmr
14:57:06 × euleritian quits (~euleritia@dynamic-176-006-129-211.176.6.pool.telefonica.de) (Ping timeout: 252 seconds)
14:57:21 × tromp quits (~textual@2001:1c00:3487:1b00:31c9:5f27:18bf:4d4e) (Quit: My iMac has gone to sleep. ZZZzzz…)
14:58:47 euleritian joins (~euleritia@dynamic-176-000-197-165.176.0.pool.telefonica.de)
15:01:52 econo_ joins (uid147250@id-147250.tinside.irccloud.com)
15:16:11 crns joins (~crns@user/crns)
15:18:27 × emmanuelux quits (~emmanuelu@user/emmanuelux) (Read error: Connection reset by peer)
15:23:32 machinedgod joins (~machinedg@d108-173-18-100.abhsia.telus.net)
15:28:35 peterbecich joins (~Thunderbi@syn-047-229-123-186.res.spectrum.com)
15:41:50 × peterbecich quits (~Thunderbi@syn-047-229-123-186.res.spectrum.com) (Ping timeout: 252 seconds)
15:44:55 × crns quits (~crns@user/crns) (Read error: Connection reset by peer)
15:45:06 crns joins (~crns@user/crns)
15:51:03 × m5zs7k quits (aquares@web10.mydevil.net) (Ping timeout: 244 seconds)
15:53:49 m5zs7k joins (aquares@web10.mydevil.net)
15:55:27 ljdarj1 joins (~Thunderbi@user/ljdarj)
15:57:01 × ljdarj quits (~Thunderbi@user/ljdarj) (Ping timeout: 265 seconds)
15:57:01 ljdarj1 is now known as ljdarj
15:58:19 × typedfern_ quits (~Typedfern@135.red-83-37-43.dynamicip.rima-tde.net) (Ping timeout: 276 seconds)
15:58:36 JuanDaugherty is now known as ColinRobinaon
15:59:55 Typedfern joins (~Typedfern@135.red-83-37-43.dynamicip.rima-tde.net)
16:00:00 × acidjnk_new quits (~acidjnk@p200300d6e71c4f9778386121231aa5f9.dip0.t-ipconnect.de) (Ping timeout: 260 seconds)
16:01:24 peterbecich joins (~Thunderbi@syn-047-229-123-186.res.spectrum.com)
16:01:53 tromp joins (~textual@2001:1c00:3487:1b00:31c9:5f27:18bf:4d4e)
16:10:29 alt-crns joins (~crns@185.238.219.102)
16:10:29 × crns quits (~crns@user/crns) (Read error: Connection reset by peer)
16:20:37 __jmcantrell__ joins (~weechat@user/jmcantrell)
16:24:31 × merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Quit: leaving)
16:26:45 tolgo joins (~Thunderbi@199.115.144.130)
16:31:17 × lol_ quits (~lol@2603:3016:1e01:b960:3123:2ba5:494b:dfbe) (Read error: Connection reset by peer)
16:37:08 × peterbecich quits (~Thunderbi@syn-047-229-123-186.res.spectrum.com) (Ping timeout: 265 seconds)
16:52:19 swamp_ joins (~zmt00@user/zmt00)
16:52:38 Sgeo_ joins (~Sgeo@user/sgeo)
16:53:52 amadaluzia joins (~amadaluzi@user/amadaluzia)
16:55:32 × Sgeo quits (~Sgeo@user/sgeo) (Ping timeout: 252 seconds)
16:55:32 × zmt01 quits (~zmt00@user/zmt00) (Ping timeout: 252 seconds)
16:57:43 × euleritian quits (~euleritia@dynamic-176-000-197-165.176.0.pool.telefonica.de) (Read error: Connection reset by peer)
16:58:02 euleritian joins (~euleritia@77.23.248.47)
16:59:29 × sajenim quits (~sajenim@user/sajenim) (Ping timeout: 248 seconds)
16:59:30 × alt-crns quits (~crns@185.238.219.102) (Read error: Connection reset by peer)
16:59:45 crns joins (~crns@user/crns)
17:04:10 alt-crns joins (~crns@dynamic-176-000-052-024.176.0.pool.telefonica.de)
17:06:54 × crns quits (~crns@user/crns) (Ping timeout: 252 seconds)
17:07:29 × euleritian quits (~euleritia@77.23.248.47) (Ping timeout: 260 seconds)
17:08:13 euleritian joins (~euleritia@ip4d17f82f.dynamic.kabel-deutschland.de)
17:09:55 tzh joins (~tzh@c-76-115-131-146.hsd1.or.comcast.net)
17:11:08 × __jmcantrell__ quits (~weechat@user/jmcantrell) (Ping timeout: 244 seconds)
17:11:12 × ljdarj quits (~Thunderbi@user/ljdarj) (Ping timeout: 276 seconds)
17:16:10 × sord937 quits (~sord937@gateway/tor-sasl/sord937) (Quit: sord937)
17:18:35 × ColinRobinaon quits (~juan@user/JuanDaugherty) (Quit: praxis.meansofproduction.biz (juan@acm.org))
17:18:50 wootehfoot joins (~wootehfoo@user/wootehfoot)
17:22:40 × tolgo quits (~Thunderbi@199.115.144.130) (Ping timeout: 252 seconds)
17:24:40 ttybitnik joins (~ttybitnik@user/wolper)
17:28:01 × euleritian quits (~euleritia@ip4d17f82f.dynamic.kabel-deutschland.de) (Ping timeout: 276 seconds)
17:28:12 euleritian joins (~euleritia@dynamic-176-000-197-165.176.0.pool.telefonica.de)
17:30:56 <haskellbridge> <sm> tcard do you have https://web.cs.dal.ca/~nzeh/Teaching/3137/haskell/ in your books list ? I don't think so
17:32:54 × tromp quits (~textual@2001:1c00:3487:1b00:31c9:5f27:18bf:4d4e) (Quit: My iMac has gone to sleep. ZZZzzz…)
17:35:11 tolgo joins (~Thunderbi@199.115.144.130)
17:36:33 pavonia joins (~user@user/siracusa)
17:37:19 × todi quits (~todi@p57803331.dip0.t-ipconnect.de) (Ping timeout: 252 seconds)
17:39:33 todi joins (~todi@p57803331.dip0.t-ipconnect.de)
17:44:59 × todi quits (~todi@p57803331.dip0.t-ipconnect.de) (Ping timeout: 245 seconds)
17:44:59 tromp joins (~textual@2001:1c00:3487:1b00:31c9:5f27:18bf:4d4e)
17:45:02 × haskellbridge quits (~hackager@syn-024-093-192-219.res.spectrum.com) (Remote host closed the connection)
17:47:49 haskellbridge joins (~hackager@syn-024-093-192-219.res.spectrum.com)
17:47:49 ChanServ sets mode +v haskellbridge
17:49:04 × euleritian quits (~euleritia@dynamic-176-000-197-165.176.0.pool.telefonica.de) (Read error: Connection reset by peer)
17:49:22 euleritian joins (~euleritia@ip4d17f82f.dynamic.kabel-deutschland.de)
17:51:37 × alt-crns quits (~crns@dynamic-176-000-052-024.176.0.pool.telefonica.de) (Read error: Connection reset by peer)
17:52:00 crns joins (~crns@user/crns)
17:55:08 <yin> ok, time to learn parser combinators
17:55:09 acidjnk_new joins (~acidjnk@p200300d6e71c4f97b8ab1cde68040873.dip0.t-ipconnect.de)
17:57:34 <yin> should i start with parsec, megaparsec, attoparsec... ?
17:59:40 <haskellbridge> <hellwolf> Text.ParserCombinators.Read
17:59:40 <haskellbridge> from base to ease in?
17:59:54 <haskellbridge> <hellwolf> *ReadP
18:00:14 × nurupo quits (~nurupo.ga@user/nurupo) (Quit: nurupo.ga)
18:00:31 nurupo joins (~nurupo.ga@user/nurupo)
18:01:20 <monochrom> Depending on what "learn" means, there is also: start with writing your own.
18:01:58 <yin> monochrom: i understand the theory pretty well. what i mean by learn is "learn how to use the libraries"
18:01:58 <haskellbridge> <Liamzee> why is it that programming languages don't const their objects?
18:02:19 <haskellbridge> <Liamzee> learn flatparse-applicative ;)
18:02:25 <haskellbridge> <Liamzee> erm, flatparse
18:02:44 <monochrom> Then start with what you will finally use. :)
18:02:47 <haskellbridge> <Liamzee> i'm confusing it with optparse-applicative
18:02:50 <haskellbridge> <Liamzee> https://hackage.haskell.org/package/flatparse-0.5.2.1
18:03:02 <yin> what's the most performant library and what are its main downsides?
18:03:08 <haskellbridge> <Liamzee> https://gist.github.com/chrisdone/8551675bb99a0d66cf075fdcb1e6b757
18:03:26 <yin> monochrom: that's the problem. i don't know what the options are
18:03:53 <yin> that's what i'm trying to learn
18:04:15 <monochrom> But if you don't have a choice yet and don't mind following popularity, megaparsec is more popular generally, attoparsec is more popular for those who want speed, and parsec or ReadP is more popular among the minority of us who just want what comes with GHC.
18:04:28 <haskellbridge> <Liamzee> I don't think flatparse backtracks? Not sure about it.
18:04:28 <yin> Liamzee: ty
18:04:48 <haskellbridge> <Liamzee> oh, it backtracks
18:04:52 <haskellbridge> <Liamzee> but it's bytestring specialized
18:05:11 <yin> that's not a bad thing :)
18:05:16 <haskellbridge> <Liamzee> someone ghosted me once for saying attoparsec can be treated as a default when they responded megaparsec is text parser, attoparsec is a bytestring parser
18:05:51 <haskellbridge> <Liamzee> also, you can read about the downsides in the readme
18:05:55 <haskellbridge> <Liamzee> but faster than nom!!111
18:06:23 <monochrom> Most don't backtrack unless you tell it to. ReadP does BFS altogether so it "doesn't" backtrack but it sidetracks.
18:07:03 <monochrom> So for example even in parsec if you don't say "try" it doesn't backtrack.
18:07:34 <haskellbridge> <Liamzee> i'm just curious, though, why don't you have non-mutable objects by default?
18:07:43 <haskellbridge> <Liamzee> even Haskell's records are (spiritually) mutable
18:08:17 <monochrom> And if you say "try" but it is some "try p" where p just consumes O(1) characters, you effectively stay within LL(k).
18:08:30 <haskellbridge> <Liamzee> i mean, i feel like screw this, even though it's not a solution, but ConstRef
18:08:47 <haskellbridge> <Liamzee> IORef except read-only, no exposed constructors, interface only allows you to set an object
18:09:28 <haskellbridge> <Liamzee> maybe this? https://hackage.haskell.org/package/const
18:09:34 <EvanR> supposedly you can change the token type in megaparsec so it's not just text
18:09:35 <monochrom> I have immutable objects by default.
18:10:02 <EvanR> why stop there, make the database immutable by default
18:10:14 <EvanR> pass whole databases around
18:10:42 <monochrom> Even when I have two concurrent threads accessing the same BST, I have an immutable BST, the sharing is done by an IORef and atomicModifyIORef.
18:11:08 <dminuoso> 18:04:52 +haskellbridge │ <Liamzee> but it's bytestring specialized
18:11:14 <monochrom> Completely sidesteps all the desire for lock-free data structures. Who needs those?
18:11:31 <haskellbridge> <Liamzee> EvanR: Transaction a in the hasql ecosystem is a thing
18:11:34 <dminuoso> Note that being "bytestring specialized" is not as restrictive as it might sound.
18:11:51 <dminuoso> flatparse comes with unicode combinators, so you can consume say UTF8 encoded strings easily too
18:11:56 <EvanR> transaction != immutable database
18:13:15 <haskellbridge> <Liamzee> you can model a database as a transaction
18:13:23 <haskellbridge> <Morj> Huh, never heard about flatparse, looks cool with the speed. I already try to write non-backtracking attoparsec, so should be a good replacement
18:13:26 <dminuoso> Personally I would recommend flatparse over megaparsec or attoparsec both because it has nom-style error/failure disambiguation, and internally it is simple and has very customizable errors this way
18:13:41 <dminuoso> The one thing it cant do out of th ebox easily is streaming, however.
18:14:12 <haskellbridge> <Morj> Ah mince
18:14:38 <dminuoso> Also whats really nice about flatparse is that you can interleave it with IO or ST
18:14:54 <dminuoso> attoparsec cant, and with megaparsec its very painful.
18:15:29 <EvanR> nom-style?
18:16:23 <dminuoso> EvanR: unrecoverable failure and recoverable errors.
18:16:34 <dminuoso> (And some machinery to convert between one and another)
18:17:10 <dminuoso> The idea is that failure represent exceptions, and `error` represents some "backtrack" path in the parser tree.
18:17:32 __jmcantrell__ joins (~weechat@user/jmcantrell)
18:18:14 <dminuoso> So one of the most common primitives you end up using is
18:18:20 <dminuoso> cutting :: ParserT st e a -> e -> (e -> e -> e) -> ParserT st e a
18:19:26 <EvanR> -ing form of a verb means anything in particular here?
18:19:32 <dminuoso> Which essentially does "run the parser, propagate failure as an error e, or merge errors"
18:20:03 <dminuoso> There is also
18:20:07 <dminuoso> cut :: ParserT st e a -> e -> ParserT st e a
18:20:23 <dminuoso> And you can think of `cut` as similar to say prolog
18:20:27 <EvanR> but what is "nom"
18:20:34 <dminuoso> nom is a rust library for parsing
18:20:37 <EvanR> oh
18:21:44 <dminuoso> The really cool thing here is that error merge function in cutting.
18:21:53 <dminuoso> Which allows you to build up context when errors occur.
18:22:39 <dminuoso> For very rich error reporting, explaining the context (say to report surrounding text, or what it is you were trying to parse, or why you were trying to parse it in the first place)
18:22:57 <dminuoso> You can literally build up error context level by level this way.
18:23:13 todi joins (~todi@183.96.168.66)
18:23:18 <dminuoso> In any way you want by just supplying your own function `e -> e -> e`
18:23:49 <EvanR> bag of errors
18:25:13 <monochrom> That is very neat.
18:27:47 dsrt^ joins (ceuasyyyl@c-71-199-187-173.hsd1.ga.comcast.net)
18:28:27 alethkit is now known as Putin
18:28:40 Putin is now known as alethkit
18:30:19 <haskellbridge> <Liamzee> here's a problem i have, basically, let's say, i want to pass configs to a library
18:30:58 <EvanR> reflection
18:31:02 <haskellbridge> <Liamzee> i mean tbh i could do it via TH
18:31:03 EvanR hides
18:31:45 j1n37- joins (~j1n37@user/j1n37)
18:31:58 × j1n37 quits (~j1n37@user/j1n37) (Ping timeout: 252 seconds)
18:32:08 <haskellbridge> <Liamzee> reflection?
18:32:11 × wootehfoot quits (~wootehfoo@user/wootehfoot) (Read error: Connection reset by peer)
18:32:30 <EvanR> I guess that trick has become forgotten lore
18:32:39 <haskellbridge> <Liamzee> the user wants to plug in two things, database settings, including a login, possibly from a config file
18:33:30 <haskellbridge> <Liamzee> i mean since the mutability is intended as one-time, and it's IO anyways, it's not like I can't tell people to IORef it
18:33:51 <haskellbridge> <Liamzee> but that's smelly
18:34:17 <EvanR> taking literally what you're saying, the requirement of passing in settings and a login to a thing, that is literally just a function
18:34:22 <haskellbridge> <Liamzee> i feel like ocaml functors might solve this problem
18:34:23 <haskellbridge> <sm> what's wrong with passing arguments ?
18:34:33 <EvanR> pass it as a normal argument
18:34:36 <haskellbridge> <Liamzee> verbose and error prone, no?
18:34:39 <EvanR> so there's gotta be some unspoken complication
18:35:05 <haskellbridge> <sm> I would say it's the simplest and least error prone, and you can reduce verbosity by bundling args into larger values
18:35:39 <EvanR> perhaps the implicitness is that your library returns some kind of state that needs to be returned to it to do anything else
18:35:52 <EvanR> and passing any other state would be broken
18:36:07 <haskellbridge> <sm> it's not always the most convenient, but when it's inconvenient it's forcing you to clarify your program's data flows
18:36:20 <EvanR> so I don't think the problem description was very good
18:37:09 <haskellbridge> <Liamzee> i'm just trying to do that bad idea, hasql login backend as a library
18:37:40 <haskellbridge> <Liamzee> right now, i need database settings, as well as settings for what tablenames you want and potentially field names
18:37:49 <haskellbridge> <Liamzee> then you feed it passwords, hashes, usernames, emails, etc
18:37:56 <haskellbridge> <Liamzee> you see why i want to pack a config instead?
18:38:04 <EvanR> so pass in a config
18:38:10 <haskellbridge> <Liamzee> fully expanded, it's like 16 arguments
18:38:12 <EvanR> no reason to do that via IO refs
18:38:18 <haskellbridge> <Liamzee> the config is mutable so i feel like it's ick
18:38:25 <EvanR> why is the config mutable
18:38:33 <haskellbridge> <Liamzee> spiritually mutable
18:38:37 <EvanR> that makes no sense
18:38:44 <haskellbridge> <Liamzee> if you expose the constructors to the config record, you can mutate it
18:38:52 <haskellbridge> <Liamzee> well, change it
18:39:05 <hellwolf> :quote spiritually mutable - Liamzu
18:39:07 <haskellbridge> <Liamzee> that is giving me an anxiety attack
18:39:09 <EvanR> why are you passing the config in more than 1 time
18:39:37 <haskellbridge> <Liamzee> to avoid creating a global constant?
18:39:38 <haskellbridge> <sm> do the simplest thing that could possibly work, and iterate. I don't think you'll need anything fancy in the end
18:39:52 <EvanR> you're making no sense
18:39:55 <haskellbridge> <Liamzee> yeah, okay, i should finish the hardcoded table settings version
18:40:03 <hellwolf> @quote spiritually mutable - Liamzu
18:40:03 <lambdabot> No quotes for this person. It can only be attributed to human error.
18:40:06 <haskellbridge> <Liamzee> then figure out what to do with mutable configs
18:40:33 <EvanR> "global constants" "mutable configs" "IOrefs" but not talking about the actual problem to be solved
18:40:49 <EvanR> while without any information we just say "function argument"
18:40:58 <EvanR> and it gets rejected mysteriously
18:41:46 <haskellbridge> <Liamzee> it's already done with function arguments, the version that was going to be mutable until i realized hasql doesn't come with sanitizers
18:41:57 <haskellbridge> <Liamzee> was going to take in records containing the config
18:42:16 <monochrom> If you call it "config" not "state", I don't see why someone wants it mutable, or why someone wants it mutable frequently enough that an immutable record is unacceptable.
18:42:17 <EvanR> what is "it" that is already done
18:42:18 <haskellbridge> <Liamzee> the problem is that it feels ugly to input the config and settings each time
18:42:29 <haskellbridge> <Liamzee> so the answer is readerT?
18:42:42 <EvanR> to what question
18:43:08 <haskellbridge> <sm> my answer is 👉 https://wiki.c2.com/?DoTheSimplestThingThatCouldPossiblyWork 👈
18:43:13 <haskellbridge> <Liamzee> to not wanting to pass in an ugly config every time the function is called, or making a top-level partial application of the function
18:43:29 <EvanR> that's an opinion about an answer to the unknown question
18:43:40 <monochrom> Why is config ugly? Unless your app is ugly in the first place.
18:43:43 <EvanR> you might as well give your feelings about 42
18:44:02 <hellwolf> there is always a GHC extensions for you: https://ghc.gitlab.haskell.org/ghc/doc/users_guide/exts/implicit_parameters.html
18:44:02 <monochrom> Oh 42 is totally ugly. :)
18:44:11 <monochrom> 43 is a beautiful prime.
18:44:13 <haskellbridge> <Liamzee> monochrom the pessimist
18:44:16 <haskellbridge> <Liamzee> oh
18:44:17 <hellwolf> I am not a "fan" of it, because I don't understand why its needed.
18:44:32 <hellwolf> but I knew of it and people using it for a yet another kind of effect system.
18:44:36 <EvanR> reflection and implicit parameters and ReaderT and ... and ... are all forms of "pass in an argument"
18:44:40 × chele quits (~chele@user/chele) (Remote host closed the connection)
18:44:46 <hellwolf> yea, transformers
18:44:53 <hellwolf> maybe you need a ConfigT
18:44:56 <hellwolf> that'd make you happy?
18:45:01 <haskellbridge> <Liamzee> fyi, the level of library simplicity i want is to be able to use a single 🍅 emoji to call the database accessor functions
18:45:08 <EvanR> Config -> IO ()
18:45:10 <haskellbridge> <sm> if you want to go straight to https://academy.fpblock.com/blog/2017/06/readert-design-pattern you can
18:45:14 <monochrom> So far I have only needed implicit param for HasCallStack. That one looks like a good use case. But yeah I haven't seen another good use case.
18:45:45 <hellwolf> oh, you can use implicit param for HasCallStack?
18:45:59 <EvanR> so you want to somehow avoid passing in the database connection everywhere
18:46:12 <hellwolf> CC @sm who recently mentioned some pay related to HasCallStack
18:46:20 <monochrom> I mean that HasCallStack is implemented as an implicit param.
18:46:23 <haskellbridge> <Liamzee> he's already here
18:46:36 <hellwolf> is he spiritually here?
18:46:50 haskellbridge sm contemplates
18:47:22 <hellwolf> "05-02 21:46 [haskellbridge sm contemplates]" <-- if someone is named "is" that'd be a funny IRC message.
18:47:30 <haskellbridge> <Liamzee> you know what
18:47:34 <haskellbridge> <Liamzee> IVar
18:47:40 <monochrom> type HasCallStack = ?callStack :: CallStack
18:47:52 <haskellbridge> <Liamzee> initialize the functions by calling a function calling an ivar
18:47:57 <haskellbridge> <Liamzee> writing to an ivar
18:48:05 <haskellbridge> <Liamzee> that loads the config
18:48:08 <EvanR> IVar is good when you have a value that is not yet known and your evaluation can wait
18:48:11 <haskellbridge> <Liamzee> the ivar is global scoped in the library
18:48:20 <EvanR> ...
18:48:24 <monochrom> i.e., if you write "foo :: HasCallStack => ()" it becomes "foo :: ?callStack :: CallStack => Int" so the stack is an implicit param.
18:48:40 <EvanR> global variables are bad mkay
18:48:49 bilegeek joins (~bilegeek@2600:1008:b01d:f38b:e9d6:efbc:7794:17cd)
18:48:51 <haskellbridge> <Liamzee> hummm, crap, this is unsafePerformIO shenanigans
18:49:03 <haskellbridge> <sm> implicit params hurt my brain. They feel like arguments by another name
18:49:10 <EvanR> they are
18:49:11 <monochrom> Yeah IVar does not relieve you from unsafePerformIO.
18:49:28 <monochrom> Only parameter passing can relieve you from unsafePerformIO.
18:49:47 <haskellbridge> <Liamzee> only unsafePerformIO can relieve me from parameter passing?
18:49:56 <haskellbridge> <Liamzee> although tbh I feel like doing it because it's transgressive and i'm an edgelord
18:49:56 <monochrom> That is also true.
18:50:02 <EvanR> your library actions need to know which connection to use
18:50:04 <hellwolf> you need to go to a ayahuasca session and puke all your imperative toxic out.
18:50:11 <haskellbridge> <loonycyborg> unsafePerformIO is ok if you can prove that it always actually returns the same thing
18:50:34 <EvanR> which it doesn't in the case of global refs
18:50:43 <EvanR> which is why it's tricky
18:50:59 <haskellbridge> <Liamzee> {-# NOINLINE liamIsGoingToHell #-}
18:51:15 <EvanR> I feel like you're trolling the channel now
18:51:41 <hellwolf> it's friday
18:52:12 <haskellbridge> <loonycyborg> I think it would be acceptable to access global constants, but not variables.
18:52:16 × weary-traveler quits (~user@user/user363627) (Remote host closed the connection)
18:52:16 <EvanR> a more object oriented way to do this is when you connect to the database, it returns to you a record of database accessing routines which close over the connection
18:52:23 <monochrom> It's basic information theory. If a procedure knows which filename to open, there are only one of 3 reasons: It knows from the source code, it knows from an argument, it knows from I/O, it knows from the black market.
18:52:25 <haskellbridge> <sm> wait, isn't HasCallStack a type constraint, not an implicit parameter, monochrom ? https://www.stackage.org/haddock/lts-20.20/base-4.16.4.0/GHC-Exception.html#t:CallStack
18:52:40 <monochrom> I can't count. s/3/4/
18:52:57 <haskellbridge> <sm> loonycyborg I use it for accessing low level command line flags like --color and --debug
18:53:13 <monochrom> Do you accept: A type constraint that describes an implicit param?
18:53:42 <EvanR> that's also where reflection comes up stuff like the global config you don't want to pass around (this is different from "a database connection I got later")
18:54:02 <haskellbridge> <sm> ah: "The intrepid user may notice that HasCallStack is just an alias for an implicit parameter ?callStack :: CallStack. This is an implementation detail and should not be considered part of the CallStack API, we may decide to change the implementation in the future."
18:54:06 <monochrom> All implicit params are specified by constraints, i.e., at the same place as class constraints. foo :: (?x :: X, Num a) => a
18:54:32 <haskellbridge> <loonycyborg> implicit params aren't too popular afaik
18:55:14 <haskellbridge> <Liamzee> the interface I want is just createUser username password email, okay?
18:55:38 <EvanR> and how does it know what database in the world to do that on
18:55:41 <haskellbridge> <Liamzee> so how do I guarantee this on the library side
18:55:56 <haskellbridge> <Liamzee> the iVar unsafePerformIO solution works
18:56:18 <EvanR> to access another database you need to close the program and reopen?
18:56:48 <haskellbridge> <Liamzee> or you use a different set of variables
18:56:49 Tuplanolla joins (~Tuplanoll@91-159-69-59.elisa-laajakaista.fi)
18:56:51 <haskellbridge> <Liamzee> erm, functions
18:56:58 <haskellbridge> <Liamzee> you can wrap normal parameter-based functions
18:57:11 <haskellbridge> <Liamzee> and have a convenience set based around an unsafeperformIO-ed ivar somewhere
18:57:12 <EvanR> there's only ever 1 IVar because you made it global
18:57:29 <haskellbridge> <Liamzee> and the convenience set calls the normal parameter based functions
18:57:30 <haskellbridge> <loonycyborg> yes that's the inherent problem of global variables, that you can't easily generalize it to multiple of the same object
18:57:50 <haskellbridge> <Liamzee> using readIVar to get the data once the IVAR has been set by the user
18:57:51 <haskellbridge> <Liamzee> ugh
18:58:03 <monochrom> I am fine with unsafePerfomIO (newIORef foo) tbh. Look, stdin :: Handle is already an example. It can be legitimate.
18:58:04 <EvanR> having tried to "take a shortcut" and use globals in haskell for things, ime it always turns out terrible
18:58:05 <haskellbridge> <Liamzee> maybe i'll just do it normally with parameter passing, and leave the ivar nutjobbery as a secondary lib
18:58:16 × tolgo quits (~Thunderbi@199.115.144.130) (Ping timeout: 265 seconds)
18:58:17 <EvanR> it always makes things works, (ime)
18:58:22 <haskellbridge> <loonycyborg> it's kinda nice that haskell is so hostile to global variables, so it actually forces you to be more general than you could get away with in C
18:58:24 <haskellbridge> <Liamzee> Geta.Login.IVarNutJobbery
18:58:26 <haskellbridge> <Liamzee> the name sells itself
19:00:04 × caconym7 quits (~caconym@user/caconym) (Quit: bye)
19:00:26 <monochrom> Oh yeah the C/Unix world had to suffer a transition in the DNS library from "settings are in a global var" to "oh sh*t not thread-safe, every function has to be changed to take one more argument".
19:00:43 caconym7 joins (~caconym@user/caconym)
19:00:53 <hellwolf> I am wondering with ghc-wasm, how you expose nowadays anything to javascript runtime from haskell wasm runtime; I had to use some global ref and unsafePerformanceIO
19:01:09 <hellwolf> maybe now it has its own mechanism. (I was only doing experiment, so not serious dabbling with it)
19:01:37 <monochrom> Likewise for the PRNG library, and a few others.
19:01:47 <hellwolf> Global is a implicit parameter to those languages
19:01:55 <hellwolf> Global.xxx
19:02:00 <monochrom> And oh errno was a lot of fun, too.
19:02:05 <hellwolf> like, in javascript, it's called "window"
19:02:26 <haskellbridge> <Liamzee> thanks monochrom for not blowing up at me for wanting to try heretic haskell
19:02:53 <EvanR> in electrician speak, "you need to get shocked at least once"
19:03:13 <hellwolf> I thought it was at most once
19:03:26 <haskellbridge> <Liamzee> that said, it does make me wonder if it's possible to use the type system to ensure that the codebase uses the loader for the ivar exactly once in an executed codepath
19:03:28 × tromp quits (~textual@2001:1c00:3487:1b00:31c9:5f27:18bf:4d4e) (Quit: My iMac has gone to sleep. ZZZzzz…)
19:03:34 <monochrom> It had to transition from "simply `extern int errno;`" to "it is now an elaborate macro that accesses a thread-local store, so please please please #include <errno.h> and not write your own `extern int errno;` because it no longer works"
19:03:51 <EvanR> use the IVar exactly once?
19:04:25 <haskellbridge> <loonycyborg> like with linear haskell? :P
19:04:33 <monochrom> Oh exactly once? That's linear type then!
19:04:36 <haskellbridge> <Liamzee> use the loader
19:04:46 <EvanR> (it can be treated like a normal value, why would you care if someone looks at it more than once)
19:04:46 <haskellbridge> <Liamzee> no, but that means you can only use it in linear types, no?
19:05:08 <haskellbridge> <Liamzee> making it idiot proof
19:05:09 <haskellbridge> <loonycyborg> in haskel there's no linear types
19:05:12 <monochrom> But linear type requires an argument so you are back to not making it global.
19:05:15 <haskellbridge> <loonycyborg> only linear arrows
19:05:29 <haskellbridge> <Liamzee> sorry, thanks for the help
19:09:19 <haskellbridge> <loonycyborg> can you combine linear haskell with implicit params?
19:09:19 <haskellbridge> <Liamzee> the underlying logic, evanr, is that everyone told me that it's a bad idea to try to create backend libraries automating common backend tasks, and tomsmeding said it's an idea that seems good to people who've written 1-2 crud programs but seems silly to people who've written 10, so the target would be people who've written 1-2 crud programs, hence the desire both for simplicity and idiot-proofing
19:10:48 <EvanR> why is web programming assuming everybody is an idiot
19:11:13 <tomsmeding> the fact that it does, does enable many idiots to write programs that are useful to them
19:11:20 <tomsmeding> whether they are also useful to others is perhaps questionable
19:11:21 <monochrom> I know why driver exams assume that everybody is an idiot.
19:11:23 <tomsmeding> them being idiots
19:11:41 <haskellbridge> <sm> Liamzee I like simple beginner friendly idiot friendly libs, even if they're only for learning. Why not write down the api, that will clarify things
19:11:47 <EvanR> a license to write web apps does sound sensible
19:12:04 <monochrom> Hey I also know why car insurance companies assume that even those who passed driver exams are still idiots. >:)
19:12:17 <haskellbridge> <loonycyborg> driving is serious thing, you can actually die if you mess up
19:12:20 <EvanR> do not give anyone web app insurance ideas
19:12:35 <haskellbridge> <loonycyborg> programmning is somewhat more forgiving
19:12:58 <haskellbridge> <sm> most programming
19:13:01 <EvanR> if you mess up programming you get bot nets and stolen identity
19:13:01 marinelli joins (~weechat@gateway/tor-sasl/marinelli)
19:13:05 <monochrom> Oh I'm sure insurances companies have actually thought about web dev and concluded "nah we'll lose money".
19:13:08 <EvanR> without being alerted
19:13:23 <monochrom> or rather s/we'll/we'd/ # I hate English
19:13:25 <tomsmeding> lol, monochrom
19:13:32 <int-e> EvanR: dead patients, crashing airplanes
19:14:05 <tomsmeding> there's a difference, though, between "programming" and "using code written by others in a product where correct functioning is vital"
19:14:32 × bilegeek quits (~bilegeek@2600:1008:b01d:f38b:e9d6:efbc:7794:17cd) (Remote host closed the connection)
19:14:35 <tomsmeding> I would not be surprised if being a software engineer on a team for constructing an airplane needs certain certifications. And personally I'd not trust the certifications very much either.
19:14:52 <haskellbridge> <Liamzee> loonycyborg: knight capital
19:14:52 <tomsmeding> I don't think it's a good idea to require certification before being allowed to touch a compiler
19:15:37 <hellwolf> inspector crusoe asking for a proper license.
19:15:42 <tomsmeding> unless your goal is to ensure job security for those who already know programming, that is -- because by doing so, you'll lose 80% of the people interested in programming. :)
19:16:03 <haskellbridge> <Liamzee> https://en.wikipedia.org/wiki/Knight_Capital_Group
19:16:27 × marinelli quits (~weechat@gateway/tor-sasl/marinelli) (Client Quit)
19:16:52 <EvanR> you're right, might as well put the plane's avionics in a browser and save some money on developers, but in this case I think web dev should stop assuming idiots
19:16:57 marinelli joins (~weechat@gateway/tor-sasl/marinelli)
19:17:15 <tomsmeding> EvanR: who said "put the plane's avionics in a browser"?
19:17:32 <int-e> . o O ( electron app )
19:17:43 <haskellbridge> <Liamzee> IIRC the F-35 was supposed to have cut costs by moving from Ada, the defense industry standard semi-safe programming language, to commercial languages like C++
19:18:09 <int-e> EvanR: surely not all web development assumes that
19:18:17 <tomsmeding> int-e: part of "knowing what you're doing", to me, is knowing what benefits and downsides certain tools bring. Electron brings benefits in certain domains, but not in this one. :p
19:18:27 <tomsmeding> (I know you do too)
19:18:35 <EvanR> I hope not. And don't call me shirley
19:18:44 <int-e> but if, when writing, you want to capture the biggest imaginable audience, then you have to go for the idiots
19:19:18 <int-e> and then consider making it audiovisual instead of text
19:19:31 <tomsmeding> also, what are we arguing about here, exactly? :p
19:19:37 <tomsmeding> what's the problem with some people writing for idiots?
19:19:43 <int-e> I'm not sure.
19:19:45 <tomsmeding> just don't read their text!
19:19:59 <tomsmeding> (assuming you're not an idiot, that is)
19:20:00 × otto_s quits (~user@p4ff270d6.dip0.t-ipconnect.de) (Ping timeout: 252 seconds)
19:20:04 <haskellbridge> <Liamzee> int-e: I've considered making an emoji interface
19:20:09 <int-e> I /think/ it's that it's hard to find documentation that isn't either a pure reference or targeted at idiots
19:20:17 <int-e> but maybe I'm misinterpreting the context
19:20:21 × j1n37- quits (~j1n37@user/j1n37) (Ping timeout: 248 seconds)
19:20:21 <tomsmeding> right
19:20:40 j1n37 joins (~j1n37@user/j1n37)
19:20:56 <tomsmeding> I think mdn is usually fair, though it's certainly very referency sometimes
19:23:31 peterbecich joins (~Thunderbi@syn-047-229-123-186.res.spectrum.com)
19:26:31 <monochrom> The context is how to design a library API that is both safe for inexperienced people and convenient. Current the tension between them is, for example, a hidden global var under the hood is more convenient because fewer arguments to set up and pass, but then you can't use linear haskell to ensure certain uniqueness.
19:27:58 <tomsmeding> thank you monochrom for allowing us to be lazy and not read scrollback
19:28:07 <dminuoso> 19:14:35 tomsmeding │ I would not be surprised if being a software engineer on a team for constructing an airplane needs certain certifications. And personally I'd not trust the certifications very much either.
19:28:11 <dminuoso> I can talk from experience here:
19:28:15 <dminuoso> You dont.
19:28:19 <monochrom> <-- Generatvie AI >:)
19:28:47 <tomsmeding> dminuoso: as in, you don't need certifications?
19:28:53 <dminuoso> Correct.
19:29:05 <tomsmeding> persumably the company has some internal standards for abilities of their software engineers, though
19:29:13 × j1n37 quits (~j1n37@user/j1n37) (Read error: Connection reset by peer)
19:29:16 <monochrom> Oh derp I wrote in my course policy "don't use generative AI". I should have said "don't use generative AI except me". >:)
19:29:22 <dminuoso> tomsmeding: Yes, just like any other companies.
19:29:36 <dminuoso> Some have better standards, others have the front of the ship fall off.
19:29:41 <tomsmeding> then all comes down to what those standards are. :)
19:30:21 <tomsmeding> on the one hand, it's worrying that no such certifications are required; on the other hand, I'm not sure the certifications would really have much signal anyway
19:30:24 rvalue- joins (~rvalue@user/rvalue)
19:30:25 <dminuoso> That said, the actual products undergo very strict ceritification tests (whether those are physical or software products)
19:30:37 <tomsmeding> right
19:30:51 <haskellbridge> <Liamzee> i'm curious, though, why isn't there more literature on how to design library APIs in Haskell?
19:30:59 <monochrom> I'm under the impression that ISO 9001 is all you need and all the buzz. >:)
19:31:13 × rvalue quits (~rvalue@user/rvalue) (Ping timeout: 268 seconds)
19:31:25 <tomsmeding> Liamzee: is there literature on how to design library APIs in other languages?
19:31:33 <monochrom> People are too busy writing software to write books?
19:31:54 <monochrom> Either that or not enough money to make from writing books.
19:31:57 <haskellbridge> <Liamzee> JS
19:31:59 <haskellbridge> <Liamzee> https://staltz.com/api-design-tips-for-libraries
19:33:00 <monochrom> You know how Ian Stewart make enough money to buy a luxurious house in a luxurious neighbourhood by just writing a calculus textbook that's inflicted on everybody?
19:33:01 <tomsmeding> just skimming the headings (sorry), that sounds generalisable
19:33:16 <monochrom> One can't say that for Haskell book authors. Not remotely close.
19:33:22 <haskellbridge> <Liamzee> James Stewart, I think
19:33:31 <monochrom> Oops yeah.
19:33:45 <dminuoso> tomsmeding: That said, I was able to do work that ended on aircraft without having any type of credentials.
19:33:54 <monochrom> BTW it's neighbourhood with "u" because it's Toronto Canada. >:)
19:34:00 <tomsmeding> dminuoso: cool! :)
19:34:06 <dminuoso> And given the average quality of some universities that hand out compsci degrees Im not sure that means anything.
19:34:23 j1n37 joins (~j1n37@user/j1n37)
19:35:24 <dminuoso> Meaning, holding a M.Sc does not by itself carry any meaning whether you are useful or not.
19:35:35 <tomsmeding> agreed
19:36:07 <tomsmeding> I think standardised certifications for the abilities of _people_ are either very expensive or low-signal
19:36:46 <dminuoso> Well, I think for starters we lack the necessary feedback loops to create incentives for training people the right way.
19:36:46 <geekosaur> or both 😈
19:37:00 <haskellbridge> <sm> dminuoso which part of the aircraft was it for ?
19:37:09 <dminuoso> If my code causes aircraft to fall out of the sky, I will not be liable in any way.
19:37:32 <tomsmeding> is that because someone else in the company would be, instead?
19:37:41 <dminuoso> But if I do some gross mistakes when designing a bridge, some legislations allow for criminal charges.
19:37:58 <dminuoso> Nobody has ever gone to prison for faulty software, irrespective of how many people died.
19:38:20 <dminuoso> You can always blame it on the software and mitigate the PR disaster, it is amazing.
19:38:20 tromp joins (~textual@2001:1c00:3487:1b00:31c9:5f27:18bf:4d4e)
19:38:32 <dminuoso> "Its the software!"
19:38:43 <tomsmeding> "Well who made that software?!"
19:38:57 rvalue- is now known as rvalue
19:38:57 <dminuoso> Does not matter. Look at crowdstrike.
19:39:11 <tomsmeding> oh but that's big corporate taking services from other big corporate
19:39:28 <tomsmeding> money and interpersonal relations are more important than services rendered or product quality
19:39:54 × peterbecich quits (~Thunderbi@syn-047-229-123-186.res.spectrum.com) (Quit: peterbecich)
19:40:02 <tomsmeding> oh, and being table to tick something off a checklist
19:40:06 <tomsmeding> *able, not table
19:40:12 <monochrom> It's why I still refuse to say "software engineers". If you are not liable to go to prison, you are not an engineer.
19:40:13 peterbecich joins (~Thunderbi@syn-047-229-123-186.res.spectrum.com)
19:40:28 <monochrom> Because all other engineers are.
19:40:48 <dminuoso> Fun fact, in Germany it is illegal to call yourself Softwareingenieur without a degree in mechanical engineering.
19:41:04 <dminuoso> (The job title "ingenieur" is protected by law)
19:41:18 <tomsmeding> however much you think there should be a feedback loop, I find it somewhat awkward to send an engineer (any engineer) to _prison_ for faulty engineering -- assuming the faulty engineering was unintentional
19:41:35 <tomsmeding> prison is for intentionally committed crimes, not for incompetence
19:41:44 <dminuoso> tomsmeding: Sure, lawmakers have notions like gross negligence for that.
19:41:48 <haskellbridge> <Liamzee> "criminal negligence"
19:41:53 <tomsmeding> right
19:42:18 <monochrom> Well there is this notion of crimincal negligence. But we can debate why we need it.
19:43:17 sprotte24 joins (~sprotte24@p200300d16f0dd100892d07af958b891b.dip0.t-ipconnect.de)
19:43:52 <monochrom> There is also manslaughter.
19:44:08 <dminuoso> Software has led us up to a point of time, where cars are driving autonomously with software, provoke an accident and a split second before impact they turn off their autopilot so legally you were driving with AP off.
19:44:20 <monochrom> Yikes
19:44:20 <dminuoso> End-stage capitalism. :-)
19:44:46 × peterbecich quits (~Thunderbi@syn-047-229-123-186.res.spectrum.com) (Ping timeout: 268 seconds)
19:45:26 <monochrom> But end-stage? We'll see about that. :)
19:46:11 <monochrom> There is still a chance that people can evolve and carry on because they learned to either not buy AP or not buy cars at all.
19:47:01 <monochrom> Alternatively all of humanity die from those car accidents, then it is the highly automated frequent trading machines that will carry on capitalism!
19:47:42 <dminuoso> I've read opinions comparing the situation to that of aviation, where autonomous driving enables rolling out changes to improve safety across all drivers.
19:47:53 remedan_ joins (~remedan@ip-62-245-108-153.bb.vodafone.cz)
19:48:25 <monochrom> You know, they said that about CPU firmware too...
19:48:38 <dminuoso> :-)
19:49:09 × remedan quits (~remedan@ip-62-245-108-153.bb.vodafone.cz) (Ping timeout: 276 seconds)
19:49:58 <dminuoso> In aviation this works because any single incident can and often does lead to mandated (!) changes.
19:50:10 <dminuoso> But it is not software that enabled it, but the fact that those changes were mandated.
19:50:17 michalz joins (~michalz@185.246.207.203)
19:50:36 <EvanR> except helicopters
19:50:44 <EvanR> accidents keep leading to no changes
19:50:49 <dminuoso> What do you mean?
19:51:30 <EvanR> people just accept the risk with helicopter flights
19:51:41 × jespada quits (~jespada@r179-25-202-180.dialup.adsl.anteldata.net.uy) (Quit: My Mac has gone to sleep. ZZZzzz…)
19:52:37 jespada joins (~jespada@r179-25-202-180.dialup.adsl.anteldata.net.uy)
19:52:44 j1n37- joins (~j1n37@user/j1n37)
19:53:00 × remedan_ quits (~remedan@ip-62-245-108-153.bb.vodafone.cz) (Ping timeout: 252 seconds)
19:53:22 × j1n37 quits (~j1n37@user/j1n37) (Ping timeout: 252 seconds)
19:54:44 <dminuoso> Given that its the same regulation bodies, I find the characterization somewhat unlikely
19:55:13 <dminuoso> It is just that commercial helicopters are rather rare.
19:58:59 m15k47on1c joins (~m15k47on1@user/m15k47on1c)
19:59:13 <dminuoso> EvanR: Ill dig up some numbers but last I checked helicopters have about 1/10th of the chance for fatal or non-fatal accidents per 100,000 flight hours.
19:59:27 <dminuoso> They are exceedingly safe.
20:00:18 <hellwolf> It kinda makes intuitive sense. I think most commercial jet crashes during taking off or landing? And helicopter has a much safer landing/taking off procedure?
20:00:22 <hellwolf> in comparison.
20:01:11 <hellwolf> pardon my sloppy english: most commercial jet crashes happen during....
20:01:17 <dminuoso> Sounds plausible. Helicopters - even with engine failure - are still very mobile and need only minimal space for an emergency landing.
20:02:05 <dminuoso> With an A320 you need 1.5km of runway...
20:02:06 <EvanR> I hope no one hears this and mistakes what you're saying that helicopters are much safer than commercial airliners
20:02:45 jcarpenter2 joins (~lol@2603:3016:1e01:b960:740e:a7b5:ac86:87b2)
20:03:40 <EvanR> when I try to look up stats, I get obvious AI generated articles
20:04:37 <dminuoso> EvanR: I have some good sources, but Im behind rubbish internet right now.
20:04:45 <EvanR> (used to work for a fake article site company, they're probably loving the AI craze right now)
20:04:52 <dminuoso> Will get back to you tomorrow on this. :)
20:05:35 remedan joins (~remedan@ip-62-245-108-153.bb.vodafone.cz)
20:06:21 × Googulator65 quits (~Googulato@2a01-036d-0106-4a24-1dc7-297e-fae3-e794.pool6.digikabel.hu) (Quit: Client closed)
20:06:32 <m15k47on1c> Is there any steam game written in haskell?
20:06:37 Googulator65 joins (~Googulato@2a01-036d-0106-4a24-1dc7-297e-fae3-e794.pool6.digikabel.hu)
20:06:43 <EvanR> yes
20:06:48 <EvanR> more than 1
20:07:01 <EvanR> (uhg. "steam game")
20:07:09 <dminuoso> At the same time, this way of "events lead to changes" is also what makes modern clean sheet designs nearly impossible, and it makes it difficult and expensive for new companies to emerge.
20:07:20 <m15k47on1c> Can you tell me their names?
20:07:35 <dminuoso> If you make an aircraft, you have these 724,012 things to address to prevent past mistakes.
20:07:48 <EvanR> defect process, is one
20:11:42 <haskellbridge> <sm> and https://store.steampowered.com/app/2495130/Pixelpusher is the other
20:12:41 <dminuoso> hellwolf: Come to think of it, I suspect the major reason to be the ability to autorotate
20:13:29 <dminuoso> Which means at any point in the flight, you can just abort and land where you want, even if both engines go out.
20:13:45 <dminuoso> With planes you are extremely limited.
20:14:39 <EvanR> there's a lot more on itch.io
20:15:15 <EvanR> like critically acclaimed peoplemon
20:17:15 peterbecich joins (~Thunderbi@syn-047-229-123-186.res.spectrum.com)
20:24:19 × michalz quits (~michalz@185.246.207.203) (Remote host closed the connection)
20:25:38 <haskellbridge> <sm> https://linearity.itch.io/peoplemon eh
20:26:41 <hellwolf> dminuoso: makes sense. both are established technology, so that should be less of a contributor. So, the innate property of the technology, the ones you just mentioned for instances, becomes a more important factor here.
20:28:38 <hellwolf> that's brainrot game
20:28:56 hellwolf have no idea what does brainrot mean. I just saw the word lately.
20:29:01 <EvanR> it's pure art is what it is
20:29:46 <EvanR> >I tried to write this game program a number of times. In the end, the only natural way to do it was writing it in Haskell...
20:30:23 <hellwolf> so, it was you that wrote it?
20:30:25 <EvanR> (quote taken completely out of context)
20:30:44 <hellwolf> oh, a quote
20:31:08 <haskellbridge> <sm> added to my games list.
20:31:50 <haskellbridge> <Liamzee> the humor isn't that dated on peoplemon
20:31:55 <haskellbridge> <sm> Peoplemon, Defect Process, Pixelpusher all have pretty good reviews, notably
20:32:10 <haskellbridge> <Liamzee> https://youtu.be/8na6mdQAv-0?t=525
20:32:17 <tomsmeding> the fact that it says "in Haskell using the Glasgow Haskell Compiler" already dates it
20:32:46 <hellwolf> is it finally the glorious haskell compiler now
20:33:17 <hellwolf> don't just add to your list. let's buy the game.
20:33:32 <tomsmeding> https://www.haskell.org/ghc/ says "Glasgow" still
20:33:54 <hellwolf> $ ghc --version
20:33:54 <hellwolf> The Glorious Glasgow Haskell Compilation System, version 9.10.1
20:33:59 <haskellbridge> <Liamzee> https://haskell-game.dev/games/peoplemon.html
20:34:00 <tomsmeding> gghc!
20:34:12 <haskellbridge> <Liamzee> that's the haskell game dev roster
20:34:32 <haskellbridge> <sm> by list, I meant https://joyful.com/Haskell+games#What%20are%20some%20notable%20Haskell%20games
20:34:32 <haskellbridge> I did buy Magic Cookies and Defect Process at least, but don't have time for more games
20:35:02 <EvanR> oh yeah magic cookies
20:35:06 <hellwolf> I just paid bucks to the game. I am applying social pressure now to this grouo.
20:37:08 <haskellbridge> <Liamzee> honestly the other games on the roster look better
20:37:31 <EvanR> not a fan of people?
20:37:32 <haskellbridge> <Liamzee> https://haskell-game.dev/games/orboros.html
20:38:37 <haskellbridge> <Liamzee> Peoplemon's a bit raunch humor, and satire has a tendency to get old
20:40:01 <hellwolf> too bad, I can't run with NixOS what I just bought and downloaded. will just touch it with mouse cursor for now.
20:40:25 × traxex quits (traxex@user/traxex) (Ping timeout: 252 seconds)
20:41:19 alt-crns joins (~crns@p200300f1171e03c029e61908ecaeb223.dip0.t-ipconnect.de)
20:41:20 × crns quits (~crns@user/crns) (Read error: Connection reset by peer)
20:41:37 <EvanR> I tried to run it with dosbox and it didn't work either
20:41:45 <haskellbridge> <sm> Liamzee let us know what OrboROS is like if you play it
20:41:46 × peterbecich quits (~Thunderbi@syn-047-229-123-186.res.spectrum.com) (Ping timeout: 252 seconds)
20:42:19 <haskellbridge> <Liamzee> don't have time :(
20:42:30 <haskellbridge> <Liamzee> i still think that Haskell games seem better than Rust's
20:42:31 <haskellbridge> <sm> s/Liamzee/anyone/
20:44:29 <hellwolf> Ask your users to buy a bigger computer with more memory and faster CPU - An advise from a ex-C++ user
20:44:40 <haskellbridge> <sm> huh, more at https://haskell-game.dev/games.html I haven't seen
20:47:11 <hellwolf> Rust is anti-capitalistic movement, don't fix hardware manufacturers' sloppiness without them paying you. Use Haskell to get your mental sanity back and let hardware people fix the limitations :p
20:47:37 hellwolf certainly reached Friday peak. Duck now.
20:48:11 <m15k47on1c> Is there something close to SDL in Haskell? Pure haskell? No SDL bidings?
20:52:42 × takuan quits (~takuan@d8D86B601.access.telenet.be) (Remote host closed the connection)
20:53:28 peterbecich joins (~Thunderbi@syn-047-229-123-186.res.spectrum.com)
20:54:09 <haskellbridge> <sm> https://hackage.haskell.org/packages/search?terms=sdl
20:54:25 <haskellbridge> <sm> oh I see.. gloss, maybe
20:55:44 <int-e> What's the reason to avoid SDL or other C library bindings?
20:56:48 <haskellbridge> <Liamzee> sdl2 at least is broken in recent versions on windows, msys2
20:57:08 <haskellbridge> <Liamzee> msys2, unless you can find older versions, won't compile due to GHC on Windows not supporting stack protector
20:57:15 <haskellbridge> <Liamzee> erm, excuse me, sdl2
20:57:31 <haskellbridge> <Liamzee> you need the older msys2 package for sdl2 to compile as newer versions require stack protector
20:57:42 <haskellbridge> <sm> and what's the status / pureness of monomer ?
20:57:56 <haskellbridge> <Liamzee> monomer's on sdl2
20:58:11 <haskellbridge> <Liamzee> it runs on all platforms (i think) other than windows due to the stack protector issue
20:58:26 <int-e> monomer uses sdl2 as a dependency. gloss uses GLFW
20:58:52 <haskellbridge> <Liamzee> this version MIGht work, i haven't tested it as i no longer have a windows machine
20:58:54 <haskellbridge> <Liamzee> https://cygwin.com/packages/summary/mingw64-x86_64-SDL2-src.html
20:58:58 <EvanR> this is haskell, we don't require C libraries be rewritten in haskell before using them
21:00:31 <haskellbridge> <sm> m15k47on1c and there's FunGEn, based on opengl
21:00:40 <int-e> https://hackage.haskell.org/package/xhb is one thing I can readily think of that is very low-level windowing related but not binding an existing C library. what was that site for looking up reverse dependencies on hackage?
21:01:06 <haskellbridge> <Liamzee> evanr: I think the real reason I think Haskell games are better than Rust games is that Haskell games are, well, limited, and also the skills needed to make a Haskell game are relatively rare
21:01:09 <haskellbridge> <sm> it's built in to hackage now.. but https://packdeps.haskellers.com
21:01:24 <EvanR> that sounds like labor theory of game value
21:01:28 <haskellbridge> <Liamzee> so the games people do make seem to have had much more love than the Rust counterparts, quite a few on the Rust games list feel like someone was trying to spam an app store
21:01:41 × alt-crns quits (~crns@p200300f1171e03c029e61908ecaeb223.dip0.t-ipconnect.de) (Read error: Connection reset by peer)
21:01:46 <EvanR> the more work it took to make the game, get to the of being able to make the game the way they did, the better the game is?
21:01:53 <int-e> And FunGEn binds GLUT for window creation. It's almost as if nobody really wants to reimplement the low-level stuff when an existing C library already does it well enough :P
21:01:55 <EvanR> get to the point*
21:02:35 <haskellbridge> <Liamzee> i don't believe in LTOV either!
21:02:44 <int-e> (For OpenGL you have no choice anyway; the interface is a C API)
21:03:03 <EvanR> rewrite opengl in ~~rust~~ haskell!
21:03:06 <haskellbridge> <Liamzee> i'm just saying it's an expectations thing, it should be relatively more straightforward to make games in Rust
21:03:21 <EvanR> I don't see how you came to that conclusion
21:03:47 <EvanR> unless you maybe narrow down the scope of "game" which would easily exclude rust in the process
21:04:58 <int-e> sm: Built in, hmm. Oh there it is, just a bit hard to discover. https://hackage.haskell.org/package/xhb/reverse says that there are 2 reverse deps and then lists one called `robot`.
21:06:05 haskellbridge sm looked for a rust games list, found https://github.com/rust-unofficial/awesome-rust?tab=readme-ov-file#games and https://itch.io/games/made-with-rust
21:06:28 <int-e> In contrast, the X11 bindings have 37 reverse deps.
21:06:54 <EvanR> roguelike games, well met
21:09:50 × jespada quits (~jespada@r179-25-202-180.dialup.adsl.anteldata.net.uy) (Quit: My Mac has gone to sleep. ZZZzzz…)
21:11:51 <haskellbridge> <Liamzee> fine, how about this, haskell games just exceed expectations more than rust games
21:12:24 <haskellbridge> <Liamzee> haskell is more, i can't believe how polished it is, even if there's likely bugs somewhere or the gameplay is insipid, rust games, it's rust, isn't this supposed to be more amazing?
21:12:36 <EvanR> re expectations there was that talk by carmack where he said functional programming was the future
21:12:56 × nacation quits (~m-3l4s76@user/nacation) (Ping timeout: 252 seconds)
21:12:57 <EvanR> not borrow checking
21:13:43 <haskellbridge> <Liamzee> and yeah i guess the expectations aren't there anymore, i mean, godot bindings are old and possibly rusted
21:14:06 <EvanR> godot isn't really the kind of thing you bind to anyway, it's not a library (unfortunately, perhaps)
21:14:19 <haskellbridge> <Liamzee> spj et al didn't even try to blackmail tim sweeney for unreal bindings
21:15:10 <haskellbridge> <Liamzee> rust, on the other hand, i'm surprised people don't jam rustc with issues that "the compiler isn't generating my source code for me"
21:15:18 × __jmcantrell__ quits (~weechat@user/jmcantrell) (Ping timeout: 244 seconds)
21:15:48 <monochrom> How a language is used is 99% determined by networking effect seeded by random accidents, only 1% by the language itself.
21:16:14 <haskellbridge> <Liamzee> i guess it's just that my expectations are too high for rust, so Haskell can surpass expectations, Rust can fail to meet expectations, at least in game dev
21:16:16 nacation joins (~m-3l4s76@user/nacation)
21:16:49 × peterbecich quits (~Thunderbi@syn-047-229-123-186.res.spectrum.com) (Ping timeout: 276 seconds)
21:18:06 <EvanR> that article about architect of ruin moving away from rust (2 years ago) wasn't too surprising
21:18:33 <EvanR> and how their code shrank by a factor of 5 after rewriting it in a normal language
21:18:52 <monochrom> Which normal language did they choose?
21:18:56 <EvanR> C#
21:18:56 <haskellbridge> <sm> C#
21:19:09 <monochrom> I'm surprised at that.
21:19:31 <monochrom> C I can believe. C# is not less verbose than Rust.
21:19:41 <haskellbridge> <Liamzee> C# gave them Unity bindings
21:19:46 <haskellbridge> <Liamzee> https://deadmoney.gg/news/articles/migrating-away-from-rust
21:19:55 <haskellbridge> <sm> we discussed in #haskell-game:matrix.org (https://matrix.to/#/#haskell-game:matrix.org) recently.. here's the HN thread, it is quite interesting: https://news.ycombinator.com/item?id=43824640
21:19:56 <EvanR> the rust they demonstrated had a lot of lines of type signature
21:20:14 <EvanR> C# had less type signature (but also totally different framework)
21:21:21 <haskellbridge> <Liamzee> it's more, they lived on a Rust engine, the engine was immature, not to say the least about Rust borrow checker, they moved to a multi-billion dollar commercial C++ engine with C# bindings, they had a better time
21:22:40 <EvanR> the article has a more accurate assessment I think
21:24:18 <monochrom> I'm glad that GC is now acceptable, nay, preferred, in game dev! >:)
21:24:49 <monochrom> 10 years ago game devs scaremongered about "but Haskell uses GC, so no go".
21:26:06 <EvanR> I just today "fixed" my space engineers on linux by putting a magic XML line that switches from one GC to the other
21:26:14 <EvanR> so yeah
21:26:15 <monochrom> If C# is acceptable then Haskell should be even more so! We have better and more optional type sigs.
21:26:26 <hellwolf> I was trying to say: human should be more expensive than hardwares. Our mental health is more important than optimizing for machines. So, Haskell, please.
21:29:02 <xerox> something like https://i.imgflip.com/9spf4o.jpg
21:29:35 <monochrom> They like hand-optimizing things because they are easily nerd-sniped. There may also be some OCD involved.
21:29:55 <monochrom> haha xerox
21:30:15 <EvanR> gcc contains compilers for languages with gc, like java
21:30:36 <hellwolf> it's a exploitation of nerds!
21:30:43 <EvanR> so it stands for garbage collecting compiler
21:30:56 <hellwolf> Nerds be better off torturing themselves with lenses and parsecs
21:31:20 <hellwolf> for their own enjoyment, not others cheapness in investing in hardwares.
21:36:02 × m15k47on1c quits (~m15k47on1@user/m15k47on1c) (Ping timeout: 252 seconds)
21:40:43 m15k47on1c joins (~m15k47on1@189.62.151.15)
21:40:43 × m15k47on1c quits (~m15k47on1@189.62.151.15) (Changing host)
21:40:43 m15k47on1c joins (~m15k47on1@user/m15k47on1c)
21:42:34 <tcard> sm: Thank you! I did not know of that book yet. It is an HTML-only book with no source or publication date, which makes it an edge case. I just emailed the author to discuss.
21:47:30 ljdarj joins (~Thunderbi@user/ljdarj)
21:48:05 ljdarj1 joins (~Thunderbi@user/ljdarj)
21:49:34 peterbecich joins (~Thunderbi@syn-047-229-123-186.res.spectrum.com)
21:51:41 × ljdarj quits (~Thunderbi@user/ljdarj) (Ping timeout: 244 seconds)
21:51:41 ljdarj1 is now known as ljdarj
22:03:36 crns joins (~crns@user/crns)
22:15:37 j1n37 joins (~j1n37@user/j1n37)
22:16:04 × j1n37- quits (~j1n37@user/j1n37) (Ping timeout: 260 seconds)
22:19:14 JuanDaugherty joins (~juan@user/JuanDaugherty)
22:21:30 × Typedfern quits (~Typedfern@135.red-83-37-43.dynamicip.rima-tde.net) (Ping timeout: 252 seconds)
22:25:02 <haskellbridge> <loonycyborg> IMO too many games use C# now, kinda discourages me from modding because I hate C#
22:25:29 <haskellbridge> <loonycyborg> I think Haskell would be nice not for implementation but for scenario scripting
22:27:18 <haskellbridge> <loonycyborg> right now most of the more plot heavy games have pretty janky scripts, when you play it's mostly about wrestling with scripting bugs
22:27:22 <haskellbridge> <loonycyborg> kinda breaks immersion
22:27:43 <haskellbridge> <loonycyborg> I bet more abstract language like Haskell could make things more tractable
22:45:30 Typedfern joins (~Typedfern@135.red-83-37-43.dynamicip.rima-tde.net)
22:47:28 × peterbecich quits (~Thunderbi@syn-047-229-123-186.res.spectrum.com) (Ping timeout: 252 seconds)
22:49:22 <JuanDaugherty> loonycyborg, checkout games, gameengine at hackage
22:49:56 <JuanDaugherty> and game which i didn think hs had
22:54:01 × tromp quits (~textual@2001:1c00:3487:1b00:31c9:5f27:18bf:4d4e) (Quit: My iMac has gone to sleep. ZZZzzz…)
23:00:37 __jmcantrell__ joins (~weechat@user/jmcantrell)
23:00:43 ljdarj1 joins (~Thunderbi@user/ljdarj)
23:04:01 × ljdarj quits (~Thunderbi@user/ljdarj) (Ping timeout: 244 seconds)
23:04:01 ljdarj1 is now known as ljdarj
23:07:03 × Googulator65 quits (~Googulato@2a01-036d-0106-4a24-1dc7-297e-fae3-e794.pool6.digikabel.hu) (Quit: Client closed)
23:07:20 Googulator65 joins (~Googulato@2a01-036d-0106-4a24-1dc7-297e-fae3-e794.pool6.digikabel.hu)
23:08:48 × __jmcantrell__ quits (~weechat@user/jmcantrell) (Ping timeout: 252 seconds)
23:17:40 <haskellbridge> <loonycyborg> It has lambdahack, I totally expected nethack-like on haskell to exist :P
23:29:36 traxex joins (traxex@user/traxex)
23:30:33 peterbecich joins (~Thunderbi@syn-047-229-123-186.res.spectrum.com)
23:31:24 × chiselfuse quits (~chiselfus@user/chiselfuse) (Ping timeout: 264 seconds)
23:31:35 × acidjnk_new quits (~acidjnk@p200300d6e71c4f97b8ab1cde68040873.dip0.t-ipconnect.de) (Ping timeout: 272 seconds)
23:34:32 Googulator77 joins (~Googulato@2a01-036d-0106-4a24-1dc7-297e-fae3-e794.pool6.digikabel.hu)
23:35:53 × Googulator65 quits (~Googulato@2a01-036d-0106-4a24-1dc7-297e-fae3-e794.pool6.digikabel.hu) (Quit: Client closed)
23:39:19 notdabs joins (~Owner@2600:1700:69cf:9000:ad70:ecef:1fea:272)
23:45:38 × Tuplanolla quits (~Tuplanoll@91-159-69-59.elisa-laajakaista.fi) (Quit: Leaving.)
23:48:39 × ZLima12 quits (~zlima12@user/meow/ZLima12) (Remote host closed the connection)
23:49:48 ZLima12 joins (~zlima12@user/meow/ZLima12)
23:50:40 __jmcantrell__ joins (~weechat@user/jmcantrell)

All times are in UTC on 2025-05-02.