2025-03-05 00:02:34 +0100 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 260 seconds) |
2025-03-05 00:05:15 +0100 | tabaqui1 | (~root@87.200.129.102) (Ping timeout: 276 seconds) |
2025-03-05 00:06:18 +0100 | messewix | (~jmc@c-73-204-219-232.hsd1.fl.comcast.net) |
2025-03-05 00:06:18 +0100 | messewix | (~jmc@c-73-204-219-232.hsd1.fl.comcast.net) (Changing host) |
2025-03-05 00:06:18 +0100 | messewix | (~jmc@user/messewix) messewix |
2025-03-05 00:11:48 +0100 | preflex | (~preflex@user/mauke/bot/preflex) (Ping timeout: 246 seconds) |
2025-03-05 00:12:19 +0100 | preflex | (~preflex@user/mauke/bot/preflex) preflex |
2025-03-05 00:13:07 +0100 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn |
2025-03-05 00:16:19 +0100 | alfiee | (~alfiee@user/alfiee) alfiee |
2025-03-05 00:17:37 +0100 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds) |
2025-03-05 00:20:32 +0100 | __monty__ | (~toonn@user/toonn) (Quit: leaving) |
2025-03-05 00:20:42 +0100 | alfiee | (~alfiee@user/alfiee) (Ping timeout: 244 seconds) |
2025-03-05 00:26:50 +0100 | vanishingideal | (~vanishing@user/vanishingideal) vanishingideal |
2025-03-05 00:28:29 +0100 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn |
2025-03-05 00:30:13 +0100 | LainExperiments | (~LainExper@user/LainExperiments) LainExperiments |
2025-03-05 00:31:34 +0100 | doyougnu- | (~doyougnu@syn-045-046-170-068.res.spectrum.com) |
2025-03-05 00:32:57 +0100 | doyougnu | (~doyougnu@syn-045-046-170-068.res.spectrum.com) (Ping timeout: 265 seconds) |
2025-03-05 00:33:02 +0100 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds) |
2025-03-05 00:33:55 +0100 | peterbecich | (~Thunderbi@syn-047-229-123-186.res.spectrum.com) (Ping timeout: 265 seconds) |
2025-03-05 00:34:26 +0100 | __jmcantrell__ | (~weechat@user/jmcantrell) jmcantrell |
2025-03-05 00:34:26 +0100 | jmcantrell | Guest3365 |
2025-03-05 00:34:26 +0100 | Guest3365 | (644f1bed9a@user/jmcantrell) (Killed (tantalum.libera.chat (Nickname regained by services))) |
2025-03-05 00:34:26 +0100 | __jmcantrell__ | jmcantrell |
2025-03-05 00:34:36 +0100 | jmcantrell_ | (644f1bed9a@user/jmcantrell) jmcantrell |
2025-03-05 00:43:52 +0100 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn |
2025-03-05 00:44:46 +0100 | Tuplanolla | (~Tuplanoll@91-159-69-59.elisa-laajakaista.fi) Tuplanolla |
2025-03-05 00:46:22 +0100 | Unicorn_Princess | (~Unicorn_P@user/Unicorn-Princess/x-3540542) (Remote host closed the connection) |
2025-03-05 00:48:18 +0100 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 244 seconds) |
2025-03-05 00:57:48 +0100 | shr\ke | (~shrike@user/shrke:31298) (Read error: Connection reset by peer) |
2025-03-05 00:57:57 +0100 | shr\ke | (~shrike@user/paxhumana) paxhumana |
2025-03-05 00:57:57 +0100 | shr\ke | (~shrike@user/paxhumana) (Changing host) |
2025-03-05 00:57:57 +0100 | shr\ke | (~shrike@user/shrke:31298) shr\ke |
2025-03-05 00:59:14 +0100 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn |
2025-03-05 01:03:03 +0100 | alfiee | (~alfiee@user/alfiee) alfiee |
2025-03-05 01:03:49 +0100 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 260 seconds) |
2025-03-05 01:07:19 +0100 | alfiee | (~alfiee@user/alfiee) (Ping timeout: 260 seconds) |
2025-03-05 01:10:16 +0100 | Sgeo | (~Sgeo@user/sgeo) Sgeo |
2025-03-05 01:14:36 +0100 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn |
2025-03-05 01:16:21 +0100 | cyphase | (~cyphase@user/cyphase) (Ping timeout: 248 seconds) |
2025-03-05 01:19:14 +0100 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds) |
2025-03-05 01:26:22 +0100 | peterbecich | (~Thunderbi@syn-047-229-123-186.res.spectrum.com) peterbecich |
2025-03-05 01:29:59 +0100 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn |
2025-03-05 01:34:37 +0100 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds) |
2025-03-05 01:39:11 +0100 | machinedgod | (~machinedg@d108-173-18-100.abhsia.telus.net) machinedgod |
2025-03-05 01:39:22 +0100 | <jle`> | does anyone know how duped TChans get GC'd? AFAICT from looking at the source (https://hackage.haskell.org/package/stm-2.5.3.1/docs/src/Control.Concurrent.STM.TChan.html#dupTChan) it adds the new reader hole to the shared write list, but when that new TChan gets GC'd doesn't the unused hole remain in the list? |
2025-03-05 01:39:55 +0100 | <jle`> | but simon states that the TChan does clean up itself (https://github.com/haskell/stm/issues/21) |
2025-03-05 01:40:10 +0100 | LainExperiments | (~LainExper@user/LainExperiments) (Ping timeout: 240 seconds) |
2025-03-05 01:40:38 +0100 | <jle`> | or maybe i am misunderstanding what 'write' is used for |
2025-03-05 01:45:21 +0100 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn |
2025-03-05 01:46:34 +0100 | xff0x | (~xff0x@2405:6580:b080:900:9c0d:a18a:824d:47d5) (Ping timeout: 260 seconds) |
2025-03-05 01:48:09 +0100 | sprotte24 | (~sprotte24@p200300d16f1cc100391369cbcf60a0c3.dip0.t-ipconnect.de) (Quit: Leaving) |
2025-03-05 01:48:09 +0100 | acidjnk_new | (~acidjnk@p200300d6e7283f62f42219c1fddec46c.dip0.t-ipconnect.de) (Ping timeout: 268 seconds) |
2025-03-05 01:49:47 +0100 | alfiee | (~alfiee@user/alfiee) alfiee |
2025-03-05 01:50:17 +0100 | yegorc | (~yegorc@user/yegorc) (Leaving) |
2025-03-05 01:50:23 +0100 | LainExperiments | (~LainExper@user/LainExperiments) LainExperiments |
2025-03-05 01:50:33 +0100 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 276 seconds) |
2025-03-05 01:52:43 +0100 | <jle`> | oh okay the write hole doesn't reference the duped chans, maybe that's it |
2025-03-05 01:54:04 +0100 | alfiee | (~alfiee@user/alfiee) (Ping timeout: 252 seconds) |
2025-03-05 01:55:14 +0100 | <jle`> | okay so i think the implementation is basically that each of the readers are climbing up a tvar-linked list essentially, so if one of the readers gets GC'd then it'd just stop reading the list and everytthing upstream of the remaining readers gets gc'd |
2025-03-05 02:00:44 +0100 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn |
2025-03-05 02:01:33 +0100 | myxos | (~myxos@syn-065-028-251-121.res.spectrum.com) myxokephale |
2025-03-05 02:05:04 +0100 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds) |
2025-03-05 02:16:05 +0100 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn |
2025-03-05 02:23:18 +0100 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 268 seconds) |
2025-03-05 02:23:18 +0100 | peterbecich | (~Thunderbi@syn-047-229-123-186.res.spectrum.com) (Ping timeout: 268 seconds) |
2025-03-05 02:33:06 +0100 | j1n37 | (~j1n37@user/j1n37) j1n37 |
2025-03-05 02:34:09 +0100 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn |
2025-03-05 02:35:03 +0100 | poscat | (~poscat@user/poscat) (Ping timeout: 252 seconds) |
2025-03-05 02:35:16 +0100 | cyphase | (~cyphase@user/cyphase) cyphase |
2025-03-05 02:35:51 +0100 | alfiee | (~alfiee@user/alfiee) alfiee |
2025-03-05 02:39:06 +0100 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 265 seconds) |
2025-03-05 02:39:30 +0100 | cyphase | (~cyphase@user/cyphase) (Ping timeout: 248 seconds) |
2025-03-05 02:39:56 +0100 | poscat | (~poscat@user/poscat) poscat |
2025-03-05 02:40:33 +0100 | alfiee | (~alfiee@user/alfiee) (Ping timeout: 265 seconds) |
2025-03-05 02:46:51 +0100 | xff0x | (~xff0x@fsb6a9491c.tkyc517.ap.nuro.jp) |
2025-03-05 02:47:13 +0100 | machinedgod | (~machinedg@d108-173-18-100.abhsia.telus.net) (Ping timeout: 252 seconds) |
2025-03-05 02:49:32 +0100 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn |
2025-03-05 02:51:23 +0100 | LainExperiments | (~LainExper@user/LainExperiments) (Quit: Client closed) |
2025-03-05 02:53:50 +0100 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds) |
2025-03-05 02:54:03 +0100 | fp | (~Thunderbi@89-27-29-68.bb.dnainternet.fi) fp |
2025-03-05 02:54:16 +0100 | Tuplanolla | (~Tuplanoll@91-159-69-59.elisa-laajakaista.fi) (Quit: Leaving.) |
2025-03-05 03:00:39 +0100 | fp | (~Thunderbi@89-27-29-68.bb.dnainternet.fi) (Ping timeout: 260 seconds) |
2025-03-05 03:04:55 +0100 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn |
2025-03-05 03:09:08 +0100 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 244 seconds) |
2025-03-05 03:20:17 +0100 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn |
2025-03-05 03:21:36 +0100 | alfiee | (~alfiee@user/alfiee) alfiee |
2025-03-05 03:24:14 +0100 | euphores | (~SASL_euph@user/euphores) (Read error: Connection reset by peer) |
2025-03-05 03:24:37 +0100 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds) |
2025-03-05 03:25:48 +0100 | alfiee | (~alfiee@user/alfiee) (Ping timeout: 245 seconds) |
2025-03-05 03:32:20 +0100 | euphores | (~SASL_euph@user/euphores) euphores |
2025-03-05 03:32:21 +0100 | notdabs | (~Owner@2600:1700:69cf:9000:3d02:fb32:31ee:6acc) (Read error: Connection reset by peer) |
2025-03-05 03:32:27 +0100 | ljdarj | (~Thunderbi@user/ljdarj) (Quit: ljdarj) |
2025-03-05 03:34:25 +0100 | hexreel | (~hexreel@user/hexreel) hexreel |
2025-03-05 03:35:40 +0100 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn |
2025-03-05 03:40:21 +0100 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 248 seconds) |
2025-03-05 03:42:13 +0100 | hexreel | (~hexreel@user/hexreel) () |
2025-03-05 03:51:02 +0100 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn |
2025-03-05 03:51:29 +0100 | Square | (~Square@user/square) Square |
2025-03-05 03:55:20 +0100 | Square2 | (~Square4@user/square) (Ping timeout: 244 seconds) |
2025-03-05 03:55:21 +0100 | LainExperiments | (~LainExper@user/LainExperiments) LainExperiments |
2025-03-05 03:56:04 +0100 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 260 seconds) |
2025-03-05 04:05:40 +0100 | LainExperiments | (~LainExper@user/LainExperiments) (Ping timeout: 240 seconds) |
2025-03-05 04:06:11 +0100 | tromp | (~textual@2a02:a210:cba:8500:4189:9487:9abd:f78) (Ping timeout: 244 seconds) |
2025-03-05 04:06:36 +0100 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn |
2025-03-05 04:07:29 +0100 | tavare | (~tavare@150.129.88.189) tavare |
2025-03-05 04:07:29 +0100 | tavare | (~tavare@150.129.88.189) (Changing host) |
2025-03-05 04:07:29 +0100 | tavare | (~tavare@user/tavare) tavare |
2025-03-05 04:07:40 +0100 | alfiee | (~alfiee@user/alfiee) alfiee |
2025-03-05 04:07:58 +0100 | anjii | (~user@177.47.220.78) (Quit: goodnight) |
2025-03-05 04:11:08 +0100 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 244 seconds) |
2025-03-05 04:12:12 +0100 | alfiee | (~alfiee@user/alfiee) (Ping timeout: 272 seconds) |
2025-03-05 04:16:51 +0100 | cyphase | (~cyphase@user/cyphase) cyphase |
2025-03-05 04:21:59 +0100 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn |
2025-03-05 04:23:41 +0100 | peterbecich | (~Thunderbi@syn-047-229-123-186.res.spectrum.com) peterbecich |
2025-03-05 04:26:20 +0100 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 244 seconds) |
2025-03-05 04:27:24 +0100 | tavare | (~tavare@user/tavare) (Ping timeout: 272 seconds) |
2025-03-05 04:28:29 +0100 | _xor | (~xor@ip-66-42-132-175.dynamic.fuse.net) (Read error: Connection reset by peer) |
2025-03-05 04:28:47 +0100 | tavare | (~tavare@user/tavare) tavare |
2025-03-05 04:31:14 +0100 | ystael | (~ystael@user/ystael) (Ping timeout: 265 seconds) |
2025-03-05 04:34:03 +0100 | _xor | (~xor@ip-66-42-132-175.dynamic.fuse.net) _xor |
2025-03-05 04:37:20 +0100 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn |
2025-03-05 04:41:59 +0100 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds) |
2025-03-05 04:43:47 +0100 | ljdarj | (~Thunderbi@user/ljdarj) ljdarj |
2025-03-05 04:45:32 +0100 | bitdex | (~bitdex@gateway/tor-sasl/bitdex) bitdex |
2025-03-05 04:47:48 +0100 | bilegeek | (~bilegeek@108.sub-174-228-98.myvzw.com) bilegeek |
2025-03-05 04:49:02 +0100 | ystael | (~ystael@user/ystael) ystael |
2025-03-05 04:52:44 +0100 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn |
2025-03-05 04:53:24 +0100 | alfiee | (~alfiee@user/alfiee) alfiee |
2025-03-05 04:54:44 +0100 | messewix | (~jmc@user/messewix) (Quit: Konversation terminated!) |
2025-03-05 04:54:49 +0100 | ystael | (~ystael@user/ystael) (Ping timeout: 260 seconds) |
2025-03-05 04:57:44 +0100 | alfiee | (~alfiee@user/alfiee) (Ping timeout: 260 seconds) |
2025-03-05 04:59:11 +0100 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 244 seconds) |
2025-03-05 05:03:16 +0100 | peterbecich | (~Thunderbi@syn-047-229-123-186.res.spectrum.com) (Ping timeout: 252 seconds) |
2025-03-05 05:04:06 +0100 | ljdarj | (~Thunderbi@user/ljdarj) (Ping timeout: 265 seconds) |
2025-03-05 05:10:47 +0100 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn |
2025-03-05 05:15:17 +0100 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 248 seconds) |
2025-03-05 05:26:09 +0100 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn |
2025-03-05 05:30:46 +0100 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds) |
2025-03-05 05:39:08 +0100 | alfiee | (~alfiee@user/alfiee) alfiee |
2025-03-05 05:41:32 +0100 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn |
2025-03-05 05:43:36 +0100 | alfiee | (~alfiee@user/alfiee) (Ping timeout: 252 seconds) |
2025-03-05 05:45:48 +0100 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 245 seconds) |
2025-03-05 05:47:48 +0100 | Guest42 | (~Guest42@220-233-36-23.ip4.exetel.com.au) |
2025-03-05 05:50:20 +0100 | aforemny | (~aforemny@i577BEE31.versanet.de) (Ping timeout: 244 seconds) |
2025-03-05 05:51:18 +0100 | aforemny | (~aforemny@2001:9e8:6ce5:d00:19b4:f9fd:f481:8f07) aforemny |
2025-03-05 05:53:13 +0100 | Guest42 | (~Guest42@220-233-36-23.ip4.exetel.com.au) (Quit: Client closed) |
2025-03-05 05:56:55 +0100 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn |
2025-03-05 06:01:12 +0100 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds) |
2025-03-05 06:01:14 +0100 | j1n37 | (~j1n37@user/j1n37) (Read error: Connection reset by peer) |
2025-03-05 06:04:33 +0100 | j1n37 | (~j1n37@user/j1n37) j1n37 |
2025-03-05 06:06:22 +0100 | j1n37 | (~j1n37@user/j1n37) (Read error: Connection reset by peer) |
2025-03-05 06:07:11 +0100 | j1n37 | (~j1n37@user/j1n37) j1n37 |
2025-03-05 06:07:45 +0100 | hgolden | (~hgolden@2603:8000:9d00:3ed1:6ff3:8389:b901:6363) (Remote host closed the connection) |
2025-03-05 06:08:41 +0100 | j1n37 | (~j1n37@user/j1n37) (Read error: Connection reset by peer) |
2025-03-05 06:10:12 +0100 | hgolden | (~hgolden@2603:8000:9d00:3ed1:6ff3:8389:b901:6363) hgolden |
2025-03-05 06:12:17 +0100 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn |
2025-03-05 06:12:52 +0100 | j1n37 | (~j1n37@user/j1n37) j1n37 |
2025-03-05 06:14:38 +0100 | j1n37 | (~j1n37@user/j1n37) (Read error: Connection reset by peer) |
2025-03-05 06:16:35 +0100 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds) |
2025-03-05 06:17:44 +0100 | j1n37 | (~j1n37@user/j1n37) j1n37 |
2025-03-05 06:18:47 +0100 | j1n37 | (~j1n37@user/j1n37) (Read error: Connection reset by peer) |
2025-03-05 06:23:22 +0100 | j1n37 | (~j1n37@user/j1n37) j1n37 |
2025-03-05 06:26:12 +0100 | alfiee | (~alfiee@user/alfiee) alfiee |
2025-03-05 06:27:39 +0100 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn |
2025-03-05 06:28:25 +0100 | jmcantrell | (~weechat@user/jmcantrell) (Quit: WeeChat 4.5.2) |
2025-03-05 06:28:27 +0100 | jmcantrell_ | jmcantrell |
2025-03-05 06:30:38 +0100 | alfiee | (~alfiee@user/alfiee) (Ping timeout: 244 seconds) |
2025-03-05 06:32:22 +0100 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds) |
2025-03-05 06:35:06 +0100 | peterbecich | (~Thunderbi@syn-047-229-123-186.res.spectrum.com) peterbecich |
2025-03-05 06:38:17 +0100 | Square2 | (~Square4@user/square) Square |
2025-03-05 06:39:23 +0100 | michalz | (~michalz@185.246.207.222) |
2025-03-05 06:40:07 +0100 | tavare | (~tavare@user/tavare) (Remote host closed the connection) |
2025-03-05 06:41:02 +0100 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn |
2025-03-05 06:41:45 +0100 | Square | (~Square@user/square) (Ping timeout: 276 seconds) |
2025-03-05 06:45:25 +0100 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 248 seconds) |
2025-03-05 06:47:39 +0100 | takuan | (~takuan@d8D86B601.access.telenet.be) |
2025-03-05 06:56:26 +0100 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn |
2025-03-05 07:00:08 +0100 | vanishingideal | (~vanishing@user/vanishingideal) (Remote host closed the connection) |
2025-03-05 07:00:49 +0100 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 248 seconds) |
2025-03-05 07:11:49 +0100 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn |
2025-03-05 07:11:55 +0100 | alfiee | (~alfiee@user/alfiee) alfiee |
2025-03-05 07:16:11 +0100 | <c_wraith> | anyone know why hsc2hs would be genrating blank files on windows? |
2025-03-05 07:16:19 +0100 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 244 seconds) |
2025-03-05 07:16:22 +0100 | alfiee | (~alfiee@user/alfiee) (Ping timeout: 252 seconds) |
2025-03-05 07:21:52 +0100 | <c_wraith> | or even where to find its log when run by cabal? |
2025-03-05 07:22:49 +0100 | vanishingideal | (~vanishing@user/vanishingideal) vanishingideal |
2025-03-05 07:26:15 +0100 | bilegeek | (~bilegeek@108.sub-174-228-98.myvzw.com) (Quit: Leaving) |
2025-03-05 07:27:12 +0100 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn |
2025-03-05 07:32:15 +0100 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 268 seconds) |
2025-03-05 07:32:48 +0100 | ljdarj | (~Thunderbi@user/ljdarj) ljdarj |
2025-03-05 07:42:35 +0100 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn |
2025-03-05 07:45:37 +0100 | CiaoSen | (~Jura@2a02:8071:64e1:7180:4e50:ddff:fe9b:8922) CiaoSen |
2025-03-05 07:49:10 +0100 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 244 seconds) |
2025-03-05 07:51:59 +0100 | peterbecich | (~Thunderbi@syn-047-229-123-186.res.spectrum.com) (Ping timeout: 268 seconds) |
2025-03-05 07:57:59 +0100 | alfiee | (~alfiee@user/alfiee) alfiee |
2025-03-05 08:00:37 +0100 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn |
2025-03-05 08:03:00 +0100 | alfiee | (~alfiee@user/alfiee) (Ping timeout: 276 seconds) |
2025-03-05 08:05:36 +0100 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 276 seconds) |
2025-03-05 08:11:22 +0100 | Lord_of_Life | (~Lord@user/lord-of-life/x-2819915) (Ping timeout: 252 seconds) |
2025-03-05 08:11:38 +0100 | sam113101 | (~sam@modemcable220.199-203-24.mc.videotron.ca) (Ping timeout: 265 seconds) |
2025-03-05 08:12:09 +0100 | <kilolympus> | c_wraith, are you able to run e.g. cabal exec -- hsc2hs ? |
2025-03-05 08:12:16 +0100 | <kilolympus> | maybe that can help debug stuff |
2025-03-05 08:12:20 +0100 | Lord_of_Life | (~Lord@user/lord-of-life/x-2819915) Lord_of_Life |
2025-03-05 08:15:59 +0100 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn |
2025-03-05 08:20:10 +0100 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 244 seconds) |
2025-03-05 08:20:54 +0100 | ljdarj | (~Thunderbi@user/ljdarj) (Ping timeout: 260 seconds) |
2025-03-05 08:26:13 +0100 | CiaoSen | (~Jura@2a02:8071:64e1:7180:4e50:ddff:fe9b:8922) (Ping timeout: 248 seconds) |
2025-03-05 08:28:00 +0100 | CiaoSen | (~Jura@ip-037-201-240-075.um10.pools.vodafone-ip.de) CiaoSen |
2025-03-05 08:30:02 +0100 | sam113101 | (~sam@modemcable220.199-203-24.mc.videotron.ca) sam113101 |
2025-03-05 08:31:22 +0100 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn |
2025-03-05 08:33:44 +0100 | sord937 | (~sord937@gateway/tor-sasl/sord937) sord937 |
2025-03-05 08:35:53 +0100 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 244 seconds) |
2025-03-05 08:38:51 +0100 | vanishingideal | (~vanishing@user/vanishingideal) (Ping timeout: 252 seconds) |
2025-03-05 08:40:50 +0100 | vanishingideal | (~vanishing@user/vanishingideal) vanishingideal |
2025-03-05 08:42:01 +0100 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn |
2025-03-05 08:43:24 +0100 | alfiee | (~alfiee@user/alfiee) alfiee |
2025-03-05 08:46:51 +0100 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds) |
2025-03-05 08:48:06 +0100 | alfiee | (~alfiee@user/alfiee) (Ping timeout: 268 seconds) |
2025-03-05 08:51:00 +0100 | Sgeo | (~Sgeo@user/sgeo) (Read error: Connection reset by peer) |
2025-03-05 08:51:41 +0100 | j1n37 | (~j1n37@user/j1n37) (Ping timeout: 244 seconds) |
2025-03-05 08:52:40 +0100 | j1n37 | (~j1n37@user/j1n37) j1n37 |
2025-03-05 08:53:34 +0100 | ft | (~ft@p3e9bc68d.dip0.t-ipconnect.de) (Quit: leaving) |
2025-03-05 08:54:27 +0100 | zungi | (~tory@user/andrewchawk) (Remote host closed the connection) |
2025-03-05 08:56:09 +0100 | zungi | (~tory@user/andrewchawk) andrewchawk |
2025-03-05 08:57:24 +0100 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn |
2025-03-05 09:00:00 +0100 | caconym | (~caconym@user/caconym) (Quit: bye) |
2025-03-05 09:00:53 +0100 | caconym | (~caconym@user/caconym) caconym |
2025-03-05 09:01:58 +0100 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds) |
2025-03-05 09:10:51 +0100 | weary-traveler | (~user@user/user363627) (Remote host closed the connection) |
2025-03-05 09:22:17 +0100 | zmt01 | (~zmt00@user/zmt00) zmt00 |
2025-03-05 09:22:38 +0100 | evgeny | (~Shaeto@94.25.234.254) |
2025-03-05 09:24:29 +0100 | zmt00 | (~zmt00@user/zmt00) (Ping timeout: 268 seconds) |
2025-03-05 09:30:08 +0100 | alfiee | (~alfiee@user/alfiee) alfiee |
2025-03-05 09:34:33 +0100 | alfiee | (~alfiee@user/alfiee) (Ping timeout: 245 seconds) |
2025-03-05 09:40:17 +0100 | merijn | (~merijn@77.242.116.146) merijn |
2025-03-05 09:41:07 +0100 | kmein | (~weechat@user/kmein) (Quit: ciao kakao) |
2025-03-05 09:43:11 +0100 | kmein | (~weechat@user/kmein) kmein |
2025-03-05 09:44:05 +0100 | CiaoSen | (~Jura@ip-037-201-240-075.um10.pools.vodafone-ip.de) (Ping timeout: 244 seconds) |
2025-03-05 09:45:59 +0100 | Unicorn_Princess | (~Unicorn_P@user/Unicorn-Princess/x-3540542) Unicorn_Princess |
2025-03-05 09:46:08 +0100 | CiaoSen | (~Jura@2a02:8071:64e1:7180:4e50:ddff:fe9b:8922) CiaoSen |
2025-03-05 09:55:41 +0100 | Smiles | (uid551636@id-551636.lymington.irccloud.com) Smiles |
2025-03-05 09:56:31 +0100 | machinedgod | (~machinedg@d108-173-18-100.abhsia.telus.net) machinedgod |
2025-03-05 10:11:15 +0100 | merijn | (~merijn@77.242.116.146) (Ping timeout: 244 seconds) |
2025-03-05 10:12:08 +0100 | acidjnk_new | (~acidjnk@p200300d6e7283f53f42219c1fddec46c.dip0.t-ipconnect.de) acidjnk |
2025-03-05 10:15:34 +0100 | merijn | (~merijn@77.242.116.146) merijn |
2025-03-05 10:16:33 +0100 | alfiee | (~alfiee@user/alfiee) alfiee |
2025-03-05 10:20:33 +0100 | alfiee | (~alfiee@user/alfiee) (Ping timeout: 244 seconds) |
2025-03-05 10:20:48 +0100 | merijn | (~merijn@77.242.116.146) (Ping timeout: 272 seconds) |
2025-03-05 10:22:25 +0100 | mceresa | (~mceresa@user/mceresa) (Ping timeout: 248 seconds) |
2025-03-05 10:22:35 +0100 | mceresa | (~mceresa@user/mceresa) mceresa |
2025-03-05 10:29:50 +0100 | merijn | (~merijn@77.242.116.146) merijn |
2025-03-05 10:35:51 +0100 | kuribas | (~user@ip-188-118-57-242.reverse.destiny.be) kuribas |
2025-03-05 10:36:39 +0100 | tzh | (~tzh@c-76-115-131-146.hsd1.or.comcast.net) (Quit: zzz) |
2025-03-05 10:40:23 +0100 | merijn | (~merijn@77.242.116.146) (Ping timeout: 245 seconds) |
2025-03-05 10:41:17 +0100 | __monty__ | (~toonn@user/toonn) toonn |
2025-03-05 10:44:17 +0100 | yuuta | (~YuutaW@2404:f4c0:f9c3:502::100:17b7) (Ping timeout: 248 seconds) |
2025-03-05 10:45:27 +0100 | chele | (~chele@user/chele) chele |
2025-03-05 10:47:35 +0100 | YuutaW | (~YuutaW@2404:f4c0:f9c3:502::100:17b7) YuutaW |
2025-03-05 10:50:03 +0100 | xff0x | (~xff0x@fsb6a9491c.tkyc517.ap.nuro.jp) (Ping timeout: 252 seconds) |
2025-03-05 10:53:47 +0100 | merijn | (~merijn@77.242.116.146) merijn |
2025-03-05 11:02:16 +0100 | alfiee | (~alfiee@user/alfiee) alfiee |
2025-03-05 11:03:36 +0100 | tabaqui1 | (~root@87.200.129.102) tabaqui |
2025-03-05 11:03:50 +0100 | gmg | (~user@user/gehmehgeh) (Remote host closed the connection) |
2025-03-05 11:06:38 +0100 | alfiee | (~alfiee@user/alfiee) (Ping timeout: 252 seconds) |
2025-03-05 11:18:23 +0100 | Digitteknohippie | (~user@user/digit) Digit |
2025-03-05 11:19:28 +0100 | Digit | (~user@user/digit) (Ping timeout: 252 seconds) |
2025-03-05 11:22:22 +0100 | anpad | (~pandeyan@user/anpad) (Quit: ZNC 1.8.2 - https://znc.in) |
2025-03-05 11:22:33 +0100 | merijn | (~merijn@77.242.116.146) (Ping timeout: 244 seconds) |
2025-03-05 11:23:30 +0100 | Digitteknohippie | (~user@user/digit) (Ping timeout: 272 seconds) |
2025-03-05 11:23:47 +0100 | anpad | (~pandeyan@user/anpad) anpad |
2025-03-05 11:24:44 +0100 | econo_ | (uid147250@id-147250.tinside.irccloud.com) (Quit: Connection closed for inactivity) |
2025-03-05 11:32:50 +0100 | Unicorn_Princess | (~Unicorn_P@user/Unicorn-Princess/x-3540542) (Remote host closed the connection) |
2025-03-05 11:33:39 +0100 | cyphase | (~cyphase@user/cyphase) (Remote host closed the connection) |
2025-03-05 11:34:48 +0100 | euouae | (~euouae@user/euouae) euouae |
2025-03-05 11:35:01 +0100 | <euouae> | Hello, what does `class (Stream s, MonadPlus m) => MonadParsec e s m | m -> e s where ` mean? In particular the | character there. |
2025-03-05 11:35:15 +0100 | merijn | (~merijn@77.242.116.146) merijn |
2025-03-05 11:35:24 +0100 | <tomsmeding> | euouae: https://downloads.haskell.org/ghc/latest/docs/users_guide/exts/functional_dependencies.html#extens… |
2025-03-05 11:40:00 +0100 | merijn | (~merijn@77.242.116.146) (Ping timeout: 252 seconds) |
2025-03-05 11:41:26 +0100 | cyphase | (~cyphase@user/cyphase) cyphase |
2025-03-05 11:42:18 +0100 | ubert | (~Thunderbi@2a02:8109:ab8a:5a00:42eb:c7e6:6d02:7a65) ubert |
2025-03-05 11:42:19 +0100 | euouae | (~euouae@user/euouae) (Read error: Connection reset by peer) |
2025-03-05 11:42:57 +0100 | Square2 | (~Square4@user/square) (Remote host closed the connection) |
2025-03-05 11:43:33 +0100 | Square2 | (~Square4@user/square) Square |
2025-03-05 11:45:19 +0100 | euouae | (~euouae@user/euouae) euouae |
2025-03-05 11:45:32 +0100 | xff0x | (~xff0x@2405:6580:b080:900:65a4:3374:7c1f:492b) |
2025-03-05 11:46:28 +0100 | <euouae> | It seems that functional dependencies are hints to the type system? |
2025-03-05 11:47:10 +0100 | <euouae> | and perhaps constraint in terms of what new instances can be added |
2025-03-05 11:47:44 +0100 | <euouae> | so in the case of MonadParsec, e,s are uniquely determined by m? |
2025-03-05 11:48:08 +0100 | cyphase | (~cyphase@user/cyphase) (Quit: cyphase.com) |
2025-03-05 11:49:00 +0100 | alfiee | (~alfiee@user/alfiee) alfiee |
2025-03-05 11:49:13 +0100 | <mauke> | yes |
2025-03-05 11:49:21 +0100 | merijn | (~merijn@77.242.116.146) merijn |
2025-03-05 11:50:35 +0100 | <euouae> | great thank you |
2025-03-05 11:51:42 +0100 | Square2 | (~Square4@user/square) (Ping timeout: 244 seconds) |
2025-03-05 11:53:39 +0100 | alfiee | (~alfiee@user/alfiee) (Ping timeout: 260 seconds) |
2025-03-05 11:54:11 +0100 | cyphase | (~cyphase@user/cyphase) cyphase |
2025-03-05 12:03:52 +0100 | cyphase | (~cyphase@user/cyphase) (Quit: cyphase.com) |
2025-03-05 12:05:26 +0100 | Digit | (~user@user/digit) Digit |
2025-03-05 12:06:39 +0100 | Digit | (~user@user/digit) (Remote host closed the connection) |
2025-03-05 12:06:57 +0100 | xff0x | (~xff0x@2405:6580:b080:900:65a4:3374:7c1f:492b) (Ping timeout: 248 seconds) |
2025-03-05 12:07:51 +0100 | cyphase | (~cyphase@user/cyphase) cyphase |
2025-03-05 12:08:59 +0100 | CiaoSen | (~Jura@2a02:8071:64e1:7180:4e50:ddff:fe9b:8922) (Ping timeout: 260 seconds) |
2025-03-05 12:09:21 +0100 | merijn | (~merijn@77.242.116.146) (Ping timeout: 276 seconds) |
2025-03-05 12:09:33 +0100 | CiaoSen | (~Jura@ip-037-201-240-075.um10.pools.vodafone-ip.de) CiaoSen |
2025-03-05 12:09:39 +0100 | digitteknohippie | (~user@user/digit) Digit |
2025-03-05 12:11:14 +0100 | zmt01 | (~zmt00@user/zmt00) (Ping timeout: 248 seconds) |
2025-03-05 12:11:44 +0100 | cyphase | (~cyphase@user/cyphase) (Client Quit) |
2025-03-05 12:13:28 +0100 | digitteknohippie | Digit |
2025-03-05 12:14:25 +0100 | cyphase | (~cyphase@user/cyphase) cyphase |
2025-03-05 12:15:26 +0100 | cyphase | (~cyphase@user/cyphase) (Client Quit) |
2025-03-05 12:20:29 +0100 | cyphase | (~cyphase@user/cyphase) cyphase |
2025-03-05 12:21:25 +0100 | cyphase | (~cyphase@user/cyphase) (Client Quit) |
2025-03-05 12:21:47 +0100 | iteratee_ | (~kyle@162.218.222.207) |
2025-03-05 12:22:25 +0100 | iteratee | (~kyle@162.218.222.207) (Read error: Connection reset by peer) |
2025-03-05 12:25:12 +0100 | cyphase | (~cyphase@user/cyphase) cyphase |
2025-03-05 12:26:45 +0100 | califax_ | (~califax@user/califx) califx |
2025-03-05 12:27:12 +0100 | califax | (~califax@user/califx) (Ping timeout: 264 seconds) |
2025-03-05 12:27:59 +0100 | califax_ | califax |
2025-03-05 12:31:19 +0100 | merijn | (~merijn@77.242.116.146) merijn |
2025-03-05 12:32:48 +0100 | cyphase | (~cyphase@user/cyphase) (Quit: cyphase.com) |
2025-03-05 12:34:24 +0100 | alfiee | (~alfiee@user/alfiee) alfiee |
2025-03-05 12:38:52 +0100 | alfiee | (~alfiee@user/alfiee) (Ping timeout: 272 seconds) |
2025-03-05 12:39:09 +0100 | cyphase | (~cyphase@user/cyphase) cyphase |
2025-03-05 12:47:40 +0100 | absence_ | absence |
2025-03-05 12:49:28 +0100 | fp | (~Thunderbi@89-27-29-68.bb.dnainternet.fi) fp |
2025-03-05 12:55:33 +0100 | CiaoSen | (~Jura@ip-037-201-240-075.um10.pools.vodafone-ip.de) (Ping timeout: 244 seconds) |
2025-03-05 13:09:09 +0100 | xff0x | (~xff0x@2405:6580:b080:900:1bc3:e66f:477:1057) |
2025-03-05 13:17:29 +0100 | ystael | (~ystael@user/ystael) ystael |
2025-03-05 13:20:29 +0100 | alfiee | (~alfiee@user/alfiee) alfiee |
2025-03-05 13:23:22 +0100 | Googulator | (~Googulato@80-95-93-248.pool.digikabel.hu) (Quit: Client closed) |
2025-03-05 13:23:54 +0100 | Googulator | (~Googulato@80-95-93-248.pool.digikabel.hu) |
2025-03-05 13:24:36 +0100 | alfiee | (~alfiee@user/alfiee) (Ping timeout: 252 seconds) |
2025-03-05 13:30:32 +0100 | hughjfchen | (~hughjfche@vmi2417424.contaboserver.net) (Ping timeout: 268 seconds) |
2025-03-05 13:32:12 +0100 | jespada | (~jespada@2800:a4:22da:e400:b167:8181:c13f:cb54) jespada |
2025-03-05 13:46:13 +0100 | eL_Bart0 | (eL_Bart0@dietunichtguten.org) (Ping timeout: 245 seconds) |
2025-03-05 14:02:28 +0100 | gentauro | (~gentauro@user/gentauro) (Ping timeout: 272 seconds) |
2025-03-05 14:02:43 +0100 | gentauro | (~gentauro@user/gentauro) gentauro |
2025-03-05 14:03:07 +0100 | Square2 | (~Square4@user/square) Square |
2025-03-05 14:04:15 +0100 | mange | (~user@user/mange) (Quit: Zzz...) |
2025-03-05 14:06:53 +0100 | alfiee | (~alfiee@user/alfiee) alfiee |
2025-03-05 14:09:51 +0100 | zmt00 | (~zmt00@user/zmt00) zmt00 |
2025-03-05 14:11:04 +0100 | forell_ | (~forell@host-178-216-90-220.sta.tvknaszapraca.pl) |
2025-03-05 14:11:19 +0100 | alfiee | (~alfiee@user/alfiee) (Ping timeout: 260 seconds) |
2025-03-05 14:11:26 +0100 | forell | (~forell@user/forell) (Ping timeout: 252 seconds) |
2025-03-05 14:22:03 +0100 | fp | (~Thunderbi@89-27-29-68.bb.dnainternet.fi) (Ping timeout: 245 seconds) |
2025-03-05 14:35:33 +0100 | Googulator | (~Googulato@80-95-93-248.pool.digikabel.hu) (Quit: Client closed) |
2025-03-05 14:35:58 +0100 | Googulator | (~Googulato@2a01-036d-0106-14b2-c443-5a96-b49d-1dd5.pool6.digikabel.hu) |
2025-03-05 14:36:24 +0100 | evgeny | (~Shaeto@94.25.234.254) (Ping timeout: 260 seconds) |
2025-03-05 14:38:03 +0100 | evgeny | (~Shaeto@94.25.234.181) |
2025-03-05 14:38:06 +0100 | pavonia | (~user@user/siracusa) (Quit: Bye!) |
2025-03-05 14:42:12 +0100 | zungi | (~tory@user/andrewchawk) (Ping timeout: 264 seconds) |
2025-03-05 14:47:21 +0100 | zungi | (~tory@user/andrewchawk) andrewchawk |
2025-03-05 14:52:18 +0100 | alfiee | (~alfiee@user/alfiee) alfiee |
2025-03-05 14:56:40 +0100 | alfiee | (~alfiee@user/alfiee) (Ping timeout: 244 seconds) |
2025-03-05 14:57:12 +0100 | bitdex | (~bitdex@gateway/tor-sasl/bitdex) (Ping timeout: 264 seconds) |
2025-03-05 15:02:36 +0100 | ChaiTRex | (~ChaiTRex@user/chaitrex) (Ping timeout: 264 seconds) |
2025-03-05 15:08:15 +0100 | <euouae> | I have just been studying the Reader (and will soon study the ReaderT too) monad. I know it's defined through ReaderT, but could I just define it as function composition (from left with `withReader` and from right with `mapReader`)? |
2025-03-05 15:08:47 +0100 | <euouae> | I think I've seen this pattern before in the lexical environment, where a lexical environment E : V -> R is just an evaluation map from the variables to their values. |
2025-03-05 15:08:51 +0100 | <tomsmeding> | of course, you can also define Reader directly as `newtype Reader r a = Reader (r -> a)` |
2025-03-05 15:09:18 +0100 | <euouae> | Oh, that's slick right |
2025-03-05 15:09:43 +0100 | <euouae> | so when people say the reader monad is useful, do they mean ReaderT? |
2025-03-05 15:09:47 +0100 | <euouae> | for the most part? |
2025-03-05 15:10:00 +0100 | <tomsmeding> | usually, but not necessarily |
2025-03-05 15:10:20 +0100 | <mauke> | > join (+) 3 |
2025-03-05 15:10:21 +0100 | <lambdabot> | 6 |
2025-03-05 15:10:33 +0100 | <tomsmeding> | _just_ a Reader is not particularly useful, the cost of the monadic syntax is higher than what it gives you |
2025-03-05 15:10:41 +0100 | <tomsmeding> | disregarding pointfree tricks |
2025-03-05 15:10:44 +0100 | <euouae> | > :t join |
2025-03-05 15:10:46 +0100 | <lambdabot> | <hint>:1:1: error: parse error on input ‘:’ |
2025-03-05 15:10:46 +0100 | tomsmeding | looks askance at mauke |
2025-03-05 15:10:50 +0100 | <tomsmeding> | :t join |
2025-03-05 15:10:51 +0100 | <lambdabot> | Monad m => m (m a) -> m a |
2025-03-05 15:11:16 +0100 | <euouae> | ah what, I didn't realize you used the -> monad instance to diagonalize + |
2025-03-05 15:11:21 +0100 | ChaiTRex | (~ChaiTRex@user/chaitrex) ChaiTRex |
2025-03-05 15:11:21 +0100 | <tomsmeding> | % :t join @((->) r) |
2025-03-05 15:11:21 +0100 | <yahb2> | <interactive>:1:13: error: [GHC-76037] ; Not in scope: type variable ‘r’ |
2025-03-05 15:11:25 +0100 | <tomsmeding> | % :t join @((->) Int) |
2025-03-05 15:11:25 +0100 | <yahb2> | join @((->) Int) ; :: Monad ((->) Int) => (Int -> (Int -> a)) -> Int -> a |
2025-03-05 15:12:19 +0100 | <euouae> | tomsmeding: and is there a difference between mapReader and >>=? |
2025-03-05 15:12:27 +0100 | <euouae> | In using one or the other I mea |
2025-03-05 15:12:54 +0100 | <mauke> | :t mapReader |
2025-03-05 15:12:55 +0100 | <lambdabot> | (a -> b) -> Reader r a -> Reader r b |
2025-03-05 15:13:10 +0100 | <mauke> | oh, that's fmap |
2025-03-05 15:13:17 +0100 | <mauke> | >>= is fmap + join |
2025-03-05 15:13:29 +0100 | <euouae> | Ah yeah I forgot to say that I was using pure . too |
2025-03-05 15:13:39 +0100 | <euouae> | Right, so mapReader is just a specialized fmap? |
2025-03-05 15:13:41 +0100 | <mauke> | join undoes pure |
2025-03-05 15:13:47 +0100 | <mauke> | yeah |
2025-03-05 15:13:56 +0100 | <euouae> | Right! thank you |
2025-03-05 15:14:03 +0100 | <mauke> | > ((!!) =<< show) 0 |
2025-03-05 15:14:05 +0100 | <lambdabot> | '0' |
2025-03-05 15:14:37 +0100 | euouae | shies away from the brain teasers and goes back into his studies |
2025-03-05 15:15:35 +0100 | <mauke> | :-) |
2025-03-05 15:18:05 +0100 | <tomsmeding> | ((!!) =<< show) 0 = (\r -> (!!) (show r) r) 0 = show 0 !! 0 |
2025-03-05 15:21:09 +0100 | <mauke> | (=<<): the other S |
2025-03-05 15:24:14 +0100 | Googulator | (~Googulato@2a01-036d-0106-14b2-c443-5a96-b49d-1dd5.pool6.digikabel.hu) (Quit: Client closed) |
2025-03-05 15:24:28 +0100 | Googulator | (~Googulato@80-95-93-248.pool.digikabel.hu) |
2025-03-05 15:35:10 +0100 | ystael | (~ystael@user/ystael) (Quit: Lost terminal) |
2025-03-05 15:38:02 +0100 | alfiee | (~alfiee@user/alfiee) alfiee |
2025-03-05 15:42:22 +0100 | alfiee | (~alfiee@user/alfiee) (Ping timeout: 252 seconds) |
2025-03-05 15:46:18 +0100 | gmg | (~user@user/gehmehgeh) gehmehgeh |
2025-03-05 15:49:23 +0100 | CiaoSen | (~Jura@2a02:8071:64e1:7180:4e50:ddff:fe9b:8922) CiaoSen |
2025-03-05 15:55:11 +0100 | ystael | (~ystael@user/ystael) ystael |
2025-03-05 15:56:21 +0100 | <haskellbridge> | <mauke> E |
2025-03-05 15:59:19 +0100 | fp | (~Thunderbi@89-27-29-68.bb.dnainternet.fi) fp |
2025-03-05 16:05:23 +0100 | Googulator | (~Googulato@80-95-93-248.pool.digikabel.hu) (Quit: Client closed) |
2025-03-05 16:05:47 +0100 | Googulator | (~Googulato@2a01-036d-0106-14b2-c443-5a96-b49d-1dd5.pool6.digikabel.hu) |
2025-03-05 16:07:23 +0100 | ash3en | (~Thunderbi@2a03:7846:b6eb:101:93ac:a90a:da67:f207) ash3en |
2025-03-05 16:09:25 +0100 | vulpine | (xfnw@user/meow/xfnw) (Quit: Connection reset by purr) |
2025-03-05 16:09:54 +0100 | vulpine | (xfnw@user/meow/xfnw) xfnw |
2025-03-05 16:13:50 +0100 | Unicorn_Princess | (~Unicorn_P@user/Unicorn-Princess/x-3540542) Unicorn_Princess |
2025-03-05 16:21:21 +0100 | vanishingideal | (~vanishing@user/vanishingideal) (Ping timeout: 268 seconds) |
2025-03-05 16:23:07 +0100 | vanishingideal | (~vanishing@user/vanishingideal) vanishingideal |
2025-03-05 16:25:26 +0100 | alfiee | (~alfiee@user/alfiee) alfiee |
2025-03-05 16:29:40 +0100 | alfiee | (~alfiee@user/alfiee) (Ping timeout: 252 seconds) |
2025-03-05 16:30:01 +0100 | lucasEsc | (~lucasEsc@181.110.191.164) |
2025-03-05 16:30:34 +0100 | jespada | (~jespada@2800:a4:22da:e400:b167:8181:c13f:cb54) (Quit: My Mac has gone to sleep. ZZZzzz…) |
2025-03-05 16:35:52 +0100 | son0p | (~ff@2800:e6:4000:d723:c181:4205:f2b1:437a) (Ping timeout: 244 seconds) |
2025-03-05 16:37:43 +0100 | sabathan | (~sabathan@amarseille-159-1-12-107.w86-203.abo.wanadoo.fr) (Read error: Connection reset by peer) |
2025-03-05 16:38:41 +0100 | ash3en | (~Thunderbi@2a03:7846:b6eb:101:93ac:a90a:da67:f207) (Quit: ash3en) |
2025-03-05 16:39:03 +0100 | ash3en | (~Thunderbi@2a03:7846:b6eb:101:93ac:a90a:da67:f207) ash3en |
2025-03-05 16:40:47 +0100 | ash3en | (~Thunderbi@2a03:7846:b6eb:101:93ac:a90a:da67:f207) (Client Quit) |
2025-03-05 16:41:08 +0100 | ash3en | (~Thunderbi@2a03:7846:b6eb:101:93ac:a90a:da67:f207) ash3en |
2025-03-05 16:41:48 +0100 | sabathan | (~sabathan@amarseille-159-1-12-107.w86-203.abo.wanadoo.fr) |
2025-03-05 16:44:38 +0100 | jespada | (~jespada@2800:a4:22da:e400:b167:8181:c13f:cb54) jespada |
2025-03-05 16:45:13 +0100 | notdabs | (~Owner@2600:1700:69cf:9000:d900:e64:5cae:a17e) |
2025-03-05 16:45:45 +0100 | evgeny | (~Shaeto@94.25.234.181) (Quit: WeeChat 4.1.1) |
2025-03-05 16:50:46 +0100 | lucasEsc | (~lucasEsc@181.110.191.164) (Quit: Client closed) |
2025-03-05 16:52:37 +0100 | euphores | (~SASL_euph@user/euphores) (Quit: Leaving.) |
2025-03-05 16:57:44 +0100 | euphores | (~SASL_euph@user/euphores) euphores |
2025-03-05 17:02:28 +0100 | hughjfchen | (~hughjfche@vmi2417424.contaboserver.net) hughjfchen |
2025-03-05 17:04:08 +0100 | iteratee_ | (~kyle@162.218.222.207) (Ping timeout: 252 seconds) |
2025-03-05 17:06:12 +0100 | ChaiTRex | (~ChaiTRex@user/chaitrex) (Ping timeout: 264 seconds) |
2025-03-05 17:11:30 +0100 | alfiee | (~alfiee@user/alfiee) alfiee |
2025-03-05 17:13:18 +0100 | Square2 | (~Square4@user/square) (Ping timeout: 245 seconds) |
2025-03-05 17:15:39 +0100 | alfiee | (~alfiee@user/alfiee) (Ping timeout: 244 seconds) |
2025-03-05 17:15:52 +0100 | jespada | (~jespada@2800:a4:22da:e400:b167:8181:c13f:cb54) (Quit: My Mac has gone to sleep. ZZZzzz…) |
2025-03-05 17:16:14 +0100 | merijn | (~merijn@77.242.116.146) (Ping timeout: 268 seconds) |
2025-03-05 17:17:28 +0100 | acidjnk_new | (~acidjnk@p200300d6e7283f53f42219c1fddec46c.dip0.t-ipconnect.de) (Ping timeout: 268 seconds) |
2025-03-05 17:18:09 +0100 | merijn | (~merijn@77.242.116.146) merijn |
2025-03-05 17:18:34 +0100 | chexum | (~quassel@gateway/tor-sasl/chexum) chexum |
2025-03-05 17:18:45 +0100 | wildtrees | (~user@pool-108-26-34-85.syrcny.east.verizon.net) |
2025-03-05 17:28:19 +0100 | vanishingideal | (~vanishing@user/vanishingideal) (Remote host closed the connection) |
2025-03-05 17:31:24 +0100 | <kaol> | One day I'll understand what ScopedTypeVariables and TypeApplications do together. I had yet more ambiguous type variable stuff with variable names GHC generated from thin air and I followed a SO answer and added a "forall a." to the top level function signature and then used @a at the offending place. The error went away but my confusion didn't. |
2025-03-05 17:33:44 +0100 | <tomsmeding> | kaol: type parameters are, in a certain sense, just additional arguments to your function |
2025-03-05 17:33:52 +0100 | <tomsmeding> | :t map |
2025-03-05 17:33:53 +0100 | <lambdabot> | (a -> b) -> [a] -> [b] |
2025-03-05 17:34:09 +0100 | <tomsmeding> | in that view, `map` has 4 arguments: `a`, `b`, a function of type `a -> b`, and a list `[a]` |
2025-03-05 17:34:47 +0100 | <tomsmeding> | there are two differences between normal arguments and type arguments: 1. GHC automatically infers type arguments, and 2. you can't pattern-match on them |
2025-03-05 17:35:08 +0100 | <tomsmeding> | but you can _pass_ them manually! |
2025-03-05 17:35:18 +0100 | <tomsmeding> | % :set -XTypeApplications |
2025-03-05 17:35:18 +0100 | <yahb2> | <no output> |
2025-03-05 17:35:22 +0100 | <tomsmeding> | % :set -fprint-explicit-foralls |
2025-03-05 17:35:22 +0100 | <yahb2> | <no output> |
2025-03-05 17:35:25 +0100 | <tomsmeding> | % :t map |
2025-03-05 17:35:25 +0100 | <yahb2> | map :: forall a b. (a -> b) -> [a] -> [b] |
2025-03-05 17:35:47 +0100 | <tomsmeding> | with -fprint-explicit-foralls, GHC also prints those additional "arguments" even if it normally wouldn't |
2025-03-05 17:35:50 +0100 | <tomsmeding> | % :t map @Int |
2025-03-05 17:35:50 +0100 | <yahb2> | map @Int :: forall b. (Int -> b) -> [Int] -> [b] |
2025-03-05 17:35:55 +0100 | <tomsmeding> | % :t map @Int @Float |
2025-03-05 17:35:55 +0100 | <yahb2> | map @Int @Float :: (Int -> Float) -> [Int] -> [Float] |
2025-03-05 17:36:10 +0100 | <tomsmeding> | you can see me passing types to the `a` and `b` type arguments of `map` |
2025-03-05 17:36:45 +0100 | <kaol> | So my forall made the "a" visible inside the function body and @a used it? |
2025-03-05 17:36:55 +0100 | <int-e> | With ScopedTypeVariables, the `forall a.` in the function's type signature binds the `a` type variable to that type in the function implementation |
2025-03-05 17:36:58 +0100 | <tomsmeding> | so if you find yourself in a position where GHC somehow does not have enough information to automatically infer what type argument to pass somewhere, you can pass it manually |
2025-03-05 17:37:31 +0100 | <tomsmeding> | now, what happens if you are yourself writing a polymorphic function, and you find yourself in that same situation? You will have to pass types with @ that mention the type arguments of _your_ function |
2025-03-05 17:37:41 +0100 | <tomsmeding> | normally, in Haskell2010, there's no way to refer to those type arguments |
2025-03-05 17:38:10 +0100 | <tomsmeding> | ScopedTypeVariables changes that, but only if you bind your type arguments explicitly using `forall` in the type signature |
2025-03-05 17:38:31 +0100 | <tomsmeding> | does that help? :) |
2025-03-05 17:38:57 +0100 | <tomsmeding> | kaol: so yes, the forall made the "a" visible inside the function body; that @a used it, yes |
2025-03-05 17:40:02 +0100 | <kaol> | I think I understand. This is one of those things you'd have to ask me again in a week. |
2025-03-05 17:40:19 +0100 | merijn | (~merijn@77.242.116.146) (Ping timeout: 260 seconds) |
2025-03-05 17:42:13 +0100 | <kaol> | Another related thing I'm curious about: Why's ScopedTypeVariables the extension that makes something like let a :: Int = read "123" work? |
2025-03-05 17:42:49 +0100 | <tomsmeding> | hysterical raisins |
2025-03-05 17:43:16 +0100 | <tomsmeding> | the features are connected though: you can write `map (f :: a -> b) (x :: [a]) = ...` and then use `a` and `b` in the function body of `map` |
2025-03-05 17:43:29 +0100 | <tomsmeding> | those type ascriptions bound `a` and `b` just like a `forall` would |
2025-03-05 17:43:37 +0100 | <tomsmeding> | but this is enabled only with ScopedTypeVariables, again |
2025-03-05 17:43:54 +0100 | <tomsmeding> | `let a :: Int = ...` is just a special case of this |
2025-03-05 17:44:43 +0100 | ft | (~ft@p3e9bc68d.dip0.t-ipconnect.de) ft |
2025-03-05 17:44:50 +0100 | <dminuoso> | Everything about ScopedTypeVariables is a bit smelly. |
2025-03-05 17:45:14 +0100 | <kaol> | What's the difference between ScopedTypeVariables forall and RankNTypes forall? |
2025-03-05 17:45:25 +0100 | <dminuoso> | It would have been more consistent to allow `let a :: Int = ...` even without the extension. |
2025-03-05 17:45:25 +0100 | <tomsmeding> | completely unrelated |
2025-03-05 17:45:29 +0100 | <tomsmeding> | they just happen to share the same keyword |
2025-03-05 17:45:47 +0100 | <kaol> | Apply directly to the forehead. |
2025-03-05 17:46:16 +0100 | <tomsmeding> | (there's a decent reason they share the same keyword: the `forall` of ScopedTypeVariables makes sense because it could have been there anyway. ScopedTypeVariables just gives an additional meaning to a forall in that specific position.) |
2025-03-05 17:46:17 +0100 | <dminuoso> | kaol: The underlying problem is that when Haskell was invented, it was deemed to be more useful to have variables not be inscope (so you could never refer to an outer type variable in another type signature) |
2025-03-05 17:46:47 +0100 | <dminuoso> | kaol: There's nothing about forall, except that the authors trying to increase compatibility with a bunch of hackage libraries. |
2025-03-05 17:46:59 +0100 | __jmcantrell__ | (~weechat@user/jmcantrell) jmcantrell |
2025-03-05 17:47:07 +0100 | jmcantrell | Guest5227 |
2025-03-05 17:47:08 +0100 | __jmcantrell__ | jmcantrell |
2025-03-05 17:47:17 +0100 | <dminuoso> | Say if you enabled `ScopedTypeVariables` in your cabal file project wide, and suddenly `a` was captured and brought into scope, it could perhaps cause some issues or compilation errors. |
2025-03-05 17:47:49 +0100 | <tomsmeding> | well, they could have used a different keyword so that existing uses even with ExplicitForall didn't change meaning |
2025-03-05 17:47:49 +0100 | <dminuoso> | Tying this into an ExplicitForall is one of the stranger parts that seems to have no fundamentally good reason behind it |
2025-03-05 17:48:09 +0100 | <tomsmeding> | it could even be useful to be able to mark _some_ type variables as being in scope, and others not |
2025-03-05 17:48:16 +0100 | <dminuoso> | Personally, I would prefer if ScopedTypeVariables just brought them into scope, even without forall. |
2025-03-05 17:48:18 +0100 | <tomsmeding> | the new -XTypeAbstractions allows you to do the latter, at least |
2025-03-05 17:48:18 +0100 | <dminuoso> | Done! |
2025-03-05 17:49:06 +0100 | srazkvt | (~sarah@user/srazkvt) srazkvt |
2025-03-05 17:50:07 +0100 | jespada | (~jespada@2800:a4:22da:e400:b167:8181:c13f:cb54) jespada |
2025-03-05 17:50:57 +0100 | <kaol> | Perhaps the GHC error message could suggest ScopedTypeVariables in the ambiguous type variable error. It sure is mystifying to see GHC conjure up new names when the source code clearly has the same text at both sites but it isn't so because it requires ScopedTypeVariables to really be so. |
2025-03-05 17:51:51 +0100 | <dminuoso> | kaol: What do you mean by new names? |
2025-03-05 17:51:56 +0100 | <tomsmeding> | kaol: if you get an ambiguous type variable error, then there are multiple instantiations of a type variable that could in principle result in a well-typed result |
2025-03-05 17:52:13 +0100 | <tomsmeding> | and that GHC has no good reason to prefer one particular instantiation over another |
2025-03-05 17:52:29 +0100 | <tomsmeding> | if you have type families in the picture, then non-injective type families can result in this |
2025-03-05 17:52:39 +0100 | <tomsmeding> | GHC doesn't just complain willy-nilly ;) |
2025-03-05 17:53:59 +0100 | j1n37 | (~j1n37@user/j1n37) (Ping timeout: 252 seconds) |
2025-03-05 17:54:06 +0100 | <dminuoso> | kaol: Note, that you cannot "just use the type variables you wrote" in GHC. There's a very subtle type machinery going on, if GHC did not alpha-rename, you would inevitably get errors like `cannot you unify a with a` errors, which is even *less* helpful. |
2025-03-05 17:54:07 +0100 | <kaol> | dminuoso: If I have "MyTypeClass a =>" in the function signature I'd expect the same "a" to mean the same thing in the body. Instead I see it come up with "a0" or something on its own. Or that's the naive understanding of it at least. |
2025-03-05 17:54:15 +0100 | <dminuoso> | ^- see previous message |
2025-03-05 17:54:27 +0100 | <dminuoso> | Or rather, its not exactly alpha renaming either |
2025-03-05 17:54:34 +0100 | <dminuoso> | It's following generalization rules |
2025-03-05 17:54:44 +0100 | <kaol> | I think I'm starting to understand but I'm saying that GHC could offer more help in its error message. |
2025-03-05 17:54:49 +0100 | j1n37 | (~j1n37@user/j1n37) j1n37 |
2025-03-05 17:54:49 +0100 | <tomsmeding> | kaol: do you have a code snippet so that we're talking about the same thing? |
2025-03-05 17:54:53 +0100 | <dminuoso> | Take a look at Hindley Milner to get a better understanding |
2025-03-05 17:54:58 +0100 | <kaol> | It's generally pretty good about suggesting extensions to make code work. |
2025-03-05 17:55:04 +0100 | <dminuoso> | kaol: I dont think there's much we can do in a HM type of inference. |
2025-03-05 17:55:23 +0100 | <dminuoso> | kaol: GHC tries its best to give you context |
2025-03-05 17:55:25 +0100 | <dminuoso> | e.g. it might say |
2025-03-05 17:55:37 +0100 | <dminuoso> | Ambiguous type variable `a0' arising from a use of `show' prevents the constraint `(Show a0)' from being solved. Relevant bindings include xs :: [a0] (bound at l.hs:13:9) |
2025-03-05 17:55:56 +0100 | <dminuoso> | So if you read the entirety, then `a0` is a type that GHC has in its inference at *that* particular point. |
2025-03-05 17:55:58 +0100 | tomsmeding | (~tomsmedin@static.21.109.88.23.clients.your-server.de) (Quit: ZNC 1.9.1 - https://znc.in) |
2025-03-05 17:56:31 +0100 | iteratee | (~kyle@208.97.58.241) |
2025-03-05 17:56:46 +0100 | <dminuoso> | kaol: Whats happening roughly is, that GHC has no idea what the type is here. It just makes one up, calls it a0, in hopes of later finding out more. |
2025-03-05 17:56:54 +0100 | alfiee | (~alfiee@user/alfiee) alfiee |
2025-03-05 17:59:36 +0100 | tomsmeding | (~tomsmedin@static.21.109.88.23.clients.your-server.de) tomsmeding |
2025-03-05 18:00:45 +0100 | <tomsmeding> | kaol: and if what dminuoso just said sounds stupid in your case, then we'd need to look at the code to see what's actually happening ;) |
2025-03-05 18:01:09 +0100 | alfiee | (~alfiee@user/alfiee) (Ping timeout: 260 seconds) |
2025-03-05 18:03:27 +0100 | <dminuoso> | kaol: Another thing is, with "in the body" - GHC has to figure out whether that's actually the case! It does not know. |
2025-03-05 18:03:31 +0100 | CiaoSen | (~Jura@2a02:8071:64e1:7180:4e50:ddff:fe9b:8922) (Ping timeout: 252 seconds) |
2025-03-05 18:04:45 +0100 | <euouae> | I keep forgetting this, but it just occurred to me and I'll note it: Although studying "the type system" of Haskell as a total is kind of a tall order and perhaps not fruitful, it seems that the HN inference rules are important and simpler to study |
2025-03-05 18:05:21 +0100 | <dminuoso> | kaol: When the type checker goes through your binding, it takes the function signature as some assertion. Say `f :: MyTypeClass a => T a; f = T 1`. Now, to type check this it has to go into the AST and assign a type to stuff. For instance, what is the type of `1`? GHC does not know, it's `Num a0 => a0` |
2025-03-05 18:05:38 +0100 | <dminuoso> | So it builds up a bunch of things like |
2025-03-05 18:05:57 +0100 | <dminuoso> | f :: MyTypeClass a => T a |
2025-03-05 18:06:02 +0100 | <dminuoso> | 1 :: Num a0 => a0 |
2025-03-05 18:06:12 +0100 | <dminuoso> | T :: ...something sensible here... |
2025-03-05 18:06:30 +0100 | <dminuoso> | And then it unifies according to HM rules. |
2025-03-05 18:06:55 +0100 | <dminuoso> | Which requires giving `1` that type here |
2025-03-05 18:07:25 +0100 | <dminuoso> | Remember, GHC does not just take your type signatures for granted, it actually type checks whether what you just claimed is actually true. |
2025-03-05 18:08:13 +0100 | <dminuoso> | Now it is true, that we are very liberal with polymorphism, and the way typeclasses interact here with the type checker - as a consequence - leads to worse diagnostics |
2025-03-05 18:08:30 +0100 | <dminuoso> | We pay that price to get more expressiveness |
2025-03-05 18:09:15 +0100 | <euouae> | It could *still* provide better diagnostics. |
2025-03-05 18:09:24 +0100 | <dminuoso> | In this particular case, Im not sure how. |
2025-03-05 18:09:39 +0100 | <dminuoso> | GHC cannot, ahead of time, know that a0 will be the same as a from the outer type signature. |
2025-03-05 18:09:40 +0100 | <euouae> | For example, it could explain to the user that "hey this is part of HM type system in case you're curious what's going on" |
2025-03-05 18:09:46 +0100 | <dminuoso> | It would require type checking to know that, the very thing that failed. |
2025-03-05 18:10:00 +0100 | <euouae> | I mean in a vague way, it could point the user to things that the user can study to become better acquiainted with what's going on |
2025-03-05 18:10:04 +0100 | <dminuoso> | Well, the dignostic tells you how and why it came up with a0 in trivial cases. |
2025-03-05 18:10:16 +0100 | <euouae> | It's not that the errors are entirely unparseable, it's just that they require more expertise to understand. Right? |
2025-03-05 18:10:45 +0100 | <dminuoso> | Ambiguous type variable `a0' arising from a use of `show' prevents the constraint `(Show a0)' from being solved. Relevant bindings include xs :: [a0] (bound at l.hs:13:9) |
2025-03-05 18:10:47 +0100 | <dminuoso> | Probable fix: use a type annotation to specify what `a0' should be. |
2025-03-05 18:10:50 +0100 | <dminuoso> | These potential instances exist: |
2025-03-05 18:10:53 +0100 | <dminuoso> | .... |
2025-03-05 18:11:08 +0100 | <dminuoso> | If you think this can be reworded to be more explicit, feel free to make a pull request. |
2025-03-05 18:11:16 +0100 | <tomsmeding> | I don't think it's a good idea for EVERY type error to point to hindley-milner. If you google for "type checking haskell" you already get a bunch of resources |
2025-03-05 18:11:27 +0100 | <tomsmeding> | the diagnostics are _already_ epics with how long they are |
2025-03-05 18:11:36 +0100 | <dminuoso> | You just have to spend the time to read them. |
2025-03-05 18:11:53 +0100 | <euouae> | tomsmeding: why not? in any case, it's not evident that it is type checking at all. could always have a -verbose flag that experts can turn off |
2025-03-05 18:12:15 +0100 | <tomsmeding> | euouae: "it's not evident that it is type checking at all" -- what else would it be? |
2025-03-05 18:12:19 +0100 | <dminuoso> | I dont think the diagnostic here is overly erbose, or lacking details. |
2025-03-05 18:12:36 +0100 | <dminuoso> | It's telling you precisly what happened, where it happened, and comes with sensible suggestions |
2025-03-05 18:12:41 +0100 | <euouae> | I don't know what the number of unsuspecting victims falling onto Haskell is. I'm sure a lot who come into Haskell from universities are taught well and they don't suffer the confusion that a complete outsider would. |
2025-03-05 18:12:41 +0100 | <tomsmeding> | I think pointing to hindley-milner is the job of a haskell tutorial, not GHC type errors |
2025-03-05 18:12:47 +0100 | <dminuoso> | Of course, if you employ type level trickery or generally not have any type signatures... well yes. |
2025-03-05 18:12:49 +0100 | <dminuoso> | We cant help you. |
2025-03-05 18:13:03 +0100 | <dminuoso> | Like if servant blows up, you are on your own. |
2025-03-05 18:13:10 +0100 | <tomsmeding> | I'm not saying GHC type errors are not unclear sometimes! |
2025-03-05 18:13:22 +0100 | <dminuoso> | But thats not an issue of GHC, but rather a servant design problem. |
2025-03-05 18:13:39 +0100 | <dminuoso> | (If you insist on employing this type machinery, your users will have to suffer) |
2025-03-05 18:13:54 +0100 | <tomsmeding> | but GHC Haskell's type system is large enough and supports enough trickeries that there is just a lot of freedom in how to write your code -- and that means that the diagnostics cannot point you to "the" fix, because there are many things you might have meant |
2025-03-05 18:14:00 +0100 | <dminuoso> | optics is one of the few libraries that manages to hide type trickery behind simple user facing type errors |
2025-03-05 18:14:42 +0100 | <euouae> | tomsmeding: yeah but you could mention a few basic ones that newbies would make |
2025-03-05 18:15:00 +0100 | <euouae> | perhaps by annotating types and/or functions so that the compiler can make the suggestion when a certain pattern is matched. IDK. |
2025-03-05 18:15:12 +0100 | <euouae> | type error pattern |
2025-03-05 18:15:20 +0100 | <euouae> | I'm sort of coming up with this as I go. I haven't thought of it too much. |
2025-03-05 18:15:38 +0100 | <tomsmeding> | many people have suggested such things, and if you have a good idea, please do suggest it! |
2025-03-05 18:15:40 +0100 | <dminuoso> | type error slicing is perhaps one of those things that could be a helpful thing. |
2025-03-05 18:15:57 +0100 | <tomsmeding> | I just suspect that if you think more carefully about how that feature would look, exactly, it will turn out to be difficult to make precise |
2025-03-05 18:15:58 +0100 | <dminuoso> | But it is so easy to invoke an idea if you dont have to actually design and/or implement it in the scope of GHCs type checker. |
2025-03-05 18:16:26 +0100 | <dminuoso> | I keep mentioning type error slicers in hopes of some PhD student being forced to implement it, so I can benefit from their sweat, blood and tears. |
2025-03-05 18:16:33 +0100 | <dminuoso> | Because I dont know how to do it myself. |
2025-03-05 18:16:39 +0100 | <euouae> | For example say you try to return from a do block with `123 :: Int`. It will tell you that Int mismatches m Int. But does it suggest `pure 123` in its place? |
2025-03-05 18:17:11 +0100 | <tomsmeding> | dminuoso: is type error slicing this idea where you get just the inconsistent path of constraints between two things that the user specified? |
2025-03-05 18:17:24 +0100 | <tomsmeding> | instead of only the wrong position, or the whole function, that is? |
2025-03-05 18:18:12 +0100 | zungi | (~tory@user/andrewchawk) (Ping timeout: 264 seconds) |
2025-03-05 18:18:59 +0100 | <tomsmeding> | euouae: assuming that the 123 was indeed of type Int, and there was a `Monad m` constraint in scope -- that could be a helpful hint, yes |
2025-03-05 18:19:20 +0100 | <tomsmeding> | (if you just write "123", then it could be that there is a Num instance for `m Int`!) |
2025-03-05 18:19:47 +0100 | <tomsmeding> | > 123 :: Data.Monoid.Sum Int |
2025-03-05 18:19:48 +0100 | <lambdabot> | Sum {getSum = 123} |
2025-03-05 18:19:53 +0100 | <kaol> | I should look into making a self contained example of the thing I ran into. But I'm afraid it's not today. |
2025-03-05 18:19:57 +0100 | <tomsmeding> | here, that's an 123 of type `m Int`, just not a monad m |
2025-03-05 18:21:22 +0100 | <euouae> | tomsmeding: https://link.springer.com/chapter/10.1007/978-3-642-32037-8_1 by looking at this I think type error slicing is about determining all the parts of the source code that contribute to type errors |
2025-03-05 18:21:52 +0100 | <tomsmeding> | right |
2025-03-05 18:22:05 +0100 | <euouae> | I think it was introduced here <https://www.sciencedirect.com/science/article/pii/S016764230400005X> |
2025-03-05 18:22:37 +0100 | <euouae> | oh no, it seems that it's something different: |
2025-03-05 18:22:45 +0100 | srazkvt | (~sarah@user/srazkvt) (Quit: Konversation terminated!) |
2025-03-05 18:22:55 +0100 | <tomsmeding> | nah looks similar |
2025-03-05 18:22:59 +0100 | <euouae> | a slice is a set of program points. the type error slice is all the program points that contributed to the type error. |
2025-03-05 18:23:33 +0100 | srazkvt | (~sarah@user/srazkvt) srazkvt |
2025-03-05 18:23:35 +0100 | <tomsmeding> | strip away as many parts of your function as possible so that the result still exhibits the type error |
2025-03-05 18:23:50 +0100 | <tomsmeding> | may be helpful to see what exactly the reasoning is that the compiler is doing |
2025-03-05 18:24:09 +0100 | tzh | (~tzh@c-76-115-131-146.hsd1.or.comcast.net) tzh |
2025-03-05 18:24:18 +0100 | kuribas | (~user@ip-188-118-57-242.reverse.destiny.be) (Remote host closed the connection) |
2025-03-05 18:27:07 +0100 | <euouae> | yeah I had more of a heuristics approach for certain common errors that newbies do |
2025-03-05 18:27:45 +0100 | <tomsmeding> | euouae: here's motivation for learning more haskell: learn enough so that you can add this in GHC yourself :) |
2025-03-05 18:29:10 +0100 | <euouae> | tomsmeding: hey you know what, I'm trying. :) so far I'm just trying to mostly do stuff I've done before in other programming languages |
2025-03-05 18:29:29 +0100 | <tomsmeding> | sounds like a decent way :) |
2025-03-05 18:29:52 +0100 | <tomsmeding> | don't fall in the trap of wanting to write code that looks as closely as possible like the code you're used to in other langauges |
2025-03-05 18:30:20 +0100 | <euouae> | oh like iterative and such? |
2025-03-05 18:30:29 +0100 | <tomsmeding> | yes |
2025-03-05 18:30:51 +0100 | <tomsmeding> | you _can_, but you'll hate haskell because you don't get to see the kinds of code where it shines |
2025-03-05 18:31:09 +0100 | <tomsmeding> | part of the fun is learning how to solve the same problem, but in a different way |
2025-03-05 18:33:45 +0100 | <tomsmeding> | that doesn't mean that you need to go all recursion schemes and "I don't use recursion, I must use foldr/scanr etc." |
2025-03-05 18:34:27 +0100 | <tomsmeding> | heck, if you want to write `while :: (a -> Bool) -> (a -> a) -> a -> a` that implements a poor man's while loop, please do! |
2025-03-05 18:34:35 +0100 | <tomsmeding> | just avoid writing everything in IO |
2025-03-05 18:34:52 +0100 | <kaol> | fix is lovely. |
2025-03-05 18:35:18 +0100 | <tomsmeding> | (part of the point of writing that `while`, and programming with it, is that you realise it's really not that different from the fancy combinators you've been avoiding) |
2025-03-05 18:35:57 +0100 | zungi | (~tory@user/andrewchawk) andrewchawk |
2025-03-05 18:37:01 +0100 | <srazkvt> | say i want to build a small git forge in haskell, should i go with gitlib to have the entire thing in a single thing, or should i have the git handling seperated from web part, maybe in go or c ? |
2025-03-05 18:37:52 +0100 | <srazkvt> | i see gitlib hasn't had an update on hackage since 2023 |
2025-03-05 18:43:45 +0100 | <srazkvt> | nvm, 2021 |
2025-03-05 18:43:53 +0100 | <dminuoso> | tomsmeding: Not sure what you mean by inconsistent path of constraints. |
2025-03-05 18:44:28 +0100 | <tomsmeding> | dminuoso: subset of the constraints, that will necessarily form some kind of tree structure (I guess not just path), that exhibit the constradiction |
2025-03-05 18:44:59 +0100 | <dminuoso> | What's the adjective "inconsistent" doing there? |
2025-03-05 18:46:38 +0100 | <tomsmeding> | Well, there was a type error, right? |
2025-03-05 18:46:53 +0100 | <tomsmeding> | If the constraints were all consistent with each other, there would be no type error. |
2025-03-05 18:46:58 +0100 | alfiee | (~alfiee@user/alfiee) alfiee |
2025-03-05 18:47:17 +0100 | son0p | (~ff@2800:e6:4000:d723:c181:4205:f2b1:437a) son0p |
2025-03-05 18:47:28 +0100 | <dminuoso> | Oh okay. Then yeah, though "constraints" probably does not mean typeclass type of constraints here. |
2025-03-05 18:48:00 +0100 | <dminuoso> | If we assume the type checker to be following its judgements, then every part that was plugged into a premise of a judgement could be part of a type error slice. |
2025-03-05 18:48:21 +0100 | <tomsmeding> | Ah indeed, I was thinking of the constraint-solving approach to type checkinf |
2025-03-05 18:48:26 +0100 | <tomsmeding> | *checking |
2025-03-05 18:48:26 +0100 | <davean> | srazkvt: I wrote an implimentation of git in Haskell which is rather fast. For my use cases it beats the official git implimentation |
2025-03-05 18:49:09 +0100 | acidjnk_new | (~acidjnk@p200300d6e7283f5311bd92edfda65283.dip0.t-ipconnect.de) |
2025-03-05 18:50:20 +0100 | <dminuoso> | tomsmeding: https://www.macs.hw.ac.uk/~fairouz/forest/papers/conference-publications/lsfa14.pdf is a nice practical read into the subject, along with some of the theory. |
2025-03-05 18:51:01 +0100 | alfiee | (~alfiee@user/alfiee) (Ping timeout: 244 seconds) |
2025-03-05 18:51:32 +0100 | <tomsmeding> | "incorrect type information" in the abstract sounds like a bug -- they're overselling a little bit there |
2025-03-05 18:51:54 +0100 | chele | (~chele@user/chele) (Remote host closed the connection) |
2025-03-05 18:52:01 +0100 | <srazkvt> | davean: oh interesting, is it public ? i'd like to have a look at it if so |
2025-03-05 18:52:35 +0100 | <davean> | Yah its on hackage. 'miss' I have plenty of complaints about it, and wanted to take it further but it did what I needed |
2025-03-05 18:52:46 +0100 | <dminuoso> | tomsmeding: Well, it depends on how you look at it. |
2025-03-05 18:53:05 +0100 | <dminuoso> | tomsmeding: When GHC blows up in line #a while the actual error is line #b ... |
2025-03-05 18:53:19 +0100 | <tomsmeding> | the claims that GHC makes are still correct, even if unhelpful |
2025-03-05 18:53:33 +0100 | <davean> | The actual error is both places |
2025-03-05 18:53:35 +0100 | <tomsmeding> | anyway this is arguing semantics |
2025-03-05 18:53:56 +0100 | <davean> | The error is them not matching |
2025-03-05 18:53:57 +0100 | <dminuoso> | It may also relate to some SML implementations, I am not sure. |
2025-03-05 18:54:20 +0100 | <davean> | You can pick a location you can make more minimal changes in terms of code to bring into alignment |
2025-03-05 18:55:04 +0100 | <dminuoso> | So if we take the usual approach of "add type signatures to constrain the type checker", the type error slicers would tell you *precisely* the places that actually would have any impact on that process. |
2025-03-05 18:55:17 +0100 | <dminuoso> | To the point that this could even be a guided process |
2025-03-05 18:55:25 +0100 | <tomsmeding> | right |
2025-03-05 18:55:59 +0100 | <tomsmeding> | that paper looks more technical, especially in presentation (guys, you don't explain something by first giving 200 definitions), than I'm willing to read right now :) |
2025-03-05 18:56:10 +0100 | <tomsmeding> | but I have a rough idea from the discussion here and that's good enough for me now |
2025-03-05 18:59:14 +0100 | <tomsmeding> | (a more charitable take is that this is an implementation paper that assumes you already know how slicing works in principle -- which is fair) |
2025-03-05 19:11:31 +0100 | srazkvt | (~sarah@user/srazkvt) (Quit: Konversation terminated!) |
2025-03-05 19:12:21 +0100 | fp | (~Thunderbi@89-27-29-68.bb.dnainternet.fi) (Ping timeout: 265 seconds) |
2025-03-05 19:13:10 +0100 | Tuplanolla | (~Tuplanoll@91-159-69-59.elisa-laajakaista.fi) Tuplanolla |
2025-03-05 19:15:24 +0100 | wootehfoot | (~wootehfoo@user/wootehfoot) wootehfoot |
2025-03-05 19:20:55 +0100 | vgtw_ | (~vgtw@user/vgtw) vgtw |
2025-03-05 19:21:04 +0100 | vgtw | (~vgtw@user/vgtw) (Ping timeout: 260 seconds) |
2025-03-05 19:27:01 +0100 | bilegeek | (~bilegeek@2600:1008:b050:b561:2843:58a0:b048:fc36) bilegeek |
2025-03-05 19:28:14 +0100 | vgtw_ | (~vgtw@user/vgtw) (Ping timeout: 252 seconds) |
2025-03-05 19:33:01 +0100 | alfiee | (~alfiee@user/alfiee) alfiee |
2025-03-05 19:35:43 +0100 | vgtw | (~vgtw@user/vgtw) vgtw |
2025-03-05 19:37:03 +0100 | alfiee | (~alfiee@user/alfiee) (Ping timeout: 245 seconds) |
2025-03-05 19:37:52 +0100 | Googulator | (~Googulato@2a01-036d-0106-14b2-c443-5a96-b49d-1dd5.pool6.digikabel.hu) (Quit: Client closed) |
2025-03-05 19:38:15 +0100 | Googulator | (~Googulato@2a01-036d-0106-14b2-c443-5a96-b49d-1dd5.pool6.digikabel.hu) |
2025-03-05 19:39:11 +0100 | jespada | (~jespada@2800:a4:22da:e400:b167:8181:c13f:cb54) (Quit: My Mac has gone to sleep. ZZZzzz…) |
2025-03-05 19:39:58 +0100 | machinedgod | (~machinedg@d108-173-18-100.abhsia.telus.net) (Ping timeout: 252 seconds) |
2025-03-05 19:40:15 +0100 | fun-safe-math | (~fun-safe-@2601:1c2:1b7f:801f:26d6:a094:aa3b:66cd) (Quit: No Ping reply in 180 seconds.) |
2025-03-05 19:41:30 +0100 | fun-safe-math | (~fun-safe-@2601:1c2:1b7f:801f:e1d3:88d5:3ff2:2f10) fun-safe-math |
2025-03-05 19:46:43 +0100 | p3n | (~p3n@2a00:19a0:3:7c:0:d9c6:7cf6:1) p3n |
2025-03-05 19:47:49 +0100 | ubert | (~Thunderbi@2a02:8109:ab8a:5a00:42eb:c7e6:6d02:7a65) (Quit: ubert) |
2025-03-05 19:48:54 +0100 | jmcantrell | (~weechat@user/jmcantrell) (Ping timeout: 276 seconds) |
2025-03-05 19:49:13 +0100 | Googulator | (~Googulato@2a01-036d-0106-14b2-c443-5a96-b49d-1dd5.pool6.digikabel.hu) (Quit: Client closed) |
2025-03-05 19:49:39 +0100 | Googulator | (~Googulato@2a01-036d-0106-14b2-c443-5a96-b49d-1dd5.pool6.digikabel.hu) |
2025-03-05 19:55:00 +0100 | _xor | (~xor@ip-66-42-132-175.dynamic.fuse.net) (Ping timeout: 252 seconds) |
2025-03-05 19:55:12 +0100 | ljdarj | (~Thunderbi@user/ljdarj) ljdarj |
2025-03-05 20:02:39 +0100 | _xor | (~xor@ip-66-42-132-175.dynamic.fuse.net) _xor |
2025-03-05 20:03:32 +0100 | peterbecich | (~Thunderbi@syn-047-229-123-186.res.spectrum.com) peterbecich |
2025-03-05 20:07:06 +0100 | weary-traveler | (~user@user/user363627) user363627 |
2025-03-05 20:08:40 +0100 | vanishingideal | (~vanishing@user/vanishingideal) vanishingideal |
2025-03-05 20:09:39 +0100 | bilegeek_ | (~bilegeek@2600:1008:b09d:26e1:5113:f5a5:f05a:228d) bilegeek |
2025-03-05 20:11:19 +0100 | bilegeek__ | (~bilegeek@2600:1008:b06f:f975:a471:7a4:18e0:46c) bilegeek |
2025-03-05 20:12:03 +0100 | bilegeek | (~bilegeek@2600:1008:b050:b561:2843:58a0:b048:fc36) (Ping timeout: 245 seconds) |
2025-03-05 20:13:36 +0100 | jespada | (~jespada@r186-48-57-94.dialup.adsl.anteldata.net.uy) jespada |
2025-03-05 20:14:09 +0100 | bilegeek_ | (~bilegeek@2600:1008:b09d:26e1:5113:f5a5:f05a:228d) (Ping timeout: 260 seconds) |
2025-03-05 20:14:28 +0100 | ash3en | (~Thunderbi@2a03:7846:b6eb:101:93ac:a90a:da67:f207) (Read error: Connection reset by peer) |
2025-03-05 20:14:39 +0100 | ash3en | (~Thunderbi@2a03:7846:b6eb:101:93ac:a90a:da67:f207) ash3en |
2025-03-05 20:16:12 +0100 | bilegeek__ | (~bilegeek@2600:1008:b06f:f975:a471:7a4:18e0:46c) (Ping timeout: 276 seconds) |
2025-03-05 20:16:20 +0100 | vanishingideal | (~vanishing@user/vanishingideal) (Quit: leaving) |
2025-03-05 20:16:48 +0100 | vanishingideal | (~vanishing@user/vanishingideal) vanishingideal |
2025-03-05 20:17:19 +0100 | jmcantrell | (~weechat@user/jmcantrell) jmcantrell |
2025-03-05 20:18:45 +0100 | alfiee | (~alfiee@user/alfiee) alfiee |
2025-03-05 20:19:05 +0100 | <TheHoodedClaw> | I have a fairly large library written that does a lot of unrelated things and I've never uploaded to hackage before, can anyone advise me on whether it's any good, whether it needs to be broken up, which parts are most useful or whatever its https://github.com/ibrettyoudid/SwissArmyKnife |
2025-03-05 20:20:23 +0100 | hgolden | (~hgolden@2603:8000:9d00:3ed1:6ff3:8389:b901:6363) (Remote host closed the connection) |
2025-03-05 20:23:04 +0100 | alfiee | (~alfiee@user/alfiee) (Ping timeout: 260 seconds) |
2025-03-05 20:23:20 +0100 | hgolden | (~hgolden@2603:8000:9d00:3ed1:6ff3:8389:b901:6363) hgolden |
2025-03-05 20:24:20 +0100 | peterbecich | (~Thunderbi@syn-047-229-123-186.res.spectrum.com) (Quit: peterbecich) |
2025-03-05 20:24:52 +0100 | peterbecich | (~Thunderbi@syn-047-229-123-186.res.spectrum.com) peterbecich |
2025-03-05 20:29:34 +0100 | j0lol | (~j0lol@132.145.17.236) j0lol |
2025-03-05 20:29:58 +0100 | ChaiTRex | (~ChaiTRex@user/chaitrex) ChaiTRex |
2025-03-05 20:40:28 +0100 | peterbecich | (~Thunderbi@syn-047-229-123-186.res.spectrum.com) (Ping timeout: 252 seconds) |
2025-03-05 20:45:12 +0100 | zungi | (~tory@user/andrewchawk) (Ping timeout: 264 seconds) |
2025-03-05 20:55:11 +0100 | fp | (~Thunderbi@89-27-29-68.bb.dnainternet.fi) fp |
2025-03-05 21:00:01 +0100 | caconym | (~caconym@user/caconym) (Quit: bye) |
2025-03-05 21:00:44 +0100 | caconym | (~caconym@user/caconym) caconym |
2025-03-05 21:02:01 +0100 | sabathan | (~sabathan@amarseille-159-1-12-107.w86-203.abo.wanadoo.fr) (Read error: Connection reset by peer) |
2025-03-05 21:05:09 +0100 | alfiee | (~alfiee@user/alfiee) alfiee |
2025-03-05 21:05:31 +0100 | sabathan | (~sabathan@amarseille-159-1-12-107.w86-203.abo.wanadoo.fr) |
2025-03-05 21:05:34 +0100 | SlackCoder | (~SlackCode@64-94-63-8.ip.weststar.net.ky) SlackCoder |
2025-03-05 21:10:06 +0100 | olivial | (~benjaminl@user/benjaminl) (Read error: Connection reset by peer) |
2025-03-05 21:10:09 +0100 | alfiee | (~alfiee@user/alfiee) (Ping timeout: 276 seconds) |
2025-03-05 21:10:21 +0100 | olivial | (~benjaminl@user/benjaminl) benjaminl |
2025-03-05 21:11:15 +0100 | zungi | (~tory@user/andrewchawk) andrewchawk |
2025-03-05 21:11:52 +0100 | ash3en | (~Thunderbi@2a03:7846:b6eb:101:93ac:a90a:da67:f207) (Quit: ash3en) |
2025-03-05 21:14:00 +0100 | jespada | (~jespada@r186-48-57-94.dialup.adsl.anteldata.net.uy) (Quit: My Mac has gone to sleep. ZZZzzz…) |
2025-03-05 21:14:10 +0100 | ljdarj1 | (~Thunderbi@user/ljdarj) ljdarj |
2025-03-05 21:14:45 +0100 | Smiles | (uid551636@id-551636.lymington.irccloud.com) (Quit: Connection closed for inactivity) |
2025-03-05 21:15:54 +0100 | ljdarj | (~Thunderbi@user/ljdarj) (Ping timeout: 244 seconds) |
2025-03-05 21:15:54 +0100 | ljdarj1 | ljdarj |
2025-03-05 21:18:36 +0100 | jmcantrell | (~weechat@user/jmcantrell) (Ping timeout: 252 seconds) |
2025-03-05 21:23:57 +0100 | sprotte24 | (~sprotte24@p200300d16f145200a11093ba77855b13.dip0.t-ipconnect.de) |
2025-03-05 21:24:48 +0100 | ChaiTRex | (~ChaiTRex@user/chaitrex) (Ping timeout: 264 seconds) |
2025-03-05 21:26:29 +0100 | ChaiTRex | (~ChaiTRex@user/chaitrex) ChaiTRex |
2025-03-05 21:27:47 +0100 | <haskellbridge> | <Liamzee> hello |
2025-03-05 21:27:57 +0100 | <haskellbridge> | <Liamzee> why am i getting an error that the RTS doesn't support multiple OS threads? |
2025-03-05 21:28:05 +0100 | <haskellbridge> | <Liamzee> it's telling me to use ghc -threaded when linking |
2025-03-05 21:28:34 +0100 | <haskellbridge> | <Liamzee> GHC options on my program: -Wall -rtsopts -with-rtsopts="-threaded" -threaded |
2025-03-05 21:28:40 +0100 | <haskellbridge> | <Liamzee> M2 OSX |
2025-03-05 21:29:10 +0100 | <monochrom> | Oh, -threaded is a compile-time flag, not runtime. |
2025-03-05 21:29:20 +0100 | fp | (~Thunderbi@89-27-29-68.bb.dnainternet.fi) (Remote host closed the connection) |
2025-03-05 21:29:44 +0100 | <monochrom> | more precisely, link-time. When generating an exe, choose which RTS to include in the exe. |
2025-03-05 21:30:50 +0100 | <tomsmeding> | Liamzee: remove that `-with-rtsopts="-threaded"` |
2025-03-05 21:30:58 +0100 | <tomsmeding> | also the `-rtsopts` is unnecessary for just -N |
2025-03-05 21:32:14 +0100 | zungi | (~tory@user/andrewchawk) (Remote host closed the connection) |
2025-03-05 21:32:35 +0100 | zungi | (~tory@user/andrewchawk) andrewchawk |
2025-03-05 21:33:10 +0100 | <monochrom> | Although, I get 0 error messages when I try verbatim `ghc -Wall -rtsopts -with-rtsopts="-threaded" -threaded c.hs` where c.hs is just "main = putStrLn"hi"" |
2025-03-05 21:33:41 +0100 | <monochrom> | Also, running the exe has no error, it just says hi. |
2025-03-05 21:34:02 +0100 | <tomsmeding> | Liamzee: the -threaded must be on the _executable_, not on a library that happens to be a dependency of the executable -- just in case that is the problem |
2025-03-05 21:34:26 +0100 | <haskellbridge> | <Liamzee> brick-tetris: Uncaught exception ghc-internal:GHC.Internal.IO.Exception.IOException: |
2025-03-05 21:34:26 +0100 | <haskellbridge> | user error (RTS doesn't support multiple OS threads (use ghc -threaded when linking)) |
2025-03-05 21:34:48 +0100 | <tomsmeding> | post your cabal file? |
2025-03-05 21:35:08 +0100 | <tomsmeding> | or the place where you're passing that -threaded |
2025-03-05 21:35:23 +0100 | <int-e> | what is the -with-rtsopts="-threaded" for? |
2025-03-05 21:35:30 +0100 | <tomsmeding> | being useless |
2025-03-05 21:35:37 +0100 | <monochrom> | misunderstanding |
2025-03-05 21:35:43 +0100 | <int-e> | I'm surprised the program doesn't choke on it tbh |
2025-03-05 21:36:13 +0100 | <haskellbridge> | <Liamzee> okay, it seems to have been a problem with ghc-options in cabal, I have to set +RTS, then put in threaded and -N4 options |
2025-03-05 21:36:39 +0100 | <tomsmeding> | Liamzee: that sounds highly suspicious and likely wrong; could you post your cabal file? |
2025-03-05 21:37:09 +0100 | <monochrom> | Interesting. `./c +RTS -threaded` does not error out. Nor any prefix of "threaded". But `./c +RTS -dreaded` is an error. |
2025-03-05 21:37:33 +0100 | <monochrom> | What magic is this that -thre is OK but -dreaded is not? :) |
2025-03-05 21:38:59 +0100 | <tomsmeding> | monochrom: you now have files `hreaded`, `hre`, etc. in the current directory |
2025-03-05 21:39:09 +0100 | <tomsmeding> | > -t[<file>] One-line GC statistics (if <file> omitted, uses stderr) |
2025-03-05 21:39:22 +0100 | <monochrom> | OMG yes that's true. |
2025-03-05 21:39:24 +0100 | <tomsmeding> | Liamzee: that goes for you too |
2025-03-05 21:39:54 +0100 | <monochrom> | This is what's wrong with single letter options! |
2025-03-05 21:39:57 +0100 | <tomsmeding> | nice bait-and-switch :p |
2025-03-05 21:40:15 +0100 | <tomsmeding> | this is what's wrong with single-letter options _that take an argument that is attached to the option_ |
2025-03-05 21:40:18 +0100 | <int-e> | tomsmeding: lol, thanks |
2025-03-05 21:42:10 +0100 | wootehfoot | (~wootehfoo@user/wootehfoot) (Read error: Connection reset by peer) |
2025-03-05 21:42:20 +0100 | sord937 | (~sord937@gateway/tor-sasl/sord937) (Quit: sord937) |
2025-03-05 21:52:13 +0100 | alfiee | (~alfiee@user/alfiee) alfiee |
2025-03-05 21:56:38 +0100 | <mauke> | gcc -o2 main.c |
2025-03-05 21:56:49 +0100 | alfiee | (~alfiee@user/alfiee) (Ping timeout: 260 seconds) |
2025-03-05 21:56:59 +0100 | superlink | (~kontsikou@adsl-192.79.107.136.tellas.gr) |
2025-03-05 21:57:26 +0100 | superlink29 | (~superlink@adsl-192.79.107.136.tellas.gr) |
2025-03-05 21:57:55 +0100 | superlink29 | (~superlink@adsl-192.79.107.136.tellas.gr) (Client Quit) |
2025-03-05 21:57:55 +0100 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn |
2025-03-05 21:58:48 +0100 | <monochrom> | oh heh |
2025-03-05 22:02:26 +0100 | <int-e> | mauke: but "everyone" knows about -o :-) |
2025-03-05 22:02:39 +0100 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 260 seconds) |
2025-03-05 22:13:18 +0100 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn |
2025-03-05 22:17:57 +0100 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 265 seconds) |
2025-03-05 22:18:43 +0100 | Smiles | (uid551636@id-551636.lymington.irccloud.com) Smiles |
2025-03-05 22:23:45 +0100 | peterbecich | (~Thunderbi@syn-047-229-123-186.res.spectrum.com) peterbecich |
2025-03-05 22:28:40 +0100 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn |
2025-03-05 22:33:11 +0100 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 244 seconds) |
2025-03-05 22:33:58 +0100 | machinedgod | (~machinedg@d108-173-18-100.abhsia.telus.net) machinedgod |
2025-03-05 22:36:37 +0100 | michalz | (~michalz@185.246.207.222) (Remote host closed the connection) |
2025-03-05 22:36:40 +0100 | <monochrom> | Actually took me a minute or two to see it is not -O2 it is -o exename. |
2025-03-05 22:37:45 +0100 | <monochrom> | Oooohhhh great trick question to put on exam! "John typed in `gcc -o2 main.c`, then can't find a.out, why?" |
2025-03-05 22:37:57 +0100 | alfiee | (~alfiee@user/alfiee) alfiee |
2025-03-05 22:42:11 +0100 | alfiee | (~alfiee@user/alfiee) (Ping timeout: 244 seconds) |
2025-03-05 22:44:02 +0100 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn |
2025-03-05 22:47:42 +0100 | jmcantrell | (~weechat@user/jmcantrell) jmcantrell |
2025-03-05 22:48:23 +0100 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 244 seconds) |
2025-03-05 22:50:48 +0100 | ljdarj1 | (~Thunderbi@user/ljdarj) ljdarj |
2025-03-05 22:53:18 +0100 | ljdarj | (~Thunderbi@user/ljdarj) (Ping timeout: 245 seconds) |
2025-03-05 22:53:18 +0100 | ljdarj1 | ljdarj |
2025-03-05 22:53:54 +0100 | <mauke> | worse is when you intend to use -o, but forget the argument: gcc -o *.c |
2025-03-05 22:57:40 +0100 | <haskellbridge> | <Liamzee> or rather it was an issue requiring cabal clean, sigh |
2025-03-05 22:57:51 +0100 | <haskellbridge> | <Liamzee> also, just curious, why don't Haskellers building frameworks use sum types more? |
2025-03-05 22:58:34 +0100 | <haskellbridge> | <Liamzee> I'm looking at Brick, the interface could have been smoothed out by using a sum type with variants, possibly wrapping subtypes |
2025-03-05 22:59:26 +0100 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn |
2025-03-05 22:59:36 +0100 | <haskellbridge> | <Liamzee> tbh at the very least, it'd create an issue with record field exceptions, unfortunately :( |
2025-03-05 23:00:28 +0100 | <haskellbridge> | <sm> Liamzee which Brick api could have used a sum type ? |
2025-03-05 23:03:28 +0100 | jespada | (~jespada@r186-48-57-94.dialup.adsl.anteldata.net.uy) jespada |
2025-03-05 23:04:01 +0100 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 248 seconds) |
2025-03-05 23:04:24 +0100 | jespada | (~jespada@r186-48-57-94.dialup.adsl.anteldata.net.uy) (Client Quit) |
2025-03-05 23:05:37 +0100 | takuan | (~takuan@d8D86B601.access.telenet.be) (Remote host closed the connection) |
2025-03-05 23:06:06 +0100 | Unicorn_Princess | (~Unicorn_P@user/Unicorn-Princess/x-3540542) (Remote host closed the connection) |
2025-03-05 23:06:48 +0100 | <haskellbridge> | <Liamzee> there are multiple default mains |
2025-03-05 23:07:23 +0100 | <haskellbridge> | <Liamzee> erm, multiple ways to call into brick, alterantive is to have one way, but have the variation be contained in the App API |
2025-03-05 23:07:34 +0100 | <haskellbridge> | <Liamzee> erm, App type API |
2025-03-05 23:08:25 +0100 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn |
2025-03-05 23:09:40 +0100 | <haskellbridge> | <Liamzee> probably my mistake, just thinking about it as a design space |
2025-03-05 23:10:06 +0100 | <haskellbridge> | <sm> https://hackage.haskell.org/package/brick-2.8.2/docs/Brick-Main.html#v:defaultMain and friends eh |
2025-03-05 23:10:48 +0100 | <haskellbridge> | <sm> generally I think haskell frameworks use sum types plenty |
2025-03-05 23:11:49 +0100 | <haskellbridge> | <sm> he probably thought separate main functions for separate use cases was easier to use |
2025-03-05 23:13:00 +0100 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds) |
2025-03-05 23:14:08 +0100 | peterbecich | (~Thunderbi@syn-047-229-123-186.res.spectrum.com) (Ping timeout: 245 seconds) |
2025-03-05 23:15:43 +0100 | mange | (~user@user/mange) mange |
2025-03-05 23:19:56 +0100 | fp | (~Thunderbi@89-27-29-68.bb.dnainternet.fi) fp |
2025-03-05 23:20:29 +0100 | visilii_ | (~visilii@85.172.77.105) |
2025-03-05 23:23:47 +0100 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn |
2025-03-05 23:24:10 +0100 | visilii | (~visilii@213.24.126.217) (Ping timeout: 265 seconds) |
2025-03-05 23:24:41 +0100 | alfiee | (~alfiee@user/alfiee) alfiee |
2025-03-05 23:26:23 +0100 | Pozyomka | (~pyon@user/pyon) (Quit: WeeChat 4.5.2) |
2025-03-05 23:26:42 +0100 | machinedgod | (~machinedg@d108-173-18-100.abhsia.telus.net) (Quit: leaving) |
2025-03-05 23:27:05 +0100 | machinedgod | (~machinedg@d108-173-18-100.abhsia.telus.net) machinedgod |
2025-03-05 23:28:46 +0100 | vanishingideal | (~vanishing@user/vanishingideal) (Ping timeout: 252 seconds) |
2025-03-05 23:29:19 +0100 | alfiee | (~alfiee@user/alfiee) (Ping timeout: 268 seconds) |
2025-03-05 23:30:33 +0100 | <haskellbridge> | <Bowuigi> Implementation-wise it makes sense. Most of those are defined in terms of each other, so it's just abstracting boilerplate |
2025-03-05 23:30:35 +0100 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds) |
2025-03-05 23:31:41 +0100 | chewybread | (~chewybrea@user/chewybread) chewybread |
2025-03-05 23:39:59 +0100 | Googulator | (~Googulato@2a01-036d-0106-14b2-c443-5a96-b49d-1dd5.pool6.digikabel.hu) (Quit: Client closed) |
2025-03-05 23:40:14 +0100 | Googulator | (~Googulato@2a01-036d-0106-14b2-c443-5a96-b49d-1dd5.pool6.digikabel.hu) |
2025-03-05 23:41:30 +0100 | <monochrom> | I made the 'gcc -o main.c' mistake once. |
2025-03-05 23:41:50 +0100 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn |
2025-03-05 23:42:14 +0100 | <monochrom> | Actually it was more like "gcc main.c -o main.c', the 2nd ".c" was because tab-completion. |
2025-03-05 23:43:06 +0100 | <monochrom> | Eventually, my solution was to write a short Makefile (or even, short shell script). |
2025-03-05 23:44:09 +0100 | Googulator | (~Googulato@2a01-036d-0106-14b2-c443-5a96-b49d-1dd5.pool6.digikabel.hu) (Client Quit) |
2025-03-05 23:44:23 +0100 | Googulator | (~Googulato@2a01-036d-0106-14b2-c443-5a96-b49d-1dd5.pool6.digikabel.hu) |
2025-03-05 23:45:34 +0100 | <monochrom> | I haven't used or looked at any frameworks. But I'm happy that in unix, Handler is a sum type: Default, Ignore, Catch, CatchOnce, etc. |
2025-03-05 23:45:58 +0100 | fp | (~Thunderbi@89-27-29-68.bb.dnainternet.fi) (Ping timeout: 268 seconds) |
2025-03-05 23:46:11 +0100 | Ranhir | (~Ranhir@157.97.53.139) (Quit: KVIrc 5.0.0 Aria http://www.kvirc.net/) |
2025-03-05 23:46:48 +0100 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 276 seconds) |
2025-03-05 23:46:50 +0100 | <jackdk> | monochrom: for single-file C programs, `make foo` often gets you there because of the enormous pile of implicit rules |
2025-03-05 23:47:35 +0100 | <monochrom> | In general, you have to ask yourself the open-vs-closed question: Can the user add more cases? Then it pretty much determines whether it's a sum type or a polymorphic type. |
2025-03-05 23:47:54 +0100 | chewybread | (~chewybrea@user/chewybread) (Remote host closed the connection) |
2025-03-05 23:48:28 +0100 | <monochrom> | But I want -O2 and I am too "lazy" (read on) to enter "CFLAGS=-O2 make foo" so I write a full-blown Makefile haha. |
2025-03-05 23:48:43 +0100 | chewybread | (~chewybrea@user/chewybread) chewybread |
2025-03-05 23:48:56 +0100 | <monochrom> | 5 seconds of "CFLAGS=-O2" can be saved by 5 minutes of writing an overblown Makefile :) |
2025-03-05 23:52:10 +0100 | troydm | (~troydm@user/troydm) (Quit: What is Hope? That all of your wishes and all of your dreams come true? To turn back time because things were not supposed to happen like that (C) Rau Le Creuset) |
2025-03-05 23:52:31 +0100 | bilegeek | (~bilegeek@2600:1008:b017:2c77:ca70:bd87:7736:a8da) bilegeek |