2023-01-07 00:02:53 +0100 | Guest62 | (~Guest62@240f:a1:8a75:1:6d29:acad:cc8d:29c7) |
2023-01-07 00:04:08 +0100 | Guest62 | (~Guest62@240f:a1:8a75:1:6d29:acad:cc8d:29c7) (Client Quit) |
2023-01-07 00:05:30 +0100 | biberu | (~biberu@user/biberu) |
2023-01-07 00:05:34 +0100 | qy | (~ix@2a02:8010:674f:0:d65d:64ff:fe52:5efe) |
2023-01-07 00:11:16 +0100 | werneta | (~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net) (Quit: Lost terminal) |
2023-01-07 00:13:17 +0100 | qy | (~ix@2a02:8010:674f:0:d65d:64ff:fe52:5efe) (Quit: WeeChat 3.7.1) |
2023-01-07 00:17:59 +0100 | freeside | (~mengwong@103.252.202.159) (Ping timeout: 260 seconds) |
2023-01-07 00:21:41 +0100 | den_jc | (~lds@5.153.183.142) (Quit: Konversation terminated!) |
2023-01-07 00:24:36 +0100 | werneta | (~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net) |
2023-01-07 00:26:28 +0100 | Guest9971 | (~finn@roc37-h01-176-170-197-243.dsl.sta.abo.bbox.fr) (Ping timeout: 268 seconds) |
2023-01-07 00:30:02 +0100 | freeside | (~mengwong@103.252.202.159) |
2023-01-07 00:30:03 +0100 | mncheck | (~mncheck@193.224.205.254) (Ping timeout: 256 seconds) |
2023-01-07 00:31:45 +0100 | farmfrmjakestate | (~farmfrmja@user/farmfrmjakestate) (Ping timeout: 260 seconds) |
2023-01-07 00:33:16 +0100 | <Inst> | well, the actual question was supposed to be, can IO be thought of as a form of metaprogramming? |
2023-01-07 00:33:31 +0100 | <Inst> | I also saw an acquaintance's really weird looking IO code, I wouldn't go out and say it's bad |
2023-01-07 00:33:40 +0100 | <Inst> | but it was incredibly clunky |
2023-01-07 00:34:29 +0100 | freeside | (~mengwong@103.252.202.159) (Ping timeout: 268 seconds) |
2023-01-07 00:34:49 +0100 | <Inst> | https://ericnormand.me/podcast/is-haskell-the-best-procedural-language |
2023-01-07 00:38:45 +0100 | acidjnk | (~acidjnk@p54ad56b7.dip0.t-ipconnect.de) (Ping timeout: 260 seconds) |
2023-01-07 00:40:21 +0100 | mei | (~mei@user/mei) (Remote host closed the connection) |
2023-01-07 00:40:47 +0100 | mei | (~mei@user/mei) |
2023-01-07 00:41:39 +0100 | shriekingnoise | (~shrieking@186.137.175.87) (Quit: Quit) |
2023-01-07 00:42:58 +0100 | bgs | (~bgs@212-85-160-171.dynamic.telemach.net) (Remote host closed the connection) |
2023-01-07 00:46:29 +0100 | __monty__ | (~toonn@user/toonn) (Quit: leaving) |
2023-01-07 00:49:09 +0100 | freeside | (~mengwong@103.252.202.159) |
2023-01-07 00:50:38 +0100 | Guest7253 | (~Guest72@240f:a1:8a75:1:6d29:acad:cc8d:29c7) |
2023-01-07 00:53:18 +0100 | CoolMa7 | (~CoolMa7@2a02:8109:9d40:14ea:a80e:cf4d:c449:3c51) (Quit: Textual IRC Client: www.textualapp.com) |
2023-01-07 00:54:19 +0100 | ddellacosta | (~ddellacos@143.244.47.85) |
2023-01-07 00:56:17 +0100 | Guest7253 | (~Guest72@240f:a1:8a75:1:6d29:acad:cc8d:29c7) (Quit: Client closed) |
2023-01-07 00:56:53 +0100 | gnalzo | (~gnalzo@2a01:e0a:498:fd50:fcc6:bb5d:489a:ce8c) (Quit: WeeChat 3.7.1) |
2023-01-07 01:02:01 +0100 | sammelweis | (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Quit: No Ping reply in 180 seconds.) |
2023-01-07 01:03:08 +0100 | sammelweis | (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) |
2023-01-07 01:07:46 +0100 | ix | (~ix@2a02:8010:674f:0:d65d:64ff:fe52:5efe) |
2023-01-07 01:07:50 +0100 | ix | (~ix@2a02:8010:674f:0:d65d:64ff:fe52:5efe) (Client Quit) |
2023-01-07 01:09:59 +0100 | harveypwca | (~harveypwc@2601:246:c180:a570:3828:d8:e523:3f67) |
2023-01-07 01:10:35 +0100 | Guest72 | (~Guest72@240f:a1:8a75:1:6d29:acad:cc8d:29c7) |
2023-01-07 01:10:50 +0100 | Guest72 | (~Guest72@240f:a1:8a75:1:6d29:acad:cc8d:29c7) (Client Quit) |
2023-01-07 01:12:46 +0100 | justsomeguy | (~justsomeg@user/justsomeguy) |
2023-01-07 01:13:35 +0100 | xff0x | (~xff0x@p3326132-ipngn2103sapodori.hokkaido.ocn.ne.jp) |
2023-01-07 01:20:41 +0100 | titibandit1 | (~titibandi@xdsl-87-78-235-220.nc.de) |
2023-01-07 01:21:56 +0100 | shriekingnoise | (~shrieking@186.137.175.87) |
2023-01-07 01:27:24 +0100 | hyperbolic-dg | (~quassel@i577AA562.versanet.de) (Quit: https://quassel-irc.org - Komfortabler Chat. Überall.) |
2023-01-07 01:29:26 +0100 | johnjaye | (~pi@173.209.64.74) (Ping timeout: 252 seconds) |
2023-01-07 01:31:20 +0100 | johnjaye | (~pi@173.209.64.74) |
2023-01-07 01:31:23 +0100 | L29Ah | (~L29Ah@wikipedia/L29Ah) |
2023-01-07 01:36:32 +0100 | wroathe | (~wroathe@207-153-38-140.fttp.usinternet.com) |
2023-01-07 01:36:32 +0100 | wroathe | (~wroathe@207-153-38-140.fttp.usinternet.com) (Changing host) |
2023-01-07 01:36:32 +0100 | wroathe | (~wroathe@user/wroathe) |
2023-01-07 01:37:07 +0100 | titibandit1 | (~titibandi@xdsl-87-78-235-220.nc.de) (Remote host closed the connection) |
2023-01-07 01:50:40 +0100 | freeside | (~mengwong@103.252.202.159) (Ping timeout: 272 seconds) |
2023-01-07 01:51:47 +0100 | Tuplanolla | (~Tuplanoll@91-159-68-152.elisa-laajakaista.fi) (Quit: Leaving.) |
2023-01-07 02:00:22 +0100 | caryhartline | (~caryhartl@107.140.218.181) (Quit: caryhartline) |
2023-01-07 02:04:10 +0100 | freeside | (~mengwong@103.252.202.159) |
2023-01-07 02:04:34 +0100 | [itchyjunk] | (~itchyjunk@user/itchyjunk/x-7353470) |
2023-01-07 02:06:08 +0100 | mizlan | (~mizlan@c-67-169-7-31.hsd1.ca.comcast.net) (Ping timeout: 260 seconds) |
2023-01-07 02:07:08 +0100 | bontaq | (~user@ool-45779fe5.dyn.optonline.net) (Ping timeout: 272 seconds) |
2023-01-07 02:10:23 +0100 | albet70 | (~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection) |
2023-01-07 02:11:08 +0100 | fizbin | (~fizbin@user/fizbin) (Ping timeout: 246 seconds) |
2023-01-07 02:11:41 +0100 | sammelweis | (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Quit: No Ping reply in 180 seconds.) |
2023-01-07 02:11:47 +0100 | eggplantade | (~Eggplanta@2600:1700:38c5:d800:cc20:d690:f22b:cb00) (Remote host closed the connection) |
2023-01-07 02:12:02 +0100 | mizlan | (~mizlan@c-67-169-7-31.hsd1.ca.comcast.net) |
2023-01-07 02:12:03 +0100 | eggplantade | (~Eggplanta@2600:1700:38c5:d800:cc20:d690:f22b:cb00) |
2023-01-07 02:14:35 +0100 | justsomeguy | (~justsomeg@user/justsomeguy) (Ping timeout: 264 seconds) |
2023-01-07 02:16:30 +0100 | albet70 | (~xxx@2400:8902::f03c:92ff:fe60:98d8) |
2023-01-07 02:19:04 +0100 | sammelweis | (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) |
2023-01-07 02:27:55 +0100 | bilegeek | (~bilegeek@2600:1008:b02b:c49d:317:e6bb:7c61:3a0a) |
2023-01-07 02:29:56 +0100 | machinedgod | (~machinedg@d198-53-218-113.abhsia.telus.net) (Ping timeout: 252 seconds) |
2023-01-07 02:31:46 +0100 | melonai | (~mel@rnrd.eu) |
2023-01-07 02:31:54 +0100 | sammelweis | (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Quit: No Ping reply in 180 seconds.) |
2023-01-07 02:33:10 +0100 | sammelweis | (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) |
2023-01-07 02:33:14 +0100 | mechap | (~mechap@user/mechap) (Ping timeout: 246 seconds) |
2023-01-07 02:35:16 +0100 | mechap | (~mechap@user/mechap) |
2023-01-07 02:38:22 +0100 | wroathe | (~wroathe@user/wroathe) (Ping timeout: 252 seconds) |
2023-01-07 02:38:55 +0100 | xff0x | (~xff0x@p3326132-ipngn2103sapodori.hokkaido.ocn.ne.jp) (Ping timeout: 260 seconds) |
2023-01-07 02:39:52 +0100 | merijn | (~merijn@86-86-29-250.fixed.kpn.net) |
2023-01-07 02:45:08 +0100 | merijn | (~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 272 seconds) |
2023-01-07 02:49:32 +0100 | mizlan | (~mizlan@c-67-169-7-31.hsd1.ca.comcast.net) (Ping timeout: 268 seconds) |
2023-01-07 02:50:41 +0100 | razetime | (~Thunderbi@49.207.222.244) |
2023-01-07 02:55:09 +0100 | mizlan | (~mizlan@c-67-169-7-31.hsd1.ca.comcast.net) |
2023-01-07 02:55:54 +0100 | beteigeuze | (~Thunderbi@bl14-81-220.dsl.telepac.pt) (Ping timeout: 272 seconds) |
2023-01-07 02:56:04 +0100 | <Inst> | is there any research on sequenceA_ + list based metaprogramming in Haskell? |
2023-01-07 02:58:01 +0100 | wroathe | (~wroathe@207-153-38-140.fttp.usinternet.com) |
2023-01-07 02:58:01 +0100 | wroathe | (~wroathe@207-153-38-140.fttp.usinternet.com) (Changing host) |
2023-01-07 02:58:02 +0100 | wroathe | (~wroathe@user/wroathe) |
2023-01-07 03:01:13 +0100 | Neuromancer | (~Neuromanc@user/neuromancer) (Quit: Going offline, see ya! (www.adiirc.com)) |
2023-01-07 03:08:25 +0100 | wroathe | (~wroathe@user/wroathe) (Quit: leaving) |
2023-01-07 03:15:29 +0100 | azimut_ | (~azimut@gateway/tor-sasl/azimut) (Ping timeout: 255 seconds) |
2023-01-07 03:20:55 +0100 | bilegeek | (~bilegeek@2600:1008:b02b:c49d:317:e6bb:7c61:3a0a) (Ping timeout: 260 seconds) |
2023-01-07 03:23:00 +0100 | bilegeek | (~bilegeek@2600:1008:b02b:c49d:317:e6bb:7c61:3a0a) |
2023-01-07 03:32:49 +0100 | son0p | (~ff@2604:3d08:5b7f:5540:98a9:2169:15a1:4c7f) |
2023-01-07 03:36:03 +0100 | tremon | (~tremon@83-85-213-108.cable.dynamic.v4.ziggo.nl) (Quit: getting boxed in) |
2023-01-07 03:37:05 +0100 | <mauke> | :t sequenceA_ |
2023-01-07 03:37:06 +0100 | <lambdabot> | (Foldable t, Applicative f) => t (f a) -> f () |
2023-01-07 03:41:19 +0100 | teddyc | (theodorc@cassarossa.samfundet.no) (Ping timeout: 260 seconds) |
2023-01-07 03:47:04 +0100 | ix | (~ix@2a02:8010:674f:1:2641:8cff:fe93:cdb2) |
2023-01-07 03:49:20 +0100 | boxscape_ | (~boxscape_@81.191.27.107) |
2023-01-07 03:49:57 +0100 | <boxscape_> | oof. Usually you can write `withFrozenCallStack $ error $ "foo"`, but *not* `withFrozenCallStack . error $ "foo"`. (you'd get a type error). |
2023-01-07 03:50:06 +0100 | <boxscape_> | but with impredicative types you *can* write it |
2023-01-07 03:50:14 +0100 | <boxscape_> | But if you do, it doesn't actually freeze the callstack |
2023-01-07 03:50:26 +0100 | <boxscape_> | took me a minute to figure out what happened there |
2023-01-07 03:54:38 +0100 | ix | (~ix@2a02:8010:674f:1:2641:8cff:fe93:cdb2) (Quit: WeeChat 3.7.1) |
2023-01-07 03:56:15 +0100 | fizbin | (~fizbin@user/fizbin) |
2023-01-07 03:57:04 +0100 | ix | (~ix@2a02:8010:674f:1:2641:8cff:fe93:cdb2) |
2023-01-07 03:57:11 +0100 | ciarltb^ | (~ciarltb@76.145.190.81) (Remote host closed the connection) |
2023-01-07 03:59:51 +0100 | AlexNoo | (~AlexNoo@178.34.150.228) (Read error: Connection reset by peer) |
2023-01-07 04:02:03 +0100 | AlexZenon | (~alzenon@178.34.150.228) (Ping timeout: 252 seconds) |
2023-01-07 04:02:05 +0100 | Alex_test | (~al_test@178.34.150.228) (Ping timeout: 246 seconds) |
2023-01-07 04:06:12 +0100 | mizlan | (~mizlan@c-67-169-7-31.hsd1.ca.comcast.net) (Ping timeout: 272 seconds) |
2023-01-07 04:08:00 +0100 | ix | (~ix@2a02:8010:674f:1:2641:8cff:fe93:cdb2) (Quit: WeeChat 3.7.1) |
2023-01-07 04:10:38 +0100 | td_ | (~td@83.135.9.2) (Ping timeout: 272 seconds) |
2023-01-07 04:11:17 +0100 | machinedgod | (~machinedg@d198-53-218-113.abhsia.telus.net) |
2023-01-07 04:12:00 +0100 | td_ | (~td@83.135.9.51) |
2023-01-07 04:13:27 +0100 | v0id_ptr | (~adrift@user/ptr-frac7al/x-0038398) |
2023-01-07 04:13:54 +0100 | bilegeek | (~bilegeek@2600:1008:b02b:c49d:317:e6bb:7c61:3a0a) (Quit: Leaving) |
2023-01-07 04:22:29 +0100 | [itchyjunk] | (~itchyjunk@user/itchyjunk/x-7353470) (Remote host closed the connection) |
2023-01-07 04:24:09 +0100 | fizbin | (~fizbin@user/fizbin) (Ping timeout: 260 seconds) |
2023-01-07 04:31:39 +0100 | ix | (~ix@2a02:8010:674f:1:2641:8cff:fe93:cdb2) |
2023-01-07 04:33:33 +0100 | ix | (~ix@2a02:8010:674f:1:2641:8cff:fe93:cdb2) (Client Quit) |
2023-01-07 04:35:46 +0100 | mizlan | (~mizlan@c-67-169-7-31.hsd1.ca.comcast.net) |
2023-01-07 04:45:09 +0100 | ddellacosta | (~ddellacos@143.244.47.85) (Ping timeout: 260 seconds) |
2023-01-07 04:50:18 +0100 | AlexNoo | (~AlexNoo@178.34.160.114) |
2023-01-07 04:51:19 +0100 | Alex_test | (~al_test@178.34.160.114) |
2023-01-07 04:51:39 +0100 | ix | (~ix@2a02:8010:674f:1:2641:8cff:fe93:cdb2) |
2023-01-07 04:51:49 +0100 | AlexZenon | (~alzenon@178.34.160.114) |
2023-01-07 04:57:01 +0100 | waleee | (~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340) (Ping timeout: 252 seconds) |
2023-01-07 04:59:37 +0100 | finn_elija | (~finn_elij@user/finn-elija/x-0085643) |
2023-01-07 04:59:37 +0100 | FinnElija | (~finn_elij@user/finn-elija/x-0085643) (Killed (NickServ (Forcing logout FinnElija -> finn_elija))) |
2023-01-07 04:59:37 +0100 | finn_elija | FinnElija |
2023-01-07 05:03:21 +0100 | machinedgod | (~machinedg@d198-53-218-113.abhsia.telus.net) (Ping timeout: 268 seconds) |
2023-01-07 05:08:54 +0100 | AlexNoo | (~AlexNoo@178.34.160.114) (Read error: Connection reset by peer) |
2023-01-07 05:12:34 +0100 | Alex_test | (~al_test@178.34.160.114) (Ping timeout: 260 seconds) |
2023-01-07 05:12:42 +0100 | AlexZenon | (~alzenon@178.34.160.114) (Ping timeout: 272 seconds) |
2023-01-07 05:15:52 +0100 | freeside | (~mengwong@103.252.202.159) (Ping timeout: 272 seconds) |
2023-01-07 05:23:03 +0100 | AlexNoo | (~AlexNoo@178.34.160.38) |
2023-01-07 05:23:50 +0100 | Alex_test | (~al_test@178.34.160.38) |
2023-01-07 05:24:41 +0100 | AlexZenon | (~alzenon@178.34.160.38) |
2023-01-07 05:26:10 +0100 | justsomeguy | (~justsomeg@user/justsomeguy) |
2023-01-07 05:27:21 +0100 | freeside | (~mengwong@103.252.202.159) |
2023-01-07 05:34:55 +0100 | ix | (~ix@2a02:8010:674f:1:2641:8cff:fe93:cdb2) (Quit: WeeChat 3.7.1) |
2023-01-07 05:38:18 +0100 | libertyprime | (~libertypr@203.96.203.167) |
2023-01-07 05:38:51 +0100 | AlexNoo | (~AlexNoo@178.34.160.38) (Read error: Connection reset by peer) |
2023-01-07 05:39:59 +0100 | razetime | (~Thunderbi@49.207.222.244) (Remote host closed the connection) |
2023-01-07 05:40:47 +0100 | Alex_test | (~al_test@178.34.160.38) (Ping timeout: 246 seconds) |
2023-01-07 05:42:35 +0100 | Kaipei | (~Kaiepi@nwcsnbsc03w-47-55-159-86.dhcp-dynamic.fibreop.nb.bellaliant.net) (Ping timeout: 246 seconds) |
2023-01-07 05:42:40 +0100 | AlexZenon | (~alzenon@178.34.160.38) (Ping timeout: 252 seconds) |
2023-01-07 05:49:44 +0100 | wootehfoot | (~wootehfoo@user/wootehfoot) (Read error: Connection reset by peer) |
2023-01-07 05:55:06 +0100 | harveypwca | (~harveypwc@2601:246:c180:a570:3828:d8:e523:3f67) (Quit: Leaving) |
2023-01-07 06:03:37 +0100 | rnat | (uid73555@id-73555.lymington.irccloud.com) |
2023-01-07 06:06:05 +0100 | ix | (~ix@2a02:8010:674f:1:2641:8cff:fe93:cdb2) |
2023-01-07 06:09:18 +0100 | FiorTheDog | (~Srain@2601:640:8a00:584:8158:bce4:e149:ce4) |
2023-01-07 06:10:10 +0100 | ix | (~ix@2a02:8010:674f:1:2641:8cff:fe93:cdb2) (Client Quit) |
2023-01-07 06:12:04 +0100 | FiorTheDog | (~Srain@2601:640:8a00:584:8158:bce4:e149:ce4) (Leave.) |
2023-01-07 06:24:53 +0100 | AlexNoo | (~AlexNoo@178.34.160.164) |
2023-01-07 06:26:03 +0100 | Alex_test | (~al_test@178.34.160.164) |
2023-01-07 06:29:27 +0100 | AlexZenon | (~alzenon@178.34.160.164) |
2023-01-07 06:31:14 +0100 | freeside | (~mengwong@103.252.202.159) (Ping timeout: 272 seconds) |
2023-01-07 06:38:09 +0100 | ix | (~ix@2a02:8010:674f:1:2641:8cff:fe93:cdb2) |
2023-01-07 06:43:11 +0100 | freeside | (~mengwong@103.252.202.159) |
2023-01-07 06:44:47 +0100 | ix | (~ix@2a02:8010:674f:1:2641:8cff:fe93:cdb2) (Quit: WeeChat 3.7.1) |
2023-01-07 06:48:20 +0100 | freeside | (~mengwong@103.252.202.159) (Ping timeout: 272 seconds) |
2023-01-07 06:56:06 +0100 | freeside | (~mengwong@103.252.202.159) |
2023-01-07 07:06:04 +0100 | jao | (~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net) (Ping timeout: 268 seconds) |
2023-01-07 07:13:53 +0100 | jinsun | (~jinsun@user/jinsun) (Ping timeout: 255 seconds) |
2023-01-07 07:14:27 +0100 | ix | (~ix@2a02:8010:674f:0:d65d:64ff:fe52:5efe) |
2023-01-07 07:16:24 +0100 | jinsun | (~jinsun@user/jinsun) |
2023-01-07 07:19:14 +0100 | ix | (~ix@2a02:8010:674f:0:d65d:64ff:fe52:5efe) (Ping timeout: 252 seconds) |
2023-01-07 07:19:38 +0100 | ix | (~ix@2a02:8010:674f:0:d65d:64ff:fe52:5efe) |
2023-01-07 07:20:54 +0100 | mizlan | (~mizlan@c-67-169-7-31.hsd1.ca.comcast.net) (Ping timeout: 260 seconds) |
2023-01-07 07:21:58 +0100 | <freeside> | so, I'm lacking a word for a thing. If I have a 1 dimensional array I use Data.Vector. If I have a 2 dimensional array I use Data.Matrix. If I need to go to 3 or more dimensions, I need ... |
2023-01-07 07:22:15 +0100 | <freeside> | i'm looking at https://github.com/achirkin/easytensor |
2023-01-07 07:23:27 +0100 | <boxscape_> | you've found your answer then? Tensor is the word I'd use |
2023-01-07 07:23:53 +0100 | <freeside> | ok, just making sure. There seem to be a bunch of libraries for tensors, is there a generally accepted choice? |
2023-01-07 07:24:16 +0100 | <boxscape_> | I can't help you there but hopefully someone else can |
2023-01-07 07:25:16 +0100 | <freeside> | thank you, grateful. I was two class instances deep into writing my own Collection k a when I was like, surely I do not need to reinvent this wheel. |
2023-01-07 07:25:58 +0100 | <freeside> | i just want to fmap (+1) over an data structure of arbitrary dimension, is that too much for a girl to ask? |
2023-01-07 07:26:31 +0100 | <boxscape_> | yeah that sounds like a reasonable request :D |
2023-01-07 07:26:52 +0100 | razetime | (~Thunderbi@49.207.222.244) |
2023-01-07 07:28:52 +0100 | Ram-Z | (~Ram-Z@li1814-254.members.linode.com) (Ping timeout: 272 seconds) |
2023-01-07 07:32:35 +0100 | v0id_ptr | (~adrift@user/ptr-frac7al/x-0038398) (Ping timeout: 268 seconds) |
2023-01-07 07:35:57 +0100 | tromp | (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
2023-01-07 07:42:41 +0100 | Ram-Z | (~Ram-Z@li1814-254.members.linode.com) |
2023-01-07 07:43:34 +0100 | abhixec | (~abhinav@c-67-169-139-16.hsd1.ca.comcast.net) |
2023-01-07 07:43:39 +0100 | Lycurgus | (~juan@user/Lycurgus) |
2023-01-07 07:46:55 +0100 | justsomeguy | (~justsomeg@user/justsomeguy) (Ping timeout: 260 seconds) |
2023-01-07 07:47:50 +0100 | notzmv | (~zmv@user/notzmv) (Ping timeout: 246 seconds) |
2023-01-07 07:49:21 +0100 | Lycurgus | (~juan@user/Lycurgus) (Quit: Exeunt: personae.ai-integration.biz) |
2023-01-07 07:54:03 +0100 | mizlan | (~mizlan@c-67-169-7-31.hsd1.ca.comcast.net) |
2023-01-07 07:54:56 +0100 | tromp | (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
2023-01-07 07:56:00 +0100 | trev | (~trev@user/trev) |
2023-01-07 07:58:29 +0100 | mizlan | (~mizlan@c-67-169-7-31.hsd1.ca.comcast.net) (Ping timeout: 268 seconds) |
2023-01-07 08:00:40 +0100 | echoreply | (~echoreply@45.32.163.16) (Quit: WeeChat 2.8) |
2023-01-07 08:07:23 +0100 | Xeroine | (~Xeroine@user/xeroine) (Ping timeout: 264 seconds) |
2023-01-07 08:09:30 +0100 | Xeroine | (~Xeroine@user/xeroine) |
2023-01-07 08:12:17 +0100 | rnat | (uid73555@id-73555.lymington.irccloud.com) (Quit: Connection closed for inactivity) |
2023-01-07 08:12:48 +0100 | mizlan | (~mizlan@c-67-169-7-31.hsd1.ca.comcast.net) |
2023-01-07 08:14:38 +0100 | <davean> | freeside: you can also just make Vectors of Vectors. |
2023-01-07 08:15:04 +0100 | <davean> | The rest is an inteface problem :-p |
2023-01-07 08:16:02 +0100 | Guest9971 | (~finn@roc37-h01-176-170-197-243.dsl.sta.abo.bbox.fr) |
2023-01-07 08:16:11 +0100 | <davean> | But yah, there are a bunch of half solutions |
2023-01-07 08:17:26 +0100 | <davean> | Or over complicated ones for not really that goal |
2023-01-07 08:17:29 +0100 | mizlan | (~mizlan@c-67-169-7-31.hsd1.ca.comcast.net) (Ping timeout: 260 seconds) |
2023-01-07 08:17:32 +0100 | <davean> | its an area we could really improve on |
2023-01-07 08:18:10 +0100 | <freeside> | mmm, i see |
2023-01-07 08:20:07 +0100 | mizlan | (~mizlan@c-67-169-7-31.hsd1.ca.comcast.net) |
2023-01-07 08:20:31 +0100 | <Logio> | If you're not looking to do (multi)linear algebra, then you should look at arrays instead of tensors, IMO |
2023-01-07 08:21:08 +0100 | <davean> | Like Repa is SUPER complicated |
2023-01-07 08:21:22 +0100 | <davean> | (and focuses on parallelism) |
2023-01-07 08:22:26 +0100 | <freeside> | okay. i'm basically trying to organize relatively simple tabular data, the way people use spreadsheets to do 80% of what SQL databases are used for |
2023-01-07 08:23:24 +0100 | <freeside> | my first attempt was a Map k (Map j a) which is OK but when i realized i needed a transpose function i thought i'd shop around for wheels that had already been invented |
2023-01-07 08:24:21 +0100 | <Logio> | if you wan't transposes, it's doesn't sound like simple tabular data? |
2023-01-07 08:24:28 +0100 | <freeside> | i'd be ok with a Data.Matrix, I just need some overhead to maintain column/row header titles for ease of access |
2023-01-07 08:24:40 +0100 | <freeside> | sometimes you need to add the columns, sometimes you need to add the rows, is all |
2023-01-07 08:26:07 +0100 | mizlan | (~mizlan@c-67-169-7-31.hsd1.ca.comcast.net) (Remote host closed the connection) |
2023-01-07 08:26:29 +0100 | <Logio> | then something like easytensor is probably what you want |
2023-01-07 08:26:51 +0100 | mizlan | (~mizlan@c-67-169-7-31.hsd1.ca.comcast.net) |
2023-01-07 08:27:00 +0100 | davean | hands Logio an OLAP Cube |
2023-01-07 08:27:01 +0100 | caryhartline | (~caryhartl@2600:1700:2d0:8d30:6884:b2dc:6ddb:78f2) |
2023-01-07 08:29:00 +0100 | <Logio> | davean: first time I've heard of OLAP, I guess I should consider myself lucky for that |
2023-01-07 08:29:56 +0100 | <Logio> | OTOH I've done quite a bit of work on hyperspectral datacubes (also implemented pretty much the equivalent of easytensor (or xarray in Python) for those in Matlab |
2023-01-07 08:30:53 +0100 | <Logio> | compared to anything like those I'd say Repa is much less complicated :) |
2023-01-07 08:32:43 +0100 | <Logio> | for the complicated cases you basically want an in-memory relational database |
2023-01-07 08:36:00 +0100 | <[Leary]> | freeside: You might be interested in https://github.com/mixphix/deep-map |
2023-01-07 08:36:12 +0100 | <freeside> | for my minilanguage, I'm instantiating my Exprs into Foldable, Ord, Eq, Semigroup, Num so as to be able to evaluate sentences like "given seven categories of net income, reduce net incomes, pro rata, of those categories which have positive net incomes, by the negative net incomes, leaving the previously negative net incomes at 0 after the reduction." |
2023-01-07 08:36:43 +0100 | <freeside> | this stuff is terribly tedious and reduces to a bunch of filters and fmaps and sums and so on, i just need to lift those ideas into a DSL |
2023-01-07 08:38:05 +0100 | <freeside> | in the columns, i have things like "income", "expenses", "extraordinary income", "extraordinary expenses", and then in the rows I have "due to employment" "due to rent" "due to agricultural activity" and so on |
2023-01-07 08:38:51 +0100 | <freeside> | DeepMap looks very close to what I would want |
2023-01-07 08:41:03 +0100 | <freeside> | i will extra-deps it into my stack.yaml |
2023-01-07 08:43:37 +0100 | sammelweis | (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Quit: No Ping reply in 180 seconds.) |
2023-01-07 08:43:40 +0100 | hrberg | (~quassel@171.79-160-161.customer.lyse.net) (Quit: https://quassel-irc.org - Chat comfortably. Anywhere.) |
2023-01-07 08:43:57 +0100 | Unicorn_Princess | (~Unicorn_P@user/Unicorn-Princess/x-3540542) (Remote host closed the connection) |
2023-01-07 08:44:14 +0100 | acidjnk | (~acidjnk@p200300d6e715c42934bb1e2b0605c41b.dip0.t-ipconnect.de) |
2023-01-07 08:45:28 +0100 | hrberg | (~quassel@171.79-160-161.customer.lyse.net) |
2023-01-07 08:45:40 +0100 | sammelweis | (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) |
2023-01-07 08:52:19 +0100 | igghibu | (~igghibu@178.249.211.75) |
2023-01-07 08:55:02 +0100 | tromp | (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
2023-01-07 08:56:22 +0100 | <razetime> | where can I learn more advanced concepts of haskell beyond basic tutorials? |
2023-01-07 08:56:46 +0100 | <razetime> | i found only 3 links on the wiki here: https://wiki.haskell.org/Learning_Haskell#Advanced_tutorials |
2023-01-07 08:58:36 +0100 | sammelweis | (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Quit: No Ping reply in 180 seconds.) |
2023-01-07 09:01:30 +0100 | <freeside> | https://wiki.haskell.org/Learning_Haskell#Material_for_self-study says "If you want to dig deeper, see Books and tutorials. |
2023-01-07 09:01:42 +0100 | <freeside> | you could look at If you want to dig deeper, see Books and tutorials. |
2023-01-07 09:01:58 +0100 | <freeside> | sorry, i meant to paste If you want to dig deeper, see Books and tutorials. |
2023-01-07 09:02:01 +0100 | <freeside> | asdfaser |
2023-01-07 09:02:17 +0100 | <freeside> | my paste is borked, sorry. https://blog.ocharles.org.uk/pages/2014-12-01-24-days-of-ghc-extensions.html |
2023-01-07 09:02:29 +0100 | sammelweis | (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) |
2023-01-07 09:08:10 +0100 | sammelweis | (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Quit: No Ping reply in 180 seconds.) |
2023-01-07 09:09:23 +0100 | eggplantade | (~Eggplanta@2600:1700:38c5:d800:cc20:d690:f22b:cb00) (Remote host closed the connection) |
2023-01-07 09:11:07 +0100 | sammelweis | (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) |
2023-01-07 09:12:00 +0100 | <freeside> | https://aphyr.com/posts/342-typing-the-technical-interview |
2023-01-07 09:14:36 +0100 | <jackdk> | razetime: http://jackkelly.name/wiki/haskell.html is my curated list |
2023-01-07 09:21:19 +0100 | caryhartline | (~caryhartl@2600:1700:2d0:8d30:6884:b2dc:6ddb:78f2) (Quit: caryhartline) |
2023-01-07 09:26:36 +0100 | mei_ | (~mei@user/mei) |
2023-01-07 09:28:42 +0100 | sammelweis | (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Quit: No Ping reply in 180 seconds.) |
2023-01-07 09:29:16 +0100 | mei | (~mei@user/mei) (Ping timeout: 252 seconds) |
2023-01-07 09:29:20 +0100 | mizlan | (~mizlan@c-67-169-7-31.hsd1.ca.comcast.net) (Ping timeout: 255 seconds) |
2023-01-07 09:32:26 +0100 | sammelweis | (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) |
2023-01-07 09:36:49 +0100 | sammelweis | (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Ping timeout: 252 seconds) |
2023-01-07 09:37:05 +0100 | moet | (~moet@mobile-166-171-251-105.mycingular.net) |
2023-01-07 09:38:20 +0100 | Guest9971 | (~finn@roc37-h01-176-170-197-243.dsl.sta.abo.bbox.fr) (Ping timeout: 255 seconds) |
2023-01-07 09:38:38 +0100 | <moet> | Any idea where the Monoid constraint comes from in this applicative oneliner? https://paste.tomsmeding.com/3S0jgbym |
2023-01-07 09:40:17 +0100 | Vajb | (~Vajb@2001:999:405:5eb2:8d39:b832:a9ee:9bdf) (Read error: Connection reset by peer) |
2023-01-07 09:40:34 +0100 | freemanX | (~user@14.100.44.229) |
2023-01-07 09:41:09 +0100 | Vajb | (~Vajb@hag-jnsbng11-58c3a5-27.dhcp.inet.fi) |
2023-01-07 09:41:56 +0100 | trev | (~trev@user/trev) (Read error: Connection reset by peer) |
2023-01-07 09:42:12 +0100 | trev | (~trev@user/trev) |
2023-01-07 09:42:38 +0100 | sammelweis | (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) |
2023-01-07 09:42:54 +0100 | <[Leary]> | % :t pure @((,) _) |
2023-01-07 09:42:54 +0100 | <yahb2> | pure @((,) _) :: Monoid w => a -> (w, a) |
2023-01-07 09:43:12 +0100 | <[Leary]> | You can't write pure without it. |
2023-01-07 09:44:47 +0100 | <freeside> | https://hackage.haskell.org/package/base-4.17.0.0/docs/src/GHC.Base.html#line-469 |
2023-01-07 09:45:49 +0100 | <moet> | Ah, its on the instance head. weird. |
2023-01-07 09:46:09 +0100 | <razetime> | jackdk: thanks a lot |
2023-01-07 09:46:21 +0100 | <moet> | `pure x = (mempty, x)` |
2023-01-07 09:46:25 +0100 | <moet> | thanks [Leary] freeside |
2023-01-07 09:48:50 +0100 | mizlan | (~mizlan@c-67-169-7-31.hsd1.ca.comcast.net) |
2023-01-07 09:49:31 +0100 | bilegeek | (~bilegeek@103.sub-174-208-234.myvzw.com) |
2023-01-07 09:51:29 +0100 | sammelweis | (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Ping timeout: 252 seconds) |
2023-01-07 09:52:51 +0100 | Umeaboy | (~Umeaboy@94-255-145-133.cust.bredband2.com) |
2023-01-07 09:52:54 +0100 | <Umeaboy> | Hi! |
2023-01-07 09:53:08 +0100 | <boxscape_> | hi |
2023-01-07 09:53:41 +0100 | <Umeaboy> | Why is the README.md telling users to run build source-dist when it isn't working inside the hadrian folder? |
2023-01-07 09:53:48 +0100 | mizlan | (~mizlan@c-67-169-7-31.hsd1.ca.comcast.net) (Ping timeout: 268 seconds) |
2023-01-07 09:53:49 +0100 | <Umeaboy> | Is the documentation a bit outdated? |
2023-01-07 09:54:11 +0100 | <Umeaboy> | I'm trying to get a grip of it so that I can build and port it to Mageia. |
2023-01-07 09:54:34 +0100 | <Umeaboy> | I have completed the first stage. |
2023-01-07 09:54:40 +0100 | Vajb | (~Vajb@hag-jnsbng11-58c3a5-27.dhcp.inet.fi) (Read error: Connection reset by peer) |
2023-01-07 09:54:40 +0100 | <Umeaboy> | That went fine. |
2023-01-07 09:54:52 +0100 | <boxscape_> | you're talking about building ghc? You might get better answers in #ghc |
2023-01-07 09:54:52 +0100 | <Umeaboy> | I'm reading what to do next. |
2023-01-07 09:54:57 +0100 | <Umeaboy> | OK. |
2023-01-07 09:54:59 +0100 | <Umeaboy> | Sorry. |
2023-01-07 09:55:01 +0100 | <Umeaboy> | :) |
2023-01-07 09:55:12 +0100 | <boxscape_> | no worries |
2023-01-07 09:55:59 +0100 | <boxscape_> | (though this isn't the most active time of day for either channel) |
2023-01-07 09:56:06 +0100 | sammelweis | (~quassel@c-68-48-18-140.hsd1.mi.comcast.net) |
2023-01-07 09:57:06 +0100 | notzmv | (~zmv@user/notzmv) |
2023-01-07 09:57:31 +0100 | Vajb | (~Vajb@2001:999:405:5eb2:8d39:b832:a9ee:9bdf) |
2023-01-07 09:59:26 +0100 | eggplantade | (~Eggplanta@2600:1700:38c5:d800:cc20:d690:f22b:cb00) |
2023-01-07 10:00:37 +0100 | trev | (~trev@user/trev) (Remote host closed the connection) |
2023-01-07 10:01:00 +0100 | trev | (~trev@user/trev) |
2023-01-07 10:07:43 +0100 | mizlan | (~mizlan@c-67-169-7-31.hsd1.ca.comcast.net) |
2023-01-07 10:10:42 +0100 | kee | (~~kee@user/wizzwizz4) (Read error: Connection reset by peer) |
2023-01-07 10:11:25 +0100 | kee | (~~kee@user/wizzwizz4) |
2023-01-07 10:17:41 +0100 | moet | (~moet@mobile-166-171-251-105.mycingular.net) (Quit: leaving) |
2023-01-07 10:18:58 +0100 | sammelweis | (~quassel@c-68-48-18-140.hsd1.mi.comcast.net) (Quit: No Ping reply in 180 seconds.) |
2023-01-07 10:20:15 +0100 | sammelweis | (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) |
2023-01-07 10:20:31 +0100 | igghibu | (~igghibu@178.249.211.75) (Quit: igghibu) |
2023-01-07 10:22:04 +0100 | acidjnk | (~acidjnk@p200300d6e715c42934bb1e2b0605c41b.dip0.t-ipconnect.de) (Ping timeout: 252 seconds) |
2023-01-07 10:27:18 +0100 | sammelweis | (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Quit: No Ping reply in 180 seconds.) |
2023-01-07 10:27:33 +0100 | gnalzo | (~gnalzo@2a01:e0a:498:fd50:fcc6:bb5d:489a:ce8c) |
2023-01-07 10:28:15 +0100 | jakalx | (~jakalx@base.jakalx.net) () |
2023-01-07 10:32:21 +0100 | vhs | (~vhs@78-66-105-254-no600.tbcn.telia.com) |
2023-01-07 10:32:26 +0100 | vhsconnect | (~vhs@78-66-105-254-no600.tbcn.telia.com) |
2023-01-07 10:34:27 +0100 | sammelweis | (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) |
2023-01-07 10:37:10 +0100 | jakalx | (~jakalx@base.jakalx.net) |
2023-01-07 10:41:16 +0100 | jmdaemon | (~jmdaemon@user/jmdaemon) (Ping timeout: 252 seconds) |
2023-01-07 10:41:54 +0100 | sammelweis | (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Quit: No Ping reply in 180 seconds.) |
2023-01-07 10:47:45 +0100 | sammelweis | (~quassel@c-68-48-18-140.hsd1.mi.comcast.net) |
2023-01-07 10:50:59 +0100 | sammelweis | (~quassel@c-68-48-18-140.hsd1.mi.comcast.net) (Client Quit) |
2023-01-07 10:52:03 +0100 | Tuplanolla | (~Tuplanoll@91-159-68-152.elisa-laajakaista.fi) |
2023-01-07 10:53:48 +0100 | trev | (~trev@user/trev) (Remote host closed the connection) |
2023-01-07 10:54:08 +0100 | trev | (~trev@user/trev) |
2023-01-07 10:59:01 +0100 | trev | (~trev@user/trev) (Remote host closed the connection) |
2023-01-07 10:59:21 +0100 | trev | (~trev@user/trev) |
2023-01-07 11:03:18 +0100 | trev | (~trev@user/trev) (Remote host closed the connection) |
2023-01-07 11:03:36 +0100 | trev | (~trev@user/trev) |
2023-01-07 11:04:41 +0100 | tzh | (~tzh@c-24-21-73-154.hsd1.or.comcast.net) (Quit: zzz) |
2023-01-07 11:05:31 +0100 | Speedbird | (~Speedbird@94.230.79.152) |
2023-01-07 11:06:17 +0100 | acidjnk | (~acidjnk@p200300d6e715c429e462ed5ea333447e.dip0.t-ipconnect.de) |
2023-01-07 11:09:15 +0100 | mizlan | (~mizlan@c-67-169-7-31.hsd1.ca.comcast.net) (Ping timeout: 248 seconds) |
2023-01-07 11:12:23 +0100 | thongpv87 | (~thongpv87@2402:9d80:389:9e3a:648f:1ca5:2c13:2a3a) (Ping timeout: 255 seconds) |
2023-01-07 11:12:31 +0100 | sammelweis | (~quassel@c-68-48-18-140.hsd1.mi.comcast.net) |
2023-01-07 11:19:18 +0100 | <Inst> | wait, is 2-tuple just an primitive writer monad in the same way that reader is based on the function monad? |
2023-01-07 11:20:43 +0100 | <boxscape_> | exactly |
2023-01-07 11:21:05 +0100 | bilegeek | (~bilegeek@103.sub-174-208-234.myvzw.com) (Quit: Leaving) |
2023-01-07 11:21:18 +0100 | <Inst> | huh, that's interesting, so effcetvily every time you output a tuple, you output a writer monad |
2023-01-07 11:22:10 +0100 | <boxscape_> | I don't know if I would call it "outputting a writer monad" but that's basically correct |
2023-01-07 11:24:26 +0100 | thongpv87 | (~thongpv87@2402:9d80:389:9e3a:2c87:afe4:cc1d:eda4) |
2023-01-07 11:24:29 +0100 | <Inst> | i have a hate-on for monad trans |
2023-01-07 11:24:52 +0100 | <boxscape_> | why? |
2023-01-07 11:25:18 +0100 | <Inst> | performance, complexity |
2023-01-07 11:25:36 +0100 | <boxscape_> | I see |
2023-01-07 11:25:52 +0100 | <[exa]> | performance and complexity....as in, too good? |
2023-01-07 11:25:53 +0100 | <Inst> | i'm wondering how valid it is to use writer monad via the tuple interface, although writer monad is known for space leaks, so the unadjusted tuple monad is likely to be worse |
2023-01-07 11:26:22 +0100 | <Inst> | https://github.com/haskell-effectful/effectful/blob/master/benchmarks/README.md |
2023-01-07 11:27:09 +0100 | <Inst> | but since you can skip the monad and just use the function monad and tuple monad instead of writer monad, that's a big improvement |
2023-01-07 11:27:15 +0100 | <Inst> | writer monad and reader monad |
2023-01-07 11:29:22 +0100 | <[exa]> | where's the source code for that benchmark? |
2023-01-07 11:29:49 +0100 | Kaipei | (~Kaiepi@nwcsnbsc03w-47-55-159-86.dhcp-dynamic.fibreop.nb.bellaliant.net) |
2023-01-07 11:29:57 +0100 | trev | (~trev@user/trev) (Remote host closed the connection) |
2023-01-07 11:30:14 +0100 | trev | (~trev@user/trev) |
2023-01-07 11:30:23 +0100 | <Inst> | no clue, but lexi lambda was the same way, but her eff library i heard was abandoned |
2023-01-07 11:30:43 +0100 | <Inst> | https://www.youtube.com/watch?v=0jI-AlWEwYI |
2023-01-07 11:31:44 +0100 | <[exa]> | anyway yeah that's the result I'd basically expect, it's pretty much okay (modulo the capability of ghc to optimize out some type hay) but don't do deep monad stacks |
2023-01-07 11:31:55 +0100 | eggplantade | (~Eggplanta@2600:1700:38c5:d800:cc20:d690:f22b:cb00) (Remote host closed the connection) |
2023-01-07 11:32:18 +0100 | <boxscape_> | hmm I'm using a fused-effects deep monad stack right now, maybe I should rethink that |
2023-01-07 11:32:36 +0100 | <[exa]> | the point of transformers is that they're super powerful for relatively low code overhead (at least compared to the type magicks in eff and others) |
2023-01-07 11:33:11 +0100 | <Inst> | kmett confessed to passing an IORef around with implicit parameters as a hack to get a cheaper RWST |
2023-01-07 11:33:13 +0100 | <Guest5476> | Inst: her library is not compatiable with current list of delim.cont primops, so there should be performed some work to make it up to date |
2023-01-07 11:33:24 +0100 | <[exa]> | I'd say if there's ever another hs compiler, transformers will be easily portable; not sure about eff |
2023-01-07 11:34:29 +0100 | <[exa]> | I can't see why people consider the "passing IORef around" as cheating or hacking. it's a normal way to help the compiler to produce a good runtime representation |
2023-01-07 11:34:44 +0100 | trev | (~trev@user/trev) (Remote host closed the connection) |
2023-01-07 11:34:46 +0100 | Sgeo | (~Sgeo@user/sgeo) (Read error: Connection reset by peer) |
2023-01-07 11:35:02 +0100 | trev | (~trev@user/trev) |
2023-01-07 11:35:24 +0100 | <Inst> | as far as i understand, there's basically two schools, one that hates monad transformers, i.e, professionals who write in straight IO and pure code, or readerT pattern, and people who like monad trans |
2023-01-07 11:35:44 +0100 | <boxscape_> | I guess because it means you end up using IO for something that, semantically, doesn't need it? |
2023-01-07 11:36:02 +0100 | <[exa]> | like, ofcourse ghc would ideally be able to magically realize it by itself, but you don't help it a lot by throwing in the insensitive amount of data structure mess |
2023-01-07 11:36:04 +0100 | trev | (~trev@user/trev) (Remote host closed the connection) |
2023-01-07 11:36:17 +0100 | <[exa]> | did anyone already try doing zippers on effects? |
2023-01-07 11:36:21 +0100 | trev | (~trev@user/trev) |
2023-01-07 11:36:33 +0100 | <Inst> | i deeloped a hatred on monad trans when someone helped me build a cheap ed clone |
2023-01-07 11:36:36 +0100 | <[exa]> | boxscape_: yeah IO hurts, might have been ST or so |
2023-01-07 11:36:49 +0100 | <Inst> | because there was way too much monad trans wrapping IO |
2023-01-07 11:36:51 +0100 | Lord_of_Life_ | (~Lord@user/lord-of-life/x-2819915) |
2023-01-07 11:37:08 +0100 | <[exa]> | Inst: why hate? no one pushes you to use that. :D |
2023-01-07 11:37:31 +0100 | <freeside> | oh hey, that reminds me. My code wants to output to two streams, analogous to STDOUT and STDERR, except the plan is to buffer things up and dump all output at the end in a structured form -- basically org-mode header blocks vs #+begin_example / #+end_example, with a "table of contents" and so on. What approach should I take -- Writer { a::[String], b::[String] } ? |
2023-01-07 11:37:52 +0100 | <[exa]> | Inst: anyway, it's super useful for many purposes where saving programmer time balances out the computer time, the latter is much cheaper |
2023-01-07 11:38:02 +0100 | Lord_of_Life | (~Lord@user/lord-of-life/x-2819915) (Ping timeout: 268 seconds) |
2023-01-07 11:38:05 +0100 | <Inst> | it's my fault anyways, because i asked to learn monad trans because there was so much code using it |
2023-01-07 11:38:12 +0100 | <Inst> | and arguably using reader / writer monad is more dishonest than monad trans |
2023-01-07 11:38:20 +0100 | <Inst> | erm, function / tuple monad is more dishonest than monad trans |
2023-01-07 11:38:27 +0100 | <[exa]> | it's not, it's your choice |
2023-01-07 11:38:31 +0100 | <Inst> | readerT / writerT at least shows up in the type system |
2023-01-07 11:39:00 +0100 | trev | (~trev@user/trev) (Remote host closed the connection) |
2023-01-07 11:39:06 +0100 | <[exa]> | the Writer over the (,) is literally just a tag that helps you to communicate this to other programmers. "Hey this is not an actual tuple tuple, I'm using it to write a log instead" |
2023-01-07 11:39:16 +0100 | trev | (~trev@user/trev) |
2023-01-07 11:39:37 +0100 | Lord_of_Life_ | Lord_of_Life |
2023-01-07 11:39:40 +0100 | <[exa]> | +- some helpful side gains, like you can make the writer strict to avoid accumulation of thunkery |
2023-01-07 11:40:09 +0100 | <Inst> | there's still some old stuff, like why snoyman stuck to readerT because all the monad transformer monads had issues |
2023-01-07 11:40:24 +0100 | <Inst> | writer T was supposed to still be space leaking, same with state |
2023-01-07 11:40:42 +0100 | <boxscape_> | WriterT is fine with the CPS implementation |
2023-01-07 11:40:42 +0100 | <[exa]> | people make choices, that's normal. :D |
2023-01-07 11:40:50 +0100 | iqubic | (~avi@2601:602:9502:c70:3dee:aba8:ea3d:300b) (Ping timeout: 260 seconds) |
2023-01-07 11:40:55 +0100 | <Inst> | ah, nice to hear |
2023-01-07 11:41:03 +0100 | <boxscape_> | transformers has Lazy, Strict, and CPS Writer, the only one that should be used is CPS though, afaik |
2023-01-07 11:41:15 +0100 | <boxscape_> | (as in, the "transformers" package) |
2023-01-07 11:42:11 +0100 | <Inst> | i hope by the time i catually know what i'm doing, someone will have a mature and performant algebraic effects system up and i don't have to bother with monad trans ever again |
2023-01-07 11:42:11 +0100 | <boxscape_> | I guess there could be some use-cases for Lazy Writers |
2023-01-07 11:43:16 +0100 | <boxscape_> | honestly I'm fairly happy with most effects systems that exist. But I don't usually do performance-critical things |
2023-01-07 11:43:17 +0100 | <[exa]> | CPS writer is basically the same as state? (w -> a,w ?) |
2023-01-07 11:43:44 +0100 | <boxscape_> | I don't know, I just read people saying that I should use CPS over strict and follow their advice :) |
2023-01-07 11:43:52 +0100 | libertyprime | (~libertypr@203.96.203.167) (Quit: leaving) |
2023-01-07 11:44:06 +0100 | <[exa]> | like, yeah, it makes sense |
2023-01-07 11:44:37 +0100 | razetime | (~Thunderbi@49.207.222.244) (Remote host closed the connection) |
2023-01-07 11:44:55 +0100 | <Inst> | well, trying to keep haskell performance is nice, as an advertisement, at least, because juspay doubled their resource efficiency when they switched from purescript / node.js to haskell |
2023-01-07 11:45:00 +0100 | fserucas | (~fserucas@2001:818:e376:a400:fb92:70c1:dd88:c7d7) |
2023-01-07 11:45:04 +0100 | <Inst> | and now juspay is paying haskell foundation |
2023-01-07 11:45:15 +0100 | <[exa]> | \o/ |
2023-01-07 11:45:20 +0100 | <Inst> | on monad tier |
2023-01-07 11:45:26 +0100 | <boxscape_> | do they use GHCJS? |
2023-01-07 11:45:48 +0100 | <boxscape_> | or did they use purescript for backend stuff? |
2023-01-07 11:46:58 +0100 | <Inst> | no clue, i thought they went native |
2023-01-07 11:46:59 +0100 | <Inst> | https://skillsmatter.com/skillscasts/17411-how-we-migrated-65k-lines-of-javascript-code-to-haskell… |
2023-01-07 11:47:13 +0100 | <Inst> | they transpiled their purescript to haskell |
2023-01-07 11:47:21 +0100 | <Inst> | https://blog.monadfix.com/nau-introduction |
2023-01-07 11:48:10 +0100 | <boxscape_> | hmm I see |
2023-01-07 11:48:11 +0100 | <[exa]> | oh noes it wants a login |
2023-01-07 11:49:31 +0100 | <[exa]> | Inst: they say they have a few pain points, if you watched the cast can you pls summarize? |
2023-01-07 11:50:28 +0100 | <Inst> | should be direct access |
2023-01-07 11:50:30 +0100 | titibandit1 | (~titibandi@xdsl-87-78-235-220.nc.de) |
2023-01-07 11:50:33 +0100 | <Inst> | https://www.youtube.com/watch?v=nRLOtbjEtyE |
2023-01-07 11:50:41 +0100 | <boxscape_> | nice |
2023-01-07 11:51:10 +0100 | <boxscape_> | tbh I never even considered that people might be using purescript for non-frontend code |
2023-01-07 11:52:09 +0100 | <Inst> | i think it was purescript, not sure, could have been straight functional JS |
2023-01-07 11:52:12 +0100 | <freeside> | as someone who needs to translate between Haskell and Purescript, it pains me that Purescript syntax is almost but not quite Haskell syntax |
2023-01-07 11:53:41 +0100 | <boxscape_> | Inst: well, since the transpiler is for purescript, it would make sense |
2023-01-07 11:53:44 +0100 | mizlan | (~mizlan@c-67-169-7-31.hsd1.ca.comcast.net) |
2023-01-07 11:55:04 +0100 | vhs | (~vhs@78-66-105-254-no600.tbcn.telia.com) (Remote host closed the connection) |
2023-01-07 11:55:04 +0100 | vhsconnect | (~vhs@78-66-105-254-no600.tbcn.telia.com) (Remote host closed the connection) |
2023-01-07 11:56:07 +0100 | trev | (~trev@user/trev) (Remote host closed the connection) |
2023-01-07 11:56:17 +0100 | Speedbird | (~Speedbird@94.230.79.152) (Quit: Client closed) |
2023-01-07 11:56:21 +0100 | <DigitalKiwi> | purescript_node.js |
2023-01-07 11:56:23 +0100 | trev | (~trev@user/trev) |
2023-01-07 11:58:13 +0100 | <Inst> | complaints about... [exa], initial learning curve, compilation time, pure functions throwing exceptions |
2023-01-07 11:58:16 +0100 | <Inst> | from the slide |
2023-01-07 11:59:14 +0100 | <DigitalKiwi> | they complained about you [exa]? 15 minutes of shame |
2023-01-07 11:59:41 +0100 | <freeside> | seems unnecessarily personal |
2023-01-07 12:00:18 +0100 | fizbin | (~fizbin@user/fizbin) |
2023-01-07 12:01:13 +0100 | trev | (~trev@user/trev) (Remote host closed the connection) |
2023-01-07 12:01:33 +0100 | <DigitalKiwi> | freeside: do you like the row types though |
2023-01-07 12:01:45 +0100 | trev | (~trev@user/trev) |
2023-01-07 12:02:02 +0100 | <DigitalKiwi> | the only feature i know about in purescript lol |
2023-01-07 12:03:44 +0100 | <Inst> | exa, typo |
2023-01-07 12:05:22 +0100 | <[exa]> | Inst: ah thanks |
2023-01-07 12:05:45 +0100 | <[exa]> | anyway yeah folks, pls remove me from ghc10, I'm not a good addition to the language |
2023-01-07 12:05:55 +0100 | thongpv87 | (~thongpv87@2402:9d80:389:9e3a:2c87:afe4:cc1d:eda4) (Ping timeout: 256 seconds) |
2023-01-07 12:07:32 +0100 | titibandit1 | (~titibandi@xdsl-87-78-235-220.nc.de) (Ping timeout: 246 seconds) |
2023-01-07 12:09:10 +0100 | axeman | (~quassel@2a02:8109:a3c0:ed8:9392:cd42:dc8a:7cd9) |
2023-01-07 12:09:22 +0100 | <boxscape_> | That will have to go through the official proposal process |
2023-01-07 12:09:32 +0100 | <freeside> | digitalkiwi: with the presence of row types, i was expecting JSON parsing to be easier, and for there to be easier integration between records and json. |
2023-01-07 12:13:08 +0100 | trev | (~trev@user/trev) (Remote host closed the connection) |
2023-01-07 12:13:54 +0100 | trev | (~trev@user/trev) |
2023-01-07 12:18:37 +0100 | shriekingnoise | (~shrieking@186.137.175.87) (Quit: Quit) |
2023-01-07 12:18:49 +0100 | azimut | (~azimut@gateway/tor-sasl/azimut) |
2023-01-07 12:19:14 +0100 | [itchyjunk] | (~itchyjunk@user/itchyjunk/x-7353470) |
2023-01-07 12:22:11 +0100 | titibandit1 | (~titibandi@xdsl-87-78-235-220.nc.de) |
2023-01-07 12:22:32 +0100 | mbuf | (~Shakthi@49.204.114.1) |
2023-01-07 12:27:41 +0100 | xff0x | (~xff0x@2405:6580:b080:900:c792:9a92:2632:4781) |
2023-01-07 12:32:25 +0100 | eggplantade | (~Eggplanta@2600:1700:38c5:d800:cc20:d690:f22b:cb00) |
2023-01-07 12:36:31 +0100 | trev | (~trev@user/trev) (Remote host closed the connection) |
2023-01-07 12:36:57 +0100 | trev | (~trev@user/trev) |
2023-01-07 12:37:00 +0100 | eggplantade | (~Eggplanta@2600:1700:38c5:d800:cc20:d690:f22b:cb00) (Ping timeout: 255 seconds) |
2023-01-07 12:38:20 +0100 | beteigeuze | (~Thunderbi@bl14-81-220.dsl.telepac.pt) |
2023-01-07 12:41:51 +0100 | <freeside> | say, how do i discover the fixity of (,) ? |
2023-01-07 12:43:03 +0100 | dextaa | (~DV@user/dextaa) (Read error: Connection reset by peer) |
2023-01-07 12:43:07 +0100 | <Heffalump> | freeside: I think it has the weakest possible binding |
2023-01-07 12:43:07 +0100 | axeman | (~quassel@2a02:8109:a3c0:ed8:9392:cd42:dc8a:7cd9) (Ping timeout: 260 seconds) |
2023-01-07 12:43:25 +0100 | dextaa | (~DV@user/dextaa) |
2023-01-07 12:46:20 +0100 | <Inst> | :i? |
2023-01-07 12:46:43 +0100 | <Inst> | wow, it's not listed |
2023-01-07 12:48:04 +0100 | <freeside> | probably because it's doing double duty as a tuple constructor and list separator |
2023-01-07 12:48:23 +0100 | <freeside> | it's a floor wax and a dessert topping! |
2023-01-07 12:49:26 +0100 | jakalx | (~jakalx@base.jakalx.net) (Error from remote client) |
2023-01-07 12:50:01 +0100 | zmt00 | (~zmt00@user/zmt00) (Ping timeout: 252 seconds) |
2023-01-07 12:53:28 +0100 | axeman | (~quassel@2a02:8109:a3c0:ed8:ce56:f99d:50c4:44c8) |
2023-01-07 12:57:29 +0100 | mizlan | (~mizlan@c-67-169-7-31.hsd1.ca.comcast.net) (Ping timeout: 260 seconds) |
2023-01-07 12:57:35 +0100 | acidjnk | (~acidjnk@p200300d6e715c429e462ed5ea333447e.dip0.t-ipconnect.de) (Ping timeout: 246 seconds) |
2023-01-07 13:00:01 +0100 | jakalx | (~jakalx@base.jakalx.net) |
2023-01-07 13:03:40 +0100 | fizbin | (~fizbin@user/fizbin) (Ping timeout: 260 seconds) |
2023-01-07 13:05:30 +0100 | econo | (uid147250@user/econo) (Quit: Connection closed for inactivity) |
2023-01-07 13:10:54 +0100 | sammelweis | (~quassel@c-68-48-18-140.hsd1.mi.comcast.net) (Quit: No Ping reply in 180 seconds.) |
2023-01-07 13:14:12 +0100 | [itchyjunk] | (~itchyjunk@user/itchyjunk/x-7353470) (Remote host closed the connection) |
2023-01-07 13:15:23 +0100 | [itchyjunk] | (~itchyjunk@user/itchyjunk/x-7353470) |
2023-01-07 13:16:35 +0100 | [itchyjunk] | (~itchyjunk@user/itchyjunk/x-7353470) (Remote host closed the connection) |
2023-01-07 13:20:55 +0100 | mei | (~mei@user/mei) |
2023-01-07 13:21:27 +0100 | sammelweis | (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) |
2023-01-07 13:21:43 +0100 | tremon | (~tremon@83-85-213-108.cable.dynamic.v4.ziggo.nl) |
2023-01-07 13:23:08 +0100 | panovia | (~user@user/siracusa) (Quit: Bye!) |
2023-01-07 13:23:50 +0100 | mei_ | (~mei@user/mei) (Ping timeout: 246 seconds) |
2023-01-07 13:24:41 +0100 | axeman | (~quassel@2a02:8109:a3c0:ed8:ce56:f99d:50c4:44c8) (Ping timeout: 256 seconds) |
2023-01-07 13:25:19 +0100 | gnalzo | (~gnalzo@2a01:e0a:498:fd50:fcc6:bb5d:489a:ce8c) (Quit: WeeChat 3.7.1) |
2023-01-07 13:32:20 +0100 | CiaoSen | (~Jura@p200300c9572e35002a3a4dfffe84dbd5.dip0.t-ipconnect.de) |
2023-01-07 13:33:47 +0100 | fizbin | (~fizbin@user/fizbin) |
2023-01-07 13:34:52 +0100 | <lyxia> | fixity doesn't make sense for "," because the outer brackets make it unambiguous to parse. |
2023-01-07 13:36:13 +0100 | img | (~img@user/img) (Quit: ZNC 1.8.2 - https://znc.in) |
2023-01-07 13:36:46 +0100 | <lyxia> | and for reference the grammar of Haskell is in the report https://www.haskell.org/onlinereport/haskell2010/haskellch3.html#x8-360003.8 |
2023-01-07 13:38:35 +0100 | <boxscape_> | so "cabal --upload" will only upload a package candidate by default, right? |
2023-01-07 13:38:57 +0100 | <boxscape_> | err, "cabal upload" |
2023-01-07 13:39:20 +0100 | <ncf> | infixl 0 `comma`; comma = (,) |
2023-01-07 13:39:22 +0100 | <ncf> | :^) |
2023-01-07 13:39:23 +0100 | img | (~img@user/img) |
2023-01-07 13:41:53 +0100 | machinedgod | (~machinedg@d198-53-218-113.abhsia.telus.net) |
2023-01-07 13:43:43 +0100 | img | (~img@user/img) (Client Quit) |
2023-01-07 13:44:11 +0100 | img | (~img@user/img) |
2023-01-07 13:44:56 +0100 | <freeside> | thank you lyxia, i did look for it in the report ... for some time |
2023-01-07 13:45:14 +0100 | img | (~img@user/img) (Client Quit) |
2023-01-07 13:45:52 +0100 | <boxscape_> | hmm reading a blog post that seems to imply that it does not upload a candidate, but it's from 2020 |
2023-01-07 13:46:32 +0100 | <int-e> | ncf: infixl, why left? |
2023-01-07 13:46:34 +0100 | <lyxia> | boxscape_: it does candidates by default |
2023-01-07 13:46:39 +0100 | <boxscape_> | ok, thanks |
2023-01-07 13:47:20 +0100 | <ncf> | int-e: no reason. i guess right is more common. |
2023-01-07 13:47:43 +0100 | mizlan | (~mizlan@c-67-169-7-31.hsd1.ca.comcast.net) |
2023-01-07 13:48:06 +0100 | img | (~img@user/img) |
2023-01-07 13:48:16 +0100 | <int-e> | ncf: I'd prefer `infix`... well, hypothetically. I prefer (,) of course :) |
2023-01-07 13:49:51 +0100 | <ncf> | agda's comma is infixr, for what it's worth |
2023-01-07 13:50:32 +0100 | <ncf> | i guess in general it should have the same associativity as × |
2023-01-07 13:50:33 +0100 | <boxscape_> | hackage gives me a 403 error if I try to upload a package candidate 🤔 |
2023-01-07 13:50:42 +0100 | <ncf> | so that a , b , c : A × B × C |
2023-01-07 13:51:24 +0100 | <ncf> | boxscape_: don't they need to activate your account or something like that first? |
2023-01-07 13:51:31 +0100 | <boxscape_> | ah, maybe |
2023-01-07 13:51:59 +0100 | razetime | (~Thunderbi@49.207.222.244) |
2023-01-07 13:52:13 +0100 | <ncf> | see the red box in https://hackage.haskell.org/users/register-request |
2023-01-07 13:52:32 +0100 | <boxscape_> | -.- how did I miss that |
2023-01-07 13:52:34 +0100 | <boxscape_> | thanks |
2023-01-07 13:53:10 +0100 | <int-e> | ncf: ah, that's a different context though if you don't have proper triples. |
2023-01-07 13:56:47 +0100 | fizbin | (~fizbin@user/fizbin) (Ping timeout: 252 seconds) |
2023-01-07 13:59:07 +0100 | acidjnk | (~acidjnk@p200300d6e715c429707e98a68aa77666.dip0.t-ipconnect.de) |
2023-01-07 14:01:07 +0100 | thongpv87 | (~thongpv87@2402:9d80:34d:fde9:8a11:e98e:b8b0:cf04) |
2023-01-07 14:06:16 +0100 | __monty__ | (~toonn@user/toonn) |
2023-01-07 14:11:45 +0100 | <boxscape_> | Oh, I just figured out how I missed it. I didn't read it carefully i |
2023-01-07 14:11:56 +0100 | <boxscape_> | enough and thought the "Request account" button already includes a request for activation |
2023-01-07 14:12:23 +0100 | <boxscape_> | I'll suggest to change it to "create account" |
2023-01-07 14:14:39 +0100 | <MangoIV[m]> | Hi, I want to write something like the following function:... (full message at <https://libera.ems.host/_matrix/media/v3/download/libera.chat/e744cf824ed41da718c8c11df880426e45a3…>) |
2023-01-07 14:15:00 +0100 | <MangoIV[m]> | * Hi, I want to write something like the following function:... (full message at <https://libera.ems.host/_matrix/media/v3/download/libera.chat/2bd9c606eea22fe6c83e0ce3560791d3a728…>) |
2023-01-07 14:15:05 +0100 | __monty__ | (~toonn@user/toonn) (Quit: leaving) |
2023-01-07 14:15:41 +0100 | <MangoIV[m]> | (I'm using the type names used by generics-sop because I thought those would be most familiar) |
2023-01-07 14:17:29 +0100 | <mauke> | why is the `=>` inside of the parentheses? |
2023-01-07 14:17:45 +0100 | __monty__ | (~toonn@user/toonn) |
2023-01-07 14:18:20 +0100 | califax | (~califax@user/califx) (Ping timeout: 255 seconds) |
2023-01-07 14:19:01 +0100 | califax | (~califax@user/califx) |
2023-01-07 14:19:04 +0100 | Xeroine | (~Xeroine@user/xeroine) (Read error: Connection reset by peer) |
2023-01-07 14:19:19 +0100 | <MangoIV[m]> | because the statement of the function is that "if I have some List for that All Top holds then I can always remove that constraint", if you move it outwards then it's merely id. |
2023-01-07 14:20:03 +0100 | Xeroine | (~Xeroine@user/xeroine) |
2023-01-07 14:20:38 +0100 | <int-e> | You have to provide evidence for `All Top xs` in order to evaluate that (All Top xs => NP f xs) value. |
2023-01-07 14:20:59 +0100 | <MangoIV[m]> | isn't matching on Nil evidence enough? why not? |
2023-01-07 14:21:17 +0100 | <int-e> | there's nothing to match |
2023-01-07 14:21:30 +0100 | <boxscape_> | in other words, it has to be evaluated e |
2023-01-07 14:21:33 +0100 | <boxscape_> | before you can match on it |
2023-01-07 14:21:35 +0100 | <boxscape_> | I suppsoe |
2023-01-07 14:21:46 +0100 | <int-e> | operationally, the NP f xs value that you get may depend on the All Top xs dictionary (if that's a class). |
2023-01-07 14:22:37 +0100 | <mauke> | All and Top are both classes |
2023-01-07 14:22:54 +0100 | <boxscape_> | oh I would have expected All to be a type family |
2023-01-07 14:22:58 +0100 | <MangoIV[m]> | ok, I get that reasoning, but I do not get why it doesn't work, can somebody please try to explain what I'm misunderstanding? I think that matching on '[] should provide GHC with the ability to reduce the type family and getting a dictionary for () should be possible |
2023-01-07 14:23:23 +0100 | <MangoIV[m]> | All is indeed a type family |
2023-01-07 14:23:23 +0100 | <MangoIV[m]> | although in generics-sop it's a type class synonym for a type family |
2023-01-07 14:23:23 +0100 | <MangoIV[m]> | to get partial application |
2023-01-07 14:23:34 +0100 | <MangoIV[m]> | as do not need that, in my case it is a type family |
2023-01-07 14:23:35 +0100 | <boxscape_> | ah |
2023-01-07 14:24:14 +0100 | <mauke> | `class (AllF c xs, SListI xs) => All (c :: k -> Constraint) (xs :: [k])` |
2023-01-07 14:24:53 +0100 | harveypwca | (~harveypwc@2601:246:c180:a570:3828:d8:e523:3f67) |
2023-01-07 14:25:32 +0100 | <MangoIV[m]> | (that's not how I implement it, for simplicity sake, this is the first line:... (full message at <https://libera.ems.host/_matrix/media/v3/download/libera.chat/1cf5f5be679a60501a9d48794f376362970f…>) |
2023-01-07 14:26:24 +0100 | <int-e> | Conceptually, I guess you want NP f xs -> All Top xs, so wiggling CPS style that would be NP f xs -> (All Top xs => r) -> r |
2023-01-07 14:27:30 +0100 | <MangoIV[m]> | I think it should be the other way around, no? I want to subsume the constraint |
2023-01-07 14:27:34 +0100 | <MangoIV[m]> | not add it |
2023-01-07 14:29:13 +0100 | <MangoIV[m]> | lemme check whether it helps me, though, thank you |
2023-01-07 14:30:21 +0100 | <int-e> | I don't understand how your function is supposed to work. `All Top xs => NP f xs` doesn't give you a value until you provide the `All Top xs` evidence. Crucially, you have no `xs` to pattern match against. |
2023-01-07 14:30:50 +0100 | <int-e> | (types are erased at runtime) |
2023-01-07 14:31:29 +0100 | <MangoIV[m]> | why? I think matching on HNil gives me evidence? |
2023-01-07 14:31:34 +0100 | <MangoIV[m]> | that's why it's a GADT? |
2023-01-07 14:31:44 +0100 | <int-e> | Where's the value to pattern match? |
2023-01-07 14:31:53 +0100 | <MangoIV[m]> | the NP? |
2023-01-07 14:32:28 +0100 | <int-e> | There is no NP. You only have `All Top xs => NP f xs` which isn't a value... what I just wrote above. |
2023-01-07 14:32:32 +0100 | <MangoIV[m]> | <MangoIV[m]> "ok, I get that reasoning, but..." <- hence my question here; i don't understand why GHC forgets the evidence provideded by the match on HNil |
2023-01-07 14:32:44 +0100 | <int-e> | There's no match! |
2023-01-07 14:33:10 +0100 | <MangoIV[m]> | > <@mangoiv.:matrix.org> Hi, I want to write something like the following function:... (full message at <https://libera.ems.host/_matrix/media/v3/download/libera.chat/af198fc750c8c8ac65e47988508a1fcefe3f…>) |
2023-01-07 14:33:13 +0100 | <lambdabot> | <hint>:1:1: error: parse error on input ‘<@’ |
2023-01-07 14:33:32 +0100 | <mauke> | no, you don't |
2023-01-07 14:33:50 +0100 | <int-e> | you write `dischargeAllTop Nil = Nil` but that becomes `dischargeAllTop x = case x of Nil -> Nil`, and in order to evaluate that, you need to evaluate x. |
2023-01-07 14:33:50 +0100 | <mauke> | you don't have a value to match on yet (because trying to get that value leads to a type error) |
2023-01-07 14:34:12 +0100 | <int-e> | And in order to evaluate x, you need to provide the `All Top xs` evidence. |
2023-01-07 14:34:21 +0100 | <mauke> | also, wouldn't you need something like withDict pureAll ...? |
2023-01-07 14:34:42 +0100 | <mauke> | I'm looking at https://hackage.haskell.org/package/sop-core-0.5.0.2/docs/Data-SOP-Dict.html |
2023-01-07 14:35:11 +0100 | <int-e> | So unless you can conjure `All Top xs` for *any* type xs, this isn't going to work. |
2023-01-07 14:35:38 +0100 | <mauke> | what a coincidence :-) `pureAll :: SListI xs => Dict (All Top) xs` |
2023-01-07 14:35:43 +0100 | acidjnk | (~acidjnk@p200300d6e715c429707e98a68aa77666.dip0.t-ipconnect.de) (Ping timeout: 260 seconds) |
2023-01-07 14:36:00 +0100 | <int-e> | Note the `SListI xs =>` constraint there. |
2023-01-07 14:36:06 +0100 | <int-e> | That makes all the difference. |
2023-01-07 14:36:31 +0100 | <MangoIV[m]> | that's a pity |
2023-01-07 14:36:32 +0100 | <MangoIV[m]> | int-e: the reason why I'm doing this is to prove that... so the reason is that _to match on Nil_ I first have to know my proposition but I can only know it by matching on Nil |
2023-01-07 14:36:34 +0100 | <mauke> | yeah, I guess that says xs must be a type list |
2023-01-07 14:36:41 +0100 | kris7t | (~kris7t@marussy.com) (Remote host closed the connection) |
2023-01-07 14:37:22 +0100 | alfonsox | (~quassel@103.87.57.65) |
2023-01-07 14:37:30 +0100 | kris7t | (~kris7t@marussy.com) |
2023-01-07 14:37:47 +0100 | <boxscape_> | kind of reminds of trying to prove Peirce's law in a constructive context, not sure if it's related though |
2023-01-07 14:37:51 +0100 | <mauke> | oh, it gets weirder. type SListI = All Top :-( |
2023-01-07 14:39:04 +0100 | <MangoIV[m]> | yeah, it looks like `All Top xs => All c xs` so that gives you All Top xs => All Top xs in case c ~ Top |
2023-01-07 14:39:16 +0100 | <MangoIV[m]> | I guess that's the trick that generics-sop uses |
2023-01-07 14:39:22 +0100 | <MangoIV[m]> | to get around that problem |
2023-01-07 14:43:10 +0100 | kris7t | (~kris7t@marussy.com) () |
2023-01-07 14:48:32 +0100 | zmt00 | (~zmt00@user/zmt00) |
2023-01-07 14:48:37 +0100 | acidjnk | (~acidjnk@p200300d6e715c429707e98a68aa77666.dip0.t-ipconnect.de) |
2023-01-07 14:52:12 +0100 | mizlan | (~mizlan@c-67-169-7-31.hsd1.ca.comcast.net) (Ping timeout: 272 seconds) |
2023-01-07 14:56:25 +0100 | <MangoIV[m]> | ok; so apparently using that you can then create a singleton that witnesses the list spine, which you can then use to get the necessary dicts in scope |
2023-01-07 14:59:40 +0100 | beteigeuze | (~Thunderbi@bl14-81-220.dsl.telepac.pt) (Quit: beteigeuze) |
2023-01-07 15:00:06 +0100 | beteigeuze | (~Thunderbi@bl14-81-220.dsl.telepac.pt) |
2023-01-07 15:01:40 +0100 | <int-e> | Right, singletons are largely about getting values (which aren't erased at runtime) for type evidence. |
2023-01-07 15:07:34 +0100 | [itchyjunk] | (~itchyjunk@user/itchyjunk/x-7353470) |
2023-01-07 15:07:35 +0100 | [_] | (~itchyjunk@user/itchyjunk/x-7353470) |
2023-01-07 15:10:06 +0100 | [_] | (~itchyjunk@user/itchyjunk/x-7353470) (Client Quit) |
2023-01-07 15:10:07 +0100 | freeside | (~mengwong@103.252.202.159) (Ping timeout: 260 seconds) |
2023-01-07 15:12:02 +0100 | freeside | (~mengwong@103.252.202.159) |
2023-01-07 15:13:44 +0100 | biberu\ | (~biberu@user/biberu) |
2023-01-07 15:14:29 +0100 | biberu | (~biberu@user/biberu) (Ping timeout: 246 seconds) |
2023-01-07 15:15:18 +0100 | biberu\ | biberu |
2023-01-07 15:16:53 +0100 | CiaoSen | (~Jura@p200300c9572e35002a3a4dfffe84dbd5.dip0.t-ipconnect.de) (Ping timeout: 256 seconds) |
2023-01-07 15:17:44 +0100 | bitdex | (~bitdex@gateway/tor-sasl/bitdex) (Ping timeout: 255 seconds) |
2023-01-07 15:19:23 +0100 | acidjnk | (~acidjnk@p200300d6e715c429707e98a68aa77666.dip0.t-ipconnect.de) (Ping timeout: 246 seconds) |
2023-01-07 15:21:27 +0100 | bitdex | (~bitdex@gateway/tor-sasl/bitdex) |
2023-01-07 15:23:37 +0100 | <Inst> | hey [exa], if you want to humor me because I'm really sick |
2023-01-07 15:23:52 +0100 | <Inst> | it's possible to stuff a group of IO () values into a list |
2023-01-07 15:23:58 +0100 | <Inst> | can't Eq it, of course |
2023-01-07 15:24:07 +0100 | <Inst> | then you can sequence the list to run it |
2023-01-07 15:24:27 +0100 | <Inst> | but you can also reverse, take, index, etc |
2023-01-07 15:24:40 +0100 | <[exa]> | yeah that's true |
2023-01-07 15:24:41 +0100 | <Inst> | this isn't real Haskell, but it sounds like there's probably something fun you can do with it |
2023-01-07 15:24:54 +0100 | <[exa]> | how come it's not real haskell? |
2023-01-07 15:25:01 +0100 | <Inst> | we have template Haskell for this |
2023-01-07 15:25:17 +0100 | <Inst> | someone complained because after I built a blackjack calculator with 10 lines of IO and 2000 lines of calculation and combinators |
2023-01-07 15:25:25 +0100 | <Inst> | I claimed IO was like a scripting language in Haskell |
2023-01-07 15:25:38 +0100 | <Inst> | correctly, it's closer to a eDSL |
2023-01-07 15:25:48 +0100 | <Inst> | they countered that that intuition is like a monad burrito tutorial |
2023-01-07 15:25:52 +0100 | <Inst> | because it disguises that IO is a value |
2023-01-07 15:25:56 +0100 | <Inst> | that IO types are values |
2023-01-07 15:26:25 +0100 | <Inst> | evidently, the sequenceA_ is fun to get an intuition for IO as a value; i.e, limited metaprogramming based on IO |
2023-01-07 15:26:30 +0100 | <Inst> | erm, IO values in a list |
2023-01-07 15:27:05 +0100 | fserucas | (~fserucas@2001:818:e376:a400:fb92:70c1:dd88:c7d7) (Quit: Leaving) |
2023-01-07 15:27:13 +0100 | <[exa]> | burritos are crutches for those of feeble faith. :D |
2023-01-07 15:27:38 +0100 | <Inst> | any metaprogramming exercise ideas? |
2023-01-07 15:28:06 +0100 | <[exa]> | it's literally an eDSL, it's special just because it computes a (the!) value that the ghc kinda requires from you |
2023-01-07 15:28:28 +0100 | <[exa]> | > sequence $ reverse [print 5, print 6] |
2023-01-07 15:28:30 +0100 | <lambdabot> | <IO [()]> |
2023-01-07 15:28:46 +0100 | <[exa]> | (it prints 6 then 5 but lambdabot ain't friends with IO) |
2023-01-07 15:28:58 +0100 | <Inst> | but everyone i talked to claimed that the notion of treating IO as a scripting language was bad |
2023-01-07 15:29:37 +0100 | <[exa]> | how is this a scripting language? |
2023-01-07 15:29:54 +0100 | <Inst> | I guess I was thinking of it as an analogy to Py + Numpy |
2023-01-07 15:29:56 +0100 | mizlan | (~mizlan@c-67-169-7-31.hsd1.ca.comcast.net) |
2023-01-07 15:30:00 +0100 | <Inst> | since that was what happened with my blackjack calculator |
2023-01-07 15:30:03 +0100 | <Inst> | tiny main, huge program |
2023-01-07 15:30:38 +0100 | <[exa]> | tbh, that may be okay. The calculator doesn't need much IO interaction between reading the task and spewing out the result, so why have IO ops? |
2023-01-07 15:31:45 +0100 | <[exa]> | if there are obvious stages or sequentiality in the calculation, there might be monads that make the whole thing simpler (State that holds known evaluations, etc...) |
2023-01-07 15:32:08 +0100 | <[exa]> | maybe they were referring to the situation when you implement and interpret the eDSL yourself? |
2023-01-07 15:32:25 +0100 | <Inst> | ehhh, I used it to produce a log, which is being fed to a Servant server, which is being held up because a friend is being tasked to help develop the JS interface for it |
2023-01-07 15:33:06 +0100 | Guest|34 | (~Guest|34@158.181.134.236) |
2023-01-07 15:33:11 +0100 | <[exa]> | yeah at that point you might love having a magic offloader for log entries that should be spewed out, so that you don't need to carry them manually |
2023-01-07 15:33:15 +0100 | <Inst> | anyways, if you can think up any cool ideas for IO-list metaprogramming, let me know |
2023-01-07 15:33:17 +0100 | Guest|34 | (~Guest|34@158.181.134.236) (Client Quit) |
2023-01-07 15:33:31 +0100 | <[exa]> | metaprogramming as in real templatehaskell, or in eDSLs? |
2023-01-07 15:33:35 +0100 | <Inst> | it seems fun, if a bit superfluous, but the idea is |
2023-01-07 15:33:44 +0100 | biberu\ | (~biberu@user/biberu) |
2023-01-07 15:33:46 +0100 | <Inst> | i mean the idea of manipulating an IO () list via sequence |
2023-01-07 15:34:05 +0100 | alfonsox | (~quassel@103.87.57.65) (Quit: https://quassel-irc.org - Chat comfortably. Anywhere.) |
2023-01-07 15:34:18 +0100 | <Inst> | it seems, to begin with, way more accessible than template haskell, and also helps solidify the idea of an IO Value, as opposed to IO being syntax |
2023-01-07 15:34:28 +0100 | <Inst> | I have no idea how hardcore imperative people think |
2023-01-07 15:34:34 +0100 | <[exa]> | ah, hah. I once did some kind of a program that was supposed to do multiple simple actions in one "transaction", the actions were selected by the user on a commandline |
2023-01-07 15:34:45 +0100 | mizlan | (~mizlan@c-67-169-7-31.hsd1.ca.comcast.net) (Ping timeout: 260 seconds) |
2023-01-07 15:34:48 +0100 | <[exa]> | so I had literal `M.Map String (IO ())` |
2023-01-07 15:34:59 +0100 | biberu | (~biberu@user/biberu) (Ping timeout: 260 seconds) |
2023-01-07 15:35:19 +0100 | biberu\ | biberu |
2023-01-07 15:35:28 +0100 | <[exa]> | then you open the transaction, traverse the argument list, run the list of IO actions that you find with sequence, close the transaction |
2023-01-07 15:35:32 +0100 | <[exa]> | it was luvly. |
2023-01-07 15:36:29 +0100 | <[exa]> | (in something like C++ you would have `std::map<std::string, some_function_pointer>` or so) |
2023-01-07 15:37:09 +0100 | CiaoSen | (~Jura@p200300c9572e35002a3a4dfffe84dbd5.dip0.t-ipconnect.de) |
2023-01-07 15:38:49 +0100 | fizbin | (~fizbin@user/fizbin) |
2023-01-07 15:40:04 +0100 | <Inst> | it's more like tokens + transform, no? |
2023-01-07 15:42:42 +0100 | <[exa]> | yeah, it was very roughly like: getArgs >>= sequence . map (myHandlers M.!) |
2023-01-07 15:43:01 +0100 | <[exa]> | not sure if that even typechecks but I guess you get the idea |
2023-01-07 15:43:29 +0100 | <[exa]> | anyway, the design space of various embeddings/metaprogrammings is pretty wide |
2023-01-07 15:43:38 +0100 | <[exa]> | lemme google 1 thing |
2023-01-07 15:46:10 +0100 | acidjnk | (~acidjnk@p200300d6e715c42998a7643da4cfbc51.dip0.t-ipconnect.de) |
2023-01-07 15:47:35 +0100 | mizlan | (~mizlan@c-67-169-7-31.hsd1.ca.comcast.net) |
2023-01-07 15:48:59 +0100 | mechap | (~mechap@user/mechap) (Ping timeout: 260 seconds) |
2023-01-07 15:50:13 +0100 | <[exa]> | there are various encodings of the programs (eDSLs and alike); you may choose between initial and final representation, and tagged and tagless encoding |
2023-01-07 15:50:38 +0100 | mechap | (~mechap@user/mechap) |
2023-01-07 15:51:18 +0100 | Guest49 | (~Guest49@2409:4064:613:746a:ac10:4c65:5042:bba1) |
2023-01-07 15:53:25 +0100 | Guest49 | (~Guest49@2409:4064:613:746a:ac10:4c65:5042:bba1) (Client Quit) |
2023-01-07 15:55:25 +0100 | gnalzo | (~gnalzo@2a01:e0a:498:fd50:fcc6:bb5d:489a:ce8c) |
2023-01-07 15:55:48 +0100 | <[exa]> | Inst: anyway this is probably a good reading https://serokell.io/blog/introduction-tagless-final (I can't find the post I wanted but this should do) |
2023-01-07 15:56:58 +0100 | titibandit1 | (~titibandi@xdsl-87-78-235-220.nc.de) (Remote host closed the connection) |
2023-01-07 15:57:23 +0100 | <[exa]> | for your use case it might be nice for systematizing what is and isn't useful for various kinds of program manipulation out there |
2023-01-07 15:59:54 +0100 | <Inst> | reading |
2023-01-07 16:00:23 +0100 | <Inst> | tbh i'm trying to write a book for fun (it's so bad I'm now ashamed to show it) and I just need exercise ideas |
2023-01-07 16:00:31 +0100 | <Inst> | I was more thinking of |
2023-01-07 16:00:32 +0100 | <Inst> | https://blog.jle.im/entry/first-class-statements.html |
2023-01-07 16:00:53 +0100 | fizbin | (~fizbin@user/fizbin) (Ping timeout: 260 seconds) |
2023-01-07 16:01:01 +0100 | <Jadesheit[m]> | Isn't the only function that can typecheck `a -> a` the identity function? (apart from sketchy coercion) |
2023-01-07 16:01:39 +0100 | <Jadesheit[m]> | * typecheck `forall a, * a., * a -> a` |
2023-01-07 16:03:16 +0100 | <Inst> | id.id |
2023-01-07 16:03:52 +0100 | <Jadesheit[m]> | that's identically equal to the identity function |
2023-01-07 16:04:56 +0100 | <Inst> | \s\identity function\identity function and derivatives of\ |
2023-01-07 16:05:02 +0100 | <Jadesheit[m]> | `id . id` can be expanded as `\x -> id (id x)`, `\x -> id x` which is just `id` |
2023-01-07 16:06:20 +0100 | stiell_ | (~stiell@gateway/tor-sasl/stiell) (Ping timeout: 255 seconds) |
2023-01-07 16:07:07 +0100 | Yurez23 | (~Yurez23@46.36.117.226) |
2023-01-07 16:07:18 +0100 | <[exa]> | Jadesheit[m]: given some mathematically optimistic conditions about evaluation and lack of `seq`, the only 2 possible implementations of `a->a` are truly `id` and an `undefined` somehow constrained to return the same type as `a` |
2023-01-07 16:08:07 +0100 | tremon | (~tremon@83-85-213-108.cable.dynamic.v4.ziggo.nl) (Ping timeout: 268 seconds) |
2023-01-07 16:11:04 +0100 | <[exa]> | Inst: ha, well, for exercises... implement any of the base languages (forth/lisp/prolog/ML/shell), revelant exercises will spawn magically |
2023-01-07 16:12:07 +0100 | <Guest5476> | I can write a function with a -> a type, that will have special treatment to Bool values, using realyUnsafePtrEquality |
2023-01-07 16:12:33 +0100 | <[exa]> | Guest5476: yeah but well, you know, pls don't. :D |
2023-01-07 16:12:41 +0100 | <Guest5476> | I will call it "realyUnsafeId" |
2023-01-07 16:12:58 +0100 | stiell_ | (~stiell@gateway/tor-sasl/stiell) |
2023-01-07 16:14:05 +0100 | jakalx | (~jakalx@base.jakalx.net) (Error from remote client) |
2023-01-07 16:15:43 +0100 | freemanX | (~user@14.100.44.229) (Ping timeout: 252 seconds) |
2023-01-07 16:17:41 +0100 | <Guest5476> | BTW, it sounds like a good examination for data sharing knowledge |
2023-01-07 16:20:39 +0100 | tremon | (~tremon@83-85-213-108.cable.dynamic.v4.ziggo.nl) |
2023-01-07 16:20:44 +0100 | jakalx | (~jakalx@base.jakalx.net) |
2023-01-07 16:25:20 +0100 | Yurez23 | (~Yurez23@46.36.117.226) (Quit: Client closed) |
2023-01-07 16:30:48 +0100 | Yurez23 | (~Yurez23@46.36.117.226) |
2023-01-07 16:34:45 +0100 | phma | (phma@2001:5b0:210d:e648:536c:bd68:b90b:47da) (Read error: Connection reset by peer) |
2023-01-07 16:35:13 +0100 | phma | (~phma@host-67-44-208-26.hnremote.net) |
2023-01-07 16:35:42 +0100 | emmanuelux | (~emmanuelu@user/emmanuelux) |
2023-01-07 16:36:22 +0100 | mc47 | (~mc47@xmonad/TheMC47) |
2023-01-07 16:40:17 +0100 | geekosaur | (~geekosaur@xmonad/geekosaur) (Quit: Leaving) |
2023-01-07 16:42:11 +0100 | geekosaur | (~geekosaur@xmonad/geekosaur) |
2023-01-07 16:43:21 +0100 | ddellacosta | (~ddellacos@89.45.224.178) |
2023-01-07 16:43:37 +0100 | Yurez23 | (~Yurez23@46.36.117.226) (Quit: Client closed) |
2023-01-07 16:45:27 +0100 | emmanuelux | (~emmanuelu@user/emmanuelux) (Quit: au revoir) |
2023-01-07 16:46:39 +0100 | califax | (~califax@user/califx) (Remote host closed the connection) |
2023-01-07 16:46:53 +0100 | califax_ | (~califax@user/califx) |
2023-01-07 16:48:09 +0100 | califax_ | califax |
2023-01-07 16:49:22 +0100 | mizlan | (~mizlan@c-67-169-7-31.hsd1.ca.comcast.net) (Ping timeout: 272 seconds) |
2023-01-07 16:50:27 +0100 | axeman | (~quassel@2a02:8109:a3c0:ed8:53bb:6cbb:d8cb:4271) |
2023-01-07 16:50:29 +0100 | emmanuelux | (~emmanuelu@user/emmanuelux) |
2023-01-07 16:51:53 +0100 | emmanuelux | (~emmanuelu@user/emmanuelux) (Client Quit) |
2023-01-07 16:54:18 +0100 | emmanuelux | (~emmanuelu@user/emmanuelux) |
2023-01-07 16:58:01 +0100 | hsw | (~hsw@2001-b030-2303-0104-0172-0025-0012-0132.hinet-ip6.hinet.net) (Remote host closed the connection) |
2023-01-07 16:58:20 +0100 | hsw | (~hsw@2001-b030-2303-0104-0172-0025-0012-0132.hinet-ip6.hinet.net) |
2023-01-07 16:59:24 +0100 | Unicorn_Princess | (~Unicorn_P@user/Unicorn-Princess/x-3540542) |
2023-01-07 17:01:57 +0100 | mizlan | (~mizlan@c-67-169-7-31.hsd1.ca.comcast.net) |
2023-01-07 17:15:34 +0100 | <MangoIV[m]> | <MangoIV[m]> "I guess that's the trick that..." <- just for who cares: it's easier to get around this problem by just using... (full message at <https://libera.ems.host/_matrix/media/v3/download/libera.chat/e07ae38cdae1e6aad4afbee459fc4bd7e312…>) |
2023-01-07 17:17:51 +0100 | <dgpratt[m]> | feeling dumb, how do I generalize this function `f n = [[n0, n1, n2 ] | n0 <- [0..n], n1 <- [n0..n], n2 <- [n1..n]]` such that the number of iterations / elements in the inner list is based on a numeric argument? |
2023-01-07 17:18:49 +0100 | <freeside> | recurse or traverse |
2023-01-07 17:23:37 +0100 | waleee | (~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340) |
2023-01-07 17:24:06 +0100 | <freeside> | myfunction depth nLow nHigh ... and somewhere you will want concat, or concatMap ... |
2023-01-07 17:26:23 +0100 | acidjnk | (~acidjnk@p200300d6e715c42998a7643da4cfbc51.dip0.t-ipconnect.de) (Ping timeout: 246 seconds) |
2023-01-07 17:30:03 +0100 | <mauke> | let gen 0 _ = [[]]; gen k (lo, hi) = [ n : suf | n <- [lo .. hi], suf <- gen (k-1) (n, hi) ] in gen 3 (0, 3) |
2023-01-07 17:30:24 +0100 | <mauke> | > let gen 0 _ = [[]]; gen k (lo, hi) = [ n : suf | n <- [lo .. hi], suf <- gen (k-1) (n, hi) ] in gen 3 (0, 3) |
2023-01-07 17:30:25 +0100 | <lambdabot> | [[0,0,0],[0,0,1],[0,0,2],[0,0,3],[0,1,1],[0,1,2],[0,1,3],[0,2,2],[0,2,3],[0,... |
2023-01-07 17:31:20 +0100 | <mauke> | > let gen 0 _ = [[]]; gen k (lo, hi) = [ n : suf | n <- [lo .. hi], suf <- gen (k-1) (n, hi) ] in gen 4 (0, 1) |
2023-01-07 17:31:23 +0100 | <lambdabot> | [[0,0,0,0],[0,0,0,1],[0,0,1,1],[0,1,1,1],[1,1,1,1]] |
2023-01-07 17:31:59 +0100 | <mauke> | :t let gen 0 _ = [[]]; gen k (lo, hi) = [ n : suf | n <- [lo .. hi], suf <- gen (k-1) (n, hi) ] in gen |
2023-01-07 17:32:01 +0100 | <lambdabot> | (Eq t, Num t, Enum a) => t -> (a, a) -> [[a]] |
2023-01-07 17:32:22 +0100 | <mauke> | good enough |
2023-01-07 17:32:34 +0100 | <stefan-_> | I am working on AoC day 17 with a field type of `[Word8]` (bit-based operations), it turns out that drop, foldl+reverse and (++) take about 95% of the time |
2023-01-07 17:32:50 +0100 | <stefan-_> | are there better alternatives than a list of Word8? |
2023-01-07 17:33:43 +0100 | <carbolymer> | ByteString? |
2023-01-07 17:33:43 +0100 | <freeside> | data.vector |
2023-01-07 17:34:37 +0100 | <freeside> | looking at the puzzle, why not data.matrix |
2023-01-07 17:37:08 +0100 | eggplantade | (~Eggplanta@2600:1700:38c5:d800:cc20:d690:f22b:cb00) |
2023-01-07 17:37:43 +0100 | <dgpratt[m]> | that appears to be exactly what I was trying to do, thanks mauke |
2023-01-07 17:39:18 +0100 | <stefan-_> | freeside, part 2 requires a field height of 10^12, I guess I will run into space problems with Data.Matrix |
2023-01-07 17:39:21 +0100 | <dgpratt[m]> | wish I could have figured that out myself, but I'll settle for knowing how to do it now :) |
2023-01-07 17:39:27 +0100 | <stefan-_> | (probably also with [Word8]) |
2023-01-07 17:41:04 +0100 | <byorgey> | stefan-_: for part 2 you want to find a way to do it that doesn't require actually simulating/storing the entire thing. |
2023-01-07 17:41:34 +0100 | <byorgey> | stefan-_: you might also consider a Set (Int,Int) |
2023-01-07 17:41:42 +0100 | <stefan-_> | byorgey, there is a cycle after n*m steps, but I couldnt figure out how to make use of this information yet |
2023-01-07 17:41:47 +0100 | eggplantade | (~Eggplanta@2600:1700:38c5:d800:cc20:d690:f22b:cb00) (Ping timeout: 260 seconds) |
2023-01-07 17:41:53 +0100 | <stefan-_> | byorgey, that was my first try |
2023-01-07 17:41:54 +0100 | <byorgey> | stefan-_: yes, that's on the right track |
2023-01-07 17:43:09 +0100 | <byorgey> | stefan-_: your first try was Set (Int,Int)? And it was too slow? |
2023-01-07 17:43:47 +0100 | <stefan-_> | byorgey, it is currently twice as fast as the [Word8]-based solution, I just wanted to give [Word8] a try |
2023-01-07 17:44:44 +0100 | <byorgey> | ah, I see. Yes, lists have a lot of overhead. They are great when used as a control structure, i.e. for loop, but not so good as a data structure |
2023-01-07 17:44:58 +0100 | <stefan-_> | also it might be possible to prune the lower parts of the field, which are no longer reachable |
2023-01-07 17:46:02 +0100 | <byorgey> | I don't do any pruning and my solution using Set (Int,Int) is quite fast (0.05s). |
2023-01-07 17:49:20 +0100 | epolanski | (uid312403@id-312403.helmsley.irccloud.com) |
2023-01-07 17:49:33 +0100 | <stefan-_> | ok, then maybe I should put a bit more thought into the cycle structure |
2023-01-07 17:49:49 +0100 | <stefan-_> | thanks for the help byorgey, freeside and carbolymer |
2023-01-07 17:52:22 +0100 | <kjlid[m]> | So I'm using Data.Time.Format.ISO8601.iso8601Show to print a date but I currently get it in the format 2023-01-07T17:41:11.600203379+01:00 but I want it in the format 2023-01-07T17:51:34+01:00. How do I get rid of the milliseconds? Maybe it's just me but the documentation at https://hackage.haskell.org/package/time-1.12.2/docs/Data-Time-Format-ISO8601.html isn't completely obvious |
2023-01-07 17:52:40 +0100 | <kjlid[m]> | s/milliseconds/decimals/ |
2023-01-07 17:53:33 +0100 | jakalx | (~jakalx@base.jakalx.net) (Error from remote client) |
2023-01-07 17:54:07 +0100 | kora9 | (~kora@user/Kora9) (Quit: WeeChat 3.5) |
2023-01-07 17:57:08 +0100 | jakalx | (~jakalx@base.jakalx.net) |
2023-01-07 17:59:43 +0100 | <sm> | aside: seriously, what the hell good is a "standard" you have to "buy" |
2023-01-07 17:59:44 +0100 | <sm> | https://www.iso.org/obp/ui/#iso:std:iso:8601:ed-3:v1:en |
2023-01-07 17:59:56 +0100 | <sm> | good morning all ! |
2023-01-07 18:00:30 +0100 | <darkling> | People have been asking that question for *years*. |
2023-01-07 18:00:56 +0100 | <sm> | CHF187 to read it ? |
2023-01-07 18:01:30 +0100 | <c_wraith> | It's way worse in some other fields. You have to pay thousands to get a copy of the legal requirements for construction in a lot of places. |
2023-01-07 18:01:55 +0100 | <sm> | in that case, https://hackage.haskell.org/package/time-1.12.2/docs/Data-Time-Format-ISO8601.html delegating to it for documentation is a serious bug |
2023-01-07 18:02:12 +0100 | <freeside> | http://blog.archive.org/2022/10/19/2022-internet-archive-hero-award-carl-malamud/ |
2023-01-07 18:02:51 +0100 | <freeside> | fortunatley ISO8601 is well enough explained elsewhere, e.g. https://en.wikipedia.org/wiki/ISO_8601 |
2023-01-07 18:04:38 +0100 | <darkling> | I've had to look at a bunch of geospatial standards recently. Fortunately, they're dual-published, so I suspect the OGC gets all the traffic to their version of the text, and the ISO gets a whole load of nope. |
2023-01-07 18:04:49 +0100 | tzh | (~tzh@c-24-21-73-154.hsd1.wa.comcast.net) |
2023-01-07 18:05:12 +0100 | <kjlid[m]> | The C standard is CHF 208 |
2023-01-07 18:06:02 +0100 | mizlan | (~mizlan@c-67-169-7-31.hsd1.ca.comcast.net) (Ping timeout: 252 seconds) |
2023-01-07 18:06:18 +0100 | <sm> | kjlid: I would avoid that module, unless you're willing to trial and error each of its formats, and make your own format instead using the codes at https://hackage.haskell.org/package/time-1.12.2/docs/Data-Time-Format.html |
2023-01-07 18:06:19 +0100 | <dolio> | You can get old versions of that, at least. |
2023-01-07 18:06:20 +0100 | <kjlid[m]> | Aww okay |
2023-01-07 18:06:42 +0100 | <dolio> | For free, that is. |
2023-01-07 18:07:00 +0100 | <geekosaur> | nobody reads it anyway 😈 |
2023-01-07 18:07:10 +0100 | <dolio> | I read it. :) |
2023-01-07 18:07:19 +0100 | <sm> | I tried to read it just now |
2023-01-07 18:08:42 +0100 | <kjlid[m]> | But you're too cheap to cough up a measly CHF187 to figure out how to format dates? |
2023-01-07 18:09:41 +0100 | mizlan | (~mizlan@c-67-169-7-31.hsd1.ca.comcast.net) |
2023-01-07 18:10:08 +0100 | <kjlid[m]> | I wonder if the writer of this documentation actually paid up and figured everyone would do the same |
2023-01-07 18:10:22 +0100 | <freeside> | https://www.amazon.com/Calendrical-Calculations-Ultimate-Edward-Reingold/dp/1107683165/ is a lot cheaper than the last time i looked |
2023-01-07 18:10:30 +0100 | <pragma-> | "This standard has been withdrawn." |
2023-01-07 18:10:41 +0100 | <razetime> | how do i apply a function to each element in a tuple? |
2023-01-07 18:10:48 +0100 | <pragma-> | If y'all pay for a withdrawn standard, that's going to be even funnier. |
2023-01-07 18:11:46 +0100 | <c_wraith> | razetime: there's no general tool for that. mostly because different sizes of tuple are completely unrelated types |
2023-01-07 18:12:03 +0100 | <razetime> | i see. so it just needs to be pattern matched |
2023-01-07 18:12:18 +0100 | <c_wraith> | :t bimap -- razetime: but if you're working with pairs, this exists |
2023-01-07 18:12:20 +0100 | <lambdabot> | Bifunctor p => (a -> b) -> (c -> d) -> p a c -> p b d |
2023-01-07 18:13:30 +0100 | <ncf> | if you've got lenses handy, `over each` |
2023-01-07 18:13:45 +0100 | acidjnk | (~acidjnk@p200300d6e715c403c13dad5c816a3096.dip0.t-ipconnect.de) |
2023-01-07 18:13:55 +0100 | mbuf | (~Shakthi@49.204.114.1) (Quit: Leaving) |
2023-01-07 18:13:59 +0100 | <c_wraith> | ncf: I don't recommend that in general, because it requires every tuple element have the same type. That's not how tuples are usually used |
2023-01-07 18:14:40 +0100 | <ncf> | fair |
2023-01-07 18:14:58 +0100 | sm | imagines traffic lights that blink in special codes, you have to be a subscriber to know what they mean |
2023-01-07 18:17:59 +0100 | jinsun__ | (~jinsun@user/jinsun) |
2023-01-07 18:17:59 +0100 | jinsun | (~jinsun@user/jinsun) (Killed (tantalum.libera.chat (Nickname regained by services))) |
2023-01-07 18:17:59 +0100 | jinsun__ | jinsun |
2023-01-07 18:18:51 +0100 | freeside | (~mengwong@103.252.202.159) (Ping timeout: 268 seconds) |
2023-01-07 18:19:48 +0100 | freeside | (~mengwong@103.252.202.159) |
2023-01-07 18:21:13 +0100 | <darkling> | sm: Don't give them ideas... :( |
2023-01-07 18:22:23 +0100 | <sm> | traffic lights don't build themselves you know! We've got to fund them somehow |
2023-01-07 18:22:26 +0100 | <kjlid[m]> | Oooh, I like it. Add microtransactions to traffic |
2023-01-07 18:22:56 +0100 | <[exa]> | "pls show me how not to die on this crossroads" just for $1.35 *ka-ching* |
2023-01-07 18:23:38 +0100 | <darkling> | How many brands of traffic light would you have to license in order to be able to use the self-drive on your car? |
2023-01-07 18:23:44 +0100 | <hpc> | kjlid[m]: that's just toll roads :P |
2023-01-07 18:23:49 +0100 | <darkling> | (Cost/month, of course) |
2023-01-07 18:24:33 +0100 | <[exa]> | darkling: no problem there, self-driving can be cashed for separately |
2023-01-07 18:25:12 +0100 | <razetime> | c_wraith: bimap is useful, thanks |
2023-01-07 18:25:26 +0100 | <razetime> | well, until i decided to use a tuple of 4 values |
2023-01-07 18:25:43 +0100 | <[exa]> | quadrimap! |
2023-01-07 18:27:31 +0100 | freeside | (~mengwong@103.252.202.159) (Ping timeout: 260 seconds) |
2023-01-07 18:29:00 +0100 | freeside | (~mengwong@103.252.202.159) |
2023-01-07 18:30:08 +0100 | igghibu | (~igghibu@178.249.211.75) |
2023-01-07 18:33:15 +0100 | freeside | (~mengwong@103.252.202.159) (Ping timeout: 252 seconds) |
2023-01-07 18:36:13 +0100 | titibandit1 | (~titibandi@xdsl-87-78-235-220.nc.de) |
2023-01-07 18:36:47 +0100 | <MangoIV[m]> | hcmap |
2023-01-07 18:38:30 +0100 | beteigeuze | (~Thunderbi@bl14-81-220.dsl.telepac.pt) (Read error: Connection reset by peer) |
2023-01-07 18:39:03 +0100 | beteigeuze | (~Thunderbi@bl14-81-220.dsl.telepac.pt) |
2023-01-07 18:40:04 +0100 | titibandit1 | (~titibandi@xdsl-87-78-235-220.nc.de) (Remote host closed the connection) |
2023-01-07 18:40:31 +0100 | <mauke> | :t bimap |
2023-01-07 18:40:33 +0100 | <lambdabot> | Bifunctor p => (a -> b) -> (c -> d) -> p a c -> p b d |
2023-01-07 18:41:18 +0100 | <mauke> | :t uncurry bimap . uncurry bimap |
2023-01-07 18:41:20 +0100 | <lambdabot> | error: |
2023-01-07 18:41:20 +0100 | <lambdabot> | • Couldn't match type ‘p0 a c -> p0 b d’ |
2023-01-07 18:41:20 +0100 | <lambdabot> | with ‘(a1 -> b1, c1 -> d1)’ |
2023-01-07 18:41:39 +0100 | <mauke> | oh, duh |
2023-01-07 18:41:59 +0100 | gdd | (~gdd@2001:470:1f13:187:31f4:d139:4ea3:c0fd) (Ping timeout: 246 seconds) |
2023-01-07 18:42:54 +0100 | gdd | (~gdd@2001:470:1f13:187:e8a5:fbff:fe29:42f5) |
2023-01-07 18:44:44 +0100 | jao | (~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net) |
2023-01-07 18:47:49 +0100 | freeside | (~mengwong@103.252.202.159) |
2023-01-07 18:55:44 +0100 | Profpatsch | (~Profpatsc@static.88-198-193-255.clients.your-server.de) |
2023-01-07 18:56:07 +0100 | <Profpatsch> | I saw a “Generalization of the difference list trick” thing somewher, either with Monoid or with Category |
2023-01-07 18:56:55 +0100 | axeman | (~quassel@2a02:8109:a3c0:ed8:53bb:6cbb:d8cb:4271) (Ping timeout: 260 seconds) |
2023-01-07 18:57:08 +0100 | <dolio> | It's related to Cayley's theorem/the Yoneda lemma. |
2023-01-07 18:57:21 +0100 | freemanX | (~user@14.100.44.229) |
2023-01-07 19:00:06 +0100 | <Profpatsch> | dolio: can you remember which module it was in? |
2023-01-07 19:00:18 +0100 | <razetime> | is there an online editor for haskell which lets you load your program into ghci? |
2023-01-07 19:00:28 +0100 | <dolio> | Probably Data.Monoid. Endo. |
2023-01-07 19:00:35 +0100 | <ncf> | https://hackage.haskell.org/package/profunctors-5.6.2/docs/Data-Profunctor-Ran.html#t:Codensity |
2023-01-07 19:00:44 +0100 | <[exa]> | razetime: see topic :] |
2023-01-07 19:00:58 +0100 | <[exa]> | also repl.it had something if you need more complicated setups |
2023-01-07 19:01:11 +0100 | <ncf> | or https://hackage.haskell.org/package/kan-extensions-5.2.5/docs/Control-Monad-Codensity.html |
2023-01-07 19:02:02 +0100 | <razetime> | replit looks more like it, i need to load the file in the interpreter to test functions |
2023-01-07 19:02:23 +0100 | <Profpatsch> | dolio: Aaaah, thank you, you are right, it’s in Data.Semigroup |
2023-01-07 19:02:49 +0100 | <geekosaur> | tbh if I'm at that point, I'd go with local ghci. can install packages as well, which you generally can't with online setups |
2023-01-07 19:03:01 +0100 | <Inst> | question |
2023-01-07 19:03:08 +0100 | <ncf> | oh, *that* generalisation |
2023-01-07 19:03:09 +0100 | <Inst> | is there an "IO problem" in Haskell? |
2023-01-07 19:03:48 +0100 | <ncf> | what's an IO problem |
2023-01-07 19:04:04 +0100 | <Inst> | that is to say, Haskell has a separation between pure and impure code, manifested by either the IO layer or monadic code |
2023-01-07 19:04:14 +0100 | <Inst> | consequently, you have questions like: |
2023-01-07 19:04:24 +0100 | <Inst> | "how much of my code should be pure and how much should be impure?" |
2023-01-07 19:04:30 +0100 | <Inst> | "if i have to have impure code, how should I structure it?" |
2023-01-07 19:04:50 +0100 | <geekosaur> | Inst, usually that's not a problem except to newcomers, instead it encourages separatingt your logic cleanly |
2023-01-07 19:05:24 +0100 | enthropy | (~enthropy@66.7.90.250) |
2023-01-07 19:05:45 +0100 | <Inst> | the way I understand it is that all the effects systems are sort of a response to what I'd call the IO problem |
2023-01-07 19:06:11 +0100 | <dolio> | What is the IO problem? |
2023-01-07 19:06:21 +0100 | <geekosaur> | the way I understand it is effects systems are a response to a perceived problem with mtl |
2023-01-07 19:06:30 +0100 | <geekosaur> | not with IO as such |
2023-01-07 19:06:35 +0100 | <Inst> | i'm including MTL as an effects system |
2023-01-07 19:07:05 +0100 | <monochrom> | There is no "IO problem". Let's end the pointless "discussion" and move on. |
2023-01-07 19:07:15 +0100 | <geekosaur> | ^ |
2023-01-07 19:07:24 +0100 | Plebbu | (~user@52.124.39.58) |
2023-01-07 19:07:25 +0100 | <Inst> | okay, fine |
2023-01-07 19:07:28 +0100 | <ncf> | oh man can we have the same monochrom in #categorytheory |
2023-01-07 19:07:28 +0100 | <geekosaur> | I explained what's up with IO earlier |
2023-01-07 19:07:42 +0100 | <Inst> | it's considered solved in Haskell |
2023-01-07 19:07:49 +0100 | <geekosaur> | once you learn code structuring, IO is a friend, not a problem |
2023-01-07 19:07:54 +0100 | <dolio> | I think the seeds of MTL might predate IO as a monad. |
2023-01-07 19:08:11 +0100 | <dolio> | I assume Wadler's original monads paper has examples that aren't IO. |
2023-01-07 19:08:14 +0100 | <Inst> | i default to doing all computations in as much pure code as possible |
2023-01-07 19:08:25 +0100 | <geekosaur> | and what you learn with it will also benefit you in other languages |
2023-01-07 19:08:34 +0100 | <monochrom> | ncf: I tried! Years ago I already predicted that heinz is a crackpot and suggested you guys to ban or at least ignore. Since then they have only become worse. |
2023-01-07 19:08:38 +0100 | <Inst> | but sometimes i wonder if that's the best solution, especially since i prefer IO / pure isntead of monad trans |
2023-01-07 19:09:07 +0100 | <ncf> | i don't even know who the mods are in that channel |
2023-01-07 19:09:32 +0100 | <ncf> | apparently "tapas" is the founder... but they're not even in the channel |
2023-01-07 19:09:47 +0100 | <Inst> | oh, i know who that is, you can find her on FP discord |
2023-01-07 19:09:48 +0100 | <ncf> | sorry, wildly off-topic |
2023-01-07 19:10:20 +0100 | <Inst> | geekosaur: as i've said before, I've reached 200:1 pure to IO ratios |
2023-01-07 19:10:34 +0100 | <Inst> | but some programs you need more code in IO |
2023-01-07 19:11:02 +0100 | <Profpatsch> | Inst: Isn’t that a moot discussion |
2023-01-07 19:11:22 +0100 | <Profpatsch> | the same best practices apply whether you are writing Haskell or elisp or javascript |
2023-01-07 19:12:09 +0100 | <Inst> | it's just weird when you're doing haskell and you have more than 50% of your code in IO |
2023-01-07 19:12:24 +0100 | <Profpatsch> | No |
2023-01-07 19:12:33 +0100 | <Profpatsch> | That’s the only code that does anything |
2023-01-07 19:12:51 +0100 | <Profpatsch> | The rest is up to what you want to *do* |
2023-01-07 19:12:53 +0100 | <dolio> | I write a lot of non-IO code that does stuff. |
2023-01-07 19:13:06 +0100 | <Profpatsch> | if all you want to do is run a then b than c, that’s IO |
2023-01-07 19:13:11 +0100 | <Profpatsch> | *then |
2023-01-07 19:13:33 +0100 | <Profpatsch> | If you want to test shit or run it in a different way, then you should probably factor it out |
2023-01-07 19:13:40 +0100 | <Profpatsch> | that’s all there is to it |
2023-01-07 19:14:00 +0100 | tromp | (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
2023-01-07 19:14:35 +0100 | <Profpatsch> | (Haskell provides a *lot* better mechanisms to factor stuff out than other languages do, which is its main advantage) |
2023-01-07 19:14:40 +0100 | <Inst> | hmmmm, i just guess with more IO intensive code, I need more practice moving stuff out, like changing conditions to be based on a <$> isntead of a >>=, etc |
2023-01-07 19:15:01 +0100 | <Inst> | and being better at isolating the stuff that actually calls IO |
2023-01-07 19:15:21 +0100 | <Profpatsch> | Inst: floating out pure’s is a very simple refactor which will come naturally after a while |
2023-01-07 19:15:46 +0100 | <Profpatsch> | writing left-to-right Haskell helps with that, but that’s just my opinion |
2023-01-07 19:17:35 +0100 | <ncf> | what's a left-to-right haskell |
2023-01-07 19:18:00 +0100 | <Profpatsch> | writing left to right, top to bottem |
2023-01-07 19:18:03 +0100 | <Profpatsch> | *bottom |
2023-01-07 19:18:25 +0100 | <ncf> | that's how most text editors work |
2023-01-07 19:18:35 +0100 | <monochrom> | I guess it means "h >>> g >>> f" instead of "f . g . h" |
2023-01-07 19:18:48 +0100 | <Profpatsch> | getLine <&> Text.pack <&> Text.split " " & traverse putStrLn |
2023-01-07 19:19:10 +0100 | <ncf> | ah, diagrammatic order |
2023-01-07 19:19:11 +0100 | <ncf> | i like that |
2023-01-07 19:19:21 +0100 | <Profpatsch> | the last one should be a >>= instead of & |
2023-01-07 19:19:37 +0100 | <Inst> | maybe could I get code review here? |
2023-01-07 19:19:38 +0100 | <Inst> | https://github.com/liamzee/Dicewarist/blob/master/app/Dicewarist.hs |
2023-01-07 19:21:05 +0100 | <Profpatsch> | But can be applied to pure code as well, e.g. myMap & Map.toList <&> Json.parse <&> eitherToValidationList & sequence & \case { Failure errs -> error errs; Success a -> pure a } |
2023-01-07 19:21:32 +0100 | <Profpatsch> | (ofc this would go on a bunch of lines instead but for the sake of brevity) |
2023-01-07 19:29:33 +0100 | <enthropy> | writing code for dear-imgui makes me want static variables. IE. an IORef defined where it's used but one that keeps the old value across iterations of mainLoop. Since template haskell now supports -XImplicitParams it seems like I could have $(ref "x" mempty) expand out to "?x_unique_number", and then I can generate the first part of main = do x_1 |
2023-01-07 19:29:34 +0100 | <enthropy> | <- newIORef mempty; let ?x_1 = x_1 in mainLoop. Or does such a thing already exist? |
2023-01-07 19:30:43 +0100 | razetime | (~Thunderbi@49.207.222.244) (Remote host closed the connection) |
2023-01-07 19:33:31 +0100 | shriekingnoise | (~shrieking@186.137.175.87) |
2023-01-07 19:34:11 +0100 | <enthropy> | is it correct that the unsafePerformIO newIORef trick only works at top-level? |
2023-01-07 19:35:54 +0100 | waleee | (~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340) (Quit: WeeChat 3.7.1) |
2023-01-07 19:37:16 +0100 | <monochrom> | I don't know about "only", but I know about "simplest to predict". |
2023-01-07 19:38:31 +0100 | <monochrom> | A reassuring thought being that base itself needs a few of those too, so you know that GHC cannot mishandle them. |
2023-01-07 19:38:39 +0100 | <geekosaur> | I'd say "only necessary" |
2023-01-07 19:39:13 +0100 | <geekosaur> | because anywhere else you have control over it already |
2023-01-07 19:39:47 +0100 | waleee | (~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340) |
2023-01-07 19:49:31 +0100 | CiaoSen | (~Jura@p200300c9572e35002a3a4dfffe84dbd5.dip0.t-ipconnect.de) (Ping timeout: 252 seconds) |
2023-01-07 19:52:27 +0100 | freeside | (~mengwong@103.252.202.159) (Ping timeout: 248 seconds) |
2023-01-07 19:57:35 +0100 | mc47 | (~mc47@xmonad/TheMC47) (Quit: Leaving) |
2023-01-07 19:58:15 +0100 | mc47 | (~mc47@xmonad/TheMC47) |
2023-01-07 20:06:16 +0100 | mei | (~mei@user/mei) (Quit: mei) |
2023-01-07 20:06:52 +0100 | jinsun | Guest3215 |
2023-01-07 20:06:52 +0100 | jinsun__ | (~jinsun@user/jinsun) |
2023-01-07 20:06:52 +0100 | Guest3215 | (~jinsun@user/jinsun) (Killed (molybdenum.libera.chat (Nickname regained by services))) |
2023-01-07 20:06:52 +0100 | jinsun__ | jinsun |
2023-01-07 20:10:57 +0100 | freeside | (~mengwong@103.252.202.159) |
2023-01-07 20:15:50 +0100 | freeside | (~mengwong@103.252.202.159) (Ping timeout: 272 seconds) |
2023-01-07 20:16:44 +0100 | freeside | (~mengwong@103.252.202.159) |
2023-01-07 20:19:48 +0100 | cameron_ | (~quassel@050-089-109-059.res.spectrum.com) |
2023-01-07 20:21:25 +0100 | jinsun | (~jinsun@user/jinsun) (Read error: Connection reset by peer) |
2023-01-07 20:21:26 +0100 | Plebbu | (~user@52.124.39.58) (Quit: ERC 5.4 (IRC client for GNU Emacs 28.2.50)) |
2023-01-07 20:21:39 +0100 | jinsun | (~jinsun@user/jinsun) |
2023-01-07 20:23:54 +0100 | Kaipei | (~Kaiepi@nwcsnbsc03w-47-55-159-86.dhcp-dynamic.fibreop.nb.bellaliant.net) (Ping timeout: 252 seconds) |
2023-01-07 20:23:56 +0100 | tromp | (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
2023-01-07 20:26:14 +0100 | phma | (~phma@host-67-44-208-26.hnremote.net) (Read error: Connection reset by peer) |
2023-01-07 20:27:02 +0100 | wroathe | (~wroathe@50.205.197.50) |
2023-01-07 20:27:02 +0100 | wroathe | (~wroathe@50.205.197.50) (Changing host) |
2023-01-07 20:27:02 +0100 | wroathe | (~wroathe@user/wroathe) |
2023-01-07 20:27:21 +0100 | phma | (phma@2001:5b0:210d:7648:cd95:5ae2:112e:6872) |
2023-01-07 20:27:58 +0100 | econo | (uid147250@user/econo) |
2023-01-07 20:28:03 +0100 | lbseale | (~quassel@user/ep1ctetus) (Ping timeout: 260 seconds) |
2023-01-07 20:29:48 +0100 | freemanX | (~user@14.100.44.229) (Remote host closed the connection) |
2023-01-07 20:30:32 +0100 | Benzi-Junior | (~BenziJuni@dsl-149-66-52.hive.is) |
2023-01-07 20:30:35 +0100 | foul_owl | (~kerry@157.97.134.61) (Ping timeout: 252 seconds) |
2023-01-07 20:30:54 +0100 | <Benzi-Junior> | What does (..) mean in imoprt ? |
2023-01-07 20:31:20 +0100 | cameron_ | scoopahdoopah |
2023-01-07 20:32:29 +0100 | wroathe | (~wroathe@user/wroathe) (Ping timeout: 260 seconds) |
2023-01-07 20:32:31 +0100 | <enthropy> | I wrote the implicitparams/template haskell option https://gist.github.com/aavogt/2312f92289b1bcf65cd506b365949a56 but I don't see the mistake in my generated code that ghc is pointing out |
2023-01-07 20:32:53 +0100 | <Benzi-Junior> | i.e. "import Types (MTL (..))" |
2023-01-07 20:32:54 +0100 | <boxscape_> | Benzi-Junior if you have `import Data.Maybe (Maybe(..))` it means import Maybe and all its constructors, i.e. Nothing and Just |
2023-01-07 20:35:46 +0100 | Kaipei | (~Kaiepi@nwcsnbsc03w-47-55-159-86.dhcp-dynamic.fibreop.nb.bellaliant.net) |
2023-01-07 20:36:19 +0100 | <Benzi-Junior> | boxscape_, ahh that makes sense |
2023-01-07 20:37:07 +0100 | wroathe | (~wroathe@50.205.197.50) |
2023-01-07 20:37:07 +0100 | wroathe | (~wroathe@50.205.197.50) (Changing host) |
2023-01-07 20:37:07 +0100 | wroathe | (~wroathe@user/wroathe) |
2023-01-07 20:39:20 +0100 | eggplantade | (~Eggplanta@2600:1700:38c5:d800:cc20:d690:f22b:cb00) |
2023-01-07 20:40:37 +0100 | <Benzi-Junior> | also in the line "data TL = TL {}" what is the significance of "{}" |
2023-01-07 20:41:00 +0100 | <Benzi-Junior> | I mean it seems to me to be a constructor with 0 named fields |
2023-01-07 20:41:27 +0100 | <boxscape_> | that is correct |
2023-01-07 20:41:42 +0100 | <boxscape_> | it's the same as `data TL = TL` |
2023-01-07 20:42:13 +0100 | <Benzi-Junior> | ok I guess that means Im expected to fill it in |
2023-01-07 20:42:18 +0100 | fizbin | (~fizbin@user/fizbin) |
2023-01-07 20:42:48 +0100 | <boxscape_> | hm, could be, depends on what the task is I suppose |
2023-01-07 20:43:24 +0100 | <Benzi-Junior> | I hate doing programming tests, I never know what parts I should be changing and which ones are just setup |
2023-01-07 20:43:55 +0100 | eggplantade | (~Eggplanta@2600:1700:38c5:d800:cc20:d690:f22b:cb00) (Ping timeout: 260 seconds) |
2023-01-07 20:43:56 +0100 | <boxscape_> | hm sounds like what you hate is poorly designed programming tests :P |
2023-01-07 20:45:17 +0100 | eggplantade | (~Eggplanta@2600:1700:38c5:d800:cc20:d690:f22b:cb00) |
2023-01-07 20:45:56 +0100 | boxscape_ | (~boxscape_@81.191.27.107) (Quit: Connection closed) |
2023-01-07 20:46:36 +0100 | foul_owl | (~kerry@193.29.61.203) |
2023-01-07 20:47:16 +0100 | gmg | (~user@user/gehmehgeh) |
2023-01-07 20:48:51 +0100 | epolanski | (uid312403@id-312403.helmsley.irccloud.com) (Quit: Connection closed for inactivity) |
2023-01-07 20:49:57 +0100 | boxscape_ | (~boxscape_@81.191.27.107) |
2023-01-07 20:51:18 +0100 | fizbin | (~fizbin@user/fizbin) (Ping timeout: 272 seconds) |
2023-01-07 20:55:09 +0100 | Sgeo | (~Sgeo@user/sgeo) |
2023-01-07 20:57:11 +0100 | ddellacosta | (~ddellacos@89.45.224.178) (Ping timeout: 264 seconds) |
2023-01-07 20:57:50 +0100 | califax | (~califax@user/califx) (Remote host closed the connection) |
2023-01-07 21:00:31 +0100 | califax | (~califax@user/califx) |
2023-01-07 21:02:24 +0100 | califax | (~califax@user/califx) (Remote host closed the connection) |
2023-01-07 21:02:37 +0100 | iqubic | (~avi@2601:602:9502:c70:8f59:bc2:c041:8ab2) |
2023-01-07 21:03:22 +0100 | califax | (~califax@user/califx) |
2023-01-07 21:04:04 +0100 | jakalx | (~jakalx@base.jakalx.net) (Error from remote client) |
2023-01-07 21:04:54 +0100 | jakalx | (~jakalx@base.jakalx.net) |
2023-01-07 21:05:14 +0100 | tromp | (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
2023-01-07 21:06:53 +0100 | CiaoSen | (~Jura@p200300c9572e35002a3a4dfffe84dbd5.dip0.t-ipconnect.de) |
2023-01-07 21:10:06 +0100 | <enthropy> | I solved my problem above and updated the gist. The issue is the same as: `(\e -> let ?x = "" in e) ?x` doesn't work like `let ?x = "" in ?x` does. |
2023-01-07 21:12:01 +0100 | acidjnk | (~acidjnk@p200300d6e715c403c13dad5c816a3096.dip0.t-ipconnect.de) (Ping timeout: 252 seconds) |
2023-01-07 21:16:14 +0100 | cyphase | (~cyphase@user/cyphase) (Ping timeout: 260 seconds) |
2023-01-07 21:16:27 +0100 | Guest9971 | (~finn@roc37-h01-176-170-197-243.dsl.sta.abo.bbox.fr) |
2023-01-07 21:18:34 +0100 | mizlan | (~mizlan@c-67-169-7-31.hsd1.ca.comcast.net) (Ping timeout: 260 seconds) |
2023-01-07 21:20:02 +0100 | cyphase | (~cyphase@user/cyphase) |
2023-01-07 21:20:12 +0100 | mizlan | (~mizlan@c-67-169-7-31.hsd1.ca.comcast.net) |
2023-01-07 21:21:42 +0100 | freeside | (~mengwong@103.252.202.159) (Ping timeout: 272 seconds) |
2023-01-07 21:22:34 +0100 | trev | (~trev@user/trev) (Remote host closed the connection) |
2023-01-07 21:23:37 +0100 | hueso | (~root@user/hueso) (Quit: hueso) |
2023-01-07 21:23:54 +0100 | acidjnk | (~acidjnk@p200300d6e715c403c13dad5c816a3096.dip0.t-ipconnect.de) |
2023-01-07 21:25:22 +0100 | justsomeguy | (~justsomeg@user/justsomeguy) |
2023-01-07 21:33:10 +0100 | caef^ | (~caef@76.145.190.81) |
2023-01-07 21:33:12 +0100 | freeside | (~mengwong@103.252.202.159) |
2023-01-07 21:35:03 +0100 | enthropy | (~enthropy@66.7.90.250) (Quit: Client closed) |
2023-01-07 21:41:37 +0100 | briandaed | (~briandaed@185.234.210.211.r.toneticgroup.pl) |
2023-01-07 21:55:24 +0100 | panovia | (~user@user/siracusa) |
2023-01-07 21:59:17 +0100 | tromp | (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
2023-01-07 22:01:56 +0100 | mizlan | (~mizlan@c-67-169-7-31.hsd1.ca.comcast.net) (Ping timeout: 265 seconds) |
2023-01-07 22:07:26 +0100 | jmdaemon | (~jmdaemon@user/jmdaemon) |
2023-01-07 22:08:49 +0100 | echoreply | (~echoreply@45.32.163.16) |
2023-01-07 22:15:39 +0100 | wroathe | (~wroathe@user/wroathe) (Ping timeout: 268 seconds) |
2023-01-07 22:16:08 +0100 | wroathe | (~wroathe@50.205.197.50) |
2023-01-07 22:16:08 +0100 | wroathe | (~wroathe@50.205.197.50) (Changing host) |
2023-01-07 22:16:08 +0100 | wroathe | (~wroathe@user/wroathe) |
2023-01-07 22:20:35 +0100 | AlexNoo_ | (~AlexNoo@178.34.160.164) |
2023-01-07 22:20:35 +0100 | Alex_test | (~al_test@178.34.160.164) (Ping timeout: 268 seconds) |
2023-01-07 22:21:02 +0100 | Alex_test | (~al_test@178.34.160.164) |
2023-01-07 22:21:12 +0100 | AlexNoo | (~AlexNoo@178.34.160.164) (Ping timeout: 268 seconds) |
2023-01-07 22:21:21 +0100 | fizbin | (~fizbin@user/fizbin) |
2023-01-07 22:21:23 +0100 | AlexNoo_ | AlexNoo |
2023-01-07 22:21:52 +0100 | AlexZenon | (~alzenon@178.34.160.164) (Ping timeout: 272 seconds) |
2023-01-07 22:22:37 +0100 | briandaed | (~briandaed@185.234.210.211.r.toneticgroup.pl) (Remote host closed the connection) |
2023-01-07 22:22:44 +0100 | AlexZenon | (~alzenon@178.34.160.164) |
2023-01-07 22:23:42 +0100 | esph | (~weechat@user/esph) |
2023-01-07 22:25:37 +0100 | justsomeguy | (~justsomeg@user/justsomeguy) (Ping timeout: 265 seconds) |
2023-01-07 22:25:40 +0100 | Lord_of_Life | (~Lord@user/lord-of-life/x-2819915) (Ping timeout: 272 seconds) |
2023-01-07 22:27:49 +0100 | lbseale | (~quassel@user/ep1ctetus) |
2023-01-07 22:28:29 +0100 | fizbin | (~fizbin@user/fizbin) (Ping timeout: 246 seconds) |
2023-01-07 22:29:04 +0100 | Lord_of_Life | (~Lord@user/lord-of-life/x-2819915) |
2023-01-07 22:37:51 +0100 | mc47 | (~mc47@xmonad/TheMC47) (Remote host closed the connection) |
2023-01-07 22:38:47 +0100 | Lycurgus | (~juan@user/Lycurgus) |
2023-01-07 22:40:49 +0100 | hueso | (~root@user/hueso) |
2023-01-07 22:45:06 +0100 | wroathe_ | (~wroathe@50.205.197.50) |
2023-01-07 22:45:38 +0100 | wroathe | (~wroathe@user/wroathe) (Killed (NickServ (GHOST command used by wroathe_!~wroathe@50.205.197.50))) |
2023-01-07 22:45:47 +0100 | wroathe_ | wroathe |
2023-01-07 22:45:59 +0100 | wroathe | (~wroathe@50.205.197.50) (Changing host) |
2023-01-07 22:45:59 +0100 | wroathe | (~wroathe@user/wroathe) |
2023-01-07 22:50:55 +0100 | mizlan | (~mizlan@c-67-169-7-31.hsd1.ca.comcast.net) |
2023-01-07 22:53:35 +0100 | gmg | (~user@user/gehmehgeh) (Ping timeout: 255 seconds) |
2023-01-07 22:53:54 +0100 | mechap | (~mechap@user/mechap) (Ping timeout: 268 seconds) |
2023-01-07 22:55:02 +0100 | mizlan | (~mizlan@c-67-169-7-31.hsd1.ca.comcast.net) (Ping timeout: 246 seconds) |
2023-01-07 22:55:23 +0100 | mechap | (~mechap@user/mechap) |
2023-01-07 23:01:23 +0100 | gmg | (~user@user/gehmehgeh) |
2023-01-07 23:02:02 +0100 | talismanick | (~talismani@2601:644:9380:5c00::43de) (Ping timeout: 255 seconds) |
2023-01-07 23:02:18 +0100 | mizlan | (~mizlan@c-67-169-7-31.hsd1.ca.comcast.net) |
2023-01-07 23:06:32 +0100 | eggplantade | (~Eggplanta@2600:1700:38c5:d800:cc20:d690:f22b:cb00) (Remote host closed the connection) |
2023-01-07 23:06:50 +0100 | mizlan | (~mizlan@c-67-169-7-31.hsd1.ca.comcast.net) (Ping timeout: 268 seconds) |
2023-01-07 23:08:18 +0100 | eggplantade | (~Eggplanta@2600:1700:38c5:d800:cc20:d690:f22b:cb00) |
2023-01-07 23:08:21 +0100 | phma | (phma@2001:5b0:210d:7648:cd95:5ae2:112e:6872) (Read error: Connection reset by peer) |
2023-01-07 23:09:02 +0100 | phma | (~phma@host-67-44-208-226.hnremote.net) |
2023-01-07 23:12:02 +0100 | gmg | (~user@user/gehmehgeh) (Ping timeout: 255 seconds) |
2023-01-07 23:14:20 +0100 | justsomeguy | (~justsomeg@user/justsomeguy) |
2023-01-07 23:14:43 +0100 | boxscape_ | (~boxscape_@81.191.27.107) (Quit: Connection closed) |
2023-01-07 23:14:50 +0100 | L29Ah | (~L29Ah@wikipedia/L29Ah) () |
2023-01-07 23:15:08 +0100 | L29Ah | (~L29Ah@wikipedia/L29Ah) |
2023-01-07 23:15:24 +0100 | <justsomeguy> | Hi Haskell. I'm thinking of switching to GHCi as my interactive command-line shell, in order to learn by immersion. If you've tried this before -- how did it go? |
2023-01-07 23:16:18 +0100 | <geekosaur> | you probably want to look into |
2023-01-07 23:16:23 +0100 | <geekosaur> | @hackage turtle |
2023-01-07 23:16:24 +0100 | <lambdabot> | https://hackage.haskell.org/package/turtle |
2023-01-07 23:19:49 +0100 | <justsomeguy> | Oh, this is fun. :) |
2023-01-07 23:21:23 +0100 | justsomeguy | sips coffee while stack compiles 21 new packages... |
2023-01-07 23:23:14 +0100 | <sm> | beats punching in hex codes, eh ?? |
2023-01-07 23:24:20 +0100 | mizlan | (~mizlan@c-67-169-7-31.hsd1.ca.comcast.net) |
2023-01-07 23:24:36 +0100 | <DigitalKiwi> | there's also shelly, shh, and HSH |
2023-01-07 23:24:58 +0100 | <dolio> | Yeah, I wouldn't use ghci as a shell. It's really not built for that. |
2023-01-07 23:25:21 +0100 | <DigitalKiwi> | https://gist.github.com/Kiwi/ffc08bffb15798dc4b1ec2a1c47c6191#file-program-cabal-hs |
2023-01-07 23:26:33 +0100 | <justsomeguy> | It's really just a way to force myself to interact with Haskell for learning purposes. I like learning this way. I learned the linux cli by switching to text mode and getting rid of my other OS. I also had python as my interactive prompt for a few months. |
2023-01-07 23:27:14 +0100 | <dolio> | It's probably worse than python. But the latter also sounds terrible to me. |
2023-01-07 23:27:52 +0100 | <dolio> | I use ghci any time I have, like, random calculations to do, though. |
2023-01-07 23:28:12 +0100 | <[exa]> | justsomeguy: force a hobby project into haskell, that helps. ghci isn't much of a productivity tool AFAIK, more like introspection/quickhacking/debugging |
2023-01-07 23:29:53 +0100 | <DigitalKiwi> | shellcheck is the closest i get to using haskell for my shell |
2023-01-07 23:30:23 +0100 | <justsomeguy> | You can even use it in your shell ^_^ https://github.com/HenrikBengtsson/shellcheck-repl |
2023-01-07 23:30:24 +0100 | igghibu | (~igghibu@178.249.211.75) (Quit: igghibu) |
2023-01-07 23:30:25 +0100 | <Jadesheit[m]> | dolio: yup same |
2023-01-07 23:31:30 +0100 | <DigitalKiwi> | somehow i always end up stuck on the second step of the atrocious/marvelous bash one liners -> bash script -> haskell rewrite pipeline |
2023-01-07 23:32:01 +0100 | <DigitalKiwi> | dolio: yup i have ghci on my phone for that lol |
2023-01-07 23:32:33 +0100 | <DigitalKiwi> | https://github.com/t184256/nix-on-droid |
2023-01-07 23:33:04 +0100 | <justsomeguy> | To be honest I have way too many 30+ line bash scripts. I try to rewrite them a function at a time, but I'm just not that good at proper programming yet. |
2023-01-07 23:34:09 +0100 | <dolio> | Anyhow, you can do it. I just don't think you're going to enjoy writing `putStrLn =<< readCreateProcess (shell "ls") ""` instead of `ls`. And I'm not sure it'll actually teach much useful, either. |
2023-01-07 23:35:20 +0100 | wroathe | (~wroathe@user/wroathe) (Ping timeout: 272 seconds) |
2023-01-07 23:35:51 +0100 | <DigitalKiwi> | https://github.com/luke-clifton/shh |
2023-01-07 23:36:44 +0100 | <DigitalKiwi> | lol HSH https://wiki.github.com/jgoerzen/hsh |
2023-01-07 23:39:31 +0100 | <DigitalKiwi> | https://github.com/jekor/redo this is a fun project/video series |
2023-01-07 23:39:32 +0100 | Guest6780 | (~finn@roc37-h01-176-170-197-243.dsl.sta.abo.bbox.fr) |
2023-01-07 23:39:51 +0100 | <DigitalKiwi> | https://www.youtube.com/watch?v=zZ_nI9E9g0I&list=PLxj9UAX4Em-Ij4TKwKvo-SLp-Zbv-hB4B |
2023-01-07 23:42:17 +0100 | tromp | (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
2023-01-07 23:43:39 +0100 | jpds | (~jpds@gateway/tor-sasl/jpds) (Remote host closed the connection) |
2023-01-07 23:44:17 +0100 | jpds | (~jpds@gateway/tor-sasl/jpds) |
2023-01-07 23:45:12 +0100 | haritz | (~hrtz@user/haritz) (Ping timeout: 252 seconds) |
2023-01-07 23:45:14 +0100 | [itchyjunk] | (~itchyjunk@user/itchyjunk/x-7353470) (Remote host closed the connection) |
2023-01-07 23:45:39 +0100 | [itchyjunk] | (~itchyjunk@user/itchyjunk/x-7353470) |
2023-01-07 23:46:53 +0100 | tromp | (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
2023-01-07 23:47:49 +0100 | <DigitalKiwi> | github be like never send that request again me be like i'm going to get everyone i know to send it |
2023-01-07 23:48:56 +0100 | cheater_ | (~Username@user/cheater) |
2023-01-07 23:50:10 +0100 | __monty__ | (~toonn@user/toonn) (Quit: leaving) |
2023-01-07 23:51:51 +0100 | cheater | (~Username@user/cheater) (Ping timeout: 268 seconds) |
2023-01-07 23:52:00 +0100 | cheater_ | cheater |
2023-01-07 23:58:20 +0100 | tromp | (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |