2023-03-07 00:00:27 +0100 | shapr | (~user@68.54.166.125) |
2023-03-07 00:02:26 +0100 | rustisafungus | (~segfaultf@12.172.217.142) (Ping timeout: 268 seconds) |
2023-03-07 00:04:43 +0100 | __monty__ | (~toonn@user/toonn) (Quit: leaving) |
2023-03-07 00:18:23 +0100 | shapr | (~user@68.54.166.125) (Ping timeout: 248 seconds) |
2023-03-07 00:18:32 +0100 | ystael_ | (~ystael@user/ystael) (Read error: Connection reset by peer) |
2023-03-07 00:20:18 +0100 | mechap_ | (~mechap@user/mechap) |
2023-03-07 00:20:40 +0100 | ystael | (~ystael@user/ystael) |
2023-03-07 00:22:05 +0100 | codaraxis | (~codaraxis@user/codaraxis) |
2023-03-07 00:23:30 +0100 | mechap | (~mechap@user/mechap) (Ping timeout: 255 seconds) |
2023-03-07 00:24:24 +0100 | jpds | (~jpds@gateway/tor-sasl/jpds) (Remote host closed the connection) |
2023-03-07 00:25:28 +0100 | jpds | (~jpds@gateway/tor-sasl/jpds) |
2023-03-07 00:36:04 +0100 | ctyjr | (~ctyjr@95.107.235.112) |
2023-03-07 00:38:15 +0100 | npm_i_kurbus | (~npm_i_kur@user/kurbus) (Quit: Client closed) |
2023-03-07 00:38:48 +0100 | phileasfogg | (~phileasfo@user/phileasfogg) (Quit: "It's the only way, then they can all forget me. I got too big, Dorium, too noisy. Time to step back into the shadows.") |
2023-03-07 00:39:08 +0100 | ctyjr | (~ctyjr@95.107.235.112) (Client Quit) |
2023-03-07 00:39:33 +0100 | ctyjr | (~ctyjr@95.107.235.112) |
2023-03-07 00:39:59 +0100 | ctyjr | (~ctyjr@95.107.235.112) (Client Quit) |
2023-03-07 00:43:11 +0100 | Albina_Pavlovna | (~Albina_Pa@cpe-66-65-40-132.nyc.res.rr.com) (Quit: bb) |
2023-03-07 00:44:30 +0100 | jmorris | (uid537181@id-537181.uxbridge.irccloud.com) |
2023-03-07 00:44:32 +0100 | gurkenglas | (~gurkengla@dynamic-046-114-156-015.46.114.pool.telefonica.de) (Ping timeout: 248 seconds) |
2023-03-07 00:44:40 +0100 | phileasfogg | (~phileasfo@user/phileasfogg) |
2023-03-07 00:46:42 +0100 | Midjak | (~Midjak@82.66.147.146) (Quit: This computer has gone to sleep) |
2023-03-07 00:46:48 +0100 | lxi | (~quassel@2a02:2f08:4d1c:400:c33f:394a:2177:e1a0) |
2023-03-07 00:51:34 +0100 | Tuplanolla | (~Tuplanoll@91-159-68-152.elisa-laajakaista.fi) |
2023-03-07 00:58:07 +0100 | zeenk | (~zeenk@2a02:2f04:a20d:f900::7fe) (Quit: Konversation terminated!) |
2023-03-07 01:07:57 +0100 | mauke_ | (~mauke@user/mauke) |
2023-03-07 01:09:04 +0100 | mauke | (~mauke@user/mauke) (Ping timeout: 248 seconds) |
2023-03-07 01:09:04 +0100 | mauke_ | mauke |
2023-03-07 01:12:34 +0100 | meinside | (uid24933@id-24933.helmsley.irccloud.com) |
2023-03-07 01:13:04 +0100 | eggplantade | (~Eggplanta@104-55-37-220.lightspeed.sntcca.sbcglobal.net) |
2023-03-07 01:17:24 +0100 | segfaultfizzbuzz | (~segfaultf@12.172.217.142) |
2023-03-07 01:17:35 +0100 | eggplantade | (~Eggplanta@104-55-37-220.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 248 seconds) |
2023-03-07 01:20:45 +0100 | son0p | (~ff@181.136.122.143) |
2023-03-07 01:21:10 +0100 | merijn | (~merijn@86-86-29-250.fixed.kpn.net) |
2023-03-07 01:22:15 +0100 | enoq | (~enoq@2a05:1141:1f5:5600:b9c9:721a:599:bfe7) (Quit: enoq) |
2023-03-07 01:34:24 +0100 | TonyStone | (~TonyStone@cpe-74-76-57-186.nycap.res.rr.com) |
2023-03-07 01:48:11 +0100 | segfaultfizzbuzz | (~segfaultf@12.172.217.142) (Ping timeout: 248 seconds) |
2023-03-07 01:50:43 +0100 | caryhartline | (~caryhartl@cpe-76-187-114-220.tx.res.rr.com) (Quit: caryhartline) |
2023-03-07 01:53:52 +0100 | merijn | (~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 248 seconds) |
2023-03-07 02:06:11 +0100 | tusko | (~yeurt@user/tusko) (Ping timeout: 255 seconds) |
2023-03-07 02:08:27 +0100 | tusko | (~yeurt@user/tusko) |
2023-03-07 02:09:17 +0100 | TonyStone | (~TonyStone@cpe-74-76-57-186.nycap.res.rr.com) (Quit: Leaving) |
2023-03-07 02:10:59 +0100 | albet70 | (~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection) |
2023-03-07 02:14:18 +0100 | zaquest | (~notzaques@5.130.79.72) |
2023-03-07 02:16:30 +0100 | segfaultfizzbuzz | (~segfaultf@12.172.217.142) |
2023-03-07 02:16:48 +0100 | ix | (~ix@213.205.192.69) |
2023-03-07 02:17:07 +0100 | albet70 | (~xxx@2400:8902::f03c:92ff:fe60:98d8) |
2023-03-07 02:18:13 +0100 | Tuplanolla | (~Tuplanoll@91-159-68-152.elisa-laajakaista.fi) (Quit: Leaving.) |
2023-03-07 02:18:36 +0100 | wroathe | (~wroathe@207-153-38-140.fttp.usinternet.com) |
2023-03-07 02:18:36 +0100 | wroathe | (~wroathe@207-153-38-140.fttp.usinternet.com) (Changing host) |
2023-03-07 02:18:36 +0100 | wroathe | (~wroathe@user/wroathe) |
2023-03-07 02:22:51 +0100 | ix | (~ix@213.205.192.69) (Ping timeout: 248 seconds) |
2023-03-07 02:24:42 +0100 | <segfaultfizzbuzz> | what is ' in 'Normal here? https://github.com/awakesecurity/gRPC-haskell/blob/master/examples/echo/echo-hs/EchoServer.hs |
2023-03-07 02:25:37 +0100 | <geekosaur> | it indicates a promoted type |
2023-03-07 02:25:39 +0100 | <monochrom> | You can write Normal without ' in that context. |
2023-03-07 02:25:48 +0100 | <geekosaur> | see the DataKinds extension |
2023-03-07 02:25:53 +0100 | <segfaultfizzbuzz> | geekosaur: promoted? ok |
2023-03-07 02:26:45 +0100 | <monochrom> | Yeah please consult the GHC user's guide on DataKinds. |
2023-03-07 02:26:57 +0100 | <monochrom> | Better than any blog. |
2023-03-07 02:35:35 +0100 | sammelweis | (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Quit: No Ping reply in 180 seconds.) |
2023-03-07 02:36:43 +0100 | sammelweis | (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) |
2023-03-07 02:40:49 +0100 | wroathe | (~wroathe@user/wroathe) (Quit: leaving) |
2023-03-07 02:41:04 +0100 | wroathe | (~wroathe@207-153-38-140.fttp.usinternet.com) |
2023-03-07 02:41:04 +0100 | wroathe | (~wroathe@207-153-38-140.fttp.usinternet.com) (Changing host) |
2023-03-07 02:41:04 +0100 | wroathe | (~wroathe@user/wroathe) |
2023-03-07 02:43:05 +0100 | erisco_ | (~erisco@d24-141-66-165.home.cgocable.net) |
2023-03-07 02:44:37 +0100 | erisco | (~erisco@d24-141-66-165.home.cgocable.net) (Ping timeout: 252 seconds) |
2023-03-07 02:44:37 +0100 | erisco_ | erisco |
2023-03-07 02:44:45 +0100 | thegeekinside | (~thegeekin@189.141.115.134) (Remote host closed the connection) |
2023-03-07 02:48:58 +0100 | vglfr | (~vglfr@145.224.100.65) (Ping timeout: 252 seconds) |
2023-03-07 02:51:10 +0100 | jle` | (~jle`@cpe-23-240-75-236.socal.res.rr.com) (Ping timeout: 252 seconds) |
2023-03-07 02:53:10 +0100 | jle` | (~jle`@cpe-23-240-75-236.socal.res.rr.com) |
2023-03-07 02:55:49 +0100 | Umeaboy | (~Umeaboy@94-255-145-133.cust.bredband2.com) |
2023-03-07 02:55:52 +0100 | <Umeaboy> | Hi! |
2023-03-07 02:57:02 +0100 | <Umeaboy> | Is it possible to use a custom install path for ghc in the happy spec file if I've used homebrew to install ghc? |
2023-03-07 02:57:33 +0100 | <Umeaboy> | I can't get rpmbuild to see ghc if I use the result of whereis ghc |
2023-03-07 02:59:40 +0100 | xff0x | (~xff0x@ai098135.d.east.v6connect.net) (Ping timeout: 265 seconds) |
2023-03-07 03:12:01 +0100 | lisbeths | (uid135845@id-135845.lymington.irccloud.com) |
2023-03-07 03:17:26 +0100 | thegeekinside | (~thegeekin@189.141.115.134) |
2023-03-07 03:23:30 +0100 | Lord_of_Life_ | (~Lord@user/lord-of-life/x-2819915) |
2023-03-07 03:24:42 +0100 | Lord_of_Life | (~Lord@user/lord-of-life/x-2819915) (Ping timeout: 268 seconds) |
2023-03-07 03:24:48 +0100 | Lord_of_Life_ | Lord_of_Life |
2023-03-07 03:27:19 +0100 | gdown | (~gavin@h69-11-148-35.kndrid.broadband.dynamic.tds.net) |
2023-03-07 03:29:57 +0100 | talismanick | (~talismani@2601:200:c000:f7a0::5321) |
2023-03-07 03:36:00 +0100 | fryguybob | (~fryguybob@cpe-24-94-51-210.stny.res.rr.com) (Quit: leaving) |
2023-03-07 03:38:54 +0100 | rekahsoft | (~rekahsoft@bras-base-orllon1122w-grc-07-174-95-68-142.dsl.bell.ca) |
2023-03-07 03:42:10 +0100 | Umeaboy | (~Umeaboy@94-255-145-133.cust.bredband2.com) (Quit: Leaving) |
2023-03-07 03:43:10 +0100 | adanwan | (~adanwan@gateway/tor-sasl/adanwan) (Quit: _) |
2023-03-07 03:43:14 +0100 | thegeekinside | (~thegeekin@189.141.115.134) (Remote host closed the connection) |
2023-03-07 03:43:29 +0100 | adanwan | (~adanwan@gateway/tor-sasl/adanwan) |
2023-03-07 03:44:49 +0100 | xff0x | (~xff0x@125x103x176x34.ap125.ftth.ucom.ne.jp) |
2023-03-07 03:50:18 +0100 | merijn | (~merijn@86-86-29-250.fixed.kpn.net) |
2023-03-07 03:54:32 +0100 | fnurglewitz | (uid263868@id-263868.lymington.irccloud.com) (Quit: Connection closed for inactivity) |
2023-03-07 03:56:20 +0100 | gmg | (~user@user/gehmehgeh) (Remote host closed the connection) |
2023-03-07 03:56:55 +0100 | ix | (~ix@213.205.192.69) |
2023-03-07 03:57:05 +0100 | gmg | (~user@user/gehmehgeh) |
2023-03-07 04:04:55 +0100 | jero98772 | (~jero98772@2800:484:1d80:d8ce:efcc:cbb3:7f2a:6dff) (Remote host closed the connection) |
2023-03-07 04:05:58 +0100 | finn_elija | (~finn_elij@user/finn-elija/x-0085643) |
2023-03-07 04:05:58 +0100 | FinnElija | (~finn_elij@user/finn-elija/x-0085643) (Killed (NickServ (Forcing logout FinnElija -> finn_elija))) |
2023-03-07 04:05:58 +0100 | finn_elija | FinnElija |
2023-03-07 04:08:14 +0100 | razetime | (~Thunderbi@43.254.111.18) |
2023-03-07 04:11:20 +0100 | wroathe | (~wroathe@user/wroathe) (Quit: leaving) |
2023-03-07 04:13:17 +0100 | wroathe | (~wroathe@207-153-38-140.fttp.usinternet.com) |
2023-03-07 04:13:17 +0100 | wroathe | (~wroathe@207-153-38-140.fttp.usinternet.com) (Changing host) |
2023-03-07 04:13:17 +0100 | wroathe | (~wroathe@user/wroathe) |
2023-03-07 04:13:59 +0100 | eggplantade | (~Eggplanta@104-55-37-220.lightspeed.sntcca.sbcglobal.net) |
2023-03-07 04:14:02 +0100 | machinedgod | (~machinedg@d198-53-218-113.abhsia.telus.net) (Ping timeout: 268 seconds) |
2023-03-07 04:19:48 +0100 | gastus_ | (~gastus@5.83.191.63) |
2023-03-07 04:23:17 +0100 | gastus | (~gastus@185.6.123.188) (Ping timeout: 268 seconds) |
2023-03-07 04:23:55 +0100 | merijn | (~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 248 seconds) |
2023-03-07 04:29:10 +0100 | TonyStone | (~TonyStone@cpe-74-76-57-186.nycap.res.rr.com) |
2023-03-07 04:29:35 +0100 | TonyStone | (~TonyStone@cpe-74-76-57-186.nycap.res.rr.com) (Remote host closed the connection) |
2023-03-07 04:31:18 +0100 | td_ | (~td@i53870927.versanet.de) (Ping timeout: 268 seconds) |
2023-03-07 04:32:50 +0100 | td_ | (~td@i53870905.versanet.de) |
2023-03-07 04:35:37 +0100 | rekahsoft | (~rekahsoft@bras-base-orllon1122w-grc-07-174-95-68-142.dsl.bell.ca) (Ping timeout: 268 seconds) |
2023-03-07 04:42:37 +0100 | ix | (~ix@213.205.192.69) (Read error: Connection reset by peer) |
2023-03-07 04:44:39 +0100 | [_] | (~itchyjunk@user/itchyjunk/x-7353470) (Remote host closed the connection) |
2023-03-07 04:45:17 +0100 | cassaundra | (~cassaundr@user/cassaundra) (Quit: leaving) |
2023-03-07 04:47:53 +0100 | ix | (~ix@213.205.192.69) |
2023-03-07 04:49:51 +0100 | notzmv | (~zmv@user/notzmv) (Ping timeout: 248 seconds) |
2023-03-07 04:51:44 +0100 | cassaundra | (~cassaundr@c-73-25-18-25.hsd1.or.comcast.net) |
2023-03-07 04:51:45 +0100 | cassaundra | (~cassaundr@c-73-25-18-25.hsd1.or.comcast.net) (Client Quit) |
2023-03-07 04:52:32 +0100 | cheater | (~Username@user/cheater) |
2023-03-07 04:56:38 +0100 | cassaundra | (~cassaundr@c-73-25-18-25.hsd1.or.comcast.net) |
2023-03-07 04:56:38 +0100 | cassaundra | (~cassaundr@c-73-25-18-25.hsd1.or.comcast.net) (Client Quit) |
2023-03-07 04:57:13 +0100 | gdown | (~gavin@h69-11-148-35.kndrid.broadband.dynamic.tds.net) (Remote host closed the connection) |
2023-03-07 04:59:16 +0100 | notzmv | (~zmv@user/notzmv) |
2023-03-07 05:05:33 +0100 | jpds | (~jpds@gateway/tor-sasl/jpds) (Remote host closed the connection) |
2023-03-07 05:05:58 +0100 | jpds | (~jpds@gateway/tor-sasl/jpds) |
2023-03-07 05:11:05 +0100 | _xor | (~xor@72.49.195.228) |
2023-03-07 05:16:05 +0100 | npm_i_kurbus | (~npm_i_kur@user/kurbus) |
2023-03-07 05:20:13 +0100 | mbuf | (~Shakthi@49.207.178.186) |
2023-03-07 05:21:54 +0100 | cassaundra | (~cassaundr@user/cassaundra) |
2023-03-07 05:22:22 +0100 | segfaultfizzbuzz | (~segfaultf@12.172.217.142) (Quit: segfaultfizzbuzz) |
2023-03-07 05:22:22 +0100 | meinside | (uid24933@id-24933.helmsley.irccloud.com) (Quit: Connection closed for inactivity) |
2023-03-07 05:22:39 +0100 | cassaundra | (~cassaundr@user/cassaundra) (Client Quit) |
2023-03-07 05:27:25 +0100 | waleee | (~waleee@2001:9b0:21c:4000:5bf9:6515:c030:57b7) (Ping timeout: 252 seconds) |
2023-03-07 05:31:11 +0100 | cassiopea | (~cassiopea@user/cassiopea) |
2023-03-07 05:42:07 +0100 | notzmv | (~zmv@user/notzmv) (Ping timeout: 248 seconds) |
2023-03-07 05:47:59 +0100 | wroathe | (~wroathe@user/wroathe) (Ping timeout: 248 seconds) |
2023-03-07 05:51:38 +0100 | rettahcay | (~kaushikv@223.178.86.127) |
2023-03-07 05:52:01 +0100 | rettahcay | (~kaushikv@223.178.86.127) () |
2023-03-07 05:54:24 +0100 | polyphem_ | (~rod@2a02:810d:840:8754:224e:f6ff:fe5e:bc17) (Ping timeout: 248 seconds) |
2023-03-07 05:57:20 +0100 | thegeekinside | (~thegeekin@189.141.115.134) |
2023-03-07 05:57:47 +0100 | ix | (~ix@213.205.192.69) (Ping timeout: 248 seconds) |
2023-03-07 06:10:35 +0100 | lbseale | (~quassel@user/ep1ctetus) (Ping timeout: 268 seconds) |
2023-03-07 06:11:22 +0100 | lisbeths | (uid135845@id-135845.lymington.irccloud.com) (Quit: Connection closed for inactivity) |
2023-03-07 06:14:18 +0100 | jmorris | (uid537181@id-537181.uxbridge.irccloud.com) (Quit: Connection closed for inactivity) |
2023-03-07 06:18:36 +0100 | razetime | (~Thunderbi@43.254.111.18) (Ping timeout: 268 seconds) |
2023-03-07 06:20:20 +0100 | npm_i_kurbus | (~npm_i_kur@user/kurbus) (Quit: Client closed) |
2023-03-07 06:20:35 +0100 | merijn | (~merijn@86-86-29-250.fixed.kpn.net) |
2023-03-07 06:31:02 +0100 | razetime | (~Thunderbi@43.254.111.18) |
2023-03-07 06:32:30 +0100 | npm_i_kurbus | (~npm_i_kur@user/kurbus) |
2023-03-07 06:34:54 +0100 | jwiegley | (~jwiegley@76-234-69-149.lightspeed.frokca.sbcglobal.net) (Quit: ZNC - http://znc.in) |
2023-03-07 06:34:54 +0100 | johnw | (~johnw@76-234-69-149.lightspeed.frokca.sbcglobal.net) (Quit: ZNC - http://znc.in) |
2023-03-07 06:38:15 +0100 | freeside | (~mengwong@103.252.202.85) (Ping timeout: 260 seconds) |
2023-03-07 06:41:15 +0100 | freeside | (~mengwong@103.252.202.85) |
2023-03-07 06:42:13 +0100 | Square2 | (~Square4@user/square) |
2023-03-07 06:42:59 +0100 | ix | (~ix@213.205.192.69) |
2023-03-07 06:55:23 +0100 | merijn | (~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 248 seconds) |
2023-03-07 06:58:23 +0100 | whatsupdoc | (uid509081@id-509081.hampstead.irccloud.com) |
2023-03-07 07:01:04 +0100 | npm_i_kurbus | (~npm_i_kur@user/kurbus) (Quit: Client closed) |
2023-03-07 07:03:36 +0100 | bgs | (~bgs@212-85-160-171.dynamic.telemach.net) |
2023-03-07 07:04:09 +0100 | lisbeths | (uid135845@id-135845.lymington.irccloud.com) |
2023-03-07 07:11:23 +0100 | kenran | (~user@user/kenran) |
2023-03-07 07:12:42 +0100 | kenran | (~user@user/kenran) (Remote host closed the connection) |
2023-03-07 07:13:44 +0100 | takuan | (~takuan@178-116-218-225.access.telenet.be) |
2023-03-07 07:16:00 +0100 | razetime | (~Thunderbi@43.254.111.18) (Ping timeout: 248 seconds) |
2023-03-07 07:18:39 +0100 | takuan | (~takuan@178-116-218-225.access.telenet.be) (Ping timeout: 248 seconds) |
2023-03-07 07:26:45 +0100 | harveypwca | (~harveypwc@2601:246:c180:a570:3828:d8:e523:3f67) |
2023-03-07 07:29:05 +0100 | trev | (~trev@user/trev) |
2023-03-07 07:38:16 +0100 | rettahcay | (~kaushikv@223.178.86.127) |
2023-03-07 07:38:46 +0100 | cheater_ | (~Username@user/cheater) |
2023-03-07 07:40:59 +0100 | johnw | (~johnw@76-234-69-149.lightspeed.frokca.sbcglobal.net) |
2023-03-07 07:41:29 +0100 | jwiegley | (~jwiegley@76-234-69-149.lightspeed.frokca.sbcglobal.net) |
2023-03-07 07:41:37 +0100 | cheater | (~Username@user/cheater) (Ping timeout: 252 seconds) |
2023-03-07 07:41:41 +0100 | cheater_ | cheater |
2023-03-07 07:52:29 +0100 | notzmv | (~zmv@user/notzmv) |
2023-03-07 07:54:24 +0100 | rettahcay | (~kaushikv@223.178.86.127) () |
2023-03-07 07:55:07 +0100 | thegeekinside | (~thegeekin@189.141.115.134) (Ping timeout: 248 seconds) |
2023-03-07 07:59:11 +0100 | shriekingnoise | (~shrieking@186.137.175.87) (Ping timeout: 248 seconds) |
2023-03-07 07:59:22 +0100 | michalz | (~michalz@185.246.204.126) |
2023-03-07 08:08:27 +0100 | notzmv | (~zmv@user/notzmv) (Ping timeout: 248 seconds) |
2023-03-07 08:10:37 +0100 | notzmv | (~zmv@user/notzmv) |
2023-03-07 08:10:54 +0100 | jakalx | (~jakalx@base.jakalx.net) () |
2023-03-07 08:17:10 +0100 | bliminse | (~bliminse@user/bliminse) (Quit: leaving) |
2023-03-07 08:20:03 +0100 | jakalx | (~jakalx@base.jakalx.net) |
2023-03-07 08:21:15 +0100 | gnalzo | (~gnalzo@2a01:e0a:498:fd50:fcc6:bb5d:489a:ce8c) |
2023-03-07 08:24:52 +0100 | cheater_ | (~Username@user/cheater) |
2023-03-07 08:26:35 +0100 | cheater | (~Username@user/cheater) (Ping timeout: 248 seconds) |
2023-03-07 08:26:38 +0100 | cheater_ | cheater |
2023-03-07 08:31:33 +0100 | razetime | (~Thunderbi@117.193.1.99) |
2023-03-07 08:36:07 +0100 | lortabac | (~lortabac@2a01:e0a:541:b8f0:cdff:bbec:88eb:b8a) |
2023-03-07 08:37:52 +0100 | Square3 | (~Square4@user/square) |
2023-03-07 08:39:44 +0100 | Square2 | (~Square4@user/square) (Ping timeout: 248 seconds) |
2023-03-07 08:48:30 +0100 | bliminse | (~bliminse@user/bliminse) |
2023-03-07 08:50:19 +0100 | harveypwca | (~harveypwc@2601:246:c180:a570:3828:d8:e523:3f67) (Quit: Leaving) |
2023-03-07 08:50:45 +0100 | monochrom | (trebla@216.138.220.146) (Ping timeout: 255 seconds) |
2023-03-07 08:51:13 +0100 | merijn | (~merijn@86-86-29-250.fixed.kpn.net) |
2023-03-07 08:54:13 +0100 | mncheck | (~mncheck@193.224.205.254) |
2023-03-07 08:55:55 +0100 | merijn | (~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 248 seconds) |
2023-03-07 08:56:46 +0100 | meinside | (uid24933@id-24933.helmsley.irccloud.com) |
2023-03-07 08:57:47 +0100 | monochrom | (trebla@216.138.220.146) |
2023-03-07 08:59:57 +0100 | coot | (~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba) |
2023-03-07 09:02:14 +0100 | eggplantade | (~Eggplanta@104-55-37-220.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection) |
2023-03-07 09:06:48 +0100 | MajorBiscuit | (~MajorBisc@2001:1c00:2408:a400:67e:5371:52a7:9b9a) |
2023-03-07 09:09:32 +0100 | hugo- | (znc@verdigris.lysator.liu.se) (Ping timeout: 255 seconds) |
2023-03-07 09:12:59 +0100 | MajorBiscuit | (~MajorBisc@2001:1c00:2408:a400:67e:5371:52a7:9b9a) (Ping timeout: 248 seconds) |
2023-03-07 09:13:21 +0100 | Sgeo | (~Sgeo@user/sgeo) (Read error: Connection reset by peer) |
2023-03-07 09:14:38 +0100 | codaraxis__ | (~codaraxis@user/codaraxis) |
2023-03-07 09:14:38 +0100 | lottaquestions | (~nick@2607:fa49:503e:7100:29d5:6a23:249a:7ab4) (Remote host closed the connection) |
2023-03-07 09:15:01 +0100 | MajorBiscuit | (~MajorBisc@c-001-030-044.client.tudelft.eduvpn.nl) |
2023-03-07 09:15:04 +0100 | lottaquestions | (~nick@2607:fa49:503e:7100:dbe0:8110:91f3:4f25) |
2023-03-07 09:15:08 +0100 | hugo | (znc@verdigris.lysator.liu.se) |
2023-03-07 09:16:05 +0100 | jpds | (~jpds@gateway/tor-sasl/jpds) (Remote host closed the connection) |
2023-03-07 09:17:48 +0100 | jpds | (~jpds@gateway/tor-sasl/jpds) |
2023-03-07 09:18:08 +0100 | codaraxis | (~codaraxis@user/codaraxis) (Ping timeout: 248 seconds) |
2023-03-07 09:19:58 +0100 | ft | (~ft@p3e9bc443.dip0.t-ipconnect.de) (Quit: leaving) |
2023-03-07 09:30:40 +0100 | ubert1 | (~Thunderbi@p200300ecdf0c57b39b0cedad49907c5f.dip0.t-ipconnect.de) |
2023-03-07 09:30:41 +0100 | merijn | (~merijn@86-86-29-250.fixed.kpn.net) |
2023-03-07 09:33:48 +0100 | Midjak | (~Midjak@82.66.147.146) |
2023-03-07 09:37:04 +0100 | <Philonous> | I'm trying to write a bug report for the network package, but I'd like to figure out some details to include, where would be a good place to ask Linux network API related questions? |
2023-03-07 09:38:21 +0100 | hugo | (znc@verdigris.lysator.liu.se) (Ping timeout: 256 seconds) |
2023-03-07 09:38:43 +0100 | vglfr | (~vglfr@145.224.100.65) |
2023-03-07 09:43:24 +0100 | gurkenglas | (~gurkengla@dynamic-046-114-156-015.46.114.pool.telefonica.de) |
2023-03-07 09:46:12 +0100 | Inst | (~Inst@2601:6c4:4081:54f0:a86f:4b5c:43f7:99bc) |
2023-03-07 09:46:22 +0100 | <Inst> | I don't get why there's not more people talking about Streamly, it's a great fucking library |
2023-03-07 09:46:31 +0100 | <Inst> | 67% of C performance |
2023-03-07 09:46:46 +0100 | <Inst> | let me reboot and trial on debian instead of WSL, might be able to get better performance that way |
2023-03-07 09:48:42 +0100 | Inst | (~Inst@2601:6c4:4081:54f0:a86f:4b5c:43f7:99bc) (Read error: Connection reset by peer) |
2023-03-07 09:49:29 +0100 | hugo | (znc@verdigris.lysator.liu.se) |
2023-03-07 09:50:00 +0100 | cfricke | (~cfricke@user/cfricke) |
2023-03-07 09:57:47 +0100 | machinedgod | (~machinedg@d198-53-218-113.abhsia.telus.net) |
2023-03-07 10:02:42 +0100 | eggplantade | (~Eggplanta@2600:1700:38c5:d800:ed80:eb1e:1340:95af) |
2023-03-07 10:07:05 +0100 | eggplantade | (~Eggplanta@2600:1700:38c5:d800:ed80:eb1e:1340:95af) (Ping timeout: 260 seconds) |
2023-03-07 10:14:03 +0100 | razetime | (~Thunderbi@117.193.1.99) (Quit: See You Space Cowboy) |
2023-03-07 10:17:23 +0100 | cheater_ | (~Username@user/cheater) |
2023-03-07 10:19:28 +0100 | cheater | (~Username@user/cheater) (Ping timeout: 248 seconds) |
2023-03-07 10:19:38 +0100 | cheater_ | cheater |
2023-03-07 10:28:06 +0100 | chomwitt | (~chomwitt@2a02:587:7a18:6d00:1ac0:4dff:fedb:a3f1) |
2023-03-07 10:28:40 +0100 | Eihel | (~Eihel@wikipedia/eihel) |
2023-03-07 10:29:30 +0100 | Eihel | (~Eihel@wikipedia/eihel) () |
2023-03-07 10:31:22 +0100 | lisbeths | (uid135845@id-135845.lymington.irccloud.com) (Quit: Connection closed for inactivity) |
2023-03-07 10:31:55 +0100 | merijn | (~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 248 seconds) |
2023-03-07 10:32:26 +0100 | azimut | (~azimut@gateway/tor-sasl/azimut) (Ping timeout: 255 seconds) |
2023-03-07 10:34:56 +0100 | tzh | (~tzh@c-24-21-73-154.hsd1.or.comcast.net) (Quit: zzz) |
2023-03-07 10:37:47 +0100 | ix | (~ix@213.205.192.69) (Ping timeout: 248 seconds) |
2023-03-07 10:39:23 +0100 | gurkenglas | (~gurkengla@dynamic-046-114-156-015.46.114.pool.telefonica.de) (Ping timeout: 248 seconds) |
2023-03-07 10:40:38 +0100 | ix | (~ix@213.205.192.69) |
2023-03-07 10:46:18 +0100 | merijn | (~merijn@86-86-29-250.fixed.kpn.net) |
2023-03-07 11:03:54 +0100 | eggplantade | (~Eggplanta@2600:1700:38c5:d800:182e:ca34:e210:1559) |
2023-03-07 11:06:42 +0100 | mncheck | (~mncheck@193.224.205.254) (Remote host closed the connection) |
2023-03-07 11:08:25 +0100 | eggplantade | (~Eggplanta@2600:1700:38c5:d800:182e:ca34:e210:1559) (Ping timeout: 252 seconds) |
2023-03-07 11:12:16 +0100 | xff0x | (~xff0x@125x103x176x34.ap125.ftth.ucom.ne.jp) (Ping timeout: 248 seconds) |
2023-03-07 11:12:59 +0100 | cheater | (~Username@user/cheater) (Ping timeout: 248 seconds) |
2023-03-07 11:20:15 +0100 | werneta | (~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net) (Ping timeout: 248 seconds) |
2023-03-07 11:22:16 +0100 | werneta | (~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net) |
2023-03-07 11:22:20 +0100 | codaraxis__ | (~codaraxis@user/codaraxis) (Quit: Leaving) |
2023-03-07 11:32:44 +0100 | emmanuelux | (~emmanuelu@user/emmanuelux) |
2023-03-07 11:35:41 +0100 | ix | (~ix@213.205.192.69) (Read error: Connection reset by peer) |
2023-03-07 11:35:49 +0100 | Inst | (~Inst@2601:6c4:4081:54f0:c4dc:214a:b41a:859d) |
2023-03-07 11:35:51 +0100 | <Inst> | ugh |
2023-03-07 11:36:24 +0100 | <Inst> | streamly is great and all, but i rebuilt as per settings, and their WC is still 33% slower than wc |
2023-03-07 11:39:06 +0100 | jumper149 | (~jumper149@base.felixspringer.xyz) |
2023-03-07 11:41:05 +0100 | ix | (~ix@213.205.192.69) |
2023-03-07 11:41:46 +0100 | <jumper149> | Are there two different `(->)`s? Because if I ask ghci, it tells me `:k (->)` is `Type -> Type -> Type`. But kind signatures disagree with this. For example `:k Const` is `Type -> k -> Type` and also `:k Eq` is `Type -> Constraint`. `k` and `Constraints` are clearly not `Type`, right? |
2023-03-07 11:42:52 +0100 | <merijn> | jumper149: Yes |
2023-03-07 11:43:08 +0100 | <merijn> | There is "->" at the type level and "->" at the kind level |
2023-03-07 11:43:27 +0100 | <merijn> | Although, I suppose GHC now also has TypeInType lunacy making them "the same but different" |
2023-03-07 11:43:39 +0100 | <jumper149> | merijn: So `->` at kind level would have kind `a -> b -> c` then, I guess? |
2023-03-07 11:44:22 +0100 | evanmeek | (~user@91.217.139.207) |
2023-03-07 11:44:49 +0100 | <merijn> | jumper149: Where 'a, b, and c' are some kind with sort BOX, yes :p |
2023-03-07 11:45:05 +0100 | <merijn> | Unless you believe in TypeInType heresy, then I dunno what it should be |
2023-03-07 11:45:14 +0100 | the_proffesor | (~theproffe@user/theproffesor) (Ping timeout: 255 seconds) |
2023-03-07 11:47:44 +0100 | <jumper149> | I'm not sure, what "sort" and "BOX" are. Afaiu: Values have types, while types have kinds and kinds have kinds. Is that not correct? |
2023-03-07 11:48:07 +0100 | <jumper149> | Compared to dependent types where: Values have types and types have types. |
2023-03-07 11:51:10 +0100 | <tomsmeding> | rather, in dependent types, values have types, types have kinds, kinds have sorts, sorts have ... : an infinite stack |
2023-03-07 11:51:17 +0100 | <tomsmeding> | in sound dependent types, that is |
2023-03-07 11:51:53 +0100 | <tomsmeding> | in GHC haskell with TypeInType (which has been the case since ghc 6 or so), values have types, and types have types: the stack stops one level earlier |
2023-03-07 11:52:09 +0100 | <tomsmeding> | but in practice it's very useful to distinguish between types and kinds, yielding what you wrote |
2023-03-07 11:52:23 +0100 | <tomsmeding> | % :k Type |
2023-03-07 11:52:23 +0100 | <yahb2> | <interactive>:1:1: error: ; Not in scope: type constructor or class ‘Type’ |
2023-03-07 11:52:26 +0100 | <tomsmeding> | % :k Data.Kind.Type |
2023-03-07 11:52:26 +0100 | <yahb2> | Data.Kind.Type :: * |
2023-03-07 11:52:33 +0100 | <tomsmeding> | % :set -XNoStarIsType |
2023-03-07 11:52:33 +0100 | <yahb2> | <no output> |
2023-03-07 11:52:35 +0100 | <tomsmeding> | % :k Data.Kind.Type |
2023-03-07 11:52:35 +0100 | <yahb2> | Data.Kind.Type :: Type |
2023-03-07 11:52:43 +0100 | cheater | (~Username@user/cheater) |
2023-03-07 11:53:35 +0100 | <merijn> | jumper149: In the "classical" type theory GHC are based on, the values have types, types have kinds, and kinds have sorts (and the only existing sort within GHC was BOX, so every kind has sort BOX) |
2023-03-07 11:53:41 +0100 | <merijn> | tomsmeding: TypeInType is 8.x |
2023-03-07 11:53:50 +0100 | <tomsmeding> | ah |
2023-03-07 11:53:55 +0100 | <tomsmeding> | what happened before |
2023-03-07 11:54:01 +0100 | <Inst> | now types trigger russell's paradox |
2023-03-07 11:54:04 +0100 | <merijn> | GHC 6 was, like, over a decade ago |
2023-03-07 11:54:17 +0100 | <tomsmeding> | was type-level ghc haskell just not expressive enough to observe the equality of sorts and kinds or something? |
2023-03-07 11:54:19 +0100 | <merijn> | Although I guess TypeInType is also a few years old by now |
2023-03-07 11:54:31 +0100 | <tomsmeding> | because I find it unlikely that ghc had a full infinite universe stack |
2023-03-07 11:54:32 +0100 | <merijn> | tomsmeding: There was no other sort thatn BOX |
2023-03-07 11:54:49 +0100 | <Inst> | was there datakinds at the time? |
2023-03-07 11:55:02 +0100 | econo | (uid147250@user/econo) (Quit: Connection closed for inactivity) |
2023-03-07 11:55:09 +0100 | <tomsmeding> | datakinds is since 7.4.1 according to the ghc user guide |
2023-03-07 11:55:22 +0100 | <merijn> | DataKinds isn't really affected by this |
2023-03-07 11:55:55 +0100 | <Inst> | you'd imagine that with user-definable types and kinds, you'd naturally end up with sorts |
2023-03-07 11:55:56 +0100 | cheater_ | (~Username@user/cheater) |
2023-03-07 11:56:05 +0100 | <Inst> | also, does MVar or TVar go better with streamly? |
2023-03-07 11:56:33 +0100 | <merijn> | Inst: Why would you naturally end up with sorts? |
2023-03-07 11:56:50 +0100 | <merijn> | GHC has never been able to represent kinds not in BOX, so you couldn't write them anyway |
2023-03-07 11:56:58 +0100 | <Inst> | well, probably datakinds isn't powerful enough, but you might be interested in giving... |
2023-03-07 11:56:59 +0100 | <Inst> | ah |
2023-03-07 11:57:55 +0100 | cheater | (~Username@user/cheater) (Ping timeout: 260 seconds) |
2023-03-07 11:57:58 +0100 | cheater__ | (~Username@user/cheater) |
2023-03-07 11:57:59 +0100 | cheater__ | cheater |
2023-03-07 11:59:43 +0100 | evanmeek | (~user@91.217.139.207) (Remote host closed the connection) |
2023-03-07 12:00:44 +0100 | <jumper149> | tomsmeding: Isn't there a problem with the infinite stack for dependent types? What type/kind/sort does `(->)` have here. |
2023-03-07 12:00:59 +0100 | cheater_ | (~Username@user/cheater) (Ping timeout: 248 seconds) |
2023-03-07 12:02:17 +0100 | <tomsmeding> | jumper149: in dependent types? |
2023-03-07 12:02:21 +0100 | <jumper149> | Yes |
2023-03-07 12:03:39 +0100 | <tomsmeding> | in Agda, (->) is a special thing https://agda.readthedocs.io/en/v2.6.3/language/function-types.html |
2023-03-07 12:03:40 +0100 | <jumper149> | Maybe that question doesn't make sense, but intuitively I would have said "the type of `(->)` is `Type -> Type -> Type`" |
2023-03-07 12:04:27 +0100 | <jumper149> | I have mostly experience with Idris, where I actually think "types have types" is true. There was some note about unsoundness somewhere. |
2023-03-07 12:06:29 +0100 | <ncf> | idris, like agda, has an infinite hierarchy of universes |
2023-03-07 12:06:47 +0100 | xff0x | (~xff0x@2405:6580:b080:900:c9db:48d9:400c:36fe) |
2023-03-07 12:07:03 +0100 | <jumper149> | https://idris2.readthedocs.io/en/latest/faq/faq.html#does-idris-have-universe-polymorphism-what-is… |
2023-03-07 12:07:08 +0100 | <tomsmeding> | can't find the definition of (->) or pi-types or similar for idris in 2mins of casual searching |
2023-03-07 12:08:35 +0100 | <tomsmeding> | and I'm not sure asking for "the type of Π" makes sense in such a system |
2023-03-07 12:09:10 +0100 | <tomsmeding> | like you have to go outside of a logical system to prove that system's soundness, usually |
2023-03-07 12:09:42 +0100 | <jumper149> | tomsmeding: I'm not sure either. |
2023-03-07 12:09:59 +0100 | <jumper149> | Is it even possible to prove "soundness" for something like Idris or Agda? |
2023-03-07 12:10:15 +0100 | <tomsmeding> | a non-dependent function arrow would be typeable, though: (->) : forall (n m : Level). forall (a : Set n). forall (b : Set m). a -> b -> Set (max n m) |
2023-03-07 12:10:17 +0100 | <tomsmeding> | or something |
2023-03-07 12:10:20 +0100 | <tomsmeding> | probably got that wrong |
2023-03-07 12:10:26 +0100 | <tomsmeding> | also that definition uses (->) itself, so what gives? |
2023-03-07 12:10:46 +0100 | <tomsmeding> | jumper149: would that not be the soundness of type theory, basically? |
2023-03-07 12:11:06 +0100 | <tomsmeding> | which is just a logic |
2023-03-07 12:11:23 +0100 | <jumper149> | tomsmeding: That violates the 2nd incompleteness theorem, doesn't it? |
2023-03-07 12:11:23 +0100 | <tomsmeding> | asking for the soundness of that is similar to asking for the soundness of ZF set theory or something |
2023-03-07 12:12:21 +0100 | <tomsmeding> | jumper149: that's what I was referring to, yeah -- proving the soundness of the system within itself is not possible |
2023-03-07 12:12:34 +0100 | <tomsmeding> | not quite the same as giving types to things though |
2023-03-07 12:13:22 +0100 | <ncf> | tomsmeding: that would be (->) : Set n -> Set m -> Set (max n m) |
2023-03-07 12:13:34 +0100 | <tomsmeding> | eliding the foralls, yes |
2023-03-07 12:13:41 +0100 | <tomsmeding> | oh no |
2023-03-07 12:13:45 +0100 | <ncf> | no, what you wrote is different |
2023-03-07 12:13:47 +0100 | <tomsmeding> | it is |
2023-03-07 12:13:59 +0100 | <tomsmeding> | yeah you're right |
2023-03-07 12:14:12 +0100 | <jumper149> | (a : Set n) -> (b : Set m) -> (c : Set (max n m)0 |
2023-03-07 12:14:25 +0100 | <tomsmeding> | can't bind the result to a name :p |
2023-03-07 12:14:28 +0100 | <tomsmeding> | but yes |
2023-03-07 12:14:49 +0100 | <jumper149> | Syntax issue :D |
2023-03-07 12:15:29 +0100 | <ncf> | Π could also be given a type: Π : (A : Set n) → (B : A → Set m) → Set (max n m) |
2023-03-07 12:15:49 +0100 | <tomsmeding> | hm yeah |
2023-03-07 12:16:01 +0100 | <tomsmeding> | with the same issue that you're now using Π in the type of Π |
2023-03-07 12:16:04 +0100 | <ncf> | of course, usually Π is taken as primitive so that does not literally make sense, but you can always ask for the type of λ A B. Π A B |
2023-03-07 12:16:32 +0100 | <jumper149> | tomsmeding: A recursive definition would still be a definition though, right? |
2023-03-07 12:16:57 +0100 | <tomsmeding> | I... guess? Though in most systems, the type of a thing cannot contain that thing itself :p |
2023-03-07 12:17:05 +0100 | <tomsmeding> | that gives paradoxes very quickly I think |
2023-03-07 12:17:16 +0100 | ccapndave | (~ccapndave@xcpe-62-167-164-99.cgn.res.adslplus.ch) |
2023-03-07 12:17:17 +0100 | <tomsmeding> | % data A (a :: A ()) = MkA |
2023-03-07 12:17:17 +0100 | <yahb2> | <interactive>:26:16: error: ; Illegal kind: ‘()’ Perhaps you intended to use DataKinds |
2023-03-07 12:17:25 +0100 | <tomsmeding> | % :set -XDataKinds -XKindSignatures |
2023-03-07 12:17:25 +0100 | <yahb2> | <no output> |
2023-03-07 12:17:28 +0100 | <tomsmeding> | % data A (a :: A ()) = MkA |
2023-03-07 12:17:28 +0100 | <yahb2> | <interactive>:30:14: error: ; • Type constructor ‘A’ cannot be used here ; (it is defined and used in the same recursive group) ; • In the kind ‘A ()’ ; In the data type decla... |
2023-03-07 12:17:47 +0100 | <tomsmeding> | not that haskell is sounds as a proof system anyway |
2023-03-07 12:17:50 +0100 | <tomsmeding> | *sound |
2023-03-07 12:18:21 +0100 | <jumper149> | ... bringing us back to russels paradox I guess |
2023-03-07 12:18:46 +0100 | <ncf> | maybe a better way to see this would be to define Π_n, the Π type former for the universe level n. then you'd have Π_n : (A : Set n) → (B : A → Set n) → Set n, where the Π's involved in that type are Π_(n+1) |
2023-03-07 12:18:57 +0100 | <ncf> | so there's no actual recursion, more of a "microcosm principle" |
2023-03-07 12:19:18 +0100 | <tomsmeding> | you'd want to allow either A or B to yield something smaller than n though |
2023-03-07 12:19:36 +0100 | <ncf> | you can always lift values from Set n to Set m provided n <= m |
2023-03-07 12:19:50 +0100 | <tomsmeding> | agda doesn't like that I believe, but yes with some handwaving in any case |
2023-03-07 12:20:02 +0100 | <tomsmeding> | iirc idris has that as an axiom indeed |
2023-03-07 12:21:04 +0100 | <ncf> | there's a --cumulativity flag, but even without it you can do things like https://agda.github.io/agda-stdlib/Level.html |
2023-03-07 12:22:26 +0100 | <tomsmeding> | TIL |
2023-03-07 12:24:13 +0100 | emmanuelux | (~emmanuelu@user/emmanuelux) (Read error: Connection reset by peer) |
2023-03-07 12:24:29 +0100 | emmanuelux | (~emmanuelu@user/emmanuelux) |
2023-03-07 12:24:31 +0100 | <tomsmeding> | (for lurkers: https://agda.readthedocs.io/en/v2.6.3/language/cumulativity.html ) |
2023-03-07 12:26:09 +0100 | emmanuelux | (~emmanuelu@user/emmanuelux) (Read error: Connection reset by peer) |
2023-03-07 12:26:42 +0100 | emmanuelux | (~emmanuelu@user/emmanuelux) |
2023-03-07 12:27:29 +0100 | emmanuelux | (~emmanuelu@user/emmanuelux) (Read error: Connection reset by peer) |
2023-03-07 12:32:03 +0100 | emmanuelux | (~emmanuelu@user/emmanuelux) |
2023-03-07 12:34:22 +0100 | cheater | (~Username@user/cheater) (Read error: Connection reset by peer) |
2023-03-07 12:35:08 +0100 | cheater | (~Username@user/cheater) |
2023-03-07 12:36:11 +0100 | xff0x | (~xff0x@2405:6580:b080:900:c9db:48d9:400c:36fe) (Ping timeout: 248 seconds) |
2023-03-07 12:36:37 +0100 | cfricke | (~cfricke@user/cfricke) (Ping timeout: 268 seconds) |
2023-03-07 12:38:02 +0100 | xff0x | (~xff0x@ai098135.d.east.v6connect.net) |
2023-03-07 12:42:41 +0100 | kuribas | (~user@ip-188-118-57-242.reverse.destiny.be) |
2023-03-07 12:51:21 +0100 | Square2 | (~Square4@user/square) |
2023-03-07 12:52:30 +0100 | __monty__ | (~toonn@user/toonn) |
2023-03-07 12:53:51 +0100 | Square3 | (~Square4@user/square) (Ping timeout: 256 seconds) |
2023-03-07 12:54:37 +0100 | pikipiki | (~pikipiki@2a00:8a60:c000:1:3c66:5b32:c285:a7b7) |
2023-03-07 13:01:24 +0100 | takuan | (~takuan@178-116-218-225.access.telenet.be) |
2023-03-07 13:05:29 +0100 | eggplantade | (~Eggplanta@2600:1700:38c5:d800:182e:ca34:e210:1559) |
2023-03-07 13:06:34 +0100 | meinside | (uid24933@id-24933.helmsley.irccloud.com) (Quit: Connection closed for inactivity) |
2023-03-07 13:06:35 +0100 | pikipiki | (~pikipiki@2a00:8a60:c000:1:3c66:5b32:c285:a7b7) (Read error: Connection reset by peer) |
2023-03-07 13:07:20 +0100 | zephyr__ | (~irfan@182.69.86.253) |
2023-03-07 13:08:04 +0100 | pikipiki | (~pikipiki@2a00:8a60:c000:1:3c66:5b32:c285:a7b7) |
2023-03-07 13:10:15 +0100 | eggplantade | (~Eggplanta@2600:1700:38c5:d800:182e:ca34:e210:1559) (Ping timeout: 260 seconds) |
2023-03-07 13:10:15 +0100 | pikipiki | (~pikipiki@2a00:8a60:c000:1:3c66:5b32:c285:a7b7) (Read error: Connection reset by peer) |
2023-03-07 13:11:08 +0100 | pikipiki | (~pikipiki@2a00:8a60:c000:1:3c66:5b32:c285:a7b7) |
2023-03-07 13:13:31 +0100 | pikipiki | (~pikipiki@2a00:8a60:c000:1:3c66:5b32:c285:a7b7) (Read error: Connection reset by peer) |
2023-03-07 13:13:50 +0100 | pikipiki | (~pikipiki@dynamic-046-114-105-147.46.114.pool.telefonica.de) |
2023-03-07 13:13:52 +0100 | pikipiki | (~pikipiki@dynamic-046-114-105-147.46.114.pool.telefonica.de) (Read error: Connection reset by peer) |
2023-03-07 13:13:59 +0100 | pikipiki | (~pikipiki@2a00:8a60:c000:1:3c66:5b32:c285:a7b7) |
2023-03-07 13:17:36 +0100 | Inst_ | (~Inst@2601:6c4:4081:54f0:4d94:d8d8:7d2b:a18e) |
2023-03-07 13:18:42 +0100 | cfricke | (~cfricke@user/cfricke) |
2023-03-07 13:19:10 +0100 | ccapndave | (~ccapndave@xcpe-62-167-164-99.cgn.res.adslplus.ch) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
2023-03-07 13:21:31 +0100 | Inst | (~Inst@2601:6c4:4081:54f0:c4dc:214a:b41a:859d) (Ping timeout: 248 seconds) |
2023-03-07 13:22:30 +0100 | Inst_ | (~Inst@2601:6c4:4081:54f0:4d94:d8d8:7d2b:a18e) (Ping timeout: 260 seconds) |
2023-03-07 13:25:19 +0100 | ccapndave | (~ccapndave@xcpe-62-167-164-99.cgn.res.adslplus.ch) |
2023-03-07 13:27:42 +0100 | pikipiki | (~pikipiki@2a00:8a60:c000:1:3c66:5b32:c285:a7b7) (Quit: Quit) |
2023-03-07 13:27:55 +0100 | zephyr__ | (~irfan@182.69.86.253) (Quit: leaving) |
2023-03-07 13:28:43 +0100 | npm_i_kurbus | (~npm_i_kur@user/kurbus) |
2023-03-07 13:29:27 +0100 | lyle | (~lyle@104.246.145.237) |
2023-03-07 13:34:39 +0100 | mechap | (~mechap@user/mechap) |
2023-03-07 13:37:52 +0100 | mechap_ | (~mechap@user/mechap) (Ping timeout: 248 seconds) |
2023-03-07 13:45:57 +0100 | ix | (~ix@213.205.192.69) (Ping timeout: 255 seconds) |
2023-03-07 13:53:35 +0100 | jpds | (~jpds@gateway/tor-sasl/jpds) (Ping timeout: 255 seconds) |
2023-03-07 13:54:25 +0100 | Inst | (~Inst@2601:6c4:4081:54f0:a1f8:4ef8:3abb:c29) |
2023-03-07 13:54:35 +0100 | <Inst> | also |
2023-03-07 13:54:47 +0100 | <Inst> | why does the :: Eq a => [a] -> a exist? |
2023-03-07 13:55:09 +0100 | <Inst> | https://hackage.haskell.org/package/base-4.18.0.0/docs/GHC-Exts.html#v:the |
2023-03-07 13:56:07 +0100 | <hellwolf[m]> | ^^ |
2023-03-07 13:56:08 +0100 | <sm> | yes Guest31, it's a useful prototyping/pseudo-code/type-annotating language |
2023-03-07 13:56:10 +0100 | <Clinton[m]> | Using servant, I've got a type like the following, but more complex:... (full message at <https://libera.ems.host/_matrix/media/v3/download/libera.chat/f957189b01a55c43ed3532ac48be10aee38f…>) |
2023-03-07 13:56:10 +0100 | <jean-paul[m]> | alloca() in C might overflow the stack. Can the alloca functions in Foreign.Marshal.Alloc? From the docs it sounds like no, but only by implication, not explicit statement. |
2023-03-07 13:56:10 +0100 | <Jade[m]1> | ¯\_(ツ)_/¯ might have some use-cases |
2023-03-07 13:57:22 +0100 | <Jade[m]1> | could imagine something like the . map (rem 2) |
2023-03-07 13:57:46 +0100 | <Jade[m]1> | * could imagine something like the . map (`rem` 2) |
2023-03-07 13:58:15 +0100 | <Jade[m]1> | But it does seem bad because it's partial |
2023-03-07 13:58:17 +0100 | <Jade[m]1> | s/partial/not total/ |
2023-03-07 13:58:43 +0100 | <Jade[m]1> | would have preferred something like `(Eq a, Foldable t) => t a -> Maybe a` |
2023-03-07 14:00:05 +0100 | <fbytez> | Whats the difference between `pure` and `return`? |
2023-03-07 14:00:51 +0100 | <int-e> | history, `return` was there first |
2023-03-07 14:01:25 +0100 | <fbytez> | So they can be used interchangeably? |
2023-03-07 14:01:31 +0100 | <merijn> | fbytez: For lawful instances of pure/monad there should be no difference, yes |
2023-03-07 14:01:40 +0100 | <merijn> | applicative/monad, I mean |
2023-03-07 14:01:52 +0100 | <int-e> | `return` lives in the Monad class; `pure` lives in Applicative. First there was only Monad, then for some time, both classes existed side by side; now Applicative is a superclass of Monad and pure = return is one of the laws involved in that. |
2023-03-07 14:04:55 +0100 | <fbytez> | So, Applicative is like a "superset" of Monad in which `pure` can be used but `return` can not? |
2023-03-07 14:04:55 +0100 | <Jade[m]1> | always use pure over return - the latter is deprecated and should be implemented like return = pure |
2023-03-07 14:05:53 +0100 | <fbytez> | I think 'pure' is a nicer word to use, given the meaning of 'return' in most other languages. |
2023-03-07 14:05:57 +0100 | <Jade[m]1> | it's a supercöass |
2023-03-07 14:06:03 +0100 | <Jade[m]1> | * it's a superclass |
2023-03-07 14:06:20 +0100 | <Jade[m]1> | and yes |
2023-03-07 14:06:51 +0100 | <merijn> | fbytez: For some interpretations of superset, Applicative is a superset of Monad, yes |
2023-03-07 14:07:30 +0100 | <merijn> | (there's two perspectives, the operations allowed by Monad are a superset of those allowed by Applicative, but "things that are Applicative" is a superset of "things that are Monad") |
2023-03-07 14:07:36 +0100 | <fbytez> | I said 'superset' for my own clarity as I'm very new and am uncertain about type classes. |
2023-03-07 14:08:20 +0100 | <merijn> | fbytez: Just meaning you can think in terms of "sub-/superset of operations" and "sub-/superset of things that are instances" and those have inverted answers ;) |
2023-03-07 14:09:10 +0100 | <fbytez> | Yes, right, that's very clear. Thanks. |
2023-03-07 14:12:12 +0100 | vglfr | (~vglfr@145.224.100.65) (Ping timeout: 268 seconds) |
2023-03-07 14:12:44 +0100 | emmanuelux | (~emmanuelu@user/emmanuelux) (Quit: au revoir) |
2023-03-07 14:13:31 +0100 | vglfr | (~vglfr@145.224.100.240) |
2023-03-07 14:18:45 +0100 | npm_i_kurbus | (~npm_i_kur@user/kurbus) (Quit: Client closed) |
2023-03-07 14:18:53 +0100 | emmanuelux | (~emmanuelu@user/emmanuelux) |
2023-03-07 14:19:25 +0100 | L29Ah | (~L29Ah@wikipedia/L29Ah) () |
2023-03-07 14:19:30 +0100 | jpds | (~jpds@gateway/tor-sasl/jpds) |
2023-03-07 14:20:11 +0100 | <fbytez> | Would it be fair to consider Haskell "safer" than Rust due to it's runtime and IO Monad? |
2023-03-07 14:20:39 +0100 | L29Ah | (~L29Ah@wikipedia/L29Ah) |
2023-03-07 14:20:46 +0100 | <fbytez> | Perhaps it's age too. |
2023-03-07 14:21:15 +0100 | <fbytez> | s/it's/its/g |
2023-03-07 14:23:18 +0100 | <int-e> | nah |
2023-03-07 14:28:11 +0100 | <fbytez> | Why so? On par? Worse? |
2023-03-07 14:31:12 +0100 | emmanuelux | (~emmanuelu@user/emmanuelux) (Quit: au revoir) |
2023-03-07 14:31:36 +0100 | gurkenglas | (~gurkengla@dynamic-046-114-176-216.46.114.pool.telefonica.de) |
2023-03-07 14:33:31 +0100 | fnurglewitz | (uid263868@id-263868.lymington.irccloud.com) |
2023-03-07 14:38:51 +0100 | <Cale> | Haskell code that's allowed to use IO can do basically anything. There might be some reason to consider it safer overall, but those aren't exactly reasons on their own. |
2023-03-07 14:41:33 +0100 | <merijn> | Hold on |
2023-03-07 14:41:41 +0100 | <merijn> | all these answers are nonsensical |
2023-03-07 14:41:49 +0100 | <merijn> | because you have not defined "safe"/"safer" |
2023-03-07 14:41:59 +0100 | <Cale> | Yeah, also true. |
2023-03-07 14:42:08 +0100 | <merijn> | Things are safe *with respect to some model of faults/correctness* |
2023-03-07 14:42:26 +0100 | <merijn> | It's why type safe is so misused by many people |
2023-03-07 14:42:42 +0100 | <Cale> | But even without getting into the details of what we mean, older languages are not generally speaking "safer" for any reasonable definition of the word. |
2023-03-07 14:42:46 +0100 | <mauke> | the "monad" part is irrelevant. IO is safe (or not) regardless of whether it implements the Monad interface |
2023-03-07 14:42:47 +0100 | <merijn> | "type-safety" = "well-typed code can't go wrong...with respect to our language's safety model" |
2023-03-07 14:43:08 +0100 | <Cale> | There might be some libraries one would trust more for being battle-tested, but the relative rarity of Haskell users counterbalances that a good bit. Though, when it comes to Rust specifically, it's hard to say. I wouldn't fully trust crypto libraries written in either language. |
2023-03-07 14:43:10 +0100 | <mauke> | also, I can segfault in Haskell, so :shrug: |
2023-03-07 14:43:18 +0100 | <merijn> | Cale: I mean, Rust is also allowed to do anything, so |
2023-03-07 14:43:26 +0100 | <Cale> | merijn: Of course |
2023-03-07 14:43:44 +0100 | jero98772 | (~jero98772@2800:484:1d80:d8ce:efcc:cbb3:7f2a:6dff) |
2023-03-07 14:43:56 +0100 | <merijn> | I would say neither is really considerably safer than the other |
2023-03-07 14:43:59 +0100 | <Cale> | The provided reasons were "its runtime", "IO monad" and "age". |
2023-03-07 14:44:25 +0100 | <Cale> | Some Haskell code might be safer than Rust code for *avoiding* use of the IO monad. |
2023-03-07 14:45:04 +0100 | <dminuoso> | 14:43:08 Cale | There might be some libraries one would trust more for being battle-tested, but the relative rarity of Haskell users counterbalances that a good bit. Though, when it comes to Rust specifically, it's hard to say. I wouldn't fully trust crypto libraries written in either language. |
2023-03-07 14:45:05 +0100 | <mauke> | (none of those prevent me from casting a random number to a pointer and writing to arbitrary memory) |
2023-03-07 14:45:27 +0100 | <dminuoso> | Cale: I think there's a misconception in that statement. Being memory safe does not imply you can trust a crypto library. |
2023-03-07 14:45:52 +0100 | <Cale> | dminuoso: I wasn't implying that |
2023-03-07 14:45:56 +0100 | <fbytez> | mauke, in Haskell? You can do that? |
2023-03-07 14:46:01 +0100 | <merijn> | fbytez: Sure |
2023-03-07 14:46:03 +0100 | <merijn> | Easily |
2023-03-07 14:46:07 +0100 | <dminuoso> | Cale: Fair. |
2023-03-07 14:46:10 +0100 | <merijn> | In, like 8 different ways :p |
2023-03-07 14:46:27 +0100 | <Cale> | I was implying that one might expect that older libraries are more trustworthy, because of a longer period of time available to find bugs. |
2023-03-07 14:46:32 +0100 | <mauke> | fbytez: https://hackage.haskell.org/package/base-4.18.0.0/docs/Foreign-Ptr.html |
2023-03-07 14:46:34 +0100 | <merijn> | % unsafeCoerce True :: Int -- I wonder if unsafeCoerce is allowed? |
2023-03-07 14:46:34 +0100 | <yahb2> | <interactive>:32:1: error: ; Variable not in scope: unsafeCoerce :: Bool -> Int |
2023-03-07 14:46:48 +0100 | <merijn> | % import Unsafe.Coerce |
2023-03-07 14:46:48 +0100 | <yahb2> | <no output> |
2023-03-07 14:47:02 +0100 | <merijn> | % unsafeCoerce True :: Int |
2023-03-07 14:47:02 +0100 | <yahb2> | -576460203687845904 |
2023-03-07 14:47:04 +0100 | <merijn> | Nice |
2023-03-07 14:47:05 +0100 | sammelweis | (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Quit: No Ping reply in 180 seconds.) |
2023-03-07 14:47:16 +0100 | <lyxia> | would you expect readFile :: FilePath -> IO Text to do newline conversion? I know the one in text does, but there's a proposal to have a locale independent variant and I'm wondering whether the lack of newline conversion could lead to bad surprises. |
2023-03-07 14:47:36 +0100 | <merijn> | lyxia: Almost all languages except C do that |
2023-03-07 14:47:40 +0100 | <mauke> | depends on whether I am a C programmer |
2023-03-07 14:47:42 +0100 | <merijn> | So, I kinda would |
2023-03-07 14:47:48 +0100 | <mauke> | uh, C started it |
2023-03-07 14:47:52 +0100 | <mauke> | C definitely does it |
2023-03-07 14:48:04 +0100 | <merijn> | Oh, then almost everything does :p |
2023-03-07 14:48:22 +0100 | sammelweis | (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) |
2023-03-07 14:48:48 +0100 | <merijn> | fbytez: Haskell's reputation for safety and safety getting in the way of "getting things done" is mostly exaggeration by people who don't really know Haskell |
2023-03-07 14:49:05 +0100 | <merijn> | fbytez: GHC will gleefully hand you like a dozen different unsafe tools to do whatever you want |
2023-03-07 14:49:18 +0100 | <mauke> | C started out as a systems language for unix (for creating/porting unix, really), and initially its '\n' (newline) character was simply char 10 and treated literally |
2023-03-07 14:49:48 +0100 | <mauke> | when C got ported to other systems with other text conventions, people got creative |
2023-03-07 14:49:52 +0100 | lxi | (~quassel@2a02:2f08:4d1c:400:c33f:394a:2177:e1a0) (Ping timeout: 248 seconds) |
2023-03-07 14:49:58 +0100 | <Cale> | lyxia: I would expect it to do whatever newline conversion was set up by the NewlineMode |
2023-03-07 14:50:06 +0100 | <merijn> | fbytez: Except unlike most other languages, most of those tools are pretty obviously unsafe and labelled as such and they WILL blow up in your face if you don't know what you're doing, unlike C where lots of unsafe things often "seem" to work without blowing up |
2023-03-07 14:50:07 +0100 | <Cale> | https://downloads.haskell.org/ghc/latest/docs/libraries/base-4.17.0.0/System-IO.html#v:hSetNewline… |
2023-03-07 14:50:19 +0100 | <lyxia> | Cale: readFile doesn't take a handle |
2023-03-07 14:50:46 +0100 | <Cale> | True, so you just get the default |
2023-03-07 14:50:48 +0100 | <lyxia> | but yeah that makes sense for the other functions that do |
2023-03-07 14:50:49 +0100 | <merijn> | lyxia: Either way, I consider readFile mostly a cute toy for quick and dirty prototypes/hacks and not a serious tool to begin with |
2023-03-07 14:50:53 +0100 | <mauke> | some systems simply use a different end-of-line marker (e.g. classic MacOS used char 13, DOS and later Windows used a combination of 13 10) |
2023-03-07 14:50:59 +0100 | <dminuoso> | merijn: I dont know what you mean. I _read_ Haskell every day, and it never unsafely performs IO. But I may have an incomplete view on patterns. |
2023-03-07 14:51:05 +0100 | <mauke> | only on Windows it is treated as a line *separator* |
2023-03-07 14:51:26 +0100 | <merijn> | dminuoso: hmm? |
2023-03-07 14:51:26 +0100 | <dminuoso> | merijn: My latest rage is improper IsString instances. |
2023-03-07 14:51:35 +0100 | <dminuoso> | Like `IsString IPv4` and some such |
2023-03-07 14:51:36 +0100 | <mauke> | but other systems have an entirely different concept of files |
2023-03-07 14:51:46 +0100 | <merijn> | dminuoso: Tell them to use validated-literals ;) |
2023-03-07 14:51:50 +0100 | <dminuoso> | Nah |
2023-03-07 14:51:52 +0100 | <mauke> | like, record-oriented files with structure, not just a random string of bytes |
2023-03-07 14:51:57 +0100 | <merijn> | Which reminds me...I need to update for GHC 9.6 and new template-haskell |
2023-03-07 14:51:59 +0100 | <dminuoso> | merijn: I ended up writing my own IP library |
2023-03-07 14:52:10 +0100 | <dminuoso> | `ipv4 127 0 0 01` is just as good as writing "127.0.0.1" |
2023-03-07 14:52:19 +0100 | <Cale> | . o O ( IsString Integer that parses Roman numerals ) |
2023-03-07 14:52:27 +0100 | <dminuoso> | haha |
2023-03-07 14:52:31 +0100 | <merijn> | dminuoso: I've argued that IsString (and the other OverloadedX extensions) should work like validated-literals |
2023-03-07 14:52:53 +0100 | <mauke> | on those systems, a "text file" may be represented as, say, a sequence of 256 byte records, each of which stores a line of text |
2023-03-07 14:53:03 +0100 | <merijn> | But that idea was met with skepticism and useless. Until people 7 years later decided it should work more like that |
2023-03-07 14:53:09 +0100 | <merijn> | So, my take away is that I'm a visionary |
2023-03-07 14:53:23 +0100 | <merijn> | And my words should be heeded like those of a prophet |
2023-03-07 14:54:02 +0100 | <mauke> | so the C library abstracts files as follows: files can be opened in either "text mode" (the default) or "binary mode" (the "b" flag in fopen()) |
2023-03-07 14:54:37 +0100 | <mauke> | in binary mode, bytes read and written are intended to go to disk as literally as possible |
2023-03-07 14:54:51 +0100 | <mauke> | ftell() and fseek() operate in byte offsets |
2023-03-07 14:55:27 +0100 | <mauke> | in text mode, the special '\n' character (whose value is implementation defined) indicates a virtual "end of line" and is translated to/from whatever on-disk representation the platform uses |
2023-03-07 14:56:09 +0100 | <mauke> | also, ftell() returns not byte offsets, but "file position cookies" whose value is meaningless except as argument to subsequent fseek() calls |
2023-03-07 14:56:09 +0100 | werneta | (~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net) (Ping timeout: 255 seconds) |
2023-03-07 14:57:08 +0100 | <mauke> | on unix systems, no distinction is made between text/binary files. '\n' is 10 and nothing is translated |
2023-03-07 14:57:27 +0100 | <mauke> | on classic MacOS, '\n' is 13, but everything else is as with unix |
2023-03-07 14:57:57 +0100 | <mauke> | (this does mean that if you write e.g. an HTTP library, you have to be careful to terminate your lines with "\015\012", not "\r\n") |
2023-03-07 14:58:02 +0100 | werneta | (~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net) |
2023-03-07 14:58:42 +0100 | <mauke> | on windows, '\n' is 10, but text files translate it to a CR-LF pair (13, 10) when writing |
2023-03-07 14:59:41 +0100 | <mauke> | TL;DR: C's "portable newline abstraction" is '\n', and anyone who uses std::endl is doing it wrong |
2023-03-07 14:59:52 +0100 | cheater_ | (~Username@user/cheater) |
2023-03-07 15:00:32 +0100 | <fbytez> | So what is `std::endl` doing? |
2023-03-07 15:00:52 +0100 | <fbytez> | From C++, right? |
2023-03-07 15:02:15 +0100 | <mauke> | handle << std::endl is defined to be equivalent to handle << '\n' << std::flush |
2023-03-07 15:02:19 +0100 | cheater | (~Username@user/cheater) (Ping timeout: 248 seconds) |
2023-03-07 15:02:26 +0100 | cheater_ | cheater |
2023-03-07 15:02:36 +0100 | <mauke> | that is, it writes a single '\n' character and then flushes the stream |
2023-03-07 15:03:01 +0100 | <mauke> | which is non-obvious enough that you should simply use std::flush explicitly |
2023-03-07 15:03:08 +0100 | <mauke> | (in cases where you really need it, that is) |
2023-03-07 15:04:21 +0100 | <lyxia> | Cale: does "default" also mean "follow the locale"? |
2023-03-07 15:04:45 +0100 | <merijn> | lyxia: imo yes |
2023-03-07 15:05:57 +0100 | <mauke> | in Haskell there is the additional wrinkle that Char is specified as Unicode |
2023-03-07 15:06:11 +0100 | thegeekinside | (~thegeekin@189.141.115.134) |
2023-03-07 15:06:30 +0100 | <mauke> | so e.g. '\123' does not mean "character 123 in the platform charset" (whatever that is), it explicitly means '{' |
2023-03-07 15:06:31 +0100 | <Cale> | The default is nativeNewlineMode which does nothing on unix-like systems, but on Windows, translates \r\n to \n and back. |
2023-03-07 15:06:54 +0100 | <mauke> | and '\n' is defined as '\LF', which is defined as '\10' |
2023-03-07 15:07:00 +0100 | <lyxia> | I meant my last question more broadly, not just regarding newlines |
2023-03-07 15:07:05 +0100 | eggplantade | (~Eggplanta@2600:1700:38c5:d800:182e:ca34:e210:1559) |
2023-03-07 15:07:34 +0100 | <mauke> | so I would assume that on EBCDIC systems a Haskell implementation would have to do full translation of every character read/written |
2023-03-07 15:07:44 +0100 | <Cale> | Text encoding otherwise follows the locale, but I don't know if there's information in the locale about how newlines are to be translated. |
2023-03-07 15:07:53 +0100 | <lyxia> | I think the motivation behind that proposal (not mine) is that some people disagree that locales are a reliable default. |
2023-03-07 15:09:16 +0100 | <mauke> | so in the words of MS Outlook: J |
2023-03-07 15:09:22 +0100 | <merijn> | lyxia: Yes, these people are stupid |
2023-03-07 15:09:35 +0100 | superbil | (~superbil@1-34-176-171.hinet-ip.hinet.net) (Ping timeout: 268 seconds) |
2023-03-07 15:09:38 +0100 | <lyxia> | merijn: I knew you would say that |
2023-03-07 15:09:44 +0100 | <merijn> | There's a bunch of "anti-locale" radicalists in the Haskell community which argue "oh, everything should only work on UTF-8" |
2023-03-07 15:10:16 +0100 | <merijn> | But I fundamentally oppose the idea that Haskell programs should "stop working" when I run them on an otherwise properly configured machine with reasonable settings |
2023-03-07 15:10:53 +0100 | <merijn> | All my machines use utf-8 locales, but I don't see any good justification for "all Haskell programs should just break when someone has a machine set to use a utf-16 or other encoding locale" |
2023-03-07 15:11:04 +0100 | <merijn> | That just seems an insane point to argue in favour of |
2023-03-07 15:11:12 +0100 | superbil | (~superbil@1-34-176-171.hinet-ip.hinet.net) |
2023-03-07 15:11:39 +0100 | <merijn> | Should most people be using utf-8 locales? Probably. Is that a reason to break compatibility with 40+ years of unix expectations? |
2023-03-07 15:11:42 +0100 | <mauke> | oh, I guess I'm somewhat of a radicalist, then? |
2023-03-07 15:11:47 +0100 | eggplantade | (~Eggplanta@2600:1700:38c5:d800:182e:ca34:e210:1559) (Ping timeout: 255 seconds) |
2023-03-07 15:12:04 +0100 | <mauke> | depends on how far you want to go with locales |
2023-03-07 15:13:28 +0100 | <merijn> | mauke: There are some people who argue that all the file operations should disregard the locales encoding and ONLY do utf-8 always. |
2023-03-07 15:14:23 +0100 | <int-e> | ...well, in the absence of file metadata specifying the encoding... |
2023-03-07 15:14:39 +0100 | <lyxia> | int-e: ... you read the locale? |
2023-03-07 15:14:41 +0100 | <mauke> | merijn: that's certainly a tempting option |
2023-03-07 15:14:43 +0100 | <merijn> | int-e: In the absence of file metadata "following the locale" is the only sensible option |
2023-03-07 15:15:02 +0100 | <merijn> | Because if you assume the systems is properly configured, that will be the right encoding |
2023-03-07 15:15:06 +0100 | <int-e> | I mean, what's the alternative, should scp/sftp/rsync recode files according to the locales? |
2023-03-07 15:15:13 +0100 | <merijn> | And if the system is NOT properly configured, then you're shit outta luck anyway |
2023-03-07 15:15:26 +0100 | <mauke> | merijn: how is it sensible to follow the system locale in this one aspect if everything else is ignored? |
2023-03-07 15:15:36 +0100 | <merijn> | int-e: If files don't follow the locale AND you don't know what they are from metadata, you'r fucked anyway |
2023-03-07 15:16:09 +0100 | <mauke> | for example, the show instance for numbers does not respect the locale and assumes US/UK conventions |
2023-03-07 15:16:09 +0100 | <merijn> | int-e: And if you know the encoding from metadata and it differs from the locale, there's already functions for accessing them |
2023-03-07 15:16:28 +0100 | <merijn> | mauke: Show specifically follows the Haskell syntax conventions |
2023-03-07 15:16:33 +0100 | <merijn> | (which happen to be US/UK) |
2023-03-07 15:16:34 +0100 | <int-e> | I think that there's no right default for text files in non-UTF-8 locales. |
2023-03-07 15:16:43 +0100 | <int-e> | Either way will cause trouble. |
2023-03-07 15:16:57 +0100 | <merijn> | int-e: the default is "what the system is configured to produce/expect" |
2023-03-07 15:16:59 +0100 | superbil | (~superbil@1-34-176-171.hinet-ip.hinet.net) (Ping timeout: 268 seconds) |
2023-03-07 15:17:01 +0100 | <mauke> | merijn: yes |
2023-03-07 15:17:22 +0100 | <merijn> | int-e: If the locale is configured to something non-UTF8, how is that less valid than the locale being configured to utf-8? |
2023-03-07 15:17:29 +0100 | <int-e> | merijn: or the default is what is most portable across systems |
2023-03-07 15:17:31 +0100 | int-e | shrugs |
2023-03-07 15:17:42 +0100 | <int-e> | I said what I said and I believe it. |
2023-03-07 15:18:11 +0100 | <merijn> | int-e: it already falls back to utf8 for unknown locales as of recently |
2023-03-07 15:18:31 +0100 | <mauke> | from a practical standpoint, it is better to have simple and deterministic behavior |
2023-03-07 15:18:35 +0100 | <merijn> | int-e: If a locale is set, why would you disbelief it is set correctly? |
2023-03-07 15:19:00 +0100 | <mauke> | the alternative is to include encoding tables for every character set under the sun |
2023-03-07 15:19:12 +0100 | <merijn> | mauke: Why? |
2023-03-07 15:19:19 +0100 | <int-e> | merijn: Well, if it's not UTF-8 I'll stare at it in disbelief and wonder how the user survives. |
2023-03-07 15:19:26 +0100 | <mauke> | merijn: why which one? |
2023-03-07 15:19:46 +0100 | <merijn> | mauke: Why would you have to include encoding tables for everything? Can just produce an error for unknown |
2023-03-07 15:19:53 +0100 | <int-e> | (my sole locale setting is LC_CTYPE=en_US.UTF-8, been doing that for about 20 years, because all other charsets cause way too much friction.) |
2023-03-07 15:20:05 +0100 | <merijn> | int-e: Any form of utf-X seems reasonable and I don't know if something else might be reasonable for Asia |
2023-03-07 15:20:15 +0100 | <mauke> | merijn: OK, which ones do you include by default, then? :-) |
2023-03-07 15:20:41 +0100 | <merijn> | mauke: Certainly all the UTF ones, whatever the standard old windows one was. aka the ones we already include anyway |
2023-03-07 15:20:54 +0100 | vglfr | (~vglfr@145.224.100.240) (Ping timeout: 255 seconds) |
2023-03-07 15:21:03 +0100 | <mauke> | there is no single "the standard" one for windows |
2023-03-07 15:21:14 +0100 | <mauke> | it was all country specific |
2023-03-07 15:21:43 +0100 | <mauke> | merijn: UTF-7? UTF-EBCDIC? |
2023-03-07 15:21:53 +0100 | vglfr | (~vglfr@145.224.100.65) |
2023-03-07 15:22:05 +0100 | <mauke> | (the latter is A Thing and Perl uses it) |
2023-03-07 15:22:15 +0100 | <merijn> | int-e: I don't know what people in Asia use, but who am I to say UTF-16 is "wrong" if you're dealing with exclusively SEA texts |
2023-03-07 15:22:18 +0100 | <int-e> | merijn: I really think that in an ideal world (not the one we live in, obviously), text files should carry their encoding as metadata. Tying it to a global locale in a world where we download stuff all the time is ridiculous. |
2023-03-07 15:22:57 +0100 | <merijn> | int-e: Of course it is ridiculous, but we gotta work with what we have |
2023-03-07 15:23:03 +0100 | <int-e> | The locale is kind of like a broken clock; maybe it's right more than twice a day even but it'll still be wrong *a lot*. |
2023-03-07 15:23:31 +0100 | <merijn> | And what we have is that all commandline tools assume the locale is correct and consume/produce that encoding |
2023-03-07 15:23:51 +0100 | <merijn> | int-e: Assuming utf-8 for everything has the same odds of being wrong for stuff downloaded in some arbitrary encoding |
2023-03-07 15:25:01 +0100 | <mauke> | now I'm tempted to find out if you can configure a UTF-7 or UTF-EBCDIC locale for linux |
2023-03-07 15:25:11 +0100 | <mauke> | and whether e.g. ls will respect it |
2023-03-07 15:35:23 +0100 | <mauke> | ... it looks like typical command-line tools "cheat" by just assuming ASCII |
2023-03-07 15:35:44 +0100 | <merijn> | ls is double fucked, of course |
2023-03-07 15:35:48 +0100 | <mauke> | and all the supported system locales on Debian that I can see are ASCII extensions in some way |
2023-03-07 15:35:57 +0100 | <merijn> | since on linux you can't assume everything about filenames either :p |
2023-03-07 15:37:25 +0100 | <mauke> | even stuff like Big5 is based on a "lead byte" with the high bit set, so any single byte in the range 00-7F can just be "passed through" |
2023-03-07 15:38:05 +0100 | <merijn> | at least there's one thing we can all agree on |
2023-03-07 15:38:36 +0100 | <merijn> | Whoever at microsoft decided to insert a "unicode byte order mark" ahead of UTF8 text should be tried for crimes against humanity |
2023-03-07 15:39:36 +0100 | <lyxia> | uhoh. How does base handle that? |
2023-03-07 15:40:21 +0100 | <mauke> | also the MS guy who decided to call the single-byte vendor-specific charset "ANSI" |
2023-03-07 15:40:23 +0100 | <merijn> | Well, from spending 3 hours debugging my girlfriend's first Haskell program I can tell you that aeson breaks horribly on it |
2023-03-07 15:40:39 +0100 | <mauke> | and the MS guy who decided to call UTF-16LE "UNICODE" |
2023-03-07 15:40:43 +0100 | <merijn> | Because apparently excel inserts said byte order mark when saving utf-8 CSV |
2023-03-07 15:40:56 +0100 | <merijn> | eh, not aeson |
2023-03-07 15:40:58 +0100 | <merijn> | cassava |
2023-03-07 15:41:02 +0100 | <merijn> | brainfart |
2023-03-07 15:41:19 +0100 | <mauke> | even worse, you need that UTF-8 "BOM" in CSV files intended for Excel |
2023-03-07 15:41:28 +0100 | <mauke> | otherwise it will probably get the Unicode wrong |
2023-03-07 15:43:28 +0100 | ix | (~ix@213.205.192.69) |
2023-03-07 15:48:48 +0100 | shriekingnoise | (~shrieking@186.137.175.87) |
2023-03-07 15:48:48 +0100 | ix | (~ix@213.205.192.69) (Ping timeout: 255 seconds) |
2023-03-07 15:51:33 +0100 | ix | (~ix@213.205.192.69) |
2023-03-07 16:00:50 +0100 | superbil | (~superbil@1-34-176-171.hinet-ip.hinet.net) |
2023-03-07 16:02:32 +0100 | chexum_ | (~quassel@gateway/tor-sasl/chexum) |
2023-03-07 16:04:05 +0100 | chexum | (~quassel@gateway/tor-sasl/chexum) (Ping timeout: 255 seconds) |
2023-03-07 16:07:39 +0100 | <lyxia> | I was on the fence at first but merijn you've changed my mind a bunch towards your side. |
2023-03-07 16:08:37 +0100 | <merijn> | \o/ |
2023-03-07 16:08:48 +0100 | notzmv | (~zmv@user/notzmv) (Ping timeout: 246 seconds) |
2023-03-07 16:09:01 +0100 | <lyxia> | I'm always skeptical when an issue boils down to "learn to configure your system" because we all know users don't learn |
2023-03-07 16:09:04 +0100 | gnalzo | (~gnalzo@2a01:e0a:498:fd50:fcc6:bb5d:489a:ce8c) (Quit: WeeChat 3.8) |
2023-03-07 16:10:41 +0100 | <merijn> | lyxia: Well, in the past GHC would default to ASCII only on systems with a broken locale (and then fail on unicode input), but recent GHC (everything in the 9.x series and maybe some earlier ones, iirc) default to UTF-8 instead of ascii when that happens |
2023-03-07 16:11:20 +0100 | <merijn> | So I would concede that accepting ascii only in case of failure is "probably the wrong default", but that has already been fixed :p |
2023-03-07 16:18:29 +0100 | Sciencentistguy4 | (~sciencent@hacksoc/ordinary-member) |
2023-03-07 16:19:17 +0100 | pdw | (~user@215.156.62.185.bridgefibre.net) |
2023-03-07 16:19:24 +0100 | Sciencentistguy | (~sciencent@hacksoc/ordinary-member) (Ping timeout: 255 seconds) |
2023-03-07 16:19:24 +0100 | Sciencentistguy4 | Sciencentistguy |
2023-03-07 16:20:28 +0100 | <pdw> | Hello all. I've created a trivial project with the 'hashable' package (1.4.2.0) in its build-depends, and it fails to build on Windows using an integer-simple GHC 8.10.7 release. |
2023-03-07 16:20:30 +0100 | <pdw> | Searching has taught me that package flags are thing, so I've run 'cabal configure --constraint="hashable -integer-gmp"' and rebuilt, but that hasn't helped. Should that have worked, or am I missing something? |
2023-03-07 16:22:20 +0100 | <tdammers> | Age-old conflict between "don't be annoying" and "don't guess". Failing when the encoding cannot be reliably determined is sound, but also annoying; picking a best-guess encoding may be wrong, but is likely correct and won't annoy the user too much even when it's not. |
2023-03-07 16:22:27 +0100 | <tdammers> | See also XHTML Strict. |
2023-03-07 16:23:56 +0100 | cheater_ | (~Username@user/cheater) |
2023-03-07 16:23:56 +0100 | mrcsno_afk | (~mrcsno@user/mrcsno) (Quit: WeeChat 3.5) |
2023-03-07 16:26:36 +0100 | masterbuilder | (~masterbui@user/masterbuilder) (Ping timeout: 255 seconds) |
2023-03-07 16:26:44 +0100 | masterbuilder | (~masterbui@user/masterbuilder) |
2023-03-07 16:27:07 +0100 | cheater | (~Username@user/cheater) (Ping timeout: 248 seconds) |
2023-03-07 16:27:10 +0100 | cheater_ | cheater |
2023-03-07 16:29:36 +0100 | ubert1 | (~Thunderbi@p200300ecdf0c57b39b0cedad49907c5f.dip0.t-ipconnect.de) (Ping timeout: 248 seconds) |
2023-03-07 16:33:30 +0100 | barzo | (~barzo@176.55.97.55) |
2023-03-07 16:34:03 +0100 | masterbuilder | (~masterbui@user/masterbuilder) (Ping timeout: 248 seconds) |
2023-03-07 16:35:06 +0100 | barzo | (~barzo@176.55.97.55) (Remote host closed the connection) |
2023-03-07 16:36:09 +0100 | masterbuilder | (~masterbui@user/masterbuilder) |
2023-03-07 16:38:30 +0100 | jumper149 | (~jumper149@base.felixspringer.xyz) (WeeChat 3.8) |
2023-03-07 16:38:55 +0100 | jumper149 | (~jumper149@base.felixspringer.xyz) |
2023-03-07 16:39:05 +0100 | razetime | (~Thunderbi@117.193.1.99) |
2023-03-07 16:40:01 +0100 | razetime | (~Thunderbi@117.193.1.99) (Client Quit) |
2023-03-07 16:40:26 +0100 | L29Ah | (~L29Ah@wikipedia/L29Ah) () |
2023-03-07 16:43:04 +0100 | mechap_ | (~mechap@user/mechap) |
2023-03-07 16:44:27 +0100 | L29Ah | (~L29Ah@wikipedia/L29Ah) |
2023-03-07 16:44:43 +0100 | mechap | (~mechap@user/mechap) (Ping timeout: 248 seconds) |
2023-03-07 16:45:23 +0100 | Sgeo | (~Sgeo@user/sgeo) |
2023-03-07 16:50:16 +0100 | cfricke | (~cfricke@user/cfricke) (Quit: WeeChat 3.8) |
2023-03-07 16:51:07 +0100 | jumper149 | (~jumper149@base.felixspringer.xyz) (Quit: WeeChat 3.8) |
2023-03-07 16:52:01 +0100 | Everything | (~Everythin@46.185.124.65) |
2023-03-07 16:59:20 +0100 | irrgit_ | (~irrgit@89.47.234.26) |
2023-03-07 17:03:10 +0100 | irrgit__ | (~irrgit@146.70.27.242) (Ping timeout: 252 seconds) |
2023-03-07 17:12:10 +0100 | <AWizzArd> | For newtype Cont a = Cont { unCont :: forall r. (a -> r) -> r } I have this fmap implementation: fmap f (Cont c) = Cont (\b -> c (b . f)) |
2023-03-07 17:12:14 +0100 | <AWizzArd> | Interestingly fmap f (Cont c) = Cont (\b -> b (c f)) also compiles. |
2023-03-07 17:15:21 +0100 | vglfr | (~vglfr@145.224.100.65) (Ping timeout: 268 seconds) |
2023-03-07 17:15:49 +0100 | shapr | (~user@68.54.166.125) |
2023-03-07 17:16:11 +0100 | vglfr | (~vglfr@145.224.100.240) |
2023-03-07 17:16:30 +0100 | mbuf | (~Shakthi@49.207.178.186) (Quit: Leaving) |
2023-03-07 17:17:50 +0100 | <Hecate> | teo: would I be able to use your shortstraw tool to produce a trace for the compilation time of Flora? Or do you think it's too early to experiment with it? |
2023-03-07 17:18:19 +0100 | Square2 | (~Square4@user/square) (Ping timeout: 248 seconds) |
2023-03-07 17:20:01 +0100 | <geekosaur> | AWizzArd, monochrom pointed out that they're actually the same thing, last time you mentioned this |
2023-03-07 17:20:27 +0100 | vglfr | (~vglfr@145.224.100.240) (Ping timeout: 248 seconds) |
2023-03-07 17:20:53 +0100 | cheater_ | (~Username@user/cheater) |
2023-03-07 17:21:27 +0100 | vglfr | (~vglfr@145.224.100.65) |
2023-03-07 17:23:05 +0100 | <geekosaur> | Feb 28 00:01:27 <monochrom> AWizzArd: Something about parametricity or Yoneda's lemma says that they do the same thing, too! |
2023-03-07 17:23:13 +0100 | lortabac | (~lortabac@2a01:e0a:541:b8f0:cdff:bbec:88eb:b8a) (Quit: WeeChat 2.8) |
2023-03-07 17:23:49 +0100 | <geekosaur> | (if it's Yoneda, prepare to get your head twisted even harder than Cont does…) |
2023-03-07 17:24:12 +0100 | cheater | (~Username@user/cheater) (Ping timeout: 252 seconds) |
2023-03-07 17:24:19 +0100 | cheater_ | cheater |
2023-03-07 17:24:53 +0100 | <int-e> | Well, mostly the same... the second one is a bit lazier. |
2023-03-07 17:26:47 +0100 | <AWizzArd> | geekosaur: I must have missed it. |
2023-03-07 17:27:02 +0100 | <AWizzArd> | monochrom: belated thanks :-) |
2023-03-07 17:27:06 +0100 | <int-e> | @free c :: (a -> r) -> r |
2023-03-07 17:27:06 +0100 | <lambdabot> | g . h = k . f => g (c h) = c k |
2023-03-07 17:27:28 +0100 | <int-e> | Hmm, dubious, what's happening to the `f` here? |
2023-03-07 17:28:47 +0100 | irrgit_ | (~irrgit@89.47.234.26) (Read error: Connection reset by peer) |
2023-03-07 17:29:07 +0100 | <AWizzArd> | To be honest, I can't see why those two are the same. |
2023-03-07 17:29:08 +0100 | <int-e> | I guess it's a bug; it would work for g . h = k. |
2023-03-07 17:29:08 +0100 | <[Leary]> | @free c :: (A -> r) -> r |
2023-03-07 17:29:08 +0100 | <lambdabot> | f . c = c . (.) f |
2023-03-07 17:30:14 +0100 | <int-e> | (Or, possibly, the fact that types are omitted in @free? f :: forall a. a -> a would restrict f sufficiently.) |
2023-03-07 17:30:37 +0100 | <int-e> | [Leary]: yeah that's better |
2023-03-07 17:31:32 +0100 | <monochrom> | AWizzArd: Let's say parametricity (free theorems). After a few steps, we conclude that if you give me a value (Cont c), then c id contains all the information. Equivalently, we can reverse engineer: c = \k -> k (c id) |
2023-03-07 17:31:41 +0100 | <[Leary]> | @free c :: a |
2023-03-07 17:31:41 +0100 | <lambdabot> | f c = c |
2023-03-07 17:32:18 +0100 | <[Leary]> | I guess f is redundant when you have, in effect, `forall a. a`. |
2023-03-07 17:32:27 +0100 | <monochrom> | A corollary I'll use is: if you give me two values (Cont c) and (Cont c'), and ask whether they're the same, then I can use: c=c' iff c id = c' id. |
2023-03-07 17:32:56 +0100 | <int-e> | [Leary]: Oh, right. |
2023-03-07 17:32:58 +0100 | <monochrom> | So now just check that (\b -> c (b . f)) id = (\b -> b (c f)) id. |
2023-03-07 17:33:23 +0100 | ccapndave | (~ccapndave@xcpe-62-167-164-99.cgn.res.adslplus.ch) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
2023-03-07 17:35:35 +0100 | gentauro | (~gentauro@user/gentauro) (Ping timeout: 246 seconds) |
2023-03-07 17:42:16 +0100 | lyle | (~lyle@104.246.145.237) (Quit: WeeChat 3.8) |
2023-03-07 17:42:28 +0100 | mei | (~mei@user/mei) (Remote host closed the connection) |
2023-03-07 17:42:38 +0100 | gentauro | (~gentauro@user/gentauro) |
2023-03-07 17:46:50 +0100 | eggplantade | (~Eggplanta@2600:1700:38c5:d800:182e:ca34:e210:1559) |
2023-03-07 17:50:28 +0100 | sadmax | (~user@64.130.91.66) (Ping timeout: 252 seconds) |
2023-03-07 17:50:51 +0100 | mei | (~mei@user/mei) |
2023-03-07 17:52:24 +0100 | jtomas | (~user@81.172.17.107.dyn.user.ono.com) |
2023-03-07 17:57:33 +0100 | pavonia | (~user@user/siracusa) (Quit: Bye!) |
2023-03-07 17:59:54 +0100 | <ncf> | c (b . f) = b (c f) = b (f (c id)) |
2023-03-07 18:00:05 +0100 | <ncf> | we even have three possible definitions! |
2023-03-07 18:02:07 +0100 | cheater | (~Username@user/cheater) (Quit: Going offline, see ya! (www.adiirc.com)) |
2023-03-07 18:02:30 +0100 | gnalzo | (~gnalzo@2a01:e0a:498:fd50:fcc6:bb5d:489a:ce8c) |
2023-03-07 18:04:25 +0100 | mei | (~mei@user/mei) (Quit: mei) |
2023-03-07 18:05:59 +0100 | mei | (~mei@user/mei) |
2023-03-07 18:06:40 +0100 | kuribas | (~user@ip-188-118-57-242.reverse.destiny.be) (Read error: Connection reset by peer) |
2023-03-07 18:08:31 +0100 | jtomas | (~user@81.172.17.107.dyn.user.ono.com) (Ping timeout: 246 seconds) |
2023-03-07 18:09:48 +0100 | tzh | (~tzh@c-24-21-73-154.hsd1.or.comcast.net) |
2023-03-07 18:11:06 +0100 | azimut | (~azimut@gateway/tor-sasl/azimut) |
2023-03-07 18:11:16 +0100 | cheater | (~Username@user/cheater) |
2023-03-07 18:11:31 +0100 | eggplantade | (~Eggplanta@2600:1700:38c5:d800:182e:ca34:e210:1559) (Remote host closed the connection) |
2023-03-07 18:11:35 +0100 | hiredman | (~hiredman@frontier1.downey.family) |
2023-03-07 18:17:42 +0100 | polyphem_ | (~rod@2a02:810d:840:8754:da48:4c29:8382:1f9b) |
2023-03-07 18:19:07 +0100 | Everything | (~Everythin@46.185.124.65) (Quit: leaving) |
2023-03-07 18:22:18 +0100 | azimut_ | (~azimut@gateway/tor-sasl/azimut) |
2023-03-07 18:23:08 +0100 | azimut | (~azimut@gateway/tor-sasl/azimut) (Ping timeout: 255 seconds) |
2023-03-07 18:23:11 +0100 | eggplantade | (~Eggplanta@2600:1700:38c5:d800:182e:ca34:e210:1559) |
2023-03-07 18:25:24 +0100 | mei | (~mei@user/mei) (Ping timeout: 255 seconds) |
2023-03-07 18:25:39 +0100 | ix | (~ix@213.205.192.69) (Ping timeout: 268 seconds) |
2023-03-07 18:27:20 +0100 | coot | (~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba) (Quit: coot) |
2023-03-07 18:32:07 +0100 | cheater | (~Username@user/cheater) (Quit: Going offline, see ya! (www.adiirc.com)) |
2023-03-07 18:33:39 +0100 | ix | (~ix@213.205.192.69) |
2023-03-07 18:34:32 +0100 | fnurglewitz | (uid263868@id-263868.lymington.irccloud.com) (Quit: Connection closed for inactivity) |
2023-03-07 18:36:37 +0100 | econo | (uid147250@user/econo) |
2023-03-07 18:37:16 +0100 | ddellacosta | (~ddellacos@146.70.166.10) (Quit: WeeChat 3.8) |
2023-03-07 18:38:55 +0100 | ddellacosta | (~ddellacos@146.70.166.10) |
2023-03-07 18:43:12 +0100 | Fischmiep | (~Fischmiep@user/Fischmiep) |
2023-03-07 18:45:34 +0100 | mei | (~mei@user/mei) |
2023-03-07 18:46:20 +0100 | cheater | (~Username@user/cheater) |
2023-03-07 18:52:00 +0100 | gensyst | (gensyst@user/gensyst) |
2023-03-07 18:52:26 +0100 | <gensyst> | Hi, will stuff like this work for global variables? https://dpaste.com/4LKER738V I.e. can the global be dependent on something (in this case Int)? |
2023-03-07 18:52:44 +0100 | <dsal> | gensyst: What are you doing? That seems like a terrible idea. |
2023-03-07 18:52:44 +0100 | <gensyst> | so if I already grabbed a global for 3, will the next time I grab it for 3 be the exact same thing? |
2023-03-07 18:52:55 +0100 | <gensyst> | dsal, i know it's a hack that i must remove soon |
2023-03-07 18:53:00 +0100 | <gensyst> | just wondering if this will work for now |
2023-03-07 18:53:08 +0100 | <gensyst> | soon(TM) |
2023-03-07 18:54:04 +0100 | <dsal> | It's not really clear what you mean to do there. It's creating an IORef and then reading it each time. |
2023-03-07 18:54:39 +0100 | <gensyst> | it's not the best example. imagine the Int in the IORef is a more complex object |
2023-03-07 18:54:50 +0100 | <dsal> | If you wanted it to actually behave like a global variable, you'd only ever create one IORef and make it accessible. |
2023-03-07 18:55:06 +0100 | <dsal> | It doesn't matter how complex it is. If you make it every time you access it, that's the same as not using IO at all. |
2023-03-07 18:55:08 +0100 | <gensyst> | dsal, yes... i want one *for each int* |
2023-03-07 18:55:35 +0100 | <geekosaur> | you can't have a parameter |
2023-03-07 18:55:50 +0100 | <geekosaur> | it no longer behaves like a global if you do |
2023-03-07 18:55:57 +0100 | <gensyst> | ok good to know lol |
2023-03-07 18:56:06 +0100 | <gensyst> | gotta bite the bullet and fix this mess (should have been done ages ago) |
2023-03-07 18:56:17 +0100 | <dsal> | You could have an IORef Map, but yeah, Doing It Right is a better idea. |
2023-03-07 18:56:23 +0100 | <gensyst> | oh... i guess ic ould hack it with a Map? |
2023-03-07 18:56:27 +0100 | <gensyst> | Map Int ComplexObject |
2023-03-07 18:56:27 +0100 | MajorBiscuit | (~MajorBisc@c-001-030-044.client.tudelft.eduvpn.nl) (Ping timeout: 248 seconds) |
2023-03-07 18:56:55 +0100 | <gensyst> | no that won't help |
2023-03-07 18:58:58 +0100 | cheater_ | (~Username@user/cheater) |
2023-03-07 18:59:52 +0100 | <monochrom> | Map Int (IORef XXX) |
2023-03-07 19:01:11 +0100 | <monochrom> | You were basically hoping that your _foo would be memoized. But that hope was misplaced. |
2023-03-07 19:01:51 +0100 | cheater | (~Username@user/cheater) (Ping timeout: 255 seconds) |
2023-03-07 19:01:54 +0100 | cheater_ | cheater |
2023-03-07 19:03:15 +0100 | mmhat | (~mmh@p200300f1c7095e7aee086bfffe095315.dip0.t-ipconnect.de) |
2023-03-07 19:03:27 +0100 | mmhat | (~mmh@p200300f1c7095e7aee086bfffe095315.dip0.t-ipconnect.de) (Client Quit) |
2023-03-07 19:05:26 +0100 | ddellacosta | (~ddellacos@146.70.166.10) (Quit: WeeChat 3.8) |
2023-03-07 19:05:43 +0100 | ddellacosta | (~ddellacos@146.70.166.10) |
2023-03-07 19:06:22 +0100 | segfaultfizzbuzz | (~segfaultf@12.172.217.142) |
2023-03-07 19:06:30 +0100 | <segfaultfizzbuzz> | is there a finite or infinite number of types? |
2023-03-07 19:07:32 +0100 | <ddellacosta> | yes? |
2023-03-07 19:08:12 +0100 | <monochrom> | Can you try constructing an infinite bunch of types? |
2023-03-07 19:08:13 +0100 | <segfaultfizzbuzz> | well either the number of types which "exist" are either finite or infinite |
2023-03-07 19:08:22 +0100 | <mauke> | every number is finite |
2023-03-07 19:08:23 +0100 | <segfaultfizzbuzz> | a related question is, can an automated system "discover" a type? |
2023-03-07 19:08:44 +0100 | <monochrom> | Can you name a language that does automatic type inference? |
2023-03-07 19:09:05 +0100 | <segfaultfizzbuzz> | that is to say, are there things i can check about something (not sure what the thing is or how the checking works) which can "objectively" determine whether that thing is a type |
2023-03-07 19:09:41 +0100 | <monochrom> | Can you name a compiler that says "syntax error" whenever you write an illegal type expression? |
2023-03-07 19:09:55 +0100 | <mauke> | yes: const "syntax error" |
2023-03-07 19:10:16 +0100 | <segfaultfizzbuzz> | monochrom: i mean type inference is common but you need to have uh, "source types" or something defined by a human which can be used to determine the "destination types" |
2023-03-07 19:10:30 +0100 | <monochrom> | s/human/compiler/ |
2023-03-07 19:11:30 +0100 | <segfaultfizzbuzz> | let's say i have an infinite String --can a system "discover" types within the String and parse them automatically? |
2023-03-07 19:12:15 +0100 | <geekosaur> | that's just a modified compiler |
2023-03-07 19:12:38 +0100 | <segfaultfizzbuzz> | does "type" mean: "invariants which appear to always be true empirically, or which a human has mandated always be true"? |
2023-03-07 19:12:44 +0100 | <monochrom> | for i=0 to oo { for j=i to oo { ask the compiler whether s[i..j] is a legal type expression } } |
2023-03-07 19:13:09 +0100 | <mauke> | Have you ever had a dream that you, um, you had, your, you- you could, you’ll do, you- you wants, you, you could do so, you- you’ll do, you could- you, you want, you want him to do you so much you could do anything? |
2023-03-07 19:13:29 +0100 | <segfaultfizzbuzz> | haha ok i guess i will stop. i'm trying to understand what a type is |
2023-03-07 19:13:34 +0100 | <monochrom> | "type" means: The Haskell2010 Report says it's a type expression. |
2023-03-07 19:14:47 +0100 | <segfaultfizzbuzz> | monochrom: i guess you are saying that a type is simply a tag exposed to the compiler and beyond that the compiler decides what i means...? |
2023-03-07 19:14:54 +0100 | <segfaultfizzbuzz> | what it means |
2023-03-07 19:14:58 +0100 | <monochrom> | No. |
2023-03-07 19:15:17 +0100 | <dsal> | segfaultfizzbuzz: a String is a type alias for a list of characters. The only types you'll find within a String are either the List * or the Char (depending on how you look at it) |
2023-03-07 19:15:36 +0100 | gurkenglas | (~gurkengla@dynamic-046-114-176-216.46.114.pool.telefonica.de) (Ping timeout: 268 seconds) |
2023-03-07 19:15:36 +0100 | eggplantade | (~Eggplanta@2600:1700:38c5:d800:182e:ca34:e210:1559) (Remote host closed the connection) |
2023-03-07 19:15:43 +0100 | ix | (~ix@213.205.192.69) (Ping timeout: 252 seconds) |
2023-03-07 19:15:52 +0100 | eggplantade | (~Eggplanta@2600:1700:38c5:d800:182e:ca34:e210:1559) |
2023-03-07 19:16:20 +0100 | <dsal> | I assume there's a practical limit to how many types you can have in a program compiled by GHC. |
2023-03-07 19:16:50 +0100 | <segfaultfizzbuzz> | i will try one last time... an alien lands and can only see your RAM, and thinks you are lying about the types your data has. how does the alien verify that some stuff in RAM has a certain type? |
2023-03-07 19:17:08 +0100 | <mauke> | what does that even mean? |
2023-03-07 19:17:17 +0100 | <geekosaur> | dsal, I believe that limit is set by available memory |
2023-03-07 19:17:52 +0100 | <segfaultfizzbuzz> | data Pet = Cat | Dog | None |
2023-03-07 19:18:07 +0100 | <segfaultfizzbuzz> | i have observed twenty people, and all people i have observed have a pet cat, a pet dog, or no pet |
2023-03-07 19:18:09 +0100 | <mauke> | types are assigned to expressions in the source code |
2023-03-07 19:18:24 +0100 | <segfaultfizzbuzz> | and therefore i have created a type which allows me to specify the "pet type" |
2023-03-07 19:18:39 +0100 | <segfaultfizzbuzz> | however empirically, this is a "wrong type" because if i learn about more people |
2023-03-07 19:18:42 +0100 | <geekosaur> | my mom had a pet turtle. how does your alien deal with that? |
2023-03-07 19:18:47 +0100 | <segfaultfizzbuzz> | i will discover that there also are pet turtles, pet parrots, etc |
2023-03-07 19:19:06 +0100 | <segfaultfizzbuzz> | geekosaur: the alien falsifies the type |
2023-03-07 19:19:16 +0100 | <segfaultfizzbuzz> | so it is a "wrong" type, and the type is "empirically wrong" |
2023-03-07 19:19:20 +0100 | <mauke> | ok, so you've modeled the problem wrong |
2023-03-07 19:19:29 +0100 | <mauke> | "wrong" |
2023-03-07 19:19:47 +0100 | <segfaultfizzbuzz> | so a human (me) defined a type (Pet) based on some empirical observation (20 people) |
2023-03-07 19:19:49 +0100 | <mauke> | doesn't mean the type is wrong |
2023-03-07 19:20:19 +0100 | <segfaultfizzbuzz> | at the very least the type would need to be data CorrectPet = Cat | Dog | None | Other |
2023-03-07 19:20:41 +0100 | <mauke> | or I could classify parrots as Cat |
2023-03-07 19:20:45 +0100 | <segfaultfizzbuzz> | lol |
2023-03-07 19:21:37 +0100 | <segfaultfizzbuzz> | https://www.youtube.com/watch?v=B-eeNvUEGDk |
2023-03-07 19:22:26 +0100 | <segfaultfizzbuzz> | anyway, the common assumption is that as the human (programmer) i am inputting this type information |
2023-03-07 19:22:35 +0100 | <geekosaur> | unless the circumstances dictate that only cats and dogs are tracked, so None is the correct answer for other pets |
2023-03-07 19:22:50 +0100 | <geekosaur> | (and yes, I can think of such circumstances) |
2023-03-07 19:23:05 +0100 | <geekosaur> | (I'm not sure an alien would care about them though) |
2023-03-07 19:23:10 +0100 | <segfaultfizzbuzz> | and in many circumstances (but not all) the type information comes from some kind of empirical situation |
2023-03-07 19:23:18 +0100 | <monochrom> | No no, I wonder if polymorphic recursion (data X a = Nil | P (X [a])) allows unboundedly many types to exist in a program (grow with time) without needing unbounded memory because 1. compile just checks base cases and inductive cases, 2. type erasure, so not in the exe. |
2023-03-07 19:23:37 +0100 | <monochrom> | s/compile/compiler/ |
2023-03-07 19:24:14 +0100 | <segfaultfizzbuzz> | put another way, how would i make a "unit test for types" |
2023-03-07 19:24:39 +0100 | <mauke> | the type is just Pet |
2023-03-07 19:24:45 +0100 | sammelweis | (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Quit: No Ping reply in 180 seconds.) |
2023-03-07 19:24:56 +0100 | <mauke> | Cat is a data constructor |
2023-03-07 19:25:14 +0100 | <segfaultfizzbuzz> | right |
2023-03-07 19:26:02 +0100 | sammelweis | (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) |
2023-03-07 19:26:40 +0100 | <segfaultfizzbuzz> | i will ask this another way: how many types are there on wikipedia, whether explicitly defined in a computer program or implicitly defined (such as listing a bunch of city names, the city name itself being a type)? |
2023-03-07 19:27:07 +0100 | <monochrom> | I don't understand the question. |
2023-03-07 19:27:24 +0100 | <mauke> | segfaultfizzbuzz: can you give me an example of an expression of type Los Angeles? |
2023-03-07 19:27:40 +0100 | <segfaultfizzbuzz> | Los Angeles is not a type (i think?) but CityName is a type |
2023-03-07 19:28:25 +0100 | <segfaultfizzbuzz> | CityName is not explicitly defined on wikipedia--we will suppose that there is no source code on wikipedia which defines a type system for information about cities |
2023-03-07 19:28:48 +0100 | coot | (~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba) |
2023-03-07 19:29:06 +0100 | <segfaultfizzbuzz> | however hypothetically i might be able to feed wikipedia to a computer program, and that computer program could discover a CityName type, in principle |
2023-03-07 19:30:00 +0100 | <mauke> | take a bucket of seawater. how many sets are there in that bucket? |
2023-03-07 19:30:05 +0100 | <segfaultfizzbuzz> | lol |
2023-03-07 19:30:06 +0100 | <monochrom> | You start with what you want types for, then that reason drives what you consider to be types. |
2023-03-07 19:31:06 +0100 | <segfaultfizzbuzz> | so automated systems cannot discover types? |
2023-03-07 19:31:10 +0100 | talismanick | (~talismani@2601:200:c000:f7a0::5321) (Ping timeout: 260 seconds) |
2023-03-07 19:31:26 +0100 | <monochrom> | I wouldn't say that. |
2023-03-07 19:31:47 +0100 | <segfaultfizzbuzz> | that is to say, humans are uniquely priviledged in being capable of identifying types? |
2023-03-07 19:32:25 +0100 | <monochrom> | I don't make the leap of faith from "you need to have a reason/purpose" to "you need to be human". |
2023-03-07 19:32:36 +0100 | <monochrom> | or "you need to be non-machine" for that matter |
2023-03-07 19:32:48 +0100 | <mauke> | can automated systems discover pet names? or are humans uniquely privileged in being capable of identifying pets' names? |
2023-03-07 19:33:03 +0100 | <segfaultfizzbuzz> | ok, so then it seems that we agree that there should be, at the least, some heuristics, and maybe some rigid rules, for defining when we empirically encounter a type |
2023-03-07 19:34:33 +0100 | <monochrom> | It is really no different if you s/types/programs/ or s/types/axioms/ or s/types/nouns/ or s/types/verbs/ or ... |
2023-03-07 19:35:27 +0100 | <mauke> | or sets |
2023-03-07 19:35:36 +0100 | <mauke> | which you empirically encounter in a bucket of seawater |
2023-03-07 19:35:37 +0100 | jwiegley | (~jwiegley@76-234-69-149.lightspeed.frokca.sbcglobal.net) (Quit: ZNC - http://znc.in) |
2023-03-07 19:35:37 +0100 | johnw | (~johnw@76-234-69-149.lightspeed.frokca.sbcglobal.net) (Quit: ZNC - http://znc.in) |
2023-03-07 19:37:45 +0100 | <segfaultfizzbuzz> | lol |
2023-03-07 19:39:30 +0100 | <mauke> | OO is the most natural way to write programs because the real world naturally decomposes into classes and subclasses of objects |
2023-03-07 19:39:34 +0100 | <segfaultfizzbuzz> | a relevant quote might be: "walks like a type, quacks like a type, what are walk and quack?" |
2023-03-07 19:40:55 +0100 | superbil | (~superbil@1-34-176-171.hinet-ip.hinet.net) (Ping timeout: 268 seconds) |
2023-03-07 19:41:03 +0100 | <geekosaur> | an AI could well define its own types. there's no guarantee they'd look like ours. because a type describes (part of) a problem domain, and the problem is specified by the specifier, whether that be human, alien, AI, whatever |
2023-03-07 19:41:19 +0100 | superbil | (~superbil@1-34-176-171.hinet-ip.hinet.net) |
2023-03-07 19:41:32 +0100 | <geekosaur> | or even animals, although they're not generally solving as complex problems (we think) |
2023-03-07 19:41:46 +0100 | swan | (~swan@209.133.79.6) |
2023-03-07 19:41:54 +0100 | swan | Swan1000 |
2023-03-07 19:43:32 +0100 | zeenk | (~zeenk@2a02:2f04:a20d:f900::7fe) |
2023-03-07 19:44:03 +0100 | <segfaultfizzbuzz> | bbiab i will read the logs |
2023-03-07 19:44:06 +0100 | segfaultfizzbuzz | (~segfaultf@12.172.217.142) (Quit: segfaultfizzbuzz) |
2023-03-07 19:48:55 +0100 | Inst | (~Inst@2601:6c4:4081:54f0:a1f8:4ef8:3abb:c29) (Read error: Connection reset by peer) |
2023-03-07 19:49:17 +0100 | Inst | (~Inst@2601:6c4:4081:54f0:a1f8:4ef8:3abb:c29) |
2023-03-07 19:51:54 +0100 | lbseale | (~quassel@user/ep1ctetus) |
2023-03-07 19:51:54 +0100 | lbseale | (~quassel@user/ep1ctetus) (Client Quit) |
2023-03-07 19:54:18 +0100 | lbseale | (~quassel@user/ep1ctetus) |
2023-03-07 19:55:21 +0100 | lbseale | (~quassel@user/ep1ctetus) (Client Quit) |
2023-03-07 19:56:29 +0100 | lbseale | (~quassel@user/ep1ctetus) |
2023-03-07 20:01:33 +0100 | gensyst | (gensyst@user/gensyst) (Quit: Leaving) |
2023-03-07 20:01:44 +0100 | coot | (~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba) (Quit: coot) |
2023-03-07 20:02:18 +0100 | coot | (~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba) |
2023-03-07 20:08:52 +0100 | eggplantade | (~Eggplanta@2600:1700:38c5:d800:182e:ca34:e210:1559) (Remote host closed the connection) |
2023-03-07 20:14:15 +0100 | lbseale | (~quassel@user/ep1ctetus) (Quit: https://quassel-irc.org - Chat comfortably. Anywhere.) |
2023-03-07 20:15:24 +0100 | lbseale | (~quassel@user/ep1ctetus) |
2023-03-07 20:16:59 +0100 | polyphem_ | (~rod@2a02:810d:840:8754:da48:4c29:8382:1f9b) (Ping timeout: 248 seconds) |
2023-03-07 20:17:59 +0100 | polyphem_ | (~rod@2a02:810d:840:8754:224e:f6ff:fe5e:bc17) |
2023-03-07 20:20:53 +0100 | pdw | (~user@215.156.62.185.bridgefibre.net) (Quit: ERC (IRC client for Emacs 26.3)) |
2023-03-07 20:26:23 +0100 | wootehfoot | (~wootehfoo@user/wootehfoot) |
2023-03-07 20:26:41 +0100 | <krei-se> | @geekosaur as far as i understood from d2l AI has no idea about types, its "just" complex n-dimensional functions. |
2023-03-07 20:26:41 +0100 | <lambdabot> | Unknown command, try @list |
2023-03-07 20:26:59 +0100 | <krei-se> | geekosaur: as far as i understood from d2l AI has no idea about types, its "just" complex n-dimensional functions. |
2023-03-07 20:27:33 +0100 | <geekosaur> | segfaultfizzbuzz has some odd notions of how things work |
2023-03-07 20:27:46 +0100 | <krei-se> | we all start somewhere |
2023-03-07 20:29:52 +0100 | Swan1000 | (~swan@209.133.79.6) (Quit: Client closed) |
2023-03-07 20:30:19 +0100 | merijn | (~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 248 seconds) |
2023-03-07 20:31:42 +0100 | <geekosaur> | in any case, my point still stands: what constitutes a type is not determined by the reader but by the writer |
2023-03-07 20:34:03 +0100 | <krei-se> | i see. So if you take a stand from a self-learning solution-finder like an AI you would take the types you find in a specific domain and work from there into composable functions? |
2023-03-07 20:36:45 +0100 | <stefan-_> | geekosaur, it could also be determined by a community, i.e. a "shared conceptualization" (-> ontology) |
2023-03-07 20:41:15 +0100 | CiaoSen | (~Jura@p200300c9570e91002a3a4dfffe84dbd5.dip0.t-ipconnect.de) |
2023-03-07 20:42:43 +0100 | ft | (~ft@p3e9bc443.dip0.t-ipconnect.de) |
2023-03-07 20:43:22 +0100 | eggplantade | (~Eggplanta@2600:1700:38c5:d800:182e:ca34:e210:1559) |
2023-03-07 20:45:17 +0100 | <geekosaur> | stefan-_, absolutely. consider that "Leslie" changed from a male name to a female one in the West recently enough that there are still males around with that name |
2023-03-07 20:50:19 +0100 | gok | (~gok@c-71-205-240-222.hsd1.co.comcast.net) |
2023-03-07 20:50:26 +0100 | Lycurgus | (~juan@user/Lycurgus) |
2023-03-07 20:51:52 +0100 | mastarija | (~mastarija@188.252.198.44) |
2023-03-07 20:52:32 +0100 | <mastarija> | Is there a lens like `last` that focuses on the last element of a list / structure? |
2023-03-07 20:54:08 +0100 | son0p | (~ff@181.136.122.143) (Ping timeout: 248 seconds) |
2023-03-07 20:55:39 +0100 | coot | (~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba) (Quit: coot) |
2023-03-07 20:56:24 +0100 | <mastarija> | Is there a nice way to focus on the last element of a list using lenses? |
2023-03-07 20:56:47 +0100 | <mastarija> | I could use `ix (length xs - 1)` but that seems like wasted effort |
2023-03-07 20:56:51 +0100 | <lyxia> | https://hackage.haskell.org/package/lens-5.2.1/docs/Control-Lens-Lens.html#v:last1 |
2023-03-07 20:56:56 +0100 | <lyxia> | https://hackage.haskell.org/package/lens-5.2.1/docs/Control-Lens-Fold.html#v:lastOf |
2023-03-07 20:57:02 +0100 | codaraxis | (~codaraxis@user/codaraxis) |
2023-03-07 20:57:17 +0100 | <mastarija> | thx lyxia , don't know how I've missed those |
2023-03-07 20:57:18 +0100 | merijn | (~merijn@86-86-29-250.fixed.kpn.net) |
2023-03-07 20:57:31 +0100 | chomwitt | (~chomwitt@2a02:587:7a18:6d00:1ac0:4dff:fedb:a3f1) (Ping timeout: 248 seconds) |
2023-03-07 21:00:05 +0100 | dsrt^ | (~dsrt@c-24-30-76-89.hsd1.ga.comcast.net) |
2023-03-07 21:00:19 +0100 | waleee | (~waleee@2001:9b0:21c:4000:5bf9:6515:c030:57b7) |
2023-03-07 21:01:48 +0100 | <mastarija> | On second thought, how do I use this? `xs & last1 .~ 10` doesn't appear to be working |
2023-03-07 21:03:26 +0100 | <mauke> | what type is xs? |
2023-03-07 21:03:56 +0100 | <dminuoso> | @let import qualified Data.NonEmpty as NE |
2023-03-07 21:03:57 +0100 | <lambdabot> | /sandbox/tmp/.L.hs:109:1: error: |
2023-03-07 21:03:57 +0100 | <lambdabot> | Could not find module ‘Data.NonEmpty’ |
2023-03-07 21:03:57 +0100 | <lambdabot> | Use -v (or `:set -v` in ghci) to see a list of the files searched for. |
2023-03-07 21:04:01 +0100 | <dminuoso> | @let import qualified Data.List.NonEmpty as NE |
2023-03-07 21:04:03 +0100 | <lambdabot> | Defined. |
2023-03-07 21:04:16 +0100 | <dminuoso> | > 1 :| [2,3,4] & last1 .~ 10 |
2023-03-07 21:04:17 +0100 | <lambdabot> | 1 :| [2,3,10] |
2023-03-07 21:04:26 +0100 | ormaaj | (~ormaaj@user/ormaaj) (Quit: Reconnecting) |
2023-03-07 21:04:42 +0100 | ormaaj | (~ormaaj@user/ormaaj) |
2023-03-07 21:05:01 +0100 | <mauke> | > liftA2 (:|) head tail [1,2,3,4] & last1 .~ 10 |
2023-03-07 21:05:04 +0100 | <lambdabot> | 1 :| [2,3,10] |
2023-03-07 21:05:27 +0100 | <dminuoso> | :t NE.fromList |
2023-03-07 21:05:29 +0100 | <lambdabot> | [a] -> NonEmpty a |
2023-03-07 21:05:40 +0100 | <dminuoso> | That's probably a bit easier on the eyes |
2023-03-07 21:06:45 +0100 | <mauke> | yes, but it doesn't show a call stack on error |
2023-03-07 21:06:58 +0100 | <mastarija> | dminuoso: it's just a list of something |
2023-03-07 21:07:00 +0100 | <dminuoso> | fromList :: HasCallStack => [a] -> NonEmpty a |
2023-03-07 21:07:02 +0100 | <mauke> | plus (:|) looks like a monkey |
2023-03-07 21:07:07 +0100 | <dminuoso> | mauke: Looks like it does, to me |
2023-03-07 21:07:34 +0100 | <mauke> | https://hackage.haskell.org/package/base-4.16.3.0/docs/src/Data.List.NonEmpty.html#fromList |
2023-03-07 21:07:45 +0100 | <dminuoso> | Oh. |
2023-03-07 21:07:56 +0100 | <dminuoso> | That's 4.16.3 |
2023-03-07 21:08:14 +0100 | <mastarija> | Does `last1` not work on simple list `[a]`? |
2023-03-07 21:08:16 +0100 | <dminuoso> | Guess that changed in 9.6 |
2023-03-07 21:08:23 +0100 | <dminuoso> | mastarija: Correct, observe the type signature |
2023-03-07 21:08:29 +0100 | <dminuoso> | last1 :: Traversable1 t => Lens' (t a) a |
2023-03-07 21:08:35 +0100 | <mastarija> | Aha... |
2023-03-07 21:08:39 +0100 | <dminuoso> | It requires `t` (your [a]) to satisfy Traversable1 |
2023-03-07 21:08:44 +0100 | <mastarija> | `Traversable1`, not `Traversable` |
2023-03-07 21:08:47 +0100 | <dminuoso> | Right. |
2023-03-07 21:09:07 +0100 | <dminuoso> | mastarija: Hence going through NonEmpty in the examples above |
2023-03-07 21:09:07 +0100 | <mastarija> | I mean, can't we have `last` that will simply do nothing on empty list? |
2023-03-07 21:09:30 +0100 | <dminuoso> | Well you could have an (affine) traversal, but not a lens. |
2023-03-07 21:10:43 +0100 | <mastarija> | Is there such a utility? |
2023-03-07 21:12:14 +0100 | eggplantade | (~Eggplanta@2600:1700:38c5:d800:182e:ca34:e210:1559) (Remote host closed the connection) |
2023-03-07 21:21:48 +0100 | merijn | (~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 255 seconds) |
2023-03-07 21:24:00 +0100 | Albina_Pavlovna | (~Albina_Pa@cpe-66-65-40-132.nyc.res.rr.com) |
2023-03-07 21:29:37 +0100 | <ncf> | last1 maybe |
2023-03-07 21:29:47 +0100 | Lycurgus | (~juan@user/Lycurgus) (Quit: Exeunt: personae.ai-integration.biz) |
2023-03-07 21:30:21 +0100 | <ncf> | hmm that's a lens |
2023-03-07 21:30:56 +0100 | wootehfoot | (~wootehfoo@user/wootehfoot) (Read error: Connection reset by peer) |
2023-03-07 21:31:19 +0100 | pavonia | (~user@user/siracusa) |
2023-03-07 21:31:37 +0100 | <geekosaur> | :t lastOf |
2023-03-07 21:31:38 +0100 | <lambdabot> | Getting (Rightmost a) s a -> s -> Maybe a |
2023-03-07 21:32:10 +0100 | <ncf> | i guess such a traversal would be non-trivial to implement |
2023-03-07 21:32:39 +0100 | <ncf> | in terms of Traversable at least |
2023-03-07 21:35:35 +0100 | pwntips | (~user@24-113-98-114.wavecable.com) (Ping timeout: 268 seconds) |
2023-03-07 21:36:12 +0100 | trev | (~trev@user/trev) (Remote host closed the connection) |
2023-03-07 21:38:26 +0100 | <ncf> | hm. maybe something like \ f -> fmap getReverse . taking 1 f . Reverse |
2023-03-07 21:38:45 +0100 | hgolden_ | (~hgolden@cpe-172-251-233-141.socal.res.rr.com) (Remote host closed the connection) |
2023-03-07 21:39:44 +0100 | zeenk | (~zeenk@2a02:2f04:a20d:f900::7fe) (Quit: Konversation terminated!) |
2023-03-07 21:42:30 +0100 | <ncf> | @let lastT f = fmap getReverse . taking 1 traverse f . Reverse |
2023-03-07 21:42:31 +0100 | <lambdabot> | /sandbox/tmp/.L.hs:167:1: error: [-Woverlapping-patterns, -Werror=overlappin... |
2023-03-07 21:42:31 +0100 | <lambdabot> | Pattern match is redundant |
2023-03-07 21:42:31 +0100 | <lambdabot> | In an equation for ‘lastT’: lastT f = ... |
2023-03-07 21:42:42 +0100 | <ncf> | (i defined that in PM) |
2023-03-07 21:42:46 +0100 | <ncf> | > "hi" & lastT %~ succ |
2023-03-07 21:42:48 +0100 | <lambdabot> | "hj" |
2023-03-07 21:42:49 +0100 | <ncf> | > "" & lastT %~ succ |
2023-03-07 21:42:50 +0100 | <lambdabot> | "" |
2023-03-07 21:48:34 +0100 | merijn | (~merijn@86-86-29-250.fixed.kpn.net) |
2023-03-07 21:48:58 +0100 | mei | (~mei@user/mei) (Remote host closed the connection) |
2023-03-07 21:51:22 +0100 | mei | (~mei@user/mei) |
2023-03-07 21:52:59 +0100 | merijn | (~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 248 seconds) |
2023-03-07 21:54:43 +0100 | stef204 | (~stef204@user/stef204) |
2023-03-07 21:58:02 +0100 | talismanick | (~talismani@campus-107-253.ucdavis.edu) |
2023-03-07 21:59:14 +0100 | stef204 | (~stef204@user/stef204) (Client Quit) |
2023-03-07 22:01:34 +0100 | a_coll | (~acoll@45.92.120.189) |
2023-03-07 22:03:55 +0100 | NiceBird | (~NiceBird@185.133.111.196) |
2023-03-07 22:04:48 +0100 | juri__ | juri_ |
2023-03-07 22:06:04 +0100 | merijn | (~merijn@86-86-29-250.fixed.kpn.net) |
2023-03-07 22:12:43 +0100 | eggplantade | (~Eggplanta@2600:1700:38c5:d800:182e:ca34:e210:1559) |
2023-03-07 22:14:00 +0100 | thegeekinside | (~thegeekin@189.141.115.134) (Ping timeout: 255 seconds) |
2023-03-07 22:14:19 +0100 | merijn | (~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 248 seconds) |
2023-03-07 22:16:59 +0100 | eggplantade | (~Eggplanta@2600:1700:38c5:d800:182e:ca34:e210:1559) (Ping timeout: 248 seconds) |
2023-03-07 22:22:49 +0100 | lambdabot | (~lambdabot@haskell/bot/lambdabot) (Remote host closed the connection) |
2023-03-07 22:25:03 +0100 | zeenk | (~zeenk@2a02:2f04:a20d:f900::7fe) |
2023-03-07 22:26:15 +0100 | szkl | (uid110435@id-110435.uxbridge.irccloud.com) |
2023-03-07 22:30:57 +0100 | gok | (~gok@c-71-205-240-222.hsd1.co.comcast.net) (Quit: Client closed) |
2023-03-07 22:35:30 +0100 | talismanick | (~talismani@campus-107-253.ucdavis.edu) (Ping timeout: 260 seconds) |
2023-03-07 22:37:11 +0100 | Lumia | (~Lumia@user/Lumia) |
2023-03-07 22:37:51 +0100 | _xor | (~xor@72.49.195.228) (Ping timeout: 255 seconds) |
2023-03-07 22:39:05 +0100 | _xor | (~xor@72.49.195.228) |
2023-03-07 22:40:09 +0100 | Albina_Pavlovna | (~Albina_Pa@cpe-66-65-40-132.nyc.res.rr.com) (Quit: ZZZzzz…) |
2023-03-07 22:40:39 +0100 | Albina_Pavlovna | (~Albina_Pa@cpe-66-65-40-132.nyc.res.rr.com) |
2023-03-07 22:44:26 +0100 | shapr | (~user@68.54.166.125) (Remote host closed the connection) |
2023-03-07 22:46:37 +0100 | merijn | (~merijn@86-86-29-250.fixed.kpn.net) |
2023-03-07 22:50:46 +0100 | CiaoSen | (~Jura@p200300c9570e91002a3a4dfffe84dbd5.dip0.t-ipconnect.de) (Ping timeout: 252 seconds) |
2023-03-07 22:54:38 +0100 | johnw | (~johnw@76-234-69-149.lightspeed.frokca.sbcglobal.net) |
2023-03-07 22:55:08 +0100 | jwiegley | (~jwiegley@76-234-69-149.lightspeed.frokca.sbcglobal.net) |
2023-03-07 22:56:03 +0100 | thegeekinside | (~thegeekin@189.141.115.134) |
2023-03-07 23:04:14 +0100 | son0p | (~ff@181.136.122.143) |
2023-03-07 23:04:40 +0100 | segfaultfizzbuzz | (~segfaultf@12.172.217.142) |
2023-03-07 23:05:47 +0100 | takuan | (~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection) |
2023-03-07 23:06:41 +0100 | Albina_Pavlovna | (~Albina_Pa@cpe-66-65-40-132.nyc.res.rr.com) (Quit: ZZZzzz…) |
2023-03-07 23:10:11 +0100 | Albina_Pavlovna | (~Albina_Pa@cpe-66-65-40-132.nyc.res.rr.com) |
2023-03-07 23:11:14 +0100 | dolio | (~dolio@130.44.134.54) (Quit: ZNC 1.8.2 - https://znc.in) |
2023-03-07 23:12:21 +0100 | <mastarija> | what's the difference between an `IndexedTraversal` and something like `Index m -> Traversal' m (IxValue m)`? |
2023-03-07 23:17:34 +0100 | Tuplanolla | (~Tuplanoll@91-159-68-152.elisa-laajakaista.fi) |
2023-03-07 23:19:41 +0100 | gnalzo | (~gnalzo@2a01:e0a:498:fd50:fcc6:bb5d:489a:ce8c) (Quit: WeeChat 3.8) |
2023-03-07 23:20:00 +0100 | __monty__ | (~toonn@user/toonn) (Quit: leaving) |
2023-03-07 23:20:10 +0100 | dolio | (~dolio@130.44.134.54) |
2023-03-07 23:20:11 +0100 | bgs | (~bgs@212-85-160-171.dynamic.telemach.net) (Remote host closed the connection) |
2023-03-07 23:20:25 +0100 | merijn | (~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 268 seconds) |
2023-03-07 23:21:04 +0100 | janus | (janus@anubis.0x90.dk) |
2023-03-07 23:21:41 +0100 | <janus> | I found documentation of the _ccall_ FFI old GHC's use! https://web.archive.org/web/20020625130011/http://www.ki.informatik.uni-frankfurt.de/doc/html/ghc-… |
2023-03-07 23:23:06 +0100 | michalz | (~michalz@185.246.204.126) (Remote host closed the connection) |
2023-03-07 23:23:41 +0100 | lambdabot | (~lambdabot@silicon.int-e.eu) |
2023-03-07 23:23:41 +0100 | lambdabot | (~lambdabot@silicon.int-e.eu) (Changing host) |
2023-03-07 23:23:41 +0100 | lambdabot | (~lambdabot@haskell/bot/lambdabot) |
2023-03-07 23:27:19 +0100 | mrcsno | (~mrcsno@user/mrcsno) |
2023-03-07 23:29:40 +0100 | segfaultfizzbuzz | (~segfaultf@12.172.217.142) (Ping timeout: 268 seconds) |
2023-03-07 23:30:06 +0100 | <monochrom> | 2.10 that's old |
2023-03-07 23:31:02 +0100 | <monochrom> | And casm... |
2023-03-07 23:32:08 +0100 | pwntips | (~user@24-113-98-114.wavecable.com) |
2023-03-07 23:37:39 +0100 | <janus> | trying to bootstrap and I have made some progress getting GHC 0.29 to compile on NHC98 |
2023-03-07 23:37:52 +0100 | <janus> | but GHC 3 needs GHC 2.10 to compile and I don't know where to get the sources |
2023-03-07 23:38:21 +0100 | <janus> | I wrote an sysadmin at the University of Glasgow an email, asking if they have backups of their ftp server |
2023-03-07 23:38:52 +0100 | <janus> | If somebody has it, please let me know... |
2023-03-07 23:41:07 +0100 | <janus> | Also wrote the University of Warsaw since this listing suggests they had it backed up: https://www.ftpstatus.com/site_directories.php?name=ftp.mimuw.edu.pl |
2023-03-07 23:41:33 +0100 | <janus> | if they mirrored it at the University of Warsaw, surely enough people mirrored it, there must be a copy somewhere |
2023-03-07 23:42:26 +0100 | <janus> | Also discovered that there is an even older release than 0.29 available at discmaster! 0.16 http://discmaster.textfiles.com/browse/951/LANGUAGE%20OS.iso/haskell/glasgow/ghc-src.lha |
2023-03-07 23:43:23 +0100 | <janus> | the sources of 0.29 suggest that it was supposed to work with multiple compilers though, so not sure 0.16 buys us a lot since it looks like it is only supposed to compile on HBC |
2023-03-07 23:43:59 +0100 | <janus> | but it is good to know that we actually have a release of GHC that isn't self-hosting |
2023-03-07 23:44:47 +0100 | <janus> | the University of Warsaw also has a backup of Chalmers, so maybe the LML compiler can be recovered? Then HBC could be compiled https://github.com/haskell-implementations/hbc |
2023-03-07 23:45:42 +0100 | <mauke> | janus: https://github.com/ghc/ghc/tree/6df3befbd269355a600a16c69468025cd2c793aa ? |
2023-03-07 23:46:22 +0100 | <janus> | oh cool, of course! thanks mauke |
2023-03-07 23:47:05 +0100 | <janus> | will post your link at https://gitlab.haskell.org/ghc/homepage/-/issues/8 |
2023-03-07 23:47:20 +0100 | <janus> | do you want credit? |
2023-03-07 23:48:41 +0100 | <mauke> | ... credit for clicking around on github? :-) |
2023-03-07 23:48:50 +0100 | <janus> | sure sure, credit is cheap :P |
2023-03-07 23:49:05 +0100 | <mauke> | ok then :-) |
2023-03-07 23:49:47 +0100 | <mauke> | note that the commit is approximate; I was just looking for something that updated the ghc/ANNOUNCE file to 2.10 |
2023-03-07 23:50:14 +0100 | NiceBird | (~NiceBird@185.133.111.196) (Quit: Leaving) |
2023-03-07 23:50:30 +0100 | <janus> | yeah, makes sense |
2023-03-07 23:53:18 +0100 | <Hecate> | what are the rules for bootstrapping? Do you always have to start from C? |
2023-03-07 23:53:42 +0100 | <Hecate> | okay nevermind I realised my question was stupid right after pressing Enter. |
2023-03-07 23:54:27 +0100 | <mauke> | it's too bad old releases aren't tagged properly |
2023-03-07 23:55:47 +0100 | <mauke> | with perl I can just checkout "perl-2.001" from 1988 or whatever |
2023-03-07 23:56:03 +0100 | <janus> | Hecate: i would be pretty happy if i could just get, let's say the ghc 8.6.5 binary (that ancient for me already :P) without using any binary GHC build |
2023-03-07 23:56:11 +0100 | Lumia | (~Lumia@user/Lumia) (Ping timeout: 248 seconds) |
2023-03-07 23:56:56 +0100 | <janus> | Hecate: so I don't actually remember what I did to get NHC compiled, maybe it used some binary artifact that shipped with the distribution. but bootstrapping NHC is a separate effort in my eyes |
2023-03-07 23:58:18 +0100 | <janus> | it should all compose anyway |
2023-03-07 23:58:20 +0100 | Albina_Pavlovna | (~Albina_Pa@cpe-66-65-40-132.nyc.res.rr.com) (Ping timeout: 260 seconds) |
2023-03-07 23:58:34 +0100 | Midjak | (~Midjak@82.66.147.146) (Quit: This computer has gone to sleep) |
2023-03-07 23:58:58 +0100 | Albina_Pavlovna | (~Albina_Pa@cpe-66-65-40-132.nyc.res.rr.com) |