Home liberachat/#haskell: Logs Calendar

Logs on 2024-04-29 (liberachat/#haskell)

00:02:25 × califax quits (~califax@user/califx) (Remote host closed the connection)
00:04:10 califax joins (~califax@user/califx)
00:06:37 demon-cat joins (~demon-cat@dund-15-b2-v4wan-169642-cust1347.vm6.cable.virginm.net)
00:09:54 cashew joins (~cashewsta@65.17.175.150)
00:10:39 × tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
00:11:19 × demon-cat quits (~demon-cat@dund-15-b2-v4wan-169642-cust1347.vm6.cable.virginm.net) (Ping timeout: 256 seconds)
00:17:23 × cashew quits (~cashewsta@65.17.175.150) (Ping timeout: 264 seconds)
00:19:06 cashew joins (~cashewsta@65.17.175.150)
00:24:43 yin_ joins (~yin@user/zero)
00:26:09 × pretty_dumm_guy quits (trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) (Quit: WeeChat 3.5)
00:35:03 × TonyStone quits (~TonyStone@user/TonyStone) (Quit: Leaving)
00:40:20 × xff0x quits (~xff0x@softbank219059019218.bbtec.net) (Ping timeout: 245 seconds)
00:42:50 × ezzieyguywuf quits (~Unknown@user/ezzieyguywuf) (Ping timeout: 245 seconds)
00:44:47 ezzieyguywuf joins (~Unknown@user/ezzieyguywuf)
00:47:28 × esph quits (~weechat@user/esph) (Ping timeout: 246 seconds)
00:49:11 esph joins (~weechat@user/esph)
00:49:29 × yin_ quits (~yin@user/zero) (Ping timeout: 252 seconds)
00:51:51 × y04nn quits (~username@2a03:1b20:8:f011::e10d) (Ping timeout: 272 seconds)
00:57:09 × Ranhir quits (~Ranhir@157.97.53.139) (Read error: Connection reset by peer)
00:58:40 × mei quits (~mei@user/mei) (Remote host closed the connection)
00:58:51 Ranhir joins (~Ranhir@157.97.53.139)
01:00:47 × cashew quits (~cashewsta@65.17.175.150) (Remote host closed the connection)
01:07:02 × bitdex quits (~bitdex@gateway/tor-sasl/bitdex) (Remote host closed the connection)
01:13:05 mei joins (~mei@user/mei)
01:15:02 bitdex joins (~bitdex@gateway/tor-sasl/bitdex)
01:26:20 yin_ joins (~yin@user/zero)
01:30:36 × otto_s quits (~user@p5b0442ac.dip0.t-ipconnect.de) (Ping timeout: 268 seconds)
01:31:48 otto_s joins (~user@p5de2f4e6.dip0.t-ipconnect.de)
01:34:05 × yin_ quits (~yin@user/zero) (Ping timeout: 240 seconds)
01:34:27 Rodney_ joins (~Rodney@176.254.244.83)
01:39:23 × waleee quits (~waleee@h-176-10-144-38.NA.cust.bahnhof.se) (Quit: WeeChat 4.1.2)
01:44:06 × FinnElija quits (~finn_elij@user/finn-elija/x-0085643) (Ping timeout: 260 seconds)
01:45:58 FinnElija joins (~finn_elij@user/finn-elija/x-0085643)
01:46:24 cashew joins (~cashewsta@65.17.175.150)
01:50:45 × cashew quits (~cashewsta@65.17.175.150) (Ping timeout: 245 seconds)
02:00:04 × esph quits (~weechat@user/esph) (Ping timeout: 260 seconds)
02:04:40 madeleine-sydney joins (~madeleine@c-76-155-235-153.hsd1.co.comcast.net)
02:05:02 × xdminsy quits (~xdminsy@117.147.70.233) (Quit: Konversation terminated!)
02:18:41 machinedgod joins (~machinedg@d173-183-246-216.abhsia.telus.net)
02:25:25 cashew joins (~cashewsta@65.17.175.150)
02:30:20 × td_ quits (~td@i53870914.versanet.de) (Ping timeout: 245 seconds)
02:31:18 peterbecich joins (~Thunderbi@47.229.123.186)
02:32:15 td_ joins (~td@i5387093D.versanet.de)
02:35:47 × machinedgod quits (~machinedg@d173-183-246-216.abhsia.telus.net) (Ping timeout: 260 seconds)
02:38:15 × cashew quits (~cashewsta@65.17.175.150) (Remote host closed the connection)
02:50:07 philopsos joins (~caecilius@user/philopsos)
03:00:27 × euleritian quits (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Ping timeout: 255 seconds)
03:01:15 × philopsos quits (~caecilius@user/philopsos) (Ping timeout: 268 seconds)
03:08:51 euleritian joins (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de)
03:09:08 aforemny joins (~aforemny@i59F516F8.versanet.de)
03:09:44 × aforemny_ quits (~aforemny@i59f516da.versanet.de) (Ping timeout: 252 seconds)
03:19:27 × peterbecich quits (~Thunderbi@47.229.123.186) (Ping timeout: 268 seconds)
03:27:13 ddellacosta joins (~ddellacos@ool-44c73d29.dyn.optonline.net)
03:32:30 × JimL quits (~quassel@89.162.16.26) (Quit: https://quassel-irc.org - Chat comfortably. Anywhere.)
03:35:25 JimL joins (~quassel@89.162.16.26)
03:41:10 cashew joins (~cashewsta@65.17.175.150)
03:44:02 × ec quits (~ec@gateway/tor-sasl/ec) (Ping timeout: 260 seconds)
03:50:01 ec joins (~ec@gateway/tor-sasl/ec)
03:51:01 andrewboltachev joins (~andrewbol@178.141.238.156)
03:51:47 <andrewboltachev> Hello! Does anyone has example of successful wasm32-wasi-cabal builds? Aka cabal in non-standard environments
03:51:55 × xigua quits (~xigua@user/xigua) (Read error: Connection reset by peer)
03:52:09 xigua joins (~xigua@user/xigua)
03:52:38 <andrewboltachev> I have a simple WebAssembly project and Cabal is saying me:
03:52:39 <andrewboltachev> Error: cabal: Could not resolve dependencies:
03:52:40 <andrewboltachev> [__0] trying: h1-0.1.0.0 (user goal)
03:52:40 <andrewboltachev> [__1] next goal: base (dependency of h1)
03:52:41 <andrewboltachev> [__1] rejecting: base-4.20.0.0/installed-inplace (conflict: h1 =>
03:52:41 <andrewboltachev> base==4.19.1.0)
03:53:16 × cashew quits (~cashewsta@65.17.175.150) (Remote host closed the connection)
03:55:34 <jackdk> andrewboltachev: whatever your `h1` package is (is it the name of your test program?), it's claiming a dependency on `base-4.19.1.0`, but the compiler you're using provides `base-4.20.0.0`. https://wiki.haskell.org/Base_package has not updated to list `4.20.0.0`, but I would get it's the GHC 9.10 RC? I would try adjusting the `base` bound in `h1.cabal` to `== 4.20.0.0` to see if that gets you moving.
03:56:02 <jackdk> (`s/I would get/I would guess/`)
04:02:32 <andrewboltachev> jackdk: aha, trying
04:03:59 _ht joins (~Thunderbi@28-52-174-82.ftth.glasoperator.nl)
04:04:09 <andrewboltachev> well it's this then: https://paste.tomsmeding.com/fT1guof4
04:04:30 <andrewboltachev> so I think I should get compiler that will provide 4.19
04:05:07 <jackdk> It is possible to override those bounds, one sec
04:05:20 <andrewboltachev> as deps that are deep in the tree ask for 4.19. 4.20 is too new (and an answer to all of the universe or sth)
04:05:22 <jackdk> Also, if you're playing with WASM, only 9.10 has the WASM->JS FFI
04:05:56 <andrewboltachev> yes, I think I need that
04:06:32 <andrewboltachev> ➜ h1 git:(master) ✗ wasm32-wasi-ghc --version
04:06:33 <andrewboltachev> The Glorious Glasgow Haskell Compilation System, version 9.11.20240420
04:07:34 <andrewboltachev> I think I've launched an exported function from the wasm file successfully
04:07:34 <jackdk> Create a `cabal.project` file next to your `.cabal` file, telling cabal that it's allowed to relax the `base` bound for all pacakges: https://www.irccloud.com/pastebin/anN72RgX/cabal.project
04:08:19 × hgolden quits (~hgolden@2603:8000:9d00:3ed1:f849:272c:fda5:33c9) (Remote host closed the connection)
04:09:08 × ski quits (~ski@ext-1-033.eduroam.chalmers.se) (Ping timeout: 252 seconds)
04:09:30 ski joins (~ski@ext-1-033.eduroam.chalmers.se)
04:10:27 <andrewboltachev> wow: https://paste.tomsmeding.com/AKjcvAqu
04:11:40 <andrewboltachev> will try cabal.project file with this now (didn't work 'cause of "base" error as well): https://github.com/tweag/ormolu/tree/master/ormolu-live
04:11:45 hgolden joins (~hgolden@2603:8000:9d00:3ed1:2678:8497:aa5c:7fa9)
04:12:39 <jackdk> That is a three-year-old version of `bytestring`, and it had a correct upper bound which we just told GHC to ignore. Try adding `constraints: bytestring ^>= 0.12.1.0` to your `cabal.project` to see if it gives you a better shot at building.
04:15:38 <andrewboltachev> jackdk: thanks. I'm still a noob in Haskell, even though I created this project myself: https://github.com/andrewboltachev/matcher/blob/master/src/Logicore/Matcher/Core.hs
04:15:47 michalz joins (~michalz@185.246.207.203)
04:16:36 <jackdk> Someone should do something about cabal's solver output, because while it has the information most people need, it fails to communicate it clearly.
04:16:59 <sclv> we have a big pr landing on it
04:17:34 <sclv> may not help enough, but its something
04:18:34 <jackdk> I am delighted to hear this - does the PR have an output sample?
04:18:59 <andrewboltachev> similar foldl' error though: https://paste.tomsmeding.com/ao8zbeZA
04:19:25 <andrewboltachev> how do I define which ver. to pick for unordered-containers (and other library)?
04:19:46 <andrewboltachev> I guess earliest one that doesn't clash with foldl'
04:21:40 tri joins (~tri@ool-18bc2e74.dyn.optonline.net)
04:22:44 <jackdk> The re-export of `foldl'` from `Prelude` is a new change in `base-4.20.0.0`: https://gitlab.haskell.org/ghc/ghc/-/blob/master/libraries/base/changelog.md?ref_type=heads . Add another constraint to your `cabal.project` to select `unordered-containers ^>=0.2.0`, and you may need to add more `allow-newer`: https://hackage.haskell.org/package/unordered-containers-0.2.20/changelog
04:23:21 <jackdk> `constraints: bytestring ^>= 0.12.1.0, unordered-containers ^>= 0.2.20`, I guess. Welcome to life on the bleeding edge
04:23:22 <andrewboltachev> jackdk: maybe I can instead shift down to 4.19?
04:23:47 <jackdk> You could try that, and if it has enough WASM support for what you're trying I'd recommend it
04:26:30 <andrewboltachev> okay. but, what should I reinstall?
04:27:02 <andrewboltachev> the whole `wasm32-wasi` stack?
04:27:17 <andrewboltachev> i.e. which has the wasm32-wasi-ghc
04:28:16 <jackdk> You'll need a 9.8-series `wasm32-wasi-ghc`, from wherever you got the 9.10-series one from. I'm not really sure, sorry, I mostly work with native code
04:32:42 <andrewboltachev> jackdk: thanks for useful help! I guess I'll crash into it just by: `FLAVOUR=9.8 ./setup.sh` :-)
04:35:20 <jackdk> No worries, good luck!
04:39:10 cashew joins (~cashewsta@65.17.175.150)
04:39:47 peterbecich joins (~Thunderbi@47.229.123.186)
04:41:28 × bilegeek quits (~bilegeek@2600:1008:b025:e5c1:3276:e96d:2d6f:14d7) (Quit: Leaving)
04:43:30 × cashew quits (~cashewsta@65.17.175.150) (Ping timeout: 255 seconds)
04:48:34 mima joins (~mmh@aftr-62-216-211-53.dynamic.mnet-online.de)
04:51:20 × tri quits (~tri@ool-18bc2e74.dyn.optonline.net) (Remote host closed the connection)
04:52:52 × bitdex quits (~bitdex@gateway/tor-sasl/bitdex) (Remote host closed the connection)
04:52:53 tri joins (~tri@ool-18bc2e74.dyn.optonline.net)
04:57:27 × tri quits (~tri@ool-18bc2e74.dyn.optonline.net) (Ping timeout: 255 seconds)
04:58:56 bitdex joins (~bitdex@gateway/tor-sasl/bitdex)
04:59:06 × euleritian quits (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Ping timeout: 256 seconds)
05:02:14 euleritian joins (~euleritia@dynamic-176-007-161-086.176.7.pool.telefonica.de)
05:07:40 × Moyst_ quits (~moyst@user/moyst) (Ping timeout: 260 seconds)
05:08:58 Moyst joins (~moyst@user/moyst)
05:09:16 <andrewboltachev> Does `ghc-experimental` only exist on 4.20? Is it a library or something else (like a flag to enable)?
05:10:53 × peterbecich quits (~Thunderbi@47.229.123.186) (Ping timeout: 272 seconds)
05:14:27 × mei quits (~mei@user/mei) (Ping timeout: 268 seconds)
05:15:04 × euleritian quits (~euleritia@dynamic-176-007-161-086.176.7.pool.telefonica.de) (Read error: Connection reset by peer)
05:15:23 euleritian joins (~euleritia@77.22.252.56)
05:20:37 × takuan quits (~takuan@178-116-218-225.access.telenet.be) (Ping timeout: 268 seconds)
05:24:25 × madeleine-sydney quits (~madeleine@c-76-155-235-153.hsd1.co.comcast.net) (Quit: Konversation terminated!)
05:29:23 × euleritian quits (~euleritia@77.22.252.56) (Ping timeout: 264 seconds)
05:29:49 euleritian joins (~euleritia@dynamic-176-007-161-086.176.7.pool.telefonica.de)
05:30:03 × Sgeo quits (~Sgeo@user/sgeo) (Read error: Connection reset by peer)
05:31:45 rosco joins (~rosco@yp-146-6.tm.net.my)
05:31:57 waldo joins (~waldo@user/waldo)
05:32:31 × euleritian quits (~euleritia@dynamic-176-007-161-086.176.7.pool.telefonica.de) (Read error: Connection reset by peer)
05:32:48 euleritian joins (~euleritia@77.22.252.56)
05:39:20 mei joins (~mei@user/mei)
05:44:41 × rembo10 quits (~rembo10@main.remulis.com) (Quit: ZNC 1.8.2 - https://znc.in)
05:45:32 rembo10 joins (~rembo10@main.remulis.com)
05:46:42 × euleritian quits (~euleritia@77.22.252.56) (Ping timeout: 256 seconds)
05:47:24 euleritian joins (~euleritia@dynamic-176-007-161-086.176.7.pool.telefonica.de)
05:48:07 emergence2 joins (emergence@ip221.ip-51-79-0.net)
05:48:30 × emergence2 quits (emergence@ip221.ip-51-79-0.net) (Client Quit)
05:57:58 acidjnk joins (~acidjnk@p200300d6e714dc2634962692522af535.dip0.t-ipconnect.de)
06:05:16 × waldo quits (~waldo@user/waldo) (Ping timeout: 246 seconds)
06:09:35 waldo joins (~waldo@user/waldo)
06:09:37 × waldo quits (~waldo@user/waldo) (Client Quit)
06:10:34 × ec quits (~ec@gateway/tor-sasl/ec) (Ping timeout: 260 seconds)
06:11:33 × rosco quits (~rosco@yp-146-6.tm.net.my) (Quit: Lost terminal)
06:16:25 xff0x joins (~xff0x@softbank219059019218.bbtec.net)
06:19:27 × euphores quits (~SASL_euph@user/euphores) (Quit: Leaving.)
06:20:29 <haskellbridge> <J​ade> it's part of the split of base into base, ghc-internal and ghc-experimental
06:31:00 euphores joins (~SASL_euph@user/euphores)
06:33:18 y04nn joins (~username@2a03:1b20:8:f011::e10d)
06:40:11 × Benzi-Junior quits (~BenziJuni@232-148-209-31.dynamic.hringdu.is) (Ping timeout: 264 seconds)
06:41:11 Benzi-Junior joins (~BenziJuni@232-148-209-31.dynamic.hringdu.is)
06:45:58 tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
06:46:54 lortabac joins (~lortabac@2a01:e0a:541:b8f0:55ab:e185:7f81:54a4)
06:58:41 sord937 joins (~sord937@gateway/tor-sasl/sord937)
07:05:43 Tuplanolla joins (~Tuplanoll@91-159-69-59.elisa-laajakaista.fi)
07:06:07 × xff0x quits (~xff0x@softbank219059019218.bbtec.net) (Ping timeout: 256 seconds)
07:07:40 xff0x joins (~xff0x@softbank219059019218.bbtec.net)
07:11:17 × tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Read error: Connection reset by peer)
07:21:23 × xff0x quits (~xff0x@softbank219059019218.bbtec.net) (Ping timeout: 260 seconds)
07:22:52 xff0x joins (~xff0x@softbank219059019218.bbtec.net)
07:33:27 gmg joins (~user@user/gehmehgeh)
07:35:04 × andrewboltachev quits (~andrewbol@178.141.238.156) (Ping timeout: 250 seconds)
07:37:42 chele joins (~chele@user/chele)
07:42:13 oo_miguel joins (~Thunderbi@78-11-181-16.static.ip.netia.com.pl)
07:43:15 × xff0x quits (~xff0x@softbank219059019218.bbtec.net) (Ping timeout: 245 seconds)
07:45:05 xff0x joins (~xff0x@softbank219059019218.bbtec.net)
07:57:52 machinedgod joins (~machinedg@d173-183-246-216.abhsia.telus.net)
08:00:12 × euleritian quits (~euleritia@dynamic-176-007-161-086.176.7.pool.telefonica.de) (Read error: Connection reset by peer)
08:00:30 euleritian joins (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de)
08:17:36 AlexNoo_ joins (~AlexNoo@94.233.241.102)
08:18:47 mreh joins (~matthew@host86-160-168-68.range86-160.btcentralplus.com)
08:19:17 sawilagar joins (~sawilagar@user/sawilagar)
08:20:04 × AlexZenon quits (~alzenon@178.34.161.189) (Ping timeout: 268 seconds)
08:20:09 zmt00 joins (~zmt00@user/zmt00)
08:21:18 × AlexNoo quits (~AlexNoo@178.34.161.189) (Ping timeout: 268 seconds)
08:22:31 × swamp_ quits (~zmt00@user/zmt00) (Ping timeout: 260 seconds)
08:23:25 AlexZenon joins (~alzenon@94.233.241.102)
08:29:03 danza joins (~francesco@151.37.162.148)
08:33:19 × danza quits (~francesco@151.37.162.148) (Ping timeout: 246 seconds)
08:34:32 × ft quits (~ft@p4fc2a1f9.dip0.t-ipconnect.de) (Quit: leaving)
08:50:03 zmt01 joins (~zmt00@user/zmt00)
08:52:55 × zmt00 quits (~zmt00@user/zmt00) (Ping timeout: 246 seconds)
08:52:58 __monty__ joins (~toonn@user/toonn)
08:56:24 × y04nn quits (~username@2a03:1b20:8:f011::e10d) (Ping timeout: 255 seconds)
09:09:04 × tzh quits (~tzh@c-73-164-206-160.hsd1.or.comcast.net) (Quit: zzz)
09:12:58 xdminsy joins (~xdminsy@117.147.70.233)
09:19:00 wei2912 joins (~wei2912@137.132.26.109)
09:19:39 × wei2912 quits (~wei2912@137.132.26.109) (Client Quit)
09:20:20 wei2912 joins (~wei2912@137.132.26.109)
09:23:56 danza joins (~francesco@151.37.162.148)
09:35:56 × FinnElija quits (~finn_elij@user/finn-elija/x-0085643) (Remote host closed the connection)
09:35:56 × chiselfuse quits (~chiselfus@user/chiselfuse) (Remote host closed the connection)
09:36:51 × xff0x quits (~xff0x@softbank219059019218.bbtec.net) (Ping timeout: 268 seconds)
09:36:52 FinnElija joins (~finn_elij@user/finn-elija/x-0085643)
09:37:00 chiselfuse joins (~chiselfus@user/chiselfuse)
09:51:08 × danza quits (~francesco@151.37.162.148) (Read error: Connection reset by peer)
09:51:47 danza joins (~francesco@151.37.162.148)
10:03:39 rosco joins (~rosco@yp-146-6.tm.net.my)
10:06:03 Square3 joins (~Square4@user/square)
10:12:17 demon-cat joins (~demon-cat@82-132-217-251.dab.02.net)
10:17:50 × mwnaylor quits (~user@2601:5cf:837e:2bb0::824e) (Ping timeout: 245 seconds)
10:31:24 × demon-cat quits (~demon-cat@82-132-217-251.dab.02.net) (Ping timeout: 252 seconds)
10:32:27 xff0x joins (~xff0x@softbank219059019218.bbtec.net)
10:36:54 × rosco quits (~rosco@yp-146-6.tm.net.my) (Ping timeout: 252 seconds)
10:39:28 × lortabac quits (~lortabac@2a01:e0a:541:b8f0:55ab:e185:7f81:54a4) (Ping timeout: 255 seconds)
10:46:41 noumenon joins (~noumenon@113.51-175-156.customer.lyse.net)
10:49:00 × Lord_of_Life quits (~Lord@user/lord-of-life/x-2819915) (Ping timeout: 252 seconds)
10:52:05 Lord_of_Life joins (~Lord@user/lord-of-life/x-2819915)
10:53:12 demon-cat joins (~demon-cat@82-132-217-251.dab.02.net)
10:58:17 × lambdap2371 quits (~lambdap@static.167.190.119.168.clients.your-server.de) (Quit: Ping timeout (120 seconds))
10:58:48 × teqwve quits (teqwve@static.141.38.201.195.clients.your-server.de) (Quit: cya)
10:59:06 × lockna_ quits (~lockna@static.139.16.130.94.clients.your-server.de) (Quit: ZNC 1.8.2 - https://znc.in)
10:59:07 × fiddlerw- quits (~fiddlerwo@user/fiddlerwoaroof) (Quit: Gone.)
10:59:17 × A_Dragon quits (A_D@libera/staff/dragon) (Quit: ZNC - https://znc.in)
10:59:24 lortabac joins (~lortabac@2a01:e0a:541:b8f0:55ab:e185:7f81:54a4)
10:59:59 × wei2912 quits (~wei2912@137.132.26.109) (Quit: Lost terminal)
11:01:04 × kmein quits (~weechat@user/kmein) (Ping timeout: 255 seconds)
11:01:21 lockna joins (~lockna@2a01:4f8:10b:14f1::2)
11:01:25 teqwve joins (teqwve@static.141.38.201.195.clients.your-server.de)
11:01:32 A_Dragon joins (A_D@libera/staff/dragon)
11:01:43 × canta quits (~canta@user/canta) (Ping timeout: 246 seconds)
11:01:44 × kosmikus quits (~kosmikus@nullzig.kosmikus.org) (Ping timeout: 256 seconds)
11:01:44 × cjay quits (cjay@nerdbox.nerd2nerd.org) (Ping timeout: 256 seconds)
11:02:08 kmein joins (~weechat@user/kmein)
11:02:12 fiddlerwoaroof joins (~fiddlerwo@user/fiddlerwoaroof)
11:02:25 kosmikus joins (~kosmikus@nullzig.kosmikus.org)
11:03:05 lambdap2371 joins (~lambdap@static.167.190.119.168.clients.your-server.de)
11:03:37 × sord937 quits (~sord937@gateway/tor-sasl/sord937) (Ping timeout: 260 seconds)
11:03:37 × gmg quits (~user@user/gehmehgeh) (Ping timeout: 260 seconds)
11:05:03 gmg joins (~user@user/gehmehgeh)
11:05:22 sord937 joins (~sord937@gateway/tor-sasl/sord937)
11:07:12 cjay joins (cjay@nerdbox.nerd2nerd.org)
11:13:47 canta joins (~canta@user/canta)
11:25:20 × danza quits (~francesco@151.37.162.148) (Ping timeout: 245 seconds)
11:46:45 × euphores quits (~SASL_euph@user/euphores) (Ping timeout: 252 seconds)
11:50:00 andrewboltachev joins (~andrewbol@178.141.238.156)
11:53:16 euphores joins (~SASL_euph@user/euphores)
11:55:17 rosco joins (~rosco@yp-146-6.tm.net.my)
12:00:44 TheOneWhoFuncts joins (~Thunderbi@104.28.233.86)
12:13:40 × ddellacosta quits (~ddellacos@ool-44c73d29.dyn.optonline.net) (Ping timeout: 245 seconds)
12:16:07 kuribas joins (~user@ip-188-118-57-242.reverse.destiny.be)
12:20:38 × chexum quits (~quassel@gateway/tor-sasl/chexum) (Ping timeout: 260 seconds)
12:23:21 chexum joins (~quassel@gateway/tor-sasl/chexum)
12:26:03 <TheOneWhoFuncts> Hello, I am a haskell beginner and I wanted to ask how are applicative functors generalization of Monads wrt Category theory?
12:27:35 × demon-cat quits (~demon-cat@82-132-217-251.dab.02.net) (Ping timeout: 264 seconds)
12:28:35 <ncf> every (strong) monad gives rise to an applicative functor (often two), so there are "more" applicative functors than monads
12:29:02 × chiselfuse quits (~chiselfus@user/chiselfuse) (Remote host closed the connection)
12:29:59 chiselfuse joins (~chiselfus@user/chiselfuse)
12:33:23 <TheOneWhoFuncts> Ok, so is it possible to implement <*> using bind and return?
12:33:23 <TheOneWhoFuncts> Also, what does an applicative functor correspond to in category theory?
12:33:23 <TheOneWhoFuncts> P.S - I have seen bartosz milewski's lecture videos for category theory I and II
12:34:43 <ncf> @src ap
12:34:43 <lambdabot> ap = liftM2 id
12:34:47 <ncf> :t ap
12:34:48 <lambdabot> Monad m => m (a -> b) -> m a -> m b
12:34:58 <ncf> @src liftM2
12:34:59 <lambdabot> liftM2 f m1 m2 = do
12:34:59 <lambdabot> x1 <- m1
12:34:59 <lambdabot> x2 <- m2
12:34:59 <lambdabot> return (f x1 x2)
12:35:45 <ncf> a second implementation would be liftM2' f m1 m2 = do x2 <- m2; x1 <- m1; return (f x1 x2) -- this corresponds to sequencing the effects backwards, or right-to-left
12:35:53 eron joins (~eron@168.196.116.143)
12:36:43 <ncf> applicative functors can be modelled as either lax closed functors or (most often) lax monoidal functors
12:37:34 <ncf> (these notions coincide on closed monoidal categories)
12:43:57 × bitdex quits (~bitdex@gateway/tor-sasl/bitdex) (Quit: = "")
12:44:54 × gmg quits (~user@user/gehmehgeh) (Ping timeout: 260 seconds)
12:45:56 gmg joins (~user@user/gehmehgeh)
12:46:15 <TheOneWhoFuncts> Oh ok Thanks a lot!
12:46:15 <TheOneWhoFuncts> Is there any ghci command like the one you used for viewing source?
12:50:02 AlexNoo_ is now known as AlexNoo
13:03:41 × xff0x quits (~xff0x@softbank219059019218.bbtec.net) (Ping timeout: 256 seconds)
13:04:50 <probie> If the code is interpreted by GHCi, you can use :list, but that won't work for compiled modules so probably won't do what you want
13:05:47 × rosco quits (~rosco@yp-146-6.tm.net.my) (Remote host closed the connection)
13:06:39 rosco joins (~rosco@yp-146-6.tm.net.my)
13:07:08 <TheOneWhoFuncts> Thanks, I guess online search is the best option
13:07:31 × sand-witch quits (~m-mzmz6l@vmi833741.contaboserver.net) (Ping timeout: 256 seconds)
13:09:41 xff0x joins (~xff0x@softbank219059019218.bbtec.net)
13:12:54 × chiselfuse quits (~chiselfus@user/chiselfuse) (Ping timeout: 260 seconds)
13:15:20 chiselfuse joins (~chiselfus@user/chiselfuse)
13:18:23 × andrewboltachev quits (~andrewbol@178.141.238.156) (Quit: Client closed)
13:21:00 × xff0x quits (~xff0x@softbank219059019218.bbtec.net) (Ping timeout: 255 seconds)
13:25:08 demon-cat joins (~demon-cat@82-132-217-251.dab.02.net)
13:28:10 ystael joins (~ystael@user/ystael)
13:29:57 × demon-cat quits (~demon-cat@82-132-217-251.dab.02.net) (Ping timeout: 272 seconds)
13:36:10 xff0x joins (~xff0x@softbank219059019218.bbtec.net)
13:40:02 famubu joins (~julinuser@user/famubu)
13:41:03 × dsrt^ quits (~cd@c-98-242-74-66.hsd1.ga.comcast.net) (Remote host closed the connection)
13:41:17 <famubu> I had been trying to use megaparsec to make a parser for simple regex. For concatenation, I have a constructor `Cat Re Re` where `Re` is type of regex. How should I make parser for `Cat`? It should be like `Parser Re -> Parser Re -> Parser (Re -> Re -> Re)`, right?
13:42:54 mei is now known as Guest488
13:42:54 × Guest488 quits (~mei@user/mei) (Killed (platinum.libera.chat (Nickname regained by services)))
13:42:59 mei joins (~mei@user/mei)
13:43:37 <famubu> I mean, it should take two parser (one each for the two regex) and make a parser for the concatenation of them, right?
13:45:07 <ncf> parse a list of atoms and then fold that into a regex using Cat and your constructor for the empty regex?
13:45:31 demon-cat joins (~demon-cat@dund-15-b2-v4wan-169642-cust1347.vm6.cable.virginm.net)
13:47:22 × Miroboru quits (~myrvoll@178-164-114.82.3p.ntebredband.no) (Quit: Lost terminal)
13:47:25 <famubu> The top answer here also does it that way: https://stackoverflow.com/questions/9020254/using-parsec-to-parse-regular-expressions
13:47:33 <famubu> Is that how it's usually done?
13:48:26 <EvanR> is the regular expression language regular
13:48:35 <EvanR> can it "parse" itself
13:48:53 <dolio> No.
13:50:18 × demon-cat quits (~demon-cat@dund-15-b2-v4wan-169642-cust1347.vm6.cable.virginm.net) (Ping timeout: 268 seconds)
13:50:27 <famubu> 🤔
13:50:29 × euleritian quits (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Ping timeout: 240 seconds)
13:51:00 <famubu> I heard people saying that parsing needs something more than regex. So I guess not.
13:51:04 <ncf> it has parentheses
13:51:30 <famubu> Ah.. that itself makes it at least context free to do the balancing act, I guess.
13:51:31 <EvanR> it depends on the language
13:51:46 <ncf> is there *a* regular language that describes regular expressions
13:52:08 <famubu> No
13:52:17 <famubu> Recursion is needed.
13:52:40 famubu is wondering if what he just typed is correct..
13:53:02 EvanR runs famubu through the type checker
13:53:07 <ncf> actually, is Unlambda regular
13:53:11 <famubu> :D
13:53:51 <ncf> i guess not
13:53:59 euleritian joins (~euleritia@dynamic-176-007-169-212.176.7.pool.telefonica.de)
13:55:30 <ncf> take a long enough word like `^n k^n then pump the backticks
13:55:43 <ncf> er k^{n+1}
13:58:50 Miroboru joins (~myrvoll@178-164-114.82.3p.ntebredband.no)
14:01:03 <ncf> https://stackoverflow.com/questions/19533804/is-there-a-regular-language-to-represent-regular-expressions
14:01:15 <ncf> » a regular language cannot be isomorphic to a non-regular language
14:01:46 tri joins (~tri@ool-18bbef1a.static.optonline.net)
14:01:55 <dolio> What does isomorphic mean there?
14:02:01 <ncf> no idea
14:02:17 <ncf> i wonder if the isomorphism has to be "regular" itself for this to work :^)
14:02:49 <ncf> (i.e. implementable as a finite-state transducer or something)
14:02:57 <dolio> I was thinking you could try to replace parentheses by something like numbers that say how to group the following expressions. But I think that still isn't regular.
14:03:06 <ncf> yeah
14:03:23 <ncf> that's basically what unlambda (or generally prefix notation) does, but with unary numbers
14:03:31 <dolio> You could recognize the numbers, but not whether the rest of the string is able to be grouped successfully by the numbers.
14:05:24 target_i joins (~target_i@user/target-i/x-6023099)
14:05:41 × tri quits (~tri@ool-18bbef1a.static.optonline.net) (Ping timeout: 240 seconds)
14:06:22 cashew joins (~cashewsta@65.17.175.150)
14:06:31 × xff0x quits (~xff0x@softbank219059019218.bbtec.net) (Ping timeout: 246 seconds)
14:10:16 × eron quits (~eron@168.196.116.143) (Ping timeout: 250 seconds)
14:14:34 causal joins (~eric@50.35.88.207)
14:15:44 × TheOneWhoFuncts quits (~Thunderbi@104.28.233.86) (Quit: TheOneWhoFuncts)
14:17:19 Guest83 joins (~Guest83@104.28.201.82)
14:17:20 Guest83 parts (~Guest83@104.28.201.82) ()
14:17:51 × ocra8 quits (ocra8@user/ocra8) (Quit: WeeChat 4.2.2)
14:19:51 <famubu> Another megaparsec doubt: To have a parser for parsing `r{2,3}` where r is repeated as per bounds, what should the type of the parser be? Should it be `Parser (Re -> Re)`? But then, how would I take care of the two `Int` values?
14:20:57 <ncf> the type of the parser dictates what the parser produces, rather than what it parses. `r{2,3}` is a regular expression, so your type is Parser Re
14:21:47 demon-cat joins (~demon-cat@dund-15-b2-v4wan-169642-cust1347.vm6.cable.virginm.net)
14:22:02 <ncf> Parser (Re -> Re) could be used if you wanted to parse a regular *operator* (like * or ?) separately
14:22:13 <ncf> since those correspond to functions Re -> Re
14:22:27 <famubu> Oh.. okay. Thanks.
14:26:12 <famubu> Then would concatenation (if made as `Cat Re Re` constructor) also not be an operator?
14:26:36 <ncf> a binary operator, yes
14:26:37 <famubu> I had figured `r{2,3}` to be an operator because it takes another regex and kind of augments uit.
14:26:55 <ncf> if you mean just the {2,3} part sure
14:27:55 <famubu> This is what I got at the moment: https://bpa.st/GEVQ
14:28:48 <famubu> Oh wait.. I think `cat` was modified afterwards..
14:29:30 × demon-cat quits (~demon-cat@dund-15-b2-v4wan-169642-cust1347.vm6.cable.virginm.net) (Ping timeout: 245 seconds)
14:29:34 <famubu> Let me try fixing that.
14:30:27 <famubu> I got the concatenation wrong as well: https://bpa.st/RUFA
14:30:32 <famubu> Any pointers anyone?
14:31:14 <ncf> what's wrong there?
14:31:30 <famubu> It's parsing as `-- Cat (Atom 'A') (Cat (Atom 'B') (Cat (Atom 'C') (Atom 'D')))
14:31:53 <ncf> and?
14:31:53 <famubu> I wanted `Cat (Atom 'A') (Cat (Atom 'B') (Cat (Atom 'C')))`
14:32:04 <int-e> but there's a D
14:32:26 <famubu> Well, yeah that too.
14:32:28 <int-e> Cat (Atom 'C') makes no sense
14:32:37 <int-e> `Cat` needs a second argument
14:32:52 <int-e> (well it makes sense in isolation but not in your expression)
14:33:34 <famubu> Yeah I meant: `Cat (Atom 'A') (Cat (Atom 'B') (Cat (Atom 'C') (Atom 'D')))`
14:33:44 <int-e> that is exactly what you got
14:33:47 <ncf> these are the same pictures
14:34:26 <famubu> Huh...
14:34:27 <famubu> Oh...
14:34:29 <famubu> Sorry!!!
14:34:32 <ncf> perhaps use an infix operator for Cat so that it's clearer
14:34:50 <famubu> Okay.
14:35:30 × rvalue quits (~rvalue@user/rvalue) (Read error: Connection reset by peer)
14:36:00 rvalue joins (~rvalue@user/rvalue)
14:37:33 <famubu> How do we mention associativity with infix?
14:37:42 demon-cat joins (~demon-cat@dund-15-b2-v4wan-169642-cust1347.vm6.cable.virginm.net)
14:37:48 <ncf> infixl/infixr
14:39:19 × justsomeguy quits (~justsomeg@user/justsomeguy) (Ping timeout: 268 seconds)
14:39:31 <famubu> Is there a way to directly make a constructor infix? Or should we make a function and make that infix?
14:40:27 <lortabac> you can define an infix constructor by using a name that starts with ':'
14:40:41 <lortabac> and only contains symbols
14:40:53 <ncf> data Re a = ... | Re a :- Re a | ...
14:41:28 × euleritian quits (~euleritia@dynamic-176-007-169-212.176.7.pool.telefonica.de) (Read error: Connection reset by peer)
14:41:48 euleritian joins (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de)
14:42:10 <EvanR> > 2 :+ 1
14:42:12 <lambdabot> 2 :+ 1
14:42:20 <EvanR> :t 2 :+ 1
14:42:21 <lambdabot> Num a => Complex a
14:42:52 <famubu> Thanks! Made it to: https://bpa.st/AJQA
14:42:56 <famubu> Got output like `-- Atom 'A' :- (Atom 'B' :- (Atom 'C' :- Atom 'D'))`
14:45:13 <int-e> Yeah the derived Show instances don't take the declared associativity into account.
14:45:31 × stefan-__ quits (~m-yh2rcc@42dots.de) (Remote host closed the connection)
14:45:55 stefan-__ joins (~m-yh2rcc@42dots.de)
14:45:56 <famubu> But it is showing it as right associativity here, right?
14:45:59 <int-e> and neither do the Read instances
14:46:04 <int-e> yes it is
14:46:45 <famubu> Oh you meant for the other version.
14:47:09 <int-e> I was testing a trimmed down version in ghci: infixl :-; data X = X :- X | Z deriving (Show, Read)
14:47:38 <int-e> because I didn't remember what Show and Read do in that case.
14:48:47 justsomeguy joins (~justsomeg@user/justsomeguy)
14:50:46 <famubu> Where can we find documentation mentioning infixl,infixr,etc? Couldn't spot it with a simple internet search.
14:51:17 <EvanR> haskell report xD
14:52:43 <int-e> https://www.haskell.org/onlinereport/decls.html#fixity
14:53:24 <int-e> (putting `haskell "infixl" "infixr"` into a search engine worked for me)
14:55:35 <famubu> Thanks
14:57:17 <mauke> https://www.haskell.org/onlinereport/haskell2010/haskellch4.html#x10-820004.4.2
14:57:24 <mauke> in the "newer" report
14:58:28 <EvanR> duck it
14:58:43 <famubu> I had been often finding it difficult to find documentation for haskell. Even for things that I had seen earlier but forgotten. I guess a glance at the haskell report is a way to go in such circumstances.
14:59:29 × rosco quits (~rosco@yp-146-6.tm.net.my) (Quit: Lost terminal)
15:02:21 <EvanR> worse case scenario start putting together a haskell cheatsheet for your own inscrutable purposes
15:02:23 × euleritian quits (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Ping timeout: 264 seconds)
15:02:45 <int-e> write a compiler to really understand all the details
15:02:52 <famubu> Well.. I have started: https://rawtext.club/~famubu/wiki/haskell/general.html
15:02:58 <famubu> Don't know how accurate.
15:03:26 euleritian joins (~euleritia@dynamic-176-007-169-212.176.7.pool.telefonica.de)
15:04:27 <EvanR> an inaccurate cheatsheet is definitely hazardous
15:05:04 <famubu> 😬
15:05:17 <famubu> It at least gives something to build on.
15:05:57 famubu is going afk
15:07:35 × euleritian quits (~euleritia@dynamic-176-007-169-212.176.7.pool.telefonica.de) (Read error: Connection reset by peer)
15:07:52 euleritian joins (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de)
15:18:22 shapr joins (~user@c-24-218-186-89.hsd1.ma.comcast.net)
15:25:42 × chele quits (~chele@user/chele) (Remote host closed the connection)
15:29:21 tri joins (~tri@ool-18bbef1a.static.optonline.net)
15:33:46 × tri quits (~tri@ool-18bbef1a.static.optonline.net) (Ping timeout: 256 seconds)
15:37:45 × kuribas quits (~user@ip-188-118-57-242.reverse.destiny.be) (Ping timeout: 252 seconds)
15:41:41 × demon-cat quits (~demon-cat@dund-15-b2-v4wan-169642-cust1347.vm6.cable.virginm.net) (Ping timeout: 272 seconds)
15:43:11 pyooque joins (~puke@user/puke)
15:43:11 × puke quits (~puke@user/puke) (Killed (lithium.libera.chat (Nickname regained by services)))
15:43:11 pyooque is now known as puke
15:46:06 <shapr> In case anyone wants to enable code coverage for tests, you will find success with: cabal clean && cabal configure --enable-coverage --enable-tests && cabal test
15:46:36 <shapr> you will *not* find success with: cabal run tests --enable-coverage # THIS DOES NOT DO WHAT YOU WANT
15:46:51 × lortabac quits (~lortabac@2a01:e0a:541:b8f0:55ab:e185:7f81:54a4) (Ping timeout: 268 seconds)
15:47:24 <EvanR> cabal test vs cabal run tests... what
15:48:15 <shapr> I dunno
15:48:24 <shapr> this is live coverage of this exciting news event
15:48:27 <shapr> ok, it's not exciting
15:48:47 <shapr> but at least I figured out why I wasn't seeing any coverage from the tests
15:49:34 <shapr> I'm working on Kudzu again, and I'd like to compare QuickCheck and HedgeHog tests, if I can create equivalent properties.
15:49:54 <int-e> This is HNN reporting live from the scene where we can observe a developer uncovering the mysteries of a nefarious cabal that has made it their mission to drive 42.765% of its users insane.
15:49:54 <shapr> I could create props in QuickCheck and run them with both QC and HH?
15:50:04 <shapr> int-e: does feel like that sometimes
15:50:36 <shapr> on the good side, cabal configure told me that I had an existing cabal.project.local and it made a backup and wrote the correct combination of options into the new cabal.project.local
15:52:43 <shapr> hm
15:52:47 <shapr> I thought it was enough to have "coverage: True" but cabal gave me this cabal.project.local: ignore-project: False \n tests: True \n coverage: True \n library-coverage: True
15:54:07 × justsomeguy quits (~justsomeg@user/justsomeguy) (Ping timeout: 256 seconds)
15:54:38 demon-cat joins (~demon-cat@dund-15-b2-v4wan-169642-cust1347.vm6.cable.virginm.net)
15:56:35 <shapr> next step is to see if I can extract the tix files with their counts so I can get raw coverage before it's stuffed into HPC's html output
16:03:28 hiredman joins (~hiredman@frontier1.downey.family)
16:04:42 × jumper149 quits (~jumper149@base.felixspringer.xyz) (Ping timeout: 252 seconds)
16:05:01 × pavonia quits (~user@user/siracusa) (Quit: Bye!)
16:06:37 jumper149 joins (~jumper149@base.felixspringer.xyz)
16:06:53 × YuutaW quits (~YuutaW@mail.yuuta.moe) (Ping timeout: 268 seconds)
16:07:15 econo_ joins (uid147250@id-147250.tinside.irccloud.com)
16:22:00 × machinedgod quits (~machinedg@d173-183-246-216.abhsia.telus.net) (Ping timeout: 260 seconds)
16:23:43 lortabac joins (~lortabac@2a01:e0a:541:b8f0:55ab:e185:7f81:54a4)
16:23:44 × euleritian quits (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Read error: Connection reset by peer)
16:23:46 gaff joins (~gaff@49.207.216.126)
16:23:50 euleritian joins (~euleritia@dynamic-176-007-169-212.176.7.pool.telefonica.de)
16:24:12 × euleritian quits (~euleritia@dynamic-176-007-169-212.176.7.pool.telefonica.de) (Read error: Connection reset by peer)
16:24:29 euleritian joins (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de)
16:26:57 <famubu> Hi again. I am trying to write a regex parser with megaparsec. Am trying to make a parser to deal with `r{2,3}` where the corresponding constructor is `Rep Re Integer Integer`. How would I do this using operator table? I guess we need the parser to take a regex and 2 integers as argument? But all arguments need to be same type, right? Then that isn't it, right?
16:27:31 <famubu> This is what I got now: https://bpa.st/XOWA
16:27:59 × remedan quits (~remedan@ip-78-102-118-253.bb.vodafone.cz) (Quit: Bye!)
16:28:10 tzh joins (~tzh@c-73-164-206-160.hsd1.or.comcast.net)
16:29:12 <ncf> it's a postfix operator
16:29:51 <gaff> Using the State monad helps in threading the state through computations behind the scenes, but you will/may still need to use get and put in individual functions involved, right?
16:31:33 <ncf> famubu: rep should only parse {n,m} and return the function \r -> Rep r n m
16:34:57 <ncf> gaff: sure, if that's the API you're using
16:36:20 <gaff> ncf: that repeated use of `get` and `put` in functions involved wouldn't be considered "state bookkeeping" boilerplate code then?
16:38:07 × lortabac quits (~lortabac@2a01:e0a:541:b8f0:55ab:e185:7f81:54a4) (Ping timeout: 255 seconds)
16:38:13 <ncf> i don't know how i'm supposed to answer that without seeing any code!
16:38:46 × gmg quits (~user@user/gehmehgeh) (Remote host closed the connection)
16:38:46 × chiselfuse quits (~chiselfus@user/chiselfuse) (Read error: Connection reset by peer)
16:38:47 × stiell_ quits (~stiell@gateway/tor-sasl/stiell) (Remote host closed the connection)
16:39:38 chiselfuse joins (~chiselfus@user/chiselfuse)
16:39:52 stiell_ joins (~stiell@gateway/tor-sasl/stiell)
16:39:53 gmg joins (~user@user/gehmehgeh)
16:40:09 <gaff> here is an example: `f = do { s <- get; let (a, b) = g s; put b; return a }` and similar stuff in perhaps other functions as well.
16:41:24 × jumper149 quits (~jumper149@base.felixspringer.xyz) (Quit: WeeChat 4.2.1)
16:41:50 <ncf> in that specific case you could perhaps just use `state`
16:41:51 <ncf> :t state
16:41:52 <lambdabot> MonadState s m => (s -> (a, s)) -> m a
16:42:11 <ncf> f = state g
16:42:34 remedan joins (~remedan@ip-78-102-118-253.bb.vodafone.cz)
16:43:56 × rvalue quits (~rvalue@user/rvalue) (Read error: Connection reset by peer)
16:44:25 <gaff> ncf: thanks. I know. But i am asking that structure I presented, or more generally the use of `get` and `put`, are expected monadic operations in code dealing with the State monad?
16:44:26 rvalue joins (~rvalue@user/rvalue)
16:45:10 <ncf> sure
16:45:33 <ncf> why else would they be exported
16:46:38 <geekosaur> the state monad would be pretty useless if you couldn't access or update the state
16:46:39 <EvanR> you say boilerplate and say can you move the boilerplate to a function which can be called
16:46:46 <EvanR> I say*
16:47:11 × noumenon quits (~noumenon@113.51-175-156.customer.lyse.net) (Quit: Leaving)
16:47:50 × Lears quits (~Leary]@user/Leary/x-0910699) (Remote host closed the connection)
16:47:53 <gaff> ncf: well, I want to be clear about what is state "bookkeeping" (which you would have to do if you didn't use the State monad) vs the use of these functions `get` and `put`.
16:47:57 tri joins (~tri@ool-18bbef1a.static.optonline.net)
16:48:26 <ncf> that's not a well-defined concept, just a vibe
16:48:55 justsomeguy joins (~justsomeg@user/justsomeguy)
16:49:14 <ncf> if you end up using get and put in between every function call then i would say you are bookkeeping and defeating the purpose of State
16:49:44 <ncf> but other than that get and put are just part of the normal State interface
16:50:28 <gaff> ncf: I am not really clear what you meant there.
16:52:07 <ncf> i mean you are asking for a general yes/no answer to something that is essentially a value judgement (bookkeeping) and highly context-dependent
16:52:15 <gaff> Consider the following example. you are writing a bunch of parser combinators, and many of these combinators use `get` and `put`. Is that circumventing the State monad?
16:52:35 × tri quits (~tri@ool-18bbef1a.static.optonline.net) (Ping timeout: 260 seconds)
16:53:55 <ncf> @8ball
16:53:55 <lambdabot> Unknown command, try @list
16:54:11 <ncf> :(
16:54:12 × Square3 quits (~Square4@user/square) (Ping timeout: 252 seconds)
16:54:26 <EvanR> outlook unclear call again
16:55:47 <ncf> let's go with no
16:56:03 <gaff> ncf: thanks
16:56:54 Square joins (~Square@user/square)
16:58:51 × demon-cat quits (~demon-cat@dund-15-b2-v4wan-169642-cust1347.vm6.cable.virginm.net) (Ping timeout: 256 seconds)
17:00:38 × gaff quits (~gaff@49.207.216.126) ()
17:12:08 andrewboltachev joins (~andrewbol@178.141.238.156)
17:15:50 demon-cat joins (~demon-cat@dund-15-b2-v4wan-169642-cust1347.vm6.cable.virginm.net)
17:18:32 × sawilagar quits (~sawilagar@user/sawilagar) (Quit: Leaving)
17:20:15 × demon-cat quits (~demon-cat@dund-15-b2-v4wan-169642-cust1347.vm6.cable.virginm.net) (Ping timeout: 256 seconds)
17:20:55 ocra8 joins (ocra8@user/ocra8)
17:21:03 machinedgod joins (~machinedg@d173-183-246-216.abhsia.telus.net)
17:22:44 × manwithluck quits (manwithluc@gateway/vpn/protonvpn/manwithluck) (Ping timeout: 268 seconds)
17:23:33 manwithluck joins (manwithluc@gateway/vpn/protonvpn/manwithluck)
17:26:26 × machinedgod quits (~machinedg@d173-183-246-216.abhsia.telus.net) (Ping timeout: 268 seconds)
17:33:43 ec joins (~ec@gateway/tor-sasl/ec)
17:36:20 × cashew quits (~cashewsta@65.17.175.150) (Remote host closed the connection)
17:36:39 × euleritian quits (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Read error: Connection reset by peer)
17:37:12 euleritian joins (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de)
17:50:53 × euleritian quits (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Read error: Connection reset by peer)
17:56:42 demon-cat joins (~demon-cat@dund-15-b2-v4wan-169642-cust1347.vm6.cable.virginm.net)
17:59:31 philopsos joins (~caecilius@user/philopsos)
17:59:36 sand-witch joins (~m-mzmz6l@vmi833741.contaboserver.net)
18:03:46 × andrewboltachev quits (~andrewbol@178.141.238.156) (Quit: Client closed)
18:04:03 × ezzieyguywuf quits (~Unknown@user/ezzieyguywuf) (Ping timeout: 252 seconds)
18:05:50 cashew joins (~cashewsta@65.17.175.150)
18:07:37 × cashew quits (~cashewsta@65.17.175.150) (Remote host closed the connection)
18:07:50 cashew joins (~cashewsta@65.17.175.150)
18:08:13 qqq joins (~qqq@92.43.167.61)
18:08:19 ezzieyguywuf joins (~Unknown@user/ezzieyguywuf)
18:10:46 dsrt^ joins (~cd@c-98-242-74-66.hsd1.ga.comcast.net)
18:13:32 tri joins (~tri@ool-18bbef1a.static.optonline.net)
18:17:47 × tri quits (~tri@ool-18bbef1a.static.optonline.net) (Ping timeout: 252 seconds)
18:23:15 × ezzieyguywuf quits (~Unknown@user/ezzieyguywuf) (Ping timeout: 245 seconds)
18:25:06 ezzieyguywuf joins (~Unknown@user/ezzieyguywuf)
18:26:01 × cashew quits (~cashewsta@65.17.175.150) (Remote host closed the connection)
18:26:35 cashew joins (~cashewsta@65.17.175.150)
18:30:07 × cashew quits (~cashewsta@65.17.175.150) (Remote host closed the connection)
18:30:16 × ezzieyguywuf quits (~Unknown@user/ezzieyguywuf) (Ping timeout: 268 seconds)
18:30:19 cashew joins (~cashewsta@65.17.175.150)
18:30:37 ezzieyguywuf joins (~Unknown@user/ezzieyguywuf)
18:30:50 tri joins (~tri@ool-18bbef1a.static.optonline.net)
18:35:06 × tri quits (~tri@ool-18bbef1a.static.optonline.net) (Ping timeout: 255 seconds)
18:38:46 × euphores quits (~SASL_euph@user/euphores) (Quit: Leaving.)
18:46:35 <monochrom> Belate hot take: Which part of computation at all is not bookkeeping anyway. >:)
18:49:41 lortabac joins (~lortabac@2a01:e0a:541:b8f0:55ab:e185:7f81:54a4)
18:50:14 euphores joins (~SASL_euph@user/euphores)
18:51:14 × ezzieyguywuf quits (~Unknown@user/ezzieyguywuf) (Ping timeout: 268 seconds)
18:52:11 × sord937 quits (~sord937@gateway/tor-sasl/sord937) (Quit: sord937)
18:53:00 ezzieyguywuf joins (~Unknown@user/ezzieyguywuf)
18:55:24 andrewboltachev joins (~andrewbol@178.141.238.156)
19:03:43 × demon-cat quits (~demon-cat@dund-15-b2-v4wan-169642-cust1347.vm6.cable.virginm.net) (Ping timeout: 260 seconds)
19:05:03 ft joins (~ft@p4fc2a1f9.dip0.t-ipconnect.de)
19:05:08 × ezzieyguywuf quits (~Unknown@user/ezzieyguywuf) (Ping timeout: 256 seconds)
19:06:43 ezzieyguywuf joins (~Unknown@user/ezzieyguywuf)
19:07:05 × cashew quits (~cashewsta@65.17.175.150) (Remote host closed the connection)
19:07:39 cashew joins (~cashewsta@65.17.175.150)
19:08:58 × gmg quits (~user@user/gehmehgeh) (Ping timeout: 260 seconds)
19:10:04 gmg joins (~user@user/gehmehgeh)
19:11:24 × gmg quits (~user@user/gehmehgeh) (Remote host closed the connection)
19:12:15 × cashew quits (~cashewsta@65.17.175.150) (Ping timeout: 252 seconds)
19:14:16 gmg joins (~user@user/gehmehgeh)
19:16:06 cashew joins (~cashewsta@65.17.175.150)
19:18:10 demon-cat joins (~demon-cat@dund-15-b2-v4wan-169642-cust1347.vm6.cable.virginm.net)
19:22:43 × demon-cat quits (~demon-cat@dund-15-b2-v4wan-169642-cust1347.vm6.cable.virginm.net) (Ping timeout: 272 seconds)
19:28:43 <bastelfreak> autojoin add
19:29:01 <dolio> Okay.
19:30:15 tri joins (~tri@ool-18bbef1a.static.optonline.net)
19:30:17 <dolio> monochrom: I once had a vague idea that linear logic is all bookkeeping, and in some sense is not computation.
19:30:59 <bastelfreak> autojoin add --run
19:32:41 <dolio> It's only the parts where you move things around without looking at them.
19:34:29 × tri quits (~tri@ool-18bbef1a.static.optonline.net) (Ping timeout: 240 seconds)
19:35:37 × lortabac quits (~lortabac@2a01:e0a:541:b8f0:55ab:e185:7f81:54a4) (Quit: WeeChat 4.2.1)
19:37:12 demon-cat joins (~demon-cat@dund-15-b2-v4wan-169642-cust1347.vm6.cable.virginm.net)
19:43:51 × philopsos quits (~caecilius@user/philopsos) (Ping timeout: 260 seconds)
19:44:19 × demon-cat quits (~demon-cat@dund-15-b2-v4wan-169642-cust1347.vm6.cable.virginm.net) (Ping timeout: 256 seconds)
19:46:58 peterbecich joins (~Thunderbi@47.229.123.186)
19:49:37 Maxdaman1us joins (~Maxdamant@user/maxdamantus)
19:50:59 × Maxdamantus quits (~Maxdamant@user/maxdamantus) (Ping timeout: 264 seconds)
19:54:03 × foul_owl quits (~kerry@185.219.141.160) (Ping timeout: 252 seconds)
19:55:09 × juri_ quits (~juri@implicitcad.org) (Ping timeout: 252 seconds)
19:55:58 foul_owl joins (~kerry@174-21-71-155.tukw.qwest.net)
19:58:06 demon-cat joins (~demon-cat@dund-15-b2-v4wan-169642-cust1347.vm6.cable.virginm.net)
20:01:09 mwnaylor joins (~user@2601:5cf:837e:2bb0::f472)
20:03:21 × _ht quits (~Thunderbi@28-52-174-82.ftth.glasoperator.nl) (Remote host closed the connection)
20:03:57 machinedgod joins (~machinedg@d173-183-246-216.abhsia.telus.net)
20:06:54 × peterbecich quits (~Thunderbi@47.229.123.186) (Ping timeout: 255 seconds)
20:08:58 <shapr> I dug around to find a Haskell library with a decent amount of property based tests, and accelerate is one option
20:09:09 <shapr> Docs said the tests take a long time and much memory, and they were not joking.
20:09:13 × ec quits (~ec@gateway/tor-sasl/ec) (Remote host closed the connection)
20:09:51 ec joins (~ec@gateway/tor-sasl/ec)
20:10:11 <Rembane> shapr: Are you on your way to buy more RAM now?
20:10:42 <tomsmeding> shapr: would you call those things property tests?
20:10:58 <shapr> Rembane: nah, it's only using 32 GB of RAM so far
20:11:05 <tomsmeding> they are essentially unit tests, but because the thing being tested is a compiler, the unit tests are programs, and to test correct compilation of a program you have to generate inputs for it
20:11:13 <shapr> tomsmeding: The nofib tests have a bunch of hedgehog calls, so I hope so?
20:11:18 <tomsmeding> the fact that it uses a property testing _framework_ notwithstanding
20:11:24 <shapr> that's a good point
20:11:26 <Rembane> shapr: Lovely!
20:11:28 <shapr> do you have any other suggestions?
20:11:55 <tomsmeding> the code I write is typically compiler-y so it has the same situation :p
20:12:04 zetef joins (~quassel@2a02:2f00:5202:1200:90bc:b4a5:eea5:19e6)
20:12:19 <shapr> My goal is to compare coverage driven testing to existing test suites, so I'd like to hear about any projects with a big pile of PBT
20:12:34 <tomsmeding> I've asked about this here before, but I find it somewhat awkward that we PL people say that property tests are great, but the standard PL example (compilers) doesn't lend itself very well for property testing
20:12:58 <shapr> I've never tried testing a compiler, why doesn't it lend itself to that?
20:13:06 <tomsmeding> you can roundtrip-test a parser, if can generate valid syntax, and you can do some property testing of optimisations or subroutines of optimisations if you're lucky
20:13:09 <tomsmeding> but that's mostly it
20:13:09 <shapr> Is it because it's difficult to generate AST pieces?
20:13:47 <tomsmeding> it's surprisingly difficult to generate _useful_ AST pieces (there was a paper at one of the major PL conferences about that last year, I can look it up if you want)
20:13:57 <tomsmeding> but that's not even my point, even assuming you can do that there is not a whole lot to property-test
20:14:21 Square3 joins (~Square4@user/square)
20:14:30 <tomsmeding> because a compiler is fundamentally about translating between representations, so to do any large-scale property testing there you have to have a semantics for both your source and your target language, as well as a link between them
20:14:36 <tomsmeding> which is essentially another compiler
20:14:43 <tomsmeding> so that's not helpful
20:15:09 <tomsmeding> you can only test certain components
20:15:15 <shapr> can you pull in equivalence relations?
20:15:20 <tomsmeding> of what?
20:15:56 <shapr> If you had equivalance saturation floating around you could check that the compiler produces something in the output of eq-sat
20:16:04 <shapr> but that's not so useful because you already have eq-sat :-(
20:17:12 × Square quits (~Square@user/square) (Ping timeout: 260 seconds)
20:17:17 <tomsmeding> you mean an equivalence relation on source programs, one on target programs, and an external proof that if S1 ~ S2 && semantics(S1) == semantics(T1) && semantics(S2) == semantics(T2) then also T1 ~ T2?
20:17:23 <tomsmeding> er
20:17:32 <tomsmeding> s/, and an external proof that/and then test that/
20:17:45 <tomsmeding> but then you need to define full semantics again
20:17:55 <tomsmeding> which is not much easier than writing a compiler in the first place
20:18:18 <tomsmeding> maybe if your languages are easy toy languages writing an interpreter for them is easy
20:19:08 <tomsmeding> if you have semantics (interpreters) for source and target languages you can do model testing (a subset of PBT), i.e. generate source programs and test that interpret_src == interpret_tgt . compile
20:19:13 <shapr> the egg group has a tool that discovers equivalences for you
20:19:21 <tomsmeding> equivalences in what
20:19:26 <tomsmeding> source programs? target programs?
20:19:33 <shapr> I think in source programs
20:19:38 <tomsmeding> based on what? :p
20:19:44 <shapr> based on trying a bunch of things
20:19:47 <shapr> brute force from what I read
20:19:56 <tomsmeding> based on seeing whether your compiler produces the same output for them?
20:19:59 <shapr> yup
20:20:01 <tomsmeding> I see
20:20:08 <tomsmeding> and then?
20:20:20 <shapr> then it uses those to build an equivalence graph
20:20:23 <tomsmeding> a human looks at those discovered equivalences and thinks hard about whether they make sense?
20:20:40 <shapr> probably :-)
20:21:09 <monochrom> What is the egg group?
20:21:11 <tomsmeding> it's an interesting way to do things, I hadn't thought about that
20:21:15 <tomsmeding> e-graphs-good
20:21:31 <tomsmeding> some people working on egraphs and saying that they're good
20:21:38 <shapr> :-)
20:22:18 <tomsmeding> this discovered equivalence approach is not an automated testing method, but if you're lucky the synthesised equivalences could I guess be sufficiently abstract that it might genuinely tell you something useful
20:22:24 <tomsmeding> after you filter out the useless stuff
20:22:41 <tomsmeding> all of the commutative properties that are uninteresting but will come out of that
20:22:43 <monochrom> Hrm, I guess people who liked union-find missed the opportunity to form a union-find-good group.
20:23:12 <tomsmeding> I think most academically trained programmers know of the existence of UF
20:23:16 <tomsmeding> the same cannot be said for egraphs
20:23:38 <tomsmeding> though you can implement UF in like <20 lines of code if you're careful
20:23:54 <monochrom> Yeah I'm being sarcastic. Oh we missed the opportunity to form a function-programming-good group too! Oh wait... >:)
20:23:54 <tomsmeding> egraphs are trickier, but also more powerful
20:23:59 <tomsmeding> :D
20:24:03 <tomsmeding> aren't we in there?
20:24:55 <monochrom> We also need a monoid-good group. :)
20:24:58 flounders joins (~flounders@24.246.176.178)
20:25:08 <tomsmeding> yes
20:25:26 <dolio> Trickier than union-find?
20:25:54 <tomsmeding> I can write a passable UF implementation in <15 minutes
20:26:02 <tomsmeding> I cannot at all say the same for egraphs
20:26:38 <tomsmeding> which is not anything deep; egraphs are just more complex, I also cannot write a red-black tree in <15 minutes
20:26:51 <shapr> I can't do much in <15 minutes
20:27:01 waleee joins (~waleee@h-176-10-144-38.NA.cust.bahnhof.se)
20:28:35 <shapr> tomsmeding: oh, I didn't know you did your master's thesis on accelerate
20:29:11 <tomsmeding> I share my office at the university with two PhDs who work on accelerate almost full-time :p
20:29:19 <shapr> neato
20:29:33 <tomsmeding> I don't myself, but I have a highlight on 'accelerate' here on irc
20:29:39 <tomsmeding> (which I why I responded :p)
20:32:18 tri joins (~tri@ool-18bbef1a.static.optonline.net)
20:33:12 <shapr> now it's up to using 60 GB of RAM
20:33:18 <shapr> 2.5 hours
20:33:24 <tomsmeding> what test suite are you running
20:33:28 <tomsmeding> nofib-accelerate in the interpreer?
20:33:44 <tomsmeding> I'm _quite_ sure it's not supposed to do that
20:33:47 <shapr> if that's what I get from accelerate "cabal test -f nofib"
20:33:53 <tomsmeding> on master?
20:33:57 <shapr> I think so
20:34:13 <shapr> there's a bug report that says it does this, but it's not the desired result
20:34:22 <shapr> https://gitlab.haskell.org/ghc/ghc/-/issues/15751
20:34:35 <tomsmeding> doesn't `cabal test` also run doctest
20:34:44 <shapr> yes, doctest runs quickly
20:34:50 <tomsmeding> doctest works for you ?!
20:34:55 <tomsmeding> well that's good I guess
20:35:05 <shapr> I get tix values out of doctest, so I think it runs?
20:35:08 <tomsmeding> I haven't tried recently, I confess, but when I was doing my master thesis I never got that to work
20:35:10 <shapr> I could be wrong
20:35:19 <tomsmeding> doesn't matter anyway if the problem is not there
20:35:48 <shapr> My real goal is to find a big pile of PBTs, I'm thinking accelerate isn't what I want
20:36:00 tomsmeding runs `cabal run nofib-interpreter -f nofib`
20:36:07 <tomsmeding> I don't think so
20:36:21 <shapr> too bad, gotta pick another few candidates
20:36:30 <tomsmeding> and as you may have gathered I don't have a good suggestion for you either
20:36:49 × tri quits (~tri@ool-18bbef1a.static.optonline.net) (Ping timeout: 272 seconds)
20:37:02 <shapr> I wish I could write a SQL query against hackage
20:37:20 <tomsmeding> download all the sources and grep
20:37:23 <shapr> I want to find all direct depends on QuickCheck or Hedgehog, and extract the repository value
20:37:26 <tomsmeding> iirc people have done that before
20:37:54 <shapr> then I can clone all the repos and use ripgrep to see how many modules depend on Hedgehog or QuickCheck
20:38:48 <tomsmeding> https://packdeps.haskellers.com/reverse/QuickCheck
20:41:17 <tomsmeding> the worst part about accelerate's nofib is that compiling the test suite takes ages
20:42:11 <shapr> it doesn't take much time on my system
20:42:16 <shapr> but the runtime is impressive
20:42:23 <shapr> I dunno why it's only running on two cores though
20:42:52 <tomsmeding> nofib-interpreter on current accelerate master takes 25 seconds for me
20:42:54 × dsrt^ quits (~cd@c-98-242-74-66.hsd1.ga.comcast.net) (Remote host closed the connection)
20:44:40 <shapr> many years later, I have published sandwatch: https://hackage.haskell.org/package/sandwatch-0.1.1.0
20:44:58 <shapr> oops, I forgot to add a source repo section *sigh*
20:45:05 × cashew quits (~cashewsta@65.17.175.150) (Remote host closed the connection)
20:45:14 <shapr> https://github.com/shapr/sandwatch
20:45:32 <tomsmeding> shapr: what took 60 GB for you?
20:45:38 cashew joins (~cashewsta@65.17.175.150)
20:45:52 <shapr> nofib is still running, three hours later
20:45:57 <shapr> and it's taking 60 GB of ram
20:46:13 shapr shrugs
20:46:13 <tomsmeding> it finishes in about 25.5 seconds for me with a maximum resident set size of 102 MB
20:46:18 <shapr> oh wow
20:46:27 <tomsmeding> there is something wrong with what's happening for you
20:46:30 <shapr> I'm using ghc 9.6.3
20:46:44 <tomsmeding> 9.4.7 for me, lemme do 9.6.4
20:46:57 <tomsmeding> (need to build the world first)
20:47:01 <shapr> I'm using 5ceb2da5d9ddc4ea0a5705d46bf4de9321ba17da
20:47:11 <shapr> April 9 2024, merge by you
20:47:23 <tomsmeding> ok you miss one commit but that commit is irrelevant if you're not using -fdebug
20:47:28 <tomsmeding> so looks good
20:47:58 <shapr> I am using --enable-coverage and --enable-tests
20:48:00 <shapr> so that might be it
20:48:17 <tomsmeding> hm I'm not doing --enable-coverage
20:48:28 <tomsmeding> lemme try without first
20:48:32 <shapr> I'm improving my kudzu library that uses HPC at runtime to decide when to stop iterating on a PBT
20:48:46 <tomsmeding> is that sound?
20:48:48 × cashew quits (~cashewsta@65.17.175.150) (Remote host closed the connection)
20:48:50 <shapr> sound?
20:49:13 <shapr> I convert hpc's regions into a count of "regions that have been executed"
20:49:23 cashew joins (~cashewsta@65.17.175.150)
20:49:28 <shapr> run a test, if the region count increases, keep going
20:49:53 <shapr> right now I'm using 40 for the number of tests to run without new region execution
20:50:16 <shapr> but I have no way to know if that's too high or low, so I want to try different sizes on a few different projects
20:50:30 <shapr> https://www.scannedinavian.com/run-property-tests-until-coverage-stops-increasing.html
20:50:39 <shapr> I forgot to link to the actual code in that blog post :-|
20:50:47 <shapr> https://github.com/shapr/kudzu/
20:51:06 <shapr> tomsmeding: can you think of a way that could be unsound?
20:52:58 <tomsmeding> > quickCheck $ \(Positive x) -> round (2.000000001 ** fromIntegral (x :: Int) / 1e6) == (round (2 ^ x / 1e6) :: Int)
20:53:00 <lambdabot> error:
20:53:00 <lambdabot> • Couldn't match expected type ‘Test.QuickCheck.Random.QCGen’
20:53:00 <lambdabot> with actual type ‘Positive Int -> Bool’
20:53:08 <tomsmeding> blegh, runs in my ghci
20:53:16 <tomsmeding> fails at x = 45
20:53:26 <tomsmeding> clearly this is a constructed example
20:53:43 <tomsmeding> but my point is that equalities can fail to hold without any conditionals, but seem to be fine for small inputs
20:54:17 <int-e> @check \(Positive x) -> round (2.000000001 ** fromIntegral (x :: Int) / 1e6) == (round (2 ^ x / 1e6) :: Int)
20:54:19 <lambdabot> *** Failed! Falsifiable (after 60 tests and 2 shrinks):
20:54:19 <lambdabot> Positive {getPositive = 58}
20:55:07 <tomsmeding> > find (\x -> round (2.000000001 ** fromIntegral (x :: Int) / 1e6) /= (round (2 ^ x / 1e6) :: Int)) [1..]
20:55:08 <lambdabot> Just 45
20:55:17 <int-e> (it's *not* QuickCheck because QuickCheck tests embed IO)
20:55:30 <tomsmeding> ah right
20:55:46 × mei quits (~mei@user/mei) (Remote host closed the connection)
20:56:15 <tomsmeding> (grr, --enable-coverage rebuilds the world again)
20:57:14 <tomsmeding> shapr: https://math.stackexchange.com/a/111939/68044
20:57:50 × cashew quits (~cashewsta@65.17.175.150) (Ping timeout: 245 seconds)
20:58:10 mei joins (~mei@user/mei)
20:58:39 shapr thinks about that
20:59:02 <tomsmeding> your heuristic might be very useful and applicable in practical cases
20:59:08 <tomsmeding> I'm not saying it's a bad idea
20:59:17 <tomsmeding> I'm just saying that it's a heuristic, and it's not completely sound
20:59:22 <shapr> oh, I agree with that
20:59:32 <shapr> I think that also holds true for property based testing
20:59:48 <shapr> PBT isn't proof by exhaustion or SMT solver
21:00:11 <tomsmeding> true, though adding a more intelligent stopping criterion to PBT sounds like that stopping criterion should give stronger guarantees than "let's do 100 tests"
21:01:02 <tomsmeding> it does tell you something in the opposite case, though: if you've exhausted your test budget but you haven't achieved coverage, maybe you need to think about your test case distribution
21:01:10 <tomsmeding> that would be the selling point for me
21:01:16 <shapr> Kudzu's stopping criterion is "hpc did not observe new coverage for N iterations of this PBT"
21:01:16 tomsmeding hasn't read your post yet
21:01:29 <mwnaylor> Building ghc w/ slapt-src. Aliased python to python3. Piping stdout and stderr to separate files to save the results. Will share results when complete.
21:01:32 <tomsmeding> with some hard maximum, presumably
21:01:52 <shapr> There isn't a hard maximum, but I can't imagine a case where that would be a problem
21:01:59 shapr thinks
21:02:12 <shapr> I don't think it's possible
21:02:30 <tomsmeding> hm right, test duration is at most linear in your code size
21:02:46 <tomsmeding> but what I would be most interested in is the coverage report after testing
21:03:08 <shapr> I gave a lightning talk on Kudzu at ICFP 2022 and John Hughes brought up the point that he would prefer to see coverage defined not as "executed once" but instead "executed at least N times"
21:03:18 <tomsmeding> meh
21:03:19 <shapr> tomsmeding: yes! that's what I want to do next!
21:03:34 <shapr> tomsmeding: Hughes' point is that many functions are reached through multiple code paths
21:03:35 <tomsmeding> that does something about my unsoundness complaint but doesn't solve it
21:03:51 <tomsmeding> that's a complaint about the coverage metric
21:03:58 <tomsmeding> how path-sensitive is your coverage
21:03:59 <shapr> I've been thinking about how to identify code paths, but I dunno yet
21:04:14 <tomsmeding> sure, path-insensitive coverage tracking is overly optimistic, that's known
21:04:33 <tomsmeding> but path-sensitive coverage tracking, while more accurate, is very depressing to test with
21:04:39 <shapr> how so?
21:04:49 <shapr> because it shows you how few paths are executed?
21:05:07 <tomsmeding> bajeezus nofib-interpreter has just finished building and started executing with --enable-coverage and this is at least 1e4 times slower
21:05:17 <tomsmeding> there's your problem for sure
21:05:41 <tomsmeding> it didn't even finish the third case in the time I previously did the whole suite
21:05:46 <tomsmeding> shapr: yes
21:05:47 <shapr> I require coverage info for kudzu, that's what got me here
21:06:00 <tomsmeding> this feels like a bug in coverage tracking
21:06:02 <shapr> it's at three hours five minutes
21:06:05 <shapr> I dunno
21:06:22 <tomsmeding> is it progressing, or has it stalled somewhere?
21:06:42 <shapr> I can't tell
21:06:50 <shapr> it hasn't increased memory usage
21:06:51 <tomsmeding> what's the case it's currently doing
21:07:01 <tomsmeding> did that change in the past hour
21:07:01 <shapr> it's not printing anything to stdout, I don't know
21:07:16 <tomsmeding> are you running `cabal test` without `--test-show-details=direct`
21:07:18 <shapr> memory did increase from 30GB ram to 60GB ram in the past hour
21:07:19 <tomsmeding> classic beginner mistake
21:07:21 <shapr> haha
21:07:30 <shapr> I know about --test-show-details=direct but I was hoping it would just do the thing :-)
21:07:33 <tomsmeding> I despise `cabal test`
21:07:38 <tomsmeding> for one reason -- this one
21:07:41 <shapr> I don't actually want to know what it's doing, I want the coverage info
21:07:54 <tomsmeding> I guess it might print to the log file
21:08:01 <shapr> I might as well kill it, it won't help me get closer to my goal
21:08:13 <tomsmeding> send me the log file if you will
21:08:25 <shapr> where's the log file?
21:08:39 <tomsmeding> doesn't `cabal test` say something like "writing output to XXX.log"?
21:09:34 <shapr> I only see that for doctest
21:09:38 <shapr> and that one passed quickly
21:10:19 tomsmeding hates cabal test even more
21:10:24 shapr shrugs
21:10:27 <tomsmeding> at it prints the log location when it's done
21:10:34 <shapr> oh
21:10:43 <tomsmeding> dist-newstyle/build/.../test/*-test.log
21:10:45 × andrewboltachev quits (~andrewbol@178.141.238.156) (Quit: Client closed)
21:10:58 <tomsmeding> find dist-newstyle/ -name '*-test.log'
21:11:25 <shapr> doctest.log is the only file
21:11:33 <shapr> so either it's not writing to the file, or it writes at the end
21:11:44 <shapr> I can re-run with --test-show-details=direct if you want
21:11:45 <tomsmeding> it doesn't even write the file until it's done?
21:11:47 <tomsmeding> can `cabal test` die
21:12:07 <tomsmeding> try `cabal run nofib-accelerate -f nofib --enable-coverage`
21:12:12 <tomsmeding> at least then you know what you're getting :p
21:12:15 <shapr> heh, ok
21:12:45 <tomsmeding> does it spin infinitely on one case or does it progress super slowly
21:14:03 cashew joins (~cashewsta@65.17.175.150)
21:14:44 <shapr> looks like it sticks on "sort:"
21:15:47 <tomsmeding> surely this is a bug somewhere
21:15:53 <shapr> I'd believe that
21:16:16 <shapr> but again, doesn't help me poke at kudzu
21:16:17 <tomsmeding> this is not even the backend, which does runtime code generation using LLVM
21:16:46 <tomsmeding> (which HPC might actually be fine with considering that's just FFI calls in the end)
21:17:20 <shapr> I'm using nixos, and LLVM is not in scope, could that be it?
21:17:26 <shapr> I'd see an error, right?
21:18:09 <tomsmeding> the LLVM stuff is in accelerate-llvm{,-native,-ptx}
21:18:15 <tomsmeding> not in `accelerate`
21:18:15 <shapr> ah, not a problem then
21:18:25 <tomsmeding> the latter just has an interpreter in normal haskell
21:18:53 <tomsmeding> the `accelerate` package itself is actually not anything special, it's just haskell
21:18:58 <tomsmeding> I wonder why HPC is tripping on it
21:19:16 <shapr> I would guess it's related to the specialize things in that bug report
21:19:19 <shapr> but that's just a guess
21:19:53 <tomsmeding> that there's just a huge amount of core, you mean?
21:20:04 <shapr> that's my guess
21:20:07 <tomsmeding> because compilation is definitely slow, but that's not the issue at hand here
21:20:14 <shapr> iirc, hpc puts a counter on every little definition
21:20:26 <shapr> now that you mention it, lemme check the size of the mix files
21:20:34 <tomsmeding> does it do that at the source level or in core after optimisation
21:20:42 <tomsmeding> if the former, then core size is irrelevant
21:20:59 <tomsmeding> surely it's the former, you don't want core coverage, you want haskell coverage
21:21:50 <shapr> wow, hpc produced a 440k mix file
21:22:59 <shapr> 82kb source file turned into a 440kb mix file
21:23:07 tomsmeding has no reference here
21:23:11 <shapr> https://github.com/AccelerateHS/accelerate/blob/master/src/Data/Array/Accelerate/Test/NoFib/Issues/Issue119.hs
21:23:39 <tomsmeding> those are long arrays
21:23:40 <shapr> tomsmeding: the mix file holds the list of regions that can be annotated, it's later turned into the pretty html output: https://wiki.haskell.org/Haskell_program_coverage
21:23:52 <tomsmeding> I see
21:24:28 <tomsmeding> so you'd expect that to scale about linearly with program text size divided by the average variable name length?
21:24:55 <shapr> Well, you get more regions with more depth, but I wouldn't expect this sort of size explosion
21:25:21 × cashew quits (~cashewsta@65.17.175.150) (Ping timeout: 252 seconds)
21:25:48 <tomsmeding> but surely those regions are still about the source, not about the core?
21:26:53 <shapr> yes, I wonder why the regions explode like that?
21:27:07 <tomsmeding> what's in the file
21:27:22 <tomsmeding> curl --data-binary @thefile.mix https://tomsmeding.com/gooi/file.mix
21:27:29 <tomsmeding> (the '@' is syntax, put the filename after it)
21:27:32 <shapr> right on
21:28:28 <shapr> tomsmeding: sent!
21:28:30 <tomsmeding> (and gimme the link :) )
21:28:39 <shapr> https://tomsmeding.com/vang/WUaWIm/file.mix
21:28:51 <tomsmeding> or I have to go and ssh into my server and look at the gooi directory and I'm too lazy for that
21:28:58 <tomsmeding> you forgot the @
21:29:20 <tomsmeding> you uploaded the file name, not the file :)
21:29:22 <shapr> oops https://tomsmeding.com/vang/PJiBEz/file.mix
21:30:11 × gmg quits (~user@user/gehmehgeh) (Remote host closed the connection)
21:30:24 cashew joins (~cashewsta@65.17.175.150)
21:30:25 <tomsmeding> 440 kb of text without newlines
21:30:42 <tomsmeding> vim only takes 1 second to move to end-of-line, I'm impressed
21:31:07 gmg joins (~user@user/gehmehgeh)
21:31:41 <EvanR> I rotate my web-ready monitor from the 90s and vim suddenly finds such files easy
21:32:11 <EvanR> argument from rotational symmetry
21:34:28 <tomsmeding> shapr: every integer literal in those arrays is a separate ExpBox
21:34:44 <tomsmeding> there's a lot of integer literals in that file
21:35:05 <tomsmeding> but surely you can't break hpc just by putting a long list of ints in a file?
21:36:16 <tomsmeding> 1218 regions on line 115, 1161 regions on line 172, with a long tail
21:36:55 <tomsmeding> well not really, there's 12 lines with 800-1200 regions, then the rest is <=126
21:37:00 <tomsmeding> er, 216
21:37:33 <shapr> is this something to do with accelerate types? are they internall HList or something?
21:38:02 × cashew quits (~cashewsta@65.17.175.150) (Ping timeout: 268 seconds)
21:38:10 <tomsmeding> if you just write `foo :: [Int] ; foo = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20]` in a file
21:38:16 <tomsmeding> doesn't every one of those ints get a separate region?
21:38:24 <tomsmeding> this file just has thousands of ints
21:38:34 <shapr> I would guess, yes
21:38:37 <tomsmeding> accelerate arrays are certainly not hlists
21:38:39 <tomsmeding> the _shapes_ are
21:38:48 <shapr> because part of the goal of HPC is to tell you which parts of your program did anything
21:38:53 <tomsmeding> i.e. a three-dimensional array has its shape (three ints) in a hlist-like structure
21:38:58 <tomsmeding> right
21:39:14 <tomsmeding> so this is not anything accelerate-specific, this file is just a bit heavy on the int literals
21:39:17 <shapr> yup
21:40:16 × __monty__ quits (~toonn@user/toonn) (Quit: leaving)
21:42:28 <shapr> tomsmeding: do you run many long running Haskell compiles? Would you like to know how long they might take? Try sandwatch! https://github.com/shapr/sandwatch
21:42:48 <shapr> Similarly, would you like to know the instant a long running compile has ended? try bloohm! https://github.com/shapr/bloohm
21:42:56 <shapr> (hardware purchase required for bloohm)
21:42:57 × ocra8 quits (ocra8@user/ocra8) (Quit: WeeChat 4.2.2)
21:43:04 <tomsmeding> heh
21:43:24 <tomsmeding> I try to not get blocked on haskell compiles and mostly succeed
21:43:31 <tomsmeding> of course not always
21:43:37 <shapr> impressive
21:44:19 <shapr> friend of mine rewrote bloohm in rust, with a small gif https://mclare.blog/posts/adapting-a-bloom-filter-to-rust/
21:44:19 × mreh quits (~matthew@host86-160-168-68.range86-160.btcentralplus.com) (Ping timeout: 246 seconds)
21:44:39 <shapr> tomsmeding: so basically, not a compiler bug worth reporting
21:44:44 <shapr> thanks for talking that out with me
21:45:10 <tomsmeding> I mean, the getting stuck on sort has little to do with Issue119 producing a large mix file, I hope?
21:45:14 ocra8 joins (ocra8@user/ocra8)
21:45:14 <tomsmeding> that would be a bug I'd say
21:45:28 <shapr> hm
21:45:29 <shapr> probably so
21:45:44 <tomsmeding> but yeah, accelerate is dearly understaffed for the care that it needs
21:45:51 <tomsmeding> I try to help by being liaison here :)
21:46:09 <shapr> heh, I pair with Josh once a week, that's how I got started with accelerate
21:46:15 <shapr> but it's not the PBT suite I want :-(
21:46:27 <tomsmeding> gif is cool
21:46:34 <tomsmeding> fun electronics is cool
21:47:09 <shapr> Speaking of which, serialport needs some improvement, the test suite should not require an attached arduino
21:47:13 <shapr> @hackage serialport
21:47:13 <lambdabot> https://hackage.haskell.org/package/serialport
21:47:33 <shapr> but I dunno how to create a virtual serial port in software
21:48:25 tomsmeding hides
21:48:31 <shapr> do you know how?!
21:48:35 <tomsmeding> no!
21:48:38 <shapr> yeah, me neither
21:48:50 <tomsmeding> I know nothing about how serial ports work, nor about emulating hardware, let alone the combination
21:49:05 <shapr> I know some, not as much as I need, and more than I want
21:49:10 <tomsmeding> :D
21:49:39 <geekosaur> run it under vbox 😛
21:49:53 <shapr> I'm thinking about adding a parameter to bloohm for "number of pixels" then I can use it with any RGB grid.
21:50:15 <shapr> We sort of got it working on the keyboard.io : https://mclare.blog/posts/making-a-bloom-filter-keyboard/
21:50:59 cashew joins (~cashewsta@65.17.175.150)
21:53:02 <tomsmeding> shapr: edsko wrote 'falsify', a new PBT library, so perhaps he has ideas on stuff that uses PBT a lot
21:53:14 <tomsmeding> hoping that it's not all proprietary code that he saw through consulting
21:54:23 <shapr> edsko was in the audience for my lightning talk
21:54:47 <shapr> I don't remember all the questions that were asked, and that part of the ICFP talk videos hasn't been published :-(
21:56:36 <tomsmeding> oh sad
21:56:38 <tomsmeding> which icfp was this?
21:56:50 <tomsmeding> this year, seattle?
21:56:52 <shapr> the past one in seattle
21:56:58 <tomsmeding> right, I wasn't there
21:58:10 <tomsmeding> every conference's recording seems to have _something_ that goes wrong
21:58:19 <tomsmeding> maybe there's just too many things that can fail
21:59:38 × oo_miguel quits (~Thunderbi@78-11-181-16.static.ip.netia.com.pl) (Ping timeout: 256 seconds)
22:03:16 × michalz quits (~michalz@185.246.207.203) (Quit: ZNC 1.8.2 - https://znc.in)
22:04:07 × zetef quits (~quassel@2a02:2f00:5202:1200:90bc:b4a5:eea5:19e6) (Remote host closed the connection)
22:07:07 × dolio quits (~dolio@130.44.134.54) (Ping timeout: 256 seconds)
22:07:53 × target_i quits (~target_i@user/target-i/x-6023099) (Quit: leaving)
22:08:50 × gmg quits (~user@user/gehmehgeh) (Quit: Leaving)
22:11:12 waldo joins (~waldo@user/waldo)
22:13:02 pavonia joins (~user@user/siracusa)
22:13:09 × demon-cat quits (~demon-cat@dund-15-b2-v4wan-169642-cust1347.vm6.cable.virginm.net) (Read error: Connection reset by peer)
22:21:09 × acidjnk quits (~acidjnk@p200300d6e714dc2634962692522af535.dip0.t-ipconnect.de) (Ping timeout: 256 seconds)
22:22:29 × cashew quits (~cashewsta@65.17.175.150) (Ping timeout: 240 seconds)
22:26:41 × qqq quits (~qqq@92.43.167.61) (Quit: leaving)
22:27:52 × yin quits (~yin@user/zero) (Ping timeout: 260 seconds)
22:28:49 tri joins (~tri@ool-18bbef1a.static.optonline.net)
22:32:59 × tri quits (~tri@ool-18bbef1a.static.optonline.net) (Ping timeout: 252 seconds)
22:36:37 × xdminsy quits (~xdminsy@117.147.70.233) (Quit: Konversation terminated!)
22:37:03 xdminsy joins (~xdminsy@117.147.70.233)
22:47:06 cashew joins (~cashewsta@65.17.175.150)
22:47:17 × FinnElija quits (~finn_elij@user/finn-elija/x-0085643) (Remote host closed the connection)
22:48:10 FinnElija joins (~finn_elij@user/finn-elija/x-0085643)
22:50:08 × Tuplanolla quits (~Tuplanoll@91-159-69-59.elisa-laajakaista.fi) (Quit: Leaving.)
22:50:59 kaptch joins (~kaptch@84.238.85.45)
22:50:59 × kaptch quits (~kaptch@84.238.85.45) (Client Quit)
22:51:55 × cashew quits (~cashewsta@65.17.175.150) (Ping timeout: 260 seconds)
22:52:59 × mima quits (~mmh@aftr-62-216-211-53.dynamic.mnet-online.de) (Ping timeout: 272 seconds)
22:55:09 × ezzieyguywuf quits (~Unknown@user/ezzieyguywuf) (Ping timeout: 256 seconds)
22:57:02 ezzieyguywuf joins (~Unknown@user/ezzieyguywuf)
23:00:36 Sgeo joins (~Sgeo@user/sgeo)
23:02:18 × chiselfuse quits (~chiselfus@user/chiselfuse) (Ping timeout: 260 seconds)
23:04:28 chiselfuse joins (~chiselfus@user/chiselfuse)
23:07:52 cashew joins (~cashewsta@65.17.175.150)
23:09:37 peterbecich joins (~Thunderbi@47.229.123.186)
23:14:15 × cashew quits (~cashewsta@65.17.175.150) (Ping timeout: 252 seconds)
23:15:47 xff0x joins (~xff0x@softbank219059019218.bbtec.net)
23:30:20 [Leary] joins (~Leary]@user/Leary/x-0910699)
23:31:31 <c_wraith> Just spent hours tracking down an emergency production issue caused by a 10-year-old type issue that was never exercised. I wish $dayjob used a language that actually cares about that..
23:33:34 <geekosaur> oy
23:33:49 <waldo> what is this $dayjob thing
23:33:56 <waldo> it appears in ##rust also
23:34:02 <c_wraith> the thing that finances my life of feeding a cat.
23:34:56 <waldo> yeah but why is it used in such close time proximity to the other use in the other channel
23:35:28 <waldo> probably a cabal?
23:35:48 <waldo> that's how I spend my time these days,
23:36:03 <waldo> analyzing irc chat room conversations, trying to find the pattern
23:36:18 <waldo> irc chat is like hiv virus isn't it
23:36:35 <waldo> maybe I should cut myself off
23:36:42 <c_wraith> probably a good idea
23:38:54 philopsos joins (~caecilius@user/philopsos)
23:38:55 × waldo quits (~waldo@user/waldo) (Quit: waldo)
23:41:40 <yushyin> odd
23:45:25 cashew joins (~cashewsta@65.17.175.150)
23:51:38 × cashew quits (~cashewsta@65.17.175.150) (Ping timeout: 252 seconds)

All times are in UTC on 2024-04-29.