Logs on 2024-04-21 (liberachat/#haskell)
| 00:01:10 | × | helle quits (~helle@user/meow/Helle) (Read error: Connection reset by peer) |
| 00:05:21 | × | alexherbo2 quits (~alexherbo@2a02-8440-3302-d776-5085-4da3-9df1-4a7b.rev.sfr.net) (Remote host closed the connection) |
| 00:07:00 | × | paddymahoney quits (~paddymaho@pool-99-250-26-190.cpe.net.cable.rogers.com) (Ping timeout: 245 seconds) |
| 00:08:14 | × | chexum quits (~quassel@gateway/tor-sasl/chexum) (Quit: No Ping reply in 180 seconds.) |
| 00:09:42 | × | ec quits (~ec@gateway/tor-sasl/ec) (Ping timeout: 260 seconds) |
| 00:09:53 | → | chexum joins (~quassel@gateway/tor-sasl/chexum) |
| 00:10:10 | × | bitdex quits (~bitdex@gateway/tor-sasl/bitdex) (Ping timeout: 260 seconds) |
| 00:10:10 | × | FinnElija quits (~finn_elij@user/finn-elija/x-0085643) (Ping timeout: 260 seconds) |
| 00:10:53 | → | ec joins (~ec@gateway/tor-sasl/ec) |
| 00:11:11 | → | FinnElija joins (~finn_elij@user/finn-elija/x-0085643) |
| 00:11:42 | → | bitdex joins (~bitdex@gateway/tor-sasl/bitdex) |
| 00:11:44 | → | tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
| 00:13:41 | × | Inst quits (~Inst@user/Inst) (Remote host closed the connection) |
| 00:17:38 | → | paddymahoney joins (~paddymaho@pool-99-250-26-190.cpe.net.cable.rogers.com) |
| 00:21:02 | × | tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 00:23:15 | × | paddymahoney quits (~paddymaho@pool-99-250-26-190.cpe.net.cable.rogers.com) (Ping timeout: 245 seconds) |
| 00:29:59 | → | paddymahoney joins (~paddymaho@pool-99-250-26-190.cpe.net.cable.rogers.com) |
| 00:30:57 | → | Inst joins (~Inst@user/Inst) |
| 00:35:14 | × | FinnElija quits (~finn_elij@user/finn-elija/x-0085643) (Remote host closed the connection) |
| 00:36:18 | → | FinnElija joins (~finn_elij@user/finn-elija/x-0085643) |
| 00:36:23 | × | paddymahoney quits (~paddymaho@pool-99-250-26-190.cpe.net.cable.rogers.com) (Ping timeout: 268 seconds) |
| 00:38:54 | → | paddymahoney joins (~paddymaho@pool-99-250-26-190.cpe.net.cable.rogers.com) |
| 00:40:54 | × | Tuplanolla quits (~Tuplanoll@91-159-69-59.elisa-laajakaista.fi) (Quit: Leaving.) |
| 00:43:18 | → | madeleine-sydney joins (~madeleine@c-76-155-235-153.hsd1.co.comcast.net) |
| 00:49:43 | × | paddymahoney quits (~paddymaho@pool-99-250-26-190.cpe.net.cable.rogers.com) (Ping timeout: 260 seconds) |
| 00:55:24 | × | titibandit quits (~titibandi@user/titibandit) (Read error: Connection reset by peer) |
| 01:01:16 | → | myxos joins (~myxos@65.28.251.121) |
| 01:03:03 | → | philopsos joins (~caecilius@user/philopsos) |
| 01:06:44 | → | mikoto joins (~mikoto@dzcz-fyyyyyyyyyyyyhpy-3.rev.dnainternet.fi) |
| 01:07:57 | × | tri quits (~tri@ool-18bc2e74.dyn.optonline.net) (Remote host closed the connection) |
| 01:08:33 | → | tri joins (~tri@ool-18bc2e74.dyn.optonline.net) |
| 01:10:01 | × | mikoto quits (~mikoto@dzcz-fyyyyyyyyyyyyhpy-3.rev.dnainternet.fi) (Client Quit) |
| 01:10:14 | → | mikoto joins (~mikoto@dzcz-fyyyyyyyyyyyyhpy-3.rev.dnainternet.fi) |
| 01:11:48 | × | mikoto quits (~mikoto@dzcz-fyyyyyyyyyyyyhpy-3.rev.dnainternet.fi) (Client Quit) |
| 01:12:50 | × | tri quits (~tri@ool-18bc2e74.dyn.optonline.net) (Ping timeout: 252 seconds) |
| 01:13:15 | × | waleee quits (~waleee@h-176-10-144-38.NA.cust.bahnhof.se) (Ping timeout: 245 seconds) |
| 01:13:23 | → | bilegeek joins (~bilegeek@2600:1008:b010:6f31:97f2:4443:40ea:6a83) |
| 01:20:17 | × | tremon quits (~tremon@83.80.159.219) (Quit: getting boxed in) |
| 01:20:55 | <Inst> | does readerT (>>) matter? |
| 01:21:53 | <Inst> | I mean, it's essentially a coding error to use >> in (->) r or ReaderT monad, but does it matter that it's defined as f *> g = (id <$ f) <*> g? |
| 01:23:50 | <geekosaur> | >> needs to exist for do notation to work |
| 01:23:58 | × | harveypwca quits (~harveypwc@2601:246:d080:b40:1889:d9bf:2dd8:b288) (Quit: Leaving) |
| 01:24:34 | <c_wraith> | it definitely matters for ReaderT. It indicates a problem with Reader |
| 01:24:35 | <geekosaur> | (whether it should or even can do something sensible is another question) |
| 01:24:53 | <Inst> | maybe I misunderstand things ?:( |
| 01:24:58 | <c_wraith> | But that's mostly because >> For Identity doesn't do anything |
| 01:25:17 | <c_wraith> | ReaderT just gives you the >> for the underlying type |
| 01:25:41 | <Inst> | https://hackage.haskell.org/package/base-4.19.1.0/docs/src/GHC.Base.html#line-1133 |
| 01:26:03 | <Inst> | there is no definition for *> |
| 01:26:25 | <c_wraith> | there's a default definition in Applicative |
| 01:26:39 | <Inst> | which should drop it to https://hackage.haskell.org/package/base-4.19.1.0/docs/src/GHC.Base.html#%2A%3E |
| 01:26:42 | <Inst> | which looks inefficient |
| 01:29:15 | <Inst> | (id <$ a1) <*> a2 <===> const id . a1 <*> a2 <===> \u -> (const id . a1) u ( a2 u) <===> \u -> id (a2 u) <===> a2 |
| 01:30:57 | <Inst> | https://hackage.haskell.org/package/transformers-0.6.1.1/docs/src/Control.Monad.Trans.Reader.html#line-158 |
| 01:31:52 | <c_wraith> | I would posit that the performance of something it's an error to use doesn't matter |
| 01:33:15 | × | _________ quits (~nobody@user/noodly) (Ping timeout: 245 seconds) |
| 01:33:49 | <Inst> | what would the cost of _ *> g = g be in base, for function monad? |
| 01:34:17 | <Inst> | I can imagine a case where you're using polymorphic monadic code, and when it instances to ReaderT identity it'd cause an issue |
| 01:37:49 | → | tri joins (~tri@ool-18bc2e74.dyn.optonline.net) |
| 01:40:20 | × | otto_s quits (~user@p4ff27c3b.dip0.t-ipconnect.de) (Ping timeout: 245 seconds) |
| 01:41:27 | × | oo_miguel quits (~Thunderbi@78-11-181-16.static.ip.netia.com.pl) (Ping timeout: 252 seconds) |
| 01:42:14 | → | otto_s joins (~user@p5b044e85.dip0.t-ipconnect.de) |
| 01:42:15 | <Inst> | yeah, you're right, in ReaderT Identity, the identity would take over and just do const on *> |
| 01:44:54 | <Inst> | Identity doesn't have *> or <* in its instance either :( |
| 01:45:06 | → | causal joins (~eric@50.35.88.207) |
| 01:45:43 | <Inst> | https://hackage.haskell.org/package/base-4.19.1.0/docs/src/Data.Functor.Identity.html#line-122 |
| 01:46:38 | → | ridcully_ joins (~ridcully@p508acabd.dip0.t-ipconnect.de) |
| 01:46:47 | × | ridcully quits (~ridcully@p508ac8f2.dip0.t-ipconnect.de) (Ping timeout: 264 seconds) |
| 01:58:36 | → | P1RATEZ joins (piratez@user/p1ratez) |
| 02:01:51 | → | Thomas03 joins (~Thomas03@2600:1702:21b0:a500:8e3:7060:f1c5:aac9) |
| 02:05:04 | × | op_4 quits (~tslil@user/op-4/x-9116473) (Remote host closed the connection) |
| 02:05:34 | → | op_4 joins (~tslil@user/op-4/x-9116473) |
| 02:14:20 | × | P1RATEZ quits (piratez@user/p1ratez) (Remote host closed the connection) |
| 02:37:51 | × | gmg quits (~user@user/gehmehgeh) (Quit: Leaving) |
| 02:39:49 | × | td_ quits (~td@i5387091E.versanet.de) (Ping timeout: 272 seconds) |
| 02:40:19 | × | Thomas03 quits (~Thomas03@2600:1702:21b0:a500:8e3:7060:f1c5:aac9) (Quit: Client closed) |
| 02:41:01 | → | td_ joins (~td@i53870917.versanet.de) |
| 02:42:40 | × | terrorjack quits (~terrorjac@2a01:4f8:c17:87f8::) (Quit: The Lounge - https://thelounge.chat) |
| 02:45:28 | → | terrorjack joins (~terrorjac@2a01:4f8:c17:87f8::) |
| 02:57:33 | → | rekahsoft joins (~rekahsoft@bras-base-orllon1103w-grc-13-184-148-6-204.dsl.bell.ca) |
| 03:00:29 | × | raym quits (~ray@user/raym) (Ping timeout: 240 seconds) |
| 03:01:39 | → | raym joins (~ray@user/raym) |
| 03:01:44 | × | causal quits (~eric@50.35.88.207) (Ping timeout: 252 seconds) |
| 03:01:48 | × | Patternmaster quits (~georg@user/Patternmaster) (Ping timeout: 255 seconds) |
| 03:02:27 | → | Patternmaster joins (~georg@user/Patternmaster) |
| 03:02:34 | × | FinnElija quits (~finn_elij@user/finn-elija/x-0085643) (Remote host closed the connection) |
| 03:03:34 | → | causal joins (~eric@50.35.88.207) |
| 03:03:35 | → | FinnElija joins (~finn_elij@user/finn-elija/x-0085643) |
| 03:16:10 | × | FinnElija quits (~finn_elij@user/finn-elija/x-0085643) (Remote host closed the connection) |
| 03:16:44 | → | FinnElija joins (~finn_elij@user/finn-elija/x-0085643) |
| 03:36:10 | × | aforemny_ quits (~aforemny@2001:9e8:6cd6:500:e763:a78e:e89e:9c7f) (Ping timeout: 245 seconds) |
| 03:36:16 | → | aforemny joins (~aforemny@i59F516DE.versanet.de) |
| 03:36:57 | × | rekahsoft quits (~rekahsoft@bras-base-orllon1103w-grc-13-184-148-6-204.dsl.bell.ca) (Ping timeout: 252 seconds) |
| 03:53:33 | × | yin quits (~yin@user/zero) (Ping timeout: 255 seconds) |
| 03:54:44 | → | hgolden joins (~hgolden@2603:8000:9d00:3ed1:f849:272c:fda5:33c9) |
| 03:57:37 | → | yin joins (~yin@user/zero) |
| 04:08:10 | × | stiell_ quits (~stiell@gateway/tor-sasl/stiell) (Ping timeout: 260 seconds) |
| 04:10:28 | × | pavonia quits (~user@user/siracusa) (Quit: Bye!) |
| 04:15:29 | → | stiell_ joins (~stiell@gateway/tor-sasl/stiell) |
| 04:23:22 | × | z0e quits (~z0e@pool-173-61-230-85.cmdnnj.fios.verizon.net) (Ping timeout: 250 seconds) |
| 04:55:59 | × | philopsos quits (~caecilius@user/philopsos) (Ping timeout: 272 seconds) |
| 04:56:51 | → | raehik joins (~raehik@rdng-25-b2-v4wan-169990-cust1344.vm39.cable.virginm.net) |
| 05:15:12 | → | Nick100 joins (~Nick@59.sub-174-215-117.myvzw.com) |
| 05:15:23 | → | peterbecich joins (~Thunderbi@47.229.123.186) |
| 05:16:16 | × | tri quits (~tri@ool-18bc2e74.dyn.optonline.net) (Remote host closed the connection) |
| 05:21:48 | × | target_i quits (~target_i@user/target-i/x-6023099) (Remote host closed the connection) |
| 05:24:19 | → | tri joins (~tri@ool-18bc2e74.dyn.optonline.net) |
| 05:25:30 | → | _________ joins (~nobody@user/noodly) |
| 05:28:28 | × | Nick100 quits (~Nick@59.sub-174-215-117.myvzw.com) (Quit: Connection closed) |
| 05:29:00 | × | tri quits (~tri@ool-18bc2e74.dyn.optonline.net) (Ping timeout: 260 seconds) |
| 05:30:14 | × | raehik quits (~raehik@rdng-25-b2-v4wan-169990-cust1344.vm39.cable.virginm.net) (Ping timeout: 252 seconds) |
| 05:47:48 | × | yin quits (~yin@user/zero) (Ping timeout: 268 seconds) |
| 05:47:51 | × | peterbecich quits (~Thunderbi@47.229.123.186) (Ping timeout: 255 seconds) |
| 05:51:53 | → | tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
| 05:54:00 | → | yin joins (~yin@user/zero) |
| 05:54:13 | × | kimiamania quits (~76637481@user/kimiamania) (Quit: PegeLinux) |
| 05:54:54 | → | kimiamania joins (~76637481@user/kimiamania) |
| 05:58:19 | × | madeleine-sydney quits (~madeleine@c-76-155-235-153.hsd1.co.comcast.net) (Quit: Konversation terminated!) |
| 06:03:47 | × | tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 06:18:35 | → | tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
| 06:19:49 | × | akshar quits (~user@209.94.142.169) () |
| 06:24:32 | × | m1dnight quits (~christoph@82.146.125.185) (Quit: WeeChat 4.2.2) |
| 06:26:05 | → | takuan joins (~takuan@178-116-218-225.access.telenet.be) |
| 06:28:06 | → | m1dnight joins (~christoph@82.146.125.185) |
| 06:34:24 | → | jinsun joins (~jinsun@user/jinsun) |
| 06:37:02 | × | tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 06:41:11 | → | Piedro joins (~Piedro@85.254.74.244) |
| 06:53:14 | → | pyooque joins (~puke@user/puke) |
| 06:53:14 | puke | is now known as Guest3535 |
| 06:53:14 | × | Guest3535 quits (~puke@user/puke) (Killed (copper.libera.chat (Nickname regained by services))) |
| 06:53:14 | pyooque | is now known as puke |
| 06:54:29 | × | puke quits (~puke@user/puke) (Max SendQ exceeded) |
| 06:55:48 | → | puke joins (~puke@user/puke) |
| 07:02:36 | → | tt12310 joins (~tt1231@2603:6010:8700:4a81:219f:50d3:618a:a6ee) |
| 07:06:07 | × | hgolden quits (~hgolden@2603:8000:9d00:3ed1:f849:272c:fda5:33c9) (Ping timeout: 268 seconds) |
| 07:13:31 | → | tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
| 07:18:54 | → | mima joins (~mmh@aftr-62-216-211-209.dynamic.mnet-online.de) |
| 07:24:09 | → | madeleine-sydney joins (~madeleine@c-76-155-235-153.hsd1.co.comcast.net) |
| 07:24:42 | × | actioninja quits (~actioninj@user/actioninja) (Quit: see ya mane) |
| 07:28:44 | → | actioninja joins (~actioninj@user/actioninja) |
| 07:35:43 | × | euleritian quits (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Read error: Connection reset by peer) |
| 07:35:52 | → | euleritian joins (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) |
| 07:38:17 | × | euleritian quits (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Read error: Connection reset by peer) |
| 07:39:06 | → | euleritian joins (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) |
| 07:43:49 | × | euleritian quits (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Ping timeout: 272 seconds) |
| 07:44:00 | → | euleritian joins (~euleritia@dynamic-176-002-143-082.176.2.pool.telefonica.de) |
| 07:46:58 | × | econo_ quits (uid147250@id-147250.tinside.irccloud.com) (Quit: Connection closed for inactivity) |
| 07:49:31 | × | Square quits (~Square@user/square) (Ping timeout: 272 seconds) |
| 07:53:42 | × | bitmapper quits (uid464869@id-464869.lymington.irccloud.com) (Quit: Connection closed for inactivity) |
| 07:55:51 | × | euleritian quits (~euleritia@dynamic-176-002-143-082.176.2.pool.telefonica.de) (Read error: Connection reset by peer) |
| 07:56:09 | → | euleritian joins (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) |
| 08:05:56 | × | Inst quits (~Inst@user/Inst) (Ping timeout: 268 seconds) |
| 08:06:38 | → | Inst joins (~Inst@user/Inst) |
| 08:10:13 | → | titibandit joins (~titibandi@user/titibandit) |
| 08:11:09 | × | pastly quits (~pastly@gateway/tor-sasl/pastly) (Remote host closed the connection) |
| 08:11:54 | → | pastly joins (~pastly@gateway/tor-sasl/pastly) |
| 08:18:35 | × | pastly quits (~pastly@gateway/tor-sasl/pastly) (Remote host closed the connection) |
| 08:19:04 | → | pastly joins (~pastly@gateway/tor-sasl/pastly) |
| 08:19:18 | → | hosklla joins (~user@user/hosklla) |
| 08:19:35 | × | euleritian quits (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Read error: Connection reset by peer) |
| 08:20:57 | → | euleritian joins (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) |
| 08:26:01 | × | euleritian quits (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Read error: Connection reset by peer) |
| 08:26:10 | → | euleritian joins (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) |
| 08:28:46 | × | Piedro quits (~Piedro@85.254.74.244) (Remote host closed the connection) |
| 08:29:08 | → | Piedro joins (~Piedro@85.254.74.244) |
| 08:29:33 | × | Piedro quits (~Piedro@85.254.74.244) (Remote host closed the connection) |
| 08:29:54 | → | internatetional joins (~nate@2001:448a:20a3:c2e5:71b9:a710:2866:667f) |
| 08:29:55 | → | Piedro joins (~Piedro@85.254.74.244) |
| 08:34:13 | → | _ht joins (~Thunderbi@28-52-174-82.ftth.glasoperator.nl) |
| 08:42:33 | → | qqq joins (~qqq@92.43.167.61) |
| 08:44:18 | × | tzh quits (~tzh@c-73-164-206-160.hsd1.or.comcast.net) (Quit: zzz) |
| 08:48:46 | × | yin quits (~yin@user/zero) (Ping timeout: 255 seconds) |
| 08:55:31 | → | yin joins (~yin@user/zero) |
| 08:55:44 | × | zer0bitz quits (~zer0bitz@user/zer0bitz) (Quit: https://zer0bitz.dy.fi) |
| 08:57:38 | → | target_i joins (~target_i@user/target-i/x-6023099) |
| 09:04:18 | × | bilegeek quits (~bilegeek@2600:1008:b010:6f31:97f2:4443:40ea:6a83) (Quit: Leaving) |
| 09:05:23 | × | euleritian quits (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Ping timeout: 264 seconds) |
| 09:05:49 | → | oo_miguel joins (~Thunderbi@78-11-181-16.static.ip.netia.com.pl) |
| 09:05:58 | → | euleritian joins (~euleritia@dynamic-176-002-143-082.176.2.pool.telefonica.de) |
| 09:16:02 | → | Tuplanolla joins (~Tuplanoll@91-159-69-59.elisa-laajakaista.fi) |
| 09:18:15 | × | euleritian quits (~euleritia@dynamic-176-002-143-082.176.2.pool.telefonica.de) (Read error: Connection reset by peer) |
| 09:18:32 | → | euleritian joins (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) |
| 09:21:54 | × | Piedro quits (~Piedro@85.254.74.244) (Remote host closed the connection) |
| 09:33:06 | → | JamesMowery7 joins (~JamesMowe@ip98-171-80-211.ph.ph.cox.net) |
| 09:35:21 | × | JamesMowery quits (~JamesMowe@ip98-171-80-211.ph.ph.cox.net) (Ping timeout: 268 seconds) |
| 09:35:21 | JamesMowery7 | is now known as JamesMowery |
| 09:38:46 | → | sawilagar joins (~sawilagar@user/sawilagar) |
| 09:39:56 | × | Sgeo quits (~Sgeo@user/sgeo) (Read error: Connection reset by peer) |
| 09:41:50 | → | gmg joins (~user@user/gehmehgeh) |
| 09:42:48 | × | tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 09:43:12 | → | ph88 joins (~ph88@ip5b403f30.dynamic.kabel-deutschland.de) |
| 09:44:23 | <ph88> | How can i use OverloadedRecordDot with qualified imports for the field accessor? |
| 09:47:53 | <tomsmeding> | you write the module qualifier in very small text above the dot |
| 09:51:26 | <tomsmeding> | the documentation ( https://downloads.haskell.org/ghc/latest/docs/users_guide/exts/overloaded_record_dot.html#extension-OverloadedRecordDot ) states that the projection expressions are desugared to getField ( https://hackage.haskell.org/package/base-4.19.1.0/docs/GHC-Records.html ), which itself is just a type class and hence allows you to qualify anything, but it seems like the syntax of |
| 09:51:28 | <tomsmeding> | OverloadedRecordDot does not |
| 09:52:50 | → | tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
| 09:54:04 | → | xdminsy joins (~xdminsy@117.147.70.233) |
| 09:54:32 | × | xdminsy quits (~xdminsy@117.147.70.233) (Read error: Connection reset by peer) |
| 09:57:28 | → | Square joins (~Square@user/square) |
| 09:58:25 | × | qqq quits (~qqq@92.43.167.61) (Read error: Connection reset by peer) |
| 09:59:57 | → | waleee joins (~waleee@h-176-10-144-38.NA.cust.bahnhof.se) |
| 10:03:30 | → | qqq joins (~qqq@92.43.167.61) |
| 10:04:42 | × | yin quits (~yin@user/zero) (Ping timeout: 252 seconds) |
| 10:16:43 | × | jespada quits (~jespada@cpc121308-nmal25-2-0-cust15.19-2.cable.virginm.net) (Ping timeout: 260 seconds) |
| 10:19:16 | × | CodeKiwi quits (~kiwi@2604:a880:400:d0::1ca0:e001) (Ping timeout: 260 seconds) |
| 10:20:10 | → | jespada joins (~jespada@cpc121308-nmal25-2-0-cust15.19-2.cable.virginm.net) |
| 10:36:06 | × | qqq quits (~qqq@92.43.167.61) (Ping timeout: 268 seconds) |
| 10:37:49 | → | qqq joins (~qqq@92.43.167.61) |
| 10:44:33 | → | Lord_of_Life_ joins (~Lord@user/lord-of-life/x-2819915) |
| 10:44:55 | × | Lord_of_Life quits (~Lord@user/lord-of-life/x-2819915) (Ping timeout: 245 seconds) |
| 10:46:46 | → | xdminsy joins (~xdminsy@117.147.70.233) |
| 10:47:26 | Lord_of_Life_ | is now known as Lord_of_Life |
| 10:52:22 | × | euleritian quits (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Ping timeout: 256 seconds) |
| 10:54:09 | × | hosklla quits (~user@user/hosklla) (Remote host closed the connection) |
| 10:54:17 | → | hosklla joins (~user@p200300f917158a00390765bd42a9c16b.dip0.t-ipconnect.de) |
| 10:56:08 | → | euleritian joins (~euleritia@dynamic-176-002-143-082.176.2.pool.telefonica.de) |
| 10:58:35 | × | Inst quits (~Inst@user/Inst) (Ping timeout: 252 seconds) |
| 11:01:19 | → | rvalue- joins (~rvalue@user/rvalue) |
| 11:01:41 | × | xdminsy quits (~xdminsy@117.147.70.233) (Ping timeout: 268 seconds) |
| 11:02:03 | → | xdminsy joins (~xdminsy@117.147.70.233) |
| 11:02:23 | × | rvalue quits (~rvalue@user/rvalue) (Ping timeout: 264 seconds) |
| 11:03:29 | × | mrmr1553343 quits (~mrmr@user/mrmr) (Quit: Bye, See ya later!) |
| 11:07:05 | rvalue- | is now known as rvalue |
| 11:18:24 | × | waleee quits (~waleee@h-176-10-144-38.NA.cust.bahnhof.se) (Ping timeout: 252 seconds) |
| 11:26:57 | → | mrmr1553343 joins (~mrmr@user/mrmr) |
| 11:33:38 | × | tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 11:35:53 | × | target_i quits (~target_i@user/target-i/x-6023099) (Quit: leaving) |
| 11:42:16 | → | target_i joins (~target_i@user/target-i/x-6023099) |
| 11:42:43 | × | qqq quits (~qqq@92.43.167.61) (Remote host closed the connection) |
| 11:43:15 | → | paddymahoney joins (~paddymaho@pool-99-250-26-190.cpe.net.cable.rogers.com) |
| 11:45:43 | <ph88> | hahaah "in very small text above the dot" if only if i would write out my code on paper xD |
| 11:47:51 | × | paddymahoney quits (~paddymaho@pool-99-250-26-190.cpe.net.cable.rogers.com) (Ping timeout: 255 seconds) |
| 11:53:13 | → | qqq joins (~qqq@92.43.167.61) |
| 11:58:50 | → | paddymahoney joins (~paddymaho@pool-99-250-26-190.cpe.net.cable.rogers.com) |
| 12:04:30 | × | paddymahoney quits (~paddymaho@pool-99-250-26-190.cpe.net.cable.rogers.com) (Ping timeout: 245 seconds) |
| 12:05:19 | → | ht_ joins (~Thunderbi@194.110.115.39) |
| 12:06:10 | × | _ht quits (~Thunderbi@28-52-174-82.ftth.glasoperator.nl) (Ping timeout: 245 seconds) |
| 12:06:10 | ht_ | is now known as _ht |
| 12:18:36 | × | Lord_of_Life quits (~Lord@user/lord-of-life/x-2819915) (Quit: Laa shay'a waqi'un moutlaq bale kouloun moumkine) |
| 12:19:24 | → | ocra8 joins (ocra8@user/ocra8) |
| 12:20:09 | tomsmeding | . o O ( https://en.wikipedia.org/wiki/Epigram_(programming_language) ) |
| 12:20:22 | <tomsmeding> | (the layout in the first code example is borked, the first line needs 5 spaces before the first '(' ) |
| 12:21:04 | → | Lord_of_Life joins (~Lord@user/lord-of-life/x-2819915) |
| 12:29:28 | → | __monty__ joins (~toonn@user/toonn) |
| 12:41:43 | → | paddymahoney joins (~paddymaho@pool-99-250-26-190.cpe.net.cable.rogers.com) |
| 12:46:29 | <ph88> | How can i unwrap 2 monads with do-syntax? example https://bpa.st/B5ZQ |
| 12:48:32 | × | paddymahoney quits (~paddymaho@pool-99-250-26-190.cpe.net.cable.rogers.com) (Ping timeout: 256 seconds) |
| 12:50:34 | <int-e> | @unmtl ExceptT e m a |
| 12:50:34 | <lambdabot> | m (Either e a) |
| 12:51:23 | <int-e> | (Basically you don't, but you could use the the ExceptT monad transformer to accomplish what you probably want. And it'll be isomorphic to the m (Either a b) you already have) |
| 12:54:43 | <ph88> | would be nice to just make that arrow a bit longer `<-` into `<--` for every additional unwrap add another dash :D |
| 12:57:28 | <int-e> | It's not at all clear what that means in general. |
| 12:59:31 | <int-e> | (Recall that do notation is syntax sugar. It's worth pondering what that hypothetical <-- arrow would desugar to, if anything.) |
| 13:00:00 | <int-e> | @undo do x <- b; c x |
| 13:00:00 | <lambdabot> | b >>= \ x -> c x |
| 13:01:52 | → | tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
| 13:08:04 | → | tok joins (~user@user/tok) |
| 13:20:48 | <haskellbridge> | <irregularsphere> int-e: I think he meant as in more syntax sugar. |
| 13:20:48 | <haskellbridge> | <irregularsphere> (`b :: m (n a)`) `do { xs <- b; x <-- b; return (xs, x) }` -> `b >>= \xs -> (b >>=' \x -> (return (xs, x))` with `>>='` being some other bind with the type `m (n a) -> (a -> m (n b)) -> m (n b)` |
| 13:20:50 | <haskellbridge> | <irregularsphere> however it becomes clear that this does not work since not all monads compose together into another monad |
| 13:20:57 | <haskellbridge> | <irregularsphere> does not work in some situations* |
| 13:23:58 | <haskellbridge> | <irregularsphere> this can be simulated though, if `b :: Compose m n a` and `Monad (Compose m n)` then (I think) the above do notation can be simulated by this: |
| 13:23:58 | <haskellbridge> | <irregularsphere> `do { xs <- fmap pure b; x <- b; return (xs, x) }` |
| 13:27:39 | <haskellbridge> | <irregularsphere> i meant `do { xs <- Compose (fmap pure (getCompose b)); x <- b; return (xs, x)}` |
| 13:27:45 | <haskellbridge> | <irregularsphere> uhh... |
| 13:30:24 | <haskellbridge> | <irregularsphere> ph88: anyways not all two monads compose to another monad, and I suggest looking into monad transformers |
| 13:30:28 | → | rosco joins (rosco@gateway/vpn/airvpn/rosco) |
| 13:30:55 | <ski> | idioms compose |
| 13:31:12 | → | paddymahoney joins (~paddymaho@pool-99-250-26-190.cpe.net.cable.rogers.com) |
| 13:31:48 | <haskellbridge> | <irregularsphere> how do I define an idiom in Haskell code :P |
| 13:32:14 | <haskellbridge> | <irregularsphere> do I use literate Haskell for that |
| 13:34:14 | × | bitdex quits (~bitdex@gateway/tor-sasl/bitdex) (Ping timeout: 260 seconds) |
| 13:34:14 | × | rosco quits (rosco@gateway/vpn/airvpn/rosco) (Client Quit) |
| 13:35:03 | <ski> | "idiom", in this context, is a synonym for "applicative functor" |
| 13:35:28 | <haskellbridge> | <irregularsphere> ah |
| 13:36:00 | <haskellbridge> | <irregularsphere> yeah applicative functors compose, then you can use applicative dos but it's limited |
| 13:36:26 | <ncf> | you could say "idiom" is an idiom at this point |
| 13:37:01 | → | bitdex joins (~bitdex@gateway/tor-sasl/bitdex) |
| 13:39:55 | → | danza joins (~francesco@151.35.224.182) |
| 13:44:55 | × | Square quits (~Square@user/square) (Ping timeout: 245 seconds) |
| 13:45:19 | <ski> | "Idioms: Applicatie Programming with Effects" (functional pearl) by Conor McBride,Ross Paterson at <http://strictlypositive.org/Idiom.pdf> ; <https://mail.haskell.org/pipermail/haskell/2004-July/014315.html>,<https://wiki.haskell.org/Applicative_functor> |
| 13:45:50 | <ski> | (two more versions of the paper, at <http://strictlypositive.org/>) |
| 13:54:34 | × | tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 13:56:53 | → | rosco joins (~rosco@yp-146-6.tm.net.my) |
| 13:58:13 | × | danza quits (~francesco@151.35.224.182) (Ping timeout: 246 seconds) |
| 14:01:41 | × | paddymahoney quits (~paddymaho@pool-99-250-26-190.cpe.net.cable.rogers.com) (Ping timeout: 240 seconds) |
| 14:03:11 | → | noumenon joins (~noumenon@113.51-175-156.customer.lyse.net) |
| 14:04:35 | → | tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
| 14:06:41 | × | xdminsy quits (~xdminsy@117.147.70.233) (Read error: Connection reset by peer) |
| 14:09:41 | × | phma quits (phma@2001:5b0:211f:5788:9247:2ba3:4ac:7601) (Read error: Connection reset by peer) |
| 14:10:38 | → | phma joins (~phma@2001:5b0:211c:6428:fc4d:883f:37de:f618) |
| 14:11:39 | × | ChaiTRex quits (~ChaiTRex@user/chaitrex) (Remote host closed the connection) |
| 14:12:16 | → | xdminsy joins (~xdminsy@117.147.70.233) |
| 14:15:28 | × | son0p quits (~ff@191.104.18.195) (Quit: Leaving) |
| 14:21:06 | → | yin joins (~yin@user/zero) |
| 14:24:55 | × | titibandit quits (~titibandi@user/titibandit) (Ping timeout: 245 seconds) |
| 14:26:52 | → | philopsos joins (~caecilius@user/philopsos) |
| 14:27:55 | → | Piedro joins (~Piedro@85.254.74.244) |
| 14:32:06 | × | adanwan_ quits (~adanwan@gateway/tor-sasl/adanwan) (Ping timeout: 260 seconds) |
| 14:32:14 | × | philopsos quits (~caecilius@user/philopsos) (Ping timeout: 256 seconds) |
| 14:33:51 | → | adanwan joins (~adanwan@gateway/tor-sasl/adanwan) |
| 14:34:26 | → | ht_ joins (~Thunderbi@28-52-174-82.ftth.glasoperator.nl) |
| 14:34:45 | → | pavonia joins (~user@user/siracusa) |
| 14:34:49 | × | rosco quits (~rosco@yp-146-6.tm.net.my) (Remote host closed the connection) |
| 14:35:40 | × | _ht quits (~Thunderbi@194.110.115.39) (Ping timeout: 268 seconds) |
| 14:35:40 | ht_ | is now known as _ht |
| 14:38:29 | → | rosco joins (~rosco@yp-146-6.tm.net.my) |
| 14:41:20 | → | r5c4571lh01987 joins (rscastilho@179.221.142.8) |
| 14:43:29 | × | yin quits (~yin@user/zero) (Quit: Lost terminal) |
| 14:45:21 | → | son0p joins (~ff@191.104.18.195) |
| 14:54:34 | → | notzmv joins (~daniel@user/notzmv) |
| 14:58:57 | × | tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 15:21:47 | → | raehik joins (~raehik@rdng-25-b2-v4wan-169990-cust1344.vm39.cable.virginm.net) |
| 15:21:53 | → | myxokephale joins (~myxos@172.93.132.84) |
| 15:22:28 | → | tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
| 15:23:59 | × | myxos quits (~myxos@65.28.251.121) (Ping timeout: 264 seconds) |
| 15:24:04 | <ph88> | irregularsphere i imagine that would only type check for those situations that they do compose |
| 15:24:53 | <ph88> | how many functional pearls are there ? |
| 15:26:20 | × | L29Ah quits (~L29Ah@wikipedia/L29Ah) (Read error: Connection reset by peer) |
| 15:29:14 | Ellenor | is now known as MelanieMalik |
| 15:29:24 | MelanieMalik | is now known as MelMalik |
| 15:36:50 | → | hgolden joins (~hgolden@2603:8000:9d00:3ed1:f849:272c:fda5:33c9) |
| 15:40:40 | × | madeleine-sydney quits (~madeleine@c-76-155-235-153.hsd1.co.comcast.net) (Quit: Konversation terminated!) |
| 15:46:18 | × | adanwan quits (~adanwan@gateway/tor-sasl/adanwan) (Ping timeout: 260 seconds) |
| 15:46:53 | → | L29Ah joins (~L29Ah@wikipedia/L29Ah) |
| 15:48:47 | → | adanwan joins (~adanwan@gateway/tor-sasl/adanwan) |
| 15:50:46 | × | pepeiborra quits (sid443799@id-443799.ilkley.irccloud.com) (Quit: Connection closed for inactivity) |
| 15:51:42 | × | acertain_ quits (sid470584@id-470584.hampstead.irccloud.com) (Quit: Connection closed for inactivity) |
| 15:51:58 | ← | L29Ah parts (~L29Ah@wikipedia/L29Ah) () |
| 15:52:34 | → | L29Ah joins (~L29Ah@wikipedia/L29Ah) |
| 16:05:16 | → | zer0bitz joins (~zer0bitz@user/zer0bitz) |
| 16:06:07 | <[exa]> | ph88: they get published in small count with each ICFP and JFP issue so I'd say a few dozen at this point |
| 16:06:16 | <ph88> | nice :> |
| 16:11:54 | → | econo_ joins (uid147250@id-147250.tinside.irccloud.com) |
| 16:14:14 | → | paddymahoney joins (~paddymaho@pool-99-250-26-190.cpe.net.cable.rogers.com) |
| 16:20:45 | × | sawilagar quits (~sawilagar@user/sawilagar) (Ping timeout: 245 seconds) |
| 16:22:12 | <monochrom> | Haha it's official, Ningning Xie declares that LYAH is a great book. >:) |
| 16:23:26 | × | rosco quits (~rosco@yp-146-6.tm.net.my) (Quit: Lost terminal) |
| 16:25:22 | → | michalz joins (~michalz@185.246.207.203) |
| 16:26:24 | × | paddymahoney quits (~paddymaho@pool-99-250-26-190.cpe.net.cable.rogers.com) (Ping timeout: 252 seconds) |
| 16:27:28 | → | madariaga joins (~madariaga@user/madariaga) |
| 16:31:15 | × | raehik quits (~raehik@rdng-25-b2-v4wan-169990-cust1344.vm39.cable.virginm.net) (Quit: WeeChat 4.2.2) |
| 16:33:19 | → | raehik joins (~raehik@rdng-25-b2-v4wan-169990-cust1344.vm39.cable.virginm.net) |
| 16:35:55 | × | driib quits (~driib@vmi931078.contaboserver.net) (Ping timeout: 268 seconds) |
| 16:36:31 | → | Guest13 joins (~Guest13@cpc93370-hers8-2-0-cust590.6-3.cable.virginm.net) |
| 16:40:26 | <Guest13> | hi, I have a beginner question on optimising a recursive function. for context, I am trying to complete aoc2023 day 8. this is my function, which runs correctly on the smaller instances but hangs for some time on the larger graph: |
| 16:40:26 | <Guest13> | recurseSol :: Graph -> Int -> [String] -> String -> Int |
| 16:40:27 | <Guest13> | recurseSol graph depth state (i:is) = case end of |
| 16:40:27 | <Guest13> | True -> depth |
| 16:40:28 | <Guest13> | otherwise -> recurseSol graph (depth+1) next is |
| 16:40:28 | <Guest13> | where next = map (\node -> if (i == 'L') then fst (graph M.! node) else snd (graph M.! node)) state |
| 16:40:29 | <Guest13> | end = (==0) . length $ filter (\[_,_,c] -> c/='Z') state |
| 16:40:29 | <Guest13> | at each step I check if I have reached the final states. does passing graph in at each step make this very inefficient or is it store as I do not change it? is there a way to make Haskell calculate the value of the state at each step, as it can only know it has reached the end this way. thank you for any help |
| 16:41:23 | × | internatetional quits (~nate@2001:448a:20a3:c2e5:71b9:a710:2866:667f) (Quit: WeeChat 4.2.1) |
| 16:41:28 | <Guest13> | also, I would appreciate if anyone can point out some obvious improvements to the code (both efficiency and how it is written) |
| 16:43:41 | <monochrom> | graph is passed by pointer and not cloned, it's only O(1). |
| 16:43:48 | → | danza joins (~francesco@151.35.246.62) |
| 16:45:07 | <monochrom> | "length xs == 0" takes time proportional to length xs and is a dumb way to say "null xs" which takes only O(1) time. |
| 16:45:29 | <Guest13> | '=D |
| 16:45:45 | <ncf> | this can be compressed even further using all |
| 16:45:46 | <ncf> | :t all |
| 16:45:47 | <lambdabot> | Foldable t => (a -> Bool) -> t a -> Bool |
| 16:46:02 | <Guest13> | ahhh |
| 16:46:32 | <Guest13> | idk why I did it like that I will use all |
| 16:47:43 | <ncf> | IIRC this is one of the first problems that required actual thought, so a naive solution like that isn't gonna work |
| 16:48:08 | <ncf> | if i still remember correctly, solving this required making assumptions about the input that weren't contained in the problem text, so... good luck |
| 16:48:43 | × | Raito_Bezarius quits (~Raito@wireguard/tunneler/raito-bezarius) (Read error: Connection reset by peer) |
| 16:49:00 | <Guest13> | ok back to drawing board I guess. I was gonna step through the instructions but it is taking some time |
| 16:49:07 | → | orenty7 joins (~orenty7@185.117.121.249) |
| 16:49:07 | <Guest13> | I thought my code was problem |
| 16:49:37 | <int-e> | the answer is rather big |
| 16:49:45 | <Guest13> | but I need to solve it differently, maybe by figuring out like a phase difference between each ending state and then working out when they will meet |
| 16:50:01 | → | Raito_Bezarius joins (~Raito@wireguard/tunneler/raito-bezarius) |
| 16:50:25 | <int-e> | ncf: I wouldn't say "required" for this particular one, but there was a huge shortcut because of special input properties. |
| 16:50:36 | → | bitmapper joins (uid464869@id-464869.lymington.irccloud.com) |
| 16:51:09 | × | Raito_Bezarius quits (~Raito@wireguard/tunneler/raito-bezarius) (Max SendQ exceeded) |
| 16:51:10 | × | orenty7 quits (~orenty7@185.117.121.249) (Client Quit) |
| 16:51:10 | <ncf> | right |
| 16:52:24 | → | wroathe joins (~wroathe@user/wroathe) |
| 16:53:23 | <c_wraith> | I didn't use the shortcut, I did it the "hard" way. Which is really the same thing, except with a little more arithmetic. |
| 16:53:55 | <Guest13> | I think if I used HashMap it would also be a LOT faster xd |
| 16:54:03 | <Guest13> | just realised it was a treetop by default |
| 16:54:37 | <c_wraith> | Guest13: that's almost completely irrelevant. I see that my solution was a 14-digit number. You're not iterating that high with any data structure. |
| 16:55:33 | <int-e> | ncf: which was funny because I wrote code for part 2 on autopilot without thinking nearly as much as I should have, submitted the answer, which was correct, and then I started to think for real and asking why the fuck that worked. |
| 16:55:50 | <ncf> | same |
| 16:55:50 | <Guest13> | this happens anyway "*** Exception: stack overflow" |
| 16:56:00 | → | tzh joins (~tzh@c-73-164-206-160.hsd1.or.comcast.net) |
| 16:56:35 | <ski> | (maybe forcing `depth' would help with that ?) |
| 16:57:20 | <int-e> | it was 14 digits here too |
| 16:57:24 | <Guest13> | this problem looks hard for me |
| 16:57:47 | <c_wraith> | you can't brute-force it. You need to figure out how to break it down into subproblems and then combine the results from those subproblems. |
| 16:58:17 | <int-e> | (and takes a fraction of a second to find) |
| 16:58:26 | <Guest13> | yeah I was thinking of doing something like "how often does each ghost reach an end state" |
| 16:58:37 | <c_wraith> | that's the right track. |
| 16:58:41 | <Guest13> | and finding the gcd of that |
| 16:58:54 | <c_wraith> | you'd want lcm, but they're nearly the same. :P |
| 16:59:01 | <Guest13> | yeah that's what I mean lol |
| 17:01:16 | <Guest13> | so it would be find when ghost reaches same state + same instruction |
| 17:01:23 | <Guest13> | instruction number |
| 17:03:21 | <Guest13> | idk this is hard but thank you for the help! I will think about the problem a bit more. I'm not sure about the input properties you mention but I think I can solve it anyway |
| 17:03:29 | × | Guest13 quits (~Guest13@cpc93370-hers8-2-0-cust590.6-3.cable.virginm.net) (Quit: Client closed) |
| 17:05:20 | <ncf> | so i guess the fully general problem looks like: you have a bunch of eventually periodic lists of numbers (steps until the next final state) and you want to find their smallest common cumulative sum-of-prefix |
| 17:05:46 | <ncf> | with the "nice" case being when all lists are constant, in which case the answer is LCM |
| 17:06:06 | <c_wraith> | the fully general version looks like "I have a bunch of cycles with various starting points, and I want to align them", which... works out to be CRT. |
| 17:06:40 | <int-e> | It turns out to be NP-hard, but the actual instance isn't nasty at all. |
| 17:06:56 | <ncf> | CRT isn't NP-hard, so one of you is lying |
| 17:07:17 | <int-e> | it's *many* CRTs, one for each choice of final states in the loop |
| 17:07:29 | <int-e> | and that number can be exponential |
| 17:07:42 | <ncf> | ah i see |
| 17:08:34 | → | Raito_Bezarius joins (~Raito@wireguard/tunneler/raito-bezarius) |
| 17:08:50 | <int-e> | s/loop/loops/ |
| 17:10:45 | <int-e> | I never figured out whether the general version of day 20 is decidable or not. |
| 17:13:22 | <ncf> | lol https://github.com/ncfavier/aoc/blob/main/src/2023/Day20.hs#L51 |
| 17:13:26 | <ncf> | can you tell i was pissed |
| 17:14:44 | × | tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 17:14:52 | <ncf> | ah yes that was the one you had to render as an SVG to actually understand what was going on |
| 17:16:37 | <int-e> | I only looked at the fact that the final gate was a conjunction and remembered day 8 ;-) |
| 17:17:44 | <int-e> | I also produced https://paste.debian.net/1314729/ but that was way later |
| 17:21:36 | × | raehik quits (~raehik@rdng-25-b2-v4wan-169990-cust1344.vm39.cable.virginm.net) (Ping timeout: 260 seconds) |
| 17:21:57 | × | madariaga quits (~madariaga@user/madariaga) (Quit: madariaga) |
| 17:24:04 | → | paddymahoney joins (~paddymaho@pool-99-250-26-190.cpe.net.cable.rogers.com) |
| 17:32:04 | × | paddymahoney quits (~paddymaho@pool-99-250-26-190.cpe.net.cable.rogers.com) (Ping timeout: 246 seconds) |
| 17:34:01 | × | tabemann quits (~tabemann@2600:1700:7990:24e0:6221:c407:995f:5743) (Remote host closed the connection) |
| 17:34:14 | → | tabemann joins (~tabemann@2600:1700:7990:24e0:2a56:ddeb:a57a:6071) |
| 17:35:43 | × | euleritian quits (~euleritia@dynamic-176-002-143-082.176.2.pool.telefonica.de) (Read error: Connection reset by peer) |
| 17:36:06 | → | euleritian joins (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) |
| 17:39:43 | → | tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
| 17:40:37 | → | titibandit joins (~titibandi@user/titibandit) |
| 17:40:40 | × | euleritian quits (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Ping timeout: 255 seconds) |
| 17:44:51 | → | euleritian joins (~euleritia@dynamic-176-002-143-082.176.2.pool.telefonica.de) |
| 17:52:57 | → | machinedgod joins (~machinedg@d173-183-246-216.abhsia.telus.net) |
| 18:03:43 | → | raehik joins (~raehik@rdng-25-b2-v4wan-169990-cust1344.vm39.cable.virginm.net) |
| 18:07:47 | → | madariaga joins (~madariaga@user/madariaga) |
| 18:09:55 | × | raehik quits (~raehik@rdng-25-b2-v4wan-169990-cust1344.vm39.cable.virginm.net) (Ping timeout: 245 seconds) |
| 18:11:43 | × | euleritian quits (~euleritia@dynamic-176-002-143-082.176.2.pool.telefonica.de) (Read error: Connection reset by peer) |
| 18:12:25 | → | euleritian joins (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) |
| 18:20:24 | × | euleritian quits (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Read error: Connection reset by peer) |
| 18:21:49 | → | euleritian joins (~euleritia@dynamic-176-002-143-082.176.2.pool.telefonica.de) |
| 18:22:10 | × | euleritian quits (~euleritia@dynamic-176-002-143-082.176.2.pool.telefonica.de) (Read error: Connection reset by peer) |
| 18:22:32 | → | euleritian joins (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) |
| 18:25:45 | × | euleritian quits (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Read error: Connection reset by peer) |
| 18:26:42 | → | euleritian joins (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) |
| 18:32:30 | → | waleee joins (~waleee@h-176-10-144-38.NA.cust.bahnhof.se) |
| 18:34:05 | × | danza quits (~francesco@151.35.246.62) (Ping timeout: 245 seconds) |
| 18:40:37 | × | madariaga quits (~madariaga@user/madariaga) (Quit: madariaga) |
| 18:41:13 | → | Sgeo joins (~Sgeo@user/sgeo) |
| 18:44:46 | × | wroathe quits (~wroathe@user/wroathe) (Quit: leaving) |
| 18:46:13 | <[exa]> | hm is kansas-lava (the vhdl thingy) officially dead dead, or is there some kind of a follow-up active project or so? |
| 18:48:22 | × | TheCoffeMaker quits (~TheCoffeM@user/thecoffemaker) (Quit: So long and thanks for all the fish) |
| 18:48:44 | → | TheCoffeMaker joins (~TheCoffeM@user/thecoffemaker) |
| 18:55:57 | → | raehik joins (~raehik@rdng-25-b2-v4wan-169990-cust1344.vm39.cable.virginm.net) |
| 18:59:47 | × | dostoyevsky2 quits (~sck@user/dostoyevsky2) (Quit: leaving) |
| 19:00:00 | → | dostoyevsky2 joins (~sck@user/dostoyevsky2) |
| 19:03:21 | → | madariaga joins (~madariaga@user/madariaga) |
| 19:17:18 | → | califax_ joins (~califax@user/califx) |
| 19:17:42 | × | califax quits (~califax@user/califx) (Ping timeout: 260 seconds) |
| 19:18:24 | califax_ | is now known as califax |
| 19:32:54 | × | machinedgod quits (~machinedg@d173-183-246-216.abhsia.telus.net) (Ping timeout: 268 seconds) |
| 19:37:39 | × | phma quits (~phma@2001:5b0:211c:6428:fc4d:883f:37de:f618) (Read error: Connection reset by peer) |
| 19:38:31 | → | phma joins (~phma@2001:5b0:210f:be8:a757:5762:40a:c4be) |
| 19:38:37 | → | danza joins (~francesco@151.35.247.107) |
| 19:45:34 | × | tok quits (~user@user/tok) (Remote host closed the connection) |
| 19:47:01 | × | danza quits (~francesco@151.35.247.107) (Remote host closed the connection) |
| 19:47:21 | → | danza joins (~francesco@151.35.247.107) |
| 19:52:25 | × | danza quits (~francesco@151.35.247.107) (Ping timeout: 245 seconds) |
| 19:56:19 | × | hosklla quits (~user@p200300f917158a00390765bd42a9c16b.dip0.t-ipconnect.de) (Remote host closed the connection) |
| 19:57:46 | → | paddymahoney joins (~paddymaho@pool-99-250-26-190.cpe.net.cable.rogers.com) |
| 19:59:44 | → | random-jellyfish joins (~developer@user/random-jellyfish) |
| 20:03:14 | × | _d0t quits (~{-d0t-}@user/-d0t-/x-7915216) (Remote host closed the connection) |
| 20:04:18 | <energizer> | if there's a type class B then it's possible to make a subclass B x => C x but is it possible to do the reverse, make a superclass B x <= A x ? |
| 20:04:48 | × | dsrt^ quits (~cd@c-98-242-74-66.hsd1.ga.comcast.net) (Remote host closed the connection) |
| 20:05:30 | → | _d0t joins (~{-d0t-}@user/-d0t-/x-7915216) |
| 20:06:01 | <ncf> | you can have a (possibly overlapping) instance A x => B x |
| 20:06:14 | <c_wraith> | energizer: no. The option that plays most nicely with Haskell's type system is to provide a default implementation of A in terms of B and give people nice tools to use that implementation quickly to create an instance of A for something that is an instance of B |
| 20:06:28 | × | paddymahoney quits (~paddymaho@pool-99-250-26-190.cpe.net.cable.rogers.com) (Ping timeout: 255 seconds) |
| 20:07:10 | <energizer> | are there any languages that have this feature? |
| 20:11:10 | <c_wraith> | I can't think of any. It's a relatively difficult feature to use. The potential for ambiguity in resolution seems really bad for predictable code. |
| 20:14:05 | ski | . o O ( "Supertyping Suggestion for Haskell" by jmeacham at <http://repetae.net/recent/out/supertyping.html> ) |
| 20:23:21 | × | raehik quits (~raehik@rdng-25-b2-v4wan-169990-cust1344.vm39.cable.virginm.net) (Quit: WeeChat 4.2.2) |
| 20:23:29 | × | _ht quits (~Thunderbi@28-52-174-82.ftth.glasoperator.nl) (Remote host closed the connection) |
| 20:24:28 | × | random-jellyfish quits (~developer@user/random-jellyfish) (Ping timeout: 255 seconds) |
| 20:25:25 | → | raehik joins (~raehik@rdng-25-b2-v4wan-169990-cust1344.vm39.cable.virginm.net) |
| 20:31:49 | → | paddymahoney joins (~paddymaho@pool-99-250-26-190.cpe.net.cable.rogers.com) |
| 20:33:17 | → | DdavizinHood joins (~davizinho@30.red-80-27-28.dynamicip.rima-tde.net) |
| 20:36:57 | <monochrom> | Something like that is usually under the name "mixin" in other languages. |
| 20:37:53 | → | random-jellyfish joins (~developer@2a02:2f04:11e:c600:ef9e:2acc:864b:e2f4) |
| 20:37:54 | × | random-jellyfish quits (~developer@2a02:2f04:11e:c600:ef9e:2acc:864b:e2f4) (Changing host) |
| 20:37:54 | → | random-jellyfish joins (~developer@user/random-jellyfish) |
| 20:37:59 | <monochrom> | But we don't have it in Haskell. It is why FAM was a change that broke backward compatibility. |
| 20:40:05 | <energizer> | i dont see how mixins do that |
| 20:40:55 | <energizer> | afaik mixins are just normal classes which you can add to your class while you're writing it, which is just the same as a normal class extension situation |
| 20:42:50 | <EvanR> | just add two classes |
| 20:43:07 | <EvanR> | is this simple addition associative and commutative |
| 20:44:05 | × | paddymahoney quits (~paddymaho@pool-99-250-26-190.cpe.net.cable.rogers.com) (Ping timeout: 245 seconds) |
| 20:45:04 | <energizer> | that works on types i write, it doesnt work on types already written |
| 20:49:46 | × | r5c4571lh01987 quits (rscastilho@179.221.142.8) (Remote host closed the connection) |
| 20:50:48 | → | paddymahoney joins (~paddymaho@pool-99-250-26-190.cpe.net.cable.rogers.com) |
| 20:51:31 | × | titibandit quits (~titibandi@user/titibandit) (Remote host closed the connection) |
| 20:58:15 | × | raehik quits (~raehik@rdng-25-b2-v4wan-169990-cust1344.vm39.cable.virginm.net) (Ping timeout: 245 seconds) |
| 21:01:44 | <juri_> | wow. stan has gained a maintainer. |
| 21:03:18 | × | DdavizinHood quits (~davizinho@30.red-80-27-28.dynamicip.rima-tde.net) (Read error: Connection reset by peer) |
| 21:04:08 | <juri_> | tomjaguarpaw: Thanks! :) |
| 21:05:28 | × | masaeedu quits (~masaeedu@user/masaeedu) (Read error: Connection reset by peer) |
| 21:05:55 | × | dyniec quits (~dyniec@dybiec.info) (Quit: WeeChat 3.8) |
| 21:06:38 | → | masaeedu joins (~masaeedu@user/masaeedu) |
| 21:07:09 | × | paddymahoney quits (~paddymaho@pool-99-250-26-190.cpe.net.cable.rogers.com) (Ping timeout: 256 seconds) |
| 21:07:27 | → | dyniec joins (~dyniec@dybiec.info) |
| 21:08:17 | → | zetef joins (~quassel@5.2.182.98) |
| 21:09:50 | <c_wraith> | energizer: My viewpoint is that a type should never implicitly be made an instance of a class. There should always be intent. In the end, it makes mistakes harder to make. |
| 21:10:14 | × | takuan quits (~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection) |
| 21:13:28 | <energizer> | c_wraith: there are two kinds of problems i can think of. one is incorrectness: i superclass a class and define some methods that depend for their correctness on some property which doesn't actually hold. this could happen in haskell because it doesnt enforce laws but a more muscular type system could solve this. the other problem is method selection ambiguity, diamond problem kinda stuff. this seems harder, i'm not sure how to make this work |
| 21:13:28 | <energizer> | automatically. |
| 21:14:01 | <c_wraith> | there's a third class, which is "I explicitly did not want this type to be an instance of that" |
| 21:15:12 | <energizer> | why would that be? |
| 21:15:43 | <c_wraith> | In general, because you are making a type for one purpose, and using it anywhere else is wrong. |
| 21:16:50 | <energizer> | what is the negative actual-consequence? |
| 21:17:02 | <c_wraith> | depends on the use case. |
| 21:17:13 | <c_wraith> | But mostly, it's about type safety |
| 21:17:47 | <c_wraith> | When you create a set of interlocking types for safety in that system, it's not ideal when someone else can *accidentally* break it. |
| 21:17:58 | <c_wraith> | It's one thing if they intentionally break it |
| 21:18:06 | <c_wraith> | But accidentally? That's entirely different |
| 21:18:15 | <energizer> | i dont see how this can happen if the laws are enforced |
| 21:18:34 | <c_wraith> | I don't see how laws are relevant. |
| 21:19:04 | <c_wraith> | "I don't want this to compile" is an orthogonal statement to "this can be made to compile in a way that follows some rules" |
| 21:19:50 | <geekosaur> | you should not be able to add two ages, and you can't describe that as a law, only as absence of (in Haskell) a Num instance |
| 21:20:09 | × | Lycurgus quits (~georg@user/Lycurgus) (Quit: leaving) |
| 21:20:21 | <energizer> | finally, an example |
| 21:20:56 | <energizer> | ok so how does adding ages accidentally happen in a world where there is superclassing |
| 21:21:43 | <c_wraith> | You say "oh, all instances of Affine can be instances of Num!" and write a superclass for that, creating an instance of Num for your Age type. |
| 21:22:05 | <c_wraith> | Making Age an instance of Affine makes perfect sense! |
| 21:23:18 | <energizer> | "all instances of Affine can be instances of Num" is that a thing? i dont know what Num is supposed to mean tbh |
| 21:23:28 | <c_wraith> | They *can* be. |
| 21:23:41 | <c_wraith> | They almost universally *shouldn't* be. |
| 21:24:27 | <energizer> | so you're telling me the laws of Num don't necessarily hold for Affine? |
| 21:24:37 | <c_wraith> | No, I'm saying it's semantically incorrect |
| 21:25:00 | <c_wraith> | You don't multiply two Times together. That's a meaningless operation. |
| 21:25:12 | <c_wraith> | You don't multiply two points together. That's a meaningless operation. |
| 21:25:32 | × | michalz quits (~michalz@185.246.207.203) (Quit: ZNC 1.8.2 - https://znc.in) |
| 21:26:57 | <EvanR> | how would automatic Num instance for all Affine even work |
| 21:27:00 | <energizer> | in haskell you can't write Affine t => Num t |
| 21:27:12 | <energizer> | so i dont see what the problem is |
| 21:27:16 | <EvanR> | how could you implement it |
| 21:27:21 | <energizer> | exactly |
| 21:27:23 | <c_wraith> | wrong question |
| 21:27:34 | <EvanR> | energizer, but you were asking earlier for this feature in haskell |
| 21:27:52 | <EvanR> | automatic superclassing |
| 21:28:05 | <c_wraith> | The correct question is "does this example demonstrate to you why someone might desire to ensure their type is not an instance of a class?" |
| 21:28:21 | <c_wraith> | Maybe it's not possible *here* |
| 21:28:27 | <c_wraith> | But you will find some place where it is |
| 21:28:34 | <energizer> | if A can't subclass B then B can't superclass A |
| 21:28:54 | × | __monty__ quits (~toonn@user/toonn) (Quit: leaving) |
| 21:29:06 | <EvanR> | also the sentiment behind the boston haskell video "typeclasses vs the world" might apply here |
| 21:29:32 | <EvanR> | which can be used to show why typeclasses should not be thought of like OOP |
| 21:30:14 | <EvanR> | because typeclass instances form an automatically coherent system |
| 21:30:20 | × | Ram-Z quits (Ram-Z@2a01:7e01::f03c:91ff:fe57:d2df) (Ping timeout: 260 seconds) |
| 21:30:51 | <EvanR> | unlike multiple inheritance |
| 21:31:55 | <monochrom> | Actually "class Affine t => Num t" does not cause any mentioned problem. It does not say "every Affine instance is a Num instance". |
| 21:32:40 | <c_wraith> | well. It says "every type is a Num instance". So it sort of does. :P |
| 21:33:18 | <monochrom> | No, I wrote "class ... Num t", not "instance ... Num t". |
| 21:33:26 | <c_wraith> | oh, right |
| 21:33:54 | <EvanR> | the feature would be like class Affine t <= Num t |
| 21:33:59 | <c_wraith> | I mistook it for fake injecting a superclass, which is done by an instance looking like that. |
| 21:34:57 | <EvanR> | given a Num instance make an Affine instance, though then the instance selection is messed up |
| 21:36:57 | → | dsrt^ joins (~cd@c-98-242-74-66.hsd1.ga.comcast.net) |
| 21:37:00 | <c_wraith> | in any case, the choice to not write an instance for a type should be something that's respected at least to the extent of requiring explicit action to add an instance to a type. |
| 21:38:27 | <tomsmeding> | what would be the goal of adding a superclass to an existing class, even if it were possible? |
| 21:38:46 | <tomsmeding> | ensure that you can use the methods of the new superclass for all types that are an instance of the existing class? |
| 21:38:53 | <energizer> | yes |
| 21:39:04 | <tomsmeding> | if that's possible, couldn't you just write those methods directly having just the existing class as context? |
| 21:39:26 | → | Ram-Z joins (Ram-Z@2a01:7e01::f03c:91ff:fe57:d2df) |
| 21:39:47 | <tomsmeding> | i.e. if the existing is B and the new is A, then instead of `class B x <= A x where foo :: ...`, just write `foo :: B x => ...` |
| 21:40:04 | <tomsmeding> | if B is enough to define foo, then, well, B is enough to define foo |
| 21:40:15 | tomsmeding | is probably missing something |
| 21:41:03 | <tomsmeding> | I guess that doesn't work if A also already exists and you insist that you want to use A's methods directly |
| 21:41:30 | <tomsmeding> | but then you aren't declaring a class, because it already existed |
| 21:41:55 | <tomsmeding> | so presumably that's not the situatino |
| 21:42:03 | × | ph88 quits (~ph88@ip5b403f30.dynamic.kabel-deutschland.de) (Quit: Leaving) |
| 21:43:34 | <energizer> | answering all the questions requires more mental context than i'm able to pull together at the moment |
| 21:44:35 | <tomsmeding> | :) |
| 21:45:17 | <monochrom> | This is why one shouldn't casually suggest a new language feature. |
| 21:45:59 | <monochrom> | This is why the sentiment "I don't need to have learned PL theory to think up a language feature, even a whole language" is dumb. |
| 21:46:38 | <tomsmeding> | I mean, you can |
| 21:46:50 | monochrom | looks at PHP |
| 21:47:05 | <tomsmeding> | You should just be ready for people criticising your choices :p |
| 21:47:14 | <tomsmeding> | Not every language needs to be well-designed |
| 21:47:32 | <monochrom> | Great sysadmin. But his attitude against PLT is stupid. And it shows. |
| 21:47:32 | <tomsmeding> | And one can learn to design languages by making mistakes |
| 21:48:36 | <monochrom> | Well that's only the difference between "learn PL theory by lazy evaluation" and "learn PL theory by eager evaluation". It is not a difference between "don't learn" and "learn". |
| 21:49:31 | <energizer> | i have thought up a language feature and had a chat about it, not sure what having learned PLT has to do with this |
| 21:50:08 | × | target_i quits (~target_i@user/target-i/x-6023099) (Quit: leaving) |
| 21:50:45 | → | paddymahoney joins (~paddymaho@pool-99-250-26-190.cpe.net.cable.rogers.com) |
| 21:51:20 | <tomsmeding> | monochrom: the most relevant difference is between "learning from a book" and "learning from people in #haskell" |
| 21:53:19 | → | demesne joins (~demesne@50.35.88.207) |
| 21:53:50 | <cheater> | is there a way to create a type such that users of my library have no way of creating a function that takes and returns that type? |
| 21:54:00 | × | ocra8 quits (ocra8@user/ocra8) (Quit: WeeChat 4.2.2) |
| 21:54:03 | × | Ram-Z quits (Ram-Z@2a01:7e01::f03c:91ff:fe57:d2df) (Quit: ZNC - http://znc.in) |
| 21:54:15 | <cheater> | like no way to write f :: MyType -> MyType |
| 21:54:21 | <dolio> | No. |
| 21:54:32 | <dolio> | Unless you don't export it or something. |
| 21:54:57 | <monochrom> | You cannot stop people writing "f = id". But you can not-export the data constructors. Make your type an abstract type. |
| 21:55:20 | × | paddymahoney quits (~paddymaho@pool-99-250-26-190.cpe.net.cable.rogers.com) (Ping timeout: 245 seconds) |
| 21:55:45 | <monochrom> | Data.Ratio is an example. |
| 21:56:17 | × | acidjnk quits (~acidjnk@p200300d6e714dc23587832274e83a4b7.dip0.t-ipconnect.de) (Ping timeout: 272 seconds) |
| 21:56:24 | → | ocra8 joins (ocra8@user/ocra8) |
| 21:56:32 | <glguy> | No, it's a *module* :) |
| 21:56:49 | → | Ram-Z joins (~Ram-Z@li1814-254.members.linode.com) |
| 21:57:35 | <cheater> | right, makes sense, no id |
| 21:57:45 | <cheater> | err well |
| 21:57:47 | <cheater> | you know what i meant. |
| 21:58:15 | <cheater> | hmm |
| 21:58:25 | <cheater> | not exporting stuff makes sense. thanks. |
| 22:01:20 | → | bilegeek joins (~bilegeek@2600:1008:b040:d1c9:9e18:85e2:b999:af86) |
| 22:05:49 | × | demesne quits (~demesne@50.35.88.207) (Remote host closed the connection) |
| 22:06:06 | → | demesne joins (~demesne@50.35.88.207) |
| 22:08:35 | × | qqq quits (~qqq@92.43.167.61) (Remote host closed the connection) |
| 22:09:30 | × | demesne quits (~demesne@50.35.88.207) (Remote host closed the connection) |
| 22:09:46 | → | demesne joins (~demesne@50.35.88.207) |
| 22:10:42 | × | demesne quits (~demesne@50.35.88.207) (Remote host closed the connection) |
| 22:11:06 | → | demesne joins (~demesne@50.35.88.207) |
| 22:15:53 | × | demesne quits (~demesne@50.35.88.207) (Remote host closed the connection) |
| 22:16:10 | × | xdminsy quits (~xdminsy@117.147.70.233) (Ping timeout: 245 seconds) |
| 22:20:31 | → | demesne joins (~demesne@50.35.88.207) |
| 22:27:10 | × | mhatta quits (~mhatta@www21123ui.sakura.ne.jp) (Remote host closed the connection) |
| 22:31:32 | × | demesne quits (~demesne@50.35.88.207) (Remote host closed the connection) |
| 22:31:57 | → | demesne joins (~demesne@50.35.88.207) |
| 22:32:25 | × | TheCoffeMaker quits (~TheCoffeM@user/thecoffemaker) (Ping timeout: 245 seconds) |
| 22:33:51 | → | TheCoffeMaker joins (~TheCoffeM@user/thecoffemaker) |
| 22:43:37 | × | demesne quits (~demesne@50.35.88.207) (Remote host closed the connection) |
| 22:46:50 | → | demesne joins (~demesne@50.35.88.207) |
| 22:46:57 | × | oo_miguel quits (~Thunderbi@78-11-181-16.static.ip.netia.com.pl) (Ping timeout: 272 seconds) |
| 22:51:29 | × | demesne quits (~demesne@50.35.88.207) (Remote host closed the connection) |
| 22:51:50 | → | demesne joins (~demesne@50.35.88.207) |
| 22:51:50 | × | demesne quits (~demesne@50.35.88.207) (Remote host closed the connection) |
| 22:52:17 | → | demesne joins (~demesne@50.35.88.207) |
| 22:59:08 | × | gmg quits (~user@user/gehmehgeh) (Quit: Leaving) |
| 22:59:32 | → | nullobject joins (~josh@user/nullobject) |
| 23:03:08 | × | zetef quits (~quassel@5.2.182.98) (Remote host closed the connection) |
| 23:04:14 | × | demesne quits (~demesne@50.35.88.207) (Remote host closed the connection) |
| 23:05:11 | × | causal quits (~eric@50.35.88.207) (Quit: WeeChat 4.1.1) |
| 23:08:42 | × | pastly quits (~pastly@gateway/tor-sasl/pastly) (Ping timeout: 260 seconds) |
| 23:11:11 | → | pastly joins (~pastly@gateway/tor-sasl/pastly) |
| 23:11:14 | → | mhatta joins (~mhatta@www21123ui.sakura.ne.jp) |
| 23:16:59 | × | phma quits (~phma@2001:5b0:210f:be8:a757:5762:40a:c4be) (Read error: Connection reset by peer) |
| 23:17:57 | → | phma joins (~phma@2001:5b0:210b:ce58:3fbf:e35b:d74c:35dc) |
| 23:22:43 | × | picnoir quits (~picnoir@about/aquilenet/vodoo/NinjaTrappeur) (Ping timeout: 256 seconds) |
| 23:35:57 | → | philopsos joins (~caecilius@user/philopsos) |
| 23:38:07 | → | raehik joins (~raehik@rdng-25-b2-v4wan-169990-cust1344.vm39.cable.virginm.net) |
| 23:39:30 | × | tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 23:45:58 | → | picnoir joins (~picnoir@about/aquilenet/vodoo/NinjaTrappeur) |
| 23:49:18 | × | stiell_ quits (~stiell@gateway/tor-sasl/stiell) (Ping timeout: 260 seconds) |
All times are in UTC on 2024-04-21.