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> | <Jade> 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.