2023-07-18 00:01:25 +0200 | bitdex | (~bitdex@gateway/tor-sasl/bitdex) |
2023-07-18 00:05:15 +0200 | alexbiehl | (~alexbiehl@2a02:8108:323f:ca14:91cb:37cc:152b:5836) |
2023-07-18 00:05:52 +0200 | hrberg | (~quassel@171.79-160-161.customer.lyse.net) (Ping timeout: 245 seconds) |
2023-07-18 00:05:59 +0200 | chiselfuse | (~chiselfus@user/chiselfuse) (Ping timeout: 240 seconds) |
2023-07-18 00:07:56 +0200 | hrberg | (~quassel@171.79-160-161.customer.lyse.net) |
2023-07-18 00:08:53 +0200 | chiselfuse | (~chiselfus@user/chiselfuse) |
2023-07-18 00:09:38 +0200 | alexbiehl | (~alexbiehl@2a02:8108:323f:ca14:91cb:37cc:152b:5836) (Ping timeout: 260 seconds) |
2023-07-18 00:10:35 +0200 | acidjnk | (~acidjnk@p200300d6e7072f770cf848d8868092f6.dip0.t-ipconnect.de) (Ping timeout: 258 seconds) |
2023-07-18 00:12:58 +0200 | __monty__ | (~toonn@user/toonn) (Quit: leaving) |
2023-07-18 00:15:41 +0200 | <sm> | and this is what tested package sets are for. Pretty simple, I don't know why people still ask about it |
2023-07-18 00:18:12 +0200 | waleee | (~waleee@2001:9b0:21c:4000:5bf9:6515:c030:57b7) (Ping timeout: 240 seconds) |
2023-07-18 00:21:35 +0200 | nick4 | (~nick@2600:100d:b126:6e75:7c64:2bc8:586e:a3ac) (Ping timeout: 264 seconds) |
2023-07-18 00:23:29 +0200 | <monochrom> | That's just "taxpayers are responsible for their own tax calculations in US and Canada" vs "government does the tax calculations for you in Hong Kong". |
2023-07-18 00:23:58 +0200 | <monochrom> | I'm from Hong Kong so I get to say "it's pretty simple, why do people make their own lives harder" too. |
2023-07-18 00:26:13 +0200 | <sm> | well, I do know. I should have said, so don't know why we as a community don't communicate this better to newcomers |
2023-07-18 00:26:43 +0200 | <sm> | s/so/I/ |
2023-07-18 00:26:52 +0200 | wroathe | (~wroathe@user/wroathe) |
2023-07-18 00:28:11 +0200 | justsomeguy | (~justsomeg@user/justsomeguy) |
2023-07-18 00:29:45 +0200 | bontaq | (~user@ool-45779b84.dyn.optonline.net) (Ping timeout: 258 seconds) |
2023-07-18 00:34:06 +0200 | Guest66 | (~Guest66@2601:14b:4101:8da0:84f2:9dc9:72ab:e343) |
2023-07-18 00:35:34 +0200 | dcoutts | (~duncan@cpc69402-oxfd27-2-0-cust903.4-3.cable.virginm.net) (Ping timeout: 272 seconds) |
2023-07-18 00:38:18 +0200 | alexbiehl | (~alexbiehl@2a02:8108:323f:ca14:91cb:37cc:152b:5836) |
2023-07-18 00:38:38 +0200 | azimut | (~azimut@gateway/tor-sasl/azimut) (Ping timeout: 240 seconds) |
2023-07-18 00:40:33 +0200 | nick4 | (~nick@2600:8807:9084:7800:5dfe:adbf:7a8a:2199) |
2023-07-18 00:43:10 +0200 | alexbiehl | (~alexbiehl@2a02:8108:323f:ca14:91cb:37cc:152b:5836) (Ping timeout: 272 seconds) |
2023-07-18 00:44:41 +0200 | Guest66 | (~Guest66@2601:14b:4101:8da0:84f2:9dc9:72ab:e343) (Ping timeout: 246 seconds) |
2023-07-18 00:45:42 +0200 | nick4 | (~nick@2600:8807:9084:7800:5dfe:adbf:7a8a:2199) (Ping timeout: 272 seconds) |
2023-07-18 00:49:34 +0200 | pavonia | (~user@user/siracusa) |
2023-07-18 00:50:08 +0200 | zmt01 | (~zmt00@user/zmt00) |
2023-07-18 00:53:55 +0200 | zmt00 | (~zmt00@user/zmt00) (Ping timeout: 240 seconds) |
2023-07-18 01:00:32 +0200 | mncheck | (~mncheck@193.224.205.254) (Ping timeout: 240 seconds) |
2023-07-18 01:00:46 +0200 | waleee | (~waleee@2001:9b0:21c:4000:5bf9:6515:c030:57b7) |
2023-07-18 01:09:51 +0200 | fweht | (uid404746@id-404746.lymington.irccloud.com) (Quit: Connection closed for inactivity) |
2023-07-18 01:12:57 +0200 | [itchyjunk] | (~itchyjunk@user/itchyjunk/x-7353470) (Remote host closed the connection) |
2023-07-18 01:13:17 +0200 | mei | (~mei@user/mei) (Ping timeout: 246 seconds) |
2023-07-18 01:16:22 +0200 | [itchyjunk] | (~itchyjunk@user/itchyjunk/x-7353470) |
2023-07-18 01:17:46 +0200 | wroathe | (~wroathe@user/wroathe) (Ping timeout: 260 seconds) |
2023-07-18 01:18:16 +0200 | mechap | (~mechap@user/mechap) (Quit: WeeChat 4.0.2) |
2023-07-18 01:22:21 +0200 | nate2 | (~nate@c-98-45-169-16.hsd1.ca.comcast.net) |
2023-07-18 01:26:24 +0200 | Tuplanolla | (~Tuplanoll@91-159-68-236.elisa-laajakaista.fi) (Quit: Leaving.) |
2023-07-18 01:27:30 +0200 | nate2 | (~nate@c-98-45-169-16.hsd1.ca.comcast.net) (Ping timeout: 272 seconds) |
2023-07-18 01:28:35 +0200 | Inst__ | (~Inst@2601:6c4:4081:2fc0:79c8:42a5:37ad:5ebf) (Remote host closed the connection) |
2023-07-18 01:28:42 +0200 | alexbiehl | (~alexbiehl@2a02:8108:323f:ca14:91cb:37cc:152b:5836) |
2023-07-18 01:28:57 +0200 | Inst__ | (~Inst@2601:6c4:4081:2fc0:79c8:42a5:37ad:5ebf) |
2023-07-18 01:31:13 +0200 | ru0mad | (~ru0mad@titan.ruomad.net) |
2023-07-18 01:32:27 +0200 | dolio | (~dolio@130.44.134.54) |
2023-07-18 01:32:52 +0200 | alexbiehl | (~alexbiehl@2a02:8108:323f:ca14:91cb:37cc:152b:5836) (Ping timeout: 245 seconds) |
2023-07-18 01:33:00 +0200 | Inst__ | (~Inst@2601:6c4:4081:2fc0:79c8:42a5:37ad:5ebf) (Remote host closed the connection) |
2023-07-18 01:33:24 +0200 | Inst__ | (~Inst@2601:6c4:4081:2fc0:79c8:42a5:37ad:5ebf) |
2023-07-18 01:38:41 +0200 | mauke_ | (~mauke@user/mauke) |
2023-07-18 01:40:10 +0200 | ru0mad | (~ru0mad@titan.ruomad.net) (Ping timeout: 272 seconds) |
2023-07-18 01:40:17 +0200 | mauke | (~mauke@user/mauke) (Ping timeout: 258 seconds) |
2023-07-18 01:40:17 +0200 | mauke_ | mauke |
2023-07-18 01:41:17 +0200 | Inst__ | (~Inst@2601:6c4:4081:2fc0:79c8:42a5:37ad:5ebf) (Remote host closed the connection) |
2023-07-18 01:41:39 +0200 | Inst__ | (~Inst@2601:6c4:4081:2fc0:79c8:42a5:37ad:5ebf) |
2023-07-18 01:43:53 +0200 | alexbiehl | (~alexbiehl@2a02:8108:323f:c964:c8b9:341:c65c:41d0) |
2023-07-18 01:45:50 +0200 | bratwurst | (~dfadsva@2604:3d09:207f:f650::c680) (Ping timeout: 246 seconds) |
2023-07-18 01:45:52 +0200 | cheater | (~Username@user/cheater) (Ping timeout: 272 seconds) |
2023-07-18 01:47:03 +0200 | Feuermagier | (~Feuermagi@user/feuermagier) |
2023-07-18 01:47:05 +0200 | waleee | (~waleee@2001:9b0:21c:4000:5bf9:6515:c030:57b7) (Ping timeout: 246 seconds) |
2023-07-18 01:48:37 +0200 | gurkenglas | (~gurkengla@dynamic-046-114-180-206.46.114.pool.telefonica.de) (Read error: Connection reset by peer) |
2023-07-18 01:48:43 +0200 | cheater | (~Username@user/cheater) |
2023-07-18 01:49:52 +0200 | alexbiehl | (~alexbiehl@2a02:8108:323f:c964:c8b9:341:c65c:41d0) (Ping timeout: 240 seconds) |
2023-07-18 01:51:28 +0200 | waleee | (~waleee@h-176-10-137-138.NA.cust.bahnhof.se) |
2023-07-18 01:54:35 +0200 | Inst__ | (~Inst@2601:6c4:4081:2fc0:79c8:42a5:37ad:5ebf) (Remote host closed the connection) |
2023-07-18 01:54:58 +0200 | Inst__ | (~Inst@2601:6c4:4081:2fc0:79c8:42a5:37ad:5ebf) |
2023-07-18 01:56:33 +0200 | Unicorn_Princess | (~Unicorn_P@user/Unicorn-Princess/x-3540542) (Remote host closed the connection) |
2023-07-18 01:56:50 +0200 | mechap | (~mechap@user/mechap) |
2023-07-18 02:03:24 +0200 | califax | (~califax@user/califx) (Remote host closed the connection) |
2023-07-18 02:12:59 +0200 | machinedgod | (~machinedg@d198-53-218-113.abhsia.telus.net) (Quit: Lost terminal) |
2023-07-18 02:13:46 +0200 | chiselfuse | (~chiselfus@user/chiselfuse) (Remote host closed the connection) |
2023-07-18 02:14:21 +0200 | califax | (~califax@user/califx) |
2023-07-18 02:14:28 +0200 | chiselfuse | (~chiselfus@user/chiselfuse) |
2023-07-18 02:17:15 +0200 | alexbiehl | (~alexbiehl@2a02:8108:323f:c964:c8b9:341:c65c:41d0) |
2023-07-18 02:19:14 +0200 | machinedgod | (~machinedg@d198-53-218-113.abhsia.telus.net) |
2023-07-18 02:19:31 +0200 | ru0mad | (~ru0mad@82-64-17-144.subs.proxad.net) |
2023-07-18 02:21:03 +0200 | califax_ | (~califax@user/califx) |
2023-07-18 02:21:41 +0200 | alexbiehl | (~alexbiehl@2a02:8108:323f:c964:c8b9:341:c65c:41d0) (Ping timeout: 258 seconds) |
2023-07-18 02:22:51 +0200 | califax | (~califax@user/califx) (Remote host closed the connection) |
2023-07-18 02:22:52 +0200 | califax_ | califax |
2023-07-18 02:23:51 +0200 | gnalzo | (~gnalzo@2a01:e0a:498:fd50:fcc6:bb5d:489a:ce8c) (Quit: WeeChat 4.0.1) |
2023-07-18 02:24:35 +0200 | machinedgod | (~machinedg@d198-53-218-113.abhsia.telus.net) (Ping timeout: 264 seconds) |
2023-07-18 02:25:45 +0200 | Inst__ | (~Inst@2601:6c4:4081:2fc0:79c8:42a5:37ad:5ebf) (Remote host closed the connection) |
2023-07-18 02:26:04 +0200 | machinedgod | (~machinedg@d198-53-218-113.abhsia.telus.net) |
2023-07-18 02:26:09 +0200 | Inst__ | (~Inst@2601:6c4:4081:2fc0:79c8:42a5:37ad:5ebf) |
2023-07-18 02:26:44 +0200 | ru0mad | (~ru0mad@82-64-17-144.subs.proxad.net) (Quit: leaving) |
2023-07-18 02:27:52 +0200 | ru0mad | (~ru0mad@82-64-17-144.subs.proxad.net) |
2023-07-18 02:31:11 +0200 | mechap | (~mechap@user/mechap) (Ping timeout: 246 seconds) |
2023-07-18 02:31:39 +0200 | leungbk | (~user@2603-8000-1201-2dd2-36ab-a543-68a1-6b50.res6.spectrum.com) |
2023-07-18 02:32:09 +0200 | mechap | (~mechap@user/mechap) |
2023-07-18 02:36:22 +0200 | nyc | (~nyc@user/nyc) |
2023-07-18 02:36:55 +0200 | picklejuice | (~root@172.56.218.140) (Ping timeout: 240 seconds) |
2023-07-18 02:38:38 +0200 | picklejuice | (~root@172.56.220.204) |
2023-07-18 02:42:02 +0200 | infinity0 | (~infinity0@pwned.gg) (Ping timeout: 245 seconds) |
2023-07-18 02:43:33 +0200 | infinity0 | (~infinity0@pwned.gg) |
2023-07-18 02:43:35 +0200 | Inst__ | (~Inst@2601:6c4:4081:2fc0:79c8:42a5:37ad:5ebf) (Remote host closed the connection) |
2023-07-18 02:43:38 +0200 | mechap | (~mechap@user/mechap) (Ping timeout: 260 seconds) |
2023-07-18 02:44:33 +0200 | pickleju1ce | (~root@c-73-196-164-60.hsd1.nj.comcast.net) |
2023-07-18 02:45:25 +0200 | Inst__ | (~Inst@2601:6c4:4081:2fc0:79c8:42a5:37ad:5ebf) |
2023-07-18 02:45:27 +0200 | mechap | (~mechap@user/mechap) |
2023-07-18 02:47:05 +0200 | eggplantade | (~Eggplanta@104-55-37-220.lightspeed.sntcca.sbcglobal.net) |
2023-07-18 02:47:47 +0200 | infinity0 | (~infinity0@pwned.gg) (Remote host closed the connection) |
2023-07-18 02:47:56 +0200 | thegeekinside | (~thegeekin@189.217.90.138) (Ping timeout: 272 seconds) |
2023-07-18 02:48:08 +0200 | picklejuice | (~root@172.56.220.204) (Ping timeout: 246 seconds) |
2023-07-18 02:50:42 +0200 | thegeekinside | (~thegeekin@189.217.90.138) |
2023-07-18 02:51:14 +0200 | infinity0 | (~infinity0@pwned.gg) |
2023-07-18 02:51:17 +0200 | eggplantade | (~Eggplanta@104-55-37-220.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 246 seconds) |
2023-07-18 02:59:12 +0200 | Inst__ | (~Inst@2601:6c4:4081:2fc0:79c8:42a5:37ad:5ebf) (Remote host closed the connection) |
2023-07-18 02:59:15 +0200 | wroathe | (~wroathe@207-153-38-140.fttp.usinternet.com) |
2023-07-18 02:59:15 +0200 | wroathe | (~wroathe@207-153-38-140.fttp.usinternet.com) (Changing host) |
2023-07-18 02:59:15 +0200 | wroathe | (~wroathe@user/wroathe) |
2023-07-18 02:59:55 +0200 | emmanuelux | (~emmanuelu@user/emmanuelux) (Quit: au revoir) |
2023-07-18 03:00:12 +0200 | arahael_ | (~arahael@1.145.35.206) |
2023-07-18 03:01:17 +0200 | infinity0 | (~infinity0@pwned.gg) (Remote host closed the connection) |
2023-07-18 03:01:22 +0200 | Inst__ | (~Inst@2601:6c4:4081:2fc0:79c8:42a5:37ad:5ebf) |
2023-07-18 03:02:00 +0200 | alexbiehl | (~alexbiehl@2a02:8108:323f:c964:c8b9:341:c65c:41d0) |
2023-07-18 03:03:23 +0200 | infinity0 | (~infinity0@pwned.gg) |
2023-07-18 03:05:34 +0200 | arizona | (~arizona@bcdcac82.skybroadband.com) (Ping timeout: 260 seconds) |
2023-07-18 03:06:16 +0200 | arahael_ | (~arahael@1.145.35.206) (Ping timeout: 245 seconds) |
2023-07-18 03:06:30 +0200 | alexbiehl | (~alexbiehl@2a02:8108:323f:c964:c8b9:341:c65c:41d0) (Ping timeout: 260 seconds) |
2023-07-18 03:08:15 +0200 | razetime | (~quassel@117.193.5.43) |
2023-07-18 03:10:04 +0200 | bilegeek | (~bilegeek@2600:1008:b021:9e23:6101:8bf4:489c:4627) |
2023-07-18 03:10:43 +0200 | arizona | (~arizona@bcdcac82.skybroadband.com) |
2023-07-18 03:10:57 +0200 | albet70 | (~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection) |
2023-07-18 03:11:58 +0200 | Inst__ | (~Inst@2601:6c4:4081:2fc0:79c8:42a5:37ad:5ebf) (Remote host closed the connection) |
2023-07-18 03:17:04 +0200 | albet70 | (~xxx@2400:8902::f03c:92ff:fe60:98d8) |
2023-07-18 03:17:27 +0200 | Inst | (~Inst@2601:6c4:4081:2fc0:79c8:42a5:37ad:5ebf) |
2023-07-18 03:18:27 +0200 | dibblego | (~dibblego@116-255-1-151.ip4.superloop.au) |
2023-07-18 03:18:27 +0200 | dibblego | (~dibblego@116-255-1-151.ip4.superloop.au) (Changing host) |
2023-07-18 03:18:27 +0200 | dibblego | (~dibblego@haskell/developer/dibblego) |
2023-07-18 03:21:35 +0200 | shapr | (~user@2600:1700:c640:3100:52c3:290a:8adb:cc55) (Ping timeout: 246 seconds) |
2023-07-18 03:26:39 +0200 | Inst | (~Inst@2601:6c4:4081:2fc0:79c8:42a5:37ad:5ebf) (Remote host closed the connection) |
2023-07-18 03:28:42 +0200 | Inst | (~Inst@2601:6c4:4081:2fc0:79c8:42a5:37ad:5ebf) |
2023-07-18 03:32:41 +0200 | alexbiehl | (~alexbiehl@2a02:8108:323f:c964:c8b9:341:c65c:41d0) |
2023-07-18 03:32:45 +0200 | tabemann | (~tabemann@2600:1700:7990:24e0:fde3:7ca7:a0b6:2269) (Remote host closed the connection) |
2023-07-18 03:32:56 +0200 | tabemann | (~travisb@2600:1700:7990:24e0:5306:cf38:acd1:737c) |
2023-07-18 03:32:56 +0200 | ft | (~ft@p508dbe50.dip0.t-ipconnect.de) (Ping timeout: 246 seconds) |
2023-07-18 03:34:58 +0200 | ft | (~ft@p3e9bc856.dip0.t-ipconnect.de) |
2023-07-18 03:39:07 +0200 | alexbiehl | (~alexbiehl@2a02:8108:323f:c964:c8b9:341:c65c:41d0) (Ping timeout: 245 seconds) |
2023-07-18 03:41:54 +0200 | Guest585 | (~mike@user/feetwind) (Quit: WeeChat 3.1) |
2023-07-18 03:42:05 +0200 | feetwind | (~mike@user/feetwind) |
2023-07-18 03:43:12 +0200 | Inst | (~Inst@2601:6c4:4081:2fc0:79c8:42a5:37ad:5ebf) (Remote host closed the connection) |
2023-07-18 03:43:34 +0200 | Inst | (~Inst@2601:6c4:4081:2fc0:79c8:42a5:37ad:5ebf) |
2023-07-18 03:44:44 +0200 | Feuermagier | (~Feuermagi@user/feuermagier) (Quit: Leaving) |
2023-07-18 03:55:24 +0200 | [itchyjunk] | [notItchy] |
2023-07-18 03:56:25 +0200 | Guest3849 | (~user@76.133.152.122) |
2023-07-18 03:57:02 +0200 | waleee | (~waleee@h-176-10-137-138.NA.cust.bahnhof.se) (Ping timeout: 245 seconds) |
2023-07-18 03:57:47 +0200 | Inst | (~Inst@2601:6c4:4081:2fc0:79c8:42a5:37ad:5ebf) (Remote host closed the connection) |
2023-07-18 03:58:11 +0200 | Inst | (~Inst@2601:6c4:4081:2fc0:79c8:42a5:37ad:5ebf) |
2023-07-18 04:06:41 +0200 | eggplantade | (~Eggplanta@104-55-37-220.lightspeed.sntcca.sbcglobal.net) |
2023-07-18 04:07:11 +0200 | leungbk | (~user@2603-8000-1201-2dd2-36ab-a543-68a1-6b50.res6.spectrum.com) (Remote host closed the connection) |
2023-07-18 04:07:43 +0200 | Guest77 | (~Guest77@122.11.166.8) |
2023-07-18 04:14:28 +0200 | phma | (phma@2001:5b0:210b:e378:ed22:f5d0:8c20:185c) (Read error: Connection reset by peer) |
2023-07-18 04:14:52 +0200 | phma | (phma@2001:5b0:210b:e378:cbed:ddba:6ef2:8029) |
2023-07-18 04:15:25 +0200 | nate2 | (~nate@c-98-45-169-16.hsd1.ca.comcast.net) |
2023-07-18 04:16:41 +0200 | machinedgod | (~machinedg@d198-53-218-113.abhsia.telus.net) (Ping timeout: 245 seconds) |
2023-07-18 04:24:45 +0200 | finn_elija | (~finn_elij@user/finn-elija/x-0085643) |
2023-07-18 04:24:45 +0200 | FinnElija | (~finn_elij@user/finn-elija/x-0085643) (Killed (NickServ (Forcing logout FinnElija -> finn_elija))) |
2023-07-18 04:24:45 +0200 | finn_elija | FinnElija |
2023-07-18 04:25:55 +0200 | alexbiehl | (~alexbiehl@2a02:8108:323f:c964:c8b9:341:c65c:41d0) |
2023-07-18 04:28:02 +0200 | phma | (phma@2001:5b0:210b:e378:cbed:ddba:6ef2:8029) (Read error: Connection reset by peer) |
2023-07-18 04:28:26 +0200 | phma | (~phma@host-67-44-208-43.hnremote.net) |
2023-07-18 04:28:38 +0200 | td_ | (~td@i53870921.versanet.de) (Ping timeout: 272 seconds) |
2023-07-18 04:29:29 +0200 | Inst | (~Inst@2601:6c4:4081:2fc0:79c8:42a5:37ad:5ebf) (Ping timeout: 246 seconds) |
2023-07-18 04:29:35 +0200 | Inst_ | (~Inst@2601:6c4:4081:2fc0:1c30:3af5:9430:2bcf) |
2023-07-18 04:30:02 +0200 | td_ | (~td@i53870919.versanet.de) |
2023-07-18 04:30:30 +0200 | alexbiehl | (~alexbiehl@2a02:8108:323f:c964:c8b9:341:c65c:41d0) (Ping timeout: 260 seconds) |
2023-07-18 04:35:20 +0200 | Guest77 | (~Guest77@122.11.166.8) (Ping timeout: 246 seconds) |
2023-07-18 04:35:47 +0200 | ddellacosta | (~ddellacos@143.244.47.68) (Ping timeout: 246 seconds) |
2023-07-18 04:36:31 +0200 | <maerwald> | so Hong Kong prefers stack? |
2023-07-18 04:38:46 +0200 | <maerwald> | I'm ok with tested package sets (at least a core) ...but stack makes it extra hard to use packages outside that set. That's why we need better cabal support for stackage. |
2023-07-18 04:40:18 +0200 | ddellacosta | (~ddellacos@143.244.47.81) |
2023-07-18 04:41:06 +0200 | <sclv> | remote project files are most of the way there imho |
2023-07-18 04:49:14 +0200 | <maerwald> | sclv: still can't override stuff like in stack |
2023-07-18 04:49:42 +0200 | <sclv> | right. that’s important future work |
2023-07-18 04:51:12 +0200 | <maerwald> | I kept annoying duncan about it a couple times, but apart from "it's easy" I didn't get much out of him (wrt constraint algebra) |
2023-07-18 04:56:57 +0200 | <hololeap> | are there any "piping" libraries that also support Control.Arrow? |
2023-07-18 04:57:02 +0200 | [notItchy] | (~itchyjunk@user/itchyjunk/x-7353470) (Remote host closed the connection) |
2023-07-18 04:57:25 +0200 | foul_owl | (~kerry@157.97.134.168) (Read error: Connection reset by peer) |
2023-07-18 04:58:00 +0200 | alexbiehl | (~alexbiehl@2a02:8108:323f:c964:c8b9:341:c65c:41d0) |
2023-07-18 04:58:27 +0200 | <hololeap> | s/also / |
2023-07-18 05:00:25 +0200 | <hololeap> | I asked in here recently about splitting an input conduit into two separate conduits and recombining their results at the end |
2023-07-18 05:00:38 +0200 | <hololeap> | and it didn't sound like it was possible |
2023-07-18 05:02:23 +0200 | alexbiehl | (~alexbiehl@2a02:8108:323f:c964:c8b9:341:c65c:41d0) (Ping timeout: 246 seconds) |
2023-07-18 05:04:46 +0200 | <fvr> | hololeap: I know it's possible to do with the streamly library (tee function in streamly-core) but I am not familiar enough with conduit library |
2023-07-18 05:05:15 +0200 | <hololeap> | thanks fvr I'm just looking for places to look |
2023-07-18 05:05:38 +0200 | <hololeap> | I haven't looked into streamly |
2023-07-18 05:05:48 +0200 | <hololeap> | although I've heard a lot of good things |
2023-07-18 05:10:12 +0200 | <maerwald> | hololeap: I made a migration guide for conduit to streamly |
2023-07-18 05:10:15 +0200 | <maerwald> | https://hasufell.github.io/posts/2021-10-22-conduit-to-streamly.html |
2023-07-18 05:10:16 +0200 | <maerwald> | but... |
2023-07-18 05:10:27 +0200 | <maerwald> | the main problem with streamly is that API breaks too fast too often |
2023-07-18 05:10:35 +0200 | <maerwald> | otherwise I think it's superior to all others |
2023-07-18 05:11:03 +0200 | <maerwald> | so my blog post code will likely not compile with streamly-0.9.x anymore, which proves my point |
2023-07-18 05:11:40 +0200 | <maerwald> | I don't understand why people constantly break API... like, do you get new ideas every few months? |
2023-07-18 05:12:33 +0200 | <fvr> | The upgrade was due to happen for a long time, besides I think it's considered okay to break Internal |
2023-07-18 05:12:41 +0200 | <fvr> | There's an upgrade guide https://streamly.composewell.com/streamly-0.9.0/User/ProjectRelated/Upgrading.html |
2023-07-18 05:13:21 +0200 | <maerwald> | no, it's not ok to break internal and the *entire* Streamly prelude was deprecated and exported symbols removed (non-internal) |
2023-07-18 05:13:35 +0200 | <maerwald> | I stopped bothering and added <0.9 |
2023-07-18 05:13:38 +0200 | <fvr> | yeah but this was in 0.9 a breaking release anyway |
2023-07-18 05:14:46 +0200 | <fvr> | I haven't upgraded to 0.9 yet, so don't know how much of a chore it is |
2023-07-18 05:14:57 +0200 | <maerwald> | if you use Parsers, everything is broken |
2023-07-18 05:15:46 +0200 | <maerwald> | so... I'm now wondering whether it's a good idea to rely on streamly in a professional setting, where the cost of upgrading is not low |
2023-07-18 05:17:14 +0200 | <fvr> | Parser was always in Internal though, so the project thinks it's okay to move them around |
2023-07-18 05:17:42 +0200 | <maerwald> | yeah, except you can't use streamly for anything serious if you're only using nonn-internal API |
2023-07-18 05:18:03 +0200 | <maerwald> | because it's a huge WIP package |
2023-07-18 05:18:07 +0200 | <fvr> | yeah, but now in streamly-core 0.1 it is exported from non Internal |
2023-07-18 05:18:29 +0200 | <fvr> | Streamly.Data.Parser, so perhaps just renaming the import and still importing the Internal version just works |
2023-07-18 05:19:13 +0200 | <hololeap> | maerwald: I will check out your guide, thanks |
2023-07-18 05:19:18 +0200 | nate2 | (~nate@c-98-45-169-16.hsd1.ca.comcast.net) (Ping timeout: 272 seconds) |
2023-07-18 05:19:27 +0200 | <hololeap> | seems like it would be really informative for me |
2023-07-18 05:25:39 +0200 | <jackdk> | This is why I just stick with `streaming`, which seems like the right balance between "does what I need", "fits into my head", and "doesn't break the universe all the time" |
2023-07-18 05:29:33 +0200 | <fvr> | streaming also provides stream of streams which no other popular streaming library does correctly |
2023-07-18 05:30:50 +0200 | alexbiehl | (~alexbiehl@2a02:8108:323f:c964:c8b9:341:c65c:41d0) |
2023-07-18 05:35:05 +0200 | alexbiehl | (~alexbiehl@2a02:8108:323f:c964:c8b9:341:c65c:41d0) (Ping timeout: 246 seconds) |
2023-07-18 05:38:52 +0200 | <hololeap> | that sounds like what I want then :) |
2023-07-18 05:39:05 +0200 | foul_owl | (~kerry@71.212.137.212) |
2023-07-18 05:41:05 +0200 | phma | (~phma@host-67-44-208-43.hnremote.net) (Read error: Connection reset by peer) |
2023-07-18 05:41:30 +0200 | phma | (phma@2001:5b0:210b:e378:cbed:ddba:6ef2:8029) |
2023-07-18 05:44:38 +0200 | foul_owl | (~kerry@71.212.137.212) (Ping timeout: 272 seconds) |
2023-07-18 05:46:13 +0200 | <sm> | I don't want to keep banging on about stack and cabal but.. how does stack make it extra hard to use packages outside that set maerwald ? I'm used to adding such packages in stack.yaml extra-deps, or just as extra arguments to stack install |
2023-07-18 05:46:43 +0200 | <sm> | or as extra items in the packages list |
2023-07-18 05:47:14 +0200 | <sclv> | we don't need a constraint algebra -- there's a much simpler proposal for how overrides work on the table. its just that nobody has time to implement it. |
2023-07-18 05:48:48 +0200 | <sclv> | sm: one issue as i understand it is the regression with regards to being able to use the solver -- before you could solve for what version of an extra package to add (a feature you get automatically when using the project imports style from cabal). but as of some years ago the solver support was bitrotted and then removed, so the user has to figure out by some other means what version is compatible before they can add it. |
2023-07-18 05:50:08 +0200 | <maerwald> | sm: yes, stack doesn't have a solver, so it knows nothing of which version to suggest when it's not in the stackage set |
2023-07-18 05:50:10 +0200 | <sm> | sclv: stack dropped cabal's solver I know, alas, but I wouldn't say that makes it hard to use packages outside the snapshot. |
2023-07-18 05:50:15 +0200 | <maerwald> | it does |
2023-07-18 05:50:19 +0200 | <maerwald> | it keeps going in circles |
2023-07-18 05:50:42 +0200 | <maerwald> | it says add "foo-0.9" then you do and 5 suggestions later it says "now add foo-0.8" |
2023-07-18 05:50:47 +0200 | <sm> | it means it's not trying to do everything under the sun, and recognising cabal is good at that |
2023-07-18 05:50:49 +0200 | <maerwald> | that's because it doesn't know better |
2023-07-18 05:50:58 +0200 | <maerwald> | and that's a serious usability issue |
2023-07-18 05:51:48 +0200 | wroathe | (~wroathe@user/wroathe) (Ping timeout: 250 seconds) |
2023-07-18 05:53:45 +0200 | <sm> | maerwald: I think you are thinking of a case where constructing your own extra-snapshot install plan is hard with stack. There are obviously lots of cases like that, and lots where going outside the snapshot with a package or two is trivially easy. Personally, I would not say "stack makes going outside the package set hard", because that can give new users a wrong idea. I'd say it makes it easy. And, then it's up to you to find a good install plan. |
2023-07-18 05:54:43 +0200 | <maerwald> | look, if someone would pay me and say "pick stack or cabal and make it better", I'd pick stack and re-integrate a solver, rip out all the insane defaults and integrate it with ghcup properly... because I think stack has the better codebase |
2023-07-18 05:55:08 +0200 | <maerwald> | but it's probably much more work than just enhancing what's left in cabal |
2023-07-18 05:55:21 +0200 | <maerwald> | especially wrt backpack and multilib |
2023-07-18 05:56:43 +0200 | <maerwald> | sm: I've had recurring issues with stack in maybe 75% of the cases when trying to go outside the set |
2023-07-18 05:56:51 +0200 | <maerwald> | in private and professional setting |
2023-07-18 05:57:16 +0200 | foul_owl | (~kerry@157.97.134.168) |
2023-07-18 05:57:24 +0200 | <sm> | that doesn't conflict with what I said at all. I am just trying to see each tool accurately described |
2023-07-18 05:57:30 +0200 | <sm> | then we can make better choices |
2023-07-18 05:58:05 +0200 | <sm> | new users can, in particular, use whichever is easier for them |
2023-07-18 05:58:35 +0200 | <maerwald> | depends what type of choice... using something or contributing to something |
2023-07-18 05:58:41 +0200 | <sm> | and not feel stupid for not knowing the current cabal lore / latest constraints breakage |
2023-07-18 05:59:01 +0200 | aforemny_ | (~aforemny@i59F516E9.versanet.de) |
2023-07-18 05:59:54 +0200 | <maerwald> | open source has weird dynamics |
2023-07-18 05:59:55 +0200 | aforemny | (~aforemny@i59F516E8.versanet.de) (Ping timeout: 240 seconds) |
2023-07-18 06:00:20 +0200 | <maerwald> | sometimes, the worst codebase survives (e.g. X0rg) |
2023-07-18 06:10:49 +0200 | _ht | (~Thunderbi@28-52-174-82.ftth.glasoperator.nl) |
2023-07-18 06:11:14 +0200 | razetime | (~quassel@117.193.5.43) (Ping timeout: 272 seconds) |
2023-07-18 06:12:23 +0200 | zmt01 | (~zmt00@user/zmt00) (Ping timeout: 246 seconds) |
2023-07-18 06:16:13 +0200 | neuroevolutus | (~neuroevol@2001:ac8:9a:76::1e) |
2023-07-18 06:16:48 +0200 | neuroevolutus | (~neuroevol@2001:ac8:9a:76::1e) (Client Quit) |
2023-07-18 06:18:44 +0200 | oneeyedalien | (~oneeyedal@user/oneeyedalien) |
2023-07-18 06:20:40 +0200 | alexbiehl | (~alexbiehl@2a02:8108:323f:c964:c8b9:341:c65c:41d0) |
2023-07-18 06:21:53 +0200 | biberu | (~biberu@user/biberu) (Read error: Connection reset by peer) |
2023-07-18 06:24:57 +0200 | alexbiehl | (~alexbiehl@2a02:8108:323f:c964:c8b9:341:c65c:41d0) (Ping timeout: 245 seconds) |
2023-07-18 06:27:33 +0200 | biberu | (~biberu@user/biberu) |
2023-07-18 06:42:59 +0200 | misterfish | (~misterfis@84-53-85-146.bbserv.nl) |
2023-07-18 06:49:57 +0200 | notzmv | (~zmv@user/notzmv) |
2023-07-18 06:50:12 +0200 | razetime | (~quassel@117.193.5.43) |
2023-07-18 06:52:57 +0200 | alexbiehl | (~alexbiehl@2a02:8108:323f:c964:c8b9:341:c65c:41d0) |
2023-07-18 06:56:50 +0200 | razetime | (~quassel@117.193.5.43) (Ping timeout: 272 seconds) |
2023-07-18 06:57:11 +0200 | alexbiehl | (~alexbiehl@2a02:8108:323f:c964:c8b9:341:c65c:41d0) (Ping timeout: 246 seconds) |
2023-07-18 06:58:02 +0200 | oneeyedalien | (~oneeyedal@user/oneeyedalien) (Quit: Leaving) |
2023-07-18 07:09:00 +0200 | <glguy> | After working on a number of parsing and pretty printing projects I'm starting to think that putting comments in the lexical syntax isn't so great. It makes comments hard to preserve and emit. In JSON contexts it's common to work around that by ignoring table keys with the name "comment" , for example. I used to think that was kind of a hack, but I'm starting to think it's actually rather superior |
2023-07-18 07:09:01 +0200 | <glguy> | to regular comments. I wonder if others have thought about this |
2023-07-18 07:10:02 +0200 | <Axman6> | Sounds a wee bit like Stockholm syndrome to me :P |
2023-07-18 07:11:50 +0200 | michalz | (~michalz@185.246.207.217) |
2023-07-18 07:15:59 +0200 | bilegeek | (~bilegeek@2600:1008:b021:9e23:6101:8bf4:489c:4627) (Quit: Leaving) |
2023-07-18 07:20:32 +0200 | <davean> | glguy: because its slightly less options? I'm not quite seeing what the win here is. |
2023-07-18 07:21:19 +0200 | mei | (~mei@user/mei) |
2023-07-18 07:23:17 +0200 | <glguy> | It gives the comment a specific anchor into the syntax, like how we use haddock comments with | and ^ |
2023-07-18 07:24:16 +0200 | <glguy> | In Haskell we've kind of extended comments into the syntax that way. There are specific points that a haddock comment is defined to attach to syntax |
2023-07-18 07:25:38 +0200 | <glguy> | davean: I think it's more about clarity about what the comment is attached to rather than just fewer options |
2023-07-18 07:27:55 +0200 | <glguy> | Comments get used for a couple different things. Documentation, but also just disabling something without having to delete it. We often use the same mechanism for both things, but that might not be ideal |
2023-07-18 07:30:04 +0200 | arahael_ | (~arahael@115-64-199-191.tpgi.com.au) |
2023-07-18 07:34:30 +0200 | arahael_ | (~arahael@115-64-199-191.tpgi.com.au) (Ping timeout: 246 seconds) |
2023-07-18 07:35:52 +0200 | <jackdk> | glguy: what if you approach the problem from another direction, and designed the language so you could attach first-class metadata to more things? |
2023-07-18 07:38:03 +0200 | alexbiehl | (~alexbiehl@2a02:8108:323f:c964:c8b9:341:c65c:41d0) |
2023-07-18 07:39:54 +0200 | trev | (~trev@user/trev) |
2023-07-18 07:39:57 +0200 | <glguy> | Yeah, seems interesting. Do you know of any examples? A really basic version of this is probably Python using an in-language string literal for its function documentation. Allowing extensible annotations to be added across the ast could be neat |
2023-07-18 07:40:57 +0200 | <jackdk> | I have dim memories of clojure doing this: https://clojure.org/reference/metadata but I would also like to be able to attach and retrieve metadata on declarations and expressions rather than just vars. But maybe that locks you into having access to the syntax tree at all times? |
2023-07-18 07:41:46 +0200 | _ht | (~Thunderbi@28-52-174-82.ftth.glasoperator.nl) (Quit: _ht) |
2023-07-18 07:42:12 +0200 | alexbiehl | (~alexbiehl@2a02:8108:323f:c964:c8b9:341:c65c:41d0) (Ping timeout: 246 seconds) |
2023-07-18 07:47:10 +0200 | mncheck | (~mncheck@193.224.205.254) |
2023-07-18 07:50:34 +0200 | Fischmiep | (~Fischmiep@user/Fischmiep) (Ping timeout: 252 seconds) |
2023-07-18 07:50:51 +0200 | arahael_ | (~arahael@115-64-199-191.tpgi.com.au) |
2023-07-18 07:51:49 +0200 | <siraben> | How can I get cabal repl to work but I get the following error? |
2023-07-18 07:51:49 +0200 | <siraben> | <command line>: User-specified static library could not be loaded (/nix/store/hzcc9rw3mifk14zfj1hx8yxkfrcb5zyy-clang-wrapper-11.1.0/bin/c++) |
2023-07-18 07:51:49 +0200 | <siraben> | Loading static libraries is not supported in this configuration. |
2023-07-18 07:51:49 +0200 | <siraben> | Try using a dynamic library instead. |
2023-07-18 07:52:07 +0200 | <siraben> | This is the flake.nix: <command line>: User-specified static library could not be loaded (/nix/store/hzcc9rw3mifk14zfj1hx8yxkfrcb5zyy-clang-wrapper-11.1.0/bin/c++) |
2023-07-18 07:52:07 +0200 | <siraben> | Loading static libraries is not supported in this configuration. |
2023-07-18 07:52:07 +0200 | <siraben> | Try using a dynamic library instead. |
2023-07-18 07:52:12 +0200 | <siraben> | Oops, https://github.com/ethereum/hevm/blob/main/flake.nix |
2023-07-18 07:52:26 +0200 | <maerwald[m]> | Oh well, nix |
2023-07-18 07:52:28 +0200 | <siraben> | I think I have to pass some compiler flag, I'm on macOS. |
2023-07-18 07:52:36 +0200 | <siraben> | Maybe this question is better suited for the Nix haskell channel |
2023-07-18 07:52:47 +0200 | <siraben> | But I've encountered this issue before even without Nix |
2023-07-18 07:55:05 +0200 | arahael_ | (~arahael@115-64-199-191.tpgi.com.au) (Ping timeout: 246 seconds) |
2023-07-18 07:55:22 +0200 | Fischmiep | (~Fischmiep@user/Fischmiep) |
2023-07-18 07:55:22 +0200 | Fischmiep | (~Fischmiep@user/Fischmiep) (Excess Flood) |
2023-07-18 07:56:01 +0200 | <jackdk> | There are a lot of static-related things being plumbed into hevmUnwrapped, which might be what's blocking you. |
2023-07-18 07:56:20 +0200 | Fischmiep | (~Fischmiep@user/Fischmiep) |
2023-07-18 07:59:45 +0200 | oneeyedalien | (~oneeyedal@user/oneeyedalien) |
2023-07-18 08:01:16 +0200 | codaraxis__ | (~codaraxis@user/codaraxis) |
2023-07-18 08:04:47 +0200 | codaraxis | (~codaraxis@user/codaraxis) (Ping timeout: 264 seconds) |
2023-07-18 08:06:18 +0200 | Sgeo | (~Sgeo@user/sgeo) (Ping timeout: 258 seconds) |
2023-07-18 08:11:55 +0200 | alexbiehl | (~alexbiehl@2a02:8108:323f:c964:c8b9:341:c65c:41d0) |
2023-07-18 08:13:59 +0200 | mauke | (~mauke@user/mauke) (Ping timeout: 246 seconds) |
2023-07-18 08:15:02 +0200 | mizlan | (~mizlan@c-174-62-68-33.hsd1.ca.comcast.net) (Ping timeout: 246 seconds) |
2023-07-18 08:15:47 +0200 | <davean> | jackdk: that would make more sense to me, and is a thing I've missed in Haskell |
2023-07-18 08:16:47 +0200 | alexbiehl | (~alexbiehl@2a02:8108:323f:c964:c8b9:341:c65c:41d0) (Ping timeout: 264 seconds) |
2023-07-18 08:20:51 +0200 | oneeyedalien | (~oneeyedal@user/oneeyedalien) (Quit: Leaving) |
2023-07-18 08:21:41 +0200 | acidjnk | (~acidjnk@p200300d6e7072f560cf848d8868092f6.dip0.t-ipconnect.de) |
2023-07-18 08:22:57 +0200 | aforemny_ | aforemny |
2023-07-18 08:25:02 +0200 | misterfish | (~misterfis@84-53-85-146.bbserv.nl) (Ping timeout: 252 seconds) |
2023-07-18 08:25:36 +0200 | stiell_ | (~stiell@gateway/tor-sasl/stiell) (Remote host closed the connection) |
2023-07-18 08:26:01 +0200 | stiell_ | (~stiell@gateway/tor-sasl/stiell) |
2023-07-18 08:26:08 +0200 | Sgeo | (~Sgeo@user/sgeo) |
2023-07-18 08:28:53 +0200 | oo_miguel | (~Thunderbi@78-11-179-96.static.ip.netia.com.pl) |
2023-07-18 08:33:10 +0200 | gmg | (~user@user/gehmehgeh) |
2023-07-18 08:36:33 +0200 | azimut | (~azimut@gateway/tor-sasl/azimut) |
2023-07-18 08:36:33 +0200 | mizlan | (~mizlan@c-174-62-68-33.hsd1.ca.comcast.net) |
2023-07-18 08:39:47 +0200 | Guest8732 | (~finn@176-151-21-224.abo.bbox.fr) |
2023-07-18 08:40:04 +0200 | pickleju1ce | (~root@c-73-196-164-60.hsd1.nj.comcast.net) (Ping timeout: 272 seconds) |
2023-07-18 08:43:53 +0200 | alexbiehl | (~alexbiehl@2a02:8108:323f:c964:c8b9:341:c65c:41d0) |
2023-07-18 08:48:12 +0200 | alexbiehl | (~alexbiehl@2a02:8108:323f:c964:c8b9:341:c65c:41d0) (Ping timeout: 240 seconds) |
2023-07-18 08:51:39 +0200 | libertyprime | (~libertypr@203.96.203.44) |
2023-07-18 09:02:09 +0200 | CiaoSen | (~Jura@2a05:5800:299:1a00:664b:f0ff:fe37:9ef) |
2023-07-18 09:05:59 +0200 | fendor | (~fendor@2a02:8388:1640:be00:1f28:32b1:54ac:a932) |
2023-07-18 09:10:23 +0200 | econo_ | (uid147250@id-147250.tinside.irccloud.com) (Quit: Connection closed for inactivity) |
2023-07-18 09:16:10 +0200 | nate2 | (~nate@c-98-45-169-16.hsd1.ca.comcast.net) |
2023-07-18 09:18:21 +0200 | alexbiehl | (~alexbiehl@2a02:8108:323f:c964:c8b9:341:c65c:41d0) |
2023-07-18 09:18:28 +0200 | hackyhacker | (~hackyhack@2a05:f480:1400:24b2:5400:4ff:fe76:a8f3) (Quit: The Lounge - https://thelounge.chat) |
2023-07-18 09:20:55 +0200 | nate2 | (~nate@c-98-45-169-16.hsd1.ca.comcast.net) (Ping timeout: 240 seconds) |
2023-07-18 09:35:10 +0200 | shriekingnoise | (~shrieking@186.137.175.87) (Ping timeout: 272 seconds) |
2023-07-18 09:35:25 +0200 | alexbiehl | (~alexbiehl@2a02:8108:323f:c964:c8b9:341:c65c:41d0) (Ping timeout: 240 seconds) |
2023-07-18 09:35:58 +0200 | alexbiehl | (~alexbiehl@2a02:8108:323f:c964:c8b9:341:c65c:41d0) |
2023-07-18 09:43:43 +0200 | gnalzo | (~gnalzo@2a01:e0a:498:fd50:fcc6:bb5d:489a:ce8c) |
2023-07-18 09:43:52 +0200 | mizlan | (~mizlan@c-174-62-68-33.hsd1.ca.comcast.net) (Ping timeout: 252 seconds) |
2023-07-18 09:44:10 +0200 | Ashkan | (~Ashkan@ec2-54-78-14-109.eu-west-1.compute.amazonaws.com) |
2023-07-18 09:44:23 +0200 | alexbiehl | (~alexbiehl@2a02:8108:323f:c964:c8b9:341:c65c:41d0) (Ping timeout: 264 seconds) |
2023-07-18 09:46:21 +0200 | marinelli[m] | (~marinelli@2001:470:69fc:105::2d8) (Remote host closed the connection) |
2023-07-18 09:46:35 +0200 | marinelli[m] | (~marinelli@2001:470:69fc:105::2d8) |
2023-07-18 09:47:09 +0200 | dcoutts | (~duncan@cpc69402-oxfd27-2-0-cust903.4-3.cable.virginm.net) |
2023-07-18 09:50:43 +0200 | arahael_ | (~arahael@115-64-199-191.tpgi.com.au) |
2023-07-18 09:51:10 +0200 | machinedgod | (~machinedg@d198-53-218-113.abhsia.telus.net) |
2023-07-18 09:52:45 +0200 | alexbiehl | (~alexbiehl@2a02:8108:323f:c964:c8b9:341:c65c:41d0) |
2023-07-18 09:54:11 +0200 | machinedgod | (~machinedg@d198-53-218-113.abhsia.telus.net) (Remote host closed the connection) |
2023-07-18 09:55:14 +0200 | <siraben> | jackdk: thanks, commenting out the extra-lib-dirs stuff fixed it! |
2023-07-18 09:55:26 +0200 | arahael_ | (~arahael@115-64-199-191.tpgi.com.au) (Ping timeout: 272 seconds) |
2023-07-18 09:55:37 +0200 | titibandit | (~titibandi@user/titibandit) |
2023-07-18 09:57:08 +0200 | ub | (~Thunderbi@77.119.175.12.wireless.dyn.drei.com) |
2023-07-18 09:57:18 +0200 | misterfish | (~misterfis@87.215.131.102) |
2023-07-18 09:57:28 +0200 | machinedgod | (~machinedg@d198-53-218-113.abhsia.telus.net) |
2023-07-18 09:58:07 +0200 | machinedgod | (~machinedg@d198-53-218-113.abhsia.telus.net) (Client Quit) |
2023-07-18 09:58:30 +0200 | machinedgod | (~machinedg@d198-53-218-113.abhsia.telus.net) |
2023-07-18 09:58:34 +0200 | ubert | (~Thunderbi@91.141.70.181.wireless.dyn.drei.com) (Ping timeout: 260 seconds) |
2023-07-18 09:58:34 +0200 | ub | ubert |
2023-07-18 09:59:42 +0200 | gurkenglas | (~gurkengla@dynamic-002-247-243-208.2.247.pool.telefonica.de) |
2023-07-18 10:12:05 +0200 | mizlan | (~mizlan@c-174-62-68-33.hsd1.ca.comcast.net) |
2023-07-18 10:12:31 +0200 | danse-nr3_ | (~francesco@151.57.218.169) |
2023-07-18 10:13:48 +0200 | dcoutts | (~duncan@cpc69402-oxfd27-2-0-cust903.4-3.cable.virginm.net) (Ping timeout: 272 seconds) |
2023-07-18 10:14:12 +0200 | alexbiehl | (~alexbiehl@2a02:8108:323f:c964:c8b9:341:c65c:41d0) (Remote host closed the connection) |
2023-07-18 10:14:44 +0200 | alexbiehl | (~alexbiehl@2a02:8108:323f:ca14:a9de:be07:3a81:7285) |
2023-07-18 10:16:58 +0200 | mizlan | (~mizlan@c-174-62-68-33.hsd1.ca.comcast.net) (Ping timeout: 272 seconds) |
2023-07-18 10:17:00 +0200 | danse-nr3_ | (~francesco@151.57.218.169) (Ping timeout: 250 seconds) |
2023-07-18 10:17:01 +0200 | dcoutts | (~duncan@cpc69402-oxfd27-2-0-cust903.4-3.cable.virginm.net) |
2023-07-18 10:17:58 +0200 | <jackdk> | Well, how about that `:)` |
2023-07-18 10:18:52 +0200 | alexbiehl | (~alexbiehl@2a02:8108:323f:ca14:a9de:be07:3a81:7285) (Ping timeout: 240 seconds) |
2023-07-18 10:27:38 +0200 | ubert1 | (~Thunderbi@77.119.175.12.wireless.dyn.drei.com) |
2023-07-18 10:28:36 +0200 | azy_ | (~azy@87-97-13-0.pool.digikabel.hu) (Ping timeout: 252 seconds) |
2023-07-18 10:29:55 +0200 | danse-nr3 | (~francesco@151.57.218.169) |
2023-07-18 10:30:27 +0200 | azy | (~azy@92-249-150-146.static.digikabel.hu) |
2023-07-18 10:34:48 +0200 | Tuplanolla | (~Tuplanoll@91-159-68-236.elisa-laajakaista.fi) |
2023-07-18 10:37:52 +0200 | dcoutts | (~duncan@cpc69402-oxfd27-2-0-cust903.4-3.cable.virginm.net) (Ping timeout: 245 seconds) |
2023-07-18 10:39:36 +0200 | dcoutts | (~duncan@cpc69402-oxfd27-2-0-cust903.4-3.cable.virginm.net) |
2023-07-18 10:40:34 +0200 | dibblego | (~dibblego@haskell/developer/dibblego) (Quit: λ) |
2023-07-18 10:43:55 +0200 | dcoutts | (~duncan@cpc69402-oxfd27-2-0-cust903.4-3.cable.virginm.net) (Ping timeout: 240 seconds) |
2023-07-18 10:50:26 +0200 | danse-nr3 | (~francesco@151.57.218.169) (Ping timeout: 245 seconds) |
2023-07-18 10:53:33 +0200 | mizlan | (~mizlan@c-174-62-68-33.hsd1.ca.comcast.net) |
2023-07-18 10:56:00 +0200 | danse-nr3 | (~francesco@151.57.218.169) |
2023-07-18 10:59:12 +0200 | ft | (~ft@p3e9bc856.dip0.t-ipconnect.de) (Quit: leaving) |
2023-07-18 11:01:06 +0200 | chele | (~chele@user/chele) |
2023-07-18 11:01:22 +0200 | dcoutts | (~duncan@cpc69402-oxfd27-2-0-cust903.4-3.cable.virginm.net) |
2023-07-18 11:02:15 +0200 | Unicorn_Princess | (~Unicorn_P@user/Unicorn-Princess/x-3540542) |
2023-07-18 11:05:13 +0200 | eggplantade | (~Eggplanta@104-55-37-220.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection) |
2023-07-18 11:06:00 +0200 | Sgeo | (~Sgeo@user/sgeo) (Read error: Connection reset by peer) |
2023-07-18 11:16:15 +0200 | dibblego | (~dibblego@116-255-1-151.ip4.superloop.au) |
2023-07-18 11:16:15 +0200 | dibblego | (~dibblego@116-255-1-151.ip4.superloop.au) (Changing host) |
2023-07-18 11:16:15 +0200 | dibblego | (~dibblego@haskell/developer/dibblego) |
2023-07-18 11:21:08 +0200 | fweht | (uid404746@id-404746.lymington.irccloud.com) |
2023-07-18 11:29:12 +0200 | tzh | (~tzh@c-24-21-73-154.hsd1.wa.comcast.net) (Quit: zzz) |
2023-07-18 11:29:28 +0200 | jmdaemon | (~jmdaemon@user/jmdaemon) (Ping timeout: 258 seconds) |
2023-07-18 11:29:34 +0200 | ByronJohnson | (~bairyn@50-250-232-19-static.hfc.comcastbusiness.net) (Ping timeout: 260 seconds) |
2023-07-18 11:31:23 +0200 | ByronJohnson | (~bairyn@50-250-232-19-static.hfc.comcastbusiness.net) |
2023-07-18 11:35:45 +0200 | Lord_of_Life_ | (~Lord@user/lord-of-life/x-2819915) |
2023-07-18 11:36:06 +0200 | Ashkan | (~Ashkan@ec2-54-78-14-109.eu-west-1.compute.amazonaws.com) (Quit: Client closed) |
2023-07-18 11:36:46 +0200 | Lord_of_Life | (~Lord@user/lord-of-life/x-2819915) (Ping timeout: 272 seconds) |
2023-07-18 11:38:36 +0200 | Lord_of_Life_ | Lord_of_Life |
2023-07-18 11:39:43 +0200 | alexbiehl | (~alexbiehl@ip4d14fda4.dynamic.kabel-deutschland.de) |
2023-07-18 11:41:02 +0200 | dibblego | (~dibblego@haskell/developer/dibblego) (Excess Flood) |
2023-07-18 11:42:05 +0200 | dibblego | (~dibblego@116-255-1-151.ip4.superloop.au) |
2023-07-18 11:42:05 +0200 | dibblego | (~dibblego@116-255-1-151.ip4.superloop.au) (Changing host) |
2023-07-18 11:42:05 +0200 | dibblego | (~dibblego@haskell/developer/dibblego) |
2023-07-18 11:42:43 +0200 | ncf | (~n@monade.li) (Quit: Fairfarren.) |
2023-07-18 11:42:52 +0200 | ncf | (~n@monade.li) |
2023-07-18 11:43:29 +0200 | dibblego | (~dibblego@haskell/developer/dibblego) (Excess Flood) |
2023-07-18 11:46:04 +0200 | alexbiehl | (~alexbiehl@ip4d14fda4.dynamic.kabel-deutschland.de) (Remote host closed the connection) |
2023-07-18 11:46:37 +0200 | Guest3849 | (~user@76.133.152.122) (ERC 5.6-git (IRC client for GNU Emacs 30.0.50)) |
2023-07-18 11:52:36 +0200 | alexbiehl | (~alexbiehl@2a02:8108:323f:ca14:a9de:be07:3a81:7285) |
2023-07-18 11:54:46 +0200 | __monty__ | (~toonn@user/toonn) |
2023-07-18 11:57:44 +0200 | alexbiehl | (~alexbiehl@2a02:8108:323f:ca14:a9de:be07:3a81:7285) (Remote host closed the connection) |
2023-07-18 11:59:30 +0200 | dibblego | (~dibblego@116-255-1-151.ip4.superloop.au) |
2023-07-18 11:59:30 +0200 | dibblego | (~dibblego@116-255-1-151.ip4.superloop.au) (Changing host) |
2023-07-18 11:59:30 +0200 | dibblego | (~dibblego@haskell/developer/dibblego) |
2023-07-18 12:02:08 +0200 | img | (~img@user/img) (Quit: ZNC 1.8.2 - https://znc.in) |
2023-07-18 12:03:29 +0200 | kritzefitz | (~kritzefit@debian/kritzefitz) (Remote host closed the connection) |
2023-07-18 12:03:35 +0200 | mizlan | (~mizlan@c-174-62-68-33.hsd1.ca.comcast.net) (Ping timeout: 264 seconds) |
2023-07-18 12:04:19 +0200 | remexre | (~remexre@user/remexre) (Read error: Connection reset by peer) |
2023-07-18 12:04:57 +0200 | azy | (~azy@92-249-150-146.static.digikabel.hu) (Ping timeout: 245 seconds) |
2023-07-18 12:05:10 +0200 | kritzefitz | (~kritzefit@debian/kritzefitz) |
2023-07-18 12:05:37 +0200 | img | (~img@user/img) |
2023-07-18 12:05:40 +0200 | eggplantade | (~Eggplanta@2600:1700:38c5:d800:9801:f948:f484:2fb0) |
2023-07-18 12:06:40 +0200 | azy | (~azy@84-236-1-98.pool.digikabel.hu) |
2023-07-18 12:06:41 +0200 | remexre | (~remexre@user/remexre) |
2023-07-18 12:07:32 +0200 | kmein_ | (~weechat@user/kmein) (Quit: ciao kakao) |
2023-07-18 12:07:52 +0200 | kmein | (~weechat@user/kmein) |
2023-07-18 12:08:26 +0200 | img | (~img@user/img) (Client Quit) |
2023-07-18 12:09:35 +0200 | libertyprime | (~libertypr@203.96.203.44) (Quit: leaving) |
2023-07-18 12:10:06 +0200 | eggplantade | (~Eggplanta@2600:1700:38c5:d800:9801:f948:f484:2fb0) (Ping timeout: 258 seconds) |
2023-07-18 12:10:09 +0200 | img | (~img@user/img) |
2023-07-18 12:11:59 +0200 | kritzefitz | (~kritzefit@debian/kritzefitz) (Remote host closed the connection) |
2023-07-18 12:12:03 +0200 | img | (~img@user/img) (Client Quit) |
2023-07-18 12:12:58 +0200 | img | (~img@user/img) |
2023-07-18 12:13:20 +0200 | kritzefitz | (~kritzefit@debian/kritzefitz) |
2023-07-18 12:15:45 +0200 | arahael_ | (~arahael@115-64-199-191.tpgi.com.au) |
2023-07-18 12:16:15 +0200 | dibblego | (~dibblego@haskell/developer/dibblego) (Read error: Connection timed out) |
2023-07-18 12:20:48 +0200 | arahael_ | (~arahael@115-64-199-191.tpgi.com.au) (Ping timeout: 252 seconds) |
2023-07-18 12:22:32 +0200 | mizlan | (~mizlan@c-174-62-68-33.hsd1.ca.comcast.net) |
2023-07-18 12:24:47 +0200 | razetime | (~quassel@117.193.5.43) |
2023-07-18 12:32:32 +0200 | arahael_ | (~arahael@115-64-199-191.tpgi.com.au) |
2023-07-18 12:36:32 +0200 | gnalzo | (~gnalzo@2a01:e0a:498:fd50:fcc6:bb5d:489a:ce8c) (Quit: WeeChat 4.0.1) |
2023-07-18 12:42:00 +0200 | arahael_ | (~arahael@115-64-199-191.tpgi.com.au) (Ping timeout: 272 seconds) |
2023-07-18 12:46:19 +0200 | picklejuice | (~root@c-73-196-164-60.hsd1.nj.comcast.net) |
2023-07-18 12:46:26 +0200 | azy | (~azy@84-236-1-98.pool.digikabel.hu) (Ping timeout: 272 seconds) |
2023-07-18 12:46:43 +0200 | mango | (~finn@rul16-h01-176-151-21-224.dsl.sta.abo.bbox.fr) |
2023-07-18 12:47:55 +0200 | azy | (~azy@213-197-76-111.pool.digikabel.hu) |
2023-07-18 12:49:06 +0200 | kuribas | (~user@ptr-17d51emwh8tjgyi2pjo.18120a2.ip6.access.telenet.be) |
2023-07-18 12:49:46 +0200 | Guest8732 | (~finn@176-151-21-224.abo.bbox.fr) (Ping timeout: 252 seconds) |
2023-07-18 12:50:44 +0200 | czy | (~user@host-140-26.ilcub310.champaign.il.us.clients.pavlovmedia.net) (Ping timeout: 258 seconds) |
2023-07-18 12:51:52 +0200 | dibblego | (~dibblego@116-255-1-151.ip4.superloop.au) |
2023-07-18 12:51:52 +0200 | dibblego | (~dibblego@116-255-1-151.ip4.superloop.au) (Changing host) |
2023-07-18 12:51:52 +0200 | dibblego | (~dibblego@haskell/developer/dibblego) |
2023-07-18 12:52:38 +0200 | CiaoSen | (~Jura@2a05:5800:299:1a00:664b:f0ff:fe37:9ef) (Ping timeout: 260 seconds) |
2023-07-18 12:54:09 +0200 | img | (~img@user/img) (Quit: ZNC 1.8.2 - https://znc.in) |
2023-07-18 12:55:07 +0200 | img | (~img@user/img) |
2023-07-18 12:55:37 +0200 | danse-nr3 | (~francesco@151.57.218.169) (Remote host closed the connection) |
2023-07-18 12:56:03 +0200 | danse-nr3 | (~francesco@151.57.218.169) |
2023-07-18 12:57:58 +0200 | arahael_ | (~arahael@115-64-199-191.tpgi.com.au) |
2023-07-18 12:58:42 +0200 | Unicorn_Princess | (~Unicorn_P@user/Unicorn-Princess/x-3540542) (Remote host closed the connection) |
2023-07-18 12:58:52 +0200 | venkateshK[m] | (~randomint@2001:470:69fc:105::3:852e) |
2023-07-18 13:00:12 +0200 | img | (~img@user/img) (Quit: ZNC 1.8.2 - https://znc.in) |
2023-07-18 13:01:04 +0200 | img | (~img@user/img) |
2023-07-18 13:03:51 +0200 | danse-nr3 | (~francesco@151.57.218.169) (Remote host closed the connection) |
2023-07-18 13:05:51 +0200 | dibblego | (~dibblego@haskell/developer/dibblego) (Read error: Connection timed out) |
2023-07-18 13:07:38 +0200 | tomku | (~tomku@user/tomku) (Ping timeout: 246 seconds) |
2023-07-18 13:08:22 +0200 | arahael_ | (~arahael@115-64-199-191.tpgi.com.au) (Ping timeout: 258 seconds) |
2023-07-18 13:10:33 +0200 | razetime | (~quassel@117.193.5.43) (Remote host closed the connection) |
2023-07-18 13:12:03 +0200 | ncf_ | (~n@monade.li) |
2023-07-18 13:12:33 +0200 | ncf_ | (~n@monade.li) (Client Quit) |
2023-07-18 13:17:43 +0200 | nate2 | (~nate@c-98-45-169-16.hsd1.ca.comcast.net) |
2023-07-18 13:21:12 +0200 | azy | (~azy@213-197-76-111.pool.digikabel.hu) (Ping timeout: 245 seconds) |
2023-07-18 13:21:54 +0200 | bontaq | (~user@ool-45779b84.dyn.optonline.net) |
2023-07-18 13:22:47 +0200 | nate2 | (~nate@c-98-45-169-16.hsd1.ca.comcast.net) (Ping timeout: 264 seconds) |
2023-07-18 13:23:06 +0200 | azy | (~azy@193-110-63-47.cable-modem.hdsnet.hu) |
2023-07-18 13:24:36 +0200 | mizlan | (~mizlan@c-174-62-68-33.hsd1.ca.comcast.net) (Ping timeout: 245 seconds) |
2023-07-18 13:27:04 +0200 | alexbiehl | (~alexbiehl@2a02:8108:323f:ca14:a9de:be07:3a81:7285) |
2023-07-18 13:29:22 +0200 | arahael_ | (~arahael@115-64-199-191.tpgi.com.au) |
2023-07-18 13:34:10 +0200 | arahael_ | (~arahael@115-64-199-191.tpgi.com.au) (Ping timeout: 250 seconds) |
2023-07-18 13:37:02 +0200 | mango | (~finn@rul16-h01-176-151-21-224.dsl.sta.abo.bbox.fr) (Ping timeout: 245 seconds) |
2023-07-18 13:39:28 +0200 | dibblego | (~dibblego@116-255-1-151.ip4.superloop.au) |
2023-07-18 13:39:28 +0200 | dibblego | (~dibblego@116-255-1-151.ip4.superloop.au) (Changing host) |
2023-07-18 13:39:28 +0200 | dibblego | (~dibblego@haskell/developer/dibblego) |
2023-07-18 13:40:55 +0200 | anpad | (~pandeyan@user/anpad) (Quit: ZNC 1.8.2 - https://znc.in) |
2023-07-18 13:42:48 +0200 | anpad | (~pandeyan@user/anpad) |
2023-07-18 13:45:38 +0200 | mixfix41 | (~sdeny9ee@user/mixfix41) |
2023-07-18 13:56:43 +0200 | ripspin | (~chatzilla@1.145.144.100) |
2023-07-18 13:57:35 +0200 | danse-nr3 | (~francesco@151.43.142.135) |
2023-07-18 14:00:31 +0200 | arahael_ | (~arahael@115-64-199-191.tpgi.com.au) |
2023-07-18 14:04:52 +0200 | arahael_ | (~arahael@115-64-199-191.tpgi.com.au) (Ping timeout: 240 seconds) |
2023-07-18 14:07:27 +0200 | dibblego | (~dibblego@haskell/developer/dibblego) (Quit: λ) |
2023-07-18 14:07:41 +0200 | tv | (~tv@user/tv) (Ping timeout: 246 seconds) |
2023-07-18 14:09:34 +0200 | tv | (~tv@user/tv) |
2023-07-18 14:12:32 +0200 | bitdex | (~bitdex@gateway/tor-sasl/bitdex) (Quit: = "") |
2023-07-18 14:13:14 +0200 | mizlan | (~mizlan@c-174-62-68-33.hsd1.ca.comcast.net) |
2023-07-18 14:14:07 +0200 | tv | (~tv@user/tv) (Ping timeout: 245 seconds) |
2023-07-18 14:14:50 +0200 | azy | (~azy@193-110-63-47.cable-modem.hdsnet.hu) (Ping timeout: 246 seconds) |
2023-07-18 14:15:17 +0200 | comerijn | (~merijn@088-129-128-083.dynamic.caiway.nl) |
2023-07-18 14:15:59 +0200 | tv | (~tv@user/tv) |
2023-07-18 14:16:35 +0200 | azy | (~azy@178-164-171-246.pool.digikabel.hu) |
2023-07-18 14:18:05 +0200 | thegeekinside | (~thegeekin@189.217.90.138) (Read error: Connection reset by peer) |
2023-07-18 14:18:11 +0200 | merijn | (~merijn@088-129-128-083.dynamic.caiway.nl) (Ping timeout: 246 seconds) |
2023-07-18 14:22:27 +0200 | mechap | (~mechap@user/mechap) (Ping timeout: 245 seconds) |
2023-07-18 14:23:45 +0200 | mechap | (~mechap@user/mechap) |
2023-07-18 14:26:23 +0200 | L29Ah | (~L29Ah@wikipedia/L29Ah) (Ping timeout: 264 seconds) |
2023-07-18 14:29:33 +0200 | trev | (~trev@user/trev) (Quit: trev) |
2023-07-18 14:30:00 +0200 | gurkenglas | (~gurkengla@dynamic-002-247-243-208.2.247.pool.telefonica.de) (Read error: Connection reset by peer) |
2023-07-18 14:31:24 +0200 | waleee | (~waleee@2001:9b0:21c:4000:5bf9:6515:c030:57b7) |
2023-07-18 14:38:52 +0200 | L29Ah | (~L29Ah@wikipedia/L29Ah) |
2023-07-18 14:39:28 +0200 | CiaoSen | (~Jura@2a05:5800:299:1a00:664b:f0ff:fe37:9ef) |
2023-07-18 14:39:45 +0200 | danse-nr3 | (~francesco@151.43.142.135) (Ping timeout: 246 seconds) |
2023-07-18 14:41:23 +0200 | machinedgod | (~machinedg@d198-53-218-113.abhsia.telus.net) (Remote host closed the connection) |
2023-07-18 14:42:33 +0200 | machinedgod | (~machinedg@d198-53-218-113.abhsia.telus.net) |
2023-07-18 14:44:00 +0200 | kupi | (uid212005@id-212005.hampstead.irccloud.com) |
2023-07-18 14:46:07 +0200 | mechap | (~mechap@user/mechap) (Ping timeout: 258 seconds) |
2023-07-18 14:46:46 +0200 | notzmv | (~zmv@user/notzmv) (Ping timeout: 272 seconds) |
2023-07-18 14:47:07 +0200 | mechap | (~mechap@user/mechap) |
2023-07-18 14:47:24 +0200 | azy | (~azy@178-164-171-246.pool.digikabel.hu) (Ping timeout: 272 seconds) |
2023-07-18 14:48:43 +0200 | azy | (~azy@fibhost-67-47-59.fibernet.hu) |
2023-07-18 14:49:32 +0200 | Vq | (~vq@90-227-195-9-no77.tbcn.telia.com) (Quit: Server maintenance) |
2023-07-18 14:50:13 +0200 | shapr | (~user@2600:1700:c640:3100:7ba2:ae9a:8376:1284) |
2023-07-18 14:52:50 +0200 | jonathan | (~jonathan@c83-252-3-92.bredband.tele2.se) |
2023-07-18 14:54:14 +0200 | danse-nr3 | (~francesco@151.43.142.135) |
2023-07-18 14:54:57 +0200 | <jonathan> | When I build with "Wall -Werror", I find myself spending quite a bit of time fixing up redundant import statements. Is there a tool to automate this process? |
2023-07-18 14:55:15 +0200 | gurkenglas | (~gurkengla@dynamic-002-247-243-208.2.247.pool.telefonica.de) |
2023-07-18 14:55:26 +0200 | mei | (~mei@user/mei) (Quit: mei) |
2023-07-18 14:55:53 +0200 | <fvr> | jonathan: something other than hls? |
2023-07-18 14:56:10 +0200 | mei | (~mei@user/mei) |
2023-07-18 14:59:31 +0200 | <jonathan> | Is there a code action for it? Having it on command line for all files would be great, but a "remove redundant imports" would take me a bit on the way |
2023-07-18 14:59:52 +0200 | qqq | (~qqq@92.43.167.61) |
2023-07-18 15:00:43 +0200 | <fvr> | yeah there is remove redundant imports code action |
2023-07-18 15:02:10 +0200 | phma | (phma@2001:5b0:210b:e378:cbed:ddba:6ef2:8029) (Read error: Connection reset by peer) |
2023-07-18 15:02:13 +0200 | p3n | (~p3n@2a00:19a0:3:7c:0:d9c6:7cf6:1) |
2023-07-18 15:02:34 +0200 | phma | (phma@2001:5b0:210b:e378:a2bb:6ce4:5380:526f) |
2023-07-18 15:03:34 +0200 | justsomeguy | (~justsomeg@user/justsomeguy) (Quit: WeeChat 3.6) |
2023-07-18 15:06:55 +0200 | Vq | (~vq@90-227-195-9-no77.tbcn.telia.com) |
2023-07-18 15:10:11 +0200 | mechap | (~mechap@user/mechap) (Ping timeout: 264 seconds) |
2023-07-18 15:10:41 +0200 | mechap | (~mechap@user/mechap) |
2023-07-18 15:12:56 +0200 | Inst_ | (~Inst@2601:6c4:4081:2fc0:1c30:3af5:9430:2bcf) (Ping timeout: 246 seconds) |
2023-07-18 15:13:02 +0200 | <jackdk> | I would expect a haskell autoformatter to clean it up too; I know ormolu does this but I would expect others to do so also |
2023-07-18 15:15:01 +0200 | dibblego | (~dibblego@116.255.1.151) |
2023-07-18 15:15:02 +0200 | dibblego | (~dibblego@116.255.1.151) (Changing host) |
2023-07-18 15:15:02 +0200 | dibblego | (~dibblego@haskell/developer/dibblego) |
2023-07-18 15:16:26 +0200 | mizlan | (~mizlan@c-174-62-68-33.hsd1.ca.comcast.net) (Ping timeout: 250 seconds) |
2023-07-18 15:19:21 +0200 | Unicorn_Princess | (~Unicorn_P@user/Unicorn-Princess/x-3540542) |
2023-07-18 15:19:36 +0200 | mechap | (~mechap@user/mechap) (Remote host closed the connection) |
2023-07-18 15:20:00 +0200 | mechap | (~mechap@user/mechap) |
2023-07-18 15:20:08 +0200 | mango | (~finn@176-151-21-224.abo.bbox.fr) |
2023-07-18 15:22:28 +0200 | <geekosaur> | I thought formatters had access only to the source they were formatting? It would need to analyze the imported modules to detect redundant imports |
2023-07-18 15:22:44 +0200 | <geekosaur> | unless it's something obvious like a module imported twice |
2023-07-18 15:26:28 +0200 | Midjak | (~Midjak@82.66.147.146) |
2023-07-18 15:28:10 +0200 | azy | (~azy@fibhost-67-47-59.fibernet.hu) (Ping timeout: 252 seconds) |
2023-07-18 15:30:02 +0200 | azy | (~azy@85-238-93-58.pool.digikabel.hu) |
2023-07-18 15:41:22 +0200 | dcoutts | (~duncan@cpc69402-oxfd27-2-0-cust903.4-3.cable.virginm.net) (Ping timeout: 252 seconds) |
2023-07-18 15:48:35 +0200 | TheblackPuppet | (~u0_a891@149.140.105.147) |
2023-07-18 15:48:57 +0200 | <c_wraith> | redundant imports can be non-trivial in Haskell, thanks to allowing re-exports. |
2023-07-18 15:54:26 +0200 | trev | (~trev@user/trev) |
2023-07-18 15:59:11 +0200 | son0p | (~ff@181.136.122.143) (Ping timeout: 245 seconds) |
2023-07-18 16:00:41 +0200 | thegeekinside | (~thegeekin@189.217.90.138) |
2023-07-18 16:02:56 +0200 | dcoutts | (~duncan@cpc69402-oxfd27-2-0-cust903.4-3.cable.virginm.net) |
2023-07-18 16:04:57 +0200 | mizlan | (~mizlan@c-174-62-68-33.hsd1.ca.comcast.net) |
2023-07-18 16:05:54 +0200 | thegeekinside | (~thegeekin@189.217.90.138) (Read error: Connection reset by peer) |
2023-07-18 16:06:28 +0200 | alexbiehl | (~alexbiehl@2a02:8108:323f:ca14:a9de:be07:3a81:7285) (Remote host closed the connection) |
2023-07-18 16:07:12 +0200 | azy | (~azy@85-238-93-58.pool.digikabel.hu) (Ping timeout: 240 seconds) |
2023-07-18 16:07:35 +0200 | tomku | (~tomku@user/tomku) |
2023-07-18 16:09:15 +0200 | azy | (~azy@178-164-171-242.pool.digikabel.hu) |
2023-07-18 16:13:32 +0200 | mncheck | (~mncheck@193.224.205.254) (Ping timeout: 272 seconds) |
2023-07-18 16:15:08 +0200 | pavonia | (~user@user/siracusa) (Quit: Bye!) |
2023-07-18 16:23:37 +0200 | tomku | (~tomku@user/tomku) (Quit: Lost terminal) |
2023-07-18 16:25:42 +0200 | thegeekinside | (~thegeekin@189.217.90.138) |
2023-07-18 16:26:33 +0200 | waleee | (~waleee@2001:9b0:21c:4000:5bf9:6515:c030:57b7) (Ping timeout: 258 seconds) |
2023-07-18 16:28:47 +0200 | waleee | (~waleee@h-176-10-137-138.NA.cust.bahnhof.se) |
2023-07-18 16:32:11 +0200 | tomku | (~tomku@user/tomku) |
2023-07-18 16:44:37 +0200 | TheblackPuppet | (~u0_a891@149.140.105.147) (Quit: WeeChat 4.0.1) |
2023-07-18 16:45:42 +0200 | shriekingnoise | (~shrieking@186.137.175.87) |
2023-07-18 16:47:38 +0200 | <danse-nr3> | this is probably a tired topic but ... how comes `head` and similar are still unsafe? Pointers to existing flame wars appreciated |
2023-07-18 16:47:48 +0200 | azy | (~azy@178-164-171-242.pool.digikabel.hu) (Ping timeout: 246 seconds) |
2023-07-18 16:49:30 +0200 | azy | (~azy@78-131-74-116.pool.digikabel.hu) |
2023-07-18 16:51:19 +0200 | motherfsck | (~motherfsc@user/motherfsck) (Read error: Connection reset by peer) |
2023-07-18 16:51:35 +0200 | <int-e> | they're partial, not unsafe |
2023-07-18 16:51:36 +0200 | <glguy> | danse-nr3: they aren't unsafe, they're partial. You should use them when it's obvious that they will work. If you don't know if the list is empty there are other options: pattern matching, listToMaybe, etc. There's not really a flame war to point to |
2023-07-18 16:51:37 +0200 | danse-nr3 | (~francesco@151.43.142.135) (Remote host closed the connection) |
2023-07-18 16:52:02 +0200 | danse-nr3 | (~francesco@151.43.142.135) |
2023-07-18 16:52:23 +0200 | <glguy> | Not all properties of values can be reflected into their types, it's an approximation |
2023-07-18 16:55:29 +0200 | <int-e> | > map (head &&& length) . group . sort $ "abracadabra" |
2023-07-18 16:55:30 +0200 | <lambdabot> | [('a',5),('b',2),('c',1),('d',1),('r',2)] |
2023-07-18 16:55:38 +0200 | notzmv | (~zmv@user/notzmv) |
2023-07-18 16:56:24 +0200 | <int-e> | (one of many totally appropriate uses of `head`) |
2023-07-18 16:56:38 +0200 | <danse-nr3> | well by safe i mean type safety, which is the same as non-partiality at least in this case. I know types can get only to some point, but this seems simple to improve |
2023-07-18 16:58:05 +0200 | <glguy> | It wouldn't be simple to improve because you'd end up with impossible cases to handle some other way |
2023-07-18 16:58:21 +0200 | <jade[m]> | int-e: you could use `Data.List.NonEmpty.Group` and then have it all typesafe |
2023-07-18 16:58:32 +0200 | <glguy> | jade[m]: that doesn't scale |
2023-07-18 16:58:59 +0200 | <glguy> | A whole duplicate module needed to be created for the at-least-one special case |
2023-07-18 16:59:14 +0200 | <danse-nr3> | glguy, impossible? Uncomfortable, maybe, but not much |
2023-07-18 16:59:36 +0200 | <glguy> | Uncomfortable but also not useful |
2023-07-18 16:59:38 +0200 | <int-e> | we could make things *worse* by having a "total" head :: [a] -> Maybe a (that's actually what listToMaybe) and working in the Maybe monad for as long as possible, and then when we ultimately get Nothing due to a bug we will have no information at all about what function failed. |
2023-07-18 17:00:16 +0200 | <jade[m]> | glguy: apologies, the module is just NonEmpty and the function is group |
2023-07-18 17:00:23 +0200 | <jade[m]> | i accidently made that uppercase |
2023-07-18 17:01:03 +0200 | <int-e> | NonEmpty could be great if it was a subtype of [a]. |
2023-07-18 17:01:06 +0200 | <zzz> | int-e: just add a writer monad |
2023-07-18 17:01:12 +0200 | <glguy> | jade[m]: right, that module is a special case that we would have to duplicate for every subset of list |
2023-07-18 17:01:13 +0200 | <int-e> | But subtypes are their own can of worms |
2023-07-18 17:01:43 +0200 | <glguy> | NonEmpty, Even list, AtLeastThree list |
2023-07-18 17:02:12 +0200 | <dolio> | Type safety is not the same as non-partiality. |
2023-07-18 17:02:50 +0200 | <zzz> | my rule is to always pattern match instead of using head |
2023-07-18 17:03:25 +0200 | <zzz> | i don't think head should be in the prelude |
2023-07-18 17:03:43 +0200 | <glguy> | zzz: could you rewrite int-e's example in your style for reference? |
2023-07-18 17:03:57 +0200 | <zzz> | oh i just got here, let me check scrollback |
2023-07-18 17:04:44 +0200 | <danse-nr3> | > map (head &&& length) . group . sort $ "" |
2023-07-18 17:04:45 +0200 | <lambdabot> | [] |
2023-07-18 17:04:53 +0200 | misterfish | (~misterfis@87.215.131.102) (Ping timeout: 258 seconds) |
2023-07-18 17:06:03 +0200 | <int-e> | You'll always have code where some cases are known to be impossible even though that's not captured by the types. Lists that are known to be non-empty is just a very common instance of that. |
2023-07-18 17:06:28 +0200 | <glguy> | danse-nr3: "impossible" cases meant values that will never occur, like [] will never be in the output list of group |
2023-07-18 17:06:30 +0200 | mizlan | (~mizlan@c-174-62-68-33.hsd1.ca.comcast.net) (Ping timeout: 250 seconds) |
2023-07-18 17:06:32 +0200 | <zzz> | i can't, not that line in a vacuum. i'm sure i could get around it in context |
2023-07-18 17:06:39 +0200 | tzh | (~tzh@c-24-21-73-154.hsd1.wa.comcast.net) |
2023-07-18 17:08:01 +0200 | <glguy> | So you can case on the list, bit then you're stuck again in the [] -> branch |
2023-07-18 17:08:43 +0200 | L29Ah | (~L29Ah@wikipedia/L29Ah) () |
2023-07-18 17:09:01 +0200 | <zzz> | i feel like the compiler could be smarter about impossible cases |
2023-07-18 17:09:19 +0200 | <zzz> | but i may be illuded as to how simple of a problem that is |
2023-07-18 17:09:54 +0200 | <zzz> | my intuition is that identifying dead code should be trivian in haskell |
2023-07-18 17:10:00 +0200 | <zzz> | *trivial |
2023-07-18 17:10:03 +0200 | <int-e> | lol |
2023-07-18 17:10:16 +0200 | eggplantade | (~Eggplanta@2600:1700:38c5:d800:9801:f948:f484:2fb0) |
2023-07-18 17:10:22 +0200 | <int-e> | (you're only solving the halting problem, how hard could it be) |
2023-07-18 17:10:44 +0200 | <danse-nr3> | well there is NonEmpty and that can have an easy head. But well, i guess i have something to learn ... i ... would not use head and similar in no case, just find the lack of safety (or partiality) dangerous |
2023-07-18 17:10:54 +0200 | <danse-nr3> | :t maximum |
2023-07-18 17:10:55 +0200 | <lambdabot> | (Foldable t, Ord a) => t a -> a |
2023-07-18 17:11:03 +0200 | <danse-nr3> | % maximum [] |
2023-07-18 17:11:03 +0200 | <yahb2> | *** Exception: Prelude.maximum: empty list |
2023-07-18 17:11:20 +0200 | <danse-nr3> | in haskell, documentation does not get as far as types do |
2023-07-18 17:11:42 +0200 | <int-e> | Sure, `NonEmpty` does work for the case of `group`. But at the same time, `group` is so simple that I'm not getting much benefit out of that case. |
2023-07-18 17:11:59 +0200 | <zzz> | int-e: no, i don't think so. sure there are situations where you cannot know like recursive types and whatnot but it should be easy to know when you can't know |
2023-07-18 17:12:42 +0200 | <dolio> | Yes, you could have group return a list of non-empty lists. Then that example turns into one involving both non-empty and normal lists, and duplicating the API on lists, which either means you need to add cruft to your code to disambiguate between the two APIs, or you need to overload everything. |
2023-07-18 17:13:14 +0200 | <int-e> | zzz: There's no clear boundary between the two (you can always try harder). The right move is to not try beyond *very* clearly defined boundaries... which are given by the type system. |
2023-07-18 17:13:36 +0200 | <int-e> | GHC's exhaustiveness check for patterns is already pretty complex as is. |
2023-07-18 17:13:49 +0200 | <int-e> | (And already goes wrong on occasion.) |
2023-07-18 17:13:52 +0200 | Inst | (~Inst@2601:6c4:4081:2fc0:c949:b3e0:9b04:3345) |
2023-07-18 17:14:16 +0200 | Sgeo | (~Sgeo@user/sgeo) |
2023-07-18 17:14:48 +0200 | <danse-nr3> | dolio, you mean that there is no path towards reasonable type safety? I dislike NonEmpty as well, but i think i just ignore how it could evolve. `head` is a simpler problem anyways |
2023-07-18 17:14:59 +0200 | eggplantade | (~Eggplanta@2600:1700:38c5:d800:9801:f948:f484:2fb0) (Ping timeout: 264 seconds) |
2023-07-18 17:16:01 +0200 | thegeekinside | (~thegeekin@189.217.90.138) (Read error: Connection reset by peer) |
2023-07-18 17:17:17 +0200 | <zzz> | int-e: in this specific case, wouldn't it be easy to know that group will never give you an empty list? |
2023-07-18 17:17:25 +0200 | <zzz> | for the compiler, i mean |
2023-07-18 17:17:49 +0200 | <danse-nr3> | just use NonEmpty then ... but still this is shifting the problem |
2023-07-18 17:18:21 +0200 | mei | (~mei@user/mei) (Remote host closed the connection) |
2023-07-18 17:19:14 +0200 | nate2 | (~nate@c-98-45-169-16.hsd1.ca.comcast.net) |
2023-07-18 17:19:17 +0200 | mizlan | (~mizlan@c-174-62-68-33.hsd1.ca.comcast.net) |
2023-07-18 17:19:18 +0200 | <int-e> | zzz: I'm not sure what your goalpost is at this point. I'd still want to write the code with `head`, even if the compiler manages to elide the `error "Prelude.head: empty list"` code in the end (which it actually just might as part of build/foldr fusion). |
2023-07-18 17:19:37 +0200 | <zzz> | int-e: no goalpost! just curiosity :) |
2023-07-18 17:19:37 +0200 | mei | (~mei@user/mei) |
2023-07-18 17:20:45 +0200 | <dolio> | What I mean is that what Haskell does is fairly reasonable. It is not always a reasonable amount of effort to make everything verifiably total. |
2023-07-18 17:21:31 +0200 | <zzz> | i'm more ok with head than with the fact that length returns and Int |
2023-07-18 17:21:55 +0200 | <zzz> | s/and/an |
2023-07-18 17:22:15 +0200 | <danse-nr3> | mapMaybe (\g -> (, length g) <$> head' g) . group . sort $ "abra" -- does not look that terrible to me |
2023-07-18 17:22:31 +0200 | mango | (~finn@176-151-21-224.abo.bbox.fr) (Ping timeout: 245 seconds) |
2023-07-18 17:23:10 +0200 | <int-e> | > Seq.length $ iterate (\s -> s <> s) (Seq.singleton ()) !! 63 |
2023-07-18 17:23:12 +0200 | <lambdabot> | -9223372036854775808 |
2023-07-18 17:23:16 +0200 | <glguy> | danse-nr3: that would hide an actual bug if an empty list occurred |
2023-07-18 17:23:46 +0200 | nate2 | (~nate@c-98-45-169-16.hsd1.ca.comcast.net) (Ping timeout: 245 seconds) |
2023-07-18 17:23:48 +0200 | <danse-nr3> | not if we are not interested in that |
2023-07-18 17:24:03 +0200 | <int-e> | zzz: ^^ not a realistic issue for [a] but if you have O(log(n)) append it becomes a real problem |
2023-07-18 17:24:41 +0200 | <danse-nr3> | writing the maybe handling at least makes one think about it, while having a type that tells nothing about a runtime error is not better |
2023-07-18 17:24:43 +0200 | <int-e> | FSVO "real" |
2023-07-18 17:25:01 +0200 | <danse-nr3> | following your reasoning, then let us have exceptions in maybe's type |
2023-07-18 17:25:25 +0200 | <int-e> | > fromJust Nothing |
2023-07-18 17:25:26 +0200 | <lambdabot> | *Exception: Maybe.fromJust: Nothing |
2023-07-18 17:25:30 +0200 | <dolio> | In many real-world scenarios, I'd much rather have an exception than nonsense answers that make me trace through the code instead. |
2023-07-18 17:26:12 +0200 | <danse-nr3> | but at least the coder was informed and decided to omit |
2023-07-18 17:26:54 +0200 | <danse-nr3> | *let us have exceptions in `head` time i meant, but thanks int-e for finding another case |
2023-07-18 17:27:12 +0200 | <danse-nr3> | % fromJust |
2023-07-18 17:27:12 +0200 | <yahb2> | <interactive>:41:1: error: Variable not in scope: fromJust |
2023-07-18 17:27:17 +0200 | <danse-nr3> | :t fromJust |
2023-07-18 17:27:18 +0200 | <lambdabot> | Maybe a -> a |
2023-07-18 17:27:21 +0200 | <danse-nr3> | magic |
2023-07-18 17:27:37 +0200 | <int-e> | % import Data.Maybe |
2023-07-18 17:27:37 +0200 | <yahb2> | <no output> |
2023-07-18 17:27:42 +0200 | <int-e> | % :t fromJust |
2023-07-18 17:27:42 +0200 | <yahb2> | fromJust :: GHC.Stack.Types.HasCallStack => Maybe a -> a |
2023-07-18 17:28:03 +0200 | <danse-nr3> | nice, yet not an exception |
2023-07-18 17:28:09 +0200 | <danse-nr3> | % :t head |
2023-07-18 17:28:09 +0200 | <yahb2> | head :: [a] -> a |
2023-07-18 17:28:20 +0200 | <danse-nr3> | clean and reassuring |
2023-07-18 17:29:28 +0200 | <danse-nr3> | i mean, Maybe is also very useful to learn all the other stuff, it does not look that bad in a type |
2023-07-18 17:29:44 +0200 | <int-e> | > case [] of x:_ -> x |
2023-07-18 17:29:45 +0200 | <lambdabot> | *Exception: <interactive>:(3,1)-(4,22): Non-exhaustive patterns in case |
2023-07-18 17:29:53 +0200 | <int-e> | > head [] |
2023-07-18 17:29:55 +0200 | <lambdabot> | *Exception: Prelude.head: empty list |
2023-07-18 17:30:13 +0200 | <danse-nr3> | non-exhaustive patterns get caught by the compiler though |
2023-07-18 17:30:39 +0200 | mauke | (~mauke@user/mauke) |
2023-07-18 17:30:59 +0200 | <int-e> | fine, so you add an [] case... now what do you write there, knowing that it's impossible? |
2023-07-18 17:31:25 +0200 | Square | (~Square@user/square) |
2023-07-18 17:31:31 +0200 | <int-e> | this is what `head` is for: extract the first element of a list that *you* statically know is non-empty. |
2023-07-18 17:31:55 +0200 | <int-e> | no matter whether you can convince the compiler of the fact |
2023-07-18 17:32:00 +0200 | <glguy> | danse-nr3: the total solution would be for int-e's example to have type like: data IdUnlessProgramError a = Bug ... | Result a |
2023-07-18 17:32:13 +0200 | <glguy> | And then propagate that all the way to the top of main |
2023-07-18 17:32:13 +0200 | <int-e> | which... you might either be unable to or simply unwilling to bother with |
2023-07-18 17:32:48 +0200 | <glguy> | Rather than making up a value in the bug case |
2023-07-18 17:33:47 +0200 | <glguy> | Which is a more-verbose version of what it does now |
2023-07-18 17:34:03 +0200 | <glguy> | But it's certainly an option |
2023-07-18 17:34:56 +0200 | eggplantade | (~Eggplanta@2600:1700:38c5:d800:9801:f948:f484:2fb0) |
2023-07-18 17:36:33 +0200 | gnalzo | (~gnalzo@2a01:e0a:498:fd50:fcc6:bb5d:489a:ce8c) |
2023-07-18 17:38:10 +0200 | eggplantade | (~Eggplanta@2600:1700:38c5:d800:9801:f948:f484:2fb0) (Remote host closed the connection) |
2023-07-18 17:38:16 +0200 | <danse-nr3> | yeah, i get it. Just my personal opinion then. After some years of experience, i basically never use `head`. From the perspective of a newcomer approaching the language, i think it would be a better path to be faced with the safer version. And about functions i use more rarely ... well. The point i made before, doc does not get as far as types do, i can just hope people generally like to write total functions |
2023-07-18 17:39:27 +0200 | <danse-nr3> | % :t tail |
2023-07-18 17:39:27 +0200 | <yahb2> | tail :: [a] -> [a] |
2023-07-18 17:39:57 +0200 | <danse-nr3> | had some troubles with this once, did not expect it to work as it does, considering the types |
2023-07-18 17:40:09 +0200 | thegeekinside | (~thegeekin@189.217.90.138) |
2023-07-18 17:40:10 +0200 | <danse-nr3> | but am i right? Wait, i am not sure |
2023-07-18 17:40:13 +0200 | <int-e> | > drop (-1) [1,2,3] |
2023-07-18 17:40:14 +0200 | <lambdabot> | [1,2,3] |
2023-07-18 17:40:17 +0200 | <danse-nr3> | % tail [] |
2023-07-18 17:40:17 +0200 | <yahb2> | *** Exception: Prelude.tail: empty list |
2023-07-18 17:40:28 +0200 | <int-e> | > drop 1 [] |
2023-07-18 17:40:30 +0200 | <lambdabot> | [] |
2023-07-18 17:42:14 +0200 | azy | (~azy@78-131-74-116.pool.digikabel.hu) (Ping timeout: 246 seconds) |
2023-07-18 17:42:19 +0200 | <int-e> | Hmm what does Lisp do for (car nil) and (cdr nil)... return nil? Which would be an option for `tail` of course. |
2023-07-18 17:42:49 +0200 | <int-e> | But `tail` is a counterpart of `head` and it would *also* be strange if one was defined when the other isn't. |
2023-07-18 17:43:15 +0200 | <mniip> | fromJustMaybe :: Maybe a -> Maybe a |
2023-07-18 17:43:18 +0200 | <danse-nr3> | nah, they have different types |
2023-07-18 17:43:20 +0200 | <int-e> | mniip: :) |
2023-07-18 17:43:21 +0200 | <danse-nr3> | :t last |
2023-07-18 17:43:22 +0200 | <lambdabot> | [a] -> a |
2023-07-18 17:43:28 +0200 | <danse-nr3> | this is the counterpart to head |
2023-07-18 17:43:34 +0200 | <geekosaur> | disagree |
2023-07-18 17:43:50 +0200 | <geekosaur> | head and tail are deconstructors for (:) |
2023-07-18 17:43:54 +0200 | <mniip> | danse-nr3, it's the counterpart to head in the sense that `data [] a = [] | (:) { head :: a, tail :: [] a }` |
2023-07-18 17:43:59 +0200 | <geekosaur> | init and last are similarly paired |
2023-07-18 17:44:03 +0200 | azy | (~azy@178-164-235-203.pool.digikabel.hu) |
2023-07-18 17:45:35 +0200 | <int-e> | funny how odd `[] a` looks |
2023-07-18 17:45:36 +0200 | <danse-nr3> | alright ... anyways, Maybe is a nice type, i do not think it would scare newcomers. Experts that keep static information avoiding type safety probably also know an answer to the awkwardness of NonEmpty |
2023-07-18 17:46:38 +0200 | <int-e> | head doesn't violate type safety |
2023-07-18 17:47:04 +0200 | <int-e> | unsafeCoerce does; it can cause compiled code to mistake values for pointers and crash, among other things |
2023-07-18 17:47:12 +0200 | titibandit | (~titibandi@user/titibandit) (Remote host closed the connection) |
2023-07-18 17:48:13 +0200 | <mauke> | int-e: common lisp returns NIL for both |
2023-07-18 17:48:46 +0200 | <danse-nr3> | maybe this is what i need to understand, how is `head` type safe. No exceptions in the type nor any sign it could fail. And if we consider stuff like `tail`, one should work with imagination |
2023-07-18 17:48:54 +0200 | <int-e> | The semantics of Haskell isn't restricted to total functions. |
2023-07-18 17:49:09 +0200 | <mauke> | there are errors other than type errors |
2023-07-18 17:49:17 +0200 | <int-e> | If you only want total functions there are other languages for that. (Idris? Agda?) |
2023-07-18 17:50:04 +0200 | <geekosaur> | haskell's type system doesn't encompass exceptions, either |
2023-07-18 17:50:04 +0200 | <jade[m]> | imo there isn't an objective truth or answer to this, but just different views on the same problem |
2023-07-18 17:50:11 +0200 | berberman_ | (~berberman@user/berberman) (Quit: ZNC 1.8.2 - https://znc.in) |
2023-07-18 17:50:12 +0200 | <jade[m]> | I don't really see a problem tbh |
2023-07-18 17:50:23 +0200 | <geekosaur> | neither do I |
2023-07-18 17:50:33 +0200 | berberman | (~berberman@user/berberman) |
2023-07-18 17:50:43 +0200 | <danse-nr3> | neither do I, i just see an opportunity to improve |
2023-07-18 17:51:20 +0200 | <geekosaur> | you'd be better off starting from idris imo |
2023-07-18 17:51:45 +0200 | <mniip> | haskell doesn't have a termination checker so your types are littered with non-termination bottoms anyway |
2023-07-18 17:51:56 +0200 | <int-e> | it's a matter of pragmatism to me; if your language only has total functions then you have to prove termination all the time and that gets tedious quickly. Or, I guess, you use the codata escape hatch that these languages tend to have. |
2023-07-18 17:52:21 +0200 | mechap | (~mechap@user/mechap) (Quit: WeeChat 4.0.2) |
2023-07-18 17:52:28 +0200 | <mniip> | seems reasonable to extend the notion of bottom to one that fails eagerly |
2023-07-18 17:52:45 +0200 | <int-e> | (codata Result a = Tick (Result a) | Return a) |
2023-07-18 17:53:26 +0200 | <mniip> | does Result work out as a monad? |
2023-07-18 17:53:34 +0200 | <int-e> | (That's what i mean by the "codata escape hatch") |
2023-07-18 17:53:54 +0200 | <mniip> | cool. Didn't know if there was a principled approach |
2023-07-18 17:53:55 +0200 | <int-e> | mniip: I think it does, at least morally (where you identify x and Tick x)) |
2023-07-18 17:54:06 +0200 | CiaoSen | (~Jura@2a05:5800:299:1a00:664b:f0ff:fe37:9ef) (Ping timeout: 260 seconds) |
2023-07-18 17:54:11 +0200 | azy | (~azy@178-164-235-203.pool.digikabel.hu) (Ping timeout: 245 seconds) |
2023-07-18 17:54:31 +0200 | danse-nr3_ | (~francesco@151.43.156.73) |
2023-07-18 17:54:31 +0200 | danse-nr3_ | (~francesco@151.43.156.73) (Remote host closed the connection) |
2023-07-18 17:54:41 +0200 | <mniip> | been thinking about self-hosted proof assistants |
2023-07-18 17:54:58 +0200 | <int-e> | mniip: Note, I made the names up on the spot; there may be standard names that are different. |
2023-07-18 17:55:02 +0200 | <mniip> | and a proof assistant needs termination checking, yet a typechecker needs to do reductions which may fail to terminate |
2023-07-18 17:55:26 +0200 | waleee | (~waleee@h-176-10-137-138.NA.cust.bahnhof.se) (Ping timeout: 245 seconds) |
2023-07-18 17:55:52 +0200 | <int-e> | One data point is that IIRC, vector's stream fusion uses `Skip` for what I called `Tick` there. |
2023-07-18 17:55:52 +0200 | azy | (~azy@80-95-82-46.pool.digikabel.hu) |
2023-07-18 17:56:23 +0200 | <mniip> | I don't suppose you get `fix :: (a -> Result a) -> Result a` |
2023-07-18 17:57:12 +0200 | danse-nr3 | (~francesco@151.43.142.135) (Ping timeout: 250 seconds) |
2023-07-18 17:57:55 +0200 | <int-e> | mniip: Right, you don't. You do get undefined :: Result a though, so you can bootstrap lazy evaluation and `fix` if you percolate `Result` into all your types. |
2023-07-18 17:58:14 +0200 | <mauke> | "that's just Identity with extra steps!" |
2023-07-18 17:58:22 +0200 | <mniip> | no it is not! |
2023-07-18 17:58:43 +0200 | <mniip> | it records the number of steps taken, which may be infinite (coinductively) |
2023-07-18 17:58:43 +0200 | <int-e> | mniip: Now that I wrote this out loud it sounds horrible. |
2023-07-18 18:00:45 +0200 | alexbiehl | (~alexbiehl@2a02:8108:323f:ca14:a9de:be07:3a81:7285) |
2023-07-18 18:01:14 +0200 | <int-e> | This has a similar flavor to Kleene's recursion theorem. |
2023-07-18 18:01:18 +0200 | <mauke> | as I said: extra steps |
2023-07-18 18:02:16 +0200 | <int-e> | Anyway if you just use a non-total language all this becomes easy ;-) |
2023-07-18 18:02:44 +0200 | josias | (~mottmatri@2001:470:69fc:105::b6c) (Remote host closed the connection) |
2023-07-18 18:03:06 +0200 | sagax | (~sagax_nb@user/sagax) |
2023-07-18 18:11:13 +0200 | rainbyte | (~rainbyte@181.31.239.226) (Remote host closed the connection) |
2023-07-18 18:11:46 +0200 | dhil | (~dhil@78.45.150.83.ewm.ftth.as8758.net) |
2023-07-18 18:16:24 +0200 | _ht | (~Thunderbi@28-52-174-82.ftth.glasoperator.nl) |
2023-07-18 18:18:24 +0200 | ubert | (~Thunderbi@77.119.175.12.wireless.dyn.drei.com) (Quit: ubert) |
2023-07-18 18:20:32 +0200 | ubert1 | (~Thunderbi@77.119.175.12.wireless.dyn.drei.com) (Remote host closed the connection) |
2023-07-18 18:21:01 +0200 | ubert | (~Thunderbi@77.119.175.12.wireless.dyn.drei.com) |
2023-07-18 18:21:58 +0200 | machinedgod | (~machinedg@d198-53-218-113.abhsia.telus.net) (Ping timeout: 252 seconds) |
2023-07-18 18:27:28 +0200 | alexbiehl | (~alexbiehl@2a02:8108:323f:ca14:a9de:be07:3a81:7285) (Remote host closed the connection) |
2023-07-18 18:28:04 +0200 | L29Ah | (~L29Ah@wikipedia/L29Ah) |
2023-07-18 18:28:33 +0200 | fendor | (~fendor@2a02:8388:1640:be00:1f28:32b1:54ac:a932) (Remote host closed the connection) |
2023-07-18 18:28:57 +0200 | alexbiehl | (~alexbiehl@2a02:8108:323f:ca14:a9de:be07:3a81:7285) |
2023-07-18 18:36:16 +0200 | azy | (~azy@80-95-82-46.pool.digikabel.hu) (Ping timeout: 245 seconds) |
2023-07-18 18:37:46 +0200 | kitzman | (~kitzman@user/dekenevs) (Quit: C-x C-c) |
2023-07-18 18:38:12 +0200 | azy | (~azy@92-249-193-183.pool.digikabel.hu) |
2023-07-18 18:38:39 +0200 | eggplantade | (~Eggplanta@2600:1700:38c5:d800:9801:f948:f484:2fb0) |
2023-07-18 18:42:19 +0200 | eggplantade | (~Eggplanta@2600:1700:38c5:d800:9801:f948:f484:2fb0) (Remote host closed the connection) |
2023-07-18 18:42:34 +0200 | eggplantade | (~Eggplanta@2600:1700:38c5:d800:9801:f948:f484:2fb0) |
2023-07-18 18:46:41 +0200 | misterfish | (~misterfis@84-53-85-146.bbserv.nl) |
2023-07-18 18:52:52 +0200 | eggplantade | (~Eggplanta@2600:1700:38c5:d800:9801:f948:f484:2fb0) (Remote host closed the connection) |
2023-07-18 18:56:35 +0200 | kuribas | (~user@ptr-17d51emwh8tjgyi2pjo.18120a2.ip6.access.telenet.be) (Quit: ERC (IRC client for Emacs 27.1)) |
2023-07-18 19:02:06 +0200 | kitzman | (~kitzman@user/dekenevs) |
2023-07-18 19:02:25 +0200 | azy | (~azy@92-249-193-183.pool.digikabel.hu) (Ping timeout: 240 seconds) |
2023-07-18 19:02:27 +0200 | berberman | (~berberman@user/berberman) (Quit: ZNC 1.8.2 - https://znc.in) |
2023-07-18 19:02:48 +0200 | berberman | (~berberman@user/berberman) |
2023-07-18 19:04:18 +0200 | azy | (~azy@178-164-206-51.pool.digikabel.hu) |
2023-07-18 19:07:12 +0200 | coot | (~coot@89-69-206-216.dynamic.chello.pl) (Quit: coot) |
2023-07-18 19:11:35 +0200 | zmt00 | (~zmt00@user/zmt00) |
2023-07-18 19:16:24 +0200 | trev | (~trev@user/trev) (Quit: trev) |
2023-07-18 19:18:48 +0200 | danse-nr3 | (~francesco@151.43.156.114) |
2023-07-18 19:19:30 +0200 | nick4 | (~nick@50.86.118.19) |
2023-07-18 19:22:50 +0200 | L29Ah | (~L29Ah@wikipedia/L29Ah) () |
2023-07-18 19:25:57 +0200 | nick4 | (~nick@50.86.118.19) (Ping timeout: 258 seconds) |
2023-07-18 19:26:12 +0200 | zmt01 | (~zmt00@user/zmt00) |
2023-07-18 19:28:17 +0200 | zmt00 | (~zmt00@user/zmt00) (Ping timeout: 246 seconds) |
2023-07-18 19:31:03 +0200 | swamp_ | (~zmt00@user/zmt00) |
2023-07-18 19:32:37 +0200 | eggplantade | (~Eggplanta@2600:1700:38c5:d800:9801:f948:f484:2fb0) |
2023-07-18 19:33:56 +0200 | zmt00 | (~zmt00@user/zmt00) |
2023-07-18 19:34:00 +0200 | zmt01 | (~zmt00@user/zmt00) (Ping timeout: 258 seconds) |
2023-07-18 19:34:08 +0200 | zmt00 | (~zmt00@user/zmt00) (Remote host closed the connection) |
2023-07-18 19:34:55 +0200 | gnalzo | (~gnalzo@2a01:e0a:498:fd50:fcc6:bb5d:489a:ce8c) (Quit: WeeChat 4.0.1) |
2023-07-18 19:35:08 +0200 | titibandit | (~titibandi@user/titibandit) |
2023-07-18 19:36:33 +0200 | swamp_ | (~zmt00@user/zmt00) (Ping timeout: 246 seconds) |
2023-07-18 19:36:52 +0200 | azy | (~azy@178-164-206-51.pool.digikabel.hu) (Ping timeout: 250 seconds) |
2023-07-18 19:37:34 +0200 | titibandit | (~titibandi@user/titibandit) (Remote host closed the connection) |
2023-07-18 19:38:26 +0200 | azy | (~azy@213-197-76-73.pool.digikabel.hu) |
2023-07-18 19:41:44 +0200 | bilegeek | (~bilegeek@2600:1008:b030:17ef:4afb:621d:1786:70ad) |
2023-07-18 19:47:02 +0200 | misterfish | (~misterfis@84-53-85-146.bbserv.nl) (Ping timeout: 245 seconds) |
2023-07-18 19:47:08 +0200 | <danse-nr3> | sorry, had to go |
2023-07-18 19:47:39 +0200 | <danse-nr3> | geekosaur, you are right, i never used exceptions and i thought that they leave track in the types :-/ |
2023-07-18 19:56:03 +0200 | <davean> | There are systems for tracking potential exceptions in the types but no one really uses them |
2023-07-18 19:56:32 +0200 | chele | (~chele@user/chele) (Remote host closed the connection) |
2023-07-18 19:57:23 +0200 | <davean> | https://hackage.haskell.org/package/control-monad-exception as an example, danse-nr3, it just can't can't possibly track all exceptions. |
2023-07-18 20:00:27 +0200 | <danse-nr3> | cheers |
2023-07-18 20:03:35 +0200 | <davean> | hat you can do and what is wise to do, or what you can do while still having other beneficial properties are all different things. |
2023-07-18 20:03:59 +0200 | <davean> | and do remember that you run into fundimental issues about computation and completeness when you try to catch all the edge cases. |
2023-07-18 20:04:22 +0200 | <davean> | (So there will be programs you can not write under some restrictions) |
2023-07-18 20:05:23 +0200 | ripspin | (~chatzilla@1.145.144.100) (Remote host closed the connection) |
2023-07-18 20:07:15 +0200 | eggplantade | (~Eggplanta@2600:1700:38c5:d800:9801:f948:f484:2fb0) (Remote host closed the connection) |
2023-07-18 20:07:17 +0200 | <danse-nr3> | yeah well i was mostly fighting for a safer `head`, nothing too impossible :) |
2023-07-18 20:07:21 +0200 | alexbiehl | (~alexbiehl@2a02:8108:323f:ca14:a9de:be07:3a81:7285) (Remote host closed the connection) |
2023-07-18 20:08:31 +0200 | <davean> | danse-nr3: lots of safer heads, take a look at the 'safe' package |
2023-07-18 20:08:35 +0200 | alexbiehl | (~alexbiehl@2a02:8108:323f:ca14:a9de:be07:3a81:7285) |
2023-07-18 20:08:39 +0200 | <davean> | also look at NonEmpty |
2023-07-18 20:09:08 +0200 | azy | (~azy@213-197-76-73.pool.digikabel.hu) (Ping timeout: 272 seconds) |
2023-07-18 20:10:24 +0200 | waleee | (~waleee@2001:9b0:21c:4000:5bf9:6515:c030:57b7) |
2023-07-18 20:10:32 +0200 | azy | (~azy@87-97-2-213.pool.digikabel.hu) |
2023-07-18 20:11:06 +0200 | <davean> | I actually use head a ton myself. For various reasons and various ways. I don't think its a bad thing to have handy but it does get a lot of hate for some good reasons. |
2023-07-18 20:11:23 +0200 | alexbiehl | (~alexbiehl@2a02:8108:323f:ca14:a9de:be07:3a81:7285) (Remote host closed the connection) |
2023-07-18 20:14:08 +0200 | mstksg | (~jle`@cpe-23-240-75-236.socal.res.rr.com) (Ping timeout: 246 seconds) |
2023-07-18 20:16:06 +0200 | mstksg | (~jle`@cpe-23-240-75-236.socal.res.rr.com) |
2023-07-18 20:24:58 +0200 | <monochrom> | I am OK with head too in e.g. map head . group |
2023-07-18 20:28:24 +0200 | <davean> | Right |
2023-07-18 20:28:36 +0200 | <davean> | Spending code to cover cases that can't exist is a waste. |
2023-07-18 20:29:09 +0200 | <davean> | is it locally obvious thats not going to happen? Good |
2023-07-18 20:29:30 +0200 | <davean> | Now one could say like NonEmpty should solve this, but we'd need an entire new prelude for that to be true |
2023-07-18 20:29:52 +0200 | <monochrom> | I feel like people are generally very religious about coding guidelines including "split 'f x = g x' into 4 lines to minimize diff when you change something" and "don't use head". |
2023-07-18 20:30:50 +0200 | <davean> | Yah and my religion is that that is bad |
2023-07-18 20:31:23 +0200 | <mniip> | I am strongly of the opinion that group should have a different type |
2023-07-18 20:31:45 +0200 | <davean> | well thats the NonEmpty claim, right? |
2023-07-18 20:31:55 +0200 | <mniip> | group is not in Prelude |
2023-07-18 20:32:01 +0200 | <mniip> | and NonEmpty is otherwise in base, so |
2023-07-18 20:32:42 +0200 | <mniip> | :t Data.List.NonEmpty.group -- we do have |
2023-07-18 20:32:43 +0200 | <lambdabot> | (Foldable f, Eq a) => f a -> [NonEmpty a] |
2023-07-18 20:33:45 +0200 | <davean> | yes but that doesn't map to all the other things in Prelude that are designed for list, and the libraries that are based off that. |
2023-07-18 20:33:52 +0200 | misterfish | (~misterfis@84-53-85-146.bbserv.nl) |
2023-07-18 20:33:54 +0200 | <davean> | Which was my point above |
2023-07-18 20:34:09 +0200 | <davean> | If I only had to work with my code I could do that everywhere |
2023-07-18 20:36:53 +0200 | danse-nr3 | (~francesco@151.43.156.114) (Ping timeout: 246 seconds) |
2023-07-18 20:38:42 +0200 | azy | (~azy@87-97-2-213.pool.digikabel.hu) (Ping timeout: 245 seconds) |
2023-07-18 20:39:52 +0200 | axel_ | (~axel@ipbcc0c12d.dynamic.kabel-deutschland.de) |
2023-07-18 20:40:39 +0200 | azy | (~azy@87-97-13-52.pool.digikabel.hu) |
2023-07-18 20:43:24 +0200 | axel_ | (~axel@ipbcc0c12d.dynamic.kabel-deutschland.de) (Client Quit) |
2023-07-18 20:44:00 +0200 | danse-nr3 | (~francesco@151.43.156.114) |
2023-07-18 20:44:08 +0200 | danse-nr3 | (~francesco@151.43.156.114) (Remote host closed the connection) |
2023-07-18 20:44:41 +0200 | danse-nr3 | (~francesco@151.43.156.114) |
2023-07-18 20:47:23 +0200 | dcoutts | (~duncan@cpc69402-oxfd27-2-0-cust903.4-3.cable.virginm.net) (Ping timeout: 246 seconds) |
2023-07-18 20:49:40 +0200 | <danse-nr3> | davean, yeah i know about `safe`, other preludes and NonEmpty, but the most accessible default behaviour matters. Anyways, not a big deal |
2023-07-18 20:51:58 +0200 | <yushyin> | so, pattern matching |
2023-07-18 20:52:12 +0200 | <danse-nr3> | ? |
2023-07-18 20:52:44 +0200 | <monochrom> | I like pattern matching. |
2023-07-18 20:52:56 +0200 | <danse-nr3> | yeah, it is great |
2023-07-18 20:53:22 +0200 | <monochrom> | http://www.vex.net/~trebla/haskell/crossroad.xhtml is how much I like pattern matching. |
2023-07-18 20:56:06 +0200 | alexbiehl | (~alexbiehl@ip4d14fda4.dynamic.kabel-deutschland.de) |
2023-07-18 20:58:09 +0200 | alexbiehl | (~alexbiehl@ip4d14fda4.dynamic.kabel-deutschland.de) (Remote host closed the connection) |
2023-07-18 20:58:59 +0200 | bontaq | (~user@ool-45779b84.dyn.optonline.net) (Remote host closed the connection) |
2023-07-18 20:59:14 +0200 | bontaq | (~user@ool-45779b84.dyn.optonline.net) |
2023-07-18 21:01:56 +0200 | jmdaemon | (~jmdaemon@user/jmdaemon) |
2023-07-18 21:02:23 +0200 | Inst | (~Inst@2601:6c4:4081:2fc0:c949:b3e0:9b04:3345) (Remote host closed the connection) |
2023-07-18 21:02:50 +0200 | Inst | (~Inst@2601:6c4:4081:2fc0:c949:b3e0:9b04:3345) |
2023-07-18 21:06:33 +0200 | mango | (~finn@176-151-21-224.abo.bbox.fr) |
2023-07-18 21:07:08 +0200 | Guest8732 | (~finn@176-151-21-224.abo.bbox.fr) |
2023-07-18 21:07:45 +0200 | eggplantade | (~Eggplanta@2600:1700:38c5:d800:9801:f948:f484:2fb0) |
2023-07-18 21:09:55 +0200 | trev | (~trev@user/trev) |
2023-07-18 21:10:00 +0200 | mechap | (~mechap@user/mechap) |
2023-07-18 21:12:02 +0200 | eggplantade | (~Eggplanta@2600:1700:38c5:d800:9801:f948:f484:2fb0) (Ping timeout: 246 seconds) |
2023-07-18 21:12:35 +0200 | azy | (~azy@87-97-13-52.pool.digikabel.hu) (Ping timeout: 264 seconds) |
2023-07-18 21:13:43 +0200 | bilegeek | (~bilegeek@2600:1008:b030:17ef:4afb:621d:1786:70ad) (Quit: Leaving) |
2023-07-18 21:13:48 +0200 | azy | (~azy@178-164-171-242.pool.digikabel.hu) |
2023-07-18 21:20:04 +0200 | mango | (~finn@176-151-21-224.abo.bbox.fr) (Ping timeout: 272 seconds) |
2023-07-18 21:20:46 +0200 | nate2 | (~nate@c-98-45-169-16.hsd1.ca.comcast.net) |
2023-07-18 21:21:48 +0200 | nick4 | (~nick@2600:8807:9084:7800:7d9d:fc42:d20d:9e35) |
2023-07-18 21:24:44 +0200 | machinedgod | (~machinedg@d198-53-218-113.abhsia.telus.net) |
2023-07-18 21:25:40 +0200 | nate2 | (~nate@c-98-45-169-16.hsd1.ca.comcast.net) (Ping timeout: 252 seconds) |
2023-07-18 21:26:15 +0200 | trev | (~trev@user/trev) (Quit: trev) |
2023-07-18 21:28:08 +0200 | hdggxin | (~hdggxin@122.175.41.19) (Ping timeout: 246 seconds) |
2023-07-18 21:30:17 +0200 | Everything | (~Everythin@static.208.206.21.65.clients.your-server.de) (Quit: leaving) |
2023-07-18 21:42:29 +0200 | Guest8732 | (~finn@176-151-21-224.abo.bbox.fr) (Ping timeout: 246 seconds) |
2023-07-18 21:42:52 +0200 | azy | (~azy@178-164-171-242.pool.digikabel.hu) (Ping timeout: 272 seconds) |
2023-07-18 21:43:52 +0200 | azy | (~azy@80-95-82-10.pool.digikabel.hu) |
2023-07-18 21:45:35 +0200 | dhil | (~dhil@78.45.150.83.ewm.ftth.as8758.net) (Ping timeout: 264 seconds) |
2023-07-18 21:54:45 +0200 | danse-nr3_ | (~francesco@151.43.135.188) |
2023-07-18 21:57:02 +0200 | danse-nr3 | (~francesco@151.43.156.114) (Ping timeout: 246 seconds) |
2023-07-18 22:07:49 +0200 | <jade[m]> | is there a way to ask hoogle for functions that return some Foo regardless of the args |
2023-07-18 22:11:20 +0200 | _ht | (~Thunderbi@28-52-174-82.ftth.glasoperator.nl) (Quit: _ht) |
2023-07-18 22:12:06 +0200 | azy | (~azy@80-95-82-10.pool.digikabel.hu) (Ping timeout: 245 seconds) |
2023-07-18 22:12:15 +0200 | <danse-nr3_> | lowercase letters seem to work, but you need to guess or try out different numbers of args |
2023-07-18 22:13:58 +0200 | azy | (~azy@87-97-13-59.pool.digikabel.hu) |
2023-07-18 22:14:22 +0200 | <jade[m]> | all I get for that is unsafeCoerce and friends |
2023-07-18 22:16:47 +0200 | ubert | (~Thunderbi@77.119.175.12.wireless.dyn.drei.com) (Ping timeout: 246 seconds) |
2023-07-18 22:18:10 +0200 | <danse-nr3_> | also for me those are the first results. The other results matching my type are at the bottom |
2023-07-18 22:22:23 +0200 | danse-nr3_ | (~francesco@151.43.135.188) (Quit: Leaving) |
2023-07-18 22:26:02 +0200 | dcoutts | (~duncan@cpc69402-oxfd27-2-0-cust903.4-3.cable.virginm.net) |
2023-07-18 22:29:47 +0200 | ai5lk | (~ai5lk@209-188-121-236.taosnet.com) |
2023-07-18 22:31:24 +0200 | titibandit | (~titibandi@user/titibandit) |
2023-07-18 22:34:44 +0200 | Inst | (~Inst@2601:6c4:4081:2fc0:c949:b3e0:9b04:3345) (Remote host closed the connection) |
2023-07-18 22:35:02 +0200 | Guest8732 | (~finn@176-151-21-224.abo.bbox.fr) |
2023-07-18 22:35:03 +0200 | Inst | (~Inst@2601:6c4:4081:2fc0:c949:b3e0:9b04:3345) |
2023-07-18 22:37:20 +0200 | fweht | (uid404746@id-404746.lymington.irccloud.com) (Quit: Connection closed for inactivity) |
2023-07-18 22:38:36 +0200 | azy | (~azy@87-97-13-59.pool.digikabel.hu) (Ping timeout: 272 seconds) |
2023-07-18 22:39:57 +0200 | azy | (~azy@94-21-33-111.pool.digikabel.hu) |
2023-07-18 22:41:43 +0200 | thegeekinside | (~thegeekin@189.217.90.138) (Read error: Connection reset by peer) |
2023-07-18 22:52:25 +0200 | hdggxin | (~hdggxin@122.175.41.19) |
2023-07-18 22:54:26 +0200 | azy | (~azy@94-21-33-111.pool.digikabel.hu) (Ping timeout: 272 seconds) |
2023-07-18 22:55:48 +0200 | azy | (~azy@77-234-92-243.pool.digikabel.hu) |
2023-07-18 22:59:43 +0200 | ai5lk | (~ai5lk@209-188-121-236.taosnet.com) (Quit: WeeChat 3.8) |
2023-07-18 23:07:16 +0200 | <hippoid> | is it possible to check that a function returns undefined? I'm trying to figure out how to write a unit test for that with tasty. example -- https://termbin.com/pjv5 |
2023-07-18 23:09:18 +0200 | <Rembane> | hippoid: There's quite a bit of discussion regarding this here: https://stackoverflow.com/questions/9392129/detect-bottom-value-in-haskell |
2023-07-18 23:09:55 +0200 | arahael_ | (~arahael@115-64-199-191.tpgi.com.au) |
2023-07-18 23:09:59 +0200 | <Rembane> | hippoid: The short answer is: use Maybe or Either instead, because then you can see what's happening in the type signature. |
2023-07-18 23:11:01 +0200 | <davean> | ttps://hackage.haskell.org/package/ChasingBottoms might help here though |
2023-07-18 23:11:08 +0200 | <hippoid> | Rembane: ok, i understand your point about Maybe or Either. this is more an academic exercise, opposed to production code, to see if it's possible. |
2023-07-18 23:11:13 +0200 | <glguy> | I've been using hspec and it has stuff like this https://hackage.haskell.org/package/hspec-expectations-0.8.3/docs/Test-Hspec-Expectations.html#g:2 |
2023-07-18 23:11:36 +0200 | <monochrom> | IMO there are only two rational specifications for myFunction: |
2023-07-18 23:12:19 +0200 | <davean> | hippoid: remember, everything that isn't defined, no matter how its not defined, is bottom |
2023-07-18 23:12:32 +0200 | <monochrom> | 1. If myFunction is allowed, but not required, to be a partial function, then requiring it to give bottom is over-specification, you should just leave it open instead. |
2023-07-18 23:12:33 +0200 | <davean> | so there can't be any general test because bottom isn't anything specific. |
2023-07-18 23:12:51 +0200 | <monochrom> | 2. Else, what everyone is saying, use Maybe. |
2023-07-18 23:13:16 +0200 | <mauke> | evalute foo `catch` \e -> ... |
2023-07-18 23:13:37 +0200 | <Rembane> | hippoid: No worries, is TDD involved in this question in some way? |
2023-07-18 23:13:40 +0200 | <davean> | mauke: that checks for exceptions. |
2023-07-18 23:14:03 +0200 | <mauke> | yes? |
2023-07-18 23:14:09 +0200 | <monochrom> | Unfortunately, undefined manifests as an exception, too. |
2023-07-18 23:14:14 +0200 | L29Ah | (~L29Ah@wikipedia/L29Ah) |
2023-07-18 23:14:38 +0200 | <monochrom> | ChasingBottoms probably does exactly that. |
2023-07-18 23:14:40 +0200 | <mauke> | @src undefined |
2023-07-18 23:14:41 +0200 | <lambdabot> | undefined = error "Prelude.undefined" |
2023-07-18 23:14:58 +0200 | <glguy> | https://gist.github.com/glguy/61ec83f6bebbe2bc39837b6390ea49dc |
2023-07-18 23:15:01 +0200 | arahael_ | (~arahael@115-64-199-191.tpgi.com.au) (Ping timeout: 245 seconds) |
2023-07-18 23:15:31 +0200 | <hippoid> | Rembane: no not really. I'm working through the book Haskell From First Principles, and have decided to write test suites as I go along to better acquaint myself with cabal and Tasty. One set of exercises asks the reader to predict whether an expression will return undefined or not. The exercises are related to the discussion of normal form and weak head normal form. |
2023-07-18 23:15:45 +0200 | <glguy> | hippoid: that gist shows an example of what I think you asked for with example output |
2023-07-18 23:15:51 +0200 | <monochrom> | Correction: ChasingBottom is that on steroid. |
2023-07-18 23:16:01 +0200 | <mauke> | glguy: nice |
2023-07-18 23:16:14 +0200 | <monochrom> | "evaluate the thing under a timeout `catch` \e -> case e of ...." |
2023-07-18 23:16:42 +0200 | <hippoid> | glguy: thank you. i wish hunit had something like that |
2023-07-18 23:17:01 +0200 | <glguy> | it probably does, I've just been using hspec lately |
2023-07-18 23:17:03 +0200 | justsomeguy | (~justsomeg@user/justsomeguy) |
2023-07-18 23:17:29 +0200 | <monochrom> | I think the point of the exercise is to test your understanding, not computer's understanding. |
2023-07-18 23:17:40 +0200 | <davean> | hippoid: its haaskell, most of these things can use each other's too. |
2023-07-18 23:18:05 +0200 | <glguy> | hippoid: you can use evaluate and catch yourself and then assert accordingly |
2023-07-18 23:18:23 +0200 | <glguy> | In this case you probably want `try` instead of `catch` , but it's not a big difference |
2023-07-18 23:19:19 +0200 | <monochrom> | Because by a Chinese Room argument, the computer already understands this. There is no need to test it. |
2023-07-18 23:19:55 +0200 | <monochrom> | The "intelligent" human, however... |
2023-07-18 23:20:32 +0200 | <monochrom> | And for the purpose of using the computer to check your answer, the REPL is sufficient. KISS. |
2023-07-18 23:20:51 +0200 | <Rembane> | hippoid: Cool! |
2023-07-18 23:20:52 +0200 | <mauke> | I will not kiss the computer |
2023-07-18 23:21:00 +0200 | <monochrom> | Example. I predict that head [] = 4, not bottom. |
2023-07-18 23:21:02 +0200 | <monochrom> | > head [] |
2023-07-18 23:21:03 +0200 | <lambdabot> | *Exception: Prelude.head: empty list |
2023-07-18 23:21:18 +0200 | <mauke> | the more interesting question is why head [] is not a type error |
2023-07-18 23:21:26 +0200 | <monochrom> | That says my prediction was wrong. There is nothing to catch. |
2023-07-18 23:21:59 +0200 | <davean> | mauke: what if we put it in a very human like case? |
2023-07-18 23:22:19 +0200 | <dolio> | Build a model of Haskell in Agda, and prove that your function returns undefined. |
2023-07-18 23:22:23 +0200 | <monochrom> | Then you're just kissing the case! >:D |
2023-07-18 23:22:36 +0200 | <mauke> | what, like a pacemaker? |
2023-07-18 23:22:43 +0200 | <monochrom> | hahahaha |
2023-07-18 23:23:25 +0200 | <monochrom> | I prefer s/Agda/Lean/ but yeah. |
2023-07-18 23:23:36 +0200 | <dolio> | Eh. |
2023-07-18 23:25:28 +0200 | notzmv | (~zmv@user/notzmv) (Ping timeout: 272 seconds) |
2023-07-18 23:27:37 +0200 | <monochrom> | I suppose you also want the irony of Haskell expressed in Agda but Agda is expressed in Haskell. :) |
2023-07-18 23:28:05 +0200 | <dolio> | Oh, that's true. |
2023-07-18 23:32:05 +0200 | cheater_ | (~Username@user/cheater) |
2023-07-18 23:34:11 +0200 | cheater | (~Username@user/cheater) (Ping timeout: 245 seconds) |
2023-07-18 23:34:20 +0200 | cheater_ | cheater |
2023-07-18 23:35:57 +0200 | Yumemi_ | (~Yumemi@chamoin.net) |
2023-07-18 23:38:50 +0200 | thelounge793 | (~thelounge@2a05:f480:1400:24b2:5400:4ff:fe76:a8f3) |
2023-07-18 23:38:50 +0200 | Yumemi | (~Yumemi@chamoin.net) (Ping timeout: 260 seconds) |
2023-07-18 23:41:08 +0200 | Unicorn_Princess | (~Unicorn_P@user/Unicorn-Princess/x-3540542) (Remote host closed the connection) |
2023-07-18 23:44:56 +0200 | gnalzo | (~gnalzo@2a01:e0a:498:fd50:fcc6:bb5d:489a:ce8c) |
2023-07-18 23:49:14 +0200 | justsomeguy | (~justsomeg@user/justsomeguy) (WeeChat 3.6) |
2023-07-18 23:50:12 +0200 | mei | (~mei@user/mei) (Remote host closed the connection) |
2023-07-18 23:52:16 +0200 | __monty__ | (~toonn@user/toonn) (Quit: leaving) |
2023-07-18 23:54:09 +0200 | titibandit | (~titibandi@user/titibandit) (Remote host closed the connection) |
2023-07-18 23:55:31 +0200 | takuan | (~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection) |
2023-07-18 23:55:52 +0200 | jonathan | (~jonathan@c83-252-3-92.bredband.tele2.se) (Ping timeout: 272 seconds) |
2023-07-18 23:57:52 +0200 | mei | (~mei@user/mei) |