2023-05-14 00:01:45 +0200 | freeside_ | (~mengwong@103.252.202.151) (Ping timeout: 256 seconds) |
2023-05-14 00:05:08 +0200 | <probie> | fr33domlover: does that work with explicit forall turned on? Or is it just inserting one for you? |
2023-05-14 00:06:44 +0200 | michalz | (~michalz@185.246.207.203) (Remote host closed the connection) |
2023-05-14 00:10:20 +0200 | takuan | (~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection) |
2023-05-14 00:10:35 +0200 | michalz | (~michalz@185.246.207.218) |
2023-05-14 00:12:18 +0200 | biberu | (~biberu@user/biberu) (Read error: Connection reset by peer) |
2023-05-14 00:12:38 +0200 | <fr33domlover> | probie: Still doesn't work, complains about type var not in scope |
2023-05-14 00:13:27 +0200 | michalz | (~michalz@185.246.207.218) (Remote host closed the connection) |
2023-05-14 00:17:00 +0200 | biberu | (~biberu@user/biberu) |
2023-05-14 00:17:33 +0200 | evincar | (~evincar@user/evincar) |
2023-05-14 00:19:32 +0200 | dolio | (~dolio@130.44.134.54) (Read error: Connection reset by peer) |
2023-05-14 00:20:11 +0200 | dolio | (~dolio@130.44.134.54) |
2023-05-14 00:21:43 +0200 | gmg | (~user@user/gehmehgeh) (Remote host closed the connection) |
2023-05-14 00:28:59 +0200 | acidjnk | (~acidjnk@p200300d6e7072f93e84ab52c2319c69d.dip0.t-ipconnect.de) (Ping timeout: 246 seconds) |
2023-05-14 00:44:47 +0200 | gurkenglas | (~user@dynamic-046-114-181-006.46.114.pool.telefonica.de) (Ping timeout: 240 seconds) |
2023-05-14 00:56:29 +0200 | lottaquestions | (~nick@2607:fa49:503f:6d00:85d7:7b31:e103:e2d3) (Remote host closed the connection) |
2023-05-14 00:56:55 +0200 | lottaquestions | (~nick@2607:fa49:503f:6d00:a90f:1597:2753:5a45) |
2023-05-14 00:57:04 +0200 | caryhartline | (~caryhartl@2600:1700:2d0:8d30:cdc9:2ab9:5c13:cc7e) (Quit: caryhartline) |
2023-05-14 01:04:47 +0200 | bontaq | (~user@ool-45779b84.dyn.optonline.net) (Ping timeout: 240 seconds) |
2023-05-14 01:05:30 +0200 | L29Ah | (~L29Ah@wikipedia/L29Ah) (Ping timeout: 268 seconds) |
2023-05-14 01:07:06 +0200 | L29Ah | (~L29Ah@wikipedia/L29Ah) |
2023-05-14 01:07:43 +0200 | L29Ah | (~L29Ah@wikipedia/L29Ah) () |
2023-05-14 01:08:04 +0200 | L29Ah | (~L29Ah@wikipedia/L29Ah) |
2023-05-14 01:14:59 +0200 | tcard | (~tcard@2400:4051:5801:7500:cf17:befc:ff82:5303) (Remote host closed the connection) |
2023-05-14 01:15:17 +0200 | tcard | (~tcard@2400:4051:5801:7500:cf17:befc:ff82:5303) |
2023-05-14 01:22:20 +0200 | mauke_ | (~mauke@user/mauke) |
2023-05-14 01:23:55 +0200 | mauke | (~mauke@user/mauke) (Ping timeout: 256 seconds) |
2023-05-14 01:23:55 +0200 | mauke_ | mauke |
2023-05-14 01:27:25 +0200 | <ski> | fr33domlover : i think for `class', it requires all type variables be parameters of the type class |
2023-05-14 01:28:27 +0200 | <ski> | in your case, `[]' is injective, so `b' could actually be determined from `a' |
2023-05-14 01:28:53 +0200 | <dmj`> | Is it possible (using cabal.config or stack.yaml) to add a dependency to all dependencies ? This is possible with nix by overloading mkDerviation and using addBuildDepend. I know w/ stack you can use $everything, to specify ghc-options, but I was wondering if it was possible to add new deps as well to every dep. in the chain using those tools |
2023-05-14 01:29:03 +0200 | <ski> | (i'm assuming you're talking about something like `class (b ~ Char, a ~ [b]) => Foo a') |
2023-05-14 01:29:11 +0200 | vandita | (~vandit@89-186-118-242.pool.digikabel.hu) (Ping timeout: 246 seconds) |
2023-05-14 01:29:43 +0200 | freeside_ | (~mengwong@103.252.202.151) |
2023-05-14 01:31:11 +0200 | vandita | (~vandit@79-120-162-186.pool.digikabel.hu) |
2023-05-14 01:32:47 +0200 | oo_miguel | (~Thunderbi@77.252.47.78) (Ping timeout: 240 seconds) |
2023-05-14 01:35:25 +0200 | freeside_ | (~mengwong@103.252.202.151) (Ping timeout: 240 seconds) |
2023-05-14 01:56:46 +0200 | pharonix71 | (~pharonix7@user/pharonix71) (Remote host closed the connection) |
2023-05-14 01:57:13 +0200 | pharonix71 | (~pharonix7@user/pharonix71) |
2023-05-14 01:59:01 +0200 | dhil | (~dhil@78.45.150.83.ewm.ftth.as8758.net) (Ping timeout: 240 seconds) |
2023-05-14 02:01:31 +0200 | vorpuni | (~pvorp@2a01:e0a:1cd:ea70:afe3:506e:aa0:19a1) (Ping timeout: 240 seconds) |
2023-05-14 02:05:09 +0200 | nate2 | (~nate@98.45.169.16) |
2023-05-14 02:09:48 +0200 | nate2 | (~nate@98.45.169.16) (Ping timeout: 240 seconds) |
2023-05-14 02:15:14 +0200 | <sm> | [dmj](https://matrix.to/#/@dmj:libera.chat): what does that mean |
2023-05-14 02:15:56 +0200 | <sm> | configure dependencies that are added by default in each new project ? |
2023-05-14 02:20:30 +0200 | wroathe | (~wroathe@207-153-38-140.fttp.usinternet.com) |
2023-05-14 02:20:30 +0200 | wroathe | (~wroathe@207-153-38-140.fttp.usinternet.com) (Changing host) |
2023-05-14 02:20:30 +0200 | wroathe | (~wroathe@user/wroathe) |
2023-05-14 02:22:45 +0200 | harveypwca | (~harveypwc@2601:246:c180:a570:3828:d8:e523:3f67) |
2023-05-14 02:40:16 +0200 | mud | (~mud@user/kadoban) (Remote host closed the connection) |
2023-05-14 02:47:02 +0200 | nate2 | (~nate@98.45.169.16) |
2023-05-14 02:48:29 +0200 | titibandit | (~titibandi@user/titibandit) (Remote host closed the connection) |
2023-05-14 02:59:52 +0200 | <sclv> | hackage down rof redeploy |
2023-05-14 02:59:57 +0200 | <sclv> | er hackage down for redeploy |
2023-05-14 03:01:00 +0200 | <statusbot> | Status Bot enabled for #haskell |
2023-05-14 03:09:14 +0200 | <statusbot> | Maintenance update: Server upgrade complete. Hackage back operational. -- http://status.haskell.org/pages/maintenance/537c07b0cf1fad5830000093/6460267b5c22c605300a008e |
2023-05-14 03:09:27 +0200 | wroathe | (~wroathe@user/wroathe) (Ping timeout: 268 seconds) |
2023-05-14 03:10:46 +0200 | albet70 | (~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection) |
2023-05-14 03:12:40 +0200 | freeside_ | (~mengwong@103.252.202.151) |
2023-05-14 03:16:54 +0200 | albet70 | (~xxx@2400:8902::f03c:92ff:fe60:98d8) |
2023-05-14 03:17:15 +0200 | freeside_ | (~mengwong@103.252.202.151) (Ping timeout: 256 seconds) |
2023-05-14 03:29:45 +0200 | rekahsoft | (~rekahsoft@bras-base-orllon1122w-grc-04-174-88-193-177.dsl.bell.ca) |
2023-05-14 03:30:29 +0200 | rekahsoft | (~rekahsoft@bras-base-orllon1122w-grc-04-174-88-193-177.dsl.bell.ca) (Remote host closed the connection) |
2023-05-14 03:30:46 +0200 | remexre | (~remexre@user/remexre) |
2023-05-14 03:31:04 +0200 | rekahsoft | (~rekahsoft@bras-base-orllon1122w-grc-04-174-88-193-177.dsl.bell.ca) |
2023-05-14 03:35:07 +0200 | puke | (~puke@user/puke) (Quit: puke) |
2023-05-14 03:36:35 +0200 | evincar | (~evincar@user/evincar) (Ping timeout: 268 seconds) |
2023-05-14 03:38:01 +0200 | cheater | (~Username@user/cheater) (Ping timeout: 240 seconds) |
2023-05-14 03:38:02 +0200 | cheater_ | (~Username@user/cheater) |
2023-05-14 03:38:02 +0200 | cheater_ | cheater |
2023-05-14 03:44:05 +0200 | vandita | (~vandit@79-120-162-186.pool.digikabel.hu) (Ping timeout: 240 seconds) |
2023-05-14 03:45:55 +0200 | vandita | (~vandit@91-83-3-39.pool.digikabel.hu) |
2023-05-14 03:46:34 +0200 | waleee | (~waleee@2001:9b0:21c:4000:5bf9:6515:c030:57b7) (Ping timeout: 265 seconds) |
2023-05-14 03:47:11 +0200 | puke | (~puke@user/puke) |
2023-05-14 03:48:45 +0200 | nate2 | (~nate@98.45.169.16) (Ping timeout: 240 seconds) |
2023-05-14 03:56:32 +0200 | evincar | (~evincar@user/evincar) |
2023-05-14 03:57:37 +0200 | harveypwca | (~harveypwc@2601:246:c180:a570:3828:d8:e523:3f67) (Quit: Leaving) |
2023-05-14 03:59:39 +0200 | freeside_ | (~mengwong@103.252.202.151) |
2023-05-14 03:59:50 +0200 | <dmj`> | sm: Basically if I want to add a plugin to my current package, and all packages that my current package depends on, they would all get the plugin in their build-depends and would therefore need to be recompiled. |
2023-05-14 04:02:08 +0200 | <dmj`> | sm: mkDerivation = args: super.mkDerivation (args // { buildInputs = args.buildInputs ++ [ myPlugin ]}); is what I want to do |
2023-05-14 04:03:59 +0200 | evincar | (~evincar@user/evincar) (Ping timeout: 240 seconds) |
2023-05-14 04:10:01 +0200 | freeside_ | (~mengwong@103.252.202.151) (Ping timeout: 240 seconds) |
2023-05-14 04:12:51 +0200 | freeside_ | (~mengwong@103.252.202.151) |
2023-05-14 04:16:45 +0200 | td_ | (~td@i53870905.versanet.de) (Ping timeout: 256 seconds) |
2023-05-14 04:16:54 +0200 | evincar | (~evincar@user/evincar) |
2023-05-14 04:17:01 +0200 | freeside_ | (~mengwong@103.252.202.151) (Ping timeout: 240 seconds) |
2023-05-14 04:18:21 +0200 | td_ | (~td@i53870921.versanet.de) |
2023-05-14 04:21:28 +0200 | evincar | (~evincar@user/evincar) (Ping timeout: 240 seconds) |
2023-05-14 04:23:46 +0200 | evincar | (~evincar@user/evincar) |
2023-05-14 04:30:36 +0200 | [itchyjunk] | (~itchyjunk@user/itchyjunk/x-7353470) (Remote host closed the connection) |
2023-05-14 04:46:53 +0200 | evincar | (~evincar@user/evincar) (Ping timeout: 268 seconds) |
2023-05-14 04:56:15 +0200 | freeside_ | (~mengwong@103.252.202.151) |
2023-05-14 04:56:45 +0200 | FinnElija | (~finn_elij@user/finn-elija/x-0085643) (Killed (NickServ (Forcing logout FinnElija -> finn_elija))) |
2023-05-14 04:56:45 +0200 | finn_elija | (~finn_elij@user/finn-elija/x-0085643) |
2023-05-14 04:56:45 +0200 | finn_elija | FinnElija |
2023-05-14 05:00:47 +0200 | freeside_ | (~mengwong@103.252.202.151) (Ping timeout: 264 seconds) |
2023-05-14 05:00:49 +0200 | evincar | (~evincar@user/evincar) |
2023-05-14 05:02:26 +0200 | russruss | (~russruss@my.russellmcc.com) |
2023-05-14 05:13:21 +0200 | ub | (~Thunderbi@p200300ecdf18b67bd2f2cbf65c2c6dd6.dip0.t-ipconnect.de) |
2023-05-14 05:14:35 +0200 | ubert | (~Thunderbi@p548c8bbe.dip0.t-ipconnect.de) (Ping timeout: 264 seconds) |
2023-05-14 05:14:35 +0200 | ub | ubert |
2023-05-14 05:22:01 +0200 | phma | (phma@2001:5b0:210d:9dd8:7e87:f62f:6b71:75cd) (Read error: Connection reset by peer) |
2023-05-14 05:22:28 +0200 | phma | (phma@2001:5b0:210d:9dd8:9595:9262:e864:847) |
2023-05-14 05:25:26 +0200 | freeside_ | (~mengwong@103.252.202.151) |
2023-05-14 05:26:57 +0200 | dsanchez | (~dsanchez@189.162.135.18) |
2023-05-14 05:27:31 +0200 | ubert | (~Thunderbi@p200300ecdf18b67bd2f2cbf65c2c6dd6.dip0.t-ipconnect.de) (Remote host closed the connection) |
2023-05-14 05:27:50 +0200 | ubert | (~Thunderbi@p200300ecdf18b67bd2f2cbf65c2c6dd6.dip0.t-ipconnect.de) |
2023-05-14 05:29:51 +0200 | freeside_ | (~mengwong@103.252.202.151) (Ping timeout: 256 seconds) |
2023-05-14 05:30:06 +0200 | <dsanchez> | Naruto Uzumaki sodomizes Samuel Garcia Sepulveda, Governor of Nuevo Leon in Mexico, with a special sexual jutsu. Naruto gets to open a chain of 20 ramen restaurants in Monterrey in exchange for donating his semen to Samuel to ensure his wife Mariana gave birth to blue eyed babies! Read about it here! https://justpaste.it/Naruto_Makes_Love_Samuel_Garcia |
2023-05-14 05:36:59 +0200 | <monochrom> | /opme |
2023-05-14 05:37:08 +0200 | ChanServ | +o monochrom |
2023-05-14 05:37:15 +0200 | monochrom | +b *!*@189.162.135.18 |
2023-05-14 05:37:15 +0200 | dsanchez | monochrom (dsanchez) |
2023-05-14 05:37:45 +0200 | rekahsoft | (~rekahsoft@bras-base-orllon1122w-grc-04-174-88-193-177.dsl.bell.ca) (Remote host closed the connection) |
2023-05-14 05:37:59 +0200 | troydm | (~troydm@user/troydm) (Ping timeout: 240 seconds) |
2023-05-14 05:38:11 +0200 | monochrom | -o monochrom |
2023-05-14 05:38:30 +0200 | rekahsoft | (~rekahsoft@bras-base-orllon1122w-grc-04-174-88-193-177.dsl.bell.ca) |
2023-05-14 05:39:24 +0200 | jero98772 | (~jero98772@2800:484:1d84:9000::3) (Remote host closed the connection) |
2023-05-14 05:40:32 +0200 | Benzi-Junior | (~BenziJuni@dsl-149-64-86.hive.is) (Quit: ZNC 1.8.2 - https://znc.in) |
2023-05-14 05:41:32 +0200 | vandita | (~vandit@91-83-3-39.pool.digikabel.hu) (Ping timeout: 246 seconds) |
2023-05-14 05:41:45 +0200 | ubert | (~Thunderbi@p200300ecdf18b67bd2f2cbf65c2c6dd6.dip0.t-ipconnect.de) (Ping timeout: 256 seconds) |
2023-05-14 05:42:01 +0200 | ubert | (~Thunderbi@p548c8bbe.dip0.t-ipconnect.de) |
2023-05-14 05:43:20 +0200 | vandita | (~vandit@85-238-93-13.pool.digikabel.hu) |
2023-05-14 05:46:33 +0200 | freeside_ | (~mengwong@103.252.202.151) |
2023-05-14 05:54:47 +0200 | freeside_ | (~mengwong@103.252.202.151) (Ping timeout: 240 seconds) |
2023-05-14 05:58:25 +0200 | pointlessslippe1 | (~pointless@212.82.82.3) (Ping timeout: 268 seconds) |
2023-05-14 06:02:28 +0200 | pointlessslippe1 | (~pointless@212.82.82.3) |
2023-05-14 06:18:11 +0200 | rekahsoft | (~rekahsoft@bras-base-orllon1122w-grc-04-174-88-193-177.dsl.bell.ca) (Ping timeout: 264 seconds) |
2023-05-14 06:35:36 +0200 | califax | (~califax@user/califx) (Remote host closed the connection) |
2023-05-14 06:35:49 +0200 | califax_ | (~califax@user/califx) |
2023-05-14 06:37:06 +0200 | califax_ | califax |
2023-05-14 06:37:57 +0200 | bitdex | (~bitdex@gateway/tor-sasl/bitdex) (Remote host closed the connection) |
2023-05-14 06:39:18 +0200 | bitdex | (~bitdex@gateway/tor-sasl/bitdex) |
2023-05-14 06:41:59 +0200 | evincar | (~evincar@user/evincar) (Ping timeout: 240 seconds) |
2023-05-14 06:44:31 +0200 | freeside_ | (~mengwong@103.252.202.151) |
2023-05-14 06:49:51 +0200 | cheater | (~Username@user/cheater) (Read error: Connection reset by peer) |
2023-05-14 06:50:01 +0200 | freeside_ | (~mengwong@103.252.202.151) (Ping timeout: 240 seconds) |
2023-05-14 06:52:06 +0200 | cheater | (~Username@user/cheater) |
2023-05-14 06:53:25 +0200 | coot | (~coot@89-69-206-216.dynamic.chello.pl) |
2023-05-14 06:56:07 +0200 | coot_ | (~coot@89-69-206-216.dynamic.chello.pl) |
2023-05-14 06:56:22 +0200 | evincar | (~evincar@user/evincar) |
2023-05-14 06:58:14 +0200 | coot | (~coot@89-69-206-216.dynamic.chello.pl) (Ping timeout: 268 seconds) |
2023-05-14 06:58:14 +0200 | coot_ | coot |
2023-05-14 07:04:27 +0200 | bitdex | (~bitdex@gateway/tor-sasl/bitdex) (Remote host closed the connection) |
2023-05-14 07:05:22 +0200 | bitdex | (~bitdex@gateway/tor-sasl/bitdex) |
2023-05-14 07:15:46 +0200 | freeside_ | (~mengwong@103.252.202.151) |
2023-05-14 07:15:51 +0200 | stallmanator | (~stallmana@user/stallmanator) (Quit: Leaving...) |
2023-05-14 07:19:59 +0200 | freeside_ | (~mengwong@103.252.202.151) (Ping timeout: 240 seconds) |
2023-05-14 07:24:22 +0200 | stallmanator | (~stallmana@user/stallmanator) |
2023-05-14 07:24:50 +0200 | cheater_ | (~Username@user/cheater) |
2023-05-14 07:26:45 +0200 | cheater | (~Username@user/cheater) (Ping timeout: 240 seconds) |
2023-05-14 07:26:55 +0200 | cheater_ | cheater |
2023-05-14 07:32:34 +0200 | freeside_ | (~mengwong@103.252.202.151) |
2023-05-14 07:37:18 +0200 | trev | (~trev@user/trev) |
2023-05-14 07:37:21 +0200 | freeside_ | (~mengwong@103.252.202.151) (Ping timeout: 256 seconds) |
2023-05-14 07:37:39 +0200 | gentauro | (~gentauro@user/gentauro) (Quit: leaving) |
2023-05-14 07:37:41 +0200 | freeside_ | (~mengwong@103.252.202.151) |
2023-05-14 07:42:27 +0200 | freeside_ | (~mengwong@103.252.202.151) (Ping timeout: 256 seconds) |
2023-05-14 07:46:10 +0200 | nate2 | (~nate@98.45.169.16) |
2023-05-14 07:46:24 +0200 | gentauro | (~gentauro@user/gentauro) |
2023-05-14 07:50:41 +0200 | nate2 | (~nate@98.45.169.16) (Ping timeout: 246 seconds) |
2023-05-14 07:54:05 +0200 | vandita | (~vandit@85-238-93-13.pool.digikabel.hu) (Ping timeout: 240 seconds) |
2023-05-14 07:56:01 +0200 | vandita | (~vandit@84-236-122-3.pool.digikabel.hu) |
2023-05-14 07:58:52 +0200 | wiosna | (~karangura@c-73-93-95-154.hsd1.ca.comcast.net) |
2023-05-14 08:15:29 +0200 | lottaquestions_ | (~nick@2607:fa49:503f:6d00:e12c:3339:1e68:4fd9) |
2023-05-14 08:17:08 +0200 | lottaquestions | (~nick@2607:fa49:503f:6d00:a90f:1597:2753:5a45) (Ping timeout: 240 seconds) |
2023-05-14 08:33:07 +0200 | freeside_ | (~mengwong@103.252.202.151) |
2023-05-14 08:33:20 +0200 | acidjnk | (~acidjnk@p200300d6e7072f04289ebaf0057e3058.dip0.t-ipconnect.de) |
2023-05-14 08:37:25 +0200 | evincar | (~evincar@user/evincar) (Ping timeout: 240 seconds) |
2023-05-14 08:37:35 +0200 | freeside_ | (~mengwong@103.252.202.151) (Ping timeout: 240 seconds) |
2023-05-14 08:44:08 +0200 | azimut | (~azimut@gateway/tor-sasl/azimut) (Ping timeout: 240 seconds) |
2023-05-14 08:50:05 +0200 | falafel | (~falafel@2603-8000-d700-115c-216b-37a8-40bc-a416.res6.spectrum.com) |
2023-05-14 08:51:23 +0200 | evincar | (~evincar@user/evincar) |
2023-05-14 08:53:10 +0200 | takuan | (~takuan@178-116-218-225.access.telenet.be) |
2023-05-14 09:09:47 +0200 | albet70 | (~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection) |
2023-05-14 09:10:42 +0200 | falafel | (~falafel@2603-8000-d700-115c-216b-37a8-40bc-a416.res6.spectrum.com) (Remote host closed the connection) |
2023-05-14 09:12:19 +0200 | gmg | (~user@user/gehmehgeh) |
2023-05-14 09:15:53 +0200 | albet70 | (~xxx@2400:8902::f03c:92ff:fe60:98d8) |
2023-05-14 09:17:53 +0200 | czy | (~user@host-140-24.ilcub310.champaign.il.us.clients.pavlovmedia.net) (Remote host closed the connection) |
2023-05-14 09:20:20 +0200 | freeside_ | (~mengwong@103.252.202.151) |
2023-05-14 09:23:48 +0200 | <jade[m]> | hm, I wonder about the type hierarchy for monads. We need to 'prove' that a type is an applicative functor first, but isn't that able to be derived from the `bind` together with `pure`?... (full message at <https://libera.ems.host/_matrix/media/v3/download/libera.chat/29d42836f5aebd1ff59d2fb722f1dbac302c…>) |
2023-05-14 09:26:39 +0200 | <mauke> | technically "beforehand" is not required |
2023-05-14 09:26:41 +0200 | <[Leary]> | jade[m]: We have the Functor, Applicative, Monad hierarchy precisely because Applicative follows from Monad and Functor from Applicative. |
2023-05-14 09:27:28 +0200 | freeside_ | (~mengwong@103.252.202.151) (Ping timeout: 268 seconds) |
2023-05-14 09:27:28 +0200 | <jade[m]> | mhm I understand, but wouldn't it be nicer to be able to write _just_ `pure` and `>>=` and the rest is derived? |
2023-05-14 09:27:31 +0200 | <mauke> | you can declare the Monad instance first and then just say: instance Functor T where { fmap = liftM }; instance Applicative T where { (<*>) = ap } |
2023-05-14 09:27:52 +0200 | <jade[m]> | ok yeah that makes sense |
2023-05-14 09:27:54 +0200 | <jade[m]> | thank you |
2023-05-14 09:28:13 +0200 | <[Leary]> | You can probably also do with with something like `deriving via WrappedMonad ...`. |
2023-05-14 09:30:11 +0200 | wiosna | (~karangura@c-73-93-95-154.hsd1.ca.comcast.net) (Ping timeout: 264 seconds) |
2023-05-14 09:35:44 +0200 | gnalzo | (~gnalzo@2a01:e0a:498:fd50:fcc6:bb5d:489a:ce8c) |
2023-05-14 09:39:59 +0200 | wiosna | (~karangura@c-73-93-95-154.hsd1.ca.comcast.net) |
2023-05-14 09:44:08 +0200 | wiosna | (~karangura@c-73-93-95-154.hsd1.ca.comcast.net) (Ping timeout: 240 seconds) |
2023-05-14 09:50:29 +0200 | tubogram447 | (~tubogram@user/tubogram) (Quit: Ping timeout (120 seconds)) |
2023-05-14 09:50:46 +0200 | tubogram447 | (~tubogram@user/tubogram) |
2023-05-14 09:52:01 +0200 | evincar | (~evincar@user/evincar) (Ping timeout: 240 seconds) |
2023-05-14 09:58:41 +0200 | wiosna | (~karangura@c-73-93-95-154.hsd1.ca.comcast.net) |
2023-05-14 09:59:18 +0200 | gmg | (~user@user/gehmehgeh) (Remote host closed the connection) |
2023-05-14 10:00:01 +0200 | gmg | (~user@user/gehmehgeh) |
2023-05-14 10:07:01 +0200 | vandita | (~vandit@84-236-122-3.pool.digikabel.hu) (Ping timeout: 240 seconds) |
2023-05-14 10:08:43 +0200 | vandita | (~vandit@178-164-188-13.pool.digikabel.hu) |
2023-05-14 10:08:48 +0200 | tabemann | (~tabemann@172-13-49-137.lightspeed.milwwi.sbcglobal.net) (Ping timeout: 250 seconds) |
2023-05-14 10:08:48 +0200 | econo | (uid147250@user/econo) (Quit: Connection closed for inactivity) |
2023-05-14 10:11:18 +0200 | wiosna | (~karangura@c-73-93-95-154.hsd1.ca.comcast.net) (Ping timeout: 265 seconds) |
2023-05-14 10:23:42 +0200 | wiosna | (~karangura@c-73-93-95-154.hsd1.ca.comcast.net) |
2023-05-14 10:31:19 +0200 | wiosna | (~karangura@c-73-93-95-154.hsd1.ca.comcast.net) (Ping timeout: 256 seconds) |
2023-05-14 10:33:15 +0200 | Tuplanolla | (~Tuplanoll@91-159-68-236.elisa-laajakaista.fi) |
2023-05-14 10:40:21 +0200 | tzh | (~tzh@c-24-21-73-154.hsd1.wa.comcast.net) (Quit: zzz) |
2023-05-14 10:40:28 +0200 | <Inst> | what's the tradeoff between monomer and gi-gtk-declarative? |
2023-05-14 10:40:41 +0200 | <Inst> | i'm assuming monomer lets you directly message sdl, so i guess it comes down to sdl vs gtk? |
2023-05-14 10:43:40 +0200 | bontaq | (~user@ool-45779b84.dyn.optonline.net) |
2023-05-14 10:43:52 +0200 | Lord_of_Life_ | (~Lord@user/lord-of-life/x-2819915) |
2023-05-14 10:44:43 +0200 | wiosna | (~karangura@c-73-93-95-154.hsd1.ca.comcast.net) |
2023-05-14 10:44:45 +0200 | Lord_of_Life | (~Lord@user/lord-of-life/x-2819915) (Ping timeout: 240 seconds) |
2023-05-14 10:44:59 +0200 | <Rembane> | Inst: Before you choose one of them, check if they compile at all. I've heard rumours that gi-gtk-declarative has bitrotted quite badly. |
2023-05-14 10:45:12 +0200 | Lord_of_Life_ | Lord_of_Life |
2023-05-14 10:45:30 +0200 | <Inst> | I'm already using monomer, but acquaintances prefer gi-gtk-declarative |
2023-05-14 10:45:46 +0200 | <Inst> | monomer doesn't compile on 9.6.1 due to issues with nanovg |
2023-05-14 10:48:47 +0200 | wiosna | (~karangura@c-73-93-95-154.hsd1.ca.comcast.net) (Ping timeout: 240 seconds) |
2023-05-14 10:49:35 +0200 | mc47 | (~mc47@xmonad/TheMC47) |
2023-05-14 10:50:29 +0200 | caryhartline | (~caryhartl@2600:1700:2d0:8d30:21dd:2a88:7fc5:2c9a) |
2023-05-14 11:01:00 +0200 | wiosna | (~karangura@c-73-93-95-154.hsd1.ca.comcast.net) |
2023-05-14 11:05:55 +0200 | eggplantade | (~Eggplanta@104-55-37-220.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection) |
2023-05-14 11:05:55 +0200 | wiosna | (~karangura@c-73-93-95-154.hsd1.ca.comcast.net) (Ping timeout: 265 seconds) |
2023-05-14 11:12:06 +0200 | gurkenglas | (~user@dynamic-046-114-176-178.46.114.pool.telefonica.de) |
2023-05-14 11:14:20 +0200 | titibandit | (~titibandi@user/titibandit) |
2023-05-14 11:16:00 +0200 | hugo- | (znc@verdigris.lysator.liu.se) (Ping timeout: 268 seconds) |
2023-05-14 11:20:41 +0200 | acidjnk | (~acidjnk@p200300d6e7072f04289ebaf0057e3058.dip0.t-ipconnect.de) (Ping timeout: 246 seconds) |
2023-05-14 11:21:00 +0200 | caryhartline | (~caryhartl@2600:1700:2d0:8d30:21dd:2a88:7fc5:2c9a) (Quit: caryhartline) |
2023-05-14 11:25:48 +0200 | freeside_ | (~mengwong@103.252.202.151) |
2023-05-14 11:27:35 +0200 | hugo | (znc@verdigris.lysator.liu.se) |
2023-05-14 11:31:28 +0200 | freeside_ | (~mengwong@103.252.202.151) (Ping timeout: 240 seconds) |
2023-05-14 11:33:35 +0200 | xff0x | (~xff0x@2405:6580:b080:900:7a1d:99dd:4861:77d8) (Quit: xff0x) |
2023-05-14 11:36:34 +0200 | xff0x | (~xff0x@2405:6580:b080:900:aeac:e4ca:6855:10e2) |
2023-05-14 11:47:40 +0200 | nate2 | (~nate@98.45.169.16) |
2023-05-14 11:48:46 +0200 | pyook | (~puke@user/puke) (Remote host closed the connection) |
2023-05-14 11:49:11 +0200 | pyook | (~puke@user/puke) |
2023-05-14 11:52:32 +0200 | nate2 | (~nate@98.45.169.16) (Ping timeout: 248 seconds) |
2023-05-14 11:55:36 +0200 | wiosna | (~karangura@c-73-93-95-154.hsd1.ca.comcast.net) |
2023-05-14 11:56:22 +0200 | acidjnk | (~acidjnk@p200300d6e7072f04289ebaf0057e3058.dip0.t-ipconnect.de) |
2023-05-14 11:56:44 +0200 | freeside_ | (~mengwong@103.252.202.151) |
2023-05-14 11:57:30 +0200 | <fr33domlover> | What are the pros/cons of a class like `class Set (s :: Type -> Type) where` versus `class Set s where type Elem s` ? |
2023-05-14 11:58:22 +0200 | <fr33domlover> | (Advantage of the latter? Allows to define instance with a constraint on `Elem s`? While in the former, instance have to work for any element type?) |
2023-05-14 11:59:48 +0200 | wiosna | (~karangura@c-73-93-95-154.hsd1.ca.comcast.net) (Ping timeout: 240 seconds) |
2023-05-14 12:01:08 +0200 | freeside_ | (~mengwong@103.252.202.151) (Ping timeout: 240 seconds) |
2023-05-14 12:05:35 +0200 | oo_miguel | (~Thunderbi@77.252.47.78) |
2023-05-14 12:06:10 +0200 | eggplantade | (~Eggplanta@2600:1700:38c5:d800:200b:a013:81d0:d721) |
2023-05-14 12:10:29 +0200 | eggplantade | (~Eggplanta@2600:1700:38c5:d800:200b:a013:81d0:d721) (Ping timeout: 256 seconds) |
2023-05-14 12:14:09 +0200 | <jackdk> | fr33domlover: I think you have rediscovered class MonoFunctor from package mono-traversable. But these days I use lenses instead |
2023-05-14 12:18:24 +0200 | Sgeo | (~Sgeo@user/sgeo) (Read error: Connection reset by peer) |
2023-05-14 12:18:33 +0200 | <fr33domlover> | jackdk: I'm aware of that package :) Asking in general though, when writing a typeclass in a library, how do I choose between monomorphic and polymorphic? The latter is the common default (Functor, Monad, etc.) but is the former widely acceptable too? |
2023-05-14 12:19:19 +0200 | <jackdk> | I would probably exploit parametricity unless I had a good reason not to. Makes it harder to write the wrong code. |
2023-05-14 12:20:35 +0200 | <fr33domlover> | I'm trying to do a little trick that seems to be impossible without dependent types, and switching to monomorphic would solve the problem for me |
2023-05-14 12:21:51 +0200 | <fr33domlover> | But it's also because I'm trying to avoid using a type like aeson's Value or persistent's PersistValue and instead have each type be separate |
2023-05-14 12:22:05 +0200 | <fr33domlover> | (Is this a waste of time? :P) |
2023-05-14 12:23:47 +0200 | <fr33domlover> | Which is what makes my code need a typeclass to abstact over those types (they're in a closed type family, but there's no way to pick a parser/reader function for a type without a typeclass because no dependent types) |
2023-05-14 12:27:28 +0200 | <jackdk> | I am struggling to visualise your design. Do you have a snippet that you can pastebin? |
2023-05-14 12:34:57 +0200 | <fr33domlover> | jackdk: https://bin.nixnet.services/?86c84aa151f20723#56DGrCyKoT8u6jLx3oxDj9VNDYrTAkqnWfJWzapyWhfn |
2023-05-14 12:35:18 +0200 | Vajb | (~Vajb@2001:999:705:9eb4:3be1:37ee:6d1b:ae10) (Ping timeout: 265 seconds) |
2023-05-14 12:36:08 +0200 | <fr33domlover> | I'm probably going to get rid of this "Face" type thing because Idk how to implement a Slab instance like this |
2023-05-14 12:36:11 +0200 | Vajb | (~Vajb@2001:999:489:9fc7:2a48:2fed:ac18:a255) |
2023-05-14 12:36:19 +0200 | <fr33domlover> | But if anyone knows a way, I'd love to know ^_^ |
2023-05-14 12:36:56 +0200 | <jackdk> | Is the set of types you need to abstract over finite? You could shove them into the indices of a GADT if so? |
2023-05-14 12:39:25 +0200 | <jackdk> | The other tack you could consider is to use Typeable somehow |
2023-05-14 12:39:43 +0200 | <fr33domlover> | jackdk: I'm new to this so can't tell intuitively what a GADT would give me versus just using `data Face = FaceText Text | FaceByteString ByteString` (but I'll try and see) |
2023-05-14 12:41:10 +0200 | <jackdk> | fr33domlover: given `data Face a where { FaceText :: Text -> Face Text; FaceByteString :: ByteString -> Face ByteString }`, pattern-matching on a constructor of `Face a` would bring a constraint into scope telling you which constructor it was. |
2023-05-14 12:41:36 +0200 | chexum | (~quassel@gateway/tor-sasl/chexum) (Quit: No Ping reply in 180 seconds.) |
2023-05-14 12:41:42 +0200 | <jackdk> | Er. bring a constraint like `a ~ Text` into scope telling you which type you had. Maybe useful? |
2023-05-14 12:42:05 +0200 | <jackdk> | I don't know what the words "slab" and "engrave" mean, so I am still not understanding the problem you seek to solve |
2023-05-14 12:43:09 +0200 | chexum | (~quassel@gateway/tor-sasl/chexum) |
2023-05-14 12:45:29 +0200 | <fr33domlover> | jackdk: 'retrieve' would read a file and use 'see' to parse it into some type 'a'. Trouble is, a 'retrieve' implementation needs to choose whether to parse a Text or a ByteString out of the file, based on `type EngraveFace a` |
2023-05-14 12:49:18 +0200 | <jackdk> | if you use a fundep instead of an associated type, or if you put an injectivity annotation on the associated type, you could reason back through it maybe? |
2023-05-14 12:50:11 +0200 | <fr33domlover> | I can't find a way to do that because it needs to pick a file reader function (e.g. readFile or BS.readFile) based on the specific Face type, and the only way to pick a value based on a type seems to be a typeclass (I'd love to pattern-match on the Face type but Idk how) |
2023-05-14 12:51:09 +0200 | <fr33domlover> | jackdk: Reasoning back is fine, what I can't do it pick the file reader function (a value) based on the reasoned type |
2023-05-14 12:51:55 +0200 | <fr33domlover> | I'm guessing it's impossible without a typeclass, I just want someone more knowledgeable to confirm that :P |
2023-05-14 12:53:06 +0200 | <jackdk> | https://github.com/brendanhay/amazonka/blob/3e66cc1b07f2818d0b4fc346310ecdb1c3c27599/lib/amazonka/… this sort of thing? if the types are the same, then pattern-matching `Refl` brings into scope a constraint saying so |
2023-05-14 12:53:55 +0200 | melonai | (~mel@rnrd.eu) (Ping timeout: 260 seconds) |
2023-05-14 12:54:01 +0200 | vandita | (~vandit@178-164-188-13.pool.digikabel.hu) (Ping timeout: 240 seconds) |
2023-05-14 12:55:57 +0200 | vandita | (~vandit@fibhost-66-106-67.fibernet.hu) |
2023-05-14 13:01:20 +0200 | <fr33domlover> | jackdk: thanks, I didn't know this is possible! It does mean I need to handle the Nothing case by throwing an error at runtime, but it might work, I'll try ^_^ |
2023-05-14 13:03:47 +0200 | albet70 | (~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection) |
2023-05-14 13:09:54 +0200 | albet70 | (~xxx@2400:8902::f03c:92ff:fe60:98d8) |
2023-05-14 13:41:57 +0200 | wiosna | (~karangura@c-73-93-95-154.hsd1.ca.comcast.net) |
2023-05-14 13:42:07 +0200 | freeside_ | (~mengwong@103.252.202.151) |
2023-05-14 13:44:16 +0200 | <ski> | "the only way to pick a value based on a type seems to be a typeclass" -- one could also e.g. pass a record (which is how type class constraints tend to be implemented, in general) |
2023-05-14 13:44:27 +0200 | <ski> | fr33domlover ^ |
2023-05-14 13:46:28 +0200 | freeside_ | (~mengwong@103.252.202.151) (Ping timeout: 240 seconds) |
2023-05-14 13:46:28 +0200 | wiosna | (~karangura@c-73-93-95-154.hsd1.ca.comcast.net) (Ping timeout: 240 seconds) |
2023-05-14 13:49:46 +0200 | <ski> | (btw, to perhaps make it clearer. one could with GADTs do `data FaceType :: Face -> Type where { FaceTypeText :: Text -> FaceType FaceText; FaceTypeByteString :: ByteString -> FaceType FaceByteString }'. so matching on a value of type `FaceType a' against one of the patterns `FaceTypeText t' or `FaceTypeByteString b', would bring `a ~ FaceText' (and `t :: Text') alternatively `a ~ FaceByteString' (and `b :: |
2023-05-14 13:49:52 +0200 | <ski> | ByteString') into scope) |
2023-05-14 13:50:49 +0200 | <ski> | .. i'm not sure what `s' in `Slab s' would be, in instance of `Slab' |
2023-05-14 13:57:15 +0200 | <fr33domlover> | ski: How do I produce the GADT value though? So that I can match on its constructors (other than using `eqT`) |
2023-05-14 13:57:15 +0200 | <fr33domlover> | the `s` in `Slab` can be something like `Int` or `data Person = Person String Int` etc. etc. |
2023-05-14 13:58:08 +0200 | <fr33domlover> | Ah oops ignore the last message |
2023-05-14 13:58:16 +0200 | chexum | (~quassel@gateway/tor-sasl/chexum) (Remote host closed the connection) |
2023-05-14 13:58:56 +0200 | <fr33domlover> | `s` would be something like `data File = File FilePath` that implements `retrieve` by reading from that file |
2023-05-14 13:59:32 +0200 | chexum | (~quassel@gateway/tor-sasl/chexum) |
2023-05-14 14:03:17 +0200 | Lycurgus | (~juan@user/Lycurgus) |
2023-05-14 14:09:45 +0200 | Lycurgus | (~juan@user/Lycurgus) (Quit: Exeunt: personae.ai-integration.biz) |
2023-05-14 14:11:11 +0200 | titibandit | (~titibandi@user/titibandit) (Ping timeout: 256 seconds) |
2023-05-14 14:21:48 +0200 | albet70 | (~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection) |
2023-05-14 14:27:55 +0200 | albet70 | (~xxx@2400:8902::f03c:92ff:fe60:98d8) |
2023-05-14 14:33:17 +0200 | acidjnk | (~acidjnk@p200300d6e7072f04289ebaf0057e3058.dip0.t-ipconnect.de) (Ping timeout: 256 seconds) |
2023-05-14 14:34:45 +0200 | <ski> | fr33domlover : "How do I produce the GADT value though?" -- i don't know, since i don't understand the situation you're trying to model |
2023-05-14 14:35:29 +0200 | <ski> | fr33domlover : "`s` would be something like `data File = File FilePath`" -- that makes no sense, because `File :: Type', but `s :: Type -> Type', in `Slab s' |
2023-05-14 14:36:09 +0200 | <ski> | perhaps you intended for `File' to be parameterized over the type of value stored at that `FilePath' |
2023-05-14 14:36:21 +0200 | <ski> | ("phantom types", possibly) |
2023-05-14 14:41:59 +0200 | bontaq | (~user@ool-45779b84.dyn.optonline.net) (Ping timeout: 240 seconds) |
2023-05-14 14:43:11 +0200 | <dminuoso> | jade[m]: Note, part of the reason this cant be done automatically is because there are types that are just Applicative but not Monad, otherwise we could have an `instance {-# OVERLAPPING #-} Applicative f => Monad f`. And in fact its because those types exist why we have Applicative in the first place. |
2023-05-14 14:43:52 +0200 | <dminuoso> | In some way the superclass relationship is somewhat awkward, due to the presumed coherence condition (where you assume some sort of extensional equivalence between ap and (<*>), as well as pure and return) |
2023-05-14 14:45:47 +0200 | <jade[m]> | yeah that makes sense |
2023-05-14 14:46:21 +0200 | <dminuoso> | On the other hand, perhaps its a bad idea. Maybe we would have been better off with ap and return instead. |
2023-05-14 14:46:48 +0200 | <dminuoso> | Such that Applicative is the typeclass of things that can sort of "run concurrently", and Monad is the typeclass of things that can sort of "run sequentially" |
2023-05-14 14:47:09 +0200 | <dminuoso> | Right now that's kind of screwed up, because as soon as you have a Monad instance, its Applicative instance has the same "sequential effect" baked in too |
2023-05-14 14:47:43 +0200 | <jade[m]> | yeah I know that, I was just wondering whether we could infer some things "from above" rather than having to show it "from below" |
2023-05-14 14:48:08 +0200 | <jade[m]> | <mauke> "you can declare the Monad..." <- essentially this |
2023-05-14 14:48:29 +0200 | <dminuoso> | It would be nice if would you could express a typeclass instance, whose selection is dependent on whether or not another instance exists. |
2023-05-14 14:48:31 +0200 | <dminuoso> | But you cant |
2023-05-14 14:48:46 +0200 | <jade[m]> | mhm |
2023-05-14 14:49:59 +0200 | <dminuoso> | Say we assumed some `instance {-# OVERLAPPING #-} Monad f => Applicative f where (<*>) = ap; pure = return` |
2023-05-14 14:50:16 +0200 | <dminuoso> | You could write this, and in most places this would work just fine. |
2023-05-14 14:51:09 +0200 | <dminuoso> | However, because the constraint `Monad f` is not considered for the purpose of *selecting* an instance candidate, this will not play nice with errors |
2023-05-14 14:51:26 +0200 | jscript | (~jscript@cpe-172-193-181-254.qld.foxtel.net.au) |
2023-05-14 14:51:29 +0200 | <dminuoso> | (Because you can think of it as an instance for *all* types f, irrespective of whether we have Monad) |
2023-05-14 14:51:46 +0200 | <dminuoso> | Even something like `data T a = T (a -> a)` |
2023-05-14 14:51:49 +0200 | <jscript> | why do i get this? http://0x0.st/HNeb.txt |
2023-05-14 14:52:05 +0200 | <jscript> | for cabal install haskell-language-server |
2023-05-14 14:52:08 +0200 | <dminuoso> | jscript: mismatching ghc version |
2023-05-14 14:52:28 +0200 | <jscript> | how do i install one for 8.4.4 |
2023-05-14 14:52:53 +0200 | <dminuoso> | jscript: Not possible |
2023-05-14 14:53:16 +0200 | <dminuoso> | HLS since published on hackage always demanded base >= 4.12 (which corresponds to GHC 8.6.1) |
2023-05-14 14:53:36 +0200 | <jscript> | how do i obtain that version |
2023-05-14 14:53:46 +0200 | <dminuoso> | Upgrade your GHC installation. |
2023-05-14 14:57:18 +0200 | <jade[m]> | hm, can you partially apply a type parameter if it's not the first parameter? We can express `r ->` as `(-> r)`, but is there a way to express `r ->` without a newtype |
2023-05-14 14:57:21 +0200 | ski | . o O ( "Supertyping Suggestion for Haskell" by John Meacham in 2004 at <http://repetae.net/recent/out/supertyping.html> ) |
2023-05-14 14:57:24 +0200 | freeside_ | (~mengwong@103.252.202.151) |
2023-05-14 14:57:27 +0200 | <ski> | jade[m] : no |
2023-05-14 14:58:28 +0200 | <ski> | (and you mean `(->) r' (aka `(r ->)'), not `(-> r)'. the other one would be `(-> r)' (`Flip (->) r', basically)) |
2023-05-14 14:59:05 +0200 | <jade[m]> | yes, typo |
2023-05-14 14:59:17 +0200 | <jade[m]> | and yes again, is there a Flip type like that? |
2023-05-14 14:59:29 +0200 | <jade[m]> | Or do I need to define it myself? - I suppose it would be trivial |
2023-05-14 14:59:56 +0200 | <jscript> | hmm WARNING: You don't have a mk/build.mk file. |
2023-05-14 15:00:06 +0200 | <ski> | @hoogle Flip |
2023-05-14 15:00:07 +0200 | <lambdabot> | module Data.Bifunctor.Flip |
2023-05-14 15:00:07 +0200 | <lambdabot> | Data.Bifunctor.Flip newtype Flip p a b |
2023-05-14 15:00:07 +0200 | <lambdabot> | Data.Bifunctor.Flip Flip :: p b a -> Flip p a b |
2023-05-14 15:00:31 +0200 | <jade[m]> | thank you very much |
2023-05-14 15:01:53 +0200 | <ski> | @hackage bifunctors |
2023-05-14 15:01:53 +0200 | <lambdabot> | https://hackage.haskell.org/package/bifunctors |
2023-05-14 15:03:51 +0200 | <jade[m]> | <ski> ". o O ( "Supertyping Suggestion..." <- interesting |
2023-05-14 15:09:11 +0200 | freeside_ | (~mengwong@103.252.202.151) (Ping timeout: 264 seconds) |
2023-05-14 15:15:53 +0200 | coot | (~coot@89-69-206-216.dynamic.chello.pl) (Quit: coot) |
2023-05-14 15:16:08 +0200 | coot | (~coot@89-69-206-216.dynamic.chello.pl) |
2023-05-14 15:17:31 +0200 | jscript | (~jscript@cpe-172-193-181-254.qld.foxtel.net.au) (Ping timeout: 240 seconds) |
2023-05-14 15:20:29 +0200 | nate2 | (~nate@98.45.169.16) |
2023-05-14 15:24:09 +0200 | jero98772 | (~jero98772@2800:484:1d84:9000::2) |
2023-05-14 15:25:37 +0200 | tabemann | (~tabemann@172-13-49-137.lightspeed.milwwi.sbcglobal.net) |
2023-05-14 15:25:45 +0200 | nate2 | (~nate@98.45.169.16) (Ping timeout: 268 seconds) |
2023-05-14 15:30:05 +0200 | vandita | (~vandit@fibhost-66-106-67.fibernet.hu) (Ping timeout: 240 seconds) |
2023-05-14 15:32:04 +0200 | vandita | (~vandit@94-21-55-115.pool.digikabel.hu) |
2023-05-14 15:41:43 +0200 | wiosna | (~karangura@c-73-93-95-154.hsd1.ca.comcast.net) |
2023-05-14 15:45:59 +0200 | wiosna | (~karangura@c-73-93-95-154.hsd1.ca.comcast.net) (Ping timeout: 246 seconds) |
2023-05-14 16:08:17 +0200 | phma | (phma@2001:5b0:210d:9dd8:9595:9262:e864:847) (Read error: Connection reset by peer) |
2023-05-14 16:08:45 +0200 | phma | (~phma@host-67-44-208-102.hnremote.net) |
2023-05-14 16:08:56 +0200 | freeside_ | (~mengwong@103.252.202.151) |
2023-05-14 16:09:46 +0200 | eggplantade | (~Eggplanta@2600:1700:38c5:d800:200b:a013:81d0:d721) |
2023-05-14 16:12:45 +0200 | azimut | (~azimut@gateway/tor-sasl/azimut) |
2023-05-14 16:13:19 +0200 | freeside_ | (~mengwong@103.252.202.151) (Ping timeout: 265 seconds) |
2023-05-14 16:13:48 +0200 | eggplantade | (~Eggplanta@2600:1700:38c5:d800:200b:a013:81d0:d721) (Ping timeout: 240 seconds) |
2023-05-14 16:35:58 +0200 | freeside_ | (~mengwong@103.252.202.151) |
2023-05-14 16:40:47 +0200 | [itchyjunk] | (~itchyjunk@user/itchyjunk/x-7353470) |
2023-05-14 16:45:01 +0200 | freeside_ | (~mengwong@103.252.202.151) (Ping timeout: 240 seconds) |
2023-05-14 16:51:41 +0200 | tzh | (~tzh@c-24-21-73-154.hsd1.or.comcast.net) |
2023-05-14 17:00:59 +0200 | wroathe | (~wroathe@207-153-38-140.fttp.usinternet.com) |
2023-05-14 17:00:59 +0200 | wroathe | (~wroathe@207-153-38-140.fttp.usinternet.com) (Changing host) |
2023-05-14 17:00:59 +0200 | wroathe | (~wroathe@user/wroathe) |
2023-05-14 17:03:21 +0200 | freeside_ | (~mengwong@103.252.202.151) |
2023-05-14 17:03:43 +0200 | Pickchea | (~private@user/pickchea) |
2023-05-14 17:07:56 +0200 | freeside_ | (~mengwong@103.252.202.151) (Ping timeout: 265 seconds) |
2023-05-14 17:13:05 +0200 | wroathe | (~wroathe@user/wroathe) (Ping timeout: 256 seconds) |
2023-05-14 17:30:42 +0200 | pavonia | (~user@user/siracusa) (Quit: Bye!) |
2023-05-14 17:33:21 +0200 | titibandit | (~titibandi@user/titibandit) |
2023-05-14 17:40:45 +0200 | wroathe | (~wroathe@207-153-38-140.fttp.usinternet.com) |
2023-05-14 17:40:45 +0200 | wroathe | (~wroathe@207-153-38-140.fttp.usinternet.com) (Changing host) |
2023-05-14 17:40:45 +0200 | wroathe | (~wroathe@user/wroathe) |
2023-05-14 17:43:14 +0200 | wiosna | (~karangura@c-73-93-95-154.hsd1.ca.comcast.net) |
2023-05-14 17:52:46 +0200 | evincar | (~evincar@user/evincar) |
2023-05-14 17:53:25 +0200 | wiosna | (~karangura@c-73-93-95-154.hsd1.ca.comcast.net) (Ping timeout: 240 seconds) |
2023-05-14 18:01:31 +0200 | freeside_ | (~mengwong@103.252.202.151) |
2023-05-14 18:05:48 +0200 | freeside_ | (~mengwong@103.252.202.151) (Ping timeout: 240 seconds) |
2023-05-14 18:09:07 +0200 | fsestini | (~fsestini@5.151.90.160) |
2023-05-14 18:17:28 +0200 | rf | (~rf@2605:59c8:179c:f610:cee0:ff93:627a:5295) (Ping timeout: 240 seconds) |
2023-05-14 18:24:32 +0200 | <fsestini> | Hi. I'm trying to write a client in servant to query an existing API. One of the endpoints returns a response in variable content type, so i tried to model this with a Get [T1, T2,...] T, where T1, T2, etc. are all the MIME types I need to support. I was hoping that things would "just work" and servant would decode the response into my result type |
2023-05-14 18:24:32 +0200 | <fsestini> | T according to the content type listed in the response header, selecting the appropriate MimeUnrender instance. Alas it doesn't seem to be the case. What actually happens is that servant will try to decode the response according to the first content type T1, and fail if unsuccessful, disregarding the other types T2, etc. In fact servant won't even |
2023-05-14 18:24:33 +0200 | <fsestini> | care if I don't have an instance of MimeUnrender for anything but T1. Am I missing something here? How can I get servant to actually support multiple response types? |
2023-05-14 18:27:49 +0200 | mixfix41 | (~sdeny9ee@user/mixfix41) |
2023-05-14 18:31:27 +0200 | machinedgod | (~machinedg@d198-53-218-113.abhsia.telus.net) |
2023-05-14 18:32:05 +0200 | wroathe | (~wroathe@user/wroathe) (Ping timeout: 240 seconds) |
2023-05-14 18:33:26 +0200 | freeside_ | (~mengwong@103.252.202.151) |
2023-05-14 18:35:35 +0200 | vandita | (~vandit@94-21-55-115.pool.digikabel.hu) (Ping timeout: 240 seconds) |
2023-05-14 18:37:38 +0200 | vandita | (~vandit@178-164-206-39.pool.digikabel.hu) |
2023-05-14 18:38:09 +0200 | freeside_ | (~mengwong@103.252.202.151) (Ping timeout: 268 seconds) |
2023-05-14 18:53:31 +0200 | titibandit | (~titibandi@user/titibandit) (Ping timeout: 240 seconds) |
2023-05-14 18:54:51 +0200 | freeside_ | (~mengwong@103.252.202.151) |
2023-05-14 18:59:35 +0200 | freeside_ | (~mengwong@103.252.202.151) (Ping timeout: 264 seconds) |
2023-05-14 19:00:24 +0200 | freeside_ | (~mengwong@103.252.202.151) |
2023-05-14 19:01:12 +0200 | merijn | (~merijn@86-86-29-250.fixed.kpn.net) |
2023-05-14 19:03:25 +0200 | <fsestini> | uhm, I think this partially answers my question https://github.com/haskell-servant/servant/pull/552 |
2023-05-14 19:04:12 +0200 | wroathe | (~wroathe@c-24-118-213-219.hsd1.mn.comcast.net) |
2023-05-14 19:04:12 +0200 | wroathe | (~wroathe@c-24-118-213-219.hsd1.mn.comcast.net) (Changing host) |
2023-05-14 19:04:12 +0200 | wroathe | (~wroathe@user/wroathe) |
2023-05-14 19:04:46 +0200 | Guest20 | (~Guest29@94.29.126.170) |
2023-05-14 19:04:47 +0200 | freeside_ | (~mengwong@103.252.202.151) (Ping timeout: 240 seconds) |
2023-05-14 19:04:58 +0200 | Guest20 | (~Guest29@94.29.126.170) (Client Quit) |
2023-05-14 19:05:31 +0200 | Lycurgus | (~juan@user/Lycurgus) |
2023-05-14 19:06:47 +0200 | merijn | (~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 264 seconds) |
2023-05-14 19:06:59 +0200 | machinedgod | (~machinedg@d198-53-218-113.abhsia.telus.net) (Ping timeout: 256 seconds) |
2023-05-14 19:11:30 +0200 | coot | (~coot@89-69-206-216.dynamic.chello.pl) (Quit: coot) |
2023-05-14 19:12:36 +0200 | eggplantade | (~Eggplanta@2600:1700:38c5:d800:200b:a013:81d0:d721) |
2023-05-14 19:16:58 +0200 | eggplantade | (~Eggplanta@2600:1700:38c5:d800:200b:a013:81d0:d721) (Ping timeout: 250 seconds) |
2023-05-14 19:20:03 +0200 | caryhartline | (~caryhartl@2600:1700:2d0:8d30:41ce:1f50:8fd7:71a6) |
2023-05-14 19:21:08 +0200 | caryhartline | (~caryhartl@2600:1700:2d0:8d30:41ce:1f50:8fd7:71a6) (Client Quit) |
2023-05-14 19:21:59 +0200 | nate2 | (~nate@98.45.169.16) |
2023-05-14 19:25:35 +0200 | freeside_ | (~mengwong@103.252.202.151) |
2023-05-14 19:26:49 +0200 | nate2 | (~nate@98.45.169.16) (Ping timeout: 256 seconds) |
2023-05-14 19:26:55 +0200 | Pickchea | (~private@user/pickchea) (Quit: Leaving) |
2023-05-14 19:27:55 +0200 | tromp | (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
2023-05-14 19:30:13 +0200 | freeside_ | (~mengwong@103.252.202.151) (Ping timeout: 256 seconds) |
2023-05-14 19:31:33 +0200 | caryhartline | (~caryhartl@2600:1700:2d0:8d30:10f5:39f4:9f0d:b8a0) |
2023-05-14 19:31:43 +0200 | tessier | (~treed@ec2-184-72-149-67.compute-1.amazonaws.com) (Remote host closed the connection) |
2023-05-14 19:31:48 +0200 | cheater | (~Username@user/cheater) (Ping timeout: 240 seconds) |
2023-05-14 19:37:18 +0200 | cheater | (~Username@user/cheater) |
2023-05-14 19:37:39 +0200 | Lycurgus | (~juan@user/Lycurgus) (Quit: Exeunt: personae.ai-integration.biz) |
2023-05-14 19:40:35 +0200 | phma | (~phma@host-67-44-208-102.hnremote.net) (Read error: Connection reset by peer) |
2023-05-14 19:43:16 +0200 | acidjnk | (~acidjnk@p200300d6e7072f04289ebaf0057e3058.dip0.t-ipconnect.de) |
2023-05-14 19:50:10 +0200 | wiosna | (~karangura@c-73-93-95-154.hsd1.ca.comcast.net) |
2023-05-14 19:50:49 +0200 | <fr33domlover> | Thanks ski! I wrote a version with a regular ADT, will try to switch to a GADT to see its contribution |
2023-05-14 19:54:41 +0200 | wiosna | (~karangura@c-73-93-95-154.hsd1.ca.comcast.net) (Ping timeout: 265 seconds) |
2023-05-14 19:55:11 +0200 | strugglingCrab | (~strugglin@2a02:a03f:acfa:b800:4a86:4c47:2eb6:459c) |
2023-05-14 19:55:32 +0200 | <strugglingCrab> | not sure what im missing but why does this function produce an infinite list |
2023-05-14 19:55:37 +0200 | <strugglingCrab> | chunks :: Int -> [a] -> [[a]] |
2023-05-14 19:55:38 +0200 | <strugglingCrab> | chunks _ [] = [] |
2023-05-14 19:55:38 +0200 | <strugglingCrab> | chunks n xs = let (x, xs') = splitAt n xs in x : chunks n xs' |
2023-05-14 19:57:29 +0200 | <ncf> | which call produces an infinite list? |
2023-05-14 19:57:46 +0200 | <strugglingCrab> | chunks 3 [1..9] |
2023-05-14 19:58:00 +0200 | <ncf> | i get [[1,2,3],[4,5,6],[7,8,9]] |
2023-05-14 19:58:06 +0200 | <strugglingCrab> | hmm |
2023-05-14 19:58:15 +0200 | <ncf> | using splitAt from base |
2023-05-14 19:58:20 +0200 | <jade[m]> | do you call it with an infinite list? |
2023-05-14 19:58:21 +0200 | <strugglingCrab> | yea |
2023-05-14 19:58:24 +0200 | <strugglingCrab> | no |
2023-05-14 19:58:53 +0200 | <ncf> | how are you concluding that it produces an infinite list? |
2023-05-14 19:59:08 +0200 | <probie> | strugglingCrab: what do you get if you call `take 10 $ chunks 3 [1..10]`? |
2023-05-14 19:59:36 +0200 | <strugglingCrab> | calling it in ghci doesn't terminate, just prints a list consisting of the sublists you would expect followed by a non ending amount of empty lists |
2023-05-14 19:59:49 +0200 | <ncf> | do :i splitAt |
2023-05-14 19:59:59 +0200 | <ncf> | oh, i see what's wrong |
2023-05-14 20:00:11 +0200 | <ncf> | you need to either put both cases on the same line with a semicolon or use :{ :} |
2023-05-14 20:00:28 +0200 | <strugglingCrab> | probie [[1,2,3],[4,5,6],[7,8,9],[10],[],[],[],[],[],[]] |
2023-05-14 20:01:06 +0200 | <ncf> | otherwise each line redefines the function |
2023-05-14 20:01:13 +0200 | <ncf> | so you don't have a case for [] |
2023-05-14 20:01:18 +0200 | <strugglingCrab> | ahhh |
2023-05-14 20:02:13 +0200 | <jade[m]> | yeah that's a quirk of ghci |
2023-05-14 20:02:26 +0200 | <jade[m]> | but it makes sense why it does that |
2023-05-14 20:02:26 +0200 | <strugglingCrab> | i see, i got it to work now, thanks :] |
2023-05-14 20:05:35 +0200 | <monochrom> | This is why coding up a whole project at the REPL doesn't scale. Use a file. |
2023-05-14 20:06:18 +0200 | u0_a202 | (~u0_a202@47.60.32.137) |
2023-05-14 20:06:25 +0200 | u0_a202 | dom0 |
2023-05-14 20:06:58 +0200 | <strugglingCrab> | monochrom i am using a file but i wanted to try this single function at the repl to see if i implemented it correctly |
2023-05-14 20:09:55 +0200 | phma | (~phma@host-67-44-208-35.hnremote.net) |
2023-05-14 20:10:19 +0200 | <fr33domlover> | I often use `:load xyz.hs` and then `:edit` to change my code and instantly get a REPL to play with it |
2023-05-14 20:10:32 +0200 | <fr33domlover> | So, it's both a file and a repl :P |
2023-05-14 20:10:49 +0200 | titibandit | (~titibandi@user/titibandit) |
2023-05-14 20:10:52 +0200 | <jade[m]> | the repl loads the file |
2023-05-14 20:11:00 +0200 | <monochrom> | :!ed xyz.hs so the editor looks like a REPL too! |
2023-05-14 20:11:06 +0200 | <jade[m]> | you shouldn't write the function in the repl, just test it |
2023-05-14 20:11:44 +0200 | ski | 's set that to use `emacsclient -nw' |
2023-05-14 20:12:16 +0200 | wiosna | (~karangura@c-73-93-95-154.hsd1.ca.comcast.net) |
2023-05-14 20:12:22 +0200 | <strugglingCrab> | i normally just test but i had other type errors in the file that i didnt want to fix for the time being |
2023-05-14 20:12:47 +0200 | <monochrom> | Ah, tell ghci to --fdefer-type-errors |
2023-05-14 20:12:59 +0200 | <monochrom> | err, just one dash, -fdefer-type-errors |
2023-05-14 20:13:19 +0200 | <strugglingCrab> | ah, wasn't aware about this that seems handy |
2023-05-14 20:13:29 +0200 | <monochrom> | It is actually what I tell me ghci, especially when in emacs haskell mode |
2023-05-14 20:13:30 +0200 | dom0 | (~u0_a202@47.60.32.137) (Quit: WeeChat 3.8) |
2023-05-14 20:14:15 +0200 | <monochrom> | Also, use "undefined" for stubs/TODOs generously. |
2023-05-14 20:16:05 +0200 | <strugglingCrab> | what is the haskell/cabal equivalent of cargo check |
2023-05-14 20:16:19 +0200 | bontaq | (~user@ool-45779b84.dyn.optonline.net) |
2023-05-14 20:16:23 +0200 | <strugglingCrab> | ie just outputting warnings without building |
2023-05-14 20:16:31 +0200 | wiosna | (~karangura@c-73-93-95-154.hsd1.ca.comcast.net) (Ping timeout: 240 seconds) |
2023-05-14 20:16:38 +0200 | coot | (~coot@89-69-206-216.dynamic.chello.pl) |
2023-05-14 20:16:41 +0200 | <monochrom> | We don't have that. |
2023-05-14 20:16:49 +0200 | <strugglingCrab> | because hlint doesn't lint for some things for which i thought it would (unused imports for example) |
2023-05-14 20:16:54 +0200 | <strugglingCrab> | ah okey |
2023-05-14 20:17:25 +0200 | <geekosaur> | ghc -Wall -fno-code |
2023-05-14 20:17:28 +0200 | <monochrom> | Or maybe we do, ghc -fno-code, cabal build --ghc-option=-fno-code or something |
2023-05-14 20:18:22 +0200 | <monochrom> | But REPL's :load is almost as fast as -fno-code already |
2023-05-14 20:18:43 +0200 | geekosaur | mentions ghcid |
2023-05-14 20:19:42 +0200 | <strugglingCrab> | thanks, will use -fno-code then |
2023-05-14 20:20:13 +0200 | <strugglingCrab> | another question but the context is a bit long so i put it in a pastebin (https://pastebin.com/uCLh4nn9) |
2023-05-14 20:20:45 +0200 | <strugglingCrab> | i just dont get how this error message makes sense, becaues the code is in a module from which the constructor of Board is not even visible |
2023-05-14 20:21:10 +0200 | <strugglingCrab> | so i couldn't even pattern match on it if i wanted to from how i understand it |
2023-05-14 20:21:45 +0200 | <strugglingCrab> | also, shouldn't this pattern catch all of those mentioned patterns anyways |
2023-05-14 20:22:54 +0200 | <geekosaur> | ghc can't understand the intent of your code to know those are complete |
2023-05-14 20:23:01 +0200 | <monochrom> | The compiler uses a dumb and conservative algorithm for this. It has false alarms, yes. |
2023-05-14 20:23:24 +0200 | <geekosaur> | s/understand/know/ |
2023-05-14 20:23:31 +0200 | <monochrom> | But if your last guard says "otherwise = 1" the algorithm is happy. |
2023-05-14 20:24:01 +0200 | <monochrom> | Although, if it's tic-tac-toe, what if the board is not full and no one has won yet? |
2023-05-14 20:24:18 +0200 | themc47 | (~mc47@xmonad/TheMC47) |
2023-05-14 20:24:50 +0200 | mc47 | (~mc47@xmonad/TheMC47) (Ping timeout: 268 seconds) |
2023-05-14 20:25:20 +0200 | <strugglingCrab> | oh, i thought that was a "solved" problem, i remember a talk by that simon haskell guy (sorry, forgot his full name) about developing a dsl for exhaustive pattern analysis in lazy languages or something |
2023-05-14 20:26:13 +0200 | <strugglingCrab> | also, evalBoard is part of a minimax implementation so it will (assuming i dont make mistakes) only be called on leaves of the gametree |
2023-05-14 20:26:38 +0200 | <monochrom> | To be sure, I haven't followed that development, so I don't know how good it is today. |
2023-05-14 20:27:07 +0200 | <monochrom> | Right, so if you do have a precondition, the compiler doesn't know. |
2023-05-14 20:27:23 +0200 | <strugglingCrab> | yes, but i dont see how that relates to the error that is displayed |
2023-05-14 20:27:36 +0200 | <monochrom> | Or rather, refuses to know. GHC is still not a whole-program-analysis compiler. |
2023-05-14 20:27:39 +0200 | <strugglingCrab> | the pattern im matching on is just "board" |
2023-05-14 20:27:49 +0200 | <geekosaur> | the pattern includes guards |
2023-05-14 20:27:57 +0200 | <monochrom> | Ah it just reuses the wording "pattern" for guards. |
2023-05-14 20:28:14 +0200 | <geekosaur> | ghc will try to analyze your guards as part of it but isn't very good at it |
2023-05-14 20:29:57 +0200 | <strugglingCrab> | also, is there a way to suppress cabal telling me the details of the order my program is compiled in |
2023-05-14 20:30:40 +0200 | <monochrom> | Some of that comes from GHC itself, too. |
2023-05-14 20:30:49 +0200 | <monochrom> | I don't know either of them. |
2023-05-14 20:31:19 +0200 | <monochrom> | or rather, how to suppress either |
2023-05-14 20:31:50 +0200 | <geekosaur> | -v0 ? |
2023-05-14 20:32:13 +0200 | <strugglingCrab> | ah yes that works, thanks |
2023-05-14 20:33:15 +0200 | eggplantade | (~Eggplanta@2600:1700:38c5:d800:200b:a013:81d0:d721) |
2023-05-14 20:34:57 +0200 | fsestini | (~fsestini@5.151.90.160) (Quit: Client closed) |
2023-05-14 20:36:12 +0200 | freeside_ | (~mengwong@103.252.202.151) |
2023-05-14 20:37:59 +0200 | evincar | (~evincar@user/evincar) (Ping timeout: 240 seconds) |
2023-05-14 20:39:49 +0200 | michalz | (~michalz@185.246.207.200) |
2023-05-14 20:41:25 +0200 | freeside_ | (~mengwong@103.252.202.151) (Ping timeout: 240 seconds) |
2023-05-14 20:45:40 +0200 | mncheck | (~mncheck@193.224.205.254) |
2023-05-14 20:53:24 +0200 | strugglingCrab | (~strugglin@2a02:a03f:acfa:b800:4a86:4c47:2eb6:459c) (Quit: Client closed) |
2023-05-14 20:57:35 +0200 | vandita | (~vandit@178-164-206-39.pool.digikabel.hu) (Ping timeout: 240 seconds) |
2023-05-14 20:59:28 +0200 | vandita | (~vandit@91-83-11-250.pool.digikabel.hu) |
2023-05-14 21:06:40 +0200 | waleee | (~waleee@2001:9b0:21c:4000:5bf9:6515:c030:57b7) |
2023-05-14 21:14:16 +0200 | Sgeo | (~Sgeo@user/sgeo) |
2023-05-14 21:16:31 +0200 | titibandit | (~titibandi@user/titibandit) (Ping timeout: 240 seconds) |
2023-05-14 21:16:40 +0200 | nattiestnate | (~nate@202.138.250.9) |
2023-05-14 21:17:38 +0200 | nattiestnate | (~nate@202.138.250.9) (Client Quit) |
2023-05-14 21:17:53 +0200 | nattiestnate | (~nate@202.138.250.9) |
2023-05-14 21:19:11 +0200 | wroathe | (~wroathe@user/wroathe) (Ping timeout: 240 seconds) |
2023-05-14 21:26:55 +0200 | caryhartline | (~caryhartl@2600:1700:2d0:8d30:10f5:39f4:9f0d:b8a0) (Quit: caryhartline) |
2023-05-14 21:35:35 +0200 | ddellacosta | (~ddellacos@146.70.165.10) (Ping timeout: 240 seconds) |
2023-05-14 21:37:39 +0200 | ddellacosta | (~ddellacos@143.244.47.71) |
2023-05-14 21:40:04 +0200 | wiosna | (~karangura@c-73-93-95-154.hsd1.ca.comcast.net) |
2023-05-14 21:42:16 +0200 | caryhartline | (~caryhartl@107.140.218.181) |
2023-05-14 21:45:37 +0200 | wiosna | (~karangura@c-73-93-95-154.hsd1.ca.comcast.net) (Ping timeout: 268 seconds) |
2023-05-14 21:45:39 +0200 | wroathe | (~wroathe@207-153-38-140.fttp.usinternet.com) |
2023-05-14 21:45:39 +0200 | wroathe | (~wroathe@207-153-38-140.fttp.usinternet.com) (Changing host) |
2023-05-14 21:45:39 +0200 | wroathe | (~wroathe@user/wroathe) |
2023-05-14 21:48:44 +0200 | freeside_ | (~mengwong@103.252.202.151) |
2023-05-14 21:49:09 +0200 | coot | (~coot@89-69-206-216.dynamic.chello.pl) (Quit: coot) |
2023-05-14 21:53:11 +0200 | freeside_ | (~mengwong@103.252.202.151) (Ping timeout: 240 seconds) |
2023-05-14 21:56:50 +0200 | cheater | (~Username@user/cheater) (Read error: Connection reset by peer) |
2023-05-14 21:57:10 +0200 | cheater | (~Username@user/cheater) |
2023-05-14 21:58:04 +0200 | titibandit | (~titibandi@user/titibandit) |
2023-05-14 22:02:00 +0200 | caryhartline | (~caryhartl@107.140.218.181) (Quit: caryhartline) |
2023-05-14 22:03:47 +0200 | nek0 | (~nek0@2a01:4f8:222:2b41::12) (Quit: The Lounge - https://thelounge.chat) |
2023-05-14 22:05:08 +0200 | wiosna | (~karangura@c-73-93-95-154.hsd1.ca.comcast.net) |
2023-05-14 22:08:26 +0200 | _ht | (~Thunderbi@28-52-174-82.ftth.glasoperator.nl) (Remote host closed the connection) |
2023-05-14 22:09:23 +0200 | gnalzo | (~gnalzo@2a01:e0a:498:fd50:fcc6:bb5d:489a:ce8c) (Quit: WeeChat 3.8) |
2023-05-14 22:12:23 +0200 | wroathe | (~wroathe@user/wroathe) (Ping timeout: 240 seconds) |
2023-05-14 22:16:45 +0200 | nek0 | (~nek0@2a01:4f8:222:2b41::12) |
2023-05-14 22:17:21 +0200 | wroathe | (~wroathe@207-153-38-140.fttp.usinternet.com) |
2023-05-14 22:17:21 +0200 | wroathe | (~wroathe@207-153-38-140.fttp.usinternet.com) (Changing host) |
2023-05-14 22:17:21 +0200 | wroathe | (~wroathe@user/wroathe) |
2023-05-14 22:18:18 +0200 | freeside_ | (~mengwong@103.252.202.151) |
2023-05-14 22:18:48 +0200 | evincar | (~evincar@user/evincar) |
2023-05-14 22:20:46 +0200 | wiosna | (~karangura@c-73-93-95-154.hsd1.ca.comcast.net) (Ping timeout: 268 seconds) |
2023-05-14 22:23:03 +0200 | freeside_ | (~mengwong@103.252.202.151) (Ping timeout: 256 seconds) |
2023-05-14 22:23:41 +0200 | Pickchea | (~private@user/pickchea) |
2023-05-14 22:24:18 +0200 | caryhartline | (~caryhartl@107.140.218.181) |
2023-05-14 22:26:29 +0200 | urdh | (~urdh@user/urdh) (Quit: Boom!) |
2023-05-14 22:29:49 +0200 | urdh | (~urdh@83-233-165-22.cust.bredband2.com) |
2023-05-14 22:29:49 +0200 | urdh | (~urdh@83-233-165-22.cust.bredband2.com) (Changing host) |
2023-05-14 22:29:49 +0200 | urdh | (~urdh@user/urdh) |
2023-05-14 22:30:45 +0200 | takuan | (~takuan@178-116-218-225.access.telenet.be) (Ping timeout: 240 seconds) |
2023-05-14 22:31:17 +0200 | mixfix41 | (~sdeny9ee@user/mixfix41) (Ping timeout: 265 seconds) |
2023-05-14 22:31:42 +0200 | takuan | (~takuan@178-116-218-225.access.telenet.be) |
2023-05-14 22:31:50 +0200 | freeside_ | (~mengwong@103.252.202.151) |
2023-05-14 22:32:45 +0200 | wiosna | (~karangura@c-73-93-95-154.hsd1.ca.comcast.net) |
2023-05-14 22:32:46 +0200 | titibandit | (~titibandi@user/titibandit) (Remote host closed the connection) |
2023-05-14 22:32:48 +0200 | urdh | (~urdh@user/urdh) (Client Quit) |
2023-05-14 22:34:01 +0200 | janus | (janus@anubis.0x90.dk) () |
2023-05-14 22:34:11 +0200 | urdh | (~urdh@user/urdh) |
2023-05-14 22:34:55 +0200 | gmg | (~user@user/gehmehgeh) (Quit: Leaving) |
2023-05-14 22:36:47 +0200 | wiosna | (~karangura@c-73-93-95-154.hsd1.ca.comcast.net) (Ping timeout: 240 seconds) |
2023-05-14 22:38:47 +0200 | freeside_ | (~mengwong@103.252.202.151) (Ping timeout: 240 seconds) |
2023-05-14 22:41:52 +0200 | zeenk | (~zeenk@2a02:2f04:a105:f00::7fe) |
2023-05-14 22:42:35 +0200 | <sclv> | iirc there's a more potentially complete algorithm but its to expensive, so ghc uses something a bit less complete, but which won't blow up compile times and memory |
2023-05-14 22:42:47 +0200 | leat | (~leat@46.70.67.13) |
2023-05-14 22:43:49 +0200 | Gremlin8483 | (~Gremlin84@73.243.250.212) (Ping timeout: 265 seconds) |
2023-05-14 22:46:51 +0200 | <hellwolf[m]> | without using template haskell, how can I achieve something like `foo = return __FUNCTION__NAME__ <> "is my name"` ? |
2023-05-14 22:47:10 +0200 | <geekosaur> | without using TH, you can't |
2023-05-14 22:47:36 +0200 | freeside_ | (~mengwong@103.252.202.151) |
2023-05-14 22:47:57 +0200 | <jade[m]> | why do you want to do that |
2023-05-14 22:48:21 +0200 | <geekosaur> | debugging, presumably |
2023-05-14 22:48:30 +0200 | <jade[m]> | ah |
2023-05-14 22:48:30 +0200 | <monochrom> | Probably because there are hundreds of functions needing that. Which in turn probably because "better error messages". :) |
2023-05-14 22:48:56 +0200 | <geekosaur> | `HasCallStack` might be of some interest, but it's somewhat magical and can require you to retrofit that constraint everywhere |
2023-05-14 22:49:05 +0200 | <monochrom> | Ironically if you just use error, you need to nothing and you even get line numbers! |
2023-05-14 22:49:42 +0200 | caryhartline | (~caryhartl@107.140.218.181) (Quit: caryhartline) |
2023-05-14 22:50:30 +0200 | <monochrom> | Hrm TH is a interesting thought. I have test cases that use, say, the == relation and I want the failure message to also say "fails the == relation"... |
2023-05-14 22:50:55 +0200 | <monochrom> | or perhaps s/failure message/name of test case/ |
2023-05-14 22:51:56 +0200 | <monochrom> | But I'm too lazy. It's rabbit holes all the way down... |
2023-05-14 22:52:28 +0200 | wroathe | (~wroathe@user/wroathe) (Ping timeout: 240 seconds) |
2023-05-14 22:52:44 +0200 | <monochrom> | You don't need HasCallStack until you want to see a more complete call chain. |
2023-05-14 22:53:41 +0200 | <geekosaur> | not entirely true, as even without the call chain you get the magic behavior that gives you access to the function's name and location (which is how `error` gets it) |
2023-05-14 22:54:43 +0200 | <monochrom> | OK yeah error has HasCallStack. I mean you don't need to add your own additional "HasCallStack=>"s |
2023-05-14 22:55:23 +0200 | freeside_ | (~mengwong@103.252.202.151) (Ping timeout: 264 seconds) |
2023-05-14 22:57:06 +0200 | <mauke> | > getCallStack callStack |
2023-05-14 22:57:08 +0200 | <lambdabot> | error: |
2023-05-14 22:57:08 +0200 | <lambdabot> | Variable not in scope: getCallStack :: t0 -> terror: Variable not in sco... |
2023-05-14 22:57:23 +0200 | <mauke> | t0 -> terror, indeed |
2023-05-14 22:57:32 +0200 | <monochrom> | haha |
2023-05-14 23:00:56 +0200 | <sm> | call stacks in haskell.. so confusing! |
2023-05-14 23:02:30 +0200 | merijn | (~merijn@86-86-29-250.fixed.kpn.net) |
2023-05-14 23:05:09 +0200 | freeside_ | (~mengwong@103.252.202.151) |
2023-05-14 23:06:45 +0200 | merijn | (~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 240 seconds) |
2023-05-14 23:08:15 +0200 | takuan | (~takuan@178-116-218-225.access.telenet.be) (Ping timeout: 268 seconds) |
2023-05-14 23:08:35 +0200 | leat | (~leat@46.70.67.13) (Quit: WeeChat 3.8) |
2023-05-14 23:09:53 +0200 | takuan | (~takuan@178-116-218-225.access.telenet.be) |
2023-05-14 23:09:57 +0200 | freeside_ | (~mengwong@103.252.202.151) (Ping timeout: 265 seconds) |
2023-05-14 23:10:24 +0200 | Gremlin8483 | (~Gremlin84@c-73-243-250-212.hsd1.co.comcast.net) |
2023-05-14 23:10:56 +0200 | takuan | (~takuan@178-116-218-225.access.telenet.be) (Read error: Connection reset by peer) |
2023-05-14 23:11:41 +0200 | takuan | (~takuan@178-116-218-225.access.telenet.be) |
2023-05-14 23:19:20 +0200 | <probie> | `foo :: HasCallStack => String; foo = (fst $ head $ getCallStack callStack) <> " is my name"` |
2023-05-14 23:19:59 +0200 | <geekosaur> | with the appropriate import |
2023-05-14 23:21:23 +0200 | <geekosaur> | https://downloads.haskell.org/ghc/9.2.5/docs/html/libraries/base-4.16.4.0/GHC-Stack.html |
2023-05-14 23:23:29 +0200 | nate2 | (~nate@98.45.169.16) |
2023-05-14 23:27:07 +0200 | zmt00 | (~zmt00@user/zmt00) (Quit: Leaving) |
2023-05-14 23:28:36 +0200 | nate2 | (~nate@98.45.169.16) (Ping timeout: 268 seconds) |
2023-05-14 23:29:21 +0200 | zmt00 | (~zmt00@user/zmt00) |
2023-05-14 23:33:46 +0200 | <hololeap> | I'm caching a data structure and a timestamp using the binary package and I have a question about laziness |
2023-05-14 23:33:55 +0200 | trev | (~trev@user/trev) (Quit: trev) |
2023-05-14 23:34:22 +0200 | <hololeap> | I first want to check the timestamp to see if the cache is invalid, before even bothering to read the datastructure |
2023-05-14 23:34:37 +0200 | <hololeap> | currently I have them in separate files |
2023-05-14 23:35:18 +0200 | <hololeap> | but could this be achived with one file which contains (Timestamp, Datastructure)? |
2023-05-14 23:37:01 +0200 | takuan | (~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection) |
2023-05-14 23:38:11 +0200 | <geekosaur> | at the price of possibly leaking file descriptors / Handles, which aren't necessarily in great supply |
2023-05-14 23:39:23 +0200 | <geekosaur> | unless you're doing this in one step (that is, you read the timestamp and immediately check it to see if you need to read the rest), this may not be a good idea |
2023-05-14 23:39:59 +0200 | <geekosaur> | and even if you are doing that, you may want to check the buffer size (not only of the Handle but also of the filesystem) since you may already have read the whole thing anyway |
2023-05-14 23:40:59 +0200 | <hololeap> | geekosaur: well, here's the actual code as I have it currently |
2023-05-14 23:41:00 +0200 | <hololeap> | https://github.com/hololeap/hackport/commit/685adc420d8a116c8c87d2a50c6c46f3c82cfc48#diff-04adf15b… |
2023-05-14 23:41:36 +0200 | <hololeap> | so right now it's reading the timestamp file, checking to see if it's valid, and _then_ proceeding to read the other cache file |
2023-05-14 23:41:44 +0200 | themc47 | (~mc47@xmonad/TheMC47) (Remote host closed the connection) |
2023-05-14 23:41:46 +0200 | <hololeap> | I would just prefer if I could do this with one file |
2023-05-14 23:42:21 +0200 | <geekosaur> | there should be no reason you can't technically, but again this isn't so much a laziness question as a resources question |
2023-05-14 23:42:47 +0200 | <geekosaur> | 5000 Handles open simultaneously may not be a great idea |
2023-05-14 23:43:14 +0200 | <hololeap> | I'm confused why one file would require more handles |
2023-05-14 23:43:48 +0200 | <geekosaur> | I'm not sure you gain much if you're not doing this with more than one file |
2023-05-14 23:44:18 +0200 | <geekosaur> | moreover I don't see how it's a laziness question in that case |
2023-05-14 23:45:05 +0200 | <geekosaur> | if you're making the decision right then, there's no difference between strict and lazy |
2023-05-14 23:45:27 +0200 | <geekosaur> | if you're reading the timestamp now and using it and the associated trie later, then you have a laziness question |
2023-05-14 23:45:47 +0200 | <hololeap> | right, which is what I'm doing :) |
2023-05-14 23:46:15 +0200 | <geekosaur> | you're still potentially leaking a Handle in that case |
2023-05-14 23:46:29 +0200 | <hololeap> | ok, I think I see what you're saying |
2023-05-14 23:46:49 +0200 | <geekosaur> | also I don't think that's necessarily a laziness question, just that it might be one |
2023-05-14 23:47:06 +0200 | <geekosaur> | you will have read the start of the trie but that's a filesystem thing, not a Haskell thing |
2023-05-14 23:47:31 +0200 | <hololeap> | ok, separate files it is, then :) |
2023-05-14 23:47:32 +0200 | <geekosaur> | whether you parse it immediately or not is up to your code |
2023-05-14 23:48:14 +0200 | <geekosaur> | if you parse immediately you probably lose laziness. if you don't, you hold a Handle open until you need it and you need to remember to clean it up at some point |
2023-05-14 23:48:58 +0200 | <hololeap> | right, and that's a lot of mental overhead to avoid having two files |
2023-05-14 23:49:06 +0200 | vandita | (~vandit@91-83-11-250.pool.digikabel.hu) (Ping timeout: 265 seconds) |
2023-05-14 23:49:37 +0200 | zeenk | (~zeenk@2a02:2f04:a105:f00::7fe) (Quit: Konversation terminated!) |
2023-05-14 23:50:16 +0200 | Raito_Bezarius | (~Raito@wireguard/tunneler/raito-bezarius) (Read error: Connection reset by peer) |
2023-05-14 23:50:45 +0200 | vandita | (~vandit@87-97-13-47.pool.digikabel.hu) |
2023-05-14 23:51:37 +0200 | <hololeap> | thanks for the advice, geekosaur |
2023-05-14 23:55:35 +0200 | wiosna | (~karangura@c-73-93-95-154.hsd1.ca.comcast.net) |