Logs on 2025-10-14 (liberachat/#haskell)
| 00:02:18 | → | merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl) |
| 00:07:55 | → | bgg joins (~bgg@2a01:e0a:819:1510:438b:91ce:16bb:429f) |
| 00:09:00 | × | merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 244 seconds) |
| 00:17:27 | → | L29Ah joins (~L29Ah@wikipedia/L29Ah) |
| 00:18:13 | → | inline joins (~inlinE@ip-178-202-059-161.um47.pools.vodafone-ip.de) |
| 00:20:20 | → | merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl) |
| 00:25:13 | × | merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 256 seconds) |
| 00:26:02 | × | acidjnk quits (~acidjnk@p200300d6e7171943fcd8740620ad93e7.dip0.t-ipconnect.de) (Ping timeout: 248 seconds) |
| 00:29:59 | × | trickard_ quits (~trickard@cpe-54-98-47-163.wireline.com.au) (Read error: Connection reset by peer) |
| 00:31:12 | → | merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl) |
| 00:32:31 | → | trickard_ joins (~trickard@cpe-54-98-47-163.wireline.com.au) |
| 00:33:05 | × | califax quits (~califax@user/califx) (Remote host closed the connection) |
| 00:35:18 | → | califax joins (~califax@user/califx) |
| 00:35:59 | × | merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 256 seconds) |
| 00:36:43 | × | ttybitnik quits (~ttybitnik@user/wolper) (Quit: Fading out...) |
| 00:45:40 | × | trickard_ quits (~trickard@cpe-54-98-47-163.wireline.com.au) (Ping timeout: 246 seconds) |
| 00:46:04 | → | trickard_ joins (~trickard@cpe-54-98-47-163.wireline.com.au) |
| 00:47:00 | → | merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl) |
| 00:48:28 | × | otto_s quits (~user@p4ff2701e.dip0.t-ipconnect.de) (Ping timeout: 256 seconds) |
| 00:50:19 | → | otto_s joins (~user@p4ff27382.dip0.t-ipconnect.de) |
| 00:50:55 | × | xff0x quits (~xff0x@2405:6580:b080:900:f3f6:c4a2:4d90:7f3d) (Ping timeout: 246 seconds) |
| 00:51:53 | × | merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 244 seconds) |
| 00:59:28 | → | Square joins (~Square4@user/square) |
| 01:00:22 | × | vanishingideal quits (~vanishing@user/vanishingideal) (Ping timeout: 246 seconds) |
| 01:02:07 | × | Square3 quits (~Square@user/square) (Ping timeout: 246 seconds) |
| 01:02:46 | → | merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl) |
| 01:05:42 | → | Googulator67 joins (~Googulato@2a01-036d-0106-03fa-dc7a-fb6e-71bb-aaf0.pool6.digikabel.hu) |
| 01:06:11 | × | Googulator51 quits (~Googulato@2a01-036d-0106-03fa-dc7a-fb6e-71bb-aaf0.pool6.digikabel.hu) (Quit: Client closed) |
| 01:07:01 | × | vetkat quits (~vetkat@user/vetkat) (Ping timeout: 246 seconds) |
| 01:07:37 | × | merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 260 seconds) |
| 01:08:08 | → | vetkat joins (~vetkat@user/vetkat) |
| 01:11:42 | × | machinedgod quits (~machinedg@d75-159-126-101.abhsia.telus.net) (Ping timeout: 256 seconds) |
| 01:18:11 | → | merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl) |
| 01:23:01 | × | merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 256 seconds) |
| 01:28:08 | → | Dhark8 joins (~Shark8@c-174-56-102-109.hsd1.nm.comcast.net) |
| 01:29:30 | → | finsternis joins (~X@23.226.237.192) |
| 01:31:06 | × | Shark8 quits (~Shark8@c-174-56-102-109.hsd1.nm.comcast.net) (Ping timeout: 248 seconds) |
| 01:33:59 | → | merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl) |
| 01:35:41 | × | Googulator67 quits (~Googulato@2a01-036d-0106-03fa-dc7a-fb6e-71bb-aaf0.pool6.digikabel.hu) (Quit: Client closed) |
| 01:35:42 | → | Googulator39 joins (~Googulato@2a01-036d-0106-03fa-dc7a-fb6e-71bb-aaf0.pool6.digikabel.hu) |
| 01:38:53 | × | merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 256 seconds) |
| 01:39:56 | → | Axman6 joins (~Axman6@user/axman6) |
| 01:49:45 | → | merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl) |
| 01:51:17 | → | xff0x joins (~xff0x@fsb6a9491c.tkyc517.ap.nuro.jp) |
| 01:56:27 | × | merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 256 seconds) |
| 01:57:47 | → | peterbecich joins (~Thunderbi@syn-172-222-148-214.res.spectrum.com) |
| 01:57:59 | → | jmcantrell joins (~weechat@user/jmcantrell) |
| 02:00:56 | trickard_ | is now known as trickard |
| 02:07:45 | → | merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl) |
| 02:12:53 | × | merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 256 seconds) |
| 02:19:38 | → | haltsolver joins (~cmo@2604:3d09:207f:8000::d1dc) |
| 02:20:51 | × | Googulator39 quits (~Googulato@2a01-036d-0106-03fa-dc7a-fb6e-71bb-aaf0.pool6.digikabel.hu) (Quit: Client closed) |
| 02:20:51 | → | Googulator47 joins (~Googulato@2a01-036d-0106-03fa-dc7a-fb6e-71bb-aaf0.pool6.digikabel.hu) |
| 02:21:14 | × | Adeon quits (sid418992@id-418992.lymington.irccloud.com) (Server closed connection) |
| 02:21:26 | → | Adeon joins (sid418992@id-418992.lymington.irccloud.com) |
| 02:23:32 | → | merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl) |
| 02:24:14 | × | haltsolver quits (~cmo@2604:3d09:207f:8000::d1dc) (Ping timeout: 256 seconds) |
| 02:28:46 | × | merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 256 seconds) |
| 02:32:07 | × | ljdarj quits (~Thunderbi@user/ljdarj) (Ping timeout: 244 seconds) |
| 02:36:07 | × | td_ quits (~td@i53870910.versanet.de) (Ping timeout: 256 seconds) |
| 02:37:54 | → | td_ joins (~td@i53870911.versanet.de) |
| 02:39:17 | → | merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl) |
| 02:44:37 | × | merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 256 seconds) |
| 02:47:26 | → | califax_ joins (~califax@user/califx) |
| 02:48:10 | × | califax quits (~califax@user/califx) (Ping timeout: 272 seconds) |
| 02:48:39 | califax_ | is now known as califax |
| 02:51:59 | × | Unicorn_Princess quits (~Unicorn_P@user/Unicorn-Princess/x-3540542) (Remote host closed the connection) |
| 02:54:28 | × | peterbecich quits (~Thunderbi@syn-172-222-148-214.res.spectrum.com) (Ping timeout: 246 seconds) |
| 02:55:06 | → | merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl) |
| 02:56:31 | × | jmcantrell quits (~weechat@user/jmcantrell) (Ping timeout: 256 seconds) |
| 02:57:39 | → | humasect joins (~humasect@dyn-192-249-132-90.nexicom.net) |
| 03:00:12 | × | merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 260 seconds) |
| 03:10:53 | → | merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl) |
| 03:14:12 | × | Square quits (~Square4@user/square) (Ping timeout: 260 seconds) |
| 03:17:34 | × | merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 246 seconds) |
| 03:18:16 | → | annamalai joins (~annamalai@2409:4042:4e3c:ee1e::9e4a:2910) |
| 03:19:19 | × | inline quits (~inlinE@ip-178-202-059-161.um47.pools.vodafone-ip.de) (Ping timeout: 246 seconds) |
| 03:28:56 | → | merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl) |
| 03:30:21 | → | jmcantrell joins (~weechat@user/jmcantrell) |
| 03:33:55 | × | merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 256 seconds) |
| 03:44:43 | → | merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl) |
| 03:49:47 | × | merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 260 seconds) |
| 04:00:12 | → | aforemny joins (~aforemny@2001:9e8:6cd9:6800:96c8:2246:a5e7:93e3) |
| 04:00:14 | → | merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl) |
| 04:01:41 | × | aforemny_ quits (~aforemny@i59F4C4D3.versanet.de) (Ping timeout: 256 seconds) |
| 04:05:05 | × | merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 256 seconds) |
| 04:08:49 | → | merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl) |
| 04:13:34 | × | merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 246 seconds) |
| 04:19:36 | <jackdk> | Some libraries use MonadFail as an error-reporting mechanism, but I think this is a historical error. These days I'd only use MonadFail to handle pattern-match failures in do expressions |
| 04:20:37 | → | Googulator1 joins (~Googulato@2a01-036d-0106-03fa-dc7a-fb6e-71bb-aaf0.pool6.digikabel.hu) |
| 04:20:51 | × | Googulator47 quits (~Googulato@2a01-036d-0106-03fa-dc7a-fb6e-71bb-aaf0.pool6.digikabel.hu) (Quit: Client closed) |
| 04:24:32 | → | merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl) |
| 04:25:21 | × | craunts79533538 quits (~craunts@136.158.7.194) (Quit: The Lounge - https://thelounge.chat) |
| 04:28:01 | → | craunts79533538 joins (~craunts@136.158.7.194) |
| 04:29:27 | × | merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 256 seconds) |
| 04:30:31 | → | peterbecich joins (~Thunderbi@syn-172-222-148-214.res.spectrum.com) |
| 04:33:34 | → | werneta joins (~werneta@syn-071-083-160-242.res.spectrum.com) |
| 04:40:20 | → | merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl) |
| 04:42:20 | → | rvalue- joins (~rvalue@about/hackers/rvalue) |
| 04:42:21 | × | rvalue- quits (~rvalue@about/hackers/rvalue) (Excess Flood) |
| 04:42:53 | → | rvalue- joins (~rvalue@about/hackers/rvalue) |
| 04:42:54 | × | rvalue- quits (~rvalue@about/hackers/rvalue) (Excess Flood) |
| 04:43:13 | × | rvalue quits (~rvalue@about/hackers/rvalue) (Ping timeout: 264 seconds) |
| 04:45:20 | × | merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 256 seconds) |
| 04:46:11 | → | rvalue joins (~rvalue@about/hackers/rvalue) |
| 04:46:12 | × | rvalue quits (~rvalue@about/hackers/rvalue) (Excess Flood) |
| 04:49:31 | → | rvalue joins (~rvalue@about/hackers/rvalue) |
| 04:49:36 | × | rvalue quits (~rvalue@about/hackers/rvalue) (Excess Flood) |
| 04:50:02 | → | rvalue joins (~rvalue@about/hackers/rvalue) |
| 04:50:03 | × | rvalue quits (~rvalue@about/hackers/rvalue) (Excess Flood) |
| 04:50:37 | × | Googulator1 quits (~Googulato@2a01-036d-0106-03fa-dc7a-fb6e-71bb-aaf0.pool6.digikabel.hu) (Quit: Client closed) |
| 04:50:40 | → | Googulator97 joins (~Googulato@2a01-036d-0106-03fa-dc7a-fb6e-71bb-aaf0.pool6.digikabel.hu) |
| 04:56:07 | → | merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl) |
| 04:56:22 | × | annamalai quits (~annamalai@2409:4042:4e3c:ee1e::9e4a:2910) (Remote host closed the connection) |
| 04:57:02 | → | annamalai joins (~annamalai@157.32.210.114) |
| 04:57:30 | → | michalz joins (~michalz@185.246.207.221) |
| 05:02:34 | × | merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 246 seconds) |
| 05:02:54 | × | Adeon quits (sid418992@id-418992.lymington.irccloud.com) (Server closed connection) |
| 05:03:06 | → | Adeon joins (sid418992@id-418992.lymington.irccloud.com) |
| 05:06:08 | × | craunts79533538 quits (~craunts@136.158.7.194) (Quit: The Lounge - https://thelounge.chat) |
| 05:09:44 | → | merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl) |
| 05:13:56 | × | emmanuelux quits (~emmanuelu@user/emmanuelux) (Read error: Connection reset by peer) |
| 05:14:34 | × | merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 248 seconds) |
| 05:16:54 | × | synchromesh quits (~john@2406:5a00:2412:2c00:3507:235a:4a6c:ccc6) (Read error: Connection reset by peer) |
| 05:17:07 | → | takuan joins (~takuan@d8D86B9E9.access.telenet.be) |
| 05:18:03 | → | synchromesh joins (~john@2406:5a00:2412:2c00:6c29:d20b:9891:7dea) |
| 05:25:17 | → | merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl) |
| 05:25:24 | × | Googulator97 quits (~Googulato@2a01-036d-0106-03fa-dc7a-fb6e-71bb-aaf0.pool6.digikabel.hu) (Quit: Client closed) |
| 05:25:36 | → | Googulator97 joins (~Googulato@2a01-036d-0106-03fa-dc7a-fb6e-71bb-aaf0.pool6.digikabel.hu) |
| 05:30:05 | × | merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 256 seconds) |
| 05:31:56 | × | poscat quits (~poscat@user/poscat) (Remote host closed the connection) |
| 05:34:46 | → | poscat joins (~poscat@user/poscat) |
| 05:37:21 | × | jmcantrell quits (~weechat@user/jmcantrell) (Quit: WeeChat 4.7.1) |
| 05:41:04 | → | merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl) |
| 05:45:58 | × | merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 246 seconds) |
| 05:50:13 | <dminuoso> | jackdk: Regarding botan bindings, I think any approach focusing on native bindings to a cryptographic library is more healthy both on on a security perspective as well as future proofing. |
| 05:50:20 | × | Sgeo quits (~Sgeo@user/sgeo) (Read error: Connection reset by peer) |
| 05:51:02 | <dminuoso> | Especially since the crypton(ite) situation demonstrates, that even *if* we have some reliable cryptographic implementation it is dependent on probably just a single person. Having an ecosystem dependent on a bus-factor of 1 is just not healthy for the rest of hackage. |
| 05:52:05 | <dminuoso> | Not entirely sure if your comment was hinting at paying the botan person to work on crypton instead for a while. |
| 05:54:24 | <jackdk> | dminuoso: I agree with what you have written. I think binding a trusted native implementation is safer in the long run, and I am hopeful we can move the ecosystem onto something like botan one day |
| 05:55:12 | <jackdk> | And to be clear, I do not think paying the botan person to shift to crypton would be a good idea |
| 05:57:06 | → | merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl) |
| 06:00:28 | × | peterbecich quits (~Thunderbi@syn-172-222-148-214.res.spectrum.com) (Ping timeout: 260 seconds) |
| 06:02:23 | × | merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 256 seconds) |
| 06:10:20 | × | itaipu quits (~itaipu@168.121.97.28) (Ping timeout: 256 seconds) |
| 06:10:44 | → | merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl) |
| 06:14:55 | → | jmcantrell joins (~weechat@user/jmcantrell) |
| 06:15:37 | × | merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 264 seconds) |
| 06:26:31 | → | merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl) |
| 06:31:22 | × | merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 248 seconds) |
| 06:42:19 | → | merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl) |
| 06:49:26 | × | merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 256 seconds) |
| 06:53:43 | × | jmcantrell quits (~weechat@user/jmcantrell) (Quit: WeeChat 4.7.1) |
| 07:00:01 | × | caconym7478798 quits (~caconym@user/caconym) (Quit: bye) |
| 07:00:21 | → | merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl) |
| 07:00:41 | → | caconym7478798 joins (~caconym@user/caconym) |
| 07:04:37 | × | werneta quits (~werneta@syn-071-083-160-242.res.spectrum.com) (Ping timeout: 260 seconds) |
| 07:05:12 | × | merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 260 seconds) |
| 07:11:44 | → | merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl) |
| 07:14:36 | → | itaipu joins (~itaipu@168.121.97.28) |
| 07:16:37 | × | merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 246 seconds) |
| 07:17:59 | → | craunts79533538 joins (~craunts@136.158.7.194) |
| 07:19:43 | → | CiaoSen joins (~Jura@2a02:8071:64e1:da0:5a47:caff:fe78:33db) |
| 07:26:17 | → | vanishingideal joins (~vanishing@user/vanishingideal) |
| 07:27:57 | × | ByronJohnson quits (~bairyn@MAIL.DIGITALKINGDOM.ORG) (Ping timeout: 260 seconds) |
| 07:29:17 | → | ByronJohnson joins (~bairyn@MAIL.DIGITALKINGDOM.ORG) |
| 07:38:44 | × | Adeon quits (sid418992@id-418992.lymington.irccloud.com) (Server closed connection) |
| 07:38:56 | → | Adeon joins (sid418992@id-418992.lymington.irccloud.com) |
| 07:40:26 | × | ft quits (~ft@p4fc2a207.dip0.t-ipconnect.de) (Quit: leaving) |
| 07:52:27 | × | gustrb quits (~gustrb@191.243.134.87) (Ping timeout: 260 seconds) |
| 07:55:20 | × | wz1000 quits (~zubin@static.11.113.47.78.clients.your-server.de) (Ping timeout: 245 seconds) |
| 07:56:28 | × | sshine quits (~simon@dao.mechanicus.xyz) (Ping timeout: 265 seconds) |
| 07:56:34 | × | tomsmeding quits (~tomsmedin@user/tomsmeding) (Ping timeout: 256 seconds) |
| 07:58:54 | Googulator97 | is now known as Googulator |
| 07:59:20 | → | merijn joins (~merijn@77.242.116.146) |
| 07:59:39 | × | humasect quits (~humasect@dyn-192-249-132-90.nexicom.net) (Quit: Leaving...) |
| 08:02:44 | → | tomsmeding joins (~tomsmedin@user/tomsmeding) |
| 08:03:05 | → | sshine joins (~simon@dao.mechanicus.xyz) |
| 08:05:36 | → | gustrb joins (~gustrb@191.243.134.87) |
| 08:08:30 | → | wz1000 joins (~zubin@static.11.113.47.78.clients.your-server.de) |
| 08:10:34 | × | gustrb quits (~gustrb@191.243.134.87) (Ping timeout: 248 seconds) |
| 08:14:37 | × | Googulator quits (~Googulato@2a01-036d-0106-03fa-dc7a-fb6e-71bb-aaf0.pool6.digikabel.hu) (Quit: Client closed) |
| 08:14:51 | → | Googulator joins (~Googulato@2a01-036d-0106-03fa-dc7a-fb6e-71bb-aaf0.pool6.digikabel.hu) |
| 08:21:32 | → | adig joins (~adi@86.123.72.40) |
| 08:21:38 | → | comerijn joins (~merijn@77.242.116.146) |
| 08:21:42 | ← | adig parts (~adi@86.123.72.40) () |
| 08:22:40 | → | fp joins (~Thunderbi@2001:708:20:1406::10c5) |
| 08:24:38 | × | merijn quits (~merijn@77.242.116.146) (Ping timeout: 256 seconds) |
| 08:27:51 | → | gustrb joins (~gustrb@191.243.134.87) |
| 08:33:01 | × | gustrb quits (~gustrb@191.243.134.87) (Ping timeout: 264 seconds) |
| 08:33:49 | → | sord937 joins (~sord937@gateway/tor-sasl/sord937) |
| 08:35:38 | × | Googulator quits (~Googulato@2a01-036d-0106-03fa-dc7a-fb6e-71bb-aaf0.pool6.digikabel.hu) (Quit: Client closed) |
| 08:35:42 | → | Googulator66 joins (~Googulato@2a01-036d-0106-03fa-dc7a-fb6e-71bb-aaf0.pool6.digikabel.hu) |
| 08:37:47 | → | gustrb joins (~gustrb@191.243.134.87) |
| 08:39:01 | × | comerijn quits (~merijn@77.242.116.146) (Ping timeout: 264 seconds) |
| 08:40:42 | → | chele joins (~chele@user/chele) |
| 08:42:52 | Googulator66 | is now known as Googulator |
| 08:44:30 | → | merijn joins (~merijn@77.242.116.146) |
| 08:44:37 | → | acidjnk joins (~acidjnk@p200300d6e71719931c47ad226c4c8e20.dip0.t-ipconnect.de) |
| 08:45:01 | × | gustrb quits (~gustrb@191.243.134.87) (Ping timeout: 256 seconds) |
| 08:48:32 | × | tzh quits (~tzh@c-76-115-131-146.hsd1.or.comcast.net) (Quit: zzz) |
| 08:49:22 | → | gustrb joins (~gustrb@191.243.134.87) |
| 08:50:45 | × | merijn quits (~merijn@77.242.116.146) (Ping timeout: 245 seconds) |
| 08:57:14 | → | adig joins (~adi@86.123.72.40) |
| 08:57:22 | ← | adig parts (~adi@86.123.72.40) () |
| 09:02:51 | → | kuribas joins (~user@2a02-1810-2825-6000-b5ac-98ee-b19a-ab1f.ip6.access.telenet.be) |
| 09:04:18 | → | merijn joins (~merijn@77.242.116.146) |
| 09:05:43 | × | Googulator quits (~Googulato@2a01-036d-0106-03fa-dc7a-fb6e-71bb-aaf0.pool6.digikabel.hu) (Quit: Client closed) |
| 09:05:47 | → | Googulator56 joins (~Googulato@2a01-036d-0106-03fa-dc7a-fb6e-71bb-aaf0.pool6.digikabel.hu) |
| 09:05:55 | Googulator56 | is now known as Googulator |
| 09:07:58 | × | bgamari quits (~bgamari@64.223.225.237) (Ping timeout: 256 seconds) |
| 09:11:25 | × | merijn quits (~merijn@77.242.116.146) (Ping timeout: 264 seconds) |
| 09:18:39 | → | OWS joins (~Shark8@c-174-56-102-109.hsd1.nm.comcast.net) |
| 09:19:51 | → | merijn joins (~merijn@77.242.116.146) |
| 09:20:25 | → | bgamari joins (~bgamari@64.223.200.137) |
| 09:21:51 | × | Dhark8 quits (~Shark8@c-174-56-102-109.hsd1.nm.comcast.net) (Ping timeout: 256 seconds) |
| 09:24:58 | → | mreh joins (~matthew@host86-146-25-125.range86-146.btcentralplus.com) |
| 09:27:14 | <mreh> | Is there a Semigroup instance for Map that is based on `unionWith (<>)` before I implement my own? I can't find one already. |
| 09:28:05 | × | bgamari quits (~bgamari@64.223.200.137) (Ping timeout: 256 seconds) |
| 09:28:20 | <mreh> | instance (Semigroup a, Ord k) => Semigroup (MergeMap k a) where MergeMap m <> MergeMap n = MergeMap $ unionWith (<>) m n |
| 09:28:29 | <mreh> | seems to fit the bill for what I'm doing |
| 09:28:43 | <merijn> | mreh: There is one, but it's inconvenient to use |
| 09:28:56 | <mreh> | merijn: oh? |
| 09:29:19 | <merijn> | I once tried to start a crusade to get the (imo more sensible) monoidal Map in containers, but no success |
| 09:30:01 | <mreh> | merijn: intuitively, it feels like the right default |
| 09:30:05 | <merijn> | mreh: There's like 3 or 4 libraries on Hackage that have monoidal map |
| 09:30:08 | <tomsmeding> | there are various packages on hackage that implement a monoidal map |
| 09:30:10 | <tomsmeding> | ^ |
| 09:30:22 | <merijn> | In practice I tend to just do `unionWith (<>)` since it's more convenient |
| 09:30:51 | <merijn> | But every single time I want to `foldMap` a `Map` I am once again confronted with the default monoid of Map being shite >.< |
| 09:33:20 | × | Googulator quits (~Googulato@2a01-036d-0106-03fa-dc7a-fb6e-71bb-aaf0.pool6.digikabel.hu) (Quit: Client closed) |
| 09:34:11 | → | Googulator joins (~Googulato@2a01-036d-0106-03fa-dc7a-fb6e-71bb-aaf0.pool6.digikabel.hu) |
| 09:35:02 | → | bgamari joins (~bgamari@64.223.200.74) |
| 09:37:40 | <mreh> | oh yeah, it's too early, my eyes glazed over when reading Data.MonoidMap |
| 09:38:12 | <mreh> | v interesting how get is total when a is a Moniod |
| 09:46:48 | × | califax quits (~califax@user/califx) (Ping timeout: 272 seconds) |
| 09:51:00 | × | notzmv quits (~umar@user/notzmv) (Read error: Connection reset by peer) |
| 09:52:53 | <dminuoso> | merijn: Honestly I think much of Haskell typeclasses would be far more usable if we had an ergonomic way of just picking/swapping out instances other than newtype wrappers. |
| 09:53:24 | <dminuoso> | And yes, we'd give up guarantees on coherence that apply to some very obscure usecases... |
| 09:54:15 | → | mochie joins (~mochie@user/mochie) |
| 09:54:20 | <merijn> | dminuoso: Hard disagree |
| 09:54:44 | <merijn> | I've been doing Scala for the past 2 years and the fact that implicit's let you do that is a giant nightmare |
| 09:56:00 | <dminuoso> | Having all these newtypes with clear bias about what the author thought should be "the authoritative behavior for typeclass XYZ" is just annoying. |
| 09:56:09 | → | dhil joins (~dhil@5.151.29.137) |
| 09:56:26 | <dminuoso> | Some libraries are more honest like `time` where you just dont get Eq on some newtypes because there's two equally good possibilities. |
| 09:58:06 | → | califax joins (~califax@user/califx) |
| 09:58:24 | <dminuoso> | merijn: I think it may be a tooling problem in scala if its unclear what implicit is in scope right now. |
| 10:00:29 | <merijn> | My main tooling problem is sbt. I'd kill for cabal's speed xD |
| 10:06:04 | <haskellbridge> | <Morj> At least with newtypes unlike in rust you don't have problems that "fn(&MyType) -> &MyNewtype" is impossible to write |
| 10:06:57 | ← | mochie parts (~mochie@user/mochie) () |
| 10:08:27 | <haskellbridge> | <Morj> I find that where I use newtypes for their instances, it's usually not a bad ergonomic to write. Like "getProduct . foldMap Product" |
| 10:09:16 | <haskellbridge> | <Morj> Would be cool if there was a combinator like "foldMap coerce" so that I only had to write the newtype name once |
| 10:09:18 | <mreh> | shouldn't you use coerce and type applications in that case? |
| 10:09:18 | → | __monty__ joins (~toonn@user/toonn) |
| 10:09:50 | <haskellbridge> | <Morj> I like being explicit |
| 10:09:55 | × | CiaoSen quits (~Jura@2a02:8071:64e1:da0:5a47:caff:fe78:33db) (Ping timeout: 245 seconds) |
| 10:09:58 | <haskellbridge> | <Morj> Also is coerce in microhs? ;-) |
| 10:10:26 | <mreh> | ¯\_(ツ)_/¯ |
| 10:10:52 | <mreh> | are type applications? |
| 10:11:01 | <haskellbridge> | <Morj> They at least are there |
| 10:12:21 | × | divlamir quits (~divlamir@user/divlamir) (Read error: Connection reset by peer) |
| 10:12:45 | → | divlamir joins (~divlamir@user/divlamir) |
| 10:14:34 | × | Adeon quits (sid418992@id-418992.lymington.irccloud.com) (Server closed connection) |
| 10:14:46 | → | Adeon joins (sid418992@id-418992.lymington.irccloud.com) |
| 10:15:07 | × | xff0x quits (~xff0x@fsb6a9491c.tkyc517.ap.nuro.jp) (Ping timeout: 256 seconds) |
| 10:15:34 | <merijn> | coerce is good, but type applications is bad imo |
| 10:16:02 | <merijn> | Ugly syntax and (worse) far too brittle in my opinion |
| 10:20:08 | <merijn> | You're relying on the order of type variables as part of the public interface of a library (which basically no library author considers for PVP decisions) and unless the library author explicitly `forall`'s the type variables on every function that's dependent on the whims of GHC |
| 10:20:20 | <tomsmeding> | type applications would be more robust if they're allowed only on functions with an explicit type variable ordering |
| 10:20:29 | <tomsmeding> | but then nobody would have used it because of the chicken-egg problem |
| 10:20:44 | <merijn> | Which is far from hypothetical, since we've already had at least one GHC release where a type system rejiggle changed the order of inferred variables, leading to breakage |
| 10:25:52 | × | merijn quits (~merijn@77.242.116.146) (Ping timeout: 260 seconds) |
| 10:33:31 | → | halloy7365 joins (~halloy736@2404:4400:5446:4e00:c9d:2341:235f:e891) |
| 10:38:24 | → | merijn joins (~merijn@77.242.116.146) |
| 10:44:10 | × | merijn quits (~merijn@77.242.116.146) (Ping timeout: 246 seconds) |
| 10:47:44 | × | yegor quits (~yegor@user/yegor) (Quit: ZNC 1.8.2+deb3.1+deb12u1 - https://znc.in) |
| 10:48:01 | → | yegor joins (yegor@user/yegor) |
| 10:50:11 | → | merijn joins (~merijn@77.242.116.146) |
| 10:52:48 | × | halloy7365 quits (~halloy736@2404:4400:5446:4e00:c9d:2341:235f:e891) (Quit: halloy7365) |
| 10:53:13 | → | CiaoSen joins (~Jura@2a02:8071:64e1:da0:5a47:caff:fe78:33db) |
| 10:54:55 | × | chele quits (~chele@user/chele) (Ping timeout: 245 seconds) |
| 11:00:05 | × | caconym7478798 quits (~caconym@user/caconym) (Quit: bye) |
| 11:01:29 | → | caconym7478798 joins (~caconym@user/caconym) |
| 11:08:24 | × | Zemy quits (~Zemy@syn-076-184-041-021.res.spectrum.com) (Read error: Connection reset by peer) |
| 11:08:29 | → | Zemy_ joins (~Zemy@2600:100c:b035:5997:18fe:25ff:fe03:e2c) |
| 11:09:00 | → | Zemy joins (~Zemy@syn-076-184-041-021.res.spectrum.com) |
| 11:10:25 | → | MelodyOwO joins (~MelodyOwO@user/MelodyOwO) |
| 11:12:57 | × | Zemy_ quits (~Zemy@2600:100c:b035:5997:18fe:25ff:fe03:e2c) (Ping timeout: 252 seconds) |
| 11:13:14 | <dminuoso> | Morj: Every time I stare at rust Im a bit confused how people willingly drift towards it. |
| 11:16:21 | <dminuoso> | Every time I dabbled with it, it felt more like most rust idioms exist to please the borrow checker, not because it leads to good semantics that you can reason about. |
| 11:16:37 | <dminuoso> | Even something mundane as writing a graph library is hell. |
| 11:17:01 | <lortabac> | Morj: there is 'ala', which is in lens (and other packages too) |
| 11:17:06 | <lortabac> | > ala Sum foldMap [1,2,3] |
| 11:17:07 | <lambdabot> | 6 |
| 11:17:30 | <dminuoso> | But maybe I haven't spent enough time with Rust yet, and you need a state of enlightenment before you can see it shine. |
| 11:18:28 | × | peutri_ quits (~peutri@bobo.desast.re) (Ping timeout: 246 seconds) |
| 11:19:04 | <merijn> | dminuoso: It sounds like you just don't have the problems Rust solves |
| 11:19:29 | <merijn> | dminuoso: Rust seems great IFF I couldn't afford a garbage collector/less explicit memory control |
| 11:19:33 | <merijn> | dminuoso: If you |
| 11:19:48 | <merijn> | If you're fine with GC and less memory control, you're better off just writing Haskell |
| 11:20:01 | <merijn> | And 90-95% of code just does not require anything like that |
| 11:20:14 | <dminuoso> | merijn: Maybe I'm just biased a bit *because* I have learned to work with C++ - in comparison Rust feels a lot more effort to avoid reference counting. |
| 11:20:15 | <merijn> | So I've never had a real use case to use Rust |
| 11:20:33 | <merijn> | dminuoso: I mean, you *can* just do reference counting in Rust afaik |
| 11:20:49 | <dminuoso> | Sure, but then you wouldn't need to borrow references. |
| 11:23:25 | → | xff0x joins (~xff0x@2405:6580:b080:900:c19d:50a:4f2f:38d7) |
| 11:27:12 | × | pavonia quits (~user@user/siracusa) (Read error: Connection reset by peer) |
| 11:28:00 | → | peutri joins (~peutri@bobo.desast.re) |
| 11:31:33 | → | chele joins (~chele@user/chele) |
| 11:35:52 | × | Lord_of_Life quits (~Lord@user/lord-of-life/x-2819915) (Ping timeout: 260 seconds) |
| 11:36:25 | → | Lord_of_Life joins (~Lord@user/lord-of-life/x-2819915) |
| 11:43:03 | <jackdk> | merijn: Now that we have the machinery to deprecate instances, we could restart the crusade to fix the most cursed monoid instance |
| 11:43:40 | <jackdk> | merijn: Also, we now have RequiredTypeArguments which makes it clearer when one is expected to pass an explicit type (as opposed to using haddocks or Proxy arguments) |
| 11:44:01 | × | chromoblob quits (~chromoblo@user/chromob1ot1c) (Ping timeout: 246 seconds) |
| 11:44:50 | → | chromoblob joins (~chromoblo@user/chromob1ot1c) |
| 11:46:07 | <haskellbridge> | <Morj> lortabac oh thanks, I remember there was something, but couldn't recall. This is the one I thought about |
| 11:46:41 | <lortabac> | jackdk: what is "the most cursed monoid instance"? |
| 11:47:02 | × | trickard quits (~trickard@cpe-54-98-47-163.wireline.com.au) (Read error: Connection reset by peer) |
| 11:47:16 | → | trickard_ joins (~trickard@cpe-54-98-47-163.wireline.com.au) |
| 11:47:31 | <jackdk> | lortabac: I consider `instance Ord k => Monoid (Map k)` to be a massive footgun, and think `instance (Ord k, Semigroup v) => Monoid (Map k v)` to be a better canonical instance. |
| 11:47:33 | <haskellbridge> | <Morj> dminuoso It makes more sense to use rust if you're coming from c++. I don't think it's a good choice instead of haskell in most cases. I write rust at work nowadays: the high-perf libraries are great, the application around it could be improved a lot with a smart runtime and a gc |
| 11:48:28 | <lortabac> | jackdk: thanks, I didn't even know that instance existed |
| 11:48:47 | → | weary-traveler joins (~user@user/user363627) |
| 11:48:56 | → | Square joins (~Square4@user/square) |
| 11:49:15 | × | chromoblob quits (~chromoblo@user/chromob1ot1c) (Ping timeout: 252 seconds) |
| 11:49:28 | <jackdk> | lortabac: I consider it a footgun because it often does almost what you want: merge two maps together. But when keys clash it keeps the value in the left map, which is often surprising |
| 11:50:25 | <lortabac> | indeed your proposal makes more sense |
| 11:52:37 | <__monty__> | It's a useful behavior IMO, some languages have an operator for that kind of merging. |
| 11:53:33 | → | chromoblob joins (~chromoblo@user/chromob1ot1c) |
| 11:54:39 | <jackdk> | __monty__: People who want it will still be able to get it via `Map k (First v)` (`First` from `Data.Semigroup`) |
| 11:55:39 | <lortabac> | it's useful but it doesn't make sense as a canonical instance |
| 11:56:21 | <lortabac> | you can still make an operator with that behavior |
| 11:59:35 | → | Zemy_ joins (~Zemy@2600:100c:b035:5997:3087:68ff:feb8:f43e) |
| 11:59:35 | × | Zemy quits (~Zemy@syn-076-184-041-021.res.spectrum.com) (Read error: Connection reset by peer) |
| 12:00:02 | → | Zemy joins (~Zemy@syn-076-184-041-021.res.spectrum.com) |
| 12:00:51 | × | Zemy_ quits (~Zemy@2600:100c:b035:5997:3087:68ff:feb8:f43e) (Read error: Connection reset by peer) |
| 12:08:24 | × | Googulator quits (~Googulato@2a01-036d-0106-03fa-dc7a-fb6e-71bb-aaf0.pool6.digikabel.hu) (Quit: Client closed) |
| 12:08:41 | → | Googulator joins (~Googulato@2a01-036d-0106-03fa-dc7a-fb6e-71bb-aaf0.pool6.digikabel.hu) |
| 12:10:04 | → | inline joins (~inlinE@ip-178-202-059-161.um47.pools.vodafone-ip.de) |
| 12:11:02 | → | Zemy_ joins (~Zemy@2600:100c:b035:5997:4c73:91ff:fe3e:e2e1) |
| 12:11:02 | × | Zemy quits (~Zemy@syn-076-184-041-021.res.spectrum.com) (Read error: Connection reset by peer) |
| 12:12:12 | → | Zemy joins (~Zemy@syn-076-184-041-021.res.spectrum.com) |
| 12:15:16 | × | Zemy_ quits (~Zemy@2600:100c:b035:5997:4c73:91ff:fe3e:e2e1) (Ping timeout: 256 seconds) |
| 12:16:29 | <mreh> | jackdk: what happened to Queensland FP? |
| 12:17:42 | <mreh> | lack of funding? |
| 12:19:26 | <jackdk> | mreh: Correct. Its funding was not renewed. The Brisbane Functional Programming Group, however, resurrected itself after the pandemic: https://bfpg.org |
| 12:20:17 | <mreh> | jackdk: cool, I enjoyed that talk you gave on reflex a while back |
| 12:22:19 | <jackdk> | mreh: Thanks, that's good of you to say |
| 12:24:04 | <mreh> | recognised the name |
| 12:25:09 | × | inline quits (~inlinE@ip-178-202-059-161.um47.pools.vodafone-ip.de) (Quit: Leaving) |
| 12:25:16 | mreh | wishes there was a Haskell meetup in London again |
| 12:25:23 | <merijn> | jackdk: You've got my signature :p |
| 12:25:27 | → | rvalue joins (~rvalue@about/hackers/rvalue) |
| 12:25:29 | × | rvalue quits (~rvalue@about/hackers/rvalue) (Excess Flood) |
| 12:25:37 | × | Googulator quits (~Googulato@2a01-036d-0106-03fa-dc7a-fb6e-71bb-aaf0.pool6.digikabel.hu) (Quit: Client closed) |
| 12:25:39 | → | Googulator81 joins (~Googulato@2a01-036d-0106-03fa-dc7a-fb6e-71bb-aaf0.pool6.digikabel.hu) |
| 12:25:55 | <merijn> | __monty__: It's useful, but not AS useful as the semigroup version |
| 12:26:07 | <merijn> | __monty__: I've used the semigroup monoid on Map hundreds of times |
| 12:26:13 | <merijn> | The left-biased merge never |
| 12:26:22 | <merijn> | And when you want that you can just use `unions` |
| 12:27:01 | <jackdk> | mreh: I would've thought there'd be a fair number of Haskellers in London? |
| 12:27:23 | <mreh> | there's no "just use" when you're using a Map in Writer :'( |
| 12:27:53 | <merijn> | mreh: Yes there is |
| 12:28:03 | <merijn> | mreh: It's called "Map k (First v)" |
| 12:28:36 | <merijn> | So the current behaviour is trivially reconstructible via a newtype wrapper on values |
| 12:28:49 | → | rvalue joins (~rvalue@about/hackers/rvalue) |
| 12:28:50 | × | rvalue quits (~rvalue@about/hackers/rvalue) (Excess Flood) |
| 12:29:30 | <mreh> | that's true |
| 12:31:34 | <mreh> | jackdk: I went to a meetup maybe 10 years ago, it's since folded |
| 12:31:52 | × | trickard_ quits (~trickard@cpe-54-98-47-163.wireline.com.au) (Ping timeout: 260 seconds) |
| 12:32:08 | <merijn> | mreh: Yet another reason, the Semigroup version is superior :p |
| 12:32:19 | → | trickard_ joins (~trickard@cpe-54-98-47-163.wireline.com.au) |
| 12:34:01 | → | rvalue joins (~rvalue@about/hackers/rvalue) |
| 12:36:42 | ski | . o O ( <https://en.wikipedia.org/wiki/Monoid_ring> ) |
| 12:43:55 | × | rvalue quits (~rvalue@about/hackers/rvalue) (Quit: bmV2ZXJnb25uYWdpdmV5b3V1cG5ldmVyZ29ubmFsZXR5b3Vkb3du) |
| 12:44:43 | <tomsmeding> | ski: why does that not open with "a monoid ring is a formal polynomial ring in a monoid with coefficient from a ring" |
| 12:45:42 | <tomsmeding> | perhaps that would be too "monoid in the category of endofunctors" for wikipedia |
| 12:46:05 | → | Googulator75 joins (~Googulato@2a01-036d-0106-03fa-dc7a-fb6e-71bb-aaf0.pool6.digikabel.hu) |
| 12:46:12 | → | rvalue joins (~rvalue@about/hackers/rvalue) |
| 12:46:14 | × | Googulator81 quits (~Googulato@2a01-036d-0106-03fa-dc7a-fb6e-71bb-aaf0.pool6.digikabel.hu) (Quit: Client closed) |
| 12:50:46 | → | Googulator49 joins (~Googulato@2a01-036d-0106-03fa-dc7a-fb6e-71bb-aaf0.pool6.digikabel.hu) |
| 12:50:50 | × | Googulator75 quits (~Googulato@2a01-036d-0106-03fa-dc7a-fb6e-71bb-aaf0.pool6.digikabel.hu) (Client Quit) |
| 13:00:52 | Googulator49 | is now known as Googulator |
| 13:03:45 | → | inline joins (~inlinE@ip-178-202-059-161.um47.pools.vodafone-ip.de) |
| 13:05:42 | × | kuribas quits (~user@2a02-1810-2825-6000-b5ac-98ee-b19a-ab1f.ip6.access.telenet.be) (Ping timeout: 256 seconds) |
| 13:07:37 | × | CiaoSen quits (~Jura@2a02:8071:64e1:da0:5a47:caff:fe78:33db) (Ping timeout: 244 seconds) |
| 13:14:49 | → | luna___ joins (~luna@fedora/bittin) |
| 13:15:49 | → | Googulator6 joins (~Googulato@2a01-036d-0106-03fa-dc7a-fb6e-71bb-aaf0.pool6.digikabel.hu) |
| 13:16:13 | × | Googulator quits (~Googulato@2a01-036d-0106-03fa-dc7a-fb6e-71bb-aaf0.pool6.digikabel.hu) (Quit: Client closed) |
| 13:17:36 | × | inline quits (~inlinE@ip-178-202-059-161.um47.pools.vodafone-ip.de) (Ping timeout: 256 seconds) |
| 13:17:53 | → | inline joins (~inlinE@ip-178-202-059-142.um47.pools.vodafone-ip.de) |
| 13:25:59 | → | bitdex joins (~bitdex@gateway/tor-sasl/bitdex) |
| 13:28:44 | <ski> | tomsmeding : i guess saying "polynomial" implies that the monoid is the free (commutative) monoid (hm, for "formal polynomial", would that be cofree monoid ?) |
| 13:30:07 | × | bitdex quits (~bitdex@gateway/tor-sasl/bitdex) (Remote host closed the connection) |
| 13:30:45 | → | bitdex joins (~bitdex@gateway/tor-sasl/bitdex) |
| 13:44:10 | <tomsmeding> | ski: well, the article does say that the polynomials are formal ("set of formal sums") |
| 13:44:33 | <tomsmeding> | so whether the elements of G do something with each other is not relevant for how many elements rae in R[G], it seems |
| 13:44:58 | <tomsmeding> | if the sums weren't formal, this would be a module, would it not? |
| 13:45:00 | → | ystael joins (~ystael@user/ystael) |
| 13:45:50 | <tomsmeding> | (I guess it would be a "monoid module") |
| 13:50:20 | <ski> | "More formally, `R[G]' is the free `R'-module on the set `G', endowed with `R'-linear multiplication defined on the base elements by `g·h := gh', where the left-hand side is understood as the multiplication in `R[G]' and the right-hand side is understood in `G'." |
| 13:51:30 | <ski> | "so whether the elements of G do something with each other is not relevant for how many elements rae in R[G], it seems" -- it affects multiplication of them, yea |
| 13:51:33 | × | weary-traveler quits (~user@user/user363627) (Remote host closed the connection) |
| 13:53:47 | <ski> | instead of combining monomials like `x * y^2' and `x^3 * z' into `x^4 * y^2 * z', amounting to bag/multiset merging (multiplication in the free commutative monoid), you get a not-necessarily-injective multiplication in the monoid |
| 13:56:59 | <ski> | (and yea, i was reminded of this, by the talk about `Monoid (Map k v)'. if we ignore the multiplication (and subtraction/negation) in the monoid ring, then `k' corresponds to the set of indeterminates (generators) in the "polynomials", and `v' corresponds to the monoid of coefficients) |
| 13:58:08 | <tomsmeding> | ski: "not-necessarily-injective" -- ah! right |
| 13:59:36 | <tomsmeding> | thanks :) |
| 14:01:19 | <ski> | the "formal" here means that when we write a (finite) sum of products of monoid elements and associated coefficients, this is just a suggestive notation for having a function from the monoid elements to the coefficients, with "finite support" (meaning only finitely many monoid elements map to non-zero coefficients) |
| 14:02:33 | <ski> | (iirc, in some rings, (ordinary) polynomials can be distinct (having distinct coefficients), while still having the same value at each possible input (being extensionally equal, the corresponding functions to the polynomials being equal)) |
| 14:02:37 | × | fp quits (~Thunderbi@2001:708:20:1406::10c5) (Ping timeout: 246 seconds) |
| 14:05:05 | <tomsmeding> | polynomials on Z/2Z have a bunch of such "redundancies" |
| 14:06:11 | <tomsmeding> | but yeah I see where my understanding went wrong: I wasn't properly thinking about the fact that this R[G] is supposed to be a _ring_, and what the multiplication operation ought to do |
| 14:06:35 | <tomsmeding> | then the structure of the monoid suddenly comes into play |
| 14:07:18 | × | inline quits (~inlinE@ip-178-202-059-142.um47.pools.vodafone-ip.de) (Ping timeout: 252 seconds) |
| 14:07:48 | → | inline joins (~inlinE@ip-178-202-059-161.um47.pools.vodafone-ip.de) |
| 14:08:42 | × | MelodyOwO quits (~MelodyOwO@user/MelodyOwO) (Quit: Leaving.) |
| 14:09:35 | <ski> | (oh, and when i said "formal polynomial", above, i had "formal power series in mind" .. so wondering whether that would involve a cofree, rather than free, monoid. cf. how direct sum (categorical coproduct) and direct product (categorical product) for *commutative* groups (as well as monoids) coincide, for a *finite* family of groups (or monoids), but are distinct for an infinite family. difference is that |
| 14:09:41 | <ski> | the direct sum case involves a function, with *finite support*, from the family indices to elements of the corresponding groups (monoids), while for direct product, it's arbitrary such functions. for arbitrary (not necessarily commutative/abelian) groups (monoids), though, the categorical coproduct case (called "free product") becomes a larger object. `g_0 * h * g_1' is no longer equal to `(g_0 * g_1) * h', |
| 14:09:47 | <ski> | so you can no longer keep track of a single element per group (monoid)) |
| 14:10:58 | <ski> | now .. is there a use case for wanting to multiply `Map k v's, given `Monoid k' ? |
| 14:12:21 | <tomsmeding> | feels a bit far-fetched to me, not least because the result "invents new keys" that were not there in the original |
| 14:12:30 | <tomsmeding> | *originals |
| 14:12:57 | <ski> | yea .. it kinda has a "tensor feel" |
| 14:13:25 | <ski> | wanting all combinations of the keys in one map, with the keys in the other map |
| 14:13:30 | <tomsmeding> | yes, the other problem is that the maps get very big this way |
| 14:13:42 | <ski> | right |
| 14:13:43 | <tomsmeding> | that's not usually what you want in practice |
| 14:14:01 | <ski> | unless the key monoid is highly non-injective, i guess |
| 14:14:29 | <ski> | like, the keys are lists, bags, or sets ? |
| 14:14:50 | <tomsmeding> | aren't those free and thus very injective? |
| 14:14:57 | <ski> | or `Sum a' or `Product a' |
| 14:15:12 | <tomsmeding> | even with Sum/Product the maps still grow quadratically |
| 14:15:31 | <ski> | mm, right, scratch the "lists" |
| 14:16:15 | ← | luna___ parts (~luna@fedora/bittin) () |
| 14:16:19 | <ski> | ((finite) bags are free *commutative* monoids. (finite) sets are free *commutative* *idempotent* monoids) |
| 14:16:23 | <tomsmeding> | furthermore, for this to be useful as an abstraction, I'd expect the operation to be used more than, say, once in a program |
| 14:16:46 | <tomsmeding> | something which makes a datastructure grow quadratically in size is not something you use very often |
| 14:16:47 | <ski> | yes |
| 14:17:08 | <tomsmeding> | yes I know that bags/sets are not quite free |
| 14:17:29 | <tomsmeding> | hm, I guess subsets of a very small universe set could have the required very-non-injective property |
| 14:17:29 | <ski> | it might be useful to want a (lower approximation to) division, wrt this multiplication |
| 14:17:43 | × | inline quits (~inlinE@ip-178-202-059-161.um47.pools.vodafone-ip.de) (Remote host closed the connection) |
| 14:17:58 | <ski> | like, how in relational algebra, division of relations is useful to express queries of the form "for all ..., ..." |
| 14:20:03 | <ski> | hmm .. `Map (k0,k1) v -> Map k0 v -> Map k1 v' would be a similar operation |
| 14:20:32 | <ski> | "bags/sets are not quite free" -- they are free, just not free *plain* monoids |
| 14:21:02 | tomsmeding | has to go, sorry |
| 14:22:36 | <ski> | ("free" is relative to the target category (monoids, commutative monoids, commutative idempotent monoids, ..), and also to the source category (sets, monoids, ..). "free commutative monoid on a monoid" means we force multiplication to be commutative, generally causing a lot of previously distinct elements to now be identified with each other. the "abelianization" of a monoid) |
| 14:22:49 | <ski> | no worries. was fun to ponder a bit |
| 14:24:21 | × | Beowulf quits (florian@2a01:4f9:3b:2d56::2) (Quit: = "") |
| 14:24:58 | → | mochie joins (~mochie@user/mochie) |
| 14:27:04 | → | Unicorn_Princess joins (~Unicorn_P@user/Unicorn-Princess/x-3540542) |
| 14:29:48 | → | Beowulf joins (florian@2a01:4f9:3b:2d56::2) |
| 14:35:36 | × | Googulator6 quits (~Googulato@2a01-036d-0106-03fa-dc7a-fb6e-71bb-aaf0.pool6.digikabel.hu) (Quit: Client closed) |
| 14:35:38 | → | Googulator18 joins (~Googulato@2a01-036d-0106-03fa-dc7a-fb6e-71bb-aaf0.pool6.digikabel.hu) |
| 14:38:55 | × | trickard_ quits (~trickard@cpe-54-98-47-163.wireline.com.au) (Read error: Connection reset by peer) |
| 14:39:08 | → | trickard_ joins (~trickard@cpe-54-98-47-163.wireline.com.au) |
| 14:41:44 | × | jreicher quits (~user@user/jreicher) (Ping timeout: 260 seconds) |
| 14:47:26 | → | Square3 joins (~Square@user/square) |
| 15:02:47 | → | Zemy_ joins (~Zemy@2600:100c:b0a0:3fd9:78c1:9aff:fe21:5d9e) |
| 15:03:57 | × | infinity0 quits (~infinity0@pwned.gg) (Ping timeout: 250 seconds) |
| 15:05:15 | × | mreh quits (~matthew@host86-146-25-125.range86-146.btcentralplus.com) (Ping timeout: 256 seconds) |
| 15:06:24 | × | Zemy quits (~Zemy@syn-076-184-041-021.res.spectrum.com) (Ping timeout: 256 seconds) |
| 15:06:27 | × | gustrb quits (~gustrb@191.243.134.87) (Ping timeout: 244 seconds) |
| 15:09:48 | × | dhil quits (~dhil@5.151.29.137) (Remote host closed the connection) |
| 15:10:13 | → | inline joins (~inlinE@ip-178-202-059-161.um47.pools.vodafone-ip.de) |
| 15:13:55 | → | mreh joins (~matthew@host86-146-25-125.range86-146.btcentralplus.com) |
| 15:15:35 | → | Zemy joins (~Zemy@12.218.191.128) |
| 15:16:54 | × | bitterx quits (~marko@user/bitterx) (Quit: bitterx) |
| 15:18:42 | × | Zemy_ quits (~Zemy@2600:100c:b0a0:3fd9:78c1:9aff:fe21:5d9e) (Ping timeout: 260 seconds) |
| 15:20:43 | → | Tri joins (~tnguyen@69.74.159.34) |
| 15:21:57 | <Tri> | I'm a haskell beginner, I've written a small program. Could someone review my code please? Thank you https://paste.tomsmeding.com/2dnXN2fo |
| 15:24:56 | → | infinity0 joins (~infinity0@pwned.gg) |
| 15:25:45 | <int-e> | > groupBy (==) [1,2,1] |
| 15:25:47 | <lambdabot> | error: |
| 15:25:47 | <lambdabot> | Ambiguous occurrence ‘groupBy’ |
| 15:25:47 | <lambdabot> | It could refer to |
| 15:25:56 | <int-e> | @undefine |
| 15:25:56 | <lambdabot> | Undefined. |
| 15:25:58 | <int-e> | > groupBy (==) [1,2,1] |
| 15:26:00 | <lambdabot> | [[1],[2],[1]] |
| 15:26:41 | <int-e> | (also, shouldn't most of this work be done in SQL instead...) |
| 15:27:54 | <Tri> | I never think about it, but I prefer to not use SQL |
| 15:28:01 | → | Shark8 joins (~Shark8@c-174-56-102-109.hsd1.nm.comcast.net) |
| 15:28:29 | × | Square3 quits (~Square@user/square) (Ping timeout: 256 seconds) |
| 15:29:03 | × | Square quits (~Square4@user/square) (Ping timeout: 256 seconds) |
| 15:30:21 | × | inline quits (~inlinE@ip-178-202-059-161.um47.pools.vodafone-ip.de) (Ping timeout: 252 seconds) |
| 15:30:57 | × | OWS quits (~Shark8@c-174-56-102-109.hsd1.nm.comcast.net) (Ping timeout: 260 seconds) |
| 15:31:14 | → | Inline joins (~inlinE@ip-178-202-059-161.um47.pools.vodafone-ip.de) |
| 15:31:55 | × | Shark8 quits (~Shark8@c-174-56-102-109.hsd1.nm.comcast.net) (Remote host closed the connection) |
| 15:32:19 | → | Shark8 joins (~Shark8@c-174-56-102-109.hsd1.nm.comcast.net) |
| 15:35:57 | → | gustrb joins (~gustrb@191.243.134.87) |
| 15:40:29 | <int-e> | ...why are you asking for a code review on code that doesn't even compile. |
| 15:41:41 | <[exa]> | Tri: you might want to join all the isWhateverOverlapping into a single function |
| 15:42:20 | int-e | is going to mention that half of those predicates aren't transitive and leave it at that. |
| 15:43:33 | × | __monty__ quits (~toonn@user/toonn) (Quit: leaving) |
| 15:47:14 | <Tri> | int-e, oh it didn't? I'm sorry let me double check, it compiles on my local, I've been running it. I've copied it across different forums to ask for suggestions, so I may have added/dropped something. |
| 15:50:13 | <Tri> | int-e, I just copy-pasted code from that link and recompile, it was fine. Perhaps you missed some package? Here is my cabal https://paste.tomsmeding.com/CLDOLEXr |
| 15:51:13 | <Tri> | int-e, I didn't give you this, sorry https://paste.tomsmeding.com/Zj0uN9k7 |
| 15:52:37 | <int-e> | Oh, my bad. I thought startData and endDate would have the same type. |
| 15:52:39 | <Tri> | [exa], I think haskell has some concept to compose them, but I don't know what. I would like to string them together from small functions, not combine them into a big function, because I still want to use these small functions separately |
| 15:53:02 | <Tri> | int-e, all good, thank you for checking |
| 15:54:22 | <Tri> | maybe next time I will just make a repo for this for reviewer's convenience, the main.hs has the core logic so I only quickly pasted it into tomsmeding and ask for review |
| 15:54:23 | <[exa]> | Tri: I like to do e.g. this: isOverlapping a b = and [something a == something b, condition2, condition3, ...] |
| 15:56:25 | × | divya quits (divya@140.238.251.170) (Ping timeout: 265 seconds) |
| 15:57:32 | <Tri> | [exa], that's pretty neat. Thank you. Does Haskell have something that's even more expressive? I at least I could re-code my function, so that they can be compose like overlappingA >>> overlappingB >>> overlappingC >>> overlappingD, and just short-circuit on the first fail function. This looks a lot like bind in monad to me |
| 15:58:10 | <geekosaur> | Alternative? |
| 15:59:18 | <Tri> | let me look into that, I wonder if it works if my data doesn't have a monad structure |
| 15:59:19 | <[exa]> | Tri: like, you can put literal && in between the conditions, I used a list because it formats nicely if you have many conditions |
| 15:59:43 | <geekosaur> | Alternative only requires Applicative, not Monad |
| 15:59:47 | <[exa]> | saying "we have a list of conditions" and meaning an actual list counts. :) |
| 16:00:14 | <geekosaur> | and yes, if it's just a list of conditions you don't need either |
| 16:00:19 | <Tri> | ok I will look into them. Thank you |
| 16:03:20 | <ski> | Tri : define your own custom display function, rather than using `Show' instance to portray in a custom format |
| 16:03:38 | → | mari-estel joins (~mari-este@user/mari-estel) |
| 16:04:39 | → | Zemy_ joins (~Zemy@2600:100c:b0a0:3fd9:1cfb:70ff:feac:dc0e) |
| 16:04:40 | × | Zemy quits (~Zemy@12.218.191.128) (Read error: Connection reset by peer) |
| 16:05:09 | → | Zemy joins (~Zemy@syn-067-078-059-246.biz.spectrum.com) |
| 16:05:54 | <Tri> | [exa], my code is already using &&. I just find passing in the 2 parameters on every function check very clunky. I found this is pretty idiomatic https://paste.tomsmeding.com/98dJNMNB |
| 16:06:24 | <ski> | Tri : instead of using `case'-`of' in `isDateRangeOverlapping', you can use `all' |
| 16:06:53 | <ski> | ditto for `isConditionOverlapping' |
| 16:07:11 | <ski> | oh, and `isAssetOverlapping' |
| 16:07:49 | <Tri> | geekosaur, if I use Alternative, I need to modify my functions signature to return an Applicative structure, which is fine, but then it's bending the business logic, which I don't like. I want to keep the intent clear: return a Bool meaning it's either overlapping or not |
| 16:08:25 | <EvanR> | there's so many ways to skin this one |
| 16:08:34 | <EvanR> | @src and |
| 16:08:34 | <lambdabot> | and = foldr (&&) True |
| 16:08:58 | × | Zemy_ quits (~Zemy@2600:100c:b0a0:3fd9:1cfb:70ff:feac:dc0e) (Ping timeout: 246 seconds) |
| 16:09:42 | <Tri> | I've got to get back to my job a bit, thank you everyone, I will get back later |
| 16:09:56 | <EvanR> | :t zipWith uncurry |
| 16:09:57 | <lambdabot> | [a -> b -> c] -> [(a, b)] -> [c] |
| 16:10:30 | × | gustrb quits (~gustrb@191.243.134.87) (Ping timeout: 252 seconds) |
| 16:10:47 | Googulator18 | is now known as Googulator |
| 16:12:51 | × | tomboy64 quits (~tomboy64@user/tomboy64) (Ping timeout: 250 seconds) |
| 16:13:40 | <EvanR> | and I'm not sure there's a meaningful difference between anding by chaining && or and on an explicit list (chaining commas) |
| 16:14:18 | <ski> | groupBy (\x y -> and [f x y | f <- [isIssuerOverlapping,isAssetOverlapping,isConditionOverlapping,isDateRangeOverlapping,isTargetColumnOverlapping]]) |
| 16:14:37 | <ski> | using `<>' with `All' seems rather clunky here, unfortunately .. |
| 16:14:58 | <Tri> | thank you for your help, I will get back to read your comments later |
| 16:15:23 | → | tomboy64 joins (~tomboy64@user/tomboy64) |
| 16:15:38 | → | Googulator26 joins (~Googulato@2a01-036d-0106-03fa-dc7a-fb6e-71bb-aaf0.pool6.digikabel.hu) |
| 16:15:38 | × | Googulator quits (~Googulato@2a01-036d-0106-03fa-dc7a-fb6e-71bb-aaf0.pool6.digikabel.hu) (Quit: Client closed) |
| 16:16:10 | <ski> | Tri : `Show' and `Read' are intended to work together with instances for other types. for this reason, it is confusing to have them handle non-Haskell syntax, hence why i suggested making a separate function for your custom (non-Haskell syntax) formatting |
| 16:17:50 | → | divya joins (divya@140.238.251.170) |
| 16:17:54 | <ski> | Tri : "Does Haskell have something that's even more expressive? I at least I could re-code my function, so that they can be compose like overlappingA >>> overlappingB >>> overlappingC >>> overlappingD, and just short-circuit on the first fail function. This looks a lot like bind in monad to me" -- in the case where you'd use `<>' (rather than `&&'), this works fine |
| 16:18:38 | <EvanR> | because a monoid is just a category with one object? |
| 16:19:39 | <ski> | > sortBy (comparing length <> compare) (words "The quick brown fox jumps over the lazy dog") -- sort primarily by length, and only secondarily lexicographically |
| 16:19:41 | <lambdabot> | ["The","dog","fox","the","lazy","over","brown","jumps","quick"] |
| 16:19:44 | <ski> | @where monoids |
| 16:19:44 | <lambdabot> | comment on "Monoids? In my programming language?" by Cale in 2008 (or 2009 ?) at <http://www.reddit.com/r/programming/comments/7cf4r/monoids_in_my_programming_language/c06adnx> about a use of ` |
| 16:19:44 | <lambdabot> | instance Monoid a => Monoid (rho -> a)' |
| 16:21:00 | <ski> | EvanR : because for a lot of algebraic structures (including monoids), if `A' is an algebra, then `A^R' / `R -> A' is also an algebra, for any set `R', with operations defined pointwise/coordinatewise |
| 16:22:45 | → | raym joins (~ray@user/raym) |
| 16:22:55 | <ski> | ah, i see you did the above (list comprehension), with `condList' |
| 16:23:10 | → | gustrb joins (~gustrb@191.243.134.87) |
| 16:25:29 | × | trickard_ quits (~trickard@cpe-54-98-47-163.wireline.com.au) (Read error: Connection reset by peer) |
| 16:25:42 | → | trickard_ joins (~trickard@cpe-54-98-47-163.wireline.com.au) |
| 16:25:50 | <geekosaur> | can I suggest that side comments about advanced topics go to #haskell-in-depth so they don't confuse the original asker? |
| 16:26:26 | <geekosaur> | we do have this tendency for simple questions to get diverted into advanced algebra or CT |
| 16:27:31 | <ski> | (that's called a "power object", btw, in CT. it's an `R'-fold indexed categorical product, with all factors being `A'. a "copower object" (or "multiple/scaled object" ?) is the dual case, for categorical coproducts (sums)) |
| 16:27:57 | <ski> | sure |
| 16:30:37 | → | Googulator3 joins (~Googulato@2a01-036d-0106-03fa-dc7a-fb6e-71bb-aaf0.pool6.digikabel.hu) |
| 16:30:39 | × | Googulator26 quits (~Googulato@2a01-036d-0106-03fa-dc7a-fb6e-71bb-aaf0.pool6.digikabel.hu) (Quit: Client closed) |
| 16:30:40 | <Tri> | geekosaur, I appreciate that... I was thinking the same thing. It just escalated from very quickly. Ski, not that I meant you are bad, it's just I'm not there yet, I really appreciate your help |
| 16:32:06 | <ski> | yeah, the CT comments weren't intended as being things you were suggested to understand, but were asides to EvanR |
| 16:32:08 | <geekosaur> | that happens in here a lot, and our rep has taken a bit of a hit because of it |
| 16:32:26 | <geekosaur> | so yeh, I'm now trying to divert the side chatter |
| 16:32:47 | × | merijn quits (~merijn@77.242.116.146) (Ping timeout: 260 seconds) |
| 16:33:08 | <EvanR> | I saw >>> and <> |
| 16:33:20 | <EvanR> | I guess Tri was making that up |
| 16:33:34 | <Tri> | geekosaur, that's my impression too. I have been here multiple time, and every time, it didn't take more than 3-4 sentences before things took off into some concept way over my head, I just didn't know how to address it properly before |
| 16:33:34 | <ski> | i always enjoyed the mix of abstract and concrete, theoretical and practical, conversations on this channel |
| 16:34:01 | <geekosaur> | iyeh, but they confuse the hell out of beginners |
| 16:34:01 | <ski> | (and i've seen many other people expressing similar things, over the years) |
| 16:34:03 | <Tri> | EvanR, yes EvanR, I use >>> just as a placeholder for some operation that can string these functions together |
| 16:34:12 | <EvanR> | :t (>>>) |
| 16:34:13 | <lambdabot> | forall k (cat :: k -> k -> *) (a :: k) (b :: k) (c :: k). Category cat => cat a b -> cat b c -> cat a c |
| 16:34:16 | × | Zemy quits (~Zemy@syn-067-078-059-246.biz.spectrum.com) (Read error: Connection reset by peer) |
| 16:34:21 | → | Zemy_ joins (~Zemy@2600:100c:b0a0:3fd9:5cfe:ffff:fe64:fccc) |
| 16:34:25 | <EvanR> | you accidentally went categorical! |
| 16:34:31 | × | trickard_ quits (~trickard@cpe-54-98-47-163.wireline.com.au) (Ping timeout: 246 seconds) |
| 16:34:40 | <Tri> | I was trying to ask if there was any such function that can string many Override -> Override -> Bool together to return a final Bool |
| 16:34:41 | <EvanR> | it does infact string functions together |
| 16:34:45 | <ski> | it's definitely one of the reasons that made me stick around, when i started chatting here, some twentyfour years ago |
| 16:34:51 | → | Zemy joins (~Zemy@syn-067-078-059-246.biz.spectrum.com) |
| 16:36:06 | <EvanR> | an advanced degree is not required to learn haskell it's just a side effect |
| 16:36:07 | <Tri> | EvanR, I knew (>>>) was the opposite of function composition (.), coming from F# that's the way I'm comfortable with. It just I used (>>>) in that context to represent the thing i was asking :) |
| 16:36:26 | → | trickard_ joins (~trickard@cpe-54-98-47-163.wireline.com.au) |
| 16:37:22 | <ski> | Tri : it's fine to ask people to address the practical or concrete concernss you have, or to ask about particular parts you're wondering about. and addressing questions of people looking for help takes precedence over other chatter |
| 16:38:16 | <Tri> | thank you ski |
| 16:38:27 | <geekosaur> | yeh, I didn't start to learn any of the stuff they've been talking about until I came here shortly after starting to learn Haskell |
| 16:38:33 | × | Zemy_ quits (~Zemy@2600:100c:b0a0:3fd9:5cfe:ffff:fe64:fccc) (Ping timeout: 252 seconds) |
| 16:38:38 | → | Core7083 joins (~Zemy@2600:100c:b0a0:3fd9:b093:6aff:fe5f:f77f) |
| 16:38:50 | <ski> | you could define `(f &&&& g) x y = f x y && g x y', i guess, and then use `groupBy (isIssuerOverlapping &&&& isAssetOverlapping &&&& isConditionOverlapping &&&& isDateRangeOverlapping &&&& isTargetColumnOverlapping)' |
| 16:39:00 | <EvanR> | chaining A -> A -> Bool functions to get an A -> A -> Bool, it requires answering what to do with all the Bools along the way |
| 16:39:11 | <ski> | indeed |
| 16:39:17 | <EvanR> | in this case anding them all I guess |
| 16:39:59 | <ski> | the two obvious choices are `&&' and `||'. you can do the former, with `All' and the latter with `Any', if you use `<>'. but inserting the `All's and `Any's turn out to be annoying .. |
| 16:40:43 | <Tri> | yes EvanR, in other words, short circuting to False, if there is a False. That resembles how bind works. I believe people have suggested to use <> and list comprehension, but I didn't have the mental capacity to read them yet, I'm working my day job at the moment |
| 16:40:59 | <EvanR> | I'm not sure that monads are appropriate for this |
| 16:41:00 | × | Zemy quits (~Zemy@syn-067-078-059-246.biz.spectrum.com) (Ping timeout: 244 seconds) |
| 16:41:13 | <EvanR> | short circuiting to False if there is a False is what `and' does |
| 16:41:23 | <EvanR> | i.e. folding Bools using && |
| 16:41:50 | <Tri> | sure, I will think about it |
| 16:41:53 | <EvanR> | monads requires a different shaped type, one with a parameter |
| 16:42:17 | <ski> | groupBy ((getAll .) . ((All .) . isIssuerOverlapping <> (All .) . isAssetOverlapping <> (All .) . isConditionOverlapping <> (All .) . isDateRangeOverlapping <> (All .) . isTargetColumnOverlapping)) -- the `(blah .) .' is annoying ! |
| 16:43:33 | <EvanR> | so it all boils down to ways of stitching a bunch of things together with && |
| 16:43:41 | → | peterbecich joins (~Thunderbi@syn-172-222-148-214.res.spectrum.com) |
| 16:43:47 | <ski> | in the `sortBy' example i gave above, there's no need for such nonsense, because the result is not a `Bool', but an `Ordering', and doing (short-circuiting) lexigographic composition of these seem to be the obvious choice of what `<>' should do, there |
| 16:48:03 | → | machinedgod joins (~machinedg@d75-159-126-101.abhsia.telus.net) |
| 16:48:16 | × | EvanR quits (~EvanR@user/evanr) (Quit: Leaving) |
| 16:51:16 | → | Zemy joins (~Zemy@syn-076-184-041-021.res.spectrum.com) |
| 16:51:30 | → | EvanR joins (~EvanR@user/evanr) |
| 16:51:31 | × | bitdex quits (~bitdex@gateway/tor-sasl/bitdex) (Quit: = "") |
| 16:52:24 | <ski> | Tri : do you see how to use `all' to avoid the matching on `Just' ? |
| 16:52:40 | × | chele quits (~chele@user/chele) (Remote host closed the connection) |
| 16:53:25 | × | Core7083 quits (~Zemy@2600:100c:b0a0:3fd9:b093:6aff:fe5f:f77f) (Ping timeout: 246 seconds) |
| 16:55:21 | <Tri> | ski, I'm working right now so I haven't been able to parse all your suggestions, I will read it later. Thank you |
| 16:55:48 | <ski> | right, that's fine |
| 16:56:19 | <ski> | (just writing down the things i thought of, before i forget them again) |
| 16:57:17 | × | peterbecich quits (~Thunderbi@syn-172-222-148-214.res.spectrum.com) (Ping timeout: 260 seconds) |
| 16:58:31 | × | mari-estel quits (~mari-este@user/mari-estel) (Remote host closed the connection) |
| 17:01:39 | × | Zemy quits (~Zemy@syn-076-184-041-021.res.spectrum.com) (Ping timeout: 252 seconds) |
| 17:03:41 | × | gustrb quits (~gustrb@191.243.134.87) (Ping timeout: 256 seconds) |
| 17:11:52 | → | gustrb joins (~gustrb@191.243.134.87) |
| 17:13:51 | → | haltsolver joins (~cmo@2604:3d09:207f:8000::d1dc) |
| 17:15:39 | × | Googulator3 quits (~Googulato@2a01-036d-0106-03fa-dc7a-fb6e-71bb-aaf0.pool6.digikabel.hu) (Quit: Client closed) |
| 17:15:45 | → | Googulator60 joins (~Googulato@2a01-036d-0106-03fa-dc7a-fb6e-71bb-aaf0.pool6.digikabel.hu) |
| 17:16:45 | × | Shark8 quits (~Shark8@c-174-56-102-109.hsd1.nm.comcast.net) (Read error: Connection reset by peer) |
| 17:17:39 | → | Shark8 joins (~Shark8@c-174-56-102-109.hsd1.nm.comcast.net) |
| 17:21:01 | → | nogloff joins (uid464985@id-464985.tinside.irccloud.com) |
| 17:23:03 | <haskellbridge> | <sm> #haskell-beginners was another attempt to separate the streams of new learners and deep divers. Also #Haskell matrix room has a bit less of this tendency I think |
| 17:23:46 | → | merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl) |
| 17:24:55 | → | Square3 joins (~Square@user/square) |
| 17:25:36 | → | Square joins (~Square4@user/square) |
| 17:27:29 | <haskellbridge> | <sm> I think it's in the nature of the language and the community that this tends to happen. There's a wider range of interests and discussion than say php or js. And also a greater need for careful coaching/mentoring than in those languages. |
| 17:28:37 | × | merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 256 seconds) |
| 17:29:03 | → | weary-traveler joins (~user@user/user363627) |
| 17:33:35 | → | wootehfoot joins (~wootehfoo@user/wootehfoot) |
| 17:33:44 | × | Inline quits (~inlinE@ip-178-202-059-161.um47.pools.vodafone-ip.de) (Ping timeout: 256 seconds) |
| 17:36:18 | × | gustrb quits (~gustrb@191.243.134.87) (Quit: gustrb) |
| 17:39:34 | → | merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl) |
| 17:43:15 | × | vanishingideal quits (~vanishing@user/vanishingideal) (Ping timeout: 245 seconds) |
| 17:43:26 | → | tzh joins (~tzh@c-76-115-131-146.hsd1.or.comcast.net) |
| 17:44:29 | × | merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 256 seconds) |
| 17:44:39 | <ski> | with a more abstract/technical/theoretical conversation, going on for a longer time period, and there being other extant conversation threads, i often suggest #haskell-overflow or #haskell-in-depth |
| 17:45:21 | → | vanishingideal joins (~vanishing@user/vanishingideal) |
| 17:46:01 | <haskellbridge> | <sm> I haven't been in those channels much.. are they active / working pretty well ? |
| 17:47:47 | → | fp joins (~Thunderbi@89-27-10-140.bb.dnainternet.fi) |
| 17:49:09 | <geekosaur> | -overflow is moderately active, but Haskell-related discussions are discouraged. (more abstract ones are fine though) |
| 17:49:17 | <ski> | not that much, lately, seeing as this channel isn't too often overflowing with conversations |
| 17:49:30 | <geekosaur> | #h-i-d is pretty dead, but seems like a good use for it is this kind of discussion |
| 17:49:39 | <ski> | you're thinking of -offtopic, i believe, geekosaur ? |
| 17:50:10 | × | haltsolver quits (~cmo@2604:3d09:207f:8000::d1dc) (Ping timeout: 256 seconds) |
| 17:50:16 | <geekosaur> | it's a leftover from an old sirtuation on Freenode wjhere someone started to do a detailed discussion of something in GJHC in #haskell and was asked to move. it hasn't really been used since, though |
| 17:50:30 | <geekosaur> | (wow my typing was bad there) |
| 17:51:18 | <geekosaur> | right, I meant offtopic, sorry |
| 17:51:21 | <haskellbridge> | <sm> three overflow channels at the deep end and at least one on the shallow seems too many |
| 17:51:42 | <geekosaur> | typing on autopilot, same reason as the typos 🙂 |
| 17:52:00 | <geekosaur> | -beginners barely gets used these days |
| 17:52:06 | <ski> | well, just two, sm |
| 17:52:20 | <geekosaur> | iirc that one was originally created specifically for a particular Haskell book |
| 17:52:32 | <ski> | -offtopic is an alternative to -blah |
| 17:52:37 | <ski> | yes |
| 17:52:53 | <ski> | bitemyapp hasn't been around, in a while |
| 17:52:57 | → | inline joins (~inline@2a02:8071:57a1:1260:e9a3:cc45:338f:8e4a) |
| 17:53:25 | <geekosaur> | I think it might be a good idea at this point to forward it here |
| 17:53:32 | <haskellbridge> | <sm> some housecleaning once it a while is good |
| 17:53:45 | <geekosaur> | the same way I forward #haskell-cabal to #hackage |
| 17:55:02 | <ski> | ah, i didn't know that's how -in-depth came to be |
| 17:55:23 | → | merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl) |
| 17:55:24 | <geekosaur> | (you can set a forward ban on a channel in chanserv. people on chanserv's admins list can join for maintenance, everyone else is forwarded to the target channel) |
| 17:56:46 | <geekosaur> | also I think -blah is dead at this point and can be reaped or forward-banned to -overflow? it was originally separate due to a political situation, but I think that's now past history |
| 17:57:11 | × | wootehfoot quits (~wootehfoo@user/wootehfoot) (Quit: Leaving) |
| 17:57:21 | <ski> | rather to -offtopic, in that case |
| 17:57:30 | <geekosaur> | right, I did that again. sigh |
| 17:59:27 | <haskellbridge> | <sm> +1 |
| 17:59:28 | <ski> | i believe only edwardk can modify those ChanServ access lists. other ops could manually set `+if #...', though, on the channel itself |
| 18:00:24 | <ski> | haven't been in -blah in a while, dunno what they'd think about it |
| 18:01:42 | <geekosaur> | right, it's only the forward ban that we need to do, the access lists themselves are fine |
| 18:01:56 | <haskellbridge> | <sm> why should those blatherers get a free lifetime encampment on Haskell's lawn :) |
| 18:02:02 | × | merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 248 seconds) |
| 18:02:16 | <geekosaur> | last time I was in -blah there were a few hangers-on and no activity. that said, it's been a while and it may have sprouted a new community |
| 18:02:41 | <geekosaur> | and in any case we couldn't o this by fiat, we'd have to ask in there and possibly on discourse since IRC isn't persistent |
| 18:04:17 | ski | nods |
| 18:05:14 | → | ljdarj joins (~Thunderbi@user/ljdarj) |
| 18:05:27 | → | Axma32074 joins (~Axman6@user/axman6) |
| 18:05:38 | × | Axman6 quits (~Axman6@user/axman6) (Read error: Connection reset by peer) |
| 18:05:45 | <ski> | there is the occasional query in -beginners |
| 18:11:44 | → | tromp joins (~textual@2001:1c00:3487:1b00:cdf:654a:2a7f:261) |
| 18:13:25 | → | merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl) |
| 18:16:58 | × | fp quits (~Thunderbi@89-27-10-140.bb.dnainternet.fi) (Ping timeout: 248 seconds) |
| 18:18:07 | × | merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 246 seconds) |
| 18:20:36 | → | fp joins (~Thunderbi@2001-14ba-6e24-3000--190.rev.dnainternet.fi) |
| 18:29:11 | → | merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl) |
| 18:29:39 | × | gmg quits (~user@user/gehmehgeh) (Quit: Leaving) |
| 18:34:03 | × | merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds) |
| 18:35:05 | → | ft joins (~ft@p4fc2a207.dip0.t-ipconnect.de) |
| 18:43:52 | → | gustrb joins (~gustrb@191.243.134.87) |
| 18:44:59 | → | merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl) |
| 18:49:39 | × | gustrb quits (~gustrb@191.243.134.87) (Ping timeout: 256 seconds) |
| 18:49:50 | <geekosaur> | right, that's why I want to forward-ban it: the topic already suggests asking here instead, and people in there often but not always end up coming here to ask anyway |
| 18:50:13 | × | merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 256 seconds) |
| 19:00:02 | × | caconym7478798 quits (~caconym@user/caconym) (Quit: bye) |
| 19:00:44 | → | caconym7478798 joins (~caconym@user/caconym) |
| 19:00:47 | → | merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl) |
| 19:05:40 | × | merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 244 seconds) |
| 19:06:00 | <ski> | aye |
| 19:06:51 | <ski> | (invite-only, rather than blanket ban, would probably be more comfortable, i think) |
| 19:07:25 | <geekosaur> | "forward-ban". which means instead of preventing joining it joins them to a different channel, in this case #haskell |
| 19:08:17 | <ski> | yep |
| 19:09:53 | <ski> | `+f' (forward) applies to all of `+i' (invite-only), `+j' (join throttle), `+l' (limit), `+r' (registered only), as well as `+b' (ban) |
| 19:11:40 | <ski> | (with `+i', you can easily temporarily side-step, with sending `invite' to ChanServ (.. or adding an invite exempt `+I'). with `+b', you'd have to add a ban exempt `+e') |
| 19:15:42 | → | haltsolver joins (~cmo@2604:3d09:207f:8000::d1dc) |
| 19:16:34 | → | merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl) |
| 19:21:21 | × | merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds) |
| 19:21:24 | → | Guest77 joins (~Guest77@static-186-121-246-148.acelerate.net) |
| 19:21:56 | <Guest77> | i don't understand currying principle, can someone explain me? |
| 19:22:32 | <monochrom> | It would be more productive with a more specific question or comment. |
| 19:24:08 | <haskellbridge> | <Kyle Butt> Guest77: A function of 2 arguments can be re-written as a function of 1 argument (the first) that returns a function of one argument (the second). |
| 19:25:27 | × | haltsolver quits (~cmo@2604:3d09:207f:8000::d1dc) (Ping timeout: 260 seconds) |
| 19:25:44 | × | nogloff quits (uid464985@id-464985.tinside.irccloud.com) (Quit: Connection closed for inactivity) |
| 19:26:25 | <EvanR> | :t curry |
| 19:26:26 | <lambdabot> | ((a, b) -> c) -> a -> b -> c |
| 19:26:37 | × | machinedgod quits (~machinedg@d75-159-126-101.abhsia.telus.net) (Ping timeout: 260 seconds) |
| 19:26:40 | <EvanR> | to understand curry you must first understanding currying |
| 19:27:02 | <EvanR> | actually, just parentheses |
| 19:27:17 | <EvanR> | ((a,b) -> c) -> (a -> (b -> c)) |
| 19:29:45 | → | Everything joins (~Everythin@46.96.48.125) |
| 19:32:21 | → | merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl) |
| 19:32:38 | ski | looks at Guest77 |
| 19:33:18 | × | raym quits (~ray@user/raym) (Ping timeout: 256 seconds) |
| 19:35:14 | → | CiaoSen joins (~Jura@2a02:8071:64e1:da0:5a47:caff:fe78:33db) |
| 19:38:57 | × | merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds) |
| 19:39:31 | → | Enrico63 joins (~Enrico63@host-82-59-110-109.retail.telecomitalia.it) |
| 19:40:17 | → | haltsolver joins (~cmo@2604:3d09:207f:8000::d1dc) |
| 19:41:16 | × | Guest77 quits (~Guest77@static-186-121-246-148.acelerate.net) (Quit: Client closed) |
| 19:50:25 | → | merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl) |
| 19:54:57 | <monochrom> | Not sure I should be happy or sad. GHC.Exts (in fact GHC.Magic.Dict) has WithDict. This allows dynamic instances of classes. I was actually looking for it. |
| 19:55:27 | × | merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds) |
| 19:55:35 | × | myme quits (~myme@2a01:799:d5e:5f00:400a:36cb:71d2:d99e) (Ping timeout: 250 seconds) |
| 19:55:58 | × | haltsolver quits (~cmo@2604:3d09:207f:8000::d1dc) (Ping timeout: 256 seconds) |
| 19:56:04 | <jackdk> | monochrom: package reflection has been able to do this for a while. lens uses it to implement things like `foldMapBy` where you provide a fake monoid |
| 19:56:04 | <geekosaur> | yeh, that's been around for a while. as has IfCxt and friends. |
| 19:56:24 | → | myme joins (~myme@2a01:799:d5e:5f00:3f1f:ed6a:2329:6f95) |
| 19:57:17 | × | nschoe quits (~nschoe@2a01:e0a:8e:a190:5a5d:b819:b564:200f) (Quit: ZNC 1.8.2 - https://znc.in) |
| 19:57:34 | → | nschoe joins (~nschoe@2a01:e0a:8e:a190:9978:942:5e21:4051) |
| 19:59:01 | <monochrom> | Yeah I saw reflection. Sadly or funnily, now it enters GHC canon! |
| 19:59:18 | trickard_ | is now known as trickard |
| 20:03:04 | × | Everything quits (~Everythin@46.96.48.125) (Quit: leaving) |
| 20:03:06 | <EvanR> | we can still ignore it and do type classes vs the world |
| 20:03:21 | <EvanR> | our implicits are different! |
| 20:03:38 | <monochrom> | But my class has associated type synonym. :( |
| 20:04:52 | → | gustrb joins (~gustrb@191.243.134.87) |
| 20:05:49 | × | craunts79533538 quits (~craunts@136.158.7.194) (Quit: The Lounge - https://thelounge.chat) |
| 20:06:13 | → | merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl) |
| 20:07:56 | → | haltsolver joins (~cmo@2604:3d09:207f:8000::d1dc) |
| 20:11:24 | × | merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds) |
| 20:15:37 | × | Googulator60 quits (~Googulato@2a01-036d-0106-03fa-dc7a-fb6e-71bb-aaf0.pool6.digikabel.hu) (Quit: Client closed) |
| 20:15:41 | → | Googulator22 joins (~Googulato@2a01-036d-0106-03fa-dc7a-fb6e-71bb-aaf0.pool6.digikabel.hu) |
| 20:22:00 | → | merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl) |
| 20:23:44 | → | target_i joins (~target_i@user/target-i/x-6023099) |
| 20:27:06 | × | merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 248 seconds) |
| 20:28:50 | × | Square quits (~Square4@user/square) (Ping timeout: 256 seconds) |
| 20:35:09 | × | takuan quits (~takuan@d8D86B9E9.access.telenet.be) (Remote host closed the connection) |
| 20:44:07 | × | mochie quits (~mochie@user/mochie) (Ping timeout: 256 seconds) |
| 20:49:14 | × | ezzieyguywuf quits (~Unknown@user/ezzieyguywuf) (Ping timeout: 260 seconds) |
| 20:49:45 | → | jmcantrell joins (~weechat@user/jmcantrell) |
| 20:55:37 | <monochrom> | Interesting, I have to with withDict like this: withDict @(MyClass MyType) |
| 21:01:50 | × | weary-traveler quits (~user@user/user363627) (Remote host closed the connection) |
| 21:02:40 | → | pavonia joins (~user@user/siracusa) |
| 21:04:30 | → | V joins (~v@ircpuzzles/2022/april/winner/V) |
| 21:06:47 | <tomsmeding> | monochrom: as opposed to how? |
| 21:09:10 | × | V quits (~v@ircpuzzles/2022/april/winner/V) (Remote host closed the connection) |
| 21:09:46 | → | merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl) |
| 21:10:15 | <monochrom> | As opposed to auto-infer. :) |
| 21:10:55 | <monochrom> | I guess it is not inferrable. Sorry I was studying math for a week, I thought everything were inferrable! |
| 21:11:53 | <monochrom> | Whereas now I'm detouring into Haskell singletons and dependent types. I see now that nothing is inferrable. |
| 21:12:43 | → | V joins (~v@ircpuzzles/2022/april/winner/V) |
| 21:13:36 | <monochrom> | (If not for a few partial functions that I really opinioniate that they should stay partial, I would be using Lean. Reason: I am coding up finite fields with mod prime, I am not going to prove that 3 is a prime! Or that x^2+1 is irreducible!) |
| 21:14:14 | × | tromp quits (~textual@2001:1c00:3487:1b00:cdf:654a:2a7f:261) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 21:14:58 | <monochrom> | (So in Haskell I am really coding up finite rings, then let recip x be a runtime error if x has no recip.) |
| 21:15:45 | <EvanR> | if you don't have the proof that 3 is prime |
| 21:16:00 | <EvanR> | this is haskell so it's liable to end up being not prime after all |
| 21:16:16 | <EvanR> | at the worst possible moment |
| 21:16:25 | <monochrom> | IKR! What if Int has only one bit! |
| 21:16:52 | × | merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 260 seconds) |
| 21:17:45 | <int-e> | > let n = 467443687 * 39463029637 in (take n [], n) |
| 21:17:47 | <lambdabot> | ([],18446744073709551619) |
| 21:18:06 | × | michalz quits (~michalz@185.246.207.221) (Remote host closed the connection) |
| 21:18:17 | <int-e> | :t take |
| 21:18:18 | <lambdabot> | Int -> [a] -> [a] |
| 21:18:49 | <int-e> | @let {-# LANGUAGE MonoLocalBinds #-} |
| 21:18:50 | <lambdabot> | Defined. |
| 21:19:02 | <int-e> | ...that won't even work, will it |
| 21:19:11 | → | craunts79533538 joins (~craunts@136.158.7.194) |
| 21:19:12 | × | L29Ah quits (~L29Ah@wikipedia/L29Ah) (Read error: Connection timed out) |
| 21:19:18 | <int-e> | % :set -XMonoLocalBinds |
| 21:19:18 | <yahb2> | <interactive>:1:1: error: [GHC-76037] ; Not in scope: ‘Yahb2Defs.limitedPrint’ |
| 21:19:27 | <int-e> | whatever |
| 21:19:36 | <int-e> | > 467443687 * 39463029637 :: Int |
| 21:19:37 | <lambdabot> | 3 |
| 21:22:35 | <monochrom> | I use Integers except for degrees of polynomials. (My polynomials are lists. Then I use length for degree.) |
| 21:23:48 | <monochrom> | Perhaps :seti works better. |
| 21:32:42 | <tomsmeding> | wait what |
| 21:32:45 | <tomsmeding> | % :q |
| 21:32:45 | <yahb2> | <bye> |
| 21:32:48 | <tomsmeding> | % 1 |
| 21:32:48 | <yahb2> | 1 |
| 21:32:52 | <tomsmeding> | % :set -XMonoLocalBinds |
| 21:32:52 | <yahb2> | <no output> |
| 21:32:55 | <tomsmeding> | ok good |
| 21:33:20 | × | inline quits (~inline@2a02:8071:57a1:1260:e9a3:cc45:338f:8e4a) (Read error: Connection reset by peer) |
| 21:35:03 | <int-e> | Oh. Yeah I should've tried that before making wild assumptions about how yahb2 is somehow very different now |
| 21:36:25 | <tomsmeding> | yahb2 does `:set -interactive-print=Yahb2Defs.limitedPrint` where that thing is from a loaded module |
| 21:36:42 | <tomsmeding> | I wouldn't be surprised if you can unload that thing thoroughly enough that printing is just broken |
| 21:37:03 | <int-e> | % :m -Yahb2Defs |
| 21:37:04 | <yahb2> | <no output> |
| 21:37:09 | <tomsmeding> | looking at the logs I don't see anythiung particularly odd, but I dunno |
| 21:37:13 | <tomsmeding> | % 42 |
| 21:37:13 | <yahb2> | 42 |
| 21:37:23 | <int-e> | % :set -XMonoLocalBinds |
| 21:37:23 | <yahb2> | <no output> |
| 21:37:28 | int-e | shrugs |
| 21:37:28 | <tomsmeding> | not having the module in scope does not prevent ghci from resolving explicitly qualified identifiers in it |
| 21:37:41 | <tomsmeding> | % :set -package ghc |
| 21:37:41 | <yahb2> | package flags have changed, resetting and loading new packages... |
| 21:37:44 | <tomsmeding> | % 42 |
| 21:37:44 | <yahb2> | 42 |
| 21:37:46 | <tomsmeding> | hm |
| 21:38:54 | → | inline joins (~inline@2a02:8071:57a1:1260:e9a3:cc45:338f:8e4a) |
| 21:39:38 | <tomsmeding> | % :bro |
| 21:39:38 | <yahb2> | (!!) :: GHC.Internal.Stack.Types.HasCallStack => [a] -> Int -> a ; ($) :: (a -> b) -> a -> b ; ($!) :: (a -> b) -> a -> b ; (&&) :: Bool -> Bool -> Bool ; (++) :: [a] -> [a] -> [a] ; (.) :: (b -> c... |
| 21:39:47 | <int-e> | % :r |
| 21:39:47 | <yahb2> | Oops, something went wrong |
| 21:39:48 | <tomsmeding> | % 42 |
| 21:39:48 | <yahb2> | 42 |
| 21:41:17 | × | DragonMaus quits (~dragonmau@user/dragonmaus) (Ping timeout: 244 seconds) |
| 21:42:03 | → | gmg joins (~user@user/gehmehgeh) |
| 21:43:12 | → | DragonMaus joins (~dragonmau@user/dragonmaus) |
| 21:43:35 | → | merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl) |
| 21:44:20 | <tomsmeding> | ok I dunno what happened, and I'm going to sleep :) |
| 21:45:47 | × | Enrico63 quits (~Enrico63@host-82-59-110-109.retail.telecomitalia.it) (Quit: Client closed) |
| 21:48:45 | × | merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds) |
| 21:57:42 | × | haltsolver quits (~cmo@2604:3d09:207f:8000::d1dc) (Ping timeout: 260 seconds) |
| 21:59:23 | → | merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl) |
| 22:02:38 | × | fp quits (~Thunderbi@2001-14ba-6e24-3000--190.rev.dnainternet.fi) (Quit: fp) |
| 22:03:06 | → | machinedgod joins (~machinedg@d75-159-126-101.abhsia.telus.net) |
| 22:04:01 | × | merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 256 seconds) |
| 22:05:39 | → | Googulator46 joins (~Googulato@2a01-036d-0106-03fa-dc7a-fb6e-71bb-aaf0.pool6.digikabel.hu) |
| 22:05:41 | × | Googulator22 quits (~Googulato@2a01-036d-0106-03fa-dc7a-fb6e-71bb-aaf0.pool6.digikabel.hu) (Quit: Client closed) |
| 22:05:55 | × | craunts79533538 quits (~craunts@136.158.7.194) (Read error: Connection reset by peer) |
| 22:05:57 | → | craunts79533538 joins (~craunts@136.158.7.194) |
| 22:09:06 | × | ystael quits (~ystael@user/ystael) (Ping timeout: 252 seconds) |
| 22:14:46 | → | merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl) |
| 22:19:33 | × | merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds) |
| 22:21:43 | × | sord937 quits (~sord937@gateway/tor-sasl/sord937) (Quit: sord937) |
| 22:23:24 | × | gustrb quits (~gustrb@191.243.134.87) (Ping timeout: 252 seconds) |
| 22:25:43 | × | target_i quits (~target_i@user/target-i/x-6023099) (Quit: leaving) |
| 22:27:49 | × | lambdabot quits (~lambdabot@haskell/bot/lambdabot) (Ping timeout: 256 seconds) |
| 22:29:07 | → | lambdabot joins (~lambdabot@haskell/bot/lambdabot) |
| 22:29:07 | ChanServ | sets mode +v lambdabot |
| 22:29:50 | → | Zemy joins (~Zemy@2600:100c:b012:bef4:7c61:4eff:fe00:6419) |
| 22:30:46 | → | haltsolver joins (~cmo@2604:3d09:207f:8000::d1dc) |
| 22:33:37 | × | mreh quits (~matthew@host86-146-25-125.range86-146.btcentralplus.com) (Ping timeout: 246 seconds) |
| 22:35:28 | × | Pozyomka quits (~pyon@user/pyon) (Read error: Connection reset by peer) |
| 22:37:57 | → | Pozyomka joins (~pyon@user/pyon) |
| 22:40:52 | × | CiaoSen quits (~Jura@2a02:8071:64e1:da0:5a47:caff:fe78:33db) (Ping timeout: 256 seconds) |
| 22:44:35 | <energizer> | could there be a typeclass for scanl? |
| 22:46:20 | → | merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl) |
| 22:49:56 | → | Zemy_ joins (~Zemy@mobile-107-80-206-40.mycingular.net) |
| 22:50:04 | × | Zemy quits (~Zemy@2600:100c:b012:bef4:7c61:4eff:fe00:6419) (Read error: Connection reset by peer) |
| 22:50:25 | → | Zemy joins (~Zemy@2600:100c:b012:bef4:305d:b5ff:feac:8852) |
| 22:53:19 | × | merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 256 seconds) |
| 22:54:12 | × | Zemy_ quits (~Zemy@mobile-107-80-206-40.mycingular.net) (Ping timeout: 252 seconds) |
| 22:54:26 | × | kaskal quits (~kaskal@2a02:8388:1a8b:7d00:da7b:74b4:ea7f:2207) (Quit: ZNC - https://znc.in) |
| 22:54:46 | → | kaskal joins (~kaskal@2a02:8388:1a8b:7d00:7ab8:bbe9:1c71:85ea) |
| 22:56:01 | → | bitdex joins (~bitdex@gateway/tor-sasl/bitdex) |
| 22:56:24 | → | Zemy_ joins (~Zemy@mobile-107-80-206-52.mycingular.net) |
| 22:58:41 | × | ljdarj quits (~Thunderbi@user/ljdarj) (Ping timeout: 244 seconds) |
| 22:59:09 | × | Zemy quits (~Zemy@2600:100c:b012:bef4:305d:b5ff:feac:8852) (Ping timeout: 252 seconds) |
| 23:01:27 | <monochrom> | Tautologically, generalizations always exist. |
| 23:02:03 | <monochrom> | But how many people actually need one? Statistically, almost zero. |
| 23:04:23 | → | merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl) |
| 23:05:58 | → | emmanuelux joins (~emmanuelu@user/emmanuelux) |
| 23:07:13 | → | ttybitnik joins (~ttybitnik@user/wolper) |
| 23:09:20 | <EvanR> | so you're saying there's a chance |
| 23:09:27 | × | merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 260 seconds) |
| 23:09:43 | <EvanR> | isn't the typeclass for stuff like scanl Traversable? |
| 23:09:59 | → | Zemy joins (~Zemy@2600:100c:b012:bef4:c0cf:bbff:fec8:7691) |
| 23:10:28 | → | Core7767 joins (~Zemy@syn-192-198-252-043.biz.spectrum.com) |
| 23:12:01 | × | Zemy_ quits (~Zemy@mobile-107-80-206-52.mycingular.net) (Ping timeout: 256 seconds) |
| 23:13:44 | <geekosaur> | I don't think so? `Traversable` is via `Applicative` (originally it generalized `mapM`), `scanl` is a modified fold without any additional `Applicative` or `Monad` |
| 23:14:14 | → | gustrb joins (~gustrb@191.243.134.87) |
| 23:14:29 | <EvanR> | you right |
| 23:14:42 | × | Zemy quits (~Zemy@2600:100c:b012:bef4:c0cf:bbff:fec8:7691) (Ping timeout: 260 seconds) |
| 23:19:46 | → | Zemy joins (~Zemy@2600:100c:b012:bef4:a8c8:b8ff:fee4:4537) |
| 23:20:10 | → | merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl) |
| 23:20:40 | × | Googulator46 quits (~Googulato@2a01-036d-0106-03fa-dc7a-fb6e-71bb-aaf0.pool6.digikabel.hu) (Quit: Client closed) |
| 23:20:41 | → | Googulator60 joins (~Googulato@2a01-036d-0106-03fa-dc7a-fb6e-71bb-aaf0.pool6.digikabel.hu) |
| 23:21:42 | × | Core7767 quits (~Zemy@syn-192-198-252-043.biz.spectrum.com) (Ping timeout: 252 seconds) |
| 23:25:03 | × | merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 256 seconds) |
| 23:26:10 | → | Sgeo joins (~Sgeo@user/sgeo) |
| 23:32:40 | → | merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl) |
| 23:37:39 | × | merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds) |
| 23:48:13 | → | merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl) |
| 23:51:57 | × | ttybitnik quits (~ttybitnik@user/wolper) (Quit: Fading out...) |
| 23:52:16 | → | Zemy_ joins (~Zemy@mobile-107-80-206-4.mycingular.net) |
| 23:53:23 | × | merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 256 seconds) |
| 23:54:05 | <jackdk> | The `scanl` at `base:Data.List.NonEmpty.scanl` is generalised to consume any `Foldable` |
| 23:54:15 | → | L29Ah joins (~L29Ah@wikipedia/L29Ah) |
| 23:55:58 | → | Core5536 joins (~Zemy@2600:100c:b012:bef4:1c89:39ff:fe81:66ea) |
| 23:56:14 | × | Zemy quits (~Zemy@2600:100c:b012:bef4:a8c8:b8ff:fee4:4537) (Ping timeout: 256 seconds) |
| 23:57:23 | × | synchromesh quits (~john@2406:5a00:2412:2c00:6c29:d20b:9891:7dea) (Read error: Connection reset by peer) |
| 23:58:12 | × | cheater quits (~fuck@user/cheater) (Ping timeout: 244 seconds) |
| 23:58:17 | → | cheater- joins (~fuck@84-115-208-145.cable.dynamic.surfer.at) |
| 23:58:44 | → | synchromesh joins (~john@2406:5a00:2412:2c00:68ee:5421:f441:d3ef) |
| 23:58:47 | → | Zemy joins (~Zemy@76.184.46.188) |
| 23:58:48 | → | Square joins (~Square4@user/square) |
| 23:59:03 | × | Zemy_ quits (~Zemy@mobile-107-80-206-4.mycingular.net) (Ping timeout: 256 seconds) |
All times are in UTC on 2025-10-14.