Logs on 2023-05-14 (liberachat/#haskell)
| 00:01:31 | × | vorpuni quits (~pvorp@2a01:e0a:1cd:ea70:afe3:506e:aa0:19a1) (Ping timeout: 240 seconds) |
| 00:05:09 | → | nate2 joins (~nate@98.45.169.16) |
| 00:09:48 | × | nate2 quits (~nate@98.45.169.16) (Ping timeout: 240 seconds) |
| 00:15:14 | <sm> | [dmj](https://matrix.to/#/@dmj:libera.chat): what does that mean |
| 00:15:56 | <sm> | configure dependencies that are added by default in each new project ? |
| 00:20:30 | → | wroathe joins (~wroathe@207-153-38-140.fttp.usinternet.com) |
| 00:20:30 | × | wroathe quits (~wroathe@207-153-38-140.fttp.usinternet.com) (Changing host) |
| 00:20:30 | → | wroathe joins (~wroathe@user/wroathe) |
| 00:22:45 | → | harveypwca joins (~harveypwc@2601:246:c180:a570:3828:d8:e523:3f67) |
| 00:40:16 | × | mud quits (~mud@user/kadoban) (Remote host closed the connection) |
| 00:47:02 | → | nate2 joins (~nate@98.45.169.16) |
| 00:48:29 | × | titibandit quits (~titibandi@user/titibandit) (Remote host closed the connection) |
| 00:59:52 | <sclv> | hackage down rof redeploy |
| 00:59:57 | <sclv> | er hackage down for redeploy |
| 01:01:00 | <statusbot> | Status Bot enabled for #haskell |
| 01:09:14 | <statusbot> | Maintenance update: Server upgrade complete. Hackage back operational. -- http://status.haskell.org/pages/maintenance/537c07b0cf1fad5830000093/6460267b5c22c605300a008e |
| 01:09:27 | × | wroathe quits (~wroathe@user/wroathe) (Ping timeout: 268 seconds) |
| 01:10:46 | × | albet70 quits (~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection) |
| 01:12:40 | → | freeside_ joins (~mengwong@103.252.202.151) |
| 01:16:54 | → | albet70 joins (~xxx@2400:8902::f03c:92ff:fe60:98d8) |
| 01:17:15 | × | freeside_ quits (~mengwong@103.252.202.151) (Ping timeout: 256 seconds) |
| 01:29:45 | → | rekahsoft joins (~rekahsoft@bras-base-orllon1122w-grc-04-174-88-193-177.dsl.bell.ca) |
| 01:30:29 | × | rekahsoft quits (~rekahsoft@bras-base-orllon1122w-grc-04-174-88-193-177.dsl.bell.ca) (Remote host closed the connection) |
| 01:30:46 | → | remexre joins (~remexre@user/remexre) |
| 01:31:04 | → | rekahsoft joins (~rekahsoft@bras-base-orllon1122w-grc-04-174-88-193-177.dsl.bell.ca) |
| 01:35:07 | × | puke quits (~puke@user/puke) (Quit: puke) |
| 01:36:35 | × | evincar quits (~evincar@user/evincar) (Ping timeout: 268 seconds) |
| 01:38:01 | × | cheater quits (~Username@user/cheater) (Ping timeout: 240 seconds) |
| 01:38:02 | → | cheater_ joins (~Username@user/cheater) |
| 01:38:02 | cheater_ | is now known as cheater |
| 01:44:05 | × | vandita quits (~vandit@79-120-162-186.pool.digikabel.hu) (Ping timeout: 240 seconds) |
| 01:45:55 | → | vandita joins (~vandit@91-83-3-39.pool.digikabel.hu) |
| 01:46:34 | × | waleee quits (~waleee@2001:9b0:21c:4000:5bf9:6515:c030:57b7) (Ping timeout: 265 seconds) |
| 01:47:11 | → | puke joins (~puke@user/puke) |
| 01:48:45 | × | nate2 quits (~nate@98.45.169.16) (Ping timeout: 240 seconds) |
| 01:56:32 | → | evincar joins (~evincar@user/evincar) |
| 01:57:37 | × | harveypwca quits (~harveypwc@2601:246:c180:a570:3828:d8:e523:3f67) (Quit: Leaving) |
| 01:59:39 | → | freeside_ joins (~mengwong@103.252.202.151) |
| 01:59:50 | <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. |
| 02:02:08 | <dmj`> | sm: mkDerivation = args: super.mkDerivation (args // { buildInputs = args.buildInputs ++ [ myPlugin ]}); is what I want to do |
| 02:03:59 | × | evincar quits (~evincar@user/evincar) (Ping timeout: 240 seconds) |
| 02:10:01 | × | freeside_ quits (~mengwong@103.252.202.151) (Ping timeout: 240 seconds) |
| 02:12:51 | → | freeside_ joins (~mengwong@103.252.202.151) |
| 02:16:45 | × | td_ quits (~td@i53870905.versanet.de) (Ping timeout: 256 seconds) |
| 02:16:54 | → | evincar joins (~evincar@user/evincar) |
| 02:17:01 | × | freeside_ quits (~mengwong@103.252.202.151) (Ping timeout: 240 seconds) |
| 02:18:21 | → | td_ joins (~td@i53870921.versanet.de) |
| 02:21:28 | × | evincar quits (~evincar@user/evincar) (Ping timeout: 240 seconds) |
| 02:23:46 | → | evincar joins (~evincar@user/evincar) |
| 02:30:36 | × | [itchyjunk] quits (~itchyjunk@user/itchyjunk/x-7353470) (Remote host closed the connection) |
| 02:46:53 | × | evincar quits (~evincar@user/evincar) (Ping timeout: 268 seconds) |
| 02:56:15 | → | freeside_ joins (~mengwong@103.252.202.151) |
| 02:56:45 | × | FinnElija quits (~finn_elij@user/finn-elija/x-0085643) (Killed (NickServ (Forcing logout FinnElija -> finn_elija))) |
| 02:56:45 | → | finn_elija joins (~finn_elij@user/finn-elija/x-0085643) |
| 02:56:45 | finn_elija | is now known as FinnElija |
| 03:00:47 | × | freeside_ quits (~mengwong@103.252.202.151) (Ping timeout: 264 seconds) |
| 03:00:49 | → | evincar joins (~evincar@user/evincar) |
| 03:02:26 | → | russruss joins (~russruss@my.russellmcc.com) |
| 03:13:21 | → | ub joins (~Thunderbi@p200300ecdf18b67bd2f2cbf65c2c6dd6.dip0.t-ipconnect.de) |
| 03:14:35 | × | ubert quits (~Thunderbi@p548c8bbe.dip0.t-ipconnect.de) (Ping timeout: 264 seconds) |
| 03:14:35 | ub | is now known as ubert |
| 03:22:01 | × | phma quits (phma@2001:5b0:210d:9dd8:7e87:f62f:6b71:75cd) (Read error: Connection reset by peer) |
| 03:22:28 | → | phma joins (phma@2001:5b0:210d:9dd8:9595:9262:e864:847) |
| 03:25:26 | → | freeside_ joins (~mengwong@103.252.202.151) |
| 03:26:57 | → | dsanchez joins (~dsanchez@189.162.135.18) |
| 03:27:31 | × | ubert quits (~Thunderbi@p200300ecdf18b67bd2f2cbf65c2c6dd6.dip0.t-ipconnect.de) (Remote host closed the connection) |
| 03:27:50 | → | ubert joins (~Thunderbi@p200300ecdf18b67bd2f2cbf65c2c6dd6.dip0.t-ipconnect.de) |
| 03:29:51 | × | freeside_ quits (~mengwong@103.252.202.151) (Ping timeout: 256 seconds) |
| 03:30:06 | <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 |
| 03:36:59 | <monochrom> | /opme |
| 03:37:08 | ChanServ | sets mode +o monochrom |
| 03:37:15 | monochrom | sets mode +b *!*@189.162.135.18 |
| 03:37:15 | dsanchez | is kicked by monochrom (dsanchez) |
| 03:37:45 | × | rekahsoft quits (~rekahsoft@bras-base-orllon1122w-grc-04-174-88-193-177.dsl.bell.ca) (Remote host closed the connection) |
| 03:37:59 | × | troydm quits (~troydm@user/troydm) (Ping timeout: 240 seconds) |
| 03:38:11 | monochrom | sets mode -o monochrom |
| 03:38:30 | → | rekahsoft joins (~rekahsoft@bras-base-orllon1122w-grc-04-174-88-193-177.dsl.bell.ca) |
| 03:39:24 | × | jero98772 quits (~jero98772@2800:484:1d84:9000::3) (Remote host closed the connection) |
| 03:40:32 | × | Benzi-Junior quits (~BenziJuni@dsl-149-64-86.hive.is) (Quit: ZNC 1.8.2 - https://znc.in) |
| 03:41:32 | × | vandita quits (~vandit@91-83-3-39.pool.digikabel.hu) (Ping timeout: 246 seconds) |
| 03:41:45 | × | ubert quits (~Thunderbi@p200300ecdf18b67bd2f2cbf65c2c6dd6.dip0.t-ipconnect.de) (Ping timeout: 256 seconds) |
| 03:42:01 | → | ubert joins (~Thunderbi@p548c8bbe.dip0.t-ipconnect.de) |
| 03:43:20 | → | vandita joins (~vandit@85-238-93-13.pool.digikabel.hu) |
| 03:46:33 | → | freeside_ joins (~mengwong@103.252.202.151) |
| 03:54:47 | × | freeside_ quits (~mengwong@103.252.202.151) (Ping timeout: 240 seconds) |
| 03:58:25 | × | pointlessslippe1 quits (~pointless@212.82.82.3) (Ping timeout: 268 seconds) |
| 04:02:28 | → | pointlessslippe1 joins (~pointless@212.82.82.3) |
| 04:18:11 | × | rekahsoft quits (~rekahsoft@bras-base-orllon1122w-grc-04-174-88-193-177.dsl.bell.ca) (Ping timeout: 264 seconds) |
| 04:35:36 | × | califax quits (~califax@user/califx) (Remote host closed the connection) |
| 04:35:49 | → | califax_ joins (~califax@user/califx) |
| 04:37:06 | califax_ | is now known as califax |
| 04:37:57 | × | bitdex quits (~bitdex@gateway/tor-sasl/bitdex) (Remote host closed the connection) |
| 04:39:18 | → | bitdex joins (~bitdex@gateway/tor-sasl/bitdex) |
| 04:41:59 | × | evincar quits (~evincar@user/evincar) (Ping timeout: 240 seconds) |
| 04:44:31 | → | freeside_ joins (~mengwong@103.252.202.151) |
| 04:49:51 | × | cheater quits (~Username@user/cheater) (Read error: Connection reset by peer) |
| 04:50:01 | × | freeside_ quits (~mengwong@103.252.202.151) (Ping timeout: 240 seconds) |
| 04:52:06 | → | cheater joins (~Username@user/cheater) |
| 04:53:25 | → | coot joins (~coot@89-69-206-216.dynamic.chello.pl) |
| 04:56:07 | → | coot_ joins (~coot@89-69-206-216.dynamic.chello.pl) |
| 04:56:22 | → | evincar joins (~evincar@user/evincar) |
| 04:58:14 | × | coot quits (~coot@89-69-206-216.dynamic.chello.pl) (Ping timeout: 268 seconds) |
| 04:58:14 | coot_ | is now known as coot |
| 05:04:27 | × | bitdex quits (~bitdex@gateway/tor-sasl/bitdex) (Remote host closed the connection) |
| 05:05:22 | → | bitdex joins (~bitdex@gateway/tor-sasl/bitdex) |
| 05:15:46 | → | freeside_ joins (~mengwong@103.252.202.151) |
| 05:15:51 | × | stallmanator quits (~stallmana@user/stallmanator) (Quit: Leaving...) |
| 05:19:59 | × | freeside_ quits (~mengwong@103.252.202.151) (Ping timeout: 240 seconds) |
| 05:24:22 | → | stallmanator joins (~stallmana@user/stallmanator) |
| 05:24:50 | → | cheater_ joins (~Username@user/cheater) |
| 05:26:45 | × | cheater quits (~Username@user/cheater) (Ping timeout: 240 seconds) |
| 05:26:55 | cheater_ | is now known as cheater |
| 05:32:34 | → | freeside_ joins (~mengwong@103.252.202.151) |
| 05:37:18 | → | trev joins (~trev@user/trev) |
| 05:37:21 | × | freeside_ quits (~mengwong@103.252.202.151) (Ping timeout: 256 seconds) |
| 05:37:39 | × | gentauro quits (~gentauro@user/gentauro) (Quit: leaving) |
| 05:37:41 | → | freeside_ joins (~mengwong@103.252.202.151) |
| 05:42:27 | × | freeside_ quits (~mengwong@103.252.202.151) (Ping timeout: 256 seconds) |
| 05:46:10 | → | nate2 joins (~nate@98.45.169.16) |
| 05:46:24 | → | gentauro joins (~gentauro@user/gentauro) |
| 05:50:41 | × | nate2 quits (~nate@98.45.169.16) (Ping timeout: 246 seconds) |
| 05:54:05 | × | vandita quits (~vandit@85-238-93-13.pool.digikabel.hu) (Ping timeout: 240 seconds) |
| 05:56:01 | → | vandita joins (~vandit@84-236-122-3.pool.digikabel.hu) |
| 05:58:52 | → | wiosna joins (~karangura@c-73-93-95-154.hsd1.ca.comcast.net) |
| 06:15:29 | → | lottaquestions_ joins (~nick@2607:fa49:503f:6d00:e12c:3339:1e68:4fd9) |
| 06:17:08 | × | lottaquestions quits (~nick@2607:fa49:503f:6d00:a90f:1597:2753:5a45) (Ping timeout: 240 seconds) |
| 06:33:07 | → | freeside_ joins (~mengwong@103.252.202.151) |
| 06:33:20 | → | acidjnk joins (~acidjnk@p200300d6e7072f04289ebaf0057e3058.dip0.t-ipconnect.de) |
| 06:37:25 | × | evincar quits (~evincar@user/evincar) (Ping timeout: 240 seconds) |
| 06:37:35 | × | freeside_ quits (~mengwong@103.252.202.151) (Ping timeout: 240 seconds) |
| 06:44:08 | × | azimut quits (~azimut@gateway/tor-sasl/azimut) (Ping timeout: 240 seconds) |
| 06:50:05 | → | falafel joins (~falafel@2603-8000-d700-115c-216b-37a8-40bc-a416.res6.spectrum.com) |
| 06:51:23 | → | evincar joins (~evincar@user/evincar) |
| 06:53:10 | → | takuan joins (~takuan@178-116-218-225.access.telenet.be) |
| 07:09:47 | × | albet70 quits (~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection) |
| 07:10:42 | × | falafel quits (~falafel@2603-8000-d700-115c-216b-37a8-40bc-a416.res6.spectrum.com) (Remote host closed the connection) |
| 07:12:19 | → | gmg joins (~user@user/gehmehgeh) |
| 07:15:53 | → | albet70 joins (~xxx@2400:8902::f03c:92ff:fe60:98d8) |
| 07:17:53 | × | czy quits (~user@host-140-24.ilcub310.champaign.il.us.clients.pavlovmedia.net) (Remote host closed the connection) |
| 07:20:20 | → | freeside_ joins (~mengwong@103.252.202.151) |
| 07:23:48 | <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/29d42836f5aebd1ff59d2fb722f1dbac302c428a>) |
| 07:26:39 | <mauke> | technically "beforehand" is not required |
| 07:26:41 | <[Leary]> | jade[m]: We have the Functor, Applicative, Monad hierarchy precisely because Applicative follows from Monad and Functor from Applicative. |
| 07:27:28 | × | freeside_ quits (~mengwong@103.252.202.151) (Ping timeout: 268 seconds) |
| 07:27:28 | <jade[m]> | mhm I understand, but wouldn't it be nicer to be able to write _just_ `pure` and `>>=` and the rest is derived? |
| 07:27:31 | <mauke> | you can declare the Monad instance first and then just say: instance Functor T where { fmap = liftM }; instance Applicative T where { (<*>) = ap } |
| 07:27:52 | <jade[m]> | ok yeah that makes sense |
| 07:27:54 | <jade[m]> | thank you |
| 07:28:13 | <[Leary]> | You can probably also do with with something like `deriving via WrappedMonad ...`. |
| 07:30:11 | × | wiosna quits (~karangura@c-73-93-95-154.hsd1.ca.comcast.net) (Ping timeout: 264 seconds) |
| 07:35:44 | → | gnalzo joins (~gnalzo@2a01:e0a:498:fd50:fcc6:bb5d:489a:ce8c) |
| 07:39:59 | → | wiosna joins (~karangura@c-73-93-95-154.hsd1.ca.comcast.net) |
| 07:44:08 | × | wiosna quits (~karangura@c-73-93-95-154.hsd1.ca.comcast.net) (Ping timeout: 240 seconds) |
| 07:50:29 | × | tubogram447 quits (~tubogram@user/tubogram) (Quit: Ping timeout (120 seconds)) |
| 07:50:46 | → | tubogram447 joins (~tubogram@user/tubogram) |
| 07:52:01 | × | evincar quits (~evincar@user/evincar) (Ping timeout: 240 seconds) |
| 07:58:41 | → | wiosna joins (~karangura@c-73-93-95-154.hsd1.ca.comcast.net) |
| 07:59:18 | × | gmg quits (~user@user/gehmehgeh) (Remote host closed the connection) |
| 08:00:01 | → | gmg joins (~user@user/gehmehgeh) |
| 08:07:01 | × | vandita quits (~vandit@84-236-122-3.pool.digikabel.hu) (Ping timeout: 240 seconds) |
| 08:08:43 | → | vandita joins (~vandit@178-164-188-13.pool.digikabel.hu) |
| 08:08:48 | × | tabemann quits (~tabemann@172-13-49-137.lightspeed.milwwi.sbcglobal.net) (Ping timeout: 250 seconds) |
| 08:08:48 | × | econo quits (uid147250@user/econo) (Quit: Connection closed for inactivity) |
| 08:11:18 | × | wiosna quits (~karangura@c-73-93-95-154.hsd1.ca.comcast.net) (Ping timeout: 265 seconds) |
| 08:23:42 | → | wiosna joins (~karangura@c-73-93-95-154.hsd1.ca.comcast.net) |
| 08:31:19 | × | wiosna quits (~karangura@c-73-93-95-154.hsd1.ca.comcast.net) (Ping timeout: 256 seconds) |
| 08:33:15 | → | Tuplanolla joins (~Tuplanoll@91-159-68-236.elisa-laajakaista.fi) |
| 08:40:21 | × | tzh quits (~tzh@c-24-21-73-154.hsd1.wa.comcast.net) (Quit: zzz) |
| 08:40:28 | <Inst> | what's the tradeoff between monomer and gi-gtk-declarative? |
| 08:40:41 | <Inst> | i'm assuming monomer lets you directly message sdl, so i guess it comes down to sdl vs gtk? |
| 08:43:40 | → | bontaq joins (~user@ool-45779b84.dyn.optonline.net) |
| 08:43:52 | → | Lord_of_Life_ joins (~Lord@user/lord-of-life/x-2819915) |
| 08:44:43 | → | wiosna joins (~karangura@c-73-93-95-154.hsd1.ca.comcast.net) |
| 08:44:45 | × | Lord_of_Life quits (~Lord@user/lord-of-life/x-2819915) (Ping timeout: 240 seconds) |
| 08:44:59 | <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. |
| 08:45:12 | Lord_of_Life_ | is now known as Lord_of_Life |
| 08:45:30 | <Inst> | I'm already using monomer, but acquaintances prefer gi-gtk-declarative |
| 08:45:46 | <Inst> | monomer doesn't compile on 9.6.1 due to issues with nanovg |
| 08:48:47 | × | wiosna quits (~karangura@c-73-93-95-154.hsd1.ca.comcast.net) (Ping timeout: 240 seconds) |
| 08:49:35 | → | mc47 joins (~mc47@xmonad/TheMC47) |
| 08:50:29 | → | caryhartline joins (~caryhartl@2600:1700:2d0:8d30:21dd:2a88:7fc5:2c9a) |
| 09:01:00 | → | wiosna joins (~karangura@c-73-93-95-154.hsd1.ca.comcast.net) |
| 09:05:55 | × | eggplantade quits (~Eggplanta@104-55-37-220.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection) |
| 09:05:55 | × | wiosna quits (~karangura@c-73-93-95-154.hsd1.ca.comcast.net) (Ping timeout: 265 seconds) |
| 09:12:06 | → | gurkenglas joins (~user@dynamic-046-114-176-178.46.114.pool.telefonica.de) |
| 09:14:20 | → | titibandit joins (~titibandi@user/titibandit) |
| 09:16:00 | × | hugo- quits (znc@verdigris.lysator.liu.se) (Ping timeout: 268 seconds) |
| 09:20:41 | × | acidjnk quits (~acidjnk@p200300d6e7072f04289ebaf0057e3058.dip0.t-ipconnect.de) (Ping timeout: 246 seconds) |
| 09:21:00 | × | caryhartline quits (~caryhartl@2600:1700:2d0:8d30:21dd:2a88:7fc5:2c9a) (Quit: caryhartline) |
| 09:25:48 | → | freeside_ joins (~mengwong@103.252.202.151) |
| 09:27:35 | → | hugo joins (znc@verdigris.lysator.liu.se) |
| 09:31:28 | × | freeside_ quits (~mengwong@103.252.202.151) (Ping timeout: 240 seconds) |
| 09:33:35 | × | xff0x quits (~xff0x@2405:6580:b080:900:7a1d:99dd:4861:77d8) (Quit: xff0x) |
| 09:36:34 | → | xff0x joins (~xff0x@2405:6580:b080:900:aeac:e4ca:6855:10e2) |
| 09:47:40 | → | nate2 joins (~nate@98.45.169.16) |
| 09:48:46 | × | pyook quits (~puke@user/puke) (Remote host closed the connection) |
| 09:49:11 | → | pyook joins (~puke@user/puke) |
| 09:52:32 | × | nate2 quits (~nate@98.45.169.16) (Ping timeout: 248 seconds) |
| 09:55:36 | → | wiosna joins (~karangura@c-73-93-95-154.hsd1.ca.comcast.net) |
| 09:56:22 | → | acidjnk joins (~acidjnk@p200300d6e7072f04289ebaf0057e3058.dip0.t-ipconnect.de) |
| 09:56:44 | → | freeside_ joins (~mengwong@103.252.202.151) |
| 09:57:30 | <fr33domlover> | What are the pros/cons of a class like `class Set (s :: Type -> Type) where` versus `class Set s where type Elem s` ? |
| 09:58:22 | <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?) |
| 09:59:48 | × | wiosna quits (~karangura@c-73-93-95-154.hsd1.ca.comcast.net) (Ping timeout: 240 seconds) |
| 10:01:08 | × | freeside_ quits (~mengwong@103.252.202.151) (Ping timeout: 240 seconds) |
| 10:05:35 | → | oo_miguel joins (~Thunderbi@77.252.47.78) |
| 10:06:10 | → | eggplantade joins (~Eggplanta@2600:1700:38c5:d800:200b:a013:81d0:d721) |
| 10:10:29 | × | eggplantade quits (~Eggplanta@2600:1700:38c5:d800:200b:a013:81d0:d721) (Ping timeout: 256 seconds) |
| 10:14:09 | <jackdk> | fr33domlover: I think you have rediscovered class MonoFunctor from package mono-traversable. But these days I use lenses instead |
| 10:18:24 | × | Sgeo quits (~Sgeo@user/sgeo) (Read error: Connection reset by peer) |
| 10:18:33 | <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? |
| 10:19:19 | <jackdk> | I would probably exploit parametricity unless I had a good reason not to. Makes it harder to write the wrong code. |
| 10:20:35 | <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 |
| 10:21:51 | <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 |
| 10:22:05 | <fr33domlover> | (Is this a waste of time? :P) |
| 10:23:47 | <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) |
| 10:27:28 | <jackdk> | I am struggling to visualise your design. Do you have a snippet that you can pastebin? |
| 10:34:57 | <fr33domlover> | jackdk: https://bin.nixnet.services/?86c84aa151f20723#56DGrCyKoT8u6jLx3oxDj9VNDYrTAkqnWfJWzapyWhfn |
| 10:35:18 | × | Vajb quits (~Vajb@2001:999:705:9eb4:3be1:37ee:6d1b:ae10) (Ping timeout: 265 seconds) |
| 10:36:08 | <fr33domlover> | I'm probably going to get rid of this "Face" type thing because Idk how to implement a Slab instance like this |
| 10:36:11 | → | Vajb joins (~Vajb@2001:999:489:9fc7:2a48:2fed:ac18:a255) |
| 10:36:19 | <fr33domlover> | But if anyone knows a way, I'd love to know ^_^ |
| 10:36:56 | <jackdk> | Is the set of types you need to abstract over finite? You could shove them into the indices of a GADT if so? |
| 10:39:25 | <jackdk> | The other tack you could consider is to use Typeable somehow |
| 10:39:43 | <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) |
| 10:41:10 | <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. |
| 10:41:36 | × | chexum quits (~quassel@gateway/tor-sasl/chexum) (Quit: No Ping reply in 180 seconds.) |
| 10:41:42 | <jackdk> | Er. bring a constraint like `a ~ Text` into scope telling you which type you had. Maybe useful? |
| 10:42:05 | <jackdk> | I don't know what the words "slab" and "engrave" mean, so I am still not understanding the problem you seek to solve |
| 10:43:09 | → | chexum joins (~quassel@gateway/tor-sasl/chexum) |
| 10:45:29 | <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` |
| 10:49:18 | <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? |
| 10:50:11 | <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) |
| 10:51:09 | <fr33domlover> | jackdk: Reasoning back is fine, what I can't do it pick the file reader function (a value) based on the reasoned type |
| 10:51:55 | <fr33domlover> | I'm guessing it's impossible without a typeclass, I just want someone more knowledgeable to confirm that :P |
| 10:53:06 | <jackdk> | https://github.com/brendanhay/amazonka/blob/3e66cc1b07f2818d0b4fc346310ecdb1c3c27599/lib/amazonka/src/Amazonka/Env/Hooks.hs#L470-L472 this sort of thing? if the types are the same, then pattern-matching `Refl` brings into scope a constraint saying so |
| 10:53:55 | × | melonai quits (~mel@rnrd.eu) (Ping timeout: 260 seconds) |
| 10:54:01 | × | vandita quits (~vandit@178-164-188-13.pool.digikabel.hu) (Ping timeout: 240 seconds) |
| 10:55:57 | → | vandita joins (~vandit@fibhost-66-106-67.fibernet.hu) |
| 11:01:20 | <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 ^_^ |
| 11:03:47 | × | albet70 quits (~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection) |
| 11:09:54 | → | albet70 joins (~xxx@2400:8902::f03c:92ff:fe60:98d8) |
| 11:41:57 | → | wiosna joins (~karangura@c-73-93-95-154.hsd1.ca.comcast.net) |
| 11:42:07 | → | freeside_ joins (~mengwong@103.252.202.151) |
| 11:44:16 | <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) |
| 11:44:27 | <ski> | fr33domlover ^ |
| 11:46:28 | × | freeside_ quits (~mengwong@103.252.202.151) (Ping timeout: 240 seconds) |
| 11:46:28 | × | wiosna quits (~karangura@c-73-93-95-154.hsd1.ca.comcast.net) (Ping timeout: 240 seconds) |
| 11:49:46 | <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 :: |
| 11:49:52 | <ski> | ByteString') into scope) |
| 11:50:49 | <ski> | .. i'm not sure what `s' in `Slab s' would be, in instance of `Slab' |
| 11:57:15 | <fr33domlover> | ski: How do I produce the GADT value though? So that I can match on its constructors (other than using `eqT`) |
| 11:57:15 | <fr33domlover> | the `s` in `Slab` can be something like `Int` or `data Person = Person String Int` etc. etc. |
| 11:58:08 | <fr33domlover> | Ah oops ignore the last message |
| 11:58:16 | × | chexum quits (~quassel@gateway/tor-sasl/chexum) (Remote host closed the connection) |
| 11:58:56 | <fr33domlover> | `s` would be something like `data File = File FilePath` that implements `retrieve` by reading from that file |
| 11:59:32 | → | chexum joins (~quassel@gateway/tor-sasl/chexum) |
| 12:03:17 | → | Lycurgus joins (~juan@user/Lycurgus) |
| 12:09:45 | × | Lycurgus quits (~juan@user/Lycurgus) (Quit: Exeunt: personae.ai-integration.biz) |
| 12:11:11 | × | titibandit quits (~titibandi@user/titibandit) (Ping timeout: 256 seconds) |
| 12:21:48 | × | albet70 quits (~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection) |
| 12:27:55 | → | albet70 joins (~xxx@2400:8902::f03c:92ff:fe60:98d8) |
| 12:33:17 | × | acidjnk quits (~acidjnk@p200300d6e7072f04289ebaf0057e3058.dip0.t-ipconnect.de) (Ping timeout: 256 seconds) |
| 12:34:45 | <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 |
| 12:35:29 | <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' |
| 12:36:09 | <ski> | perhaps you intended for `File' to be parameterized over the type of value stored at that `FilePath' |
| 12:36:21 | <ski> | ("phantom types", possibly) |
| 12:41:59 | × | bontaq quits (~user@ool-45779b84.dyn.optonline.net) (Ping timeout: 240 seconds) |
| 12:43:11 | <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. |
| 12:43:52 | <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) |
| 12:45:47 | <jade[m]> | yeah that makes sense |
| 12:46:21 | <dminuoso> | On the other hand, perhaps its a bad idea. Maybe we would have been better off with ap and return instead. |
| 12:46:48 | <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" |
| 12:47:09 | <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 |
| 12:47:43 | <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" |
| 12:48:08 | <jade[m]> | <mauke> "you can declare the Monad..." <- essentially this |
| 12:48:29 | <dminuoso> | It would be nice if would you could express a typeclass instance, whose selection is dependent on whether or not another instance exists. |
| 12:48:31 | <dminuoso> | But you cant |
| 12:48:46 | <jade[m]> | mhm |
| 12:49:59 | <dminuoso> | Say we assumed some `instance {-# OVERLAPPING #-} Monad f => Applicative f where (<*>) = ap; pure = return` |
| 12:50:16 | <dminuoso> | You could write this, and in most places this would work just fine. |
| 12:51:09 | <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 |
| 12:51:26 | → | jscript joins (~jscript@cpe-172-193-181-254.qld.foxtel.net.au) |
| 12:51:29 | <dminuoso> | (Because you can think of it as an instance for *all* types f, irrespective of whether we have Monad) |
| 12:51:46 | <dminuoso> | Even something like `data T a = T (a -> a)` |
| 12:51:49 | <jscript> | why do i get this? http://0x0.st/HNeb.txt |
| 12:52:05 | <jscript> | for cabal install haskell-language-server |
| 12:52:08 | <dminuoso> | jscript: mismatching ghc version |
| 12:52:28 | <jscript> | how do i install one for 8.4.4 |
| 12:52:53 | <dminuoso> | jscript: Not possible |
| 12:53:16 | <dminuoso> | HLS since published on hackage always demanded base >= 4.12 (which corresponds to GHC 8.6.1) |
| 12:53:36 | <jscript> | how do i obtain that version |
| 12:53:46 | <dminuoso> | Upgrade your GHC installation. |
| 12:57:18 | <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 |
| 12:57:21 | ski | . o O ( "Supertyping Suggestion for Haskell" by John Meacham in 2004 at <http://repetae.net/recent/out/supertyping.html> ) |
| 12:57:24 | → | freeside_ joins (~mengwong@103.252.202.151) |
| 12:57:27 | <ski> | jade[m] : no |
| 12:58:28 | <ski> | (and you mean `(->) r' (aka `(r ->)'), not `(-> r)'. the other one would be `(-> r)' (`Flip (->) r', basically)) |
| 12:59:05 | <jade[m]> | yes, typo |
| 12:59:17 | <jade[m]> | and yes again, is there a Flip type like that? |
| 12:59:29 | <jade[m]> | Or do I need to define it myself? - I suppose it would be trivial |
| 12:59:56 | <jscript> | hmm WARNING: You don't have a mk/build.mk file. |
| 13:00:06 | <ski> | @hoogle Flip |
| 13:00:07 | <lambdabot> | module Data.Bifunctor.Flip |
| 13:00:07 | <lambdabot> | Data.Bifunctor.Flip newtype Flip p a b |
| 13:00:07 | <lambdabot> | Data.Bifunctor.Flip Flip :: p b a -> Flip p a b |
| 13:00:31 | <jade[m]> | thank you very much |
| 13:01:53 | <ski> | @hackage bifunctors |
| 13:01:53 | <lambdabot> | https://hackage.haskell.org/package/bifunctors |
| 13:03:51 | <jade[m]> | <ski> ". o O ( "Supertyping Suggestion..." <- interesting |
| 13:09:11 | × | freeside_ quits (~mengwong@103.252.202.151) (Ping timeout: 264 seconds) |
| 13:15:53 | × | coot quits (~coot@89-69-206-216.dynamic.chello.pl) (Quit: coot) |
| 13:16:08 | → | coot joins (~coot@89-69-206-216.dynamic.chello.pl) |
| 13:17:31 | × | jscript quits (~jscript@cpe-172-193-181-254.qld.foxtel.net.au) (Ping timeout: 240 seconds) |
| 13:20:29 | → | nate2 joins (~nate@98.45.169.16) |
| 13:24:09 | → | jero98772 joins (~jero98772@2800:484:1d84:9000::2) |
| 13:25:37 | → | tabemann joins (~tabemann@172-13-49-137.lightspeed.milwwi.sbcglobal.net) |
| 13:25:45 | × | nate2 quits (~nate@98.45.169.16) (Ping timeout: 268 seconds) |
| 13:30:05 | × | vandita quits (~vandit@fibhost-66-106-67.fibernet.hu) (Ping timeout: 240 seconds) |
| 13:32:04 | → | vandita joins (~vandit@94-21-55-115.pool.digikabel.hu) |
| 13:41:43 | → | wiosna joins (~karangura@c-73-93-95-154.hsd1.ca.comcast.net) |
| 13:45:59 | × | wiosna quits (~karangura@c-73-93-95-154.hsd1.ca.comcast.net) (Ping timeout: 246 seconds) |
| 14:08:17 | × | phma quits (phma@2001:5b0:210d:9dd8:9595:9262:e864:847) (Read error: Connection reset by peer) |
| 14:08:45 | → | phma joins (~phma@host-67-44-208-102.hnremote.net) |
| 14:08:56 | → | freeside_ joins (~mengwong@103.252.202.151) |
| 14:09:46 | → | eggplantade joins (~Eggplanta@2600:1700:38c5:d800:200b:a013:81d0:d721) |
| 14:12:45 | → | azimut joins (~azimut@gateway/tor-sasl/azimut) |
| 14:13:19 | × | freeside_ quits (~mengwong@103.252.202.151) (Ping timeout: 265 seconds) |
| 14:13:48 | × | eggplantade quits (~Eggplanta@2600:1700:38c5:d800:200b:a013:81d0:d721) (Ping timeout: 240 seconds) |
| 14:35:58 | → | freeside_ joins (~mengwong@103.252.202.151) |
| 14:40:47 | → | [itchyjunk] joins (~itchyjunk@user/itchyjunk/x-7353470) |
| 14:45:01 | × | freeside_ quits (~mengwong@103.252.202.151) (Ping timeout: 240 seconds) |
| 14:51:41 | → | tzh joins (~tzh@c-24-21-73-154.hsd1.or.comcast.net) |
| 15:00:59 | → | wroathe joins (~wroathe@207-153-38-140.fttp.usinternet.com) |
| 15:00:59 | × | wroathe quits (~wroathe@207-153-38-140.fttp.usinternet.com) (Changing host) |
| 15:00:59 | → | wroathe joins (~wroathe@user/wroathe) |
| 15:03:21 | → | freeside_ joins (~mengwong@103.252.202.151) |
| 15:03:43 | → | Pickchea joins (~private@user/pickchea) |
| 15:07:56 | × | freeside_ quits (~mengwong@103.252.202.151) (Ping timeout: 265 seconds) |
| 15:13:05 | × | wroathe quits (~wroathe@user/wroathe) (Ping timeout: 256 seconds) |
| 15:30:42 | × | pavonia quits (~user@user/siracusa) (Quit: Bye!) |
| 15:33:21 | → | titibandit joins (~titibandi@user/titibandit) |
| 15:40:45 | → | wroathe joins (~wroathe@207-153-38-140.fttp.usinternet.com) |
| 15:40:45 | × | wroathe quits (~wroathe@207-153-38-140.fttp.usinternet.com) (Changing host) |
| 15:40:45 | → | wroathe joins (~wroathe@user/wroathe) |
| 15:43:14 | → | wiosna joins (~karangura@c-73-93-95-154.hsd1.ca.comcast.net) |
| 15:52:46 | → | evincar joins (~evincar@user/evincar) |
| 15:53:25 | × | wiosna quits (~karangura@c-73-93-95-154.hsd1.ca.comcast.net) (Ping timeout: 240 seconds) |
| 16:01:31 | → | freeside_ joins (~mengwong@103.252.202.151) |
| 16:05:48 | × | freeside_ quits (~mengwong@103.252.202.151) (Ping timeout: 240 seconds) |
| 16:09:07 | → | fsestini joins (~fsestini@5.151.90.160) |
| 16:17:28 | × | rf quits (~rf@2605:59c8:179c:f610:cee0:ff93:627a:5295) (Ping timeout: 240 seconds) |
| 16:24:32 | <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 |
| 16:24:32 | <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 |
| 16:24:33 | <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? |
| 16:27:49 | → | mixfix41 joins (~sdeny9ee@user/mixfix41) |
| 16:31:27 | → | machinedgod joins (~machinedg@d198-53-218-113.abhsia.telus.net) |
| 16:32:05 | × | wroathe quits (~wroathe@user/wroathe) (Ping timeout: 240 seconds) |
| 16:33:26 | → | freeside_ joins (~mengwong@103.252.202.151) |
| 16:35:35 | × | vandita quits (~vandit@94-21-55-115.pool.digikabel.hu) (Ping timeout: 240 seconds) |
| 16:37:38 | → | vandita joins (~vandit@178-164-206-39.pool.digikabel.hu) |
| 16:38:09 | × | freeside_ quits (~mengwong@103.252.202.151) (Ping timeout: 268 seconds) |
| 16:53:31 | × | titibandit quits (~titibandi@user/titibandit) (Ping timeout: 240 seconds) |
| 16:54:51 | → | freeside_ joins (~mengwong@103.252.202.151) |
| 16:59:35 | × | freeside_ quits (~mengwong@103.252.202.151) (Ping timeout: 264 seconds) |
| 17:00:24 | → | freeside_ joins (~mengwong@103.252.202.151) |
| 17:01:12 | → | merijn joins (~merijn@86-86-29-250.fixed.kpn.net) |
| 17:03:25 | <fsestini> | uhm, I think this partially answers my question https://github.com/haskell-servant/servant/pull/552 |
| 17:04:12 | → | wroathe joins (~wroathe@c-24-118-213-219.hsd1.mn.comcast.net) |
| 17:04:12 | × | wroathe quits (~wroathe@c-24-118-213-219.hsd1.mn.comcast.net) (Changing host) |
| 17:04:12 | → | wroathe joins (~wroathe@user/wroathe) |
| 17:04:46 | → | Guest20 joins (~Guest29@94.29.126.170) |
| 17:04:47 | × | freeside_ quits (~mengwong@103.252.202.151) (Ping timeout: 240 seconds) |
| 17:04:58 | × | Guest20 quits (~Guest29@94.29.126.170) (Client Quit) |
| 17:05:31 | → | Lycurgus joins (~juan@user/Lycurgus) |
| 17:06:47 | × | merijn quits (~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 264 seconds) |
| 17:06:59 | × | machinedgod quits (~machinedg@d198-53-218-113.abhsia.telus.net) (Ping timeout: 256 seconds) |
| 17:11:30 | × | coot quits (~coot@89-69-206-216.dynamic.chello.pl) (Quit: coot) |
| 17:12:36 | → | eggplantade joins (~Eggplanta@2600:1700:38c5:d800:200b:a013:81d0:d721) |
| 17:16:58 | × | eggplantade quits (~Eggplanta@2600:1700:38c5:d800:200b:a013:81d0:d721) (Ping timeout: 250 seconds) |
| 17:20:03 | → | caryhartline joins (~caryhartl@2600:1700:2d0:8d30:41ce:1f50:8fd7:71a6) |
| 17:21:08 | × | caryhartline quits (~caryhartl@2600:1700:2d0:8d30:41ce:1f50:8fd7:71a6) (Client Quit) |
| 17:21:59 | → | nate2 joins (~nate@98.45.169.16) |
| 17:25:35 | → | freeside_ joins (~mengwong@103.252.202.151) |
| 17:26:49 | × | nate2 quits (~nate@98.45.169.16) (Ping timeout: 256 seconds) |
| 17:26:55 | × | Pickchea quits (~private@user/pickchea) (Quit: Leaving) |
| 17:27:55 | → | tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
| 17:30:13 | × | freeside_ quits (~mengwong@103.252.202.151) (Ping timeout: 256 seconds) |
| 17:31:33 | → | caryhartline joins (~caryhartl@2600:1700:2d0:8d30:10f5:39f4:9f0d:b8a0) |
| 17:31:43 | × | tessier quits (~treed@ec2-184-72-149-67.compute-1.amazonaws.com) (Remote host closed the connection) |
| 17:31:48 | × | cheater quits (~Username@user/cheater) (Ping timeout: 240 seconds) |
| 17:37:18 | → | cheater joins (~Username@user/cheater) |
| 17:37:39 | × | Lycurgus quits (~juan@user/Lycurgus) (Quit: Exeunt: personae.ai-integration.biz) |
| 17:40:35 | × | phma quits (~phma@host-67-44-208-102.hnremote.net) (Read error: Connection reset by peer) |
| 17:43:16 | → | acidjnk joins (~acidjnk@p200300d6e7072f04289ebaf0057e3058.dip0.t-ipconnect.de) |
| 17:50:10 | → | wiosna joins (~karangura@c-73-93-95-154.hsd1.ca.comcast.net) |
| 17:50:49 | <fr33domlover> | Thanks ski! I wrote a version with a regular ADT, will try to switch to a GADT to see its contribution |
| 17:54:41 | × | wiosna quits (~karangura@c-73-93-95-154.hsd1.ca.comcast.net) (Ping timeout: 265 seconds) |
| 17:55:11 | → | strugglingCrab joins (~strugglin@2a02:a03f:acfa:b800:4a86:4c47:2eb6:459c) |
| 17:55:32 | <strugglingCrab> | not sure what im missing but why does this function produce an infinite list |
| 17:55:37 | <strugglingCrab> | chunks :: Int -> [a] -> [[a]] |
| 17:55:38 | <strugglingCrab> | chunks _ [] = [] |
| 17:55:38 | <strugglingCrab> | chunks n xs = let (x, xs') = splitAt n xs in x : chunks n xs' |
| 17:57:29 | <ncf> | which call produces an infinite list? |
| 17:57:46 | <strugglingCrab> | chunks 3 [1..9] |
| 17:58:00 | <ncf> | i get [[1,2,3],[4,5,6],[7,8,9]] |
| 17:58:06 | <strugglingCrab> | hmm |
| 17:58:15 | <ncf> | using splitAt from base |
| 17:58:20 | <jade[m]> | do you call it with an infinite list? |
| 17:58:21 | <strugglingCrab> | yea |
| 17:58:24 | <strugglingCrab> | no |
| 17:58:53 | <ncf> | how are you concluding that it produces an infinite list? |
| 17:59:08 | <probie> | strugglingCrab: what do you get if you call `take 10 $ chunks 3 [1..10]`? |
| 17:59:36 | <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 |
| 17:59:49 | <ncf> | do :i splitAt |
| 17:59:59 | <ncf> | oh, i see what's wrong |
| 18:00:11 | <ncf> | you need to either put both cases on the same line with a semicolon or use :{ :} |
| 18:00:28 | <strugglingCrab> | probie [[1,2,3],[4,5,6],[7,8,9],[10],[],[],[],[],[],[]] |
| 18:01:06 | <ncf> | otherwise each line redefines the function |
| 18:01:13 | <ncf> | so you don't have a case for [] |
| 18:01:18 | <strugglingCrab> | ahhh |
| 18:02:13 | <jade[m]> | yeah that's a quirk of ghci |
| 18:02:26 | <jade[m]> | but it makes sense why it does that |
| 18:02:26 | <strugglingCrab> | i see, i got it to work now, thanks :] |
| 18:05:35 | <monochrom> | This is why coding up a whole project at the REPL doesn't scale. Use a file. |
| 18:06:18 | → | u0_a202 joins (~u0_a202@47.60.32.137) |
| 18:06:25 | u0_a202 | is now known as dom0 |
| 18:06:58 | <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 |
| 18:09:55 | → | phma joins (~phma@host-67-44-208-35.hnremote.net) |
| 18:10:19 | <fr33domlover> | I often use `:load xyz.hs` and then `:edit` to change my code and instantly get a REPL to play with it |
| 18:10:32 | <fr33domlover> | So, it's both a file and a repl :P |
| 18:10:49 | → | titibandit joins (~titibandi@user/titibandit) |
| 18:10:52 | <jade[m]> | the repl loads the file |
| 18:11:00 | <monochrom> | :!ed xyz.hs so the editor looks like a REPL too! |
| 18:11:06 | <jade[m]> | you shouldn't write the function in the repl, just test it |
| 18:11:44 | ski | 's set that to use `emacsclient -nw' |
| 18:12:16 | → | wiosna joins (~karangura@c-73-93-95-154.hsd1.ca.comcast.net) |
| 18:12:22 | <strugglingCrab> | i normally just test but i had other type errors in the file that i didnt want to fix for the time being |
| 18:12:47 | <monochrom> | Ah, tell ghci to --fdefer-type-errors |
| 18:12:59 | <monochrom> | err, just one dash, -fdefer-type-errors |
| 18:13:19 | <strugglingCrab> | ah, wasn't aware about this that seems handy |
| 18:13:29 | <monochrom> | It is actually what I tell me ghci, especially when in emacs haskell mode |
| 18:13:30 | × | dom0 quits (~u0_a202@47.60.32.137) (Quit: WeeChat 3.8) |
| 18:14:15 | <monochrom> | Also, use "undefined" for stubs/TODOs generously. |
| 18:16:05 | <strugglingCrab> | what is the haskell/cabal equivalent of cargo check |
| 18:16:19 | → | bontaq joins (~user@ool-45779b84.dyn.optonline.net) |
| 18:16:23 | <strugglingCrab> | ie just outputting warnings without building |
| 18:16:31 | × | wiosna quits (~karangura@c-73-93-95-154.hsd1.ca.comcast.net) (Ping timeout: 240 seconds) |
| 18:16:38 | → | coot joins (~coot@89-69-206-216.dynamic.chello.pl) |
| 18:16:41 | <monochrom> | We don't have that. |
| 18:16:49 | <strugglingCrab> | because hlint doesn't lint for some things for which i thought it would (unused imports for example) |
| 18:16:54 | <strugglingCrab> | ah okey |
| 18:17:25 | <geekosaur> | ghc -Wall -fno-code |
| 18:17:28 | <monochrom> | Or maybe we do, ghc -fno-code, cabal build --ghc-option=-fno-code or something |
| 18:18:22 | <monochrom> | But REPL's :load is almost as fast as -fno-code already |
| 18:18:43 | geekosaur | mentions ghcid |
| 18:19:42 | <strugglingCrab> | thanks, will use -fno-code then |
| 18:20:13 | <strugglingCrab> | another question but the context is a bit long so i put it in a pastebin (https://pastebin.com/uCLh4nn9) |
| 18:20:45 | <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 |
| 18:21:10 | <strugglingCrab> | so i couldn't even pattern match on it if i wanted to from how i understand it |
| 18:21:45 | <strugglingCrab> | also, shouldn't this pattern catch all of those mentioned patterns anyways |
| 18:22:54 | <geekosaur> | ghc can't understand the intent of your code to know those are complete |
| 18:23:01 | <monochrom> | The compiler uses a dumb and conservative algorithm for this. It has false alarms, yes. |
| 18:23:24 | <geekosaur> | s/understand/know/ |
| 18:23:31 | <monochrom> | But if your last guard says "otherwise = 1" the algorithm is happy. |
| 18:24:01 | <monochrom> | Although, if it's tic-tac-toe, what if the board is not full and no one has won yet? |
| 18:24:18 | → | themc47 joins (~mc47@xmonad/TheMC47) |
| 18:24:50 | × | mc47 quits (~mc47@xmonad/TheMC47) (Ping timeout: 268 seconds) |
| 18:25:20 | <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 |
| 18:26:13 | <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 |
| 18:26:38 | <monochrom> | To be sure, I haven't followed that development, so I don't know how good it is today. |
| 18:27:07 | <monochrom> | Right, so if you do have a precondition, the compiler doesn't know. |
| 18:27:23 | <strugglingCrab> | yes, but i dont see how that relates to the error that is displayed |
| 18:27:36 | <monochrom> | Or rather, refuses to know. GHC is still not a whole-program-analysis compiler. |
| 18:27:39 | <strugglingCrab> | the pattern im matching on is just "board" |
| 18:27:49 | <geekosaur> | the pattern includes guards |
| 18:27:57 | <monochrom> | Ah it just reuses the wording "pattern" for guards. |
| 18:28:14 | <geekosaur> | ghc will try to analyze your guards as part of it but isn't very good at it |
| 18:29:57 | <strugglingCrab> | also, is there a way to suppress cabal telling me the details of the order my program is compiled in |
| 18:30:40 | <monochrom> | Some of that comes from GHC itself, too. |
| 18:30:49 | <monochrom> | I don't know either of them. |
| 18:31:19 | <monochrom> | or rather, how to suppress either |
| 18:31:50 | <geekosaur> | -v0 ? |
| 18:32:13 | <strugglingCrab> | ah yes that works, thanks |
| 18:33:15 | → | eggplantade joins (~Eggplanta@2600:1700:38c5:d800:200b:a013:81d0:d721) |
| 18:34:57 | × | fsestini quits (~fsestini@5.151.90.160) (Quit: Client closed) |
| 18:36:12 | → | freeside_ joins (~mengwong@103.252.202.151) |
| 18:37:59 | × | evincar quits (~evincar@user/evincar) (Ping timeout: 240 seconds) |
| 18:39:49 | → | michalz joins (~michalz@185.246.207.200) |
| 18:41:25 | × | freeside_ quits (~mengwong@103.252.202.151) (Ping timeout: 240 seconds) |
| 18:45:40 | → | mncheck joins (~mncheck@193.224.205.254) |
| 18:53:24 | × | strugglingCrab quits (~strugglin@2a02:a03f:acfa:b800:4a86:4c47:2eb6:459c) (Quit: Client closed) |
| 18:57:35 | × | vandita quits (~vandit@178-164-206-39.pool.digikabel.hu) (Ping timeout: 240 seconds) |
| 18:59:28 | → | vandita joins (~vandit@91-83-11-250.pool.digikabel.hu) |
| 19:06:40 | → | waleee joins (~waleee@2001:9b0:21c:4000:5bf9:6515:c030:57b7) |
| 19:14:16 | → | Sgeo joins (~Sgeo@user/sgeo) |
| 19:16:31 | × | titibandit quits (~titibandi@user/titibandit) (Ping timeout: 240 seconds) |
| 19:16:40 | → | nattiestnate joins (~nate@202.138.250.9) |
| 19:17:38 | × | nattiestnate quits (~nate@202.138.250.9) (Client Quit) |
| 19:17:53 | → | nattiestnate joins (~nate@202.138.250.9) |
| 19:19:11 | × | wroathe quits (~wroathe@user/wroathe) (Ping timeout: 240 seconds) |
| 19:26:55 | × | caryhartline quits (~caryhartl@2600:1700:2d0:8d30:10f5:39f4:9f0d:b8a0) (Quit: caryhartline) |
| 19:35:35 | × | ddellacosta quits (~ddellacos@146.70.165.10) (Ping timeout: 240 seconds) |
| 19:37:39 | → | ddellacosta joins (~ddellacos@143.244.47.71) |
| 19:40:04 | → | wiosna joins (~karangura@c-73-93-95-154.hsd1.ca.comcast.net) |
| 19:42:16 | → | caryhartline joins (~caryhartl@107.140.218.181) |
| 19:45:37 | × | wiosna quits (~karangura@c-73-93-95-154.hsd1.ca.comcast.net) (Ping timeout: 268 seconds) |
| 19:45:39 | → | wroathe joins (~wroathe@207-153-38-140.fttp.usinternet.com) |
| 19:45:39 | × | wroathe quits (~wroathe@207-153-38-140.fttp.usinternet.com) (Changing host) |
| 19:45:39 | → | wroathe joins (~wroathe@user/wroathe) |
| 19:48:44 | → | freeside_ joins (~mengwong@103.252.202.151) |
| 19:49:09 | × | coot quits (~coot@89-69-206-216.dynamic.chello.pl) (Quit: coot) |
| 19:53:11 | × | freeside_ quits (~mengwong@103.252.202.151) (Ping timeout: 240 seconds) |
| 19:56:50 | × | cheater quits (~Username@user/cheater) (Read error: Connection reset by peer) |
| 19:57:10 | → | cheater joins (~Username@user/cheater) |
| 19:58:04 | → | titibandit joins (~titibandi@user/titibandit) |
| 20:02:00 | × | caryhartline quits (~caryhartl@107.140.218.181) (Quit: caryhartline) |
| 20:03:47 | × | nek0 quits (~nek0@2a01:4f8:222:2b41::12) (Quit: The Lounge - https://thelounge.chat) |
| 20:05:08 | → | wiosna joins (~karangura@c-73-93-95-154.hsd1.ca.comcast.net) |
| 20:08:26 | × | _ht quits (~Thunderbi@28-52-174-82.ftth.glasoperator.nl) (Remote host closed the connection) |
| 20:09:23 | × | gnalzo quits (~gnalzo@2a01:e0a:498:fd50:fcc6:bb5d:489a:ce8c) (Quit: WeeChat 3.8) |
| 20:12:23 | × | wroathe quits (~wroathe@user/wroathe) (Ping timeout: 240 seconds) |
| 20:16:45 | → | nek0 joins (~nek0@2a01:4f8:222:2b41::12) |
| 20:17:21 | → | wroathe joins (~wroathe@207-153-38-140.fttp.usinternet.com) |
| 20:17:21 | × | wroathe quits (~wroathe@207-153-38-140.fttp.usinternet.com) (Changing host) |
| 20:17:21 | → | wroathe joins (~wroathe@user/wroathe) |
| 20:18:18 | → | freeside_ joins (~mengwong@103.252.202.151) |
| 20:18:48 | → | evincar joins (~evincar@user/evincar) |
| 20:20:46 | × | wiosna quits (~karangura@c-73-93-95-154.hsd1.ca.comcast.net) (Ping timeout: 268 seconds) |
| 20:23:03 | × | freeside_ quits (~mengwong@103.252.202.151) (Ping timeout: 256 seconds) |
| 20:23:41 | → | Pickchea joins (~private@user/pickchea) |
| 20:24:18 | → | caryhartline joins (~caryhartl@107.140.218.181) |
| 20:26:29 | × | urdh quits (~urdh@user/urdh) (Quit: Boom!) |
| 20:29:49 | → | urdh joins (~urdh@83-233-165-22.cust.bredband2.com) |
| 20:29:49 | × | urdh quits (~urdh@83-233-165-22.cust.bredband2.com) (Changing host) |
| 20:29:49 | → | urdh joins (~urdh@user/urdh) |
| 20:30:45 | × | takuan quits (~takuan@178-116-218-225.access.telenet.be) (Ping timeout: 240 seconds) |
| 20:31:17 | × | mixfix41 quits (~sdeny9ee@user/mixfix41) (Ping timeout: 265 seconds) |
| 20:31:42 | → | takuan joins (~takuan@178-116-218-225.access.telenet.be) |
| 20:31:50 | → | freeside_ joins (~mengwong@103.252.202.151) |
| 20:32:45 | → | wiosna joins (~karangura@c-73-93-95-154.hsd1.ca.comcast.net) |
| 20:32:46 | × | titibandit quits (~titibandi@user/titibandit) (Remote host closed the connection) |
| 20:32:48 | × | urdh quits (~urdh@user/urdh) (Client Quit) |
| 20:34:01 | ← | janus parts (janus@anubis.0x90.dk) () |
| 20:34:11 | → | urdh joins (~urdh@user/urdh) |
| 20:34:55 | × | gmg quits (~user@user/gehmehgeh) (Quit: Leaving) |
| 20:36:47 | × | wiosna quits (~karangura@c-73-93-95-154.hsd1.ca.comcast.net) (Ping timeout: 240 seconds) |
| 20:38:47 | × | freeside_ quits (~mengwong@103.252.202.151) (Ping timeout: 240 seconds) |
| 20:41:52 | → | zeenk joins (~zeenk@2a02:2f04:a105:f00::7fe) |
| 20:42:35 | <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 |
| 20:42:47 | → | leat joins (~leat@46.70.67.13) |
| 20:43:49 | × | Gremlin8483 quits (~Gremlin84@73.243.250.212) (Ping timeout: 265 seconds) |
| 20:46:51 | <hellwolf[m]> | without using template haskell, how can I achieve something like `foo = return __FUNCTION__NAME__ <> "is my name"` ? |
| 20:47:10 | <geekosaur> | without using TH, you can't |
| 20:47:36 | → | freeside_ joins (~mengwong@103.252.202.151) |
| 20:47:57 | <jade[m]> | why do you want to do that |
| 20:48:21 | <geekosaur> | debugging, presumably |
| 20:48:30 | <jade[m]> | ah |
| 20:48:30 | <monochrom> | Probably because there are hundreds of functions needing that. Which in turn probably because "better error messages". :) |
| 20:48:56 | <geekosaur> | `HasCallStack` might be of some interest, but it's somewhat magical and can require you to retrofit that constraint everywhere |
| 20:49:05 | <monochrom> | Ironically if you just use error, you need to nothing and you even get line numbers! |
| 20:49:42 | × | caryhartline quits (~caryhartl@107.140.218.181) (Quit: caryhartline) |
| 20:50:30 | <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"... |
| 20:50:55 | <monochrom> | or perhaps s/failure message/name of test case/ |
| 20:51:56 | <monochrom> | But I'm too lazy. It's rabbit holes all the way down... |
| 20:52:28 | × | wroathe quits (~wroathe@user/wroathe) (Ping timeout: 240 seconds) |
| 20:52:44 | <monochrom> | You don't need HasCallStack until you want to see a more complete call chain. |
| 20:53:41 | <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) |
| 20:54:43 | <monochrom> | OK yeah error has HasCallStack. I mean you don't need to add your own additional "HasCallStack=>"s |
| 20:55:23 | × | freeside_ quits (~mengwong@103.252.202.151) (Ping timeout: 264 seconds) |
| 20:57:06 | <mauke> | > getCallStack callStack |
| 20:57:08 | <lambdabot> | error: |
| 20:57:08 | <lambdabot> | Variable not in scope: getCallStack :: t0 -> terror: Variable not in sco... |
| 20:57:23 | <mauke> | t0 -> terror, indeed |
| 20:57:32 | <monochrom> | haha |
| 21:00:56 | <sm> | call stacks in haskell.. so confusing! |
| 21:02:30 | → | merijn joins (~merijn@86-86-29-250.fixed.kpn.net) |
| 21:05:09 | → | freeside_ joins (~mengwong@103.252.202.151) |
| 21:06:45 | × | merijn quits (~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 240 seconds) |
| 21:08:15 | × | takuan quits (~takuan@178-116-218-225.access.telenet.be) (Ping timeout: 268 seconds) |
| 21:08:35 | × | leat quits (~leat@46.70.67.13) (Quit: WeeChat 3.8) |
| 21:09:53 | → | takuan joins (~takuan@178-116-218-225.access.telenet.be) |
| 21:09:57 | × | freeside_ quits (~mengwong@103.252.202.151) (Ping timeout: 265 seconds) |
| 21:10:24 | → | Gremlin8483 joins (~Gremlin84@c-73-243-250-212.hsd1.co.comcast.net) |
| 21:10:56 | × | takuan quits (~takuan@178-116-218-225.access.telenet.be) (Read error: Connection reset by peer) |
| 21:11:41 | → | takuan joins (~takuan@178-116-218-225.access.telenet.be) |
| 21:19:20 | <probie> | `foo :: HasCallStack => String; foo = (fst $ head $ getCallStack callStack) <> " is my name"` |
| 21:19:59 | <geekosaur> | with the appropriate import |
| 21:21:23 | <geekosaur> | https://downloads.haskell.org/ghc/9.2.5/docs/html/libraries/base-4.16.4.0/GHC-Stack.html |
| 21:23:29 | → | nate2 joins (~nate@98.45.169.16) |
| 21:27:07 | × | zmt00 quits (~zmt00@user/zmt00) (Quit: Leaving) |
| 21:28:36 | × | nate2 quits (~nate@98.45.169.16) (Ping timeout: 268 seconds) |
| 21:29:21 | → | zmt00 joins (~zmt00@user/zmt00) |
| 21:33:46 | <hololeap> | I'm caching a data structure and a timestamp using the binary package and I have a question about laziness |
| 21:33:55 | × | trev quits (~trev@user/trev) (Quit: trev) |
| 21:34:22 | <hololeap> | I first want to check the timestamp to see if the cache is invalid, before even bothering to read the datastructure |
| 21:34:37 | <hololeap> | currently I have them in separate files |
| 21:35:18 | <hololeap> | but could this be achived with one file which contains (Timestamp, Datastructure)? |
| 21:37:01 | × | takuan quits (~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection) |
| 21:38:11 | <geekosaur> | at the price of possibly leaking file descriptors / Handles, which aren't necessarily in great supply |
| 21:39:23 | <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 |
| 21:39:59 | <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 |
| 21:40:59 | <hololeap> | geekosaur: well, here's the actual code as I have it currently |
| 21:41:00 | <hololeap> | https://github.com/hololeap/hackport/commit/685adc420d8a116c8c87d2a50c6c46f3c82cfc48#diff-04adf15b9a8515feafbb7305b398384104adf72635d98f334bebf000b55879c7R105-R115 |
| 21:41:36 | <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 |
| 21:41:44 | × | themc47 quits (~mc47@xmonad/TheMC47) (Remote host closed the connection) |
| 21:41:46 | <hololeap> | I would just prefer if I could do this with one file |
| 21:42:21 | <geekosaur> | there should be no reason you can't technically, but again this isn't so much a laziness question as a resources question |
| 21:42:47 | <geekosaur> | 5000 Handles open simultaneously may not be a great idea |
| 21:43:14 | <hololeap> | I'm confused why one file would require more handles |
| 21:43:48 | <geekosaur> | I'm not sure you gain much if you're not doing this with more than one file |
| 21:44:18 | <geekosaur> | moreover I don't see how it's a laziness question in that case |
| 21:45:05 | <geekosaur> | if you're making the decision right then, there's no difference between strict and lazy |
| 21:45:27 | <geekosaur> | if you're reading the timestamp now and using it and the associated trie later, then you have a laziness question |
| 21:45:47 | <hololeap> | right, which is what I'm doing :) |
| 21:46:15 | <geekosaur> | you're still potentially leaking a Handle in that case |
| 21:46:29 | <hololeap> | ok, I think I see what you're saying |
| 21:46:49 | <geekosaur> | also I don't think that's necessarily a laziness question, just that it might be one |
| 21:47:06 | <geekosaur> | you will have read the start of the trie but that's a filesystem thing, not a Haskell thing |
| 21:47:31 | <hololeap> | ok, separate files it is, then :) |
| 21:47:32 | <geekosaur> | whether you parse it immediately or not is up to your code |
| 21:48:14 | <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 |
| 21:48:58 | <hololeap> | right, and that's a lot of mental overhead to avoid having two files |
| 21:49:06 | × | vandita quits (~vandit@91-83-11-250.pool.digikabel.hu) (Ping timeout: 265 seconds) |
| 21:49:37 | × | zeenk quits (~zeenk@2a02:2f04:a105:f00::7fe) (Quit: Konversation terminated!) |
| 21:50:16 | × | Raito_Bezarius quits (~Raito@wireguard/tunneler/raito-bezarius) (Read error: Connection reset by peer) |
| 21:50:45 | → | vandita joins (~vandit@87-97-13-47.pool.digikabel.hu) |
| 21:51:37 | <hololeap> | thanks for the advice, geekosaur |
| 21:55:35 | → | wiosna joins (~karangura@c-73-93-95-154.hsd1.ca.comcast.net) |
| 22:00:00 | × | michalz quits (~michalz@185.246.207.200) (Remote host closed the connection) |
| 22:03:21 | × | Tuplanolla quits (~Tuplanoll@91-159-68-236.elisa-laajakaista.fi) (Ping timeout: 256 seconds) |
| 22:08:09 | × | acidjnk quits (~acidjnk@p200300d6e7072f04289ebaf0057e3058.dip0.t-ipconnect.de) (Ping timeout: 250 seconds) |
| 22:08:50 | × | ubert quits (~Thunderbi@p548c8bbe.dip0.t-ipconnect.de) (Quit: ubert) |
| 22:09:21 | → | freeside_ joins (~mengwong@103.252.202.151) |
| 22:10:22 | × | wiosna quits (~karangura@c-73-93-95-154.hsd1.ca.comcast.net) (Ping timeout: 265 seconds) |
| 22:10:57 | × | monochrom quits (trebla@216.138.220.146) (Quit: NO CARRIER) |
| 22:14:13 | → | monochrom joins (trebla@216.138.220.146) |
| 22:14:14 | × | freeside_ quits (~mengwong@103.252.202.151) (Ping timeout: 265 seconds) |
| 22:15:42 | → | freeside_ joins (~mengwong@103.252.202.151) |
| 22:18:17 | → | caryhartline joins (~caryhartl@107.140.218.181) |
| 22:20:00 | × | Pickchea quits (~private@user/pickchea) (Quit: Leaving) |
| 22:20:08 | × | freeside_ quits (~mengwong@103.252.202.151) (Ping timeout: 240 seconds) |
| 22:51:16 | → | pavonia joins (~user@user/siracusa) |
| 22:55:45 | × | caryhartline quits (~caryhartl@107.140.218.181) (Quit: caryhartline) |
| 22:57:37 | → | caryhartline joins (~caryhartl@2600:1700:2d0:8d30:a8ad:52bb:f68e:e718) |
| 22:59:15 | × | jle` quits (~jle`@cpe-23-240-75-236.socal.res.rr.com) (Ping timeout: 268 seconds) |
| 22:59:37 | → | paddymahoney joins (~paddymaho@cpe883d24bcf597-cmbc4dfb741f80.cpe.net.cable.rogers.com) |
| 23:01:02 | → | jle` joins (~jle`@cpe-23-240-75-236.socal.res.rr.com) |
| 23:01:45 | × | gurkenglas quits (~user@dynamic-046-114-176-178.46.114.pool.telefonica.de) (Ping timeout: 240 seconds) |
| 23:03:59 | → | gurkenglas joins (~user@dynamic-046-114-177-094.46.114.pool.telefonica.de) |
| 23:21:09 | → | mauke_ joins (~mauke@user/mauke) |
| 23:23:18 | × | mauke quits (~mauke@user/mauke) (Ping timeout: 268 seconds) |
| 23:23:18 | mauke_ | is now known as mauke |
| 23:24:29 | × | eggplantade quits (~Eggplanta@2600:1700:38c5:d800:200b:a013:81d0:d721) (Remote host closed the connection) |
| 23:28:11 | × | gurkenglas quits (~user@dynamic-046-114-177-094.46.114.pool.telefonica.de) (Ping timeout: 265 seconds) |
| 23:30:26 | → | rf joins (~rf@2605:59c8:179c:f610:c307:c081:a3e:bb75) |
| 23:43:44 | → | freeside_ joins (~mengwong@103.252.202.151) |
| 23:47:14 | → | kimjetwav joins (~user@2607:fea8:235e:b600:17dd:1c4:8522:e5d8) |
| 23:48:11 | × | freeside_ quits (~mengwong@103.252.202.151) (Ping timeout: 256 seconds) |
| 23:48:41 | × | oo_miguel quits (~Thunderbi@77.252.47.78) (Ping timeout: 246 seconds) |
| 23:57:20 | → | freeside_ joins (~mengwong@103.252.202.151) |
All times are in UTC on 2023-05-14.