Home liberachat/#haskell: Logs Calendar

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

00:06:26 × euleritian quits (~euleritia@ip2504e858.dynamic.kabel-deutschland.de) (Ping timeout: 252 seconds)
00:06:47 euleritian joins (~euleritia@dynamic-176-000-054-143.176.0.pool.telefonica.de)
00:07:50 × Katarushisu quits (~Katarushi@finc-20-b2-v4wan-169598-cust1799.vm7.cable.virginm.net) (Ping timeout: 260 seconds)
00:07:52 × euleritian quits (~euleritia@dynamic-176-000-054-143.176.0.pool.telefonica.de) (Read error: Connection reset by peer)
00:08:09 euleritian joins (~euleritia@ip4d17f864.dynamic.kabel-deutschland.de)
00:12:00 xff0x joins (~xff0x@2405:6580:b080:900:2b75:7056:1970:c58f)
00:15:28 × acidjnk_new3 quits (~acidjnk@p200300d6e71c4f8221d365420023dfe1.dip0.t-ipconnect.de) (Ping timeout: 276 seconds)
00:30:43 Katarushisu joins (~Katarushi@finc-20-b2-v4wan-169598-cust1799.vm7.cable.virginm.net)
00:35:02 sajenim joins (~sajenim@user/sajenim)
00:38:40 × xff0x quits (~xff0x@2405:6580:b080:900:2b75:7056:1970:c58f) (Ping timeout: 272 seconds)
00:40:56 xff0x joins (~xff0x@2405:6580:b080:900:bd8f:49eb:d362:d8a3)
00:47:19 × Katarushisu quits (~Katarushi@finc-20-b2-v4wan-169598-cust1799.vm7.cable.virginm.net) (Ping timeout: 276 seconds)
00:52:36 × greber_ quits (~greber@82.148.184.53) (Remote host closed the connection)
01:04:36 Katarushisu joins (~Katarushi@finc-20-b2-v4wan-169598-cust1799.vm7.cable.virginm.net)
01:12:40 j1n37- joins (~j1n37@user/j1n37)
01:12:48 × j1n37 quits (~j1n37@user/j1n37) (Ping timeout: 252 seconds)
01:25:19 × droideqa quits (uid499291@user/droideqa) (Quit: Connection closed for inactivity)
01:28:34 joeyadams joins (~textual@syn-162-154-010-038.res.spectrum.com)
01:29:17 j1n37 joins (~j1n37@user/j1n37)
01:29:57 × j1n37- quits (~j1n37@user/j1n37) (Ping timeout: 248 seconds)
01:34:13 × machinedgod quits (~machinedg@d108-173-18-100.abhsia.telus.net) (Ping timeout: 248 seconds)
01:36:51 <Square2> Re: "<monochrom> \∩/ ::: also works " <-- where is that function defined?
01:39:00 <Square2> It's simple to roll your own, but I just assumed it would be in base somewhere
02:14:18 × td_ quits (~td@i5387090D.versanet.de) (Ping timeout: 244 seconds)
02:16:05 td_ joins (~td@i53870907.versanet.de)
02:20:49 × tabaqui quits (~tabaqui@167.71.80.236) (Ping timeout: 245 seconds)
02:22:52 × td_ quits (~td@i53870907.versanet.de) (Ping timeout: 276 seconds)
02:24:21 td_ joins (~td@i5387093E.versanet.de)
02:27:26 <monochrom> It is user-definable.
03:01:51 winniequinn joins (~winniequi@user/winniequinn)
03:07:59 tavare joins (~tavare@user/tavare)
03:09:04 × tavare quits (~tavare@user/tavare) (Remote host closed the connection)
03:12:48 × winniequinn quits (~winniequi@user/winniequinn) (Quit: nyaa~)
03:17:01 × jmcantrell quits (~weechat@user/jmcantrell) (Ping timeout: 272 seconds)
03:18:44 jmcantrell joins (~weechat@user/jmcantrell)
03:32:08 × jmcantrell quits (~weechat@user/jmcantrell) (Ping timeout: 252 seconds)
03:35:27 jmcantrell joins (~weechat@user/jmcantrell)
03:35:27 bitmapper joins (uid464869@id-464869.lymington.irccloud.com)
03:39:34 × jmcantrell quits (~weechat@user/jmcantrell) (Ping timeout: 245 seconds)
03:41:47 jmcantrell joins (~weechat@user/jmcantrell)
03:44:19 j1n37- joins (~j1n37@user/j1n37)
03:44:32 × dutchie quits (~dutchie@user/dutchie) (Remote host closed the connection)
03:45:05 aforemny_ joins (~aforemny@2001:9e8:6cc8:6800:9956:496f:fbf1:8d53)
03:45:25 × j1n37 quits (~j1n37@user/j1n37) (Ping timeout: 276 seconds)
03:45:33 dutchie joins (~dutchie@user/dutchie)
03:46:04 × aforemny quits (~aforemny@2001:9e8:6ce9:ae00:f066:85cb:935a:63da) (Ping timeout: 276 seconds)
04:01:07 wootehfoot joins (~wootehfoo@user/wootehfoot)
04:07:03 × wootehfoot quits (~wootehfoo@user/wootehfoot) (Ping timeout: 272 seconds)
04:08:00 prdak joins (~Thunderbi@user/prdak)
04:08:21 Garbanzo joins (~Garbanzo@2602:304:6eac:dc10::46)
04:12:43 × prdak quits (~Thunderbi@user/prdak) (Ping timeout: 276 seconds)
04:22:11 × joeyadams quits (~textual@syn-162-154-010-038.res.spectrum.com) (Quit: Textual IRC Client: www.textualapp.com)
04:22:28 × jmcantrell quits (~weechat@user/jmcantrell) (Ping timeout: 276 seconds)
04:24:08 jmcantrell joins (~weechat@user/jmcantrell)
04:32:29 × talismanick quits (~user@2601:644:937c:ed10::ae5) (Ping timeout: 260 seconds)
04:59:05 werneta joins (~werneta@syn-071-083-160-242.res.spectrum.com)
05:00:23 × manwithluck quits (~manwithlu@2a09:bac5:5081:2dc::49:f6) (Remote host closed the connection)
05:00:33 manwithluck joins (~manwithlu@2a09:bac5:5081:2dc::49:f6)
05:03:30 × gorignak quits (~gorignak@user/gorignak) (Quit: quit)
05:18:06 takuan joins (~takuan@d8D86B601.access.telenet.be)
05:27:16 × la1n quits (~la1n@81.222.178.255) (Read error: Connection reset by peer)
05:29:06 × euleritian quits (~euleritia@ip4d17f864.dynamic.kabel-deutschland.de) (Ping timeout: 252 seconds)
05:30:02 euleritian joins (~euleritia@dynamic-176-006-138-148.176.6.pool.telefonica.de)
05:36:17 × euleritian quits (~euleritia@dynamic-176-006-138-148.176.6.pool.telefonica.de) (Read error: Connection reset by peer)
05:36:36 euleritian joins (~euleritia@ip4d17f864.dynamic.kabel-deutschland.de)
05:52:56 × hgolden quits (~hgolden@2603:8000:9d00:3ed1:88e0:76ff:fe9c:b21e) (Remote host closed the connection)
06:01:55 × echoreply quits (~echoreply@45.32.163.16) (Quit: WeeChat 2.8)
06:02:52 echoreply joins (~echoreply@45.32.163.16)
06:05:08 hgolden joins (~hgolden@2603:8000:9d00:3ed1:88e0:76ff:fe9c:b21e)
06:16:00 prdak joins (~Thunderbi@user/prdak)
06:32:48 × prdak quits (~Thunderbi@user/prdak) (Read error: Connection reset by peer)
06:33:25 prdak joins (~Thunderbi@user/prdak)
06:33:51 sord937 joins (~sord937@gateway/tor-sasl/sord937)
06:36:28 × sord937 quits (~sord937@gateway/tor-sasl/sord937) (Remote host closed the connection)
06:36:47 sord937 joins (~sord937@gateway/tor-sasl/sord937)
06:39:20 tromp joins (~textual@2001:1c00:3487:1b00:cdc3:f42b:30fc:1c61)
06:41:00 × euleritian quits (~euleritia@ip4d17f864.dynamic.kabel-deutschland.de) (Ping timeout: 276 seconds)
06:42:53 euleritian joins (~euleritia@dynamic-176-006-138-148.176.6.pool.telefonica.de)
06:44:33 × jmcantrell quits (~weechat@user/jmcantrell) (Ping timeout: 248 seconds)
06:49:38 × Garbanzo quits (~Garbanzo@2602:304:6eac:dc10::46) (Remote host closed the connection)
06:57:51 acidjnk_new3 joins (~acidjnk@p200300d6e71c4f5329ce7e116cdf4532.dip0.t-ipconnect.de)
07:00:00 × caconym7 quits (~caconym@user/caconym) (Quit: bye)
07:00:39 caconym7 joins (~caconym@user/caconym)
07:03:50 __monty__ joins (~toonn@user/toonn)
07:10:19 JuanDaugherty joins (~juan@user/JuanDaugherty)
07:19:32 × prdak quits (~Thunderbi@user/prdak) (Quit: prdak)
07:19:54 prdak joins (~Thunderbi@user/prdak)
07:20:40 lortabac joins (~lortabac@2a01:e0a:541:b8f0:55ab:e185:7f81:54a4)
07:26:12 fp joins (~Thunderbi@wireless-86-50-140-117.open.aalto.fi)
07:29:19 × sabathan2 quits (~sabathan@amarseille-159-1-12-107.w86-203.abo.wanadoo.fr) (Read error: Connection reset by peer)
07:32:45 sabathan2 joins (~sabathan@amarseille-159-1-12-107.w86-203.abo.wanadoo.fr)
07:34:04 × m1dnight quits (~m1dnight@d8D861908.access.telenet.be) (Ping timeout: 252 seconds)
07:34:28 m1dnight joins (~m1dnight@d8D861908.access.telenet.be)
07:40:41 <[exa]> I'm getting a linker error when trying to build static binaries in github CI (on ubuntu-latest): "error: relocation refers to local symbol ".text" [1], which is defined in a discarded section". Did anyone see anything such? (mainly, any guess on where to start debugging?)
07:41:02 <[exa]> locally it works OK (on debian tho, should I assume this to be ubuntu-caused weirdness?)
07:43:01 <[exa]> (tail of the build log with the yuge link command here, if anyone enjoys reading these things: https://paste.tomsmeding.com/dac7Oswb )
07:43:52 × emmanuelux quits (~emmanuelu@user/emmanuelux) (Read error: Connection reset by peer)
07:51:24 × Sgeo quits (~Sgeo@user/sgeo) (Read error: Connection reset by peer)
08:02:21 × hgolden quits (~hgolden@2603:8000:9d00:3ed1:88e0:76ff:fe9c:b21e) (Ping timeout: 252 seconds)
08:02:21 merijn joins (~merijn@77.242.116.146)
08:03:53 hgolden joins (~hgolden@2603:8000:9d00:3ed1:88e0:76ff:fe9c:b21e)
08:10:29 × acidjnk_new3 quits (~acidjnk@p200300d6e71c4f5329ce7e116cdf4532.dip0.t-ipconnect.de) (Read error: Connection reset by peer)
08:12:32 <tomsmeding> [exa]: did you see that warning about dlopen?
08:13:08 <tomsmeding> and the 10 similar warnings below it
08:13:12 <tomsmeding> lines 25-35
08:13:20 <tomsmeding> oh and more lol
08:13:34 × euleritian quits (~euleritia@dynamic-176-006-138-148.176.6.pool.telefonica.de) (Read error: Connection reset by peer)
08:13:52 euleritian joins (~euleritia@ip4d17f864.dynamic.kabel-deutschland.de)
08:14:07 <tomsmeding> [exa]: I'm not sure, but I wouldn't discard the possibility that this error depends on the glibc version
08:14:35 JuanDaugherty is now known as ColinRobinson
08:15:31 <tomsmeding> [exa]: but those warnings rather explicitly tell you that what you're trying to do isn't helpful
08:15:37 acidjnk joins (~acidjnk@p200300d6e71c4f53bcc85498df75fec7.dip0.t-ipconnect.de)
08:19:05 × tzh quits (~tzh@c-76-115-131-146.hsd1.or.comcast.net) (Quit: zzz)
08:19:44 × prdak quits (~Thunderbi@user/prdak) (Read error: Connection reset by peer)
08:19:48 <[exa]> tomsmeding: yeah, but otherwise it works perfectly despite the warnings :)
08:20:15 <tomsmeding> because on the other system you have a compatible glibc version, presumably
08:20:34 <tomsmeding> try running the executable on a musl system, or a system with a much older glibc than the one you built on
08:20:52 <[exa]> ofc there it dies, that's ok
08:21:06 <tomsmeding> ... but if you allow that, why do static linking of glibc in the first place
08:22:00 <[exa]> can I somehow pick which libraries I want to have packed as static?
08:23:02 <tomsmeding> with gcc, you can, apparently
08:23:32 <tomsmeding> you're right that this may be hard or impossible through ghc
08:23:40 chele joins (~chele@user/chele)
08:23:52 CiaoSen joins (~Jura@2a02:8071:64e1:da0:5a47:caff:fe78:33db)
08:24:23 <[exa]> kinda wondering, can I take the dynamic executable and just somehow pack some of the libraries to it?
08:25:28 <tomsmeding> that's apparently hard
08:25:38 <tomsmeding> https://unix.stackexchange.com/questions/685255/create-an-statically-linked-executable-from-a-dynamically-linked-executable-and
08:25:56 <[exa]> whew https://github.com/sigurd-dev/mkblob
08:28:56 × weary-traveler quits (~user@user/user363627) (Remote host closed the connection)
08:29:10 × tromp quits (~textual@2001:1c00:3487:1b00:cdc3:f42b:30fc:1c61) (Quit: My iMac has gone to sleep. ZZZzzz…)
08:29:28 <[exa]> well I guess I'll do the trick with LD_LIBRARY_PATH and some scriptage
08:30:08 <tomsmeding> that is probably saner
08:30:14 × fp quits (~Thunderbi@wireless-86-50-140-117.open.aalto.fi) (Read error: Connection reset by peer)
08:30:17 fp1 joins (~Thunderbi@wireless-86-50-140-117.open.aalto.fi)
08:30:23 <tomsmeding> than some random tool from an executable uploaded to github with "Add files for upload"
08:30:34 <[exa]> true.
08:32:34 fp1 is now known as fp
08:52:08 × fp quits (~Thunderbi@wireless-86-50-140-117.open.aalto.fi) (Ping timeout: 244 seconds)
09:09:40 j1n37 joins (~j1n37@user/j1n37)
09:10:54 × j1n37- quits (~j1n37@user/j1n37) (Ping timeout: 265 seconds)
09:12:45 prdak joins (~Thunderbi@user/prdak)
09:15:34 fp joins (~Thunderbi@wireless-86-50-140-117.open.aalto.fi)
09:16:21 × michalz quits (~michalz@185.246.207.217) (Ping timeout: 252 seconds)
09:17:50 michalz joins (~michalz@185.246.207.221)
09:19:40 × fp quits (~Thunderbi@wireless-86-50-140-117.open.aalto.fi) (Client Quit)
09:19:44 fp1 joins (~Thunderbi@wireless-86-50-140-117.open.aalto.fi)
09:22:03 fp1 is now known as fp
09:25:27 × prdak quits (~Thunderbi@user/prdak) (Read error: Connection reset by peer)
09:34:55 tromp joins (~textual@2001:1c00:3487:1b00:cdc3:f42b:30fc:1c61)
09:44:40 × euleritian quits (~euleritia@ip4d17f864.dynamic.kabel-deutschland.de) (Ping timeout: 252 seconds)
09:45:42 euleritian joins (~euleritia@dynamic-176-006-138-148.176.6.pool.telefonica.de)
10:02:37 × michalz quits (~michalz@185.246.207.221) (Ping timeout: 252 seconds)
10:05:55 × fp quits (~Thunderbi@wireless-86-50-140-117.open.aalto.fi) (Ping timeout: 252 seconds)
10:06:06 fp joins (~Thunderbi@wireless-86-50-140-117.open.aalto.fi)
10:06:30 michalz joins (~michalz@185.246.207.218)
10:08:46 wootehfoot joins (~wootehfoo@user/wootehfoot)
10:10:18 × lortabac quits (~lortabac@2a01:e0a:541:b8f0:55ab:e185:7f81:54a4) (Ping timeout: 276 seconds)
10:12:51 × euleritian quits (~euleritia@dynamic-176-006-138-148.176.6.pool.telefonica.de) (Read error: Connection reset by peer)
10:13:08 euleritian joins (~euleritia@ip4d17f864.dynamic.kabel-deutschland.de)
10:24:50 × fp quits (~Thunderbi@wireless-86-50-140-117.open.aalto.fi) (Ping timeout: 244 seconds)
10:25:41 × j1n37 quits (~j1n37@user/j1n37) (Read error: Connection reset by peer)
10:29:16 j1n37 joins (~j1n37@user/j1n37)
10:33:06 fp joins (~Thunderbi@2001:708:20:1406::10c5)
10:35:14 × rvalue quits (~rvalue@user/rvalue) (Read error: Connection reset by peer)
10:35:52 rvalue joins (~rvalue@user/rvalue)
10:36:29 prdak joins (~Thunderbi@user/prdak)
10:44:28 × euleritian quits (~euleritia@ip4d17f864.dynamic.kabel-deutschland.de) (Ping timeout: 244 seconds)
10:45:44 euleritian joins (~euleritia@77.23.248.100)
10:50:28 × euleritian quits (~euleritia@77.23.248.100) (Ping timeout: 272 seconds)
10:51:17 euleritian joins (~euleritia@dynamic-176-006-138-148.176.6.pool.telefonica.de)
10:51:29 haritz joins (~hrtz@152.37.68.178)
10:51:29 × haritz quits (~hrtz@152.37.68.178) (Changing host)
10:51:29 haritz joins (~hrtz@user/haritz)
10:55:51 × euleritian quits (~euleritia@dynamic-176-006-138-148.176.6.pool.telefonica.de) (Read error: Connection reset by peer)
10:56:42 euleritian joins (~euleritia@ip4d17f864.dynamic.kabel-deutschland.de)
10:58:52 chele_ joins (~chele@user/chele)
11:00:05 × caconym7 quits (~caconym@user/caconym) (Quit: bye)
11:01:35 × chele quits (~chele@user/chele) (Ping timeout: 265 seconds)
11:01:39 × euleritian quits (~euleritia@ip4d17f864.dynamic.kabel-deutschland.de) (Ping timeout: 276 seconds)
11:01:54 × michalz quits (~michalz@185.246.207.218) (Read error: Connection reset by peer)
11:02:16 caconym7 joins (~caconym@user/caconym)
11:02:29 lortabac joins (~lortabac@2a01:e0a:541:b8f0:55ab:e185:7f81:54a4)
11:02:41 euleritian joins (~euleritia@77.23.248.100)
11:03:43 michalz joins (~michalz@185.246.207.222)
11:08:24 × wootehfoot quits (~wootehfoo@user/wootehfoot) (Read error: Connection reset by peer)
11:09:20 j1n37- joins (~j1n37@user/j1n37)
11:09:25 × fp quits (~Thunderbi@2001:708:20:1406::10c5) (Quit: fp)
11:09:48 × j1n37 quits (~j1n37@user/j1n37) (Ping timeout: 265 seconds)
11:10:41 fp joins (~Thunderbi@2001:708:20:1406::10c5)
11:11:17 × euleritian quits (~euleritia@77.23.248.100) (Ping timeout: 248 seconds)
11:12:21 euleritian joins (~euleritia@dynamic-176-006-138-148.176.6.pool.telefonica.de)
11:22:29 × acidjnk quits (~acidjnk@p200300d6e71c4f53bcc85498df75fec7.dip0.t-ipconnect.de) (Ping timeout: 268 seconds)
11:25:10 acidjnk joins (~acidjnk@p200300d6e71c4f53e574b8a80288d07c.dip0.t-ipconnect.de)
11:28:27 <yin> which other popular languages feature automatic currying?
11:28:34 tabaqui joins (~tabaqui@167.71.80.236)
11:31:20 <tomsmeding> ocaml, presumably
11:39:09 <tomsmeding> languages are generally not so deluded as to think that partially applying a function, and actually calling it, are similar operationally
11:43:10 × j1n37- quits (~j1n37@user/j1n37) (Ping timeout: 276 seconds)
11:44:21 j1n37 joins (~j1n37@user/j1n37)
11:44:58 <[exa]> forth
11:44:59 [exa] runs
11:46:28 × tromp quits (~textual@2001:1c00:3487:1b00:cdc3:f42b:30fc:1c61) (Quit: My iMac has gone to sleep. ZZZzzz…)
11:50:51 tromp joins (~textual@2001:1c00:3487:1b00:cdc3:f42b:30fc:1c61)
12:00:46 zmt00 joins (~zmt00@user/zmt00)
12:02:32 × zmt01 quits (~zmt00@user/zmt00) (Ping timeout: 252 seconds)
12:08:50 tolgo joins (~Thunderbi@199.115.144.130)
12:09:21 × tolgo quits (~Thunderbi@199.115.144.130) (Client Quit)
12:17:03 × acidjnk quits (~acidjnk@p200300d6e71c4f53e574b8a80288d07c.dip0.t-ipconnect.de) (Read error: Connection reset by peer)
12:21:25 × euleritian quits (~euleritia@dynamic-176-006-138-148.176.6.pool.telefonica.de) (Read error: Connection reset by peer)
12:21:30 × prdak quits (~Thunderbi@user/prdak) (Read error: Connection reset by peer)
12:21:42 euleritian joins (~euleritia@ip4d17f864.dynamic.kabel-deutschland.de)
12:24:45 acidjnk joins (~acidjnk@p200300d6e71c4f530114fa8f2e8a4c12.dip0.t-ipconnect.de)
12:28:10 jespada joins (~jespada@r179-25-149-142.dialup.adsl.anteldata.net.uy)
12:29:39 × Square2 quits (~Square4@user/square) (Ping timeout: 260 seconds)
12:30:16 ubert joins (~Thunderbi@2a02:8109:ab8a:5a00:70a8:360f:569f:e3f9)
12:37:07 × euleritian quits (~euleritia@ip4d17f864.dynamic.kabel-deutschland.de) (Read error: Connection reset by peer)
12:37:42 euleritian joins (~euleritia@ip4d17f864.dynamic.kabel-deutschland.de)
12:51:36 weary-traveler joins (~user@user/user363627)
12:53:59 ttybitnik joins (~ttybitnik@user/wolper)
12:56:38 gorignak joins (~gorignak@user/gorignak)
13:00:17 comerijn joins (~merijn@77.242.116.146)
13:02:54 × merijn quits (~merijn@77.242.116.146) (Ping timeout: 260 seconds)
13:03:46 <mauke> yin: I had a prototype implementation for Perl, but they didn't like my suggested f($x)($y) calling syntax :-(
13:12:54 j1n37- joins (~j1n37@user/j1n37)
13:13:29 × j1n37 quits (~j1n37@user/j1n37) (Ping timeout: 268 seconds)
13:15:28 × AlexZenon quits (~alzenon@5.139.233.9) (Ping timeout: 265 seconds)
13:17:03 <lortabac> I've just discovered that UTCTime doesn't enforce any invariant on the number of seconds in a day
13:18:03 <lortabac> you can do for example (UTCTime date (secondsToDiffTime 1000000)) and it will gladly accept it
13:18:18 <lortabac> and then it shows it as 2025-05-06 23:59:913660 UTC
13:18:47 <tomsmeding> I mean, how can a data type enforce invariants
13:19:06 <lortabac> by providing a smart constructor
13:19:46 <lortabac> I don't know, it seems strange to me that you are allowed to create such a date
13:20:02 AlexZenon joins (~alzenon@5.139.233.9)
13:20:49 <tomsmeding> you could (n `addUTCTime` UTCTime date 0)
13:21:14 <tomsmeding> if wrapping is the behaviour that you want
13:22:34 <lortabac> I already have a solution for my specific problem. I'm mostly wondering whether this is a good API for time
13:23:04 <lortabac> and how an impossible date would behave in various scenarios and conversions
13:23:24 <tomsmeding> 'time' itself seems to use utcTimeToPosixSeconds a lot
13:23:50 <tomsmeding> but yeah, I agree that a smart constructor that implements wrapping behaviour would have been neater
13:26:54 <yin> lortabac: the UTC standart itself does not enforce it
13:27:04 <lortabac> if I do (posixSecondsToUTCTime $ utcTimeToPOSIXSeconds impossibleTime) it gives me the next day at 00:00:00
13:27:59 <yin> lortabac: *standard. meaning if the future it's possible for us to add an arbitrary number of seconds to a day. we routinely have leap seconds
13:28:21 <lortabac> yin: right, it makes sense
13:28:38 <lortabac> still, utcTimeToPOSIXSeconds seems to enforce a limit
13:29:25 <lortabac> I wonder if it handles leap seconds correctly
13:30:11 <lortabac> posixDayLength is hard-coded as 86400 seconds
13:30:25 × j1n37- quits (~j1n37@user/j1n37) (Ping timeout: 276 seconds)
13:30:43 <yin> 100000 seconds is just about 11 days and a half. we've famously skipped 10 days in 1582 :)
13:31:05 j1n37 joins (~j1n37@user/j1n37)
13:31:25 <lortabac> :)
13:31:26 <yin> or 11 days in 1752
13:31:51 <yin> for the british empire
13:32:33 <tomsmeding> lortabac: UTC does not include leap seconds
13:32:40 <tomsmeding> uh
13:32:42 <tomsmeding> that makes no sense
13:32:47 <tomsmeding> a posix timestamp does not include leap seconds, there, that does
13:33:32 <tomsmeding> that means that conversion between UTC time and a POSIX timestamp does not need to care about leap seconds
13:33:43 <df> I thought it was TAI that didn't include leap seconds
13:34:06 <df> but I've no idea which one posix timestamps are based on
13:34:24 <tomsmeding> iirc TAI just trudges on, regardless of what we pesky humans do with calendars and leap seconds
13:34:43 <tomsmeding> whereas UTC actually intends to match what humans do, so when there's a leap second, you have two seconds with the same UTC time
13:34:53 <tomsmeding> (after wrapping, perhaps)
13:35:03 <tomsmeding> POSIX timestamps match UTC
13:35:19 <yin> tomsmeding: that's not true
13:35:30 <yin> no 2 seconds have the same timestamp in UTC
13:35:35 tomsmeding should probably have looked things up
13:35:42 <df> tbh I'm not sure if posix has been updated to be 64 bit
13:36:04 <tomsmeding> yin: so what happens at a leap second, do you get :60 in the UTC time?
13:36:16 <yin> yes
13:36:29 <tomsmeding> https://en.wikipedia.org/wiki/Leap_second#Binary_representation
13:36:40 <lortabac> so in this sense UTCTime is right in not wrapping
13:36:43 <tomsmeding> yin: fair correction, but does not change my conclusion
13:36:52 <lortabac> but then utcTimeToPosixSeconds is wrong
13:37:13 × CiaoSen quits (~Jura@2a02:8071:64e1:da0:5a47:caff:fe78:33db) (Ping timeout: 265 seconds)
13:37:41 <yin> hence my comments about how the permissive UTCTime implementation makes sense
13:38:01 <tomsmeding> lortabac: POSIX does not count leap seconds, so as long as you only use the additional freedom in UTCTime to set the seconds field to 60 in case of a leap second, utcTimeToPosixSeconds is actually correct
13:38:18 <yin> lortabac: Posix time does not account for leap seconds
13:38:27 <yin> exactly
13:38:41 <tomsmeding> if you set the seconds field to some other value then you're inputting a non-existent UTC time, and utcTimeToPosixSeconds... something
13:38:52 <tomsmeding> s/something/does something/
13:39:40 <tomsmeding> though this means that utcTimeToPosixSeconds is apparently (according to wikipedia) inconsistent with Linux: > Some computer operating systems, in particular Linux, assign to the leap second the counter value of the preceding, 23:59:59 second (59–59–0 sequence)
13:40:01 <tomsmeding> (see the link I just posted)
13:40:48 <yin> sometimes i wonder how useful this time thing we invented really is
13:40:56 <lortabac> utcTimeToPosixSeconds uses the 59–0–0 sequence
13:43:02 <lortabac> maybe it would be simpler to have N months of fixed length + a final month that ends when the solar year ends
13:43:20 <yin> this is actually a question i like to ask people. how important do you feel, in a profession setting, synchronoyus communication is?
13:44:00 <tomsmeding> it's important to have it available -- some things are best discussed synchronously
13:44:13 <lortabac> sometimes it's important
13:45:59 <yin> i get from "it's so unprofessional when i try to call a colleague at 9:01 and they don't answer because they're late" to "i don't answer phones at work and it's rude to interrupt other people's flow because whatever you need from me, you can ask it in an email"
13:47:33 <lortabac> regarding phone, I just never answer :)
13:48:32 <lortabac> but for example in case of an incident I set up a war room to discuss synchronously, because time matters in that case
13:48:59 <yin> tomsmeding: i agree. but then you can arrange for a meeting "when the sun hits the sidewalk" or some universal time that doesn't have to be this mess
13:49:39 <haskellbridge> <maerwald> if you work with other engineers on the same thing, you better have synchronous ad-hoc communication
13:51:05 <haskellbridge> <maerwald> what I don't like is when people don't reply to my PR comments, unless I call them on facetime or whatever... stop being lazy
13:51:09 <yin> haskellbridge: maerwald: github does a good enough job at getting around that
13:51:21 <haskellbridge> <maerwald> no
13:51:51 <yin> did i just ping haskellbridge? :p
13:51:57 × euleritian quits (~euleritia@ip4d17f864.dynamic.kabel-deutschland.de) (Ping timeout: 276 seconds)
13:51:59 <haskellbridge> <maerwald> pair programming, brainstorming together, etc. does not work on github
13:52:07 euleritian joins (~euleritia@dynamic-176-006-138-148.176.6.pool.telefonica.de)
13:52:27 <yin> true
13:52:41 <tomsmeding> yin: I never connected messy UTC time to synchronous communication :p
13:52:59 <tomsmeding> and in any case, if there is a connection, it's between messy time and _planning_
13:53:06 <tomsmeding> the communication itself is separate
13:53:18 tomsmeding will be afk for a while
13:53:32 <haskellbridge> <maerwald> but collaboration in professional setting is mostly dead... people always get pieces of work that they can implement independently and then every team member gets their epics and your grind on your own without any real design or code collaboration
13:53:42 <haskellbridge> <maerwald> programming is boring this way
13:54:02 <yin> tomsmeding: oh i mean "time" in general
13:54:52 <yin> like the need for two people to independently agree on "what time it is now"
13:55:12 <yin> messy UTC is just a result of that
13:56:39 <yin> maerwald: i have come to accept that programming is boring any way
13:57:30 <haskellbridge> <maerwald> time for a career change
13:57:58 <yin> there's that concept again
13:58:25 <haskellbridge> <maerwald> you can become an LLM input engineer
13:58:32 <df> yin: easily solved, I looked up the time earlier and wrote it down
13:58:59 <df> it's 11:27:23 AM
14:00:24 <yin> df: ok i wrote it down too
14:00:46 <df> ok, so we're sychronised, problem solved ;)
14:00:49 <yin> i'm also telling all my contacts
14:01:01 <yin> wait
14:01:03 danza joins (~danza@user/danza)
14:01:20 <yin> done. they also wrote it down and will spread the word
14:01:30 <yin> we'll all be on the same time... soon
14:02:03 × danza quits (~danza@user/danza) (Remote host closed the connection)
14:02:08 <df> good work, we can synchronise the entire world if we try
14:02:13 <df> time is an illusion anyway
14:05:09 <yin> won't we miss async communication though? oh no what have we done?
14:05:47 <df> ... c'mon, somebody's gotta complete the douglas adams quote
14:06:16 × hughjfchen quits (~hughjfche@vmi2417424.contaboserver.net) (Ping timeout: 244 seconds)
14:07:08 × comerijn quits (~merijn@77.242.116.146) (Read error: Connection reset by peer)
14:07:26 merijn joins (~merijn@77.242.116.146)
14:07:33 hughjfchen joins (~hughjfche@vmi2417424.contaboserver.net)
14:08:15 <df> yin: made life easier for a bunch of programmers? ordering events might be tricky though, I admit
14:08:25 <yin> "quickly, there's no time!"
14:08:25 <yin> wait no, that was Doc Brown
14:09:08 <df> but time has never been very reliable for that anyway, that's why we invented vector clocks etc
14:16:10 × euleritian quits (~euleritia@dynamic-176-006-138-148.176.6.pool.telefonica.de) (Read error: Connection reset by peer)
14:16:27 euleritian joins (~euleritia@ip4d17f864.dynamic.kabel-deutschland.de)
14:19:43 vanishingideal joins (~vanishing@user/vanishingideal)
14:25:06 × ColinRobinson quits (~juan@user/JuanDaugherty) (Quit: praxis.meansofproduction.biz (juan@acm.org))
14:32:54 × tromp quits (~textual@2001:1c00:3487:1b00:cdc3:f42b:30fc:1c61) (Quit: My iMac has gone to sleep. ZZZzzz…)
14:40:37 × fp quits (~Thunderbi@2001:708:20:1406::10c5) (Ping timeout: 276 seconds)
14:54:01 × vanishingideal quits (~vanishing@user/vanishingideal) (Ping timeout: 244 seconds)
14:55:59 × ttybitnik quits (~ttybitnik@user/wolper) (Quit: Fading out...)
15:04:44 tromp joins (~textual@2001:1c00:3487:1b00:cdc3:f42b:30fc:1c61)
15:06:41 connrs joins (~connrs@user/connrs)
15:11:16 <haskellbridge> <Liamzee> things that happen to you in life:
15:11:50 <haskellbridge> <Liamzee> "When you realize that Gabriella Gonzalez's haskellforall.com blog is actually a pun on explicit universal quantification"
15:13:01 <haskellbridge> <Liamzee> had a disaster with LLM just now, I was looking for Haskell-themed website names, oriented around the arrow from the initial object
15:13:47 <haskellbridge> <Liamzee> Claude and Deepseek convinced me and each other that Zeromorph was a good name, when it refers to a constant and co-constant morphism. facepalm
15:17:43 Lord_of_Life joins (~Lord@user/lord-of-life/x-2819915)
15:22:00 <haskellbridge> <Liamzee> dotmorphism is okay?
15:22:00 × euleritian quits (~euleritia@ip4d17f864.dynamic.kabel-deutschland.de) (Read error: Connection reset by peer)
15:22:49 euleritian joins (~euleritia@ip4d17f864.dynamic.kabel-deutschland.de)
15:27:08 × lortabac quits (~lortabac@2a01:e0a:541:b8f0:55ab:e185:7f81:54a4) (Quit: WeeChat 4.5.2)
15:32:12 lbseale joins (~quassel@user/ep1ctetus)
15:32:12 × tv quits (~tv@user/tv) (Read error: Connection reset by peer)
15:32:45 jespada_ joins (~jespada@r179-24-30-150.dialup.adsl.anteldata.net.uy)
15:33:14 JuanDaugherty joins (~juan@user/JuanDaugherty)
15:35:12 × jespada quits (~jespada@r179-25-149-142.dialup.adsl.anteldata.net.uy) (Ping timeout: 252 seconds)
15:45:42 × chele_ quits (~chele@user/chele) (Ping timeout: 276 seconds)
15:49:27 × adamCS quits (~adamCS@70.19.85.77) (Remote host closed the connection)
15:50:56 adamCS joins (~adamCS@70.19.85.77)
15:54:35 × acidjnk quits (~acidjnk@p200300d6e71c4f530114fa8f2e8a4c12.dip0.t-ipconnect.de) (Ping timeout: 260 seconds)
15:59:37 × ubert quits (~Thunderbi@2a02:8109:ab8a:5a00:70a8:360f:569f:e3f9) (Quit: ubert)
16:21:08 × tromp quits (~textual@2001:1c00:3487:1b00:cdc3:f42b:30fc:1c61) (Quit: My iMac has gone to sleep. ZZZzzz…)
16:23:37 tromp joins (~textual@2001:1c00:3487:1b00:cdc3:f42b:30fc:1c61)
16:24:39 × merijn quits (~merijn@77.242.116.146) (Ping timeout: 268 seconds)
16:31:58 × tabaqui quits (~tabaqui@167.71.80.236) (Ping timeout: 252 seconds)
16:45:23 <ski> yin : fwiw, Haskell does not "feature automatic currying"
16:46:04 wootehfoot joins (~wootehfoo@user/wootehfoot)
16:46:49 × rvalue quits (~rvalue@user/rvalue) (Read error: Connection reset by peer)
16:47:01 × pavonia quits (~user@user/siracusa) (Quit: Bye!)
16:47:04 × werneta quits (~werneta@syn-071-083-160-242.res.spectrum.com) (Ping timeout: 252 seconds)
16:47:30 rvalue joins (~rvalue@user/rvalue)
16:49:56 <int-e> heh but maybe you could make the argument that the "S" in "STG" is a form of automatic uncurrying
16:51:10 machinedgod joins (~machinedg@d108-173-18-100.abhsia.telus.net)
16:51:12 <int-e> (Though that's GHC territory, not Haskell per se.)
16:56:49 <EvanR> currying ... the implementation of multi-argument functions as nested single argument functions. Haskell only has single argument functions then GHC can take the liberty of implementing them as multiargument functions. The exact opposite!
17:08:20 × euleritian quits (~euleritia@ip4d17f864.dynamic.kabel-deutschland.de) (Ping timeout: 252 seconds)
17:08:39 euleritian joins (~euleritia@dynamic-176-006-138-148.176.6.pool.telefonica.de)
17:08:44 JuanDaugherty is now known as ColinRobinson
17:10:56 thelounge9847 joins (~thelounge@host-176-38-28-247.b026.la.net.ua)
17:11:55 <int-e> EvanR: exactly
17:13:26 acidjnk joins (~acidjnk@p200300d6e71c4f5301468c1cc0256076.dip0.t-ipconnect.de)
17:15:09 ttybitnik joins (~ttybitnik@user/wolper)
17:15:33 × thelounge9847 quits (~thelounge@host-176-38-28-247.b026.la.net.ua) (Quit: The Lounge - https://thelounge.chat)
17:16:21 amadaluzia joins (~amadaluzi@user/amadaluzia)
17:18:51 × ColinRobinson quits (~juan@user/JuanDaugherty) (Quit: praxis.meansofproduction.biz (juan@acm.org))
17:19:12 merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl)
17:23:44 × sajenim quits (~sajenim@user/sajenim) (Ping timeout: 252 seconds)
17:24:25 × merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 276 seconds)
17:25:48 Guest708 joins (~John@host-176-38-28-247.b026.la.net.ua)
17:27:09 <c_wraith> huh. Ok, having learned how BangPatterns works in let/where bindings, I actually like it a lot better than I do in function heads
17:27:39 <c_wraith> I probably should have learned this 10 years ago. Or more.
17:28:06 <tomsmeding> what's the revelation?
17:30:27 <c_wraith> that compilation inserts calls to seq for each !. ie, let !foo = bar in baz is equivalent to let foo = bar in foo `seq` baz
17:31:39 <tomsmeding> and bangs in function heads interact with pattern matching, right?
17:31:40 tzh joins (~tzh@c-76-115-131-146.hsd1.or.comcast.net)
17:31:44 <c_wraith> yeah
17:31:59 <tomsmeding> at least the pattern converage checker explicitly deals with them
17:32:50 <c_wraith> My issue with the use in function heads is that usually it's happening a step too late. Like, I'd rather ensure I'm passing a value that's already evaluated than making sure it's evaluated when the function examines it
17:33:19 × Guest708 quits (~John@host-176-38-28-247.b026.la.net.ua) (Quit: Leaving)
17:33:33 tomsmeding feels that's connected more to programming style than language semantics
17:33:40 × krei-se- quits (~krei-se@p200300f1cfff35bada9ef3fffe7fdac8.dip0.t-ipconnect.de) (Ping timeout: 244 seconds)
17:33:58 <c_wraith> It's mostly about making things easy for the compiler
17:34:14 <c_wraith> Don't require it to get strictness analysis correct, just do it correctly yourself
17:34:30 <c_wraith> It makes your code much more resilient to compiler heuristic changes
17:35:01 merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl)
17:35:52 bdmg_ joins (~myJebba@177.138.161.234)
17:36:54 ljdarj joins (~Thunderbi@user/ljdarj)
17:37:09 <c_wraith> (though the compiler *does* still need to get the evaluation order correct with seq, and sometimes it doesn't)
17:40:05 × merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 248 seconds)
17:41:46 × tromp quits (~textual@2001:1c00:3487:1b00:cdc3:f42b:30fc:1c61) (Quit: My iMac has gone to sleep. ZZZzzz…)
17:46:19 <haskellbridge> <yin> ski: fair
17:50:47 merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl)
17:51:33 krei-se joins (~krei-se@p200300f1cfff12b8da9ef3fffe7fdac8.dip0.t-ipconnect.de)
17:52:24 e69a756 joins (~e69a756@user/e69a756)
17:54:34 econo_ joins (uid147250@id-147250.tinside.irccloud.com)
17:55:06 jmcantrell joins (~weechat@user/jmcantrell)
17:57:52 tromp joins (~textual@2001:1c00:3487:1b00:cdc3:f42b:30fc:1c61)
17:57:58 × merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 272 seconds)
18:02:28 e69a756 parts (~e69a756@user/e69a756) ()
18:08:49 merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl)
18:12:32 prdak joins (~Thunderbi@user/prdak)
18:12:34 × euphores quits (~SASL_euph@user/euphores) (Quit: Leaving.)
18:13:36 × merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds)
18:16:32 × weary-traveler quits (~user@user/user363627) (Remote host closed the connection)
18:17:16 × prdak quits (~Thunderbi@user/prdak) (Ping timeout: 252 seconds)
18:20:30 Sorevian joins (~Sorevian@2a01:4b00:869f:4100:3142:dca3:9a6b:93c3)
18:20:36 × Sorevian quits (~Sorevian@2a01:4b00:869f:4100:3142:dca3:9a6b:93c3) (Client Quit)
18:20:47 Sorevian joins (~Sorevian@2a01:4b00:869f:4100:3142:dca3:9a6b:93c3)
18:21:30 euphores joins (~SASL_euph@user/euphores)
18:21:36 merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl)
18:26:25 × merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds)
18:26:26 × machinedgod quits (~machinedg@d108-173-18-100.abhsia.telus.net) (Ping timeout: 252 seconds)
18:29:34 × euleritian quits (~euleritia@dynamic-176-006-138-148.176.6.pool.telefonica.de) (Ping timeout: 260 seconds)
18:31:05 euleritian joins (~euleritia@dynamic-176-006-136-107.176.6.pool.telefonica.de)
18:37:26 merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl)
18:42:47 × merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 268 seconds)
18:47:59 × euleritian quits (~euleritia@dynamic-176-006-136-107.176.6.pool.telefonica.de) (Read error: Connection reset by peer)
18:48:17 euleritian joins (~euleritia@ip4d17f864.dynamic.kabel-deutschland.de)
18:49:34 × ljdarj quits (~Thunderbi@user/ljdarj) (Ping timeout: 268 seconds)
18:53:12 merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl)
18:58:16 × merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds)
19:00:02 × caconym7 quits (~caconym@user/caconym) (Quit: bye)
19:00:41 caconym7 joins (~caconym@user/caconym)
19:06:38 × bdmg_ quits (~myJebba@177.138.161.234) (Read error: Connection reset by peer)
19:08:58 merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl)
19:11:04 tabaqui joins (~tabaqui@167.71.80.236)
19:16:37 × merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 248 seconds)
19:17:31 × shr\ke quits (~shrike@user/shrke:31298) (Ping timeout: 276 seconds)
19:20:46 amadaluzia_ joins (~amadaluzi@user/amadaluzia)
19:21:06 emmanuelux joins (~emmanuelu@user/emmanuelux)
19:21:32 shr\ke joins (~shrike@user/paxhumana)
19:21:32 × shr\ke quits (~shrike@user/paxhumana) (Changing host)
19:21:32 shr\ke joins (~shrike@user/shrke:31298)
19:24:17 sprotte24 joins (~sprotte24@p200300d16f36aa00202cf2be69d2c7e4.dip0.t-ipconnect.de)
19:25:22 × amadaluzia_ quits (~amadaluzi@user/amadaluzia) (Ping timeout: 272 seconds)
19:28:05 merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl)
19:33:12 × merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 276 seconds)
19:35:45 × wootehfoot quits (~wootehfoo@user/wootehfoot) (Read error: Connection reset by peer)
19:36:29 mistivia_ joins (~mistivia@user/mistivia)
19:36:49 × mistivia quits (~mistivia@user/mistivia) (Ping timeout: 252 seconds)
19:38:42 × Sorevian quits (~Sorevian@2a01:4b00:869f:4100:3142:dca3:9a6b:93c3) (Quit: Client closed)
19:39:51 Sorevian joins (~Sorevian@2a01:4b00:869f:4100:3142:dca3:9a6b:93c3)
19:42:29 × Sorevian quits (~Sorevian@2a01:4b00:869f:4100:3142:dca3:9a6b:93c3) (Client Quit)
19:43:52 merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl)
19:44:16 Sorevian joins (~Sorevian@2a01:4b00:869f:4100:3142:dca3:9a6b:93c3)
19:47:06 × euphores quits (~SASL_euph@user/euphores) (Quit: Leaving.)
19:48:31 × merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 244 seconds)
19:50:41 rvalue- joins (~rvalue@user/rvalue)
19:51:30 × rvalue quits (~rvalue@user/rvalue) (Ping timeout: 252 seconds)
19:54:55 euphores joins (~SASL_euph@user/euphores)
19:59:24 rvalue- is now known as rvalue
19:59:35 merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl)
20:04:38 × merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 272 seconds)
20:06:47 ljdarj joins (~Thunderbi@user/ljdarj)
20:07:46 target_i joins (~target_i@user/target-i/x-6023099)
20:08:06 × ljdarj quits (~Thunderbi@user/ljdarj) (Client Quit)
20:08:26 ljdarj joins (~Thunderbi@user/ljdarj)
20:15:23 merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl)
20:18:06 machinedgod joins (~machinedg@d108-173-18-100.abhsia.telus.net)
20:19:37 pavonia joins (~user@user/siracusa)
20:20:50 × merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 268 seconds)
20:22:50 × EvanR quits (~EvanR@user/evanr) (Quit: Leaving)
20:26:02 EvanR joins (~EvanR@user/evanr)
20:29:05 tv joins (~tv@user/tv)
20:31:11 merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl)
20:32:47 <hellwolf> is there any relation between "IO (a -> b)" and "a -> IO b" in any way?
20:33:04 <davean> hellwolf: No really.
20:33:41 <davean> hellwolf: There is SOME connection of course - there is some connection between any two types - And there can be a way to transform the first into the second. What are you looking for?
20:33:55 <davean> I don't think there is any place you'd have to sensibly choose between them for example.
20:33:57 <hellwolf> fmap (\f -> f a) (something :: IO (a -> b))?
20:34:13 <hellwolf> but converse probably doesn't work
20:34:43 <davean> Oh conversion works, it just doesn't do anytihng I'd ever expect to be sensible
20:35:32 <hellwolf> I have a -> m b, but my type needs m (a -> b)
20:35:51 <davean> well that you can convert.
20:35:52 <davean> er
20:35:54 <davean> sorryu
20:35:57 <davean> Thats not what I meant to say
20:36:06 <davean> Thats NOT something you can convert
20:36:16 <davean> Not unless you enumerate all As
20:36:20 <davean> *all 'a's
20:37:54 × merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 244 seconds)
20:38:10 <davean> The conversion only makes sense in the other direction
20:38:13 <EvanR> do the two types be construed as being some kind of modal logic
20:38:40 <EvanR> a -> m b, m (a -> b)
20:38:54 <int-e> :t readFile
20:38:54 <EvanR> if so maybe there is a logical connection between them
20:38:55 <lambdabot> FilePath -> IO String
20:39:20 <int-e> (trying to squeeze that safely into IO (FilePath -> String) is obviously not possible)
20:39:37 × sord937 quits (~sord937@gateway/tor-sasl/sord937) (Quit: sord937)
20:39:39 <int-e> (short of reading all conceivable files which would be insane)
20:39:50 <EvanR> bingo
20:39:57 <EvanR> that's what it does
20:40:04 <davean> but concievable. Actually its not that insane, I've actually done that using the filesystem directly on a transactional FS
20:40:22 <davean> Reading a stream of transactions to keep it updated.
20:40:51 <davean> Also do that regularly with git backing it, feed both into the head of a Reflex network.
20:41:26 <davean> the filesystem version is for live edits
20:41:27 <hellwolf> if m is a contravariant maybe; but that's not my case, m is just a regular functor/monad.
20:41:39 <int-e> those are restricted scenarios compared to reading an arbitrary text file
20:42:01 <davean> int-e: sorta, I mean it just changes the root to /
20:42:11 <davean> which is ... fine?
20:42:17 <davean> Large though
20:42:26 <EvanR> I found the forms https://en.wikipedia.org/wiki/Modal_logic#Intuitive_problems_with_deontic_logic
20:42:39 <hellwolf> so, I guess I can say that type system is telling me off, I must obey. Who needs dependency types.
20:42:45 <davean> but this is why I said the conversion only really works in one direction
20:42:59 <davean> hellwolf: or you're wrong about what the API is capible of
20:43:13 <davean> hellwolf: It could be telling you off, or it could be telling you you're wrong.
20:43:20 <hellwolf> I hope I am, I am doing the API.
20:43:35 <hellwolf> I am juggling balls.
20:46:51 × krei-se quits (~krei-se@p200300f1cfff12b8da9ef3fffe7fdac8.dip0.t-ipconnect.de) (Quit: ZNC 1.9.1 - https://znc.in)
20:47:39 × ljdarj quits (~Thunderbi@user/ljdarj) (Quit: ljdarj)
20:49:13 merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl)
20:54:13 × merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 248 seconds)
20:58:35 j1n37- joins (~j1n37@user/j1n37)
20:58:46 krei-se joins (~krei-se@p50829f98.dip0.t-ipconnect.de)
20:59:05 × amadaluzia quits (~amadaluzi@user/amadaluzia) (Ping timeout: 244 seconds)
20:59:29 × j1n37 quits (~j1n37@user/j1n37) (Ping timeout: 260 seconds)
20:59:33 amadaluzia joins (~amadaluzi@user/amadaluzia)
21:01:11 <hellwolf> that deontic logic reference is a rabbit hole...
21:01:20 <hellwolf> not sure how it's related, but the shape does look the same.
21:01:53 <hellwolf> As a straw man category theorists would likely to say, it may be an example of some category.
21:04:43 <geekosaur> I'm confused. looks to me like you're trying to shove a Monad into an Applicative-shaped hole
21:05:10 × takuan quits (~takuan@d8D86B601.access.telenet.be) (Remote host closed the connection)
21:05:17 × Sorevian quits (~Sorevian@2a01:4b00:869f:4100:3142:dca3:9a6b:93c3) (Quit: Client closed)
21:06:12 merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl)
21:08:41 <tomsmeding> hellwolf: if you end up needing to shove an `a -> IO b` in an `IO (a -> b)`-shaped hole, then you either need to make the effects in the function you have in hand independent of its `a` input, or, if that cannot be done, change the type of the hole
21:09:16 <tomsmeding> while this was kind of already said by other people above, I just wanted to summarise :p
21:09:38 <EvanR> ok what if you go the other way
21:09:53 <EvanR> is it a free forgetful situation xD
21:10:07 <tomsmeding> EvanR: you have an `IO (a -> b)` and you need to shove it into an `a -> IO b`-shaped hole?
21:10:12 <EvanR> yeah
21:10:27 × merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 244 seconds)
21:10:35 <EvanR> going the first way you're restricted in the kind of effects you can do
21:10:40 j1n37 joins (~j1n37@user/j1n37)
21:10:51 <tomsmeding> if you're in an IO context, you can `\mf -> do f <- mf; return (pure . f)`
21:10:58 <tomsmeding> if you're not, then it doesn't work
21:11:04 × j1n37- quits (~j1n37@user/j1n37) (Ping timeout: 252 seconds)
21:11:31 <tomsmeding> or you would duplicate the effects, which is in general not what you want (but it may be acceptable in some specific circumstances)
21:12:00 <tomsmeding> so as was said already, neither direction is something you can always do :p
21:12:08 <EvanR> right
21:12:20 <EvanR> though what you CAN do ... is kind of hard to determine without defined IO
21:13:52 <monochrom> I guess [a->b] -> a->[b] shows the problem, or at least why you must sacrifice something.
21:14:29 × amadaluzia quits (~amadaluzi@user/amadaluzia) (Ping timeout: 248 seconds)
21:14:30 <tomsmeding> the `IO (FilePath -> String)` example also illustrated it quite well, I think
21:14:37 <tomsmeding> ("that's not readFile")
21:15:02 × __monty__ quits (~toonn@user/toonn) (Quit: leaving)
21:17:04 <tomsmeding> monochrom: actually, your function is quite okay
21:17:07 <tomsmeding> :t (.) <$> flip map <*> const (flip id)
21:17:08 <lambdabot> [a -> b] -> a -> [b]
21:17:23 × Moyst quits (~moyst@user/moyst) (Ping timeout: 244 seconds)
21:17:25 <monochrom> I am now trying to reconcile that with how sometimes we say that Monad is an upgrade of Applicative by upgrading M (a -> b) -> M a -> M b to (a -> M b) -> M a -> M b.
21:17:26 <tomsmeding> (clearly this is better than
21:17:27 <tomsmeding> :t \l x -> map ($ x) l
21:17:28 <lambdabot> [a -> b] -> a -> [b]
21:17:42 <tomsmeding> ... oh, in my local ghci the latter version had differently-named type variables)
21:19:04 <tomsmeding> monochrom: if you are already in an M context, then you can convert easily from M (a -> b) to a -> M b; to use your types, you are indeed in an M context
21:20:19 Moyst joins (~moyst@user/moyst)
21:20:42 <tomsmeding> being in an M context does not help for going the other way
21:21:02 <tomsmeding> hence if you could use (<*>), you can also use (>>=); but if you were using (>>=), you can't necessarily use (<*>) instead
21:21:12 <tomsmeding> it's consistent. :)
21:21:19 <monochrom> Right, cannot convert <*> to >>=
21:21:32 <tomsmeding> (the other way round)
21:21:38 <tomsmeding> oh
21:21:40 merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl)
21:21:40 <tomsmeding> sure
21:21:44 <monochrom> >:)
21:22:00 <tomsmeding> cannot convert <*> to >>=, and cannot convert users of >>= to users of <*>
21:22:06 <tomsmeding> stupid dualities
21:22:25 <tomsmeding> "cannot implement >>= using <*>" is clearer, IMO
21:23:08 × tromp quits (~textual@2001:1c00:3487:1b00:cdc3:f42b:30fc:1c61) (Quit: My iMac has gone to sleep. ZZZzzz…)
21:23:37 <monochrom> Was just talking with a friend who teaches computability and NP-completeness, so let me close with "cannot reduce >>= to <*>" for extra confusion!
21:24:24 tromp joins (~textual@2001:1c00:3487:1b00:cdc3:f42b:30fc:1c61)
21:24:34 tomsmeding is off to bed, that's enough
21:26:48 × merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 268 seconds)
21:27:53 <hellwolf> wow, you guys are fast.
21:28:24 <hellwolf> fwiw, I used IO just to make it clear it was a monad; but it's actually a State or just a m.
21:28:41 <hellwolf> But related to the quest, but not the same problem. I made something type-check, but not sure what I am doing completely. maybe I shoudl to go to bed too
21:28:50 <monochrom> "that escalated quickly" >:)
21:37:12 merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl)
21:37:55 Tuplanolla joins (~Tuplanoll@91-159-69-59.elisa-laajakaista.fi)
21:38:30 amadaluzia joins (~amadaluzi@user/amadaluzia)
21:40:40 fantom joins (~fantom@33be818f.skybroadband.com)
21:41:58 × a_fantom quits (~fantom@33be818f.skybroadband.com) (Ping timeout: 244 seconds)
21:42:11 × merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 244 seconds)
21:46:39 MariaRira39 joins (~MariaRira@host-79-43-27-181.retail.telecomitalia.it)
21:48:43 × MariaRira39 quits (~MariaRira@host-79-43-27-181.retail.telecomitalia.it) (Client Quit)
21:52:59 merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl)
21:57:57 × merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 265 seconds)
21:59:10 Sgeo joins (~Sgeo@user/sgeo)
22:08:46 merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl)
22:10:21 vanishingideal joins (~vanishing@user/vanishingideal)
22:11:04 × machinedgod quits (~machinedg@d108-173-18-100.abhsia.telus.net) (Ping timeout: 276 seconds)
22:13:46 × merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds)
22:16:31 prdak joins (~Thunderbi@user/prdak)
22:20:35 × amadaluzia quits (~amadaluzi@user/amadaluzia) (Read error: Connection reset by peer)
22:20:40 × prdak quits (~Thunderbi@user/prdak) (Ping timeout: 252 seconds)
22:20:54 amadaluzia joins (~amadaluzi@user/amadaluzia)
22:22:13 × tromp quits (~textual@2001:1c00:3487:1b00:cdc3:f42b:30fc:1c61) (Quit: My iMac has gone to sleep. ZZZzzz…)
22:24:17 tromp joins (~textual@2001:1c00:3487:1b00:cdc3:f42b:30fc:1c61)
22:24:33 merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl)
22:25:37 × target_i quits (~target_i@user/target-i/x-6023099) (Quit: leaving)
22:29:37 × merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 248 seconds)
22:36:10 × tromp quits (~textual@2001:1c00:3487:1b00:cdc3:f42b:30fc:1c61) (Quit: My iMac has gone to sleep. ZZZzzz…)
22:40:21 merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl)
22:42:12 × chexum quits (~quassel@gateway/tor-sasl/chexum) (Ping timeout: 264 seconds)
22:42:28 chexum joins (~quassel@gateway/tor-sasl/chexum)
22:42:31 <hellwolf> https://x.com/deusaquilus/status/1919866616331800614 shots fired at monad; why do people keep coming up with syntax just to hide things?
22:43:22 hellwolf looking at the mirror, but feeling content that it's all {-# LANGUAGE ... #-} to blame.
22:43:43 bitdex joins (~bitdex@gateway/tor-sasl/bitdex)
22:43:59 <EvanR> IO as an example monad might not be wise, at some point someone questioned if it was even a monad xD
22:45:18 × merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds)
22:45:43 <hellwolf> does it looks like a monad, and quarks like a monad?
22:46:05 <hellwolf> (though monad is supposed to be an ugly fish)
22:46:24 <hellwolf> there is a crypto bro project called monad. but don't look it up, it might ruin your day.
22:46:45 hellwolf feel self-deprecating about being in the crypto again.
22:47:55 <monochrom> What is crypto bro?
22:49:40 <hellwolf> crypto project that has a bro vibe.
22:50:21 × drewr quits (~drew@user/drewr) (Ping timeout: 252 seconds)
22:52:31 sayurc joins (~sayurc@169.150.203.34)
22:53:47 <monochrom> You know, I agree with that post, and take it to its logical conclusion: Just write SQL itself, it is literally 100% better than any encoding of SQL.
22:55:16 × gentauro quits (~gentauro@user/gentauro) (Ping timeout: 276 seconds)
22:55:17 Lears joins (~Leary@user/Leary/x-0910699)
22:56:09 merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl)
22:57:04 mistivia joins (~mistivia@user/mistivia)
22:57:35 × mistivia_ quits (~mistivia@user/mistivia) (Read error: Connection reset by peer)
22:57:41 <haskellbridge> <Liamzee> you still need to deserialize the return types
22:58:28 × Leary quits (~Leary@user/Leary/x-0910699) (Read error: Connection reset by peer)
22:58:52 × Lord_of_Life quits (~Lord@user/lord-of-life/x-2819915) (Ping timeout: 252 seconds)
22:59:23 Lord_of_Life joins (~Lord@user/lord-of-life/x-2819915)
23:00:36 <hellwolf> So, what do you think of quasiquote template haskell based approach?
23:00:40 <monochrom> Just for the sake of being the devil's advocate: Why?
23:00:48 Square joins (~Square@user/square)
23:01:01 × vanishingideal quits (~vanishing@user/vanishingideal) (Ping timeout: 244 seconds)
23:01:04 × merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds)
23:01:14 gentauro joins (~gentauro@user/gentauro)
23:01:36 <hellwolf> what do you mean?
23:01:50 <monochrom> Why do I still need to deserialize the return types.
23:02:15 <monochrom> Deserialize to what, and who needs it, and why.
23:02:36 <haskellbridge> <Liamzee> to Haskell types, I mean, the result of the query
23:03:01 × sprout quits (~sprout@2a02-a448-3a80-0-c61c-b515-5509-58e7.fixed6.kpn.net) (Ping timeout: 268 seconds)
23:03:05 <monochrom> Why to Haskell types? Why not get rid of even that Haskell program, for example?
23:03:48 <haskellbridge> <Liamzee> too obviously socratic
23:04:01 <monochrom> Maybe I should describe one of my use cases.
23:04:34 sprout joins (~sprout@84-80-106-227.fixed.kpn.net)
23:04:56 <int-e> You could simply not answer inane "what do you think of" questions that are asked without motivation or other direction or context that would confine the scope of the answer.
23:05:34 <monochrom> I have a lot of student marks to process. Various marking platforms give me student marks as CSV. In the past I wrote my own Haskell program with cassava to read, compute, write. But I can see a future where I just use sqlite, in fact even just the sqlite command line. My Haskell program will be obsoleted.
23:06:22 <monochrom> Read: My role as a Haskell programmer to maintain that Haskell code is also obsoleted.
23:06:44 <haskellbridge> <Liamzee> advantages of such an approach: simplicity. disadvantages of such an approach: how performant is going straight through the database? how safe is using sqlite instead?
23:06:45 <EvanR> the grass is always greener
23:06:59 <haskellbridge> <Liamzee> If I say "Scanners Live in Vain", would anyone get the reference?
23:07:11 <EvanR> I keep all my accounts for self employment in sqlite and then came to same conclusion, why?
23:07:15 <haskellbridge> <Liamzee> nope, and that just makes me annoying
23:07:16 <int-e> . o O ( meet my haymaker )
23:07:47 <EvanR> some other thing would have been easier since I wouldn't have to maintain it
23:10:12 j1n37- joins (~j1n37@user/j1n37)
23:10:36 × shr\ke quits (~shrike@user/shrke:31298) (Ping timeout: 252 seconds)
23:10:41 × j1n37 quits (~j1n37@user/j1n37) (Ping timeout: 248 seconds)
23:10:53 × sprotte24 quits (~sprotte24@p200300d16f36aa00202cf2be69d2c7e4.dip0.t-ipconnect.de) (Quit: Leaving)
23:11:56 merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl)
23:17:06 bdmg_ joins (~myJebba@177.138.161.234)
23:18:35 × merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 244 seconds)
23:20:41 shr\ke joins (~shrike@user/paxhumana)
23:20:41 × shr\ke quits (~shrike@user/paxhumana) (Changing host)
23:20:41 shr\ke joins (~shrike@user/shrke:31298)
23:23:34 × Unicorn_Princess quits (~Unicorn_P@user/Unicorn-Princess/x-3540542) (Remote host closed the connection)
23:25:10 <haskellbridge> <Liamzee> oh, and to fill out the useless reference, "Scanners Live in Vain" refers to a short story by a US army intelligence guy (who was also a disclosed CIA officer after his death) about a fraternity of space pilots who went grueling and dehumanizing hardship to safely chaperone people across worlds. One day, someone invents a technological workaround that renders their job irrelevant, so they connive to have the guy...
23:25:15 <haskellbridge> ... murdered and his project covered up. Of course, it's a pulp science fiction story, so their plot is foiled, but to some extent it seems relevant to modern software development, no?
23:25:50 <haskellbridge> <Liamzee> /s/ who went/ who went through/
23:26:23 geekosaur was afk but knew the reference
23:26:35 <geekosaur> Vonnegut's first story iirc
23:26:53 <haskellbridge> <Liamzee> no, Cordwainer Smith / Paul Linebarger (real name, wrote under pseudonyms due to the nature of his work)
23:27:04 <geekosaur> ah, whoops
23:27:15 <geekosaur> too many old SF shorts writers
23:29:57 merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl)
23:33:43 <hellwolf> question to emacs user again: why haskell-mode does not indent function parameters in new lines?
23:34:03 <hellwolf> *in the next line? not sure how to speak english anymore
23:34:26 × merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds)
23:34:32 <hellwolf> https://paste.tomsmeding.com/vDyxr8yb
23:34:48 <hellwolf> I don't find this default indentation experience (using <tab>) is very nice.
23:37:28 <hellwolf> just tried out https://ormolu-live.tweag.io to see the difference
23:38:17 <hellwolf> hmm, not sure I like ormolu one neither, but certainly looks nicer than mine.
23:42:10 j1n37 joins (~j1n37@user/j1n37)
23:44:02 × j1n37- quits (~j1n37@user/j1n37) (Ping timeout: 276 seconds)
23:45:27 merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl)
23:50:12 × merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds)
23:54:45 × adamCS quits (~adamCS@70.19.85.77) (Ping timeout: 244 seconds)
23:59:18 <haskellbridge> <sm> cool SF reference, and speaking of which, I just found this fine story on HN:
23:59:18 <haskellbridge> https://standardebooks.org/ebooks/e-m-forster/short-fiction/text/the-machine-stops

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