Logs on 2021-08-03 (liberachat/#haskell)
| 00:00:11 | → | pesada joins (~agua@2804:14c:8793:8e2f:64f8:45c2:2056:5625) |
| 00:03:45 | → | bitdex joins (~bitdex@gateway/tor-sasl/bitdex) |
| 00:04:42 | × | agua quits (~agua@2804:18:7f:1e53:1:0:7e70:81d) (Ping timeout: 272 seconds) |
| 00:04:54 | × | jgeerds quits (~jgeerds@55d45555.access.ecotel.net) (Ping timeout: 276 seconds) |
| 00:06:03 | → | Shailangsa_ joins (~shailangs@host86-185-98-7.range86-185.btcentralplus.com) |
| 00:06:18 | × | juhp quits (~juhp@bb116-14-48-29.singnet.com.sg) (Ping timeout: 240 seconds) |
| 00:06:45 | × | Erutuon quits (~Erutuon@user/erutuon) (Quit: WeeChat 2.8) |
| 00:07:01 | → | Erutuon joins (~Erutuon@user/erutuon) |
| 00:14:34 | → | benjaminhodgson joins (~benjaminh@cpe-74-71-15-134.nyc.res.rr.com) |
| 00:16:00 | <benjaminhodgson> | hello haskell friends! i was wondering if anyone here could help me dredge through the memory banks. I seem to remember reading a blog post in which the author showed that McBride-style indexed monads were equivalent in power to Atkey-style ones. Does anyone here remember such a post? |
| 00:16:22 | <benjaminhodgson> | i asked on reddit but no one seemed to recognise it, so i'm trying here :) |
| 00:17:10 | <benjaminhodgson> | The post would've been at least a couple of years ago |
| 00:19:28 | <benjaminhodgson> | When I say "equivalent in power", I mean they managed to figure out a way to turn an Atkey monad into a McBride one, which is obviously quite interesting because the McBride ones seem more powerful |
| 00:20:24 | → | oso joins (~oso@2601:58c:c080:a950:f275:2530:b398:680b) |
| 00:20:46 | <geekosaur> | hm? wouldn't the other way around indicate that better, then? |
| 00:21:40 | <benjaminhodgson> | It's easy to turn a McBride monad into an Atkey one; this post was interesting since they managed to do it the other way as well |
| 00:21:57 | <benjaminhodgson> | just trying to find the post so i can reread it :) |
| 00:22:28 | <benjaminhodgson> | im just trying to find the post so i can reread it :) |
| 00:23:46 | × | jao quits (~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net) (Ping timeout: 272 seconds) |
| 00:24:07 | → | jao joins (jao@gateway/vpn/protonvpn/jao) |
| 00:24:08 | <benjaminhodgson> | or perhaps i'm going mad and i've imagined the whole thing. |
| 00:26:25 | <Axman6> | Maybe you were predicting the future and you need to write it |
| 00:26:33 | × | benjaminhodgson quits (~benjaminh@cpe-74-71-15-134.nyc.res.rr.com) (Quit: Client closed) |
| 00:27:28 | → | benjaminhodgson joins (~benjaminh@cpe-74-71-15-134.nyc.res.rr.com) |
| 00:27:39 | <benjaminhodgson> | lol, a future in which i am much cleverer than i am |
| 00:27:58 | <Axman6> | this is just tying the knot |
| 00:28:27 | <Axman6> | the result will become more defined as it becomes more defined |
| 00:28:51 | <c_wraith> | unless it diverges and attempting to examine it will unravel the universe |
| 00:29:18 | → | chris__ joins (~chris@81.96.113.213) |
| 00:29:38 | <Axman6> | from a type perspective, that is fine though |
| 00:30:21 | → | roboguy_ joins (~roboguy_@2605:a601:afe7:9f00:6c0c:93c2:73f6:e346) |
| 00:32:06 | × | lavaman quits (~lavaman@98.38.249.169) (Remote host closed the connection) |
| 00:32:17 | × | hsiktas[m] quits (~hsiktasma@2001:470:69fc:105::30d4) (Write error: Connection reset by peer) |
| 00:32:17 | × | wallymathieu[m] quits (~wallymath@2001:470:69fc:105::16ae) (Read error: Connection reset by peer) |
| 00:32:17 | × | deuslambda[m] quits (~deuslambd@2001:470:69fc:105::c749) (Read error: Connection reset by peer) |
| 00:32:17 | × | fakehacker[m] quits (~fakehacke@2001:470:69fc:105::b5f0) (Read error: Connection reset by peer) |
| 00:32:18 | × | Orbstheorem quits (~orbstheor@2001:470:69fc:105::a56) (Read error: Connection reset by peer) |
| 00:32:18 | × | srid[m] quits (~sridmatri@2001:470:69fc:105::1c2) (Read error: Connection reset by peer) |
| 00:32:18 | × | jkachmar quits (~jkachmar@2001:470:69fc:105::c72d) (Read error: Connection reset by peer) |
| 00:32:18 | × | psydroid quits (~psydroid@user/psydroid) (Write error: Connection reset by peer) |
| 00:32:19 | × | Morrow[m] quits (~morrowmma@2001:470:69fc:105::1d0) (Read error: Connection reset by peer) |
| 00:32:19 | × | bitonic quits (~bitonic@2001:470:69fc:105::1812) (Write error: Connection reset by peer) |
| 00:32:19 | × | adziahel[m] quits (~adziahelm@2001:470:69fc:105::b4d) (Read error: Connection reset by peer) |
| 00:32:19 | × | ServerStatsDisco quits (~serversta@2001:470:69fc:105::1a) (Write error: Connection reset by peer) |
| 00:32:19 | × | siraben quits (~siraben@user/siraben) (Write error: Connection reset by peer) |
| 00:32:21 | × | hjulle[m] quits (~hjullemat@2001:470:69fc:105::1dd) (Read error: Connection reset by peer) |
| 00:32:21 | × | Deewiant quits (~deewiant@2001:470:69fc:105::2fd3) (Read error: Connection reset by peer) |
| 00:32:21 | × | yin[m] quits (~zwromatri@2001:470:69fc:105::1d4) (Read error: Connection reset by peer) |
| 00:32:21 | × | maerwald[m] quits (~maerwaldm@2001:470:69fc:105::1ee) (Read error: Connection reset by peer) |
| 00:32:21 | × | Drew[m] quits (~drewefenw@2001:470:69fc:105::c8c4) (Read error: Connection reset by peer) |
| 00:32:21 | × | oak- quits (~oakuniver@2001:470:69fc:105::fcd) (Read error: Connection reset by peer) |
| 00:32:21 | × | Ollie[m] quits (~ollieocha@2001:470:69fc:105::41a5) (Read error: Connection reset by peer) |
| 00:32:21 | × | SimonWeiss[m] quits (~weiss-dma@2001:470:69fc:105::bebd) (Read error: Connection reset by peer) |
| 00:32:21 | × | bb010g quits (~bb010g@2001:470:69fc:105::9a5) (Read error: Connection reset by peer) |
| 00:32:21 | × | MatrixTravelerbo quits (~voyagert2@2001:470:69fc:105::22) (Read error: Connection reset by peer) |
| 00:32:21 | × | vaibhavsagar[m] quits (~vaibhavsa@2001:470:69fc:105::ffe) (Read error: Connection reset by peer) |
| 00:32:21 | × | afotgkmnzj7asv3r quits (~afotgkmnz@2001:470:69fc:105::c24b) (Read error: Connection reset by peer) |
| 00:32:21 | × | Drezil quits (~drezilkif@2001:470:69fc:105::7f8) (Read error: Connection reset by peer) |
| 00:32:21 | × | amesgen[m] quits (~amesgenm]@2001:470:69fc:105::82b) (Read error: Connection reset by peer) |
| 00:32:21 | × | OndejSkup[m] quits (~mimivxmat@2001:470:69fc:105::c300) (Read error: Connection reset by peer) |
| 00:32:21 | × | maralorn quits (~maralorn@2001:470:69fc:105::251) (Write error: Connection reset by peer) |
| 00:32:22 | × | aveltras[m] quits (~aveltrasm@2001:470:69fc:105::3ef9) (Read error: Connection reset by peer) |
| 00:32:22 | × | reza[m] quits (~rezaphone@2001:470:69fc:105::3eda) (Read error: Connection reset by peer) |
| 00:32:22 | × | Guest2540 quits (~sylveonma@2001:470:69fc:105::2d95) (Read error: Connection reset by peer) |
| 00:32:22 | × | jellz[m] quits (~jellzmatr@2001:470:69fc:105::2daa) (Read error: Connection reset by peer) |
| 00:32:22 | × | octeep[m] quits (~octeepmoc@2001:470:69fc:105::695e) (Read error: Connection reset by peer) |
| 00:32:22 | × | ecameron[m] quits (~ecameronm@2001:470:69fc:105::35df) (Read error: Connection reset by peer) |
| 00:32:22 | × | dualinverter[m] quits (~dualinver@2001:470:69fc:105::16a7) (Read error: Connection reset by peer) |
| 00:32:22 | × | ormaaj quits (~ormaaj@user/ormaaj) (Read error: Connection reset by peer) |
| 00:32:22 | × | rednaZ[m] quits (~r3dnazmat@2001:470:69fc:105::ba70) (Read error: Connection reset by peer) |
| 00:32:22 | × | RohitGoswami[m] quits (~rgoswamim@2001:470:69fc:105::16cc) (Read error: Connection reset by peer) |
| 00:32:22 | × | CyrusT[m] quits (~cyrustcru@2001:470:69fc:105::306e) (Read error: Connection reset by peer) |
| 00:32:22 | × | infinisil quits (~infinisil@2001:470:69fc:105::ff8) (Read error: Connection reset by peer) |
| 00:32:22 | × | sm quits (~sm@plaintextaccounting/sm) (Read error: Connection reset by peer) |
| 00:32:22 | × | ericson2314 quits (~ericson23@2001:470:69fc:105::70c) (Write error: Connection reset by peer) |
| 00:32:22 | × | Deide quits (~deide@user/deide) (Read error: Connection reset by peer) |
| 00:32:22 | × | fabfianda[m] quits (~fabfianda@2001:470:69fc:105::6db) (Write error: Connection reset by peer) |
| 00:32:22 | × | Tisoxin quits (~ikosit@user/ikosit) (Write error: Connection reset by peer) |
| 00:32:22 | × | ac quits (~aloiscoch@2001:470:69fc:105::65) (Read error: Connection reset by peer) |
| 00:32:22 | × | boxscape quits (~boxscape@user/boxscape) (Write error: Connection reset by peer) |
| 00:32:22 | × | jaror[m] quits (~jaror@2001:470:69fc:105::265) (Write error: Connection reset by peer) |
| 00:32:22 | × | dminuoso[m] quits (~dminuosom@2001:470:69fc:105::33bb) (Write error: Connection reset by peer) |
| 00:32:22 | × | bryan[m] quits (~bchreekat@2001:470:69fc:105::16b5) (Write error: Connection reset by peer) |
| 00:32:22 | × | cdsmith quits (~cdsmithma@2001:470:69fc:105::284) (Write error: Connection reset by peer) |
| 00:32:22 | × | smichel17[m] quits (~smichel17@2001:470:69fc:105::2d32) (Write error: Connection reset by peer) |
| 00:32:22 | × | marinelli[m] quits (~marinelli@2001:470:69fc:105::2d8) (Write error: Connection reset by peer) |
| 00:32:22 | × | polykernel quits (~polykerne@user/polykernel) (Read error: Connection reset by peer) |
| 00:32:22 | × | andreabedini[m] quits (~andreabed@2001:470:69fc:105::c821) (Read error: Connection reset by peer) |
| 00:32:22 | × | ixlun quits (~ixlun@2001:470:69fc:105::41b3) (Read error: Connection reset by peer) |
| 00:32:22 | × | ru0mad[m] quits (~ru0madmat@2001:470:69fc:105::9b2) (Read error: Connection reset by peer) |
| 00:32:22 | × | kadoban quits (~kadoban@user/kadoban) (Read error: Connection reset by peer) |
| 00:32:23 | × | thomasjm[m] quits (~thomasjmm@2001:470:69fc:105::c6d9) (Read error: Connection reset by peer) |
| 00:32:23 | × | unclechu quits (~unclechu@2001:470:69fc:105::354) (Read error: Connection reset by peer) |
| 00:32:23 | × | PotatoHatsue quits (~berberman@2001:470:69fc:105::b488) (Read error: Connection reset by peer) |
| 00:32:23 | × | jophish quits (~jophish@2001:470:69fc:105::670) (Read error: Connection reset by peer) |
| 00:32:23 | × | justosophy[m] quits (~justosoph@2001:470:69fc:105::572f) (Read error: Connection reset by peer) |
| 00:32:23 | × | peddie quits (~peddie@2001:470:69fc:105::25d) (Read error: Connection reset by peer) |
| 00:32:23 | × | inkbottle[m] quits (~inkbottle@2001:470:69fc:105::2ff5) (Read error: Connection reset by peer) |
| 00:32:23 | × | jakefromstatefar quits (~jakefroms@2001:470:69fc:105::15ef) (Read error: Connection reset by peer) |
| 00:32:23 | × | fgaz quits (~fgaz@2001:470:69fc:105::842) (Write error: Connection reset by peer) |
| 00:32:23 | × | kar1[m] quits (~kar1matri@2001:470:69fc:105::c308) (Read error: Connection reset by peer) |
| 00:32:23 | × | lwe[m] quits (~dendrumat@2001:470:69fc:105::2f9b) (Read error: Connection reset by peer) |
| 00:32:23 | × | autrim64[m] quits (~autrim64m@2001:470:69fc:105::16a1) (Read error: Connection reset by peer) |
| 00:32:23 | × | kosmikus[m] quits (~andresloe@2001:470:69fc:105::95d) (Write error: Connection reset by peer) |
| 00:32:23 | × | vbeatrice[m] quits (~vbeatrice@2001:470:69fc:105::3ebf) (Write error: Connection reset by peer) |
| 00:32:23 | × | soft quits (~soft-matr@2001:470:69fc:105::c75) (Write error: Connection reset by peer) |
| 00:32:23 | × | Las[m] quits (~lasmatrix@2001:470:69fc:105::74e) (Read error: Connection reset by peer) |
| 00:32:23 | × | carmysilna quits (~brightly-@2001:470:69fc:105::2190) (Write error: Connection reset by peer) |
| 00:32:23 | × | unrooted quits (~unrooted@2001:470:69fc:105::a4a) (Read error: Connection reset by peer) |
| 00:32:23 | × | hughjfchen[m] quits (~hughjfche@2001:470:69fc:105::c29d) (Read error: Connection reset by peer) |
| 00:32:23 | × | alexfmpe[m] quits (~alexfmpem@2001:470:69fc:105::38ba) (Read error: Connection reset by peer) |
| 00:32:23 | × | jchia[m] quits (~jchiamatr@2001:470:69fc:105::c50b) (Read error: Connection reset by peer) |
| 00:32:23 | × | the-coot[m] quits (~the-cootm@2001:470:69fc:105::95f) (Read error: Connection reset by peer) |
| 00:32:23 | × | zfnmxt quits (~zfnmxtzfn@user/zfnmxt) (Read error: Connection reset by peer) |
| 00:33:41 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 00:34:02 | → | maerwald[m] joins (~maerwaldm@2001:470:69fc:105::1ee) |
| 00:35:39 | → | Hydrazer joins (~Hydrazer@S010684c9b26eee6d.cg.shawcable.net) |
| 00:36:17 | <Hydrazer> | e |
| 00:36:29 | → | jchia[m] joins (~jchiamatr@2001:470:69fc:105::c50b) |
| 00:36:29 | → | ac joins (~aloiscoch@2001:470:69fc:105::65) |
| 00:36:29 | → | hjulle[m] joins (~hjullemat@2001:470:69fc:105::1dd) |
| 00:36:29 | → | sm joins (~sm@plaintextaccounting/sm) |
| 00:36:41 | → | dualinverter[m] joins (~dualinver@2001:470:69fc:105::16a7) |
| 00:36:43 | → | MatrixTravelerbo joins (~voyagert2@2001:470:69fc:105::22) |
| 00:36:55 | → | Morrow[m] joins (~morrowmma@2001:470:69fc:105::1d0) |
| 00:36:55 | → | jaror[m] joins (~jaror@2001:470:69fc:105::265) |
| 00:36:56 | → | fgaz joins (~fgaz@2001:470:69fc:105::842) |
| 00:36:56 | → | peddie joins (~peddie@2001:470:69fc:105::25d) |
| 00:36:56 | → | cdsmith joins (~cdsmithma@2001:470:69fc:105::284) |
| 00:36:56 | → | ru0mad[m] joins (~ru0madmat@2001:470:69fc:105::9b2) |
| 00:36:56 | → | thomasjm[m] joins (~thomasjmm@2001:470:69fc:105::c6d9) |
| 00:37:08 | → | jakefromstatefar joins (~jakefroms@2001:470:69fc:105::15ef) |
| 00:37:08 | → | fabfianda[m] joins (~fabfianda@2001:470:69fc:105::6db) |
| 00:37:22 | → | bb010g joins (~bb010g@2001:470:69fc:105::9a5) |
| 00:37:34 | → | wallymathieu[m] joins (~wallymath@2001:470:69fc:105::16ae) |
| 00:37:47 | → | Drezil joins (~drezilkif@2001:470:69fc:105::7f8) |
| 00:37:48 | → | Las[m] joins (~lasmatrix@2001:470:69fc:105::74e) |
| 00:37:48 | → | ServerStatsDisco joins (~serversta@2001:470:69fc:105::1a) |
| 00:37:49 | → | amesgen[m] joins (~amesgenm]@2001:470:69fc:105::82b) |
| 00:37:49 | → | the-coot[m] joins (~the-cootm@2001:470:69fc:105::95f) |
| 00:38:01 | → | kosmikus[m] joins (~andresloe@2001:470:69fc:105::95d) |
| 00:38:13 | → | adziahel[m] joins (~adziahelm@2001:470:69fc:105::b4d) |
| 00:38:13 | → | vaibhavsagar[m] joins (~vaibhavsa@2001:470:69fc:105::ffe) |
| 00:38:19 | <Hydrazer> | D: |
| 00:38:25 | → | zfnmxt joins (~zfnmxtzfn@2001:470:69fc:105::2b32) |
| 00:38:25 | → | soft joins (~soft-matr@2001:470:69fc:105::c75) |
| 00:38:40 | → | oak- joins (~oakuniver@2001:470:69fc:105::fcd) |
| 00:38:41 | → | kadoban joins (~kadoban@user/kadoban) |
| 00:38:41 | → | carmysilna joins (~brightly-@2001:470:69fc:105::2190) |
| 00:38:41 | → | bitonic joins (~bitonic@2001:470:69fc:105::1812) |
| 00:38:41 | → | jophish joins (~jophish@2001:470:69fc:105::670) |
| 00:38:41 | → | ericson2314 joins (~ericson23@2001:470:69fc:105::70c) |
| 00:38:53 | <Axman6> | Can we help Hydrazer? |
| 00:38:54 | → | Ollie[m] joins (~ollieocha@2001:470:69fc:105::41a5) |
| 00:38:55 | → | PotatoHatsue joins (~berberman@2001:470:69fc:105::b488) |
| 00:38:57 | → | ixlun joins (~ixlun@2001:470:69fc:105::41b3) |
| 00:38:57 | → | unclechu joins (~unclechu@2001:470:69fc:105::354) |
| 00:38:57 | → | Deewiant joins (~deewiant@2001:470:69fc:105::2fd3) |
| 00:38:58 | → | bryan[m] joins (~bchreekat@2001:470:69fc:105::16b5) |
| 00:38:58 | → | siraben joins (~siraben@user/siraben) |
| 00:39:10 | → | RohitGoswami[m] joins (~rgoswamim@2001:470:69fc:105::16cc) |
| 00:39:11 | → | unrooted joins (~unrooted@2001:470:69fc:105::a4a) |
| 00:39:24 | → | autrim64[m] joins (~autrim64m@2001:470:69fc:105::16a1) |
| 00:39:25 | → | rednaZ[m] joins (~r3dnazmat@2001:470:69fc:105::ba70) |
| 00:39:39 | → | yin[m] joins (~zwromatri@2001:470:69fc:105::1d4) |
| 00:40:03 | → | Sylveon joins (~sylveonma@2001:470:69fc:105::2d95) |
| 00:40:09 | → | maralorn joins (~maralorn@2001:470:69fc:105::251) |
| 00:40:27 | → | SimonWeiss[m] joins (~weiss-dma@2001:470:69fc:105::bebd) |
| 00:40:27 | Sylveon | is now known as Guest4241 |
| 00:40:44 | → | dminuoso[m] joins (~dminuosom@2001:470:69fc:105::33bb) |
| 00:40:58 | → | jellz[m] joins (~jellzmatr@2001:470:69fc:105::2daa) |
| 00:40:59 | → | lwe[m] joins (~dendrumat@2001:470:69fc:105::2f9b) |
| 00:40:59 | → | inkbottle[m] joins (~inkbottle@2001:470:69fc:105::2ff5) |
| 00:41:11 | → | reza[m] joins (~rezaphone@2001:470:69fc:105::3eda) |
| 00:41:23 | → | ecameron[m] joins (~ecameronm@2001:470:69fc:105::35df) |
| 00:41:23 | → | marinelli[m] joins (~marinelli@2001:470:69fc:105::2d8) |
| 00:41:35 | → | aveltras[m] joins (~aveltrasm@2001:470:69fc:105::3ef9) |
| 00:41:35 | → | hsiktas[m] joins (~hsiktasma@2001:470:69fc:105::30d4) |
| 00:41:35 | → | boxscape joins (~boxscape@user/boxscape) |
| 00:41:49 | → | vbeatrice[m] joins (~vbeatrice@2001:470:69fc:105::3ebf) |
| 00:41:49 | → | infinisil joins (~infinisil@2001:470:69fc:105::ff8) |
| 00:42:02 | → | octeep[m] joins (~octeepmoc@2001:470:69fc:105::695e) |
| 00:42:17 | → | Orbstheorem joins (~orbstheor@2001:470:69fc:105::a56) |
| 00:42:29 | → | afotgkmnzj7asv3r joins (~afotgkmnz@2001:470:69fc:105::c24b) |
| 00:42:30 | → | jkachmar joins (~jkachmar@2001:470:69fc:105::c72d) |
| 00:42:30 | → | Tisoxin joins (~ikosit@user/ikosit) |
| 00:42:42 | → | justosophy[m] joins (~justosoph@2001:470:69fc:105::572f) |
| 00:42:54 | → | CyrusT[m] joins (~cyrustcru@2001:470:69fc:105::306e) |
| 00:43:00 | <Hydrazer> | ``` |
| 00:43:06 | → | deuslambda[m] joins (~deuslambd@2001:470:69fc:105::c749) |
| 00:43:07 | → | Deide joins (~deide@user/deide) |
| 00:43:07 | → | smichel17[m] joins (~smichel17@2001:470:69fc:105::2d32) |
| 00:43:20 | → | fakehacker[m] joins (~fakehacke@2001:470:69fc:105::b5f0) |
| 00:43:21 | → | polykernel joins (~polykerne@user/polykernel) |
| 00:43:21 | → | hughjfchen[m] joins (~hughjfche@2001:470:69fc:105::c29d) |
| 00:43:22 | → | srid[m] joins (~sridmatri@2001:470:69fc:105::1c2) |
| 00:43:22 | → | psydroid joins (~psydroid@user/psydroid) |
| 00:43:22 | → | OndejSkup[m] joins (~mimivxmat@2001:470:69fc:105::c300) |
| 00:43:22 | → | kar1[m] joins (~kar1matri@2001:470:69fc:105::c308) |
| 00:43:22 | → | alexfmpe[m] joins (~alexfmpem@2001:470:69fc:105::38ba) |
| 00:43:22 | → | ormaaj joins (~ormaaj@user/ormaaj) |
| 00:43:23 | → | andreabedini[m] joins (~andreabed@2001:470:69fc:105::c821) |
| 00:43:33 | <Axman6> | Please don't post code in here, see the topic for a paste website you can use |
| 00:43:35 | → | Drew[m]1 joins (~drewefenw@2001:470:69fc:105::c8c4) |
| 00:44:16 | → | mjs2600 joins (~mjs2600@c-24-91-3-49.hsd1.vt.comcast.net) |
| 00:44:41 | × | Erutuon quits (~Erutuon@user/erutuon) (Ping timeout: 265 seconds) |
| 00:45:17 | × | benjaminhodgson quits (~benjaminh@cpe-74-71-15-134.nyc.res.rr.com) (Quit: Client closed) |
| 00:46:40 | → | falafel joins (~falafel@pool-96-255-70-50.washdc.fios.verizon.net) |
| 00:51:06 | → | curiousgay joins (~curiousga@77-120-186-48.kha.volia.net) |
| 00:53:57 | × | Vajb quits (~Vajb@hag-jnsbng11-58c3a1-224.dhcp.inet.fi) (Read error: Connection reset by peer) |
| 00:54:23 | → | meinside_ joins (uid24933@id-24933.brockwell.irccloud.com) |
| 00:55:00 | → | Vajb joins (~Vajb@2001:999:62:1d53:26b1:6c9b:c1ed:9c01) |
| 00:56:22 | × | Hydrazer quits (~Hydrazer@S010684c9b26eee6d.cg.shawcable.net) (Ping timeout: 246 seconds) |
| 00:56:48 | × | Gurkenglas quits (~Gurkengla@dslb-002-203-144-156.002.203.pools.vodafone-ip.de) (Ping timeout: 258 seconds) |
| 00:57:23 | → | Hydrazer joins (~Hydrazer@S010684c9b26eee6d.cg.shawcable.net) |
| 01:01:46 | × | Vajb quits (~Vajb@2001:999:62:1d53:26b1:6c9b:c1ed:9c01) (Read error: Connection reset by peer) |
| 01:02:39 | → | lavaman joins (~lavaman@98.38.249.169) |
| 01:03:30 | → | Vajb joins (~Vajb@hag-jnsbng11-58c3a1-224.dhcp.inet.fi) |
| 01:03:44 | → | agua joins (~agua@2804:18:7f:1e53:1:0:7e70:81d) |
| 01:05:29 | × | zeenk quits (~zeenk@2a02:2f04:a211:a800:553b:3cb0:5ea1:7e83) (Quit: Konversation terminated!) |
| 01:05:40 | × | bgamari quits (~bgamari@2001:470:e438::1) (Remote host closed the connection) |
| 01:06:06 | × | pesada quits (~agua@2804:14c:8793:8e2f:64f8:45c2:2056:5625) (Ping timeout: 256 seconds) |
| 01:06:58 | × | lavaman quits (~lavaman@98.38.249.169) (Ping timeout: 240 seconds) |
| 01:08:06 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 272 seconds) |
| 01:08:06 | × | xff0x quits (~xff0x@2001:1a81:53e4:9a00:3689:c5ce:3234:2238) (Ping timeout: 272 seconds) |
| 01:08:16 | × | Hydrazer quits (~Hydrazer@S010684c9b26eee6d.cg.shawcable.net) (Ping timeout: 246 seconds) |
| 01:09:17 | → | xff0x joins (~xff0x@2001:1a81:521f:1e00:cb93:2bda:b1c:f227) |
| 01:14:04 | × | chris__ quits (~chris@81.96.113.213) (Remote host closed the connection) |
| 01:24:11 | × | jay-invariant quits (~jay@c-24-4-6-169.hsd1.ca.comcast.net) (Read error: Connection reset by peer) |
| 01:30:39 | → | juhp joins (~juhp@128.106.188.220) |
| 01:33:18 | × | alx741 quits (~alx741@181.196.69.121) (Quit: alx741) |
| 01:42:51 | × | eggplantade quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection) |
| 01:43:20 | → | lavaman joins (~lavaman@98.38.249.169) |
| 01:43:26 | → | bgamari joins (~bgamari@72.65.101.147) |
| 01:45:55 | × | lavaman quits (~lavaman@98.38.249.169) (Remote host closed the connection) |
| 01:46:08 | → | lavaman joins (~lavaman@98.38.249.169) |
| 01:53:52 | → | euouae joins (~euouae@user/euouae) |
| 01:55:00 | → | eggplantade joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) |
| 01:55:02 | → | gambpang joins (~ian@207.181.230.156) |
| 02:05:15 | <lechner> | geekosaur: thanks! much better name spacing solution. haskell is so logical |
| 02:05:37 | ← | delYsid parts (~user@84-115-55-45.cable.dynamic.surfer.at) (ERC (IRC client for Emacs 27.1.50)) |
| 02:06:20 | × | raehik quits (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 252 seconds) |
| 02:15:32 | × | Xnuk quits (~xnuk@45.76.202.58) (Quit: ZNC - https://znc.in) |
| 02:15:49 | → | Xnuk joins (~xnuk@vultr.xnu.kr) |
| 02:19:44 | → | finn_elija joins (~finn_elij@user/finn-elija/x-0085643) |
| 02:19:44 | × | FinnElija quits (~finn_elij@user/finn-elija/x-0085643) (Killed (mercury.libera.chat (Nickname regained by services))) |
| 02:19:44 | finn_elija | is now known as FinnElija |
| 02:20:28 | <lechner> | Hi, is it possible to assign an array so the first element is separate, and the rest are kept together? I'm looking for something like [separate:rest] <- getArgs but that would require explicit types. Thanks!. |
| 02:20:56 | <dsal> | (x:xs) <- getArgs |
| 02:21:03 | <dsal> | It's a list, not an array, though. |
| 02:21:22 | <dsal> | Arrays in haskell are pretty neat, but you're probably not using them. :) |
| 02:22:42 | <geekosaur> | [x:xs] is valid but doesn't do what you think it does (it's a 1-element list composed of a sublist which you're separating the first element from) |
| 02:23:07 | <dsal> | Do note that requires at least one list element. You might be better off with one of the fancy option parsers. |
| 02:24:14 | → | favonia joins (~favonia@user/favonia) |
| 02:27:09 | × | arkho quits (~ccc@dynamic-acs-24-112-153-241.zoominternet.net) (Remote host closed the connection) |
| 02:27:42 | × | td_ quits (~td@muedsl-82-207-238-030.citykom.de) (Ping timeout: 256 seconds) |
| 02:29:17 | → | td_ joins (~td@muedsl-82-207-238-142.citykom.de) |
| 02:29:54 | → | Erutuon joins (~Erutuon@user/erutuon) |
| 02:30:07 | × | curiousgay quits (~curiousga@77-120-186-48.kha.volia.net) (Ping timeout: 245 seconds) |
| 02:30:18 | × | bontaq quits (~user@ool-18e47f8d.dyn.optonline.net) (Ping timeout: 240 seconds) |
| 02:38:39 | → | arkho joins (~ccc@dynamic-acs-24-112-153-241.zoominternet.net) |
| 02:40:30 | × | arkho quits (~ccc@dynamic-acs-24-112-153-241.zoominternet.net) (Client Quit) |
| 02:40:47 | → | arkho joins (~ccc@dynamic-acs-24-112-153-241.zoominternet.net) |
| 02:41:58 | × | arkho quits (~ccc@dynamic-acs-24-112-153-241.zoominternet.net) (Client Quit) |
| 02:42:14 | → | arkho joins (~ccc@dynamic-acs-24-112-153-241.zoominternet.net) |
| 02:52:00 | <sm> | args <- getArgs |
| 02:52:00 | <sm> | let mfirstarg = headMay args |
| 02:52:00 | <sm> | otherargs = drop 1 args |
| 02:52:00 | <sm> | ? |
| 02:52:26 | × | eggplantade quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection) |
| 02:54:19 | <dsal> | I like optparse-applicative for most things, but I used optparse-generic for a thing and it was kind of neat. |
| 02:54:51 | <sm> | but that's a ton of of complexity and study, be sure it's justified |
| 02:55:39 | <dsal> | Sure. `(x:xs) <- getArgs` is probably not too bad other than the really awful error message. |
| 02:55:43 | <sm> | I wish there was an easier slope from trivial arg parsing to industrial strength arg parsing |
| 02:56:05 | <sm> | dsal, well that's partial - I tried to give one step above that |
| 02:56:16 | <dsal> | Sure, that makes sense. |
| 02:56:33 | <dsal> | optparse-generic isn't that bad, but you have to enable a bunch of extensions. |
| 02:58:34 | <sm> | lechner, did you get a moinmoin reader working btw ? |
| 02:59:11 | <sm> | what's the debian wiki moving to ? sounds like a big job |
| 03:00:56 | → | hexfive joins (~eric@50.35.83.177) |
| 03:03:05 | → | curiousgay joins (~curiousga@77-120-186-48.kha.volia.net) |
| 03:03:39 | → | wei2912 joins (~wei2912@112.199.250.21) |
| 03:04:18 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 03:06:34 | → | Codaraxis__ joins (~Codaraxis@user/codaraxis) |
| 03:09:04 | × | waleee quits (~waleee@2001:9b0:216:8200:d457:9189:7843:1dbd) (Ping timeout: 272 seconds) |
| 03:10:58 | × | Codaraxis_ quits (~Codaraxis@user/codaraxis) (Ping timeout: 272 seconds) |
| 03:14:57 | × | gambpang quits (~ian@207.181.230.156) (Remote host closed the connection) |
| 03:16:47 | × | hexfive quits (~eric@50.35.83.177) (Quit: WeeChat 3.0) |
| 03:25:37 | → | anandprabhu joins (~anandprab@94.202.243.198) |
| 03:27:02 | → | jay-invariant joins (~jay@c-24-4-6-169.hsd1.ca.comcast.net) |
| 03:27:07 | <lechner> | sm: sadly, we only have a hundred pages. (on that point, i'd like to merge with archlinux.) i'm experimenting with org-mode but many people will have an opinion. which one is your favorite? |
| 03:27:37 | × | justsomeguy quits (~justsomeg@user/justsomeguy) (Quit: WeeChat 3.2) |
| 03:28:09 | → | justsomeguy joins (~justsomeg@user/justsomeguy) |
| 03:28:17 | <sm> | lechner, this would be a large body of docs you want many people to contribute to, right ? |
| 03:28:30 | <sm> | mine is probably mdbook at the moment |
| 03:28:52 | <sm> | org is really only good for personal use I feel |
| 03:29:20 | <lechner> | sm: yes, but we are quirk bunch! you think org-mode is too exotic? |
| 03:29:48 | <sm> | yes, unless you are ok limiting contributions to emacs users |
| 03:29:50 | <dsal> | I've used org-mode to drive projects before. It's pretty great when one person edits and you need to publish stuff. |
| 03:30:20 | × | glguy quits (x@libera/staff/glguy) (Quit: Quit) |
| 03:30:31 | → | glguy joins (x@libera/staff/glguy) |
| 03:31:02 | justsomeguy | likes Sphinx and ReStructuredText for his personal notes, since it has a ton of mindshare, integrates with readthedocs.io, and renders to html/pdf/epub/latex... |
| 03:31:26 | <justsomeguy> | and manpages, which was kind of a big use case for me at one point. |
| 03:32:18 | × | Erutuon quits (~Erutuon@user/erutuon) (Ping timeout: 256 seconds) |
| 03:32:19 | <justsomeguy> | Unfortuantely it doesn't have good syntax highlighting for haskell code snippets out of the box, though. |
| 03:32:26 | × | theproffesor quits (~theproffe@user/theproffesor) (Read error: Connection reset by peer) |
| 03:32:36 | <lechner> | mdbook sure looks great. i use markdown for lintian's tag descriptions (though somewhat unhappily) and ReST for the manual. |
| 03:32:54 | → | theproffesor joins (~theproffe@2601:282:847f:8010::3a29) |
| 03:33:51 | <sm> | mdbook is like simpler, moderner sphinx |
| 03:33:54 | <sm> | a |
| 03:34:01 | × | theproffesor quits (~theproffe@2601:282:847f:8010::3a29) (Changing host) |
| 03:34:01 | → | theproffesor joins (~theproffe@user/theproffesor) |
| 03:34:07 | → | abhixec joins (~abhixec@c-67-169-139-16.hsd1.ca.comcast.net) |
| 03:34:08 | <lechner> | it's funny no one mentioned the big elephant |
| 03:34:28 | <sm> | (and much faster at rendering, which is significant) |
| 03:34:50 | <lechner> | as for exotic, at least i didn't suggest haddock! |
| 03:36:15 | <lechner> | maybe mdbook is a good choice. |
| 03:38:16 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 250 seconds) |
| 03:38:59 | <lechner> | all textbooks say Haskell is strong at domain-specific languages. no one is reinventing wikis here? |
| 03:44:11 | <c_wraith> | haskell is strong at *embeded* domain-specific languages |
| 03:44:51 | <justsomeguy> | The racket guys have scribble, which is a DSL for writing docs https://docs.racket-lang.org/scribble/index.html |
| 03:45:48 | <justsomeguy> | It would be cool to see something similar in Haskell. |
| 03:46:47 | <justsomeguy> | (I really shouldn't be chatting about Haskell and recommending things when I don't even know how to use program in it, yet.) |
| 03:47:42 | × | machinedgod quits (~machinedg@135-23-192-217.cpe.pppoe.ca) (Ping timeout: 272 seconds) |
| 03:48:36 | <euouae> | justsomeguy: Is scribble better than haddock? |
| 03:50:03 | <Axman6> | we a;sp jabe pandoc... so we've got everything |
| 03:50:10 | <Axman6> | also* |
| 03:50:15 | <justsomeguy> | I've mostly used Sphinx, and scribble only a little. I've never used haddock. So I can't say. |
| 03:51:12 | <euouae> | Take a look at haddock then. It might be what you're looking for |
| 03:51:43 | <justsomeguy> | I'll do that :^) |
| 03:51:45 | <euouae> | justsomeguy: It generates pages like this, https://hackage.haskell.org/package/base |
| 03:52:17 | <dsal> | haddock is fine if you're writing haskell API documentation. I'm not sure I'd use it for anything else. |
| 03:52:42 | <euouae> | Oh, scribble is general purpose? |
| 03:52:58 | → | eggplantade joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) |
| 03:53:32 | <sm> | lechner: srid is working on one of those modern-wiki "zettel" things.. neuron ? |
| 03:54:14 | <sm> | I will just say if you're porting and managing a docs site, you already have a ton of work and it's really helpful to not have to build/configure the software as well |
| 03:55:25 | <lechner> | sm: it's a desparate move. i need something unconventional and hip |
| 03:55:45 | × | juhp quits (~juhp@128.106.188.220) (Quit: juhp) |
| 03:55:59 | → | juhp joins (~juhp@128.106.188.220) |
| 03:56:29 | <sm> | do you want to maintain it yourself, or have the community maintain it ? |
| 03:57:26 | × | eggplantade quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 252 seconds) |
| 03:58:42 | <Axman6> | what's that static site generator? ... I use it for my website |
| 03:59:05 | × | anandprabhu quits (~anandprab@94.202.243.198) (Quit: Leaving) |
| 03:59:05 | <geekosaur> | hakyll? |
| 03:59:10 | <Axman6> | that's the one |
| 04:01:27 | × | Natch quits (~natch@c-e070e255.014-297-73746f25.bbcust.telenor.se) (Remote host closed the connection) |
| 04:03:01 | <lechner> | sm: everything at debian is team based, but many jump starts and discontinuous advances are implemented by determined individuals. what do you recommend? |
| 04:03:23 | <sm> | mdbook |
| 04:03:42 | <lechner> | why did you ask? |
| 04:03:53 | <dsal> | It's worth being aware of pandoc (which Axman6 mentioned earlier) |
| 04:04:00 | <sm> | if you're maintaining it yourself, then you have more choices |
| 04:04:13 | <sm> | like org mode |
| 04:04:43 | <Axman6> | pandoc is one of those tools that is pretty well known outside the Hashekk world, because it's so bloody useful |
| 04:05:27 | <sm> | pandoc is awesome, but doesn't provide as much structure for a site, which you'll have to add and maintain yourself |
| 04:05:45 | <sm> | like a site TOC sidebar |
| 04:05:46 | <Axman6> | and Hakyll is built on top of it |
| 04:06:02 | <Axman6> | right, that's why you use hakyll |
| 04:06:06 | <sm> | also, I hate to say it but having to build pandoc or hakyll is a liability |
| 04:06:50 | → | Natch joins (~natch@c-e070e255.014-297-73746f25.bbcust.telenor.se) |
| 04:07:20 | × | jao quits (jao@gateway/vpn/protonvpn/jao) (Ping timeout: 252 seconds) |
| 04:07:24 | <lechner> | both are in debian already |
| 04:07:42 | <sm> | you'll want features from newer versions |
| 04:10:29 | → | eggplantade joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) |
| 04:12:11 | <sm> | (I've used a number of these (org, pandoc, hakyll, sphinx, mdbook) for extended periods, so I have Opinions - I'm interested to hear what works for you) |
| 04:13:14 | <lechner> | i need a splash of cool |
| 04:14:18 | <euouae> | There's also Yesod |
| 04:14:33 | <lechner> | sm: what do you use it for, and how many pages? |
| 04:14:36 | <Axman6> | yesod doesn't do static sites |
| 04:14:50 | <euouae> | Axman6: Can it not? |
| 04:15:07 | <Axman6> | I would be very surprised if it made sense to use it for that |
| 04:15:07 | <lechner> | euouae: i use that for full-fledged, performant web apps |
| 04:15:11 | <sm> | lechner: FOSS sites like hledger.org and plaintextaccounting.org mostly, other doc sites in the past |
| 04:15:35 | <euouae> | lechner: Oh... okay :) Good for you. I loved yesod and wanted to try it out one day for some idea that I had |
| 04:16:31 | <Axman6> | I did not love yesod but I haven't used it for years. Give me Servant any day though |
| 04:16:37 | <Axman6> | IHP looks cool too |
| 04:17:25 | <sm> | (hledger.org is ~100 pages) |
| 04:18:14 | <euouae> | Axman6: I've heard of servant. I know it has a steep learning curve though and I'm not an expert so |
| 04:18:27 | <sm> | lechner, interestingly I believe wiki.debian.org before moinmoin used my wiki engine, Zwiki |
| 04:18:34 | <Axman6> | it's not too hard imo, but the type errors can get a bit hard to read |
| 04:18:40 | × | fjmorazan quits (~quassel@user/fjmorazan) (Quit: fjmorazan) |
| 04:19:17 | → | fjmorazan joins (~quassel@user/fjmorazan) |
| 04:21:40 | <Axman6> | and all Servant cares about is web stuff, it doesn't care about databases or anything |
| 04:23:50 | <lechner> | Axman6 euouae: for web front end work, you may find this older post interesting https://chrisdone.com/posts/clientside-programming-haskell/ |
| 04:26:05 | × | zebrag quits (~chris@user/zebrag) (Remote host closed the connection) |
| 04:28:35 | <euouae> | so purescript is the DSL to write javascript in and halogen is for the frontend? |
| 04:28:46 | <euouae> | It seems to conclude with purescript + halogen as a good idea |
| 04:29:04 | <lechner> | euouae: it's three years old |
| 04:29:05 | <Axman6> | I think calling purescript a DSL is pretty unfair to it |
| 04:29:32 | <euouae> | You're right, it's not, it's a compiled language |
| 04:30:41 | <lechner> | sm: they sure did! |
| 04:30:53 | × | geekosaur quits (~geekosaur@xmonad/geekosaur) (Ping timeout: 265 seconds) |
| 04:31:27 | <lechner> | sm: https://wiki.debian.org/ZWiki |
| 04:32:49 | <sm> | lechner: nice! that was my main project before falling into the Haskellverse. Sad that the site died just weeks before this :) |
| 04:33:31 | <lechner> | sm: zwiki.org? |
| 04:33:36 | <sm> | yup |
| 04:34:16 | × | eggplantade quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection) |
| 04:34:33 | <sm> | speaking of wikis, and steering this back to haskell, we didn't mention gitit. darcs.net uses it |
| 04:35:03 | → | geekosaur joins (~geekosaur@xmonad/geekosaur) |
| 04:35:58 | <sm> | recommended for you ? no, it'll be just another niche wiki that has to be restarted randomly and will be a huge burden to build |
| 04:35:59 | × | epolanski quits (uid312403@id-312403.brockwell.irccloud.com) (Quit: Connection closed for inactivity) |
| 04:37:07 | → | reumeth joins (~reumeth@user/reumeth) |
| 04:37:52 | → | eggplantade joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) |
| 04:38:02 | <lechner> | sm: how does offering so many formats work out for wikis in the long run? |
| 04:38:16 | <sm> | not well I think |
| 04:38:33 | <sm> | keep it simple. It's pretty much markdown today |
| 04:38:59 | <euouae> | wikipedia has the magic formula |
| 04:39:34 | <sm> | you could use mediawiki, it's certainly powerful. But a ton of work |
| 04:39:54 | <sm> | still off topic here, sorry |
| 04:40:44 | <sm> | how did this come up in #haskell anyway ? oh yes, you pinged me about that pandoc moinmoin reader |
| 04:40:59 | <sm> | I assume you'll use that for the first pass at converting content to whatever |
| 04:43:58 | ← | euouae parts (~euouae@user/euouae) () |
| 04:44:51 | <lechner> | yeah, sorry to everyone. i also got sidetracked. it's so easy to feel at home here. what a great channel! |
| 04:45:44 | × | roboguy_ quits (~roboguy_@2605:a601:afe7:9f00:6c0c:93c2:73f6:e346) (Remote host closed the connection) |
| 04:46:16 | → | roboguy_ joins (~roboguy_@2605:a601:afe7:9f00:6c0c:93c2:73f6:e346) |
| 04:49:24 | × | eggplantade quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection) |
| 04:51:17 | × | roboguy_ quits (~roboguy_@2605:a601:afe7:9f00:6c0c:93c2:73f6:e346) (Remote host closed the connection) |
| 04:51:29 | → | roboguy_ joins (~roboguy_@2605:a601:afe7:9f00:6c0c:93c2:73f6:e346) |
| 04:51:33 | × | falafel quits (~falafel@pool-96-255-70-50.washdc.fios.verizon.net) (Ping timeout: 276 seconds) |
| 04:59:15 | × | roboguy_ quits (~roboguy_@2605:a601:afe7:9f00:6c0c:93c2:73f6:e346) () |
| 04:59:46 | → | eggplantade joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) |
| 05:05:51 | × | Axman6 quits (~Axman6@user/axman6) (*.net *.split) |
| 05:06:05 | × | juhp quits (~juhp@128.106.188.220) (Quit: juhp) |
| 05:06:20 | → | juhp joins (~juhp@128.106.188.220) |
| 05:06:27 | × | mrmonday quits (~robert@what.i.hope.is.not.a.tabernaevagant.es) (*.net *.split) |
| 05:06:27 | × | Jon quits (jon@dow.land) (*.net *.split) |
| 05:06:28 | × | forell quits (~forell@user/forell) (*.net *.split) |
| 05:06:28 | × | barrucadu quits (~barrucadu@carcosa.barrucadu.co.uk) (*.net *.split) |
| 05:06:28 | × | pie_ quits (~pie_bnc@user/pie/x-2818909) (*.net *.split) |
| 05:06:28 | × | sudden quits (~cat@h-98-128-128-173.A351.priv.bahnhof.se) (*.net *.split) |
| 05:06:28 | × | tristanC quits (~tristanC@user/tristanc) (*.net *.split) |
| 05:06:28 | × | kosmikus quits (~kosmikus@nullzig.kosmikus.org) (*.net *.split) |
| 05:06:28 | × | Jonno_FTW quits (~come@user/jonno-ftw/x-0835346) (*.net *.split) |
| 05:06:28 | × | ouroboros quits (~ouroboros@user/ouroboros) (*.net *.split) |
| 05:06:28 | × | V quits (~v@anomalous.eu) (*.net *.split) |
| 05:06:28 | × | swistak quits (~swistak@185.21.216.141) (*.net *.split) |
| 05:06:28 | × | Unhammer quits (~Unhammer@user/unhammer) (*.net *.split) |
| 05:06:28 | × | cocreature quits (~moritz@2a03:b0c0:3:d0::c8:f001) (*.net *.split) |
| 05:06:28 | × | Cale quits (~cale@cpef48e38ee8583-cm0c473de9d680.cpe.net.cable.rogers.com) (*.net *.split) |
| 05:06:28 | × | beaky quits (~beaky@2a03:b0c0:0:1010::1e:a001) (*.net *.split) |
| 05:06:28 | × | jmct_ quits (sid160793@id-160793.tinside.irccloud.com) (*.net *.split) |
| 05:06:28 | × | jle` quits (~justin@cpe-23-240-75-236.socal.res.rr.com) (*.net *.split) |
| 05:06:28 | × | catern quits (~sbaugh@2604:2000:8fc0:b:a9c7:866a:bf36:3407) (*.net *.split) |
| 05:06:28 | × | eL_Bart0 quits (eL_Bart0@dietunichtguten.org) (*.net *.split) |
| 05:06:28 | × | ziman quits (~ziman@user/ziman) (*.net *.split) |
| 05:06:28 | × | vemek quits (~vemek@2a03:b0c0:2:d0::d98:1) (*.net *.split) |
| 05:06:28 | × | flukiluke quits (~flukiluke@2603:c023:c000:6c7e:8945:ad24:9113:a962) (*.net *.split) |
| 05:06:28 | × | ajb quits (~ajb@cupid.whatbox.ca) (*.net *.split) |
| 05:06:28 | × | Philonous quits (~Philonous@user/philonous) (*.net *.split) |
| 05:06:28 | × | tritlo quits (sid58727@user/tritlo) (*.net *.split) |
| 05:06:28 | × | tromp quits (~textual@dhcp-077-249-230-040.chello.nl) (*.net *.split) |
| 05:06:28 | × | amirouche quits (~amirouche@user/amirouche) (*.net *.split) |
| 05:06:28 | × | biberu quits (~biberu@user/biberu) (*.net *.split) |
| 05:06:28 | × | gonz_ quits (sid304396@2001:67c:2f08:4::4:a50c) (*.net *.split) |
| 05:06:28 | × | rubin55 quits (sid175221@2001:67c:2f08:8::2:ac75) (*.net *.split) |
| 05:06:28 | × | bradparker quits (sid262931@2001:67c:2f08:1::4:313) (*.net *.split) |
| 05:06:28 | × | oxytocat quits (~alloca@user/suppi) (*.net *.split) |
| 05:06:28 | × | dexterfoo quits (dexter@2a01:7e00::f03c:91ff:fe86:59ec) (*.net *.split) |
| 05:06:28 | × | Arsen quits (~arsen@managarm/dev/Arsen) (*.net *.split) |
| 05:06:28 | × | obviyus quits (sid415299@user/obviyus) (*.net *.split) |
| 05:06:28 | × | feepo quits (sid28508@id-28508.brockwell.irccloud.com) (*.net *.split) |
| 05:06:28 | × | SethTisue__ quits (sid14912@id-14912.charlton.irccloud.com) (*.net *.split) |
| 05:06:28 | × | Ferdiran1 quits (~somebody@2001:4c78:2012:5000::2) (*.net *.split) |
| 05:06:28 | × | DigitalKiwi quits (~kiwi@2604:a880:400:d0::12fc:5001) (*.net *.split) |
| 05:06:28 | × | yorick quits (~yorick@user/yorick) (*.net *.split) |
| 05:06:28 | × | agander_m_ quits (sid407952@id-407952.tinside.irccloud.com) (*.net *.split) |
| 05:06:28 | × | integral quits (sid296274@user/integral) (*.net *.split) |
| 05:06:28 | × | hook54321 quits (sid149355@user/hook54321) (*.net *.split) |
| 05:06:28 | × | gaze___ quits (sid387101@id-387101.brockwell.irccloud.com) (*.net *.split) |
| 05:06:28 | × | dyniec quits (~dyniec@mail.dybiec.info) (*.net *.split) |
| 05:06:28 | × | tnks quits (sid412124@id-412124.brockwell.irccloud.com) (*.net *.split) |
| 05:06:28 | × | pierrot_ quits (~pi@user/pierrot) (*.net *.split) |
| 05:06:28 | × | kristjansson_ quits (sid126207@id-126207.tinside.irccloud.com) (*.net *.split) |
| 05:06:28 | × | bwe quits (~bwe@2a01:4f8:1c1c:4878::2) (*.net *.split) |
| 05:06:29 | × | kaizen quits (sid501599@id-501599.brockwell.irccloud.com) (*.net *.split) |
| 05:06:29 | × | statusbot quits (~statusbot@ec2-34-198-122-184.compute-1.amazonaws.com) (*.net *.split) |
| 05:06:29 | × | tabemann quits (~tabemann@172-13-49-137.lightspeed.milwwi.sbcglobal.net) (*.net *.split) |
| 05:06:29 | × | sm[i] quits (~user@plaintextaccounting/sm) (*.net *.split) |
| 05:06:30 | × | CannabisIndica quits (~mesa@user/mesaboogie) (Ping timeout: 276 seconds) |
| 05:06:31 | → | Axman6 joins (~Axman6@user/axman6) |
| 05:06:32 | → | Jonno_FT1 joins (~come@api.carswap.me) |
| 05:06:35 | → | bwe_ joins (~bwe@2a01:4f8:1c1c:4878::2) |
| 05:06:35 | → | Ferdirand joins (~somebody@2001:4c78:2012:5000::2) |
| 05:06:35 | → | bradparker_ joins (sid262931@id-262931.highgate.irccloud.com) |
| 05:06:36 | → | swistak joins (~swistak@185.21.216.141) |
| 05:06:36 | → | sudden joins (~cat@h-98-128-128-173.A351.priv.bahnhof.se) |
| 05:06:36 | → | tristanC joins (~tristanC@163.172.94.116) |
| 05:06:36 | → | kosmikus joins (~kosmikus@nullzig.kosmikus.org) |
| 05:06:37 | → | ajb_ joins (~ajb@cupid.whatbox.ca) |
| 05:06:40 | → | eL_Bart0 joins (eL_Bart0@dietunichtguten.org) |
| 05:06:40 | → | dexterfoo joins (dexter@2a01:7e00::f03c:91ff:fe86:59ec) |
| 05:06:40 | → | dyniec joins (~dyniec@mail.dybiec.info) |
| 05:06:40 | → | forell joins (~forell@host-178-216-90-220.sta.tvknaszapraca.pl) |
| 05:06:42 | → | mrmonday joins (~robert@what.i.hope.is.not.a.tabernaevagant.es) |
| 05:06:43 | → | gaze___ joins (sid387101@id-387101.brockwell.irccloud.com) |
| 05:06:45 | → | Arsen joins (~arsen@managarm/dev/Arsen) |
| 05:06:45 | → | V__ joins (~v@anomalous.eu) |
| 05:06:46 | → | ziman joins (~ziman@c25-5.condornet.sk) |
| 05:06:47 | → | Cale joins (~cale@cpef48e38ee8583-cm0c473de9d680.cpe.net.cable.rogers.com) |
| 05:06:47 | → | feepo joins (sid28508@id-28508.brockwell.irccloud.com) |
| 05:06:50 | → | rubin55_ joins (sid175221@id-175221.stonehaven.irccloud.com) |
| 05:06:50 | → | jmct_ joins (sid160793@id-160793.tinside.irccloud.com) |
| 05:06:50 | × | forell quits (~forell@host-178-216-90-220.sta.tvknaszapraca.pl) (Changing host) |
| 05:06:50 | → | forell joins (~forell@user/forell) |
| 05:06:51 | → | SethTisue__ joins (sid14912@id-14912.charlton.irccloud.com) |
| 05:06:51 | → | gonz__ joins (sid304396@id-304396.tooting.irccloud.com) |
| 05:06:53 | → | integral_ joins (sid296274@user/integral) |
| 05:06:54 | → | tabemann joins (~tabemann@172-13-49-137.lightspeed.milwwi.sbcglobal.net) |
| 05:06:55 | → | oxytocat joins (~alloca@2a03:4000:f:7ca:7407:d1ff:fe34:8cd0) |
| 05:06:56 | × | tristanC quits (~tristanC@163.172.94.116) (Changing host) |
| 05:06:56 | → | tristanC joins (~tristanC@user/tristanc) |
| 05:06:58 | → | Unhammer joins (~Unhammer@2a01:799:42:6a00::40c) |
| 05:06:59 | → | jmtd joins (jon@dow.land) |
| 05:06:59 | jmtd | is now known as Jon |
| 05:07:01 | → | jle` joins (~justin@cpe-23-240-75-236.socal.res.rr.com) |
| 05:07:01 | → | yorick joins (~yorick@pennyworth.yori.cc) |
| 05:07:08 | → | amirouche joins (~amirouche@2a01:4f8:c0c:d9c2::1) |
| 05:07:10 | → | obviyus joins (sid415299@id-415299.highgate.irccloud.com) |
| 05:07:11 | → | tritlo joins (sid58727@id-58727.stonehaven.irccloud.com) |
| 05:07:11 | → | kristjansson_ joins (sid126207@id-126207.tinside.irccloud.com) |
| 05:07:12 | → | tnks joins (sid412124@id-412124.brockwell.irccloud.com) |
| 05:07:15 | → | kaizen joins (sid501599@id-501599.brockwell.irccloud.com) |
| 05:07:15 | → | agander_m_ joins (sid407952@id-407952.tinside.irccloud.com) |
| 05:07:18 | → | catern- joins (~sbaugh@2604:2000:8fc0:b:a9c7:866a:bf36:3407) |
| 05:07:23 | × | Unhammer quits (~Unhammer@2a01:799:42:6a00::40c) (Changing host) |
| 05:07:23 | → | Unhammer joins (~Unhammer@user/unhammer) |
| 05:07:24 | <Axman6> | what did you do glguy D: |
| 05:07:29 | × | obviyus quits (sid415299@id-415299.highgate.irccloud.com) (Changing host) |
| 05:07:29 | → | obviyus joins (sid415299@user/obviyus) |
| 05:07:37 | × | tritlo quits (sid58727@id-58727.stonehaven.irccloud.com) (Changing host) |
| 05:07:37 | → | tritlo joins (sid58727@user/tritlo) |
| 05:07:55 | yorick | is now known as Guest4278 |
| 05:08:06 | → | statusbot joins (~statusbot@ec2-34-198-122-184.compute-1.amazonaws.com) |
| 05:08:10 | → | sm[i] joins (~user@plaintextaccounting/sm) |
| 05:08:16 | → | Philonous joins (~Philonous@user/philonous) |
| 05:08:17 | → | DigitalKiwi joins (~kiwi@2604:a880:400:d0::12fc:5001) |
| 05:08:19 | → | pierrot joins (~pi@user/pierrot) |
| 05:08:22 | → | cocreature joins (~moritz@2a03:b0c0:3:d0::c8:f001) |
| 05:08:22 | → | beaky joins (~beaky@2a03:b0c0:0:1010::1e:a001) |
| 05:08:25 | → | pie_ joins (~pie_bnc@user/pie/x-2818909) |
| 05:08:27 | → | ouroboros joins (~ouroboros@user/ouroboros) |
| 05:08:30 | → | biberu joins (~biberu@user/biberu) |
| 05:08:31 | → | vemek joins (~vemek@2a03:b0c0:2:d0::d98:1) |
| 05:08:31 | → | hook54321 joins (sid149355@user/hook54321) |
| 05:09:48 | × | wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 258 seconds) |
| 05:11:04 | <glguy> | Axman6, I need to restart stuff periodically for it to get kernel and IRCd updates |
| 05:11:41 | → | barrucadu joins (~barrucadu@carcosa.barrucadu.co.uk) |
| 05:12:13 | <Axman6> | needs more unikernels |
| 05:12:21 | <glguy> | Axman6, if you're interested in stuff like that, set usermode +w to get the broadcasts |
| 05:12:51 | × | amirouche quits (~amirouche@2a01:4f8:c0c:d9c2::1) (Changing host) |
| 05:12:51 | → | amirouche joins (~amirouche@user/amirouche) |
| 05:12:57 | <Axman6> | how do I make that the default in glirc? |
| 05:13:07 | <glguy> | add it to your connect-cmds |
| 05:13:19 | <Axman6> | :thumbsup: |
| 05:13:28 | <glguy> | "umode +w" |
| 05:14:23 | × | Axman6 quits (~Axman6@user/axman6) (Remote host closed the connection) |
| 05:14:38 | → | Axman6 joins (~Axman6@user/axman6) |
| 05:15:32 | <Axman6> | noice |
| 05:16:56 | → | bitmapper joins (uid464869@id-464869.tooting.irccloud.com) |
| 05:25:37 | → | steven1 joins (~steven@172.92.136.203) |
| 05:26:17 | → | wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
| 05:27:20 | <steven1> | hello, does anyone have a reference/explanation on the relationship between universally quantified types and existantial types? I've seen in a couple cases we can implement existential types in haskell using rank 2 types but I didn't understand how it works |
| 05:27:52 | <steven1> | this paper makes a passing reference to 'the usual interchange laws between existentiaial and universal quantifiers' but I don't know what they are https://arxiv.org/pdf/1309.5135.pdf |
| 05:28:28 | <shachaf> | Hmm, I think it's simplest to think of it in terms of dependent types, if you're familiar with that. |
| 05:28:40 | <steven1> | I know there's de morgan's law to convert the negation of one into the other but I don't think that's what we're doing in haskell usually |
| 05:28:46 | <steven1> | shachaf: hmm not really |
| 05:28:49 | <steven1> | only a little bit |
| 05:28:54 | <shachaf> | Well, you only need a little bit. |
| 05:29:47 | <shachaf> | So in something like Agda, universal quantifiers are represented as dependent functions from a type, and existential quantifiers are represented as a dependent pair -- have you seen that? |
| 05:30:04 | <shachaf> | E.g. id : (a : Type) -> a -> a |
| 05:30:05 | <steven1> | right, I watched richard eisenberg's series on implementing a length-indexed vector and I know in that he created something like an existential type for `filter` |
| 05:30:32 | <steven1> | not sure about dependent pairs |
| 05:30:38 | <shachaf> | Existentials might be represented like this: (a : Type, (a, a -> Int)) |
| 05:31:00 | <shachaf> | A tuple where the first element is a type and the second element is a value that uses that type. |
| 05:31:10 | <shachaf> | In Haskell you'd write (exists a. (a, a -> Int)) |
| 05:31:22 | × | wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 250 seconds) |
| 05:31:24 | <shachaf> | (Well, in fake Haskell.) |
| 05:31:32 | <steven1> | ok, this construction looks similar to what I saw in the paper |
| 05:31:53 | <shachaf> | Does this make sense? |
| 05:32:13 | <steven1> | how would I express it using forall? |
| 05:32:22 | <shachaf> | That's the next bit. |
| 05:32:44 | <shachaf> | So if you have any type T in Haskell, it's isomorphic to (forall r. (T -> r) -> r), right? |
| 05:33:14 | <steven1> | hm that's not clear to me |
| 05:33:41 | <shachaf> | OK, I think that comes first. |
| 05:33:58 | <shachaf> | Imagine you have to implement f :: forall r. (Int -> r) -> r |
| 05:34:16 | <shachaf> | Can you write an implementation? |
| 05:34:29 | <steven1> | f g = g 0 ? |
| 05:34:38 | <shachaf> | Right. |
| 05:34:48 | <shachaf> | Or in general f g = g n, for some n : Int. |
| 05:34:57 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 05:35:07 | <shachaf> | But there has to be a specific Int, since you know nothing else about r. You just have to pass g an Int to get an r. |
| 05:35:15 | <steven1> | yep |
| 05:35:52 | <shachaf> | So you can write functions :: Int -> forall r. (Int -> r) -> r and :: (forall r. (Int -> r) -> r) -> Int and show they're inverses, I guess with parametricity. |
| 05:36:09 | <steven1> | so maybe it can be something like f :: forall r proxy. (proxy a -> r) -> r |
| 05:36:21 | <steven1> | that way we don't need a value with that type |
| 05:36:31 | <shachaf> | Well, the whole point is that you *do* need a value with that type. |
| 05:36:56 | <shachaf> | A (forall r. (T -> r) -> r) is a slightly weird (continuation-passing style) representation of a T. |
| 05:37:08 | <steven1> | got it |
| 05:37:44 | <shachaf> | So now if we have (exists a. Foo a) |
| 05:38:06 | <shachaf> | We can think of it as a tuple, ((a : Type), Foo a) |
| 05:38:21 | <steven1> | yep |
| 05:38:36 | <steven1> | and you point is that we have a way to represent the type now |
| 05:38:41 | <shachaf> | And do this CPS thing to get forall r. (((a : Type), Foo a) -> r) -> r |
| 05:39:04 | <shachaf> | And that's still a representation of the same value |
| 05:39:30 | <shachaf> | Now we have a function that takes a tuple as an argument, so we can just curry it. |
| 05:39:32 | → | thyriaen joins (~thyriaen@dynamic-078-055-141-033.78.55.pool.telefonica.de) |
| 05:39:51 | <shachaf> | Can you write the curried version? |
| 05:39:57 | × | slowButPresent quits (~slowButPr@user/slowbutpresent) (Quit: leaving) |
| 05:40:48 | <steven1> | forall r. (forall a. Foo a -> r) -> r since the Type argument becomes a type lambda? |
| 05:41:17 | <shachaf> | Right, the exists turns into a forall when you curry it. |
| 05:41:27 | <shachaf> | And that's the standard rank-2 representation for existentials. |
| 05:42:34 | <steven1> | wow that's interesting. thanks for this |
| 05:42:53 | <shachaf> | Maybe this is a little contrived as a path to get to this. |
| 05:43:48 | × | jjhoo quits (~jahakala@dsl-trebng21-58c18f-56.dhcp.inet.fi) (Ping timeout: 268 seconds) |
| 05:43:55 | <steven1> | btw where did you pick up this stuff? I tried searching around but couldn't find answers before |
| 05:44:37 | <shachaf> | From the aether. |
| 05:45:00 | bradparker_ | is now known as bradparker |
| 05:45:21 | <shachaf> | (I have no idea!) |
| 05:45:41 | <steven1> | haha understandable. I think a lot of this stuff just gets absorbed from exposure |
| 05:50:40 | → | jneira joins (~jneira@212.8.115.226) |
| 05:51:54 | V__ | is now known as V |
| 05:54:22 | × | tzh quits (~tzh@c-24-21-73-154.hsd1.wa.comcast.net) (Quit: zzz) |
| 05:58:33 | <Axman6> | I feel like that's one of the reasons I struggle with pointing people to good resources to learn haskell, beucase I learnt so much in here |
| 05:59:07 | <steven1> | followup question: since the construction that we did is purely mechanical, what's stopping GHC from supporting an `exists` syntax? I guess the call site might have to change too? |
| 06:00:21 | <steven1> | Axman6: right, it's hard to find resources sometimes. Actually I was considering writing up a post about this since others may have the question too (I will credit you for the help shachaf if I do) |
| 06:00:58 | <steven1> | seems that this is a trivial thing for some people but I don't think it's something I would have been able to come up with on my own |
| 06:01:06 | <shachaf> | Well, "implicit" existential types are trickier than explicit. |
| 06:01:23 | <shachaf> | I think YHC or UHC or something supported exists syntax, but I'm not sure what it did exactly. |
| 06:01:40 | <shachaf> | If you can figure out all the behaviors you can propose it, I guess! |
| 06:01:55 | <shachaf> | GHC does support explicit existential types, though. |
| 06:02:11 | <shachaf> | You can write "data Thing = forall a. Thing a (a -> Int)" and so on. |
| 06:02:32 | <Axman6> | what would foo :: exists a. a -> String even mean... you jhve to find the right a? |
| 06:02:42 | <steven1> | right, but I'm thinking of a syntax for `exists a. Thing a` |
| 06:02:48 | × | Sgeo quits (~Sgeo@user/sgeo) (Read error: Connection reset by peer) |
| 06:02:55 | <shachaf> | Or "data Thing where { Thing :: forall a. a -> (a -> Int) -> Thing }" |
| 06:03:09 | <shachaf> | The similarity between that and the construction above isn't a coincidence! |
| 06:03:28 | × | shriekingnoise quits (~shrieking@186.137.144.80) (Quit: Quit) |
| 06:03:46 | <shachaf> | If you know how you Church-encode (or whatever-encode) types, where the name of the type becomes an r, this is very similar. |
| 06:04:13 | <shachaf> | Axman6: Well, it would be pretty useless to a caller. |
| 06:04:31 | <shachaf> | Actually, I should've probably just started with that. |
| 06:04:57 | <shachaf> | The way you encode (A,B) as (forall r. (A -> B -> r) -> r), and (Either A B) as (forall r. (A -> r) -> (B -> r) -> r) |
| 06:05:03 | <kosmikus> | shachaf: UHC definitely supports / supported first-class existentials, although I'm not completely confident that it was free of any unexpected corner cases. |
| 06:05:09 | <shachaf> | This is much more obvious in that context. |
| 06:05:15 | <steven1> | Axman6: the example I found in the earlier paper is something like a state machine with a hidden state e.g. exists s. (s, s -> (s, something)) . |
| 06:05:40 | <Axman6> | which we get with forall and not exposing s right? |
| 06:05:45 | <shachaf> | kosmikus: I seem to remember that it didn't support class constraints, though (exists a. Show a *> a), which people complained about or something? |
| 06:06:17 | <shachaf> | Axman6: A classic example is (exists s. (s, s -> Maybe s)) |
| 06:06:22 | <Axman6> | data Foo a where Foo :: forall s. s -> (s -> (a,s) -> Foo a |
| 06:06:25 | <shachaf> | Which represents conatural numbers. |
| 06:06:27 | <steven1> | Axman6: yes, that's where my question came from, which was how we translated the exists into forall |
| 06:06:48 | <kosmikus> | shachaf: I don't know. I could look it up. to be honest, I never used it, despite Atze and mostly Doaitse telling me I should :) |
| 06:06:48 | <shachaf> | Axman6: Yes, that forall is the way you express existential types in GHC. |
| 06:07:20 | <shachaf> | I never used it either. Not important. |
| 06:07:21 | <steven1> | I figured there'd be some use in an exists syntax that internally does the translation to forall for you. Maybe it obscures too much though |
| 06:07:48 | <shachaf> | I think people like to ask for super-convenient existentials, but actually figuring out what they should behave like is pretty tricky, especially if you want type inference. |
| 06:07:59 | <shachaf> | And it's plausibly better for it to be explicit. |
| 06:08:14 | → | Obo joins (~roberto@70.pool90-171-81.dynamic.orange.es) |
| 06:08:49 | <shachaf> | Maybe I'm the only person who doesn't think "data Thing = forall a. MkThing a" is a confusing syntax for existentials. |
| 06:08:52 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 245 seconds) |
| 06:09:22 | <kosmikus> | shachaf: I don't know how this conversation started. but I'm assuming you know about https://richarde.dev/papers/2021/exists/exists.pdf ?[5~[5~[5~ |
| 06:09:25 | <shachaf> | It's pretty simple: If you have "data A = MkA Int", that means: If x :: Int, then MkA x :: A |
| 06:09:47 | <shachaf> | And if you have "data A = forall t. MkA t", that means: For all t, if x :: t, then MkA x :: A |
| 06:09:59 | <kosmikus> | shachaf: fwiw, I always thought that syntax is plausible, except that of course there's the obvious problem of people expecting to see an "exists" if the concept is called "existential types". |
| 06:10:14 | <shachaf> | kosmikus: Oh, nope. I've been out of the loop for a long time. |
| 06:11:52 | <kosmikus> | I haven't read the paper. so I don't how close to being implemented this is. |
| 06:12:24 | <shachaf> | Note that you can write "data Exists f = forall a. Exists (f a)" in existing GHC Haskell. |
| 06:12:40 | → | Lycurgus joins (~juan@cpe-45-46-140-49.buffalo.res.rr.com) |
| 06:12:46 | <shachaf> | And also "data k *> a = k => Foo a" for co-constraints. |
| 06:13:09 | <shachaf> | I guess the paper calls that ∧? I'm a little skeptical, since it's not symmetric. |
| 06:13:34 | <shachaf> | Oh, they say that right on the next page. |
| 06:15:50 | → | takuan joins (~takuan@178-116-218-225.access.telenet.be) |
| 06:16:46 | <shachaf> | So I guess their approach is semi-explicit but still has first-class existentials. Seems like a nice compromise! |
| 06:17:41 | <shachaf> | Oh, this is from... This month? |
| 06:18:38 | <shachaf> | Oh, that was just an example. |
| 06:18:56 | <shachaf> | kosmikus: I guess I'll read this more carefully later. Thanks for the link! |
| 06:21:38 | × | ziman quits (~ziman@c25-5.condornet.sk) (Changing host) |
| 06:21:38 | → | ziman joins (~ziman@user/ziman) |
| 06:22:44 | → | Lord_of_Life_ joins (~Lord@user/lord-of-life/x-2819915) |
| 06:24:00 | × | zmt00 quits (~zmt00@user/zmt00) (Ping timeout: 256 seconds) |
| 06:25:19 | × | Lord_of_Life quits (~Lord@user/lord-of-life/x-2819915) (Ping timeout: 258 seconds) |
| 06:25:19 | Lord_of_Life_ | is now known as Lord_of_Life |
| 06:25:23 | × | steven1 quits (~steven@172.92.136.203) (Quit: WeeChat 3.2) |
| 06:25:54 | → | dschrempf joins (~dominik@070-207.dynamic.dsl.fonira.net) |
| 06:26:22 | × | jespada quits (~jespada@90.254.247.46) (Ping timeout: 245 seconds) |
| 06:27:14 | × | cjb quits (~cjb@user/cjb) (Quit: rcirc on GNU Emacs 28.0.50) |
| 06:29:59 | × | Lycurgus quits (~juan@cpe-45-46-140-49.buffalo.res.rr.com) (Quit: Exeunt) |
| 06:32:12 | × | hexeme_ quits (~hexeme@user/hexeme) (Quit: co'o ro do) |
| 06:33:03 | → | wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
| 06:33:11 | → | hexeme joins (~hexeme@user/hexeme) |
| 06:33:26 | → | jespada joins (~jespada@90.254.247.46) |
| 06:35:51 | → | jjhoo joins (~jahakala@dsl-trebng21-58c18f-56.dhcp.inet.fi) |
| 06:36:09 | × | jjhoo quits (~jahakala@dsl-trebng21-58c18f-56.dhcp.inet.fi) (Client Quit) |
| 06:37:46 | → | jjhoo joins (~jahakala@dsl-trebng21-58c18f-56.dhcp.inet.fi) |
| 06:38:02 | × | wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 258 seconds) |
| 06:45:42 | × | hexeme quits (~hexeme@user/hexeme) (Quit: co'o ro do) |
| 06:48:48 | → | hexeme joins (~hexeme@user/hexeme) |
| 06:48:57 | → | vysn joins (~vysn@user/vysn) |
| 06:55:30 | → | lortabac joins (~lortabac@2a01:e0a:541:b8f0:bab8:2602:a3cf:c129) |
| 06:58:00 | × | curiousgay quits (~curiousga@77-120-186-48.kha.volia.net) (Ping timeout: 256 seconds) |
| 06:59:11 | → | dhouthoo joins (~dhouthoo@178-117-36-167.access.telenet.be) |
| 07:00:21 | → | _ht joins (~quassel@82-169-194-8.biz.kpn.net) |
| 07:00:29 | → | chris joins (~chris@81.96.113.213) |
| 07:00:34 | chris | is now known as Guest217 |
| 07:01:22 | × | xff0x quits (~xff0x@2001:1a81:521f:1e00:cb93:2bda:b1c:f227) (Ping timeout: 240 seconds) |
| 07:01:48 | → | michalz joins (~michalz@185.246.204.40) |
| 07:02:27 | → | xff0x joins (~xff0x@2001:1a81:521f:1e00:df79:95ae:114:be51) |
| 07:04:39 | → | chele joins (~chele@user/chele) |
| 07:05:47 | → | fendor joins (~fendor@178.115.48.162.wireless.dyn.drei.com) |
| 07:12:54 | × | ironsoba quits (~z@193.36.225.59) (Ping timeout: 272 seconds) |
| 07:14:00 | → | acidjnk_new3 joins (~acidjnk@p200300d0c72b9591c199f99eb1b080aa.dip0.t-ipconnect.de) |
| 07:18:39 | → | reumeth2 joins (~reumeth@user/reumeth) |
| 07:18:45 | × | thyriaen quits (~thyriaen@dynamic-078-055-141-033.78.55.pool.telefonica.de) (Quit: Leaving) |
| 07:20:02 | × | reumeth quits (~reumeth@user/reumeth) (Remote host closed the connection) |
| 07:21:54 | <Hecate> | maralorn: hi! I don't quite understand how I can benefit from this PR https://github.com/nixos/nixpkgs/pull/125936 |
| 07:22:06 | <Hecate> | because the nixpkgs search engine only shows to me 8104 |
| 07:22:36 | → | ytg joins (~ytg@109-186-140-208.bb.netvision.net.il) |
| 07:22:58 | × | ytg quits (~ytg@109-186-140-208.bb.netvision.net.il) (Client Quit) |
| 07:24:10 | → | curiousgay joins (~curiousga@77-120-186-48.kha.volia.net) |
| 07:28:08 | → | delYsid joins (~user@84-115-55-45.cable.dynamic.surfer.at) |
| 07:29:34 | → | burnsidesLlama joins (~burnsides@dhcp168-023.wadham.ox.ac.uk) |
| 07:32:34 | × | favonia quits (~favonia@user/favonia) (Ping timeout: 240 seconds) |
| 07:35:45 | × | m811 quits (~user@93-181-35-213.dyn.estpak.ee) (Quit: "If you put a million monkeys at a million keyboards, one of them will eventually write a Java program. The rest of them will write Perl programs.") |
| 07:36:41 | → | cfricke joins (~cfricke@user/cfricke) |
| 07:37:15 | → | zeenk joins (~zeenk@2a02:2f04:a211:a800:553b:3cb0:5ea1:7e83) |
| 07:40:39 | × | Guest4278 quits (~yorick@pennyworth.yori.cc) (Changing host) |
| 07:40:39 | → | Guest4278 joins (~yorick@user/yorick) |
| 07:40:41 | Guest4278 | is now known as yorick |
| 07:43:58 | → | Pickchea joins (~private@user/pickchea) |
| 07:44:54 | → | kuribas joins (~user@ptr-25vy0i9yst6l4ryh82e.18120a2.ip6.access.telenet.be) |
| 07:50:54 | × | dagit quits (~dagit@2601:1c2:1b7f:9fa0:5146:76a:259b:45c5) (Ping timeout: 272 seconds) |
| 08:03:12 | → | CnnibisIndica joins (~herb@user/mesaboogie) |
| 08:03:17 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 08:04:55 | CnnibisIndica | is now known as CannabisIndica |
| 08:05:54 | → | hendursa1 joins (~weechat@user/hendursaga) |
| 08:08:20 | → | mikoto-chan joins (~mikoto-ch@ip-193-121-10-50.dsl.scarlet.be) |
| 08:08:54 | × | hendursaga quits (~weechat@user/hendursaga) (Ping timeout: 244 seconds) |
| 08:09:40 | × | econo quits (uid147250@user/econo) (Quit: Connection closed for inactivity) |
| 08:09:56 | → | xsperry joins (~as@user/xsperry) |
| 08:14:03 | <merijn> | Anyone know if cabal.project supports conditionals? |
| 08:14:33 | <sclv> | i suspect not |
| 08:14:55 | <merijn> | Rats |
| 08:15:07 | × | dschrempf quits (~dominik@070-207.dynamic.dsl.fonira.net) (Ping timeout: 245 seconds) |
| 08:17:23 | × | geekosaur quits (~geekosaur@xmonad/geekosaur) (Remote host closed the connection) |
| 08:17:33 | × | hnOsmium0001 quits (uid453710@id-453710.stonehaven.irccloud.com) (Quit: Connection closed for inactivity) |
| 08:17:48 | → | geekosaur joins (~geekosaur@xmonad/geekosaur) |
| 08:19:07 | → | timCF joins (~timCF@200-149-20-81.sta.estpak.ee) |
| 08:20:47 | <timCF> | Hello! I have a question, why `ExceptT e m a` is not a bifunctor? I can use its Functor instance to map over `a`, and `withExceptT` to map over `e`, but can not use `bimap` to do both at the same time. |
| 08:21:08 | <merijn> | timCF: Because the types don't line up |
| 08:21:19 | <merijn> | Bifunctor applies to the last two type arguments |
| 08:21:32 | × | lavaman quits (~lavaman@98.38.249.169) (Remote host closed the connection) |
| 08:21:34 | <timCF> | Because of `m`? |
| 08:21:38 | <merijn> | "ExceptT e" can't be a bifunctor, because the kind of 'm' doesn't match |
| 08:22:38 | <timCF> | Yes, I see. I think I'll just continue to use `fmap` + `withExceptT` then. Thanks! |
| 08:23:51 | × | azeem quits (~azeem@dynamic-adsl-94-34-48-122.clienti.tiscali.it) (Ping timeout: 265 seconds) |
| 08:26:08 | → | azeem joins (~azeem@176.200.220.247) |
| 08:28:34 | × | Pickchea quits (~private@user/pickchea) (Ping timeout: 240 seconds) |
| 08:29:41 | × | azeem quits (~azeem@176.200.220.247) (Read error: Connection reset by peer) |
| 08:30:43 | → | azeem joins (~azeem@dynamic-adsl-94-34-48-122.clienti.tiscali.it) |
| 08:31:20 | × | timCF quits (~timCF@200-149-20-81.sta.estpak.ee) (Quit: leaving) |
| 08:36:48 | × | MasseR quits (~MasseR@51.15.143.128) (Ping timeout: 258 seconds) |
| 08:40:42 | × | reumeth2 quits (~reumeth@user/reumeth) (Ping timeout: 258 seconds) |
| 08:42:37 | × | curiousgay quits (~curiousga@77-120-186-48.kha.volia.net) (Ping timeout: 258 seconds) |
| 08:46:21 | → | spirit_ joins (~spirit@122.174.131.167) |
| 08:46:41 | × | spirit_ quits (~spirit@122.174.131.167) (Client Quit) |
| 08:46:49 | → | spirit_ joins (~spirit@122.174.131.167) |
| 08:51:30 | <delYsid> | :t fromMaybe <*> Just |
| 08:51:30 | <lambdabot> | b -> b |
| 08:52:07 | <delYsid> | I know it works, I even remember the trick since a few months and can write it out when I need it. But why? Working the types out makes me dizzy somehow |
| 08:52:16 | → | lavaman joins (~lavaman@98.38.249.169) |
| 08:52:20 | <merijn> | Applicative instance of ((->) r) |
| 08:52:48 | <delYsid> | oh, it works in the function applicative? Thats why it can copy the arg! |
| 08:53:59 | → | MasseR joins (~MasseR@51.15.143.128) |
| 08:56:20 | × | kritzefitz quits (~kritzefit@picard.host.weltraumschlangen.de) (Quit: ZNC 1.7.2+deb3 - https://znc.in) |
| 08:56:22 | × | Guest217 quits (~chris@81.96.113.213) (Remote host closed the connection) |
| 08:56:42 | → | Pickchea joins (~private@user/pickchea) |
| 08:56:46 | × | lavaman quits (~lavaman@98.38.249.169) (Ping timeout: 250 seconds) |
| 08:56:55 | → | kritzefitz joins (~kritzefit@picard.host.weltraumschlangen.de) |
| 09:04:20 | × | eggplantade quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection) |
| 09:04:29 | → | reumeth2 joins (~reumeth@user/reumeth) |
| 09:05:52 | × | Pickchea quits (~private@user/pickchea) (Ping timeout: 250 seconds) |
| 09:06:00 | → | eggplantade joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) |
| 09:10:22 | × | haskell-lurk quits (~haskell-l@78.155.54.115) (Quit: Client closed) |
| 09:12:12 | × | pmk quits (~user@2a02:587:9416:822f:cf:6d30:99e9:ac07) (Ping timeout: 276 seconds) |
| 09:12:22 | → | gehmehgeh joins (~user@user/gehmehgeh) |
| 09:12:59 | ← | jakalx parts (~jakalx@base.jakalx.net) () |
| 09:15:35 | × | eggplantade quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 258 seconds) |
| 09:16:43 | × | bitmapper quits (uid464869@id-464869.tooting.irccloud.com) (Quit: Connection closed for inactivity) |
| 09:19:02 | × | lortabac quits (~lortabac@2a01:e0a:541:b8f0:bab8:2602:a3cf:c129) (Ping timeout: 258 seconds) |
| 09:25:22 | → | jakalx joins (~jakalx@base.jakalx.net) |
| 09:29:45 | → | curiousgay joins (~curiousga@77-120-186-48.kha.volia.net) |
| 09:31:04 | → | Gurkenglas joins (~Gurkengla@dslb-002-203-144-156.002.203.pools.vodafone-ip.de) |
| 09:32:56 | → | oxide joins (~lambda@user/oxide) |
| 09:34:43 | → | lortabac joins (~lortabac@2a01:e0a:541:b8f0:9a95:d5cc:dad7:5bc2) |
| 09:38:52 | × | jespada quits (~jespada@90.254.247.46) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
| 09:39:20 | × | phma quits (phma@2001:5b0:210d:4948:1e1a:34b5:d23e:1981) (Read error: Connection reset by peer) |
| 09:39:40 | → | jespada joins (~jespada@90.254.247.46) |
| 09:39:44 | × | spirit_ quits (~spirit@122.174.131.167) (Quit: Konversation terminated!) |
| 09:40:32 | → | pmk joins (~user@195.114.237.86) |
| 09:41:29 | → | raehik joins (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) |
| 09:41:36 | × | jespada quits (~jespada@90.254.247.46) (Client Quit) |
| 09:42:00 | → | jespada joins (~jespada@90.254.247.46) |
| 09:42:20 | → | yoctocell joins (~user@h87-96-130-155.cust.a3fiber.se) |
| 09:48:22 | → | phma joins (~phma@2600:1004:b127:459d:fed5:fe1c:2170:ecd1) |
| 09:48:45 | × | burnsidesLlama quits (~burnsides@dhcp168-023.wadham.ox.ac.uk) (Remote host closed the connection) |
| 09:49:19 | → | burnsidesLlama joins (~burnsides@dhcp168-023.wadham.ox.ac.uk) |
| 09:52:01 | → | drd joins (~drd@2001:b07:a70:9f1f:1562:34de:f50f:77d4) |
| 09:53:30 | × | burnsidesLlama quits (~burnsides@dhcp168-023.wadham.ox.ac.uk) (Ping timeout: 240 seconds) |
| 09:59:48 | → | jippiedoe joins (~david@77-171-152-62.fixed.kpn.net) |
| 10:01:02 | × | lortabac quits (~lortabac@2a01:e0a:541:b8f0:9a95:d5cc:dad7:5bc2) (Ping timeout: 256 seconds) |
| 10:04:39 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 258 seconds) |
| 10:04:51 | × | agua quits (~agua@2804:18:7f:1e53:1:0:7e70:81d) (Ping timeout: 276 seconds) |
| 10:05:09 | → | eggplantade joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) |
| 10:05:14 | × | mei quits (~mei@user/mei) (Quit: mei) |
| 10:06:43 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 10:09:17 | × | eggplantade quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 245 seconds) |
| 10:09:54 | × | teddyc quits (theodorc@cassarossa.samfundet.no) (Ping timeout: 240 seconds) |
| 10:11:23 | × | pavonia quits (~user@user/siracusa) (Quit: Bye!) |
| 10:12:03 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 268 seconds) |
| 10:12:44 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 10:13:35 | × | qbt quits (~edun@user/edun) (Read error: Connection reset by peer) |
| 10:16:01 | → | qbt joins (~edun@user/edun) |
| 10:16:55 | × | raehik quits (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 258 seconds) |
| 10:17:19 | → | raehik joins (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) |
| 10:17:46 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds) |
| 10:18:21 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 10:22:10 | × | xsperry quits (~as@user/xsperry) (Remote host closed the connection) |
| 10:23:38 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 252 seconds) |
| 10:24:19 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 10:26:47 | → | burnsidesLlama joins (~burnsides@dhcp168-023.wadham.ox.ac.uk) |
| 10:27:40 | × | Gurkenglas quits (~Gurkengla@dslb-002-203-144-156.002.203.pools.vodafone-ip.de) (Ping timeout: 256 seconds) |
| 10:28:10 | → | __monty__ joins (~toonn@user/toonn) |
| 10:29:34 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 258 seconds) |
| 10:30:11 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 10:31:04 | × | burnsidesLlama quits (~burnsides@dhcp168-023.wadham.ox.ac.uk) (Ping timeout: 256 seconds) |
| 10:35:36 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds) |
| 10:36:02 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 10:36:40 | × | gehmehgeh quits (~user@user/gehmehgeh) (Ping timeout: 244 seconds) |
| 10:36:46 | → | mastarija joins (~mastarija@31.217.8.174) |
| 10:38:09 | → | lortabac joins (~lortabac@2a01:e0a:541:b8f0:c3b9:c489:f445:c424) |
| 10:38:14 | <mastarija> | I don't quite get this ConstrainedMonad trick using EDSL, or rather, I get the idea, but I don't understand how they produced a Monad instance without doing the Functor and Applicative. |
| 10:38:29 | <mastarija> | Was this before Monad was dependent on Applicative and Functor? |
| 10:38:49 | <mastarija> | https://ku-fpg.github.io/files/Sculthorpe-13-ConstrainedMonad.pdf |
| 10:38:54 | → | ubert joins (~Thunderbi@91.141.40.237.wireless.dyn.drei.com) |
| 10:39:12 | → | Atum_ joins (IRC@user/atum/x-2392232) |
| 10:41:50 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 258 seconds) |
| 10:42:11 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 10:42:58 | × | curiousgay quits (~curiousga@77-120-186-48.kha.volia.net) (Ping timeout: 240 seconds) |
| 10:43:51 | → | Pickchea joins (~private@user/pickchea) |
| 10:46:04 | integral_ | is now known as integral |
| 10:46:48 | <Arahael> | I'm trying to figure out how to apply Middleware to a Yesod application - any tips/pointers? |
| 10:47:12 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 245 seconds) |
| 10:47:43 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 10:47:46 | × | berberman_ quits (~berberman@user/berberman) (Ping timeout: 240 seconds) |
| 10:48:33 | → | berberman joins (~berberman@user/berberman) |
| 10:49:27 | → | curiousgay joins (~curiousga@77-120-186-48.kha.volia.net) |
| 10:50:02 | → | anandprabhu joins (~anandprab@94.202.243.198) |
| 10:52:46 | → | kilolympus joins (~kilolympu@cpc92710-cmbg20-2-0-cust265.5-4.cable.virginm.net) |
| 10:52:54 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 250 seconds) |
| 10:53:52 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 10:54:06 | × | drd quits (~drd@2001:b07:a70:9f1f:1562:34de:f50f:77d4) (Ping timeout: 258 seconds) |
| 10:55:19 | <Arahael> | I'd be asking a more specific question if I knew what on earth it is you do. I want to add an etag to the headers of all responses. |
| 10:56:33 | → | dschrempf joins (~dominik@070-207.dynamic.dsl.fonira.net) |
| 10:58:19 | × | cfricke quits (~cfricke@user/cfricke) (Quit: WeeChat 3.2) |
| 10:59:02 | <Arahael> | Aha, so rather than using Wai middleware, I have to override the implemetnation in my Yesod instance. That works. |
| 10:59:17 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 245 seconds) |
| 10:59:55 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 11:01:49 | × | Atum_ quits (IRC@user/atum/x-2392232) (Quit: Atum_) |
| 11:03:17 | <jippiedoe> | mastarija: From what I can see (just a quick glance at the paper), they probably simply ignore the functor/applicative superclass because it's orthoganal to what they're talking about |
| 11:03:18 | × | Obo quits (~roberto@70.pool90-171-81.dynamic.orange.es) (Ping timeout: 258 seconds) |
| 11:03:57 | <jippiedoe> | At some point in the paper they even say "applicative functors lie between functors and monads" :) |
| 11:03:59 | <mastarija> | jippiedoe, I guess, but instance becomes much more complex and hard to derive once you add those in |
| 11:04:26 | <dminuoso> | mastarija: Not really. |
| 11:04:47 | <dminuoso> | mastarija: functor and applicative can be written in terms of monad, statically |
| 11:05:00 | <dminuoso> | instance Applicative where pure = return; (<*>) = ap |
| 11:05:08 | <mastarija> | dminuoso, oh... yes |
| 11:05:24 | <dminuoso> | instance Functor where fmap = liftM |
| 11:05:37 | <jippiedoe> | which is why they're a superclass of Monad to begin with :) |
| 11:05:41 | <dminuoso> | Oh, I was missing the type constructor there in each declaration, but you get it. |
| 11:05:43 | × | ubert quits (~Thunderbi@91.141.40.237.wireless.dyn.drei.com) (Quit: ubert) |
| 11:05:52 | <mastarija> | Yes |
| 11:05:53 | <mastarija> | thx |
| 11:05:57 | × | Pickchea quits (~private@user/pickchea) (Ping timeout: 245 seconds) |
| 11:08:07 | → | AlexNoo_ joins (~AlexNoo@94.233.240.129) |
| 11:09:37 | → | lavaman joins (~lavaman@98.38.249.169) |
| 11:10:08 | × | AlexZenon quits (~alzenon@178.34.150.193) (Ping timeout: 258 seconds) |
| 11:10:38 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 268 seconds) |
| 11:10:58 | × | Alex_test quits (~al_test@178.34.150.193) (Ping timeout: 240 seconds) |
| 11:11:40 | × | AlexNoo quits (~AlexNoo@178.34.150.193) (Ping timeout: 272 seconds) |
| 11:11:53 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 11:12:23 | → | bitmapper joins (uid464869@id-464869.tooting.irccloud.com) |
| 11:13:50 | → | mousey joins (~skymouse@gateway/tor-sasl/mousey) |
| 11:14:20 | × | lavaman quits (~lavaman@98.38.249.169) (Ping timeout: 268 seconds) |
| 11:14:28 | × | oxide quits (~lambda@user/oxide) (Read error: Connection reset by peer) |
| 11:14:32 | → | AlexZenon joins (~alzenon@94.233.240.129) |
| 11:15:45 | → | Obo joins (~roberto@70.pool90-171-81.dynamic.orange.es) |
| 11:17:13 | → | Alex_test joins (~al_test@94.233.240.129) |
| 11:17:45 | → | mastarija_ joins (~mastarija@31.217.8.174) |
| 11:17:57 | <Arahael> | Ok, I'm lost. Is there _any_ documentation that shows how one can add an etag to a yesod response in a Yesod Middleware? I've got a `HandlerFor App res`, but I have no idea what to do with it. |
| 11:18:56 | <Arahael> | Ah, I need to look at Yesod.Core.Handler |
| 11:19:35 | → | gehmehgeh joins (~user@user/gehmehgeh) |
| 11:20:08 | → | Atum_ joins (IRC@user/atum/x-2392232) |
| 11:20:56 | × | mastarija quits (~mastarija@31.217.8.174) (Ping timeout: 258 seconds) |
| 11:21:40 | <Arahael> | No, I'm still lost. :( |
| 11:22:24 | <merijn> | Arahael: That's natual with Yesod :p |
| 11:22:31 | <Arahael> | merijn: Ha. :( |
| 11:22:43 | <Arahael> | merijn: Sometimes I regret choosing it! |
| 11:22:51 | <merijn> | Only sometimes? :p |
| 11:22:57 | → | phma_ joins (phma@2001:5b0:211c:72c8:b364:62c6:6db3:cb87) |
| 11:22:59 | <Arahael> | :) |
| 11:23:14 | × | phma quits (~phma@2600:1004:b127:459d:fed5:fe1c:2170:ecd1) (Ping timeout: 250 seconds) |
| 11:23:56 | <Arahael> | There is lots of good stuff, but whilst the regular boring stuff seems... Good... Stuff as simple as middleware is fiendlishly complex. |
| 11:25:43 | <Arahael> | I probably should just use warp directly if I were doing this again, and use Wai directly. |
| 11:26:42 | <Arahael> | Ok, there's nothing in Yesod.Core.Handler that seems to be helpful. |
| 11:27:01 | <Arahael> | Nothing that lets me get access to the response. |
| 11:28:17 | → | machinedgod joins (~machinedg@135-23-192-217.cpe.pppoe.ca) |
| 11:32:13 | × | azeem quits (~azeem@dynamic-adsl-94-34-48-122.clienti.tiscali.it) (Read error: Connection reset by peer) |
| 11:32:56 | <Arahael> | Ok, it seems I can't realistically set etags as part of middleware. Yesod just doesn't allow it, I think. |
| 11:34:02 | × | Obo quits (~roberto@70.pool90-171-81.dynamic.orange.es) (Ping timeout: 252 seconds) |
| 11:34:35 | → | burnsidesLlama joins (~burnsides@dhcp168-023.wadham.ox.ac.uk) |
| 11:35:06 | → | chris joins (~chris@81.96.113.213) |
| 11:35:10 | chris | is now known as Guest7390 |
| 11:35:30 | <merijn> | I guess that the best/only way to return a set of exceptions is to simpl return something like [SomeException]? |
| 11:36:29 | → | oxide joins (~lambda@user/oxide) |
| 11:36:36 | <dminuoso> | merijn: hard to say, what's the exact semantics you're looking for? |
| 11:37:03 | <merijn> | dminuoso: I have N workers threads and if one hits an exception, I want to report it |
| 11:37:19 | AlexNoo_ | is now known as AlexNoo |
| 11:37:21 | <merijn> | dminuoso: Except, there's a conceptual race where 2 or more threads happen to hit an exception at the same time |
| 11:37:46 | <dminuoso> | Where does the set come in? Seems like each one would just report a singular exception |
| 11:38:04 | <merijn> | dminuoso: I have a parent thread responsible for the N children |
| 11:38:19 | <merijn> | dminuoso: If one of the children dies, I kill them all and report it in the parent thread |
| 11:38:29 | <merijn> | dminuoso: So in case of a race I have to report multiple exceptions |
| 11:38:34 | <dminuoso> | Intuitively I'd rather create a separate MultiException of some kind |
| 11:38:51 | <dminuoso> | But the details depend on how the parent deals with that exceptoin |
| 11:39:03 | <merijn> | dminuoso: Well, yes, hence my question how to best aggregate the multiple exception into one datatype :p |
| 11:39:34 | <merijn> | dminuoso: You can configure different behaviour for the parent, but by default it cleans up and rethrows |
| 11:40:06 | × | burnsidesLlama quits (~burnsides@dhcp168-023.wadham.ox.ac.uk) (Ping timeout: 258 seconds) |
| 11:40:49 | → | mastarija__ joins (~mastarija@31.217.16.231) |
| 11:43:56 | × | mastarija_ quits (~mastarija@31.217.8.174) (Ping timeout: 252 seconds) |
| 11:44:15 | → | mastarija joins (~mastarija@78-3-212-215.adsl.net.t-com.hr) |
| 11:44:37 | → | azeem joins (~azeem@dynamic-adsl-94-34-48-122.clienti.tiscali.it) |
| 11:46:26 | × | mastarija__ quits (~mastarija@31.217.16.231) (Ping timeout: 256 seconds) |
| 11:46:59 | <merijn> | Somewhat relatedly |
| 11:47:17 | × | dschrempf quits (~dominik@070-207.dynamic.dsl.fonira.net) (Quit: WeeChat 3.2) |
| 11:47:33 | <merijn> | Is there a way to allow people to pattern match on a constructor, without letting them create their own values? I guess some pattern synonym hackery would allow that |
| 11:49:38 | <hpc> | probably yeah |
| 11:50:06 | <hpc> | or pattern guards or view patterns would be better |
| 11:50:42 | <merijn> | Not really in this case |
| 11:50:58 | → | timCF joins (~timCF@200-149-20-81.sta.estpak.ee) |
| 11:52:25 | → | Obo joins (~roberto@70.pool90-171-81.dynamic.orange.es) |
| 11:52:35 | <merijn> | Basically, I'm trying to put our dynamically typed exceptions everyone forgets into practice, but I wanna prevent people from people (accidentally or intentionally) inserting their exception into my part of the hierarchy :p |
| 11:53:26 | <dminuoso> | merijn: You could also present it via some form of scott encoding (i.e. via its case-of expression) |
| 11:54:00 | <merijn> | dminuoso: hmm? |
| 11:55:27 | <timCF> | Hello! I have a huge Haskell source code file generated by `proto-lens-protoc` protobuf plugin from very big Google Protobuf document. The size of resulting Haskell file is something around 3MB. And I did found out that GHC 8.6.5 fails to compile this file on relatively weak laptops (8GB RAM) with default settings. But it compiles quite ok on machines with bigger RAM capacity. What can you suggest to |
| 11:55:31 | × | bitdex quits (~bitdex@gateway/tor-sasl/bitdex) (Quit: = "") |
| 11:55:33 | <timCF> | workaround this issue? Maybe there are some magical GHC flags to reduce RAM consumption? Or I should just invest into GHC upgrade in my project? |
| 11:55:59 | <dminuoso> | Invest into more RAM? :-p |
| 11:56:05 | <merijn> | That, yes :p |
| 11:56:10 | <timCF> | Haha :) |
| 11:56:30 | <merijn> | Or patch proto-lens-protoc to produce more GHC friendly output |
| 11:56:59 | <merijn> | There's work on optimising GHCs memory usage/compile times, but that's hard work and will take a while to actually improve things (and only in newer GHCs) |
| 11:57:30 | <merijn> | So "buy more RAM" and "change the generated code" are the only really short-term options you have |
| 11:57:54 | × | peterhil quits (~peterhil@dsl-hkibng32-54fb52-57.dhcp.inet.fi) (Ping timeout: 272 seconds) |
| 11:58:12 | <timCF> | Do you remember significant improvements on RAM consumption with GHC 9 upgrade? I just didn't tried latest versions of compiler. Is it better? |
| 11:58:26 | <merijn> | I can't remember, because I'm still using 8.10 :p |
| 11:58:53 | × | Atum_ quits (IRC@user/atum/x-2392232) (Ping timeout: 258 seconds) |
| 11:59:06 | <timCF> | Well, things like compilers usually are getting better over time :) |
| 11:59:09 | <hpc> | i like the technical correctness of saying "i can't remember" about something that hasn't happened yet |
| 11:59:15 | <dminuoso> | GHC hasn't really received any updates recently that majorly change how many resources it consumes. |
| 11:59:20 | <dminuoso> | Aside from bug fixes of course |
| 11:59:53 | <merijn> | hpc: Technically correct is the best kind of correct :p |
| 12:01:59 | <merijn> | ugh |
| 12:02:10 | <merijn> | Is there any hope Hackage will support multiple public libraries soon? >.< |
| 12:02:43 | × | curiousgay quits (~curiousga@77-120-186-48.kha.volia.net) (Ping timeout: 258 seconds) |
| 12:04:23 | → | peterhil joins (~peterhil@dsl-hkibng32-54fb52-57.dhcp.inet.fi) |
| 12:05:46 | → | burnsidesLlama joins (~burnsides@dhcp168-023.wadham.ox.ac.uk) |
| 12:06:17 | → | Pickchea joins (~private@user/pickchea) |
| 12:06:51 | → | eggplantade joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) |
| 12:11:36 | × | eggplantade quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 276 seconds) |
| 12:12:27 | <merijn> | What's the cheapest concurrent append operation? I guess IORef with atomicModifyIORef? |
| 12:14:42 | → | burnside_ joins (~burnsides@dhcp168-023.wadham.ox.ac.uk) |
| 12:14:42 | × | burnsidesLlama quits (~burnsides@dhcp168-023.wadham.ox.ac.uk) (Read error: Connection reset by peer) |
| 12:17:37 | → | nicklaf joins (~nick@c-73-231-202-254.hsd1.ca.comcast.net) |
| 12:17:41 | → | drd joins (~drd@2001:b07:a70:9f1f:1562:34de:f50f:77d4) |
| 12:17:59 | ← | nicklaf parts (~nick@c-73-231-202-254.hsd1.ca.comcast.net) () |
| 12:24:11 | → | solirc joins (~solirc@119.42.116.126) |
| 12:24:24 | × | anandprabhu quits (~anandprab@94.202.243.198) (Quit: Leaving) |
| 12:25:41 | → | xsperry joins (~as@user/xsperry) |
| 12:29:42 | ← | jakalx parts (~jakalx@base.jakalx.net) () |
| 12:35:35 | → | jakalx joins (~jakalx@base.jakalx.net) |
| 12:36:01 | → | aman joins (~aman@user/aman) |
| 12:36:45 | → | sub0 joins (~bc8150b8@217.29.117.252) |
| 12:37:26 | → | futty joins (~futty@c83-252-75-55.bredband.tele2.se) |
| 12:40:16 | <futty> | In the book Learn You A Haskell at chapter 4, there are two consecutive examples of recursion. The two type signatures are length' :: (Num b) => [a] -> b AND sum' :: (Num a) => [a] -> a. a and b are polymorphic type variables but how do I know where to use a and where to use b? |
| 12:40:44 | <merijn> | futty: What do you mean? |
| 12:41:59 | <futty> | I mean the two polymorphic variables are different. In the first one, b is used. In the second a is used all the way. Can I for example write length' :: (Num a) => [a] -> a in the first one? I dont really grasp that concept. |
| 12:42:38 | <merijn> | futty: The actual letters don't matter, except that within a single type all occurences of that letter are the same type |
| 12:42:57 | <merijn> | futty: So your new length example can only count lengths of list that have the same elements as the result |
| 12:44:12 | → | neceve joins (~quassel@2a02:c7f:607e:d600:f762:20dd:304e:4b1f) |
| 12:44:17 | <merijn> | "length' :: Num a => [a] -> a" effectively says "I can compute the length of a list of 'a's and produce a resulting 'a', as long as 'a' is an instance of Num", this means you *can't* compute the length of, say, [Char], because Char is not an instance of Num |
| 12:44:25 | × | Vajb quits (~Vajb@hag-jnsbng11-58c3a1-224.dhcp.inet.fi) (Read error: Connection reset by peer) |
| 12:44:30 | × | jippiedoe quits (~david@77-171-152-62.fixed.kpn.net) (Ping timeout: 258 seconds) |
| 12:44:58 | → | fendor_ joins (~fendor@77.119.205.218.wireless.dyn.drei.com) |
| 12:45:02 | <merijn> | futty: In the original version we're computing the length of a list of 'b's (whatever 'b' may be) and produce a result that can be any 'a' that is a Num instance |
| 12:45:05 | <futty> | ah, so in length' :: (Num b) => [a] -> b, a can be of type String and the output is an Int. In the sum' :: (Num a) => [a] -> a., a MUST be of type Int because there is no other way? |
| 12:45:19 | <dminuoso> | futty: A type variable is something the *consumer/caller/user* can/must chose a type for. |
| 12:45:20 | <merijn> | futty: Well, it could be Double too :p |
| 12:45:24 | <merijn> | futty: But yes |
| 12:45:36 | <futty> | Yes. I understand now. Thank you, grateful. |
| 12:46:16 | → | jao joins (jao@gateway/vpn/protonvpn/jao) |
| 12:46:46 | <merijn> | futty: Distinct type variables (may!) have different types, but identical type variables (within a signature) all refer to the exact same type |
| 12:46:47 | × | mastarija quits (~mastarija@78-3-212-215.adsl.net.t-com.hr) (Ping timeout: 245 seconds) |
| 12:47:04 | <futty> | Got it. |
| 12:47:29 | <merijn> | futty: So in case of '[b] -> a' we can pick 'b = Char' and 'a = int', but note that 'b = Int' and 'a = Int' is also valid, so they don't *have* to be different |
| 12:47:35 | → | dschrempf joins (~dominik@070-207.dynamic.dsl.fonira.net) |
| 12:47:38 | × | fendor quits (~fendor@178.115.48.162.wireless.dyn.drei.com) (Ping timeout: 256 seconds) |
| 12:48:45 | → | Vajb joins (~Vajb@hag-jnsbng11-58c3a1-224.dhcp.inet.fi) |
| 12:49:01 | <futty> | I was so confused, thank you |
| 12:49:56 | <merijn> | Note that LYAH is a nice "here's some cool examples" book, but generally not considered all that good at teaching you how to actually write Haskell |
| 12:52:07 | <merijn> | Graham Hutton's "Programming in Haskell", Richard Bird's "Thinking Functionally with Haskell", and Julie Moronuki & Chris Allen's "Haskell from First Principles" are generally considered better introduction to teach actually programming in Haskell |
| 12:52:17 | <merijn> | @where cis194 |
| 12:52:17 | <lambdabot> | https://www.seas.upenn.edu/~cis194/spring13/lectures.html |
| 12:52:21 | <merijn> | @where exercises |
| 12:52:21 | <lambdabot> | http://www.haskell.org/haskellwiki/H-99:_Ninety-Nine_Haskell_Problems https://github.com/bitemyapp/learnhaskell http://www.reddit.com/r/dailyprogrammer/ http://www.reddit.com/r/programmingchallenges/ |
| 12:52:30 | <merijn> | Are also some good pointers |
| 12:54:00 | × | jneira quits (~jneira@212.8.115.226) (Quit: Client closed) |
| 12:55:11 | <futty> | I actually tried to begin with Haskell from First Principles long ago but my computer science course at university uses LYAH. I got a re-exam and try to remember first by course resources. Then I'll read Haskell from First Principles. |
| 13:00:23 | × | Melantha quits (~pyon@user/pyon) (Ping timeout: 252 seconds) |
| 13:01:07 | → | alx741 joins (~alx741@181.196.69.121) |
| 13:02:11 | → | Melantha joins (~pyon@user/pyon) |
| 13:06:42 | → | favonia joins (~favonia@user/favonia) |
| 13:12:49 | → | pbrisbin joins (~patrick@pool-108-52-124-197.phlapa.fios.verizon.net) |
| 13:12:56 | × | qbt quits (~edun@user/edun) (Quit: Leaving) |
| 13:14:34 | × | mjs2600 quits (~mjs2600@c-24-91-3-49.hsd1.vt.comcast.net) (Ping timeout: 240 seconds) |
| 13:17:43 | → | Gurkenglas joins (~Gurkengla@dslb-002-203-144-156.002.203.pools.vodafone-ip.de) |
| 13:19:33 | × | dschrempf quits (~dominik@070-207.dynamic.dsl.fonira.net) (Quit: WeeChat 3.2) |
| 13:20:38 | → | mastarija joins (~mastarija@78-3-212-215.adsl.net.t-com.hr) |
| 13:20:57 | → | haskell-lurkmore joins (~haskell-l@78.155.54.115) |
| 13:23:11 | × | markpythonicbitc quits (~textual@2601:647:5a00:35:e0da:ada7:2ca5:10dd) (Quit: My MacBook Air has gone to sleep. ZZZzzz…) |
| 13:25:06 | → | jippiedoe joins (~david@2a02-a44c-e14e-1-dfb3-4ecf-f29f-159d.fixed6.kpn.net) |
| 13:25:40 | <merijn> | hmm |
| 13:25:51 | <merijn> | What happens if the cleanup part of a bracket throws an exception? |
| 13:29:36 | × | agua_pesada quits (~agua_pesa@2804:14c:8793:8e2f:48b4:3d09:2f3b:552b) (Ping timeout: 276 seconds) |
| 13:30:05 | → | slowButPresent joins (~slowButPr@user/slowbutpresent) |
| 13:30:11 | <Taneb> | merijn: I think the whole thing throws an exception |
| 13:30:21 | <merijn> | Yes, but which one |
| 13:30:55 | → | shriekingnoise joins (~shrieking@186.137.144.80) |
| 13:33:45 | <Taneb> | The one the cleanup action throws |
| 13:34:08 | <merijn> | You say this very confidently, but I have serious question marks whether it does :p |
| 13:34:27 | <Taneb> | I'm looking at the source |
| 13:34:28 | → | mr-red joins (~drd@2001:b07:a70:9f1f:1562:34de:f50f:77d4) |
| 13:34:30 | <Taneb> | https://hackage.haskell.org/package/base-4.15.0.0/docs/src/Control-Exception-Base.html#bracket |
| 13:34:31 | <dminuoso> | Im also confident Taneb is right |
| 13:34:35 | <dminuoso> | The implementation of bracket is dead simple |
| 13:34:40 | <Taneb> | Although I will admit I have done no experimentation |
| 13:34:57 | <merijn> | dminuoso: Hard disagree on it being simple :p |
| 13:35:23 | <merijn> | dminuoso: The runtime semantics of bracket are anything but simple, imo |
| 13:35:33 | × | hendursa1 quits (~weechat@user/hendursaga) (Quit: hendursa1) |
| 13:35:52 | × | drd quits (~drd@2001:b07:a70:9f1f:1562:34de:f50f:77d4) (Ping timeout: 258 seconds) |
| 13:36:01 | → | hendursaga joins (~weechat@user/hendursaga) |
| 13:36:13 | × | burnside_ quits (~burnsides@dhcp168-023.wadham.ox.ac.uk) (Remote host closed the connection) |
| 13:36:52 | <dminuoso> | merijn: Well if you follow this rabbit hole, it ends up being a discussion about "what happens if you throw an exception in the catch clause", no? |
| 13:37:11 | <merijn> | dminuoso: Well yes, that's exactly the rabbit hole I'm currently heading down |
| 13:37:40 | <dminuoso> | Sorry I meant "in the catching part of `catch`" |
| 13:38:58 | → | burnsidesLlama joins (~burnsides@client-8-91.eduroam.oxuni.org.uk) |
| 13:39:46 | <Taneb> | Oh, hmm, experimentation suggests that I was wrong |
| 13:39:59 | → | PinealGlandOptic joins (~PinealGla@37.115.210.35) |
| 13:40:01 | <Taneb> | No, I'm just using bracket wrong |
| 13:40:09 | <merijn> | Taneb: I'm not even sure it's deterministic, tbh |
| 13:40:19 | <Taneb> | The release is the second argument, not the third |
| 13:40:39 | <Taneb> | merijn: I think it is. Have you seen anything that suggests it isn't? |
| 13:41:01 | <merijn> | Taneb: I'm just wildly paranoid about literally every part of async exceptions >.> |
| 13:41:24 | <Taneb> | merijn: do you agree that "throwIO a >> throwIO b" always throws a? |
| 13:41:39 | <dminuoso> | fsvo of "always" |
| 13:41:41 | <merijn> | Only probably >.> |
| 13:41:45 | <dminuoso> | in the presence of async exceptions it might not. |
| 13:41:54 | <Taneb> | Assuming there's no other threads messing with it |
| 13:41:55 | <merijn> | Because per GHC semantics it can throw either non-deterministically |
| 13:41:55 | <srid[m]> | lechner: sm if you haven't checked out already https://note.ema.srid.ca/ |
| 13:42:03 | <merijn> | Taneb: Doesn't require other threads |
| 13:42:17 | <Taneb> | merijn: how can it throw b? |
| 13:42:41 | <merijn> | Taneb: GHC optimisation is allowed to make it throw b, iirc |
| 13:42:53 | <Taneb> | That's... very surprising |
| 13:43:02 | <merijn> | Lemme dig up the obscure example |
| 13:43:35 | <Taneb> | If that's true then bracket can also throw either exception, because it's basically doing that |
| 13:43:45 | <merijn> | Taneb: Throwing expressions are allowed to throw *any* of the exceptions that can hypothetically be thrown by that expression |
| 13:44:22 | <merijn> | Someone had a neat (and by neat I mean "maddening") example of code throwing the "wrong" exception |
| 13:44:41 | <Taneb> | throwIO is guaranteed to be sequential, right? That's like the whole point of it over plain throw |
| 13:45:11 | <Taneb> | "The throwIO variant should be used in preference to throw to raise an exception within the IO monad because it guarantees ordering with respect to other IO operations, whereas throw does not." |
| 13:46:00 | × | pmk quits (~user@195.114.237.86) (Ping timeout: 256 seconds) |
| 13:46:16 | <merijn> | Taneb: I'm not sure to what extend the IO guarantees affect imprecise exception semantics, hence why I said "probably 'a'" :) |
| 13:46:28 | × | mr-red quits (~drd@2001:b07:a70:9f1f:1562:34de:f50f:77d4) (Quit: ZNC 1.8.2 - https://znc.in) |
| 13:46:38 | <Taneb> | (from haddocks here: https://hackage.haskell.org/package/base-4.15.0.0/docs/GHC-IO.html#v:throwIO ) |
| 13:46:57 | <merijn> | hmm, looks like throwIO is probably fine |
| 13:47:34 | <Taneb> | If it's not fine, I'm going to be very upset |
| 13:48:32 | → | pmk joins (~user@62.103.231.196) |
| 13:49:01 | → | agua_pesada joins (~agua_pesa@2804:14c:8793:8e2f:48b4:3d09:2f3b:552b) |
| 13:49:02 | → | drd joins (~drd@93-39-151-19.ip76.fastwebnet.it) |
| 13:49:49 | <merijn> | ugh |
| 13:50:04 | <merijn> | Looks like I'm going to have to fundamentally redesign this code |
| 13:50:55 | <Taneb> | merijn: so, with somewhat more confidence now, I will say that, assuming no other threads or external signals, if an exception is thrown in the cleanup of a bracket, _that_ exception and not the inner one will be thrown |
| 13:51:40 | → | Sgeo joins (~Sgeo@user/sgeo) |
| 13:52:21 | → | mr-red joins (~drd@93-39-151-19.ip76.fastwebnet.it) |
| 13:53:44 | × | drd quits (~drd@93-39-151-19.ip76.fastwebnet.it) (Ping timeout: 252 seconds) |
| 13:54:01 | × | mr-red quits (~drd@93-39-151-19.ip76.fastwebnet.it) (Client Quit) |
| 13:54:46 | → | drd joins (~drd@93-39-151-19.ip76.fastwebnet.it) |
| 13:56:09 | × | timCF quits (~timCF@200-149-20-81.sta.estpak.ee) (Quit: leaving) |
| 13:56:34 | → | tzh joins (~tzh@c-24-21-73-154.hsd1.or.comcast.net) |
| 14:00:33 | → | jess joins (~jess@libera/staff/jess) |
| 14:04:15 | phma_ | is now known as phma |
| 14:05:15 | <merijn> | hmm |
| 14:05:31 | <merijn> | Maybe I should just say fuck it and depend on exceptions, that'd probably make my life infinitely easier |
| 14:06:24 | → | amahl joins (~amahl@dsl-jklbng12-54fbca-64.dhcp.inet.fi) |
| 14:06:44 | <Taneb> | I feel like if you're worried about the low level semantics like that, exceptions might make your life harder |
| 14:08:27 | → | eggplantade joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) |
| 14:08:34 | × | Pickchea quits (~private@user/pickchea) (Ping timeout: 240 seconds) |
| 14:08:45 | <dminuoso> | 15:44:23 merijn | Someone had a neat (and by neat I mean "maddening") example of code throwing the "wrong" exception |
| 14:08:52 | <dminuoso> | merijn: Are you sure you are not conflating it with pure exceptions? |
| 14:08:56 | → | markpythonicbitc joins (~textual@50.228.44.6) |
| 14:09:21 | <merijn> | Taneb: The problem is that, right now I have a weird sort of "inversion of control" passing in different brackets (pipes-safe/conduit/etc.) into my own code and working with that, which is...god awful, would not recommend >.> |
| 14:09:40 | <Taneb> | Sounds Fun(tm) |
| 14:09:44 | → | acidjnk_new joins (~acidjnk@p200300d0c72b95287d3c8ae91691b72a.dip0.t-ipconnect.de) |
| 14:09:50 | <merijn> | If I just require exceptions, I can just write it once with that bracket and then everything else is someone else's problem |
| 14:10:10 | <merijn> | Additionally, both pipes-safe, conduit, and resourcet all support exceptions, so then my life should be much simpler :p |
| 14:10:18 | → | waleee joins (~waleee@2001:9b0:216:8200:d457:9189:7843:1dbd) |
| 14:10:27 | <Taneb> | :) |
| 14:10:40 | × | Guest7390 quits (~chris@81.96.113.213) (Remote host closed the connection) |
| 14:10:52 | × | solirc quits (~solirc@119.42.116.126) (Ping timeout: 246 seconds) |
| 14:11:05 | → | deejaytee joins (~deejaytee@193.46-255-62.static.virginmediabusiness.co.uk) |
| 14:12:39 | → | dschrempf joins (~dominik@070-207.dynamic.dsl.fonira.net) |
| 14:13:12 | × | eggplantade quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 256 seconds) |
| 14:13:26 | × | acidjnk_new3 quits (~acidjnk@p200300d0c72b9591c199f99eb1b080aa.dip0.t-ipconnect.de) (Ping timeout: 258 seconds) |
| 14:14:24 | × | dschrempf quits (~dominik@070-207.dynamic.dsl.fonira.net) (Client Quit) |
| 14:14:52 | <lechner> | srid[m]: Hi, thanks for the link! Is that different from using Hugo with Jamstack (aside from your Haskell DSL)? |
| 14:15:34 | → | chris joins (~chris@81.96.113.213) |
| 14:15:37 | chris | is now known as Guest9336 |
| 14:16:49 | <merijn> | The only downside is that I lose my elegantly minimal dependencies :p |
| 14:17:12 | <srid[m]> | There is not Haskell DSL. It just converts a folder of Markdown notes to a website, which can be themed fully using Heist HTML templates, and optionally configured using .yml files lechner |
| 14:17:45 | <srid[m]> | A few sites already use it, including my personal website: https://note.ema.srid.ca/examples |
| 14:17:50 | → | mr-red joins (~drd@93-39-151-19.ip76.fastwebnet.it) |
| 14:18:13 | <srid[m]> | Mostly ready ... I just need implement the final Zettelkasten features (graph related) and polish things up for final release. |
| 14:19:02 | × | drd quits (~drd@93-39-151-19.ip76.fastwebnet.it) (Ping timeout: 252 seconds) |
| 14:19:46 | × | Guest9336 quits (~chris@81.96.113.213) (Ping timeout: 240 seconds) |
| 14:20:26 | <lechner> | srid[m]: okay, i think i got confused with ema https://ema.srid.ca/guide/model |
| 14:21:25 | → | wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
| 14:22:00 | → | chris joins (~chris@81.96.113.213) |
| 14:22:04 | chris | is now known as Guest5930 |
| 14:22:40 | × | gawen_ quits (~gawen@user/gawen) (Quit: cya) |
| 14:22:53 | <srid[m]> | Ema is the static site generator (like Hakyll). |
| 14:22:59 | <srid[m]> | Emanote uses Ema internally. |
| 14:23:18 | × | jmorris quits (uid433911@id-433911.stonehaven.irccloud.com) (Quit: Connection closed for inactivity) |
| 14:23:42 | <lechner> | srid[m]: "Emanote is a Haskell program that transforms a bunch of “source files” (Markdown, static files, etc.) into a “target website”" |
| 14:23:51 | <srid[m]> | Ema requires that you write Haskell code (like Hakyll). With Emanote, you just run `emanote` on your folder of Markdown notes and get the website running |
| 14:24:15 | <lechner> | i see |
| 14:25:31 | <maralorn> | Hecate: So we reverted the GHC 8.10.5 update because there were to many bugs in it which broke a bunch of packages. Also people were like let’s do 8.10.6 within a week so we decided to wait for that. |
| 14:25:36 | <maralorn> | Hecate: Still waiting. |
| 14:26:46 | → | gawen joins (~gawen@user/gawen) |
| 14:30:47 | <merijn> | Ah, shit |
| 14:30:53 | <merijn> | I remember why I didn't use exceptions |
| 14:31:02 | <merijn> | ResourceT implements it, but conduit does not :\ |
| 14:32:53 | <Taneb> | Looks like it implements only MonadThrow but not MonadCatch or MonadMask? |
| 14:33:54 | <merijn> | Yeah, you need to use MonadResource for resource management |
| 14:35:41 | <merijn> | The entire API for it is just kind of a mess |
| 14:36:19 | <merijn> | It was designed with one design for conduit, then they rewrote conduit, fundamentally altering several assumptions and half the documentation still refers to the old stuff |
| 14:36:35 | <Taneb> | Yeah, that matches my impression of conduit |
| 14:37:36 | × | Guest5930 quits (~chris@81.96.113.213) (Remote host closed the connection) |
| 14:37:58 | <merijn> | Like, there's a bunch of stuff refering to finalizers, but finalizers were removed from conduit ages ago |
| 14:38:09 | <merijn> | Similar issue with persistent |
| 14:38:39 | <merijn> | Half the persistent API was designed around conduit's finalizers, meaning that half the use-cases of the persistent API are now prone to leak resources >.> |
| 14:39:59 | × | lortabac quits (~lortabac@2a01:e0a:541:b8f0:c3b9:c489:f445:c424) (Quit: WeeChat 2.8) |
| 14:41:04 | <DigitalKiwi> | why do people use them |
| 14:41:37 | <merijn> | DigitalKiwi: Use what? |
| 14:42:47 | <DigitalKiwi> | conduit, persistent |
| 14:43:04 | <merijn> | conduit has the most ecosystem support, partially due to persistent |
| 14:43:29 | <merijn> | And that's what FP-Complete pushes for use with Yesod |
| 14:43:42 | × | peterhil quits (~peterhil@dsl-hkibng32-54fb52-57.dhcp.inet.fi) (Ping timeout: 276 seconds) |
| 14:44:22 | <DigitalKiwi> | how much do they charge for up to date docs lol |
| 14:44:52 | × | Obo quits (~roberto@70.pool90-171-81.dynamic.orange.es) (Ping timeout: 258 seconds) |
| 14:47:32 | <sshine> | DigitalKiwi, I think people use persistent because it's mature. |
| 14:47:47 | <sshine> | DigitalKiwi, also, you don't need to know what an arrow is. |
| 14:48:46 | <Taneb> | Are there any database libraries that do require you to know what an arrow is? |
| 14:49:15 | <sshine> | Taneb, OpalEye? |
| 14:50:16 | <sshine> | maybe they went away from that. |
| 14:51:10 | <merijn> | Friends tell friends to just use postgres-simple and sqlite-simple |
| 14:51:41 | <sshine> | I tell myself to use those, too. |
| 14:51:42 | <DigitalKiwi> | my friends hate me ;( |
| 14:52:31 | × | doyougnu quits (~user@c-73-25-202-122.hsd1.or.comcast.net) (Remote host closed the connection) |
| 14:53:27 | <merijn> | bleh |
| 14:53:46 | <sshine> | merijn, I'd trade some flexibility for the ability to automate database migrations. |
| 14:53:55 | <merijn> | I hate it when I can turn a race condition only into a "less likely race condition" instead of fixing it |
| 14:54:07 | <merijn> | sshine: Well, you don't get that with persistent either, so :p |
| 14:54:24 | <sshine> | merijn, good to know :p |
| 14:54:25 | <merijn> | sshine: I mean, you "get" it, but it's so broken I handrolled my own system on top |
| 14:54:25 | <yushyin> | i don't have friends who write haskell :( |
| 14:54:27 | × | reumeth2 quits (~reumeth@user/reumeth) (Ping timeout: 258 seconds) |
| 14:54:56 | <sshine> | yushyin, it's never too late! |
| 14:56:24 | <DigitalKiwi> | teach them haskell and your friends will hate you too ;D |
| 14:56:53 | <spruit11> | it's a bit much to program Haskell and expect friends, yes |
| 14:57:07 | <DigitalKiwi> | *chortle* |
| 14:59:50 | <sshine> | if C++ can have "friendship classes", surely Haskell can have a concept of friendship. |
| 15:01:45 | <DigitalKiwi> | TypePolycules |
| 15:02:34 | → | hololeap_ joins (~hololeap@user/hololeap) |
| 15:02:44 | × | hololeap quits (~hololeap@user/hololeap) (Remote host closed the connection) |
| 15:03:04 | × | pschorf quits (~user@c-73-77-28-188.hsd1.tx.comcast.net) (Remote host closed the connection) |
| 15:04:28 | <geekosaur> | type families are a sort of family-by-choice |
| 15:04:52 | → | zmt00 joins (~zmt00@user/zmt00) |
| 15:04:56 | → | doyougnu joins (~user@c-73-25-202-122.hsd1.or.comcast.net) |
| 15:05:11 | × | acidjnk_new quits (~acidjnk@p200300d0c72b95287d3c8ae91691b72a.dip0.t-ipconnect.de) (Ping timeout: 258 seconds) |
| 15:06:43 | × | waleee quits (~waleee@2001:9b0:216:8200:d457:9189:7843:1dbd) (Ping timeout: 258 seconds) |
| 15:07:07 | → | lbseale joins (~lbseale@user/ep1ctetus) |
| 15:09:05 | → | Null_A joins (~null_a@2601:645:8700:2290:7da4:a1bb:6c20:daba) |
| 15:09:33 | × | bitmapper quits (uid464869@id-464869.tooting.irccloud.com) (Quit: Connection closed for inactivity) |
| 15:10:13 | → | chris joins (~chris@81.96.113.213) |
| 15:10:17 | chris | is now known as Guest2657 |
| 15:10:31 | × | Guest2657 quits (~chris@81.96.113.213) (Remote host closed the connection) |
| 15:10:52 | → | lavaman joins (~lavaman@98.38.249.169) |
| 15:11:22 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 245 seconds) |
| 15:13:55 | → | pschorf joins (~user@c-73-77-28-188.hsd1.tx.comcast.net) |
| 15:13:57 | → | zebrag joins (~chris@user/zebrag) |
| 15:14:45 | × | burnsidesLlama quits (~burnsides@client-8-91.eduroam.oxuni.org.uk) (Remote host closed the connection) |
| 15:15:04 | × | lavaman quits (~lavaman@98.38.249.169) (Ping timeout: 250 seconds) |
| 15:15:17 | → | burnsidesLlama joins (~burnsides@client-8-91.eduroam.oxuni.org.uk) |
| 15:15:42 | → | chris joins (~chris@81.96.113.213) |
| 15:15:46 | chris | is now known as Guest6275 |
| 15:18:17 | → | kayvank joins (~kayvank@52-119-115-185.PUBLIC.monkeybrains.net) |
| 15:19:24 | × | burnsidesLlama quits (~burnsides@client-8-91.eduroam.oxuni.org.uk) (Ping timeout: 250 seconds) |
| 15:20:04 | × | Guest6275 quits (~chris@81.96.113.213) (Ping timeout: 256 seconds) |
| 15:21:10 | × | mikoto-chan quits (~mikoto-ch@ip-193-121-10-50.dsl.scarlet.be) (Quit: mikoto-chan) |
| 15:22:12 | × | zeenk quits (~zeenk@2a02:2f04:a211:a800:553b:3cb0:5ea1:7e83) (Ping timeout: 245 seconds) |
| 15:23:46 | → | hnOsmium0001 joins (uid453710@id-453710.stonehaven.irccloud.com) |
| 15:24:49 | → | Obo joins (~roberto@70.pool90-171-81.dynamic.orange.es) |
| 15:28:52 | → | reumeth joins (~reumeth@user/reumeth) |
| 15:35:20 | → | Pickchea joins (~private@user/pickchea) |
| 15:36:50 | → | burnsidesLlama joins (~burnsides@dhcp168-023.wadham.ox.ac.uk) |
| 15:38:22 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 15:39:15 | → | weechat1 joins (~weechat@2001:41d0:a:62bb::1) |
| 15:39:19 | × | weechat1 quits (~weechat@2001:41d0:a:62bb::1) (Client Quit) |
| 15:39:53 | → | weechat1 joins (~weechat@2001:41d0:a:62bb::1) |
| 15:41:30 | × | retro_ quits (~retro@5ec19a54.skybroadband.com) (Ping timeout: 240 seconds) |
| 15:43:31 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 258 seconds) |
| 15:44:09 | → | drlkf joins (~drlkf@2a02-842a-0191-c401-e6a7-a0ff-fecc-04a7.rev.sfr.net) |
| 15:44:13 | ← | drlkf parts (~drlkf@2a02-842a-0191-c401-e6a7-a0ff-fecc-04a7.rev.sfr.net) () |
| 15:45:59 | → | Erutuon joins (~Erutuon@user/erutuon) |
| 15:47:47 | <monochrom> | I am my friend --- endoamicalism. |
| 15:48:20 | × | burnsidesLlama quits (~burnsides@dhcp168-023.wadham.ox.ac.uk) (Remote host closed the connection) |
| 15:48:32 | × | sweater quits (~sweater@206.81.18.26) (Quit: WeeChat 2.8) |
| 15:48:46 | → | burnsidesLlama joins (~burnsides@dhcp168-023.wadham.ox.ac.uk) |
| 15:49:27 | → | Core9863 joins (~agua_pesa@2804:14c:8793:8e2f:48b4:3d09:2f3b:552b) |
| 15:49:44 | ← | weechat1 parts (~weechat@2001:41d0:a:62bb::1) (WeeChat 2.3) |
| 15:50:04 | × | mr-red quits (~drd@93-39-151-19.ip76.fastwebnet.it) (Quit: ZNC 1.8.2 - https://znc.in) |
| 15:50:48 | × | agua_pesada quits (~agua_pesa@2804:14c:8793:8e2f:48b4:3d09:2f3b:552b) (Ping timeout: 258 seconds) |
| 15:53:06 | × | burnsidesLlama quits (~burnsides@dhcp168-023.wadham.ox.ac.uk) (Ping timeout: 240 seconds) |
| 15:53:47 | → | eggplantade joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) |
| 15:57:38 | <DigitalKiwi> | is that a real word |
| 15:57:46 | <monochrom> | No :) |
| 15:58:45 | → | peterhil joins (~peterhil@mobile-access-b04851-37.dhcp.inet.fi) |
| 16:01:32 | × | lbseale quits (~lbseale@user/ep1ctetus) (Ping timeout: 258 seconds) |
| 16:03:00 | × | justsomeguy quits (~justsomeg@user/justsomeguy) (Ping timeout: 276 seconds) |
| 16:05:36 | → | weechat1 joins (~weechat@2001:41d0:a:62bb::1) |
| 16:07:04 | → | lbseale joins (~lbseale@user/ep1ctetus) |
| 16:07:28 | × | weechat1 quits (~weechat@2001:41d0:a:62bb::1) (Client Quit) |
| 16:07:36 | → | weechat1 joins (~weechat@2001:41d0:a:62bb::1) |
| 16:09:08 | × | weechat1 quits (~weechat@2001:41d0:a:62bb::1) (Client Quit) |
| 16:09:21 | → | weechat1 joins (~weechat@2001:41d0:a:62bb::1) |
| 16:09:24 | × | weechat1 quits (~weechat@2001:41d0:a:62bb::1) (Client Quit) |
| 16:10:37 | → | weechat1 joins (~weechat@2001:41d0:a:62bb::1) |
| 16:11:26 | × | eggplantade quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection) |
| 16:13:36 | × | weechat1 quits (~weechat@2001:41d0:a:62bb::1) (Client Quit) |
| 16:13:50 | → | weechat1 joins (~weechat@2001:41d0:a:62bb::1) |
| 16:13:59 | catern- | is now known as catern |
| 16:14:42 | × | peterhil quits (~peterhil@mobile-access-b04851-37.dhcp.inet.fi) (Ping timeout: 240 seconds) |
| 16:15:57 | → | MoC joins (~moc@user/moc) |
| 16:20:00 | → | drd joins (~drd@2001:b07:a70:9f1f:1562:34de:f50f:77d4) |
| 16:21:29 | weechat1 | is now known as drlkf |
| 16:22:07 | → | eggplantade joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) |
| 16:24:50 | × | wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 250 seconds) |
| 16:26:29 | × | phma quits (phma@2001:5b0:211c:72c8:b364:62c6:6db3:cb87) (Read error: Connection reset by peer) |
| 16:26:59 | → | qbt joins (~edun@user/edun) |
| 16:27:04 | → | edun joins (~edun@user/edun) |
| 16:27:14 | × | edun quits (~edun@user/edun) (Remote host closed the connection) |
| 16:27:34 | → | phma joins (phma@2001:5b0:210b:e008:a947:cb40:b68c:f4a9) |
| 16:31:50 | → | EvanR joins (~evan@user/evanr) |
| 16:32:18 | → | burnsidesLlama joins (~burnsides@dhcp168-023.wadham.ox.ac.uk) |
| 16:32:42 | × | futty quits (~futty@c83-252-75-55.bredband.tele2.se) (Ping timeout: 240 seconds) |
| 16:33:01 | deejaytee | is now known as Guest2142 |
| 16:33:01 | × | Guest2142 quits (~deejaytee@193.46-255-62.static.virginmediabusiness.co.uk) (Killed (calcium.libera.chat (Nickname regained by services))) |
| 16:33:06 | → | deejaytee joins (~deejaytee@cpc91196-cmbg18-2-0-cust215.5-4.cable.virginm.net) |
| 16:35:19 | × | eggplantade quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection) |
| 16:36:54 | <joel135> | I make shit up -- anaskamorphism. |
| 16:36:55 | × | dajoer quits (~david@user/gvx) (Quit: leaving) |
| 16:37:22 | <deejaytee> | tbf it's a perfectly cromulent word |
| 16:37:39 | <monochrom> | :) |
| 16:38:16 | × | burnsidesLlama quits (~burnsides@dhcp168-023.wadham.ox.ac.uk) (Ping timeout: 256 seconds) |
| 16:39:44 | → | Guest170 joins (~Guest1@102-250-243-213.terrecablate.net) |
| 16:41:07 | <DigitalKiwi> | cromulent isn't a real word |
| 16:42:31 | × | Guest170 quits (~Guest1@102-250-243-213.terrecablate.net) (Client Quit) |
| 16:42:31 | <dminuoso> | https://en.wikipedia.org/wiki/Embiggen#Embiggen_and_cromulent |
| 16:42:48 | <deejaytee> | ^ |
| 16:44:31 | → | pavonia joins (~user@user/siracusa) |
| 16:49:05 | → | mikoto-chan joins (~mikoto-ch@ip-193-121-10-50.dsl.scarlet.be) |
| 16:49:22 | × | chele quits (~chele@user/chele) (Remote host closed the connection) |
| 16:51:23 | <DigitalKiwi> | *doubt* |
| 16:52:09 | → | eggplantade joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) |
| 16:54:19 | × | drlkf quits (~weechat@2001:41d0:a:62bb::1) (Quit: WeeChat 2.3) |
| 16:54:36 | → | weechat1 joins (~weechat@2001:41d0:a:62bb::1) |
| 16:55:33 | × | aman quits (~aman@user/aman) (Quit: aman) |
| 16:56:06 | × | weechat1 quits (~weechat@2001:41d0:a:62bb::1) (Client Quit) |
| 16:56:18 | → | weechat1 joins (~weechat@2001:41d0:a:62bb::1) |
| 16:56:29 | × | weechat1 quits (~weechat@2001:41d0:a:62bb::1) (Client Quit) |
| 17:02:08 | → | weechat1 joins (~weechat@2001:41d0:a:62bb::1) |
| 17:04:47 | × | mastarija quits (~mastarija@78-3-212-215.adsl.net.t-com.hr) (Ping timeout: 258 seconds) |
| 17:06:58 | → | Lycurgus joins (~juan@cpe-45-46-140-49.buffalo.res.rr.com) |
| 17:07:14 | × | Lycurgus quits (~juan@cpe-45-46-140-49.buffalo.res.rr.com) (Remote host closed the connection) |
| 17:07:45 | × | weechat1 quits (~weechat@2001:41d0:a:62bb::1) (Quit: WeeChat 2.3) |
| 17:07:59 | → | weechat1 joins (~weechat@2001:41d0:a:62bb::1) |
| 17:08:23 | weechat1 | is now known as drlkf |
| 17:10:12 | → | justsomeguy joins (~justsomeg@user/justsomeguy) |
| 17:11:19 | → | Ariakenom joins (~Ariakenom@c83-255-154-140.bredband.tele2.se) |
| 17:11:39 | × | kuribas quits (~user@ptr-25vy0i9yst6l4ryh82e.18120a2.ip6.access.telenet.be) (Quit: ERC (IRC client for Emacs 26.3)) |
| 17:12:19 | → | lavaman joins (~lavaman@98.38.249.169) |
| 17:12:33 | × | Obo quits (~roberto@70.pool90-171-81.dynamic.orange.es) (Ping timeout: 276 seconds) |
| 17:12:53 | × | drlkf quits (~weechat@2001:41d0:a:62bb::1) (Quit: q=) |
| 17:12:56 | → | mattil joins (~mattilinn@62-113-176-119.bb.dnainternet.fi) |
| 17:13:54 | → | drlkf joins (~drlkf@2001:41d0:a:62bb::1) |
| 17:15:08 | → | slack1256 joins (~slack1256@191.125.170.167) |
| 17:16:00 | × | slack1256 quits (~slack1256@191.125.170.167) (Remote host closed the connection) |
| 17:16:42 | × | lavaman quits (~lavaman@98.38.249.169) (Ping timeout: 240 seconds) |
| 17:16:42 | × | Pickchea quits (~private@user/pickchea) (Ping timeout: 240 seconds) |
| 17:18:53 | → | slack1256 joins (~slack1256@191.125.170.167) |
| 17:28:03 | × | Shailangsa_ quits (~shailangs@host86-185-98-7.range86-185.btcentralplus.com) () |
| 17:34:25 | → | Lycurgus joins (~juan@cpe-45-46-140-49.buffalo.res.rr.com) |
| 17:34:38 | × | eggplantade quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection) |
| 17:35:46 | × | drlkf quits (~drlkf@2001:41d0:a:62bb::1) (Quit: q=) |
| 17:35:53 | → | drlkf joins (~drlkf@2001:41d0:a:62bb::1) |
| 17:35:54 | × | wei2912 quits (~wei2912@112.199.250.21) (Quit: Lost terminal) |
| 17:36:51 | × | sub0 quits (~bc8150b8@217.29.117.252) (Quit: http://www.okay.uz/ (Session timeout)) |
| 17:38:11 | <Lycurgus> | by choice rather than genetic or semantic i take it |
| 17:38:46 | → | eggplantade joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) |
| 17:38:58 | <Lycurgus> | which is same as by derivation or logical relation |
| 17:39:13 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 17:42:52 | → | econo joins (uid147250@user/econo) |
| 17:43:33 | → | f-a joins (~f-a@151.34.27.3) |
| 17:44:14 | <f-a> | I am looking for a package that converts 17 to «seventeen», but I am having trouble finding it on Hackage. |
| 17:45:47 | <deejaytee> | just for that specific case, or do you want pronunciations for other numbers, too? |
| 17:45:57 | × | azeem quits (~azeem@dynamic-adsl-94-34-48-122.clienti.tiscali.it) (Ping timeout: 245 seconds) |
| 17:46:02 | <DigitalKiwi> | https://hackage.haskell.org/package/ordinal |
| 17:46:34 | × | jippiedoe quits (~david@2a02-a44c-e14e-1-dfb3-4ecf-f29f-159d.fixed6.kpn.net) (Ping timeout: 258 seconds) |
| 17:47:04 | Lycurgus | conjectured a ffi |
| 17:48:19 | <f-a> | any from ℕ, deejaytee |
| 17:48:35 | → | azeem joins (~azeem@176.200.220.247) |
| 17:48:42 | arkho | is now known as ccc |
| 17:48:47 | → | burnsidesLlama joins (~burnsides@dhcp168-023.wadham.ox.ac.uk) |
| 17:48:49 | × | burnsidesLlama quits (~burnsides@dhcp168-023.wadham.ox.ac.uk) (Remote host closed the connection) |
| 17:48:55 | → | burnsidesLlama joins (~burnsides@dhcp168-023.wadham.ox.ac.uk) |
| 17:49:14 | <deejaytee> | hmm ordinal looks good, shameless plug for my conway-wechsler pronouncer here https://github.com/dylan-thinnes/conway-wechsler |
| 17:49:17 | ccc | is now known as arkho |
| 17:49:27 | <deejaytee> | if you actually need N, that is |
| 17:49:57 | <deejaytee> | I'd hazard that ordinal is actually what you're looking for, though :P |
| 17:50:59 | × | werneta quits (~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net) (Remote host closed the connection) |
| 17:52:48 | <DigitalKiwi> | П> import Text.Numerals |
| 17:52:50 | <DigitalKiwi> | П> Data.Text.IO.putStrLn (toCardinal english 17) |
| 17:52:52 | <DigitalKiwi> | seventeen |
| 17:52:58 | <DigitalKiwi> | TESTS PASS SHIP IT |
| 17:53:08 | <deejaytee> | hahaha |
| 17:53:11 | <davean> | Oh THATS where that bullshit comes from! |
| 17:53:32 | <davean> | I've seen programs switch into that completely incoherent numbering system occasionally with large numbers and never knew why! |
| 17:53:55 | <f-a> | why ordinals, deejaytee ? |
| 17:54:06 | <davean> | f-a: because it does the thing you asked for |
| 17:54:35 | × | burnsidesLlama quits (~burnsides@dhcp168-023.wadham.ox.ac.uk) (Remote host closed the connection) |
| 17:54:43 | × | azeem quits (~azeem@176.200.220.247) (Read error: Connection reset by peer) |
| 17:54:46 | × | doyougnu quits (~user@c-73-25-202-122.hsd1.or.comcast.net) (Remote host closed the connection) |
| 17:54:51 | <deejaytee> | ^ also, DigitalWiki mentioned it, not me |
| 17:54:54 | <DigitalKiwi> | nix-shell -p cabal-install "haskellPackages.ghcWithPackages (x: with x; [ ordinal ])" |
| 17:55:02 | → | burnsidesLlama joins (~burnsides@dhcp168-023.wadham.ox.ac.uk) |
| 17:55:52 | → | azeem joins (~azeem@dynamic-adsl-94-34-48-122.clienti.tiscali.it) |
| 17:56:11 | → | dme2 joins (~dme2@67.205.140.199) |
| 17:56:41 | × | drlkf quits (~drlkf@2001:41d0:a:62bb::1) (Quit: q=) |
| 17:56:41 | <f-a> | davean: ordinal numbers are "first", "second", "third"; cardinal "one", "two", "three"? |
| 17:56:49 | → | drlkf joins (~drlkf@2001:41d0:a:62bb::1) |
| 17:56:55 | <deejaytee> | davean: you can try it out on https://dylant.org/conway-wechsler/ and see it spit out some crazy stuff |
| 17:57:06 | <deejaytee> | I like it, but just as curiosity |
| 17:57:12 | <davean> | deejaytee: I mean I saw it |
| 17:57:26 | <davean> | Thats how I know it matches the incoherent bullshit I've seen before :-p |
| 17:57:29 | <deejaytee> | ah sorry |
| 17:58:07 | <DigitalKiwi> | note that i just found that on hackage today and that is the extent to which i have used it lol |
| 17:58:09 | <deejaytee> | yeah the choice of ones, then tens, then hundreds is a bit wack |
| 17:58:34 | → | shailangsa joins (~shailangs@host86-185-98-7.range86-185.btcentralplus.com) |
| 17:58:39 | <deejaytee> | and some of the inflection is just unnecessary |
| 17:59:06 | × | burnsidesLlama quits (~burnsides@dhcp168-023.wadham.ox.ac.uk) (Ping timeout: 240 seconds) |
| 17:59:20 | → | wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
| 17:59:24 | <DigitalKiwi> | there are probably a few others too that's just the one i found/tested fastest lol |
| 17:59:25 | <deejaytee> | (yeah, there I said it, I ain't afraid of Conway's ghost) |
| 18:01:35 | <deejaytee> | davean: where else have you seen this implemented? I'd love to compare, but there are only a few impls on github |
| 18:02:20 | × | drd quits (~drd@2001:b07:a70:9f1f:1562:34de:f50f:77d4) (Ping timeout: 250 seconds) |
| 18:03:13 | → | mrianbloom joins (sid350277@id-350277.charlton.irccloud.com) |
| 18:03:55 | <davean> | I've seen it in programs randomly, and then I avoided the programs, uh, so not entirely sure? |
| 18:05:13 | <mrianbloom> | Is there a random library for accelerate that produces random numbers on the GPU? |
| 18:06:21 | <DigitalKiwi> | https://hackage.haskell.org/package/mwc-random-accelerate |
| 18:06:54 | → | justsurfin243590 joins (~justsurfi@cpe-98-146-133-53.natnow.res.rr.com) |
| 18:07:42 | × | forell quits (~forell@user/forell) (Ping timeout: 272 seconds) |
| 18:07:49 | <mrianbloom> | My impression was that that one actually produces the randoms on the CPU and then moves them into an accelerate array. Perhaps I got that wrong. |
| 18:09:19 | × | eggplantade quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection) |
| 18:09:25 | <DigitalKiwi> | oh, hmm |
| 18:10:17 | × | Lycurgus quits (~juan@cpe-45-46-140-49.buffalo.res.rr.com) (Quit: Exeunt) |
| 18:10:31 | → | Atum_ joins (IRC@user/atum/x-2392232) |
| 18:11:06 | × | markpythonicbitc quits (~textual@50.228.44.6) (Quit: My MacBook Air has gone to sleep. ZZZzzz…) |
| 18:13:28 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 272 seconds) |
| 18:13:31 | <mrianbloom> | I have lots of other Accelerate questions if you are interested :) |
| 18:14:16 | tomsmeding | can possibly answer some accelerate questions, depending on what kind |
| 18:16:16 | <mrianbloom> | The two I have are 1. Is it easy to integrate a CUDA kernel into a program which is otherwise written in Acc? 2. How do you access the elements of a SIMD vector inside an accelerate program? |
| 18:18:13 | <tomsmeding> | mrianbloom: the base API to add foreign elements to an accelerate programming running on the gpu is https://hackage.haskell.org/package/accelerate-llvm-ptx-1.3.0.0/docs/Data-Array-Accelerate-LLVM-PTX-Foreign.html ; I don't know if there is a higher-level wrapper though (this API is very low-level) |
| 18:19:13 | <mrianbloom> | I see. That's really helpful. I'll check that out. |
| 18:19:54 | <tomsmeding> | (there was a paper on that foreign function interface; can send that too if you wish) |
| 18:20:39 | <mrianbloom> | I appreciate it. |
| 18:21:10 | <tomsmeding> | mrianbloom: this is the official page: https://link.springer.com/chapter/10.1007%2F978-3-319-04132-2_10 |
| 18:21:22 | <tomsmeding> | I can send a PDF too if you don't have access :) |
| 18:22:00 | → | sweater joins (~sweater@206.81.18.26) |
| 18:24:11 | <mrianbloom> | I need that actually (not popping up on google...) |
| 18:24:35 | <DigitalKiwi> | it's on libgen.is lol |
| 18:28:29 | <tomsmeding> | mrianbloom: regarding SIMD vectors: it seems you should use V2/V3/V4/V8/V16 like the T* and I* pattern synonyms |
| 18:28:37 | <tomsmeding> | though I've never used this personally yet |
| 18:29:00 | → | doyougnu joins (~user@c-73-25-202-122.hsd1.or.comcast.net) |
| 18:29:14 | <mrianbloom> | I see, is that part of the standard accelerate library? |
| 18:29:27 | <tomsmeding> | (The Vec* pattern synonyms are not what you should use I believe) |
| 18:29:33 | <tomsmeding> | mrianbloom: https://hackage.haskell.org/package/accelerate-1.3.0.0/docs/Data-Array-Accelerate.html#v:V2 |
| 18:29:36 | <tomsmeding> | just undocumented lol |
| 18:29:48 | <tomsmeding> | they are generated using templatehaskell |
| 18:29:49 | <aveltras[m]> | I'd like to create a basic program which takes as input a directory of pictures and outputs an image with all pictures put on top of each other and each picture having an empty frame of the same size on the side of it. Any recommended image manipulation library for achieving this ? |
| 18:30:18 | → | chris joins (~chris@81.96.113.213) |
| 18:30:23 | chris | is now known as Guest4121 |
| 18:30:47 | <mrianbloom> | tomsmedling: great, those are all good leads, I appreciate it. |
| 18:31:36 | → | forell joins (~forell@user/forell) |
| 18:32:45 | → | burnsidesLlama joins (~burnsides@dhcp168-023.wadham.ox.ac.uk) |
| 18:33:43 | × | justsomeguy quits (~justsomeg@user/justsomeguy) (Ping timeout: 258 seconds) |
| 18:34:52 | × | Guest4121 quits (~chris@81.96.113.213) (Ping timeout: 258 seconds) |
| 18:35:02 | <DigitalKiwi> | tom's medling |
| 18:35:20 | × | Atum_ quits (IRC@user/atum/x-2392232) (Quit: Atum_) |
| 18:35:25 | → | chris joins (~chris@81.96.113.213) |
| 18:35:27 | tomsmeding | meddles in stuff |
| 18:35:29 | chris | is now known as Guest3788 |
| 18:36:16 | <DigitalKiwi> | tom smeding is medling |
| 18:36:40 | → | Guest38 joins (~Guest38@2a02:3035:807:4e8c:ec4d:e1f6:4f08:1e6e) |
| 18:37:05 | <tomsmeding> | or middling? |
| 18:37:29 | <DigitalKiwi> | now you're definitely medling |
| 18:38:12 | × | Guest38 quits (~Guest38@2a02:3035:807:4e8c:ec4d:e1f6:4f08:1e6e) (Client Quit) |
| 18:38:13 | × | forell quits (~forell@user/forell) (Quit: ZNC - https://znc.in) |
| 18:38:16 | → | goepsilongo joins (~chacho@2603-7000-ab00-62ed-0000-0000-0000-0bd0.res6.spectrum.com) |
| 18:38:23 | <DigitalKiwi> | https://www.thefreedictionary.com/meddling |
| 18:38:30 | <DigitalKiwi> | :( |
| 18:39:11 | × | burnsidesLlama quits (~burnsides@dhcp168-023.wadham.ox.ac.uk) (Ping timeout: 252 seconds) |
| 18:39:12 | → | mastarija joins (~mastarija@78-3-212-215.adsl.net.t-com.hr) |
| 18:39:33 | → | Pickchea joins (~private@user/pickchea) |
| 18:39:44 | × | Guest3788 quits (~chris@81.96.113.213) (Ping timeout: 252 seconds) |
| 18:40:01 | <tomsmeding> | mixing thoroughly? That I surely do |
| 18:40:29 | <DigitalKiwi> | this is like the time i misspelled emigrate with 3 m's |
| 18:40:51 | <DigitalKiwi> | because i thought it had 2 but typoed an extra one lol |
| 18:43:28 | <DigitalKiwi> | tomsmeding is a mojito |
| 18:44:20 | <tomsmeding> | a small magic charm, that's a nice thing to be :) |
| 18:45:16 | <DigitalKiwi> | A mojito is a Cuban rum-based cocktail. |
| 18:45:55 | × | MoC quits (~moc@user/moc) (Quit: Konversation terminated!) |
| 18:45:59 | <DigitalKiwi> | you medle the mint |
| 18:46:16 | <DigitalKiwi> | with a muddler |
| 18:46:18 | <DigitalKiwi> | lol |
| 18:46:59 | <tomsmeding> | "Origin: 1930s Cuban Spanish, from mojo + diminutive suffix -ito." -- mojo: "A magic charm, talisman, or spell." |
| 18:47:06 | <DigitalKiwi> | and then your bartender beats you over the head with it; or maybe that's just me ;( |
| 18:47:07 | <tomsmeding> | ok I'll stop |
| 18:47:29 | <DigitalKiwi> | one of my favorite bars to order mojitos at was called mojo smokehouse and ales |
| 18:49:41 | → | drd joins (~drd@93-39-151-19.ip76.fastwebnet.it) |
| 18:52:19 | <DigitalKiwi> | anyone want to talk about haskell |
| 18:53:05 | <davean> | DigitalKiwi: Does it come with mojitos? |
| 18:54:13 | <DigitalKiwi> | fresh out of rum all i have is tea ;( |
| 18:54:36 | <DigitalKiwi> | err out of tea now too |
| 18:55:06 | → | thyriaen joins (~thyriaen@dynamic-078-055-141-033.78.55.pool.telefonica.de) |
| 18:56:01 | <DigitalKiwi> | davean: are you in a meeting today lol drakonis and you and i were talking about guix... |
| 18:56:12 | <drakonis> | i am clearly not in a meeting |
| 18:56:53 | <davean> | I like tea, how about we talk about tea |
| 18:57:05 | <davean> | DigitalKiwi: Haha, I should be but I'm not! |
| 18:57:14 | <davean> | Whats the Haskell story on guix? |
| 18:57:34 | <drakonis> | hmm |
| 18:57:56 | <delYsid> | hmm, plain old [] vs Unboxed Vector and ST. I know the answer is probably "you have to try", but maybe you guys have some tipps before I start. I want to get the memory usage (GC) and runtime down of my chess legal move generator. Currently, it generates a [Ply] where newtype Ply = Ply Word16. I am suspecting the list is adding quite a lot to the memory usage, so I was hoping Unboxed Vector could be better? My plan: "new" a vector |
| 18:57:57 | <drakonis> | the haskell story seems to be pretty fine right now? |
| 18:57:57 | <delYsid> | with sufficient size, generate all moves "write"ing the entries to the vector and inc'ing an STRef, and slice the used part of the MVector off at the end. Can this be faster/better then plain "genMove : ms" way of just adding to head? |
| 18:58:01 | <drakonis> | they recently upgraded ghc |
| 18:58:02 | <DigitalKiwi> | can i do a guix command ot pull in a ghci with an hackage packges |
| 18:58:06 | <drakonis> | yes |
| 18:58:12 | <drakonis> | ish |
| 18:58:21 | <davean> | drakonis: Of course you don't have to try, this can be directly computed |
| 18:58:41 | <drakonis> | there isnt a single file containing all of hackage |
| 18:58:51 | <davean> | drakonis: and yes, a vector would be far smaller for any significant sized list |
| 18:58:57 | <drakonis> | wrong ping btw |
| 18:59:13 | <davean> | bah yah |
| 18:59:17 | <DigitalKiwi> | if i learn racket will that help with guix heh |
| 18:59:21 | <drakonis> | probably? |
| 18:59:32 | <drakonis> | at least with getting acclimated to a lispy lang |
| 18:59:45 | <davean> | drakonis: so whats this "ish"ness? |
| 18:59:51 | <DigitalKiwi> | https://www.coursera.org/learn/programming-languages has three parts and racket is one of them lol |
| 18:59:57 | <delYsid> | davean: I guess you were talking to me? |
| 19:00:02 | <davean> | delYsid: I was |
| 19:00:09 | → | Testtesttesz joins (~Testtestt@p5b05e91c.dip0.t-ipconnect.de) |
| 19:00:18 | <drakonis> | the ishness is that there isnt a kitchen sink containing every hackage package |
| 19:00:28 | <sm> | srid: that looks nice! |
| 19:00:43 | <drakonis> | you'll definitely have a sizeable amount of packages but not everything |
| 19:00:47 | <monochrom> | If list laziness is important to your algorithm, vector will kill it. |
| 19:00:57 | <drakonis> | you can invoke a hackage importer if there's anything you dont have available |
| 19:01:02 | <drakonis> | you want that isnt packaged yet |
| 19:01:26 | <davean> | drakonis: I use to program scheme, back around when the Brown group was renaming stuff, its a nice, small language, but I moved on because I thought it ended up too messy with too much local semantics - how varies are the semantics in guix's implimentation and how much do they have 1000 options with a horrible combinatorial number of interactions for functions? |
| 19:01:51 | <drakonis> | clean, really. |
| 19:01:58 | <delYsid> | monochrom: Thats another argument against [], I definitely have a finite result, and it typically only has aroun 20 elements. |
| 19:02:10 | <drakonis> | guix runs on top of guile |
| 19:02:23 | <davean> | drakonis: well I'm less worried about containing, and more about solving |
| 19:02:33 | <drakonis> | hmm |
| 19:02:35 | <drakonis> | i see |
| 19:02:43 | <delYsid> | So my thinking was, 20*2 = 40 bytes for an Unboxed Vector of Ply is probably *a lot* less then [Ply] with 20 elements memorywise? |
| 19:02:58 | <drakonis> | 1000 options with a horrible combinatorial explosion? |
| 19:03:01 | <DigitalKiwi> | (in that course the SML exercises were easy to covnert to haskell too i did them in both lol) |
| 19:03:08 | <drakonis> | i'm not aware of that |
| 19:03:12 | <davean> | I'm happy to add the packages I care about in some local overlay - if they have a good story for that - but I need it to get consistent sets, and I'm interested in how it manages said sets |
| 19:03:29 | <drakonis> | oh they have a really good story for that |
| 19:03:31 | <drakonis> | btw |
| 19:03:34 | <drakonis> | the best one |
| 19:03:53 | <drakonis> | by far and wide the best one right now |
| 19:03:59 | <davean> | drakonis: the 1000 options thing was an exageration, just that instead of composing functions, functions tended to take options to change their behavior, due to the nature of how scheme composes |
| 19:04:06 | <davean> | drakonis: so what is the story? |
| 19:04:21 | <drakonis> | i'll refer to the docs to this |
| 19:04:22 | <monochrom> | Or rather, how scheme doesn't compose. |
| 19:04:32 | <drakonis> | but it has channels |
| 19:04:48 | <monochrom> | Scheme has paid only lips service to function composition and currying. |
| 19:04:49 | <drakonis> | so, you want to roll out your own repo? you just add it to the channels list and pull |
| 19:05:11 | <drakonis> | oh, has it? |
| 19:05:13 | → | jippiedoe joins (~david@77-171-152-62.fixed.kpn.net) |
| 19:05:21 | × | jippiedoe quits (~david@77-171-152-62.fixed.kpn.net) (Client Quit) |
| 19:05:26 | <drakonis> | function composition is a weird call out |
| 19:05:32 | <drakonis> | because scheme does that really well |
| 19:05:58 | <monochrom> | No, function composition is unusable without currying. |
| 19:06:00 | <drakonis> | https://guix.gnu.org/manual/en/html_node/Channels.html davean |
| 19:06:34 | <monochrom> | Look at how we in Haskell write "takeWhile (\x -> x<5) . filter p . map f" all the time. |
| 19:06:40 | <monochrom> | Try it in Scheme. |
| 19:06:56 | <drakonis> | idgi |
| 19:07:53 | <monochrom> | Scheme's strength is "(+ 1 3 4 5 6)", "(+)", and "(apply + mylist)". |
| 19:07:56 | <drakonis> | davean: basically, you declare the channel pointing to the repository, be it local or online and it'll let you pull from it |
| 19:08:01 | <drakonis> | you realize you can chain them together, right? |
| 19:08:12 | <drakonis> | they don't need to be separate operations |
| 19:08:24 | <drakonis> | again, that's a weird thing to get hung up on |
| 19:08:28 | <monochrom> | But varargness is exactly why Scheme makes currying difficult. |
| 19:08:43 | <drakonis> | i don't see how that is a issue with the lisp family? |
| 19:09:08 | <drakonis> | http://people.cs.aau.dk/~normark/prog3-03/html/notes/higher-order-fu-note-curry-scheme.html |
| 19:09:09 | → | eggplantade joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) |
| 19:09:57 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 19:10:09 | <DigitalKiwi> | monochrom: drakonis isn't here to defend scheme against haskell lol guix vs nix wrt to managing haskell ;p |
| 19:10:31 | <drakonis> | i'm here for explaining that guix is better at wrangling haskell than nix |
| 19:10:33 | <monochrom> | OK, s/Scheme/guix/ |
| 19:11:04 | <drakonis> | guix is guile scheme but still not here to wrestle you over the merits of scheme vs haskell |
| 19:11:13 | × | Testtesttesz quits (~Testtestt@p5b05e91c.dip0.t-ipconnect.de) (Remote host closed the connection) |
| 19:11:37 | <davean> | drakonis: Ok, so far this channel story seems identicalto nixos - but the problem I've encountered is inter-package references |
| 19:11:46 | <drakonis> | hmm |
| 19:11:50 | <drakonis> | do explain? |
| 19:12:26 | <drakonis> | inter-package references? |
| 19:12:41 | <drakonis> | you mean like importing dependencies? |
| 19:12:47 | → | lavaman joins (~lavaman@98.38.249.169) |
| 19:12:55 | <DigitalKiwi> | sounded like some jailbreak usage in haskell4nix pulled in a version it shouldn't have |
| 19:12:57 | <davean> | if I have channel A, with package A.a which depends on b, it gets b from A.b but if I have channel B with package B.b, which provides that b that I need dealing with A.a referencing the wrong b ends up ... complicated. |
| 19:13:02 | → | mattf_ joins (~matt@2600:1700:38c5:2100::37) |
| 19:13:03 | <drakonis> | oh |
| 19:13:17 | <drakonis> | that's because each channel normally has a specific module namespace |
| 19:13:22 | <davean> | So I end up not able to use A.a and have to duplicate A.a and quickly I have to run my own entire system |
| 19:13:32 | <davean> | so I end up not using channels and instead a clone of the origional channel |
| 19:13:33 | <drakonis> | define-module (gnu packages haskell-apps) |
| 19:13:36 | <davean> | because thats the only sane option |
| 19:14:00 | <drakonis> | basically, you can import (gnu packages haskell-apps) and gain access to any packages there |
| 19:14:10 | <DigitalKiwi> | does guix have ghcjs heh https://github.com/NixOS/nixpkgs/issues/130584 |
| 19:14:52 | <drakonis> | it seems to have some things with dependencies here |
| 19:15:15 | <drakonis> | davean: that's not a problem really |
| 19:15:38 | <drakonis> | guile has a module system, so you have to explicitly bring them into scope |
| 19:15:55 | × | mousey quits (~skymouse@gateway/tor-sasl/mousey) (Ping timeout: 244 seconds) |
| 19:15:55 | → | forell joins (~forell@user/forell) |
| 19:15:57 | → | futty joins (~futty@c83-252-75-55.bredband.tele2.se) |
| 19:16:02 | <davean> | drakonis: right thats where the problem COMES from |
| 19:16:10 | <drakonis> | so A.a cannot reference the wrong package |
| 19:16:12 | <davean> | my overlays doen't end up compatible with the base systems stuff |
| 19:16:18 | <davean> | because I need newer stuff down in the stack |
| 19:16:22 | <drakonis> | okay |
| 19:16:24 | <davean> | drakonis: Right! Thats the problem! |
| 19:16:24 | <drakonis> | that's easy |
| 19:16:41 | <drakonis> | here's a fun bit you can do |
| 19:16:58 | × | lavaman quits (~lavaman@98.38.249.169) (Ping timeout: 240 seconds) |
| 19:16:59 | × | Null_A quits (~null_a@2601:645:8700:2290:7da4:a1bb:6c20:daba) (Remote host closed the connection) |
| 19:17:12 | <drakonis> | you can redirect a package definition to point to a specific definition |
| 19:17:16 | <drakonis> | and have everything else inherit off it |
| 19:17:34 | → | mousey joins (~skymouse@gateway/tor-sasl/mousey) |
| 19:17:34 | → | Null_A joins (~null_a@2601:645:8700:2290:7da4:a1bb:6c20:daba) |
| 19:17:38 | <davean> | and the inheriting works automaticly? I don't end up having to patch every package in the packet set? |
| 19:17:51 | <drakonis> | yes? |
| 19:18:00 | <davean> | That would be nice |
| 19:18:04 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 272 seconds) |
| 19:18:09 | <drakonis> | (define-public ghc ghc-8) |
| 19:18:12 | × | mattf_ quits (~matt@2600:1700:38c5:2100::37) (Quit: Leaving) |
| 19:18:17 | <drakonis> | this makes ghc point towards ghc-8 |
| 19:18:39 | × | Null_A quits (~null_a@2601:645:8700:2290:7da4:a1bb:6c20:daba) (Remote host closed the connection) |
| 19:18:50 | <drakonis> | then there's the ability to directly inherit all of the definition and modify where necessary using (inherit <package name>) |
| 19:18:53 | → | Null_A joins (~null_a@2601:645:8700:2290:7da4:a1bb:6c20:daba) |
| 19:21:00 | <drakonis> | https://github.com/jsoo1/guix-channel someone's haskell heavy channel i found just now |
| 19:21:14 | → | waleee joins (~waleee@2001:9b0:216:8200:d457:9189:7843:1dbd) |
| 19:21:33 | → | falafel joins (~falafel@pool-96-255-70-50.washdc.fios.verizon.net) |
| 19:21:49 | <davean> | drakonis: So this looks like it needs to specificly have exactly one version of a package? How does multiple versions happen? |
| 19:24:28 | <drakonis> | by making the build system use a different ghc version i suppose? |
| 19:24:45 | <drakonis> | it otherwise targets whatever's the current highest ghc version |
| 19:24:56 | <drakonis> | whatever ghc points to |
| 19:24:58 | <davean> | I mean also cabal packages |
| 19:25:07 | <drakonis> | ah |
| 19:25:14 | <davean> | of course need different GHCs, and I need different dependencies |
| 19:26:18 | <drakonis> | the docs state that you can do this |
| 19:26:21 | <drakonis> | "Which Haskell compiler is used can be specified with the ‘#:haskell’ parameter which defaults to ‘ghc’." |
| 19:27:01 | <davean> | sure, thats the GHC, but the second half |
| 19:27:06 | <drakonis> | it builds using cabal |
| 19:27:08 | <davean> | how does it make those decisions and how are they handled? |
| 19:27:10 | <drakonis> | right |
| 19:27:13 | <davean> | Hum, it does? |
| 19:27:15 | <drakonis> | its cabal based |
| 19:27:19 | → | forell_ joins (~forell@host-178-216-90-220.sta.tvknaszapraca.pl) |
| 19:27:20 | <drakonis> | also in the docs |
| 19:27:23 | <davean> | it looks like it specifies the Haskell pakcages its self |
| 19:27:23 | × | forell quits (~forell@user/forell) (Ping timeout: 258 seconds) |
| 19:27:32 | <davean> | and only one version each |
| 19:27:36 | <drakonis> | let me get you the docs |
| 19:28:18 | <drakonis> | a quick caveat |
| 19:28:26 | <drakonis> | people don't typically use guix for its haskell wrangling features |
| 19:28:33 | × | forell_ quits (~forell@host-178-216-90-220.sta.tvknaszapraca.pl) (Changing host) |
| 19:28:33 | → | forell_ joins (~forell@user/forell) |
| 19:28:45 | <drakonis> | so its not like it will cover every use case |
| 19:29:16 | <drakonis> | http://guix.gnu.org/en/manual/devel/en/guix.html#index-haskell_002dbuild_002dsystem |
| 19:29:20 | <davean> | sure I'm just talking about the basics of getting a consistent package set |
| 19:29:27 | <drakonis> | This variable is exported by (guix build-system haskell). It implements the Cabal build procedure used by Haskell packages |
| 19:29:34 | forell_ | is now known as forell |
| 19:29:42 | × | thyriaen quits (~thyriaen@dynamic-078-055-141-033.78.55.pool.telefonica.de) (Remote host closed the connection) |
| 19:29:51 | <drakonis> | let me point you to a haskell package definition real quick |
| 19:29:56 | <davean> | Thats HOW it builds them, not how it chooses WHAT to build |
| 19:30:00 | <drakonis> | okay |
| 19:30:15 | <drakonis> | https://git.savannah.gnu.org/cgit/guix.git/tree/gnu/packages/haskell-xyz.scm#n751 |
| 19:31:07 | <davean> | right so there seems to only be a single version there |
| 19:31:16 | <davean> | when thats not consistent with what I need, what do I do? |
| 19:31:22 | × | futty quits (~futty@c83-252-75-55.bredband.tele2.se) (Ping timeout: 245 seconds) |
| 19:31:55 | <drakonis> | you have the ability to create a copy of it with inherit and then redefine the metadata where needed |
| 19:32:14 | <drakonis> | ie: which ghc version you want to use for the build or the package version alongside the hash |
| 19:32:22 | <davean> | oh, but I have to write the entire build plan by hand? |
| 19:32:26 | <drakonis> | god no |
| 19:32:31 | <drakonis> | there's importers for that |
| 19:32:40 | → | lavaman joins (~lavaman@98.38.249.169) |
| 19:33:07 | <drakonis> | you can also point to a specific version you want to generate a definition for |
| 19:33:19 | <davean> | ... everything in my build plan? |
| 19:33:27 | <davean> | Whatever that is |
| 19:33:36 | <davean> | which there isn't just one of - it'll at the very least vary by GHC |
| 19:34:36 | <drakonis> | the output of guix import hackage patience https://paste.debian.net/1206476/ |
| 19:34:36 | × | azeem quits (~azeem@dynamic-adsl-94-34-48-122.clienti.tiscali.it) (Read error: Connection reset by peer) |
| 19:34:56 | × | f-a quits (~f-a@151.34.27.3) (Quit: leaving) |
| 19:35:05 | <drakonis> | also relevant |
| 19:35:08 | → | azeem joins (~azeem@dynamic-adsl-94-34-48-122.clienti.tiscali.it) |
| 19:35:20 | <drakonis> | you can invoke some silly metaprogramming to do package generation |
| 19:35:44 | <drakonis> | like generating definitions for packages that use different ghc releases |
| 19:35:47 | <davean> | Hum, this doesn't say what it depends on though, which is part of my question |
| 19:36:27 | <drakonis> | that's because it doesnt have any dependencies i guess |
| 19:36:31 | <drakonis> | its a leaf package |
| 19:36:44 | <drakonis> | it is however a dependency for other things |
| 19:36:46 | <davean> | but it does |
| 19:36:54 | <davean> | base and containers |
| 19:37:53 | <drakonis> | isnt those two already included with ghc? |
| 19:38:07 | <davean> | I mean sure, but not the ones I want usually |
| 19:38:10 | <davean> | Base sure |
| 19:38:12 | <davean> | but not containers |
| 19:38:33 | <davean> | These are the critical parts of getting a consistent build |
| 19:38:48 | <drakonis> | you can declare dependencies mind you |
| 19:38:51 | <davean> | and some GHCs have different base requirements |
| 19:38:59 | <davean> | so this doesn't tell me if that package will work |
| 19:39:14 | <drakonis> | https://git.savannah.gnu.org/cgit/guix.git/tree/gnu/packages/haskell-xyz.scm#n15663 |
| 19:39:16 | <drakonis> | here |
| 19:39:24 | <davean> | So base is fixed, and may or may not work - this can't decide which "patience" to use, and containers is nto at all fixed |
| 19:39:36 | <davean> | do it fails for both base *and* containers |
| 19:39:43 | <davean> | in different ways |
| 19:39:59 | → | futty joins (~futty@c83-252-75-55.bredband.tele2.se) |
| 19:40:53 | jackhill | is now known as KM4MBG |
| 19:41:56 | <davean> | drakonis: that lists which ones it has, not which versions? |
| 19:42:02 | <davean> | So how can it get it right? |
| 19:42:17 | <drakonis> | okay i think you're missing a fundamental part of how both nix and guix work |
| 19:42:51 | <drakonis> | if you look at the definitions, you'll see the version it is pinned to |
| 19:43:09 | <davean> | I see the version that specific instance is pinned to |
| 19:43:11 | × | hexeme quits (~hexeme@user/hexeme) (Quit: co'o ro do) |
| 19:43:24 | × | Erutuon quits (~Erutuon@user/erutuon) (Ping timeout: 272 seconds) |
| 19:43:29 | <davean> | which is great and all |
| 19:43:39 | <drakonis> | https://git.savannah.gnu.org/cgit/guix.git/tree/gnu/packages/haskell-xyz.scm#n15619 |
| 19:44:07 | <drakonis> | ghc-zlib is pinned to 0.6.2.1 |
| 19:44:21 | → | hexeme joins (~hexeme@user/hexeme) |
| 19:44:36 | <davean> | Sure, but sometimes I need another ghc-zlib, I know how to have two ghc-zlibs and pick between them in nix, how do you do it in guix? |
| 19:45:14 | <davean> | and when I pull in something that depends on ghc-zlib in a further up package, how do I get all the right decisions? |
| 19:45:25 | <davean> | do I need a combinatorical number of packages that specify all possible versions? |
| 19:46:13 | <drakonis> | okay so you just do something like (define-public ghc90-zlib (inherit ghc-zlib) (build-system haskell-build-system #:haskell ghc90)) |
| 19:46:15 | <drakonis> | cool |
| 19:46:29 | <mastarija> | Need some advice for a library. |
| 19:46:32 | <davean> | but it has nothing to do with ghc90 |
| 19:46:38 | <drakonis> | its a example code snipper |
| 19:46:40 | <drakonis> | snippet |
| 19:46:45 | <mastarija> | Say that I have a type for which I already have Semigroup, Monoid, Functor, Applicative and Monad. It could benefit from the "Alternative", but I can't make the "empty" value (without complications). |
| 19:46:48 | <drakonis> | alternatively |
| 19:46:51 | <drakonis> | right |
| 19:46:55 | <drakonis> | you want two different versions of it |
| 19:46:58 | <drakonis> | one sec |
| 19:46:58 | → | burnsidesLlama joins (~burnsides@dhcp168-023.wadham.ox.ac.uk) |
| 19:47:05 | <mastarija> | I could use the "Alt" from "semigrupoids" which doesn't need the "empty", but that's a lot of extra dependencies (there's only "base" so far). |
| 19:47:09 | <mastarija> | On the other hand, if the inner type is a "Monoid", I could also make an "Alt" like combinator, but I'm not sure what typeclass would that be, other than "Monoid" which would require using the "newtype" and given the nature of my library, that could be a pain in the ass. |
| 19:47:16 | <mastarija> | So, do I: |
| 19:47:18 | <mastarija> | 1. Create new combinators + their operator aliases, e.g. <?> for "Alt" like operation and <+> or <#> for "Alt" + "Monoid" operation |
| 19:47:21 | <mastarija> | 2. Add a flag to my package which allows the user to choose if he wants the "semigrupoids" package and "Alt" (but then <#> is left hanging) |
| 19:47:24 | <mastarija> | 3. Combination of both, and make <?> an alias of <!> from "semigrupoids" when the flag is active (and <#> is still left hanging alone without a typeclass) |
| 19:47:33 | <drakonis> | as far as i'm concerned, a package can have multiple versions |
| 19:47:50 | <drakonis> | a single definition can be made available with multiple versions |
| 19:47:54 | <drakonis> | let me see if i can find any |
| 19:48:57 | <sclv> | mastarija: you can declare a constraint that says Monoid a => Alternative (YourType a) no? |
| 19:49:07 | <drakonis> | found it |
| 19:49:12 | → | Atum_ joins (IRC@user/atum/x-2392232) |
| 19:49:17 | <mastarija> | sclv, No |
| 19:49:24 | <sclv> | why |
| 19:49:30 | <mastarija> | Alternative takes * -> * |
| 19:49:34 | <mastarija> | You have * |
| 19:49:36 | <mastarija> | No? |
| 19:49:52 | <sclv> | oh right, braindead |
| 19:50:06 | <mastarija> | But my point is, both monoidal and non monoidal Alt would be useful |
| 19:50:17 | <mastarija> | They could have different semantics, which are both useful |
| 19:50:34 | <drakonis> | davean: anyways, you can just have the definition inherit the existing one and just change the hash and version to another |
| 19:50:42 | <sclv> | erm you can do Monoid a => Monoid (YourType a) which gets you something close to what you want |
| 19:50:56 | <davean> | drakonis: right, but you'd have to do that for every combinatorical combination |
| 19:50:57 | <mastarija> | Yes, but that is already taken :D |
| 19:51:03 | <drakonis> | you can use functions for that lol |
| 19:51:14 | <mastarija> | sclv, there's also a very logical Monoid instance |
| 19:51:15 | <davean> | drakonis: right, so functions don't reify? |
| 19:51:21 | <davean> | drakonis: thats part of the question |
| 19:51:28 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 19:51:38 | → | chris joins (~chris@81.96.113.213) |
| 19:51:42 | chris | is now known as Guest802 |
| 19:51:44 | <sclv> | ok in that case i'd just add new combinators and not even bother with operator aliases tbh |
| 19:51:50 | <sclv> | and leave that to consumers of my lib |
| 19:51:57 | <drakonis> | right, scheme does not behave the way that haskell does |
| 19:52:30 | <drakonis> | reifying functions though? |
| 19:52:32 | <mastarija> | sclv, yes, I wouldn't want to pollute the space with new operators, |
| 19:52:49 | <mastarija> | but then again... }) |
| 19:52:55 | <davean> | drakonis: what does this have to do with how haskell behaves? |
| 19:53:05 | <davean> | And I know hwo scheme works |
| 19:53:05 | <sclv> | its not like there's a lot of functions that people widely use that abstract well over Alternative or Alt, or certainly not enough that having those instances is really a killer feature for end users |
| 19:53:12 | <davean> | I'm asking how *guix* works |
| 19:53:19 | <drakonis> | it works like scheme does |
| 19:53:29 | <sclv> | lambdas |
| 19:53:42 | <drakonis> | hmm |
| 19:53:44 | <davean> | drakonis: so the actional operations done on this structure ... |
| 19:53:46 | <drakonis> | god damn it i'm losing myself |
| 19:53:53 | <drakonis> | losing it |
| 19:53:54 | <davean> | drakonis: like if it actually walks the structure, and its combinatorically large ... |
| 19:54:07 | <drakonis> | it can do that, yes. |
| 19:54:15 | <davean> | Right so then its a problem |
| 19:54:19 | <mastarija> | is guix that nix alternative? |
| 19:54:21 | <drakonis> | its not used often enough |
| 19:54:23 | <drakonis> | rather |
| 19:54:29 | <DigitalKiwi> | mastarija: yeah |
| 19:54:29 | <drakonis> | its never used in guix definitions |
| 19:54:32 | <drakonis> | but the option exists |
| 19:54:45 | <drakonis> | because if you stop and think about it |
| 19:54:50 | <mastarija> | Does it have static types? |
| 19:54:56 | <drakonis> | it does not |
| 19:55:09 | <mastarija> | Well then what's it's advantage over nix :D |
| 19:55:13 | × | dhouthoo quits (~dhouthoo@178-117-36-167.access.telenet.be) (Quit: WeeChat 3.2) |
| 19:55:20 | <drakonis> | davean: its not used in the main repos |
| 19:55:23 | <davean> | mastarija: its language isn't a train wreck? :-p |
| 19:55:51 | <drakonis> | so you're not going to find six thousand computer generated packages for each available ghc version |
| 19:55:52 | × | Guest802 quits (~chris@81.96.113.213) (Ping timeout: 250 seconds) |
| 19:56:03 | <DigitalKiwi> | and nixpkgs lol |
| 19:56:18 | <drakonis> | i think i'm mixing things up |
| 19:56:19 | <davean> | DigitalKiwi: god nixpkgs |
| 19:56:25 | <davean> | drakonis: I think you are too |
| 19:56:44 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 252 seconds) |
| 19:56:45 | <drakonis> | i definitely am mixing things up |
| 19:56:45 | <mastarija> | davean, I'm not sure if not having six thousand packages for each GHC version is good or bad :) |
| 19:57:03 | <mastarija> | drakonis, you I mean :D |
| 19:57:16 | <drakonis> | there are no runtime generated packages on guix, everything there is handrolled i suppose |
| 19:57:17 | × | qbt quits (~edun@user/edun) (Ping timeout: 258 seconds) |
| 19:57:27 | <drakonis> | but it does not prevent anyone from doing something like that for their own consumption |
| 19:57:48 | <drakonis> | mastarija: it is for making sure things work |
| 19:58:17 | <mastarija> | drakonis, it is... what? |
| 19:58:19 | <drakonis> | so, the perfect example for what you seem to want to do here is this |
| 19:59:16 | <mastarija> | drakonis, does that mean Nix is failing it it's own task? |
| 19:59:22 | <mastarija> | Making sure things work |
| 19:59:29 | <drakonis> | mastarija: for example, elixir and erlang have broken packages because they have attribute sets that simply swap out the interpreter/runtime version for every package definition in the set |
| 19:59:31 | <DigitalKiwi> | nixpkgs uses this https://haskell4nix.readthedocs.io/ which uses stackage and i think that has created a lot of the problems >.> |
| 19:59:42 | <drakonis> | it breaks things and nobody actually finds out until someone goes and checks it |
| 20:00:05 | <drakonis> | davean: https://guix.gnu.org/de/blog/2019/creating-and-using-a-custom-linux-kernel-on-guix-system/ |
| 20:00:12 | <drakonis> | maybe this might help? |
| 20:00:24 | <DigitalKiwi> | https://input-output-hk.github.io/haskell.nix/motivation/ solves some of them |
| 20:00:25 | <drakonis> | it explains how to inherit a package to generate a new definition with modifications |
| 20:01:08 | <drakonis> | want to spin up a new package that points to a different release or requires a different compiler version? use inherit and modify it on the definition |
| 20:01:16 | <drakonis> | i swear to god though |
| 20:01:33 | <drakonis> | i'm lost |
| 20:01:38 | <DigitalKiwi> | the documentation for fixing something in nixpkgs was "go watch this youtube video" |
| 20:01:47 | <mastarija> | Somehow I feel this whole "area" of engineering is over engineered. |
| 20:01:50 | <drakonis> | i really want to help you out |
| 20:01:58 | <davean> | drakonis: its ok, i'll read stuff and see |
| 20:02:13 | <drakonis> | nixpkgs is dangerously overengineered because the language is disgustingly limited |
| 20:02:19 | <DigitalKiwi> | drakonis: thank you for taking the time :D |
| 20:02:56 | <drakonis> | ah right i remember now how to have a package with multiple versions now |
| 20:03:47 | <drakonis> | it needs to have the same name for the package metadata, but not the same function name |
| 20:03:57 | × | _ht quits (~quassel@82-169-194-8.biz.kpn.net) (Remote host closed the connection) |
| 20:04:06 | <drakonis> | you can install it with <name>@<version> |
| 20:04:26 | <davean> | AH, ok |
| 20:04:36 | <davean> | So that covers some of it |
| 20:04:58 | × | juhp quits (~juhp@128.106.188.220) (Ping timeout: 250 seconds) |
| 20:06:41 | <drakonis> | now, as for the other question |
| 20:06:46 | <drakonis> | no combinatorial explosions here |
| 20:06:53 | <drakonis> | you have to explicitly opt into different versions for things |
| 20:07:05 | <drakonis> | its a easy task on guix, which is why it hasnt been abused like in nixpkgs |
| 20:07:10 | → | juhp joins (~juhp@128.106.188.220) |
| 20:07:39 | <drakonis> | i feel that a significant number of nixpkgs design decisions have to do with how many hurdles there are to do things in it |
| 20:07:53 | <drakonis> | https://guix.gnu.org/en/cookbook/en/guix-cookbook.html#Packaging |
| 20:08:07 | <drakonis> | https://guix.gnu.org/en/cookbook/en/guix-cookbook.html#Programmable-and-automated-package-definition |
| 20:08:20 | <mastarija> | Can we expect Guix to start competing with Nix in a few years time? Nix seems way too adopted to introduce some serious changes. |
| 20:08:26 | <drakonis> | it already competes with it |
| 20:08:41 | <davean> | drakonis: I mean one needs it in any system |
| 20:09:08 | <sm> | to update the Change log shown on hackage, you have to upload a new package version, am I right ? |
| 20:09:34 | → | fresheyeball joins (~fresheyeb@c-71-237-105-37.hsd1.co.comcast.net) |
| 20:09:40 | <davean> | sm: its part of the packge, yes. |
| 20:09:41 | <drakonis> | well, someone has to do the heavy lifting with regards to porting it to other systems though |
| 20:10:27 | <davean> | drakonis: hum? |
| 20:10:34 | <drakonis> | ie: mac and windows support i guess |
| 20:10:37 | <drakonis> | oh |
| 20:10:40 | <DigitalKiwi> | a lot of issues i saw with the bad nixpkgs decisions seemed to be because nix the language lol |
| 20:10:48 | <drakonis> | making it needed on any system |
| 20:10:50 | <drakonis> | right |
| 20:10:57 | <drakonis> | nix the language is not a good language |
| 20:11:05 | <drakonis> | something being fp does not automatically make it well designed |
| 20:11:20 | <drakonis> | davean: misunderstood it |
| 20:11:25 | <DigitalKiwi> | like nobody ever designed haskell4nix how it is because they wanted to heh |
| 20:11:39 | → | MQ-17J joins (~MQ-17J@8.6.144.192) |
| 20:11:42 | <drakonis> | nixpkgs has a mounting tech debt problem |
| 20:13:13 | <drakonis> | also worth mentioning that guix is getting its very own home manager equivalent built into it |
| 20:13:20 | <drakonis> | can be used without requiring the distribution |
| 20:14:33 | × | mattil quits (~mattilinn@62-113-176-119.bb.dnainternet.fi) (Quit: Leaving) |
| 20:17:38 | × | Null_A quits (~null_a@2601:645:8700:2290:7da4:a1bb:6c20:daba) (Remote host closed the connection) |
| 20:17:47 | <drakonis> | davean: do you have any other questions you'd like to get an answer for? |
| 20:17:52 | <drakonis> | im here all day :V |
| 20:18:14 | <davean> | lol, I'm pretty tangled up on this question now! |
| 20:18:18 | × | falafel quits (~falafel@pool-96-255-70-50.washdc.fios.verizon.net) (Ping timeout: 240 seconds) |
| 20:18:36 | <drakonis> | things i should say i appreciate about guix |
| 20:18:44 | <drakonis> | changing inner machinery is a hoot with them |
| 20:18:50 | × | lavaman quits (~lavaman@98.38.249.169) (Remote host closed the connection) |
| 20:19:35 | <drakonis> | they modified a bunch of things a week back and it was smooth sailing |
| 20:19:48 | <drakonis> | there's #guix btw |
| 20:19:59 | <drakonis> | just so i don't take over the channel with this discussion |
| 20:20:30 | <drakonis> | as well as #nonguix if you need some of that sweet sweet software that doesnt obey their policies moolah |
| 20:20:41 | → | Null_A joins (~null_a@2601:645:8700:2290:7da4:a1bb:6c20:daba) |
| 20:20:45 | <davean> | policies? |
| 20:21:02 | × | Atum_ quits (IRC@user/atum/x-2392232) (Quit: Atum_) |
| 20:21:10 | <DigitalKiwi> | non-free |
| 20:21:19 | <drakonis> | basically, they have really strong policies on things like reproducibility, bootstrapping and nonfreeness |
| 20:21:34 | <drakonis> | ie: they have standards |
| 20:21:39 | <drakonis> | actual goddamn standrds |
| 20:21:41 | <drakonis> | standards. |
| 20:21:42 | <davean> | drakonis: what does "bootstrapping" mean? |
| 20:21:53 | <davean> | I don't think anyone has bootstrapped a system fully in decades ... |
| 20:21:54 | <drakonis> | it means building software from scratch |
| 20:21:58 | <davean> | like ... more then 4 |
| 20:22:02 | <drakonis> | they have been doing that for compilers |
| 20:22:21 | <drakonis> | they have a haskell bootstrap |
| 20:22:21 | <davean> | I mean you have to get machine code from somewhere |
| 20:22:28 | <drakonis> | well, they've done that too |
| 20:22:35 | <drakonis> | see gnu mes |
| 20:22:45 | <drakonis> | https://www.gnu.org/software/mes/ |
| 20:22:58 | → | Huw joins (~Huw@pa49-179-73-201.pa.nsw.optusnet.com.au) |
| 20:23:04 | <drakonis> | honestly, it is very impressive. |
| 20:23:13 | <DigitalKiwi> | https://www.bootstrappable.org/ is this part of guix project? |
| 20:23:16 | <davean> | I mean, that sure looks like code you have to compile - so it has to get compiled somehow |
| 20:23:22 | <davean> | we don't exactly have toggle switches anymore |
| 20:23:25 | <drakonis> | it is run by guix people |
| 20:23:32 | <davean> | you can't just toggle code into the computer |
| 20:23:38 | × | fendor_ quits (~fendor@77.119.205.218.wireless.dyn.drei.com) (Remote host closed the connection) |
| 20:23:49 | <drakonis> | rather, it is predominantly guix adjacent people |
| 20:24:06 | <davean> | Ok, they say "reduced binary seed" |
| 20:24:11 | <davean> | so they're still not actually bootstrapping it fully |
| 20:24:17 | <davean> | they're just reducing the hold over |
| 20:24:23 | <drakonis> | they've been cutting it down |
| 20:24:44 | <drakonis> | https://savannah.nongnu.org/projects/stage0 they have this now |
| 20:24:59 | <drakonis> | https://www.bootstrappable.org/projects/mes.html |
| 20:25:00 | <drakonis> | Stage0 starts with just a 280 byte Hex monitor and builds up the infrastructure required to start some serious software development. |
| 20:25:40 | <davean> | so you put those 200 bytes on disk, and boot into it? |
| 20:25:57 | <drakonis> | https://guix.gnu.org/en/blog/2020/guix-further-reduces-bootstrap-seed-to-25/ |
| 20:26:03 | <drakonis> | they've been using it to compile things |
| 20:26:09 | <drakonis> | not boot into it i guess? |
| 20:26:13 | × | Huw quits (~Huw@pa49-179-73-201.pa.nsw.optusnet.com.au) (Read error: Connection reset by peer) |
| 20:26:50 | <davean> | ok, so you still have an entire kernel then, but ok |
| 20:27:10 | <davean> | anyway, got Haskell they do GHC with the via-c backend and compiler that result to compile future GHCs? |
| 20:28:21 | <drakonis> | haskell doesnt go that far back yet |
| 20:28:42 | → | acidjnk_new joins (~acidjnk@p200300d0c72b95287d3c8ae91691b72a.dip0.t-ipconnect.de) |
| 20:29:17 | <drakonis> | but they do that |
| 20:29:24 | <drakonis> | they use the previous one to compile the next |
| 20:30:27 | <davean> | Oh thats how it always works though |
| 20:30:57 | <drakonis> | indeed |
| 20:31:57 | → | Atum_ joins (IRC@user/atum/x-2392232) |
| 20:31:59 | <drakonis> | there's an interesting thing that comes out of this |
| 20:32:16 | <drakonis> | it means they can offer a very wide variety of compiler versions |
| 20:32:16 | <davean> | ? |
| 20:32:32 | <drakonis> | since they aim to bootstrap as early as possible |
| 20:32:34 | <davean> | I don't see how that comes out of this - most platforms do |
| 20:32:55 | <drakonis> | they don't nuke the definitions for the older compilers in the chain |
| 20:33:10 | <drakonis> | they're just hidden from public consumption |
| 20:33:50 | <drakonis> | its an indirect result of it |
| 20:34:09 | <drakonis> | but as far as i'm concerned, the other linux distributions dont really care a whole lot about bootstrapping things so deeply |
| 20:34:33 | <davean> | but offering versions has nothing to do with bootstrapping, and most distros offer a whole pile of versions |
| 20:35:03 | × | burnsidesLlama quits (~burnsides@dhcp168-023.wadham.ox.ac.uk) (Remote host closed the connection) |
| 20:35:16 | × | Atum_ quits (IRC@user/atum/x-2392232) (Client Quit) |
| 20:35:36 | → | burnsidesLlama joins (~burnsides@dhcp168-023.wadham.ox.ac.uk) |
| 20:36:18 | → | Atum_ joins (~IRC@user/atum/x-2392232) |
| 20:37:45 | × | Null_A quits (~null_a@2601:645:8700:2290:7da4:a1bb:6c20:daba) (Remote host closed the connection) |
| 20:38:33 | <davean> | drakonis: so one of the things "mes" says its inspired by seems to actually fully bootstrap? |
| 20:39:16 | <drakonis> | it's part of the chain |
| 20:39:41 | → | jgeerds joins (~jgeerds@55d45555.access.ecotel.net) |
| 20:40:11 | × | burnsidesLlama quits (~burnsides@dhcp168-023.wadham.ox.ac.uk) (Ping timeout: 252 seconds) |
| 20:40:44 | → | Null_A joins (~null_a@2601:645:8700:2290:7da4:a1bb:6c20:daba) |
| 20:41:14 | <ixlun> | Does anyone know how I can use `mapM_` with a bytestring? I don't think it's an instance of `Traversable` |
| 20:41:16 | × | Vajb quits (~Vajb@hag-jnsbng11-58c3a1-224.dhcp.inet.fi) (Remote host closed the connection) |
| 20:41:38 | → | Vajb joins (~Vajb@hag-jnsbng11-58c3a1-224.dhcp.inet.fi) |
| 20:41:40 | × | gehmehgeh quits (~user@user/gehmehgeh) (Quit: Leaving) |
| 20:42:04 | <davean> | ixlun: you can unpack it |
| 20:42:51 | → | tommd joins (~tommd@cpe-76-179-204-251.maine.res.rr.com) |
| 20:42:59 | <davean> | ixlun: and mapM_ is off foldable, not traversable |
| 20:43:56 | <ixlun> | Ah, yes, I didn't think about unpacking it! |
| 20:44:49 | <ixlun> | What's the difference between `Traversable` and `Foldable`, they seem very similar? |
| 20:46:19 | <davean> | ixlun: traversable is significantly more powerful, and thus restrictive |
| 20:46:37 | <davean> | ByteString could almost be a foldable, it could never imagine being a traversable |
| 20:47:20 | → | acidjnk_new3 joins (~acidjnk@p200300d0c72b95281da3f9599f9b27a2.dip0.t-ipconnect.de) |
| 20:47:30 | <davean> | I tihnk you could make a wrapper type that could hold a bytestring and be a foldable actually ... |
| 20:47:52 | → | sheepduck joins (~sheepduck@user/sheepduck) |
| 20:48:52 | <davean> | ixlun: Taversable has to be able to hold arbitrary things |
| 20:49:22 | × | reumeth quits (~reumeth@user/reumeth) (Ping timeout: 240 seconds) |
| 20:49:24 | → | lavaman joins (~lavaman@98.38.249.169) |
| 20:50:30 | × | Null_A quits (~null_a@2601:645:8700:2290:7da4:a1bb:6c20:daba) (Remote host closed the connection) |
| 20:50:40 | <geekosaur> | there is a mono-traversable package out there, intended specifically to resolve this issue for ByteString and Text |
| 20:50:40 | <ixlun> | Hmmm. so it's more that `Traversable` isn't about being able to 'iterate' over the structure, it's more that you can change the underlying data to any arbitrary type? |
| 20:50:57 | × | acidjnk_new quits (~acidjnk@p200300d0c72b95287d3c8ae91691b72a.dip0.t-ipconnect.de) (Ping timeout: 258 seconds) |
| 20:51:19 | <davean> | ixlun: iterating over it is what foldable does |
| 20:54:01 | → | acidjnk_new joins (~acidjnk@p200300d0c72b95281da3f9599f9b27a2.dip0.t-ipconnect.de) |
| 20:54:20 | × | lavaman quits (~lavaman@98.38.249.169) (Ping timeout: 272 seconds) |
| 20:54:25 | <Boarders> | with megaparsec what is an easy way to parse: ``` [some text here] ```? |
| 20:54:36 | <Boarders> | sorry I meant to include the \`\`\` |
| 20:55:10 | × | MQ-17J quits (~MQ-17J@8.6.144.192) (Ping timeout: 258 seconds) |
| 20:55:31 | → | obs\ joins (~obscur1ty@102.44.48.121) |
| 20:55:31 | × | obs\ quits (~obscur1ty@102.44.48.121) (Changing host) |
| 20:55:31 | → | obs\ joins (~obscur1ty@user/obs/x-5924898) |
| 20:55:42 | × | obs\ quits (~obscur1ty@user/obs/x-5924898) (Remote host closed the connection) |
| 20:55:57 | → | obs\ joins (~obscur1ty@102.44.48.121) |
| 20:55:57 | × | obs\ quits (~obscur1ty@102.44.48.121) (Changing host) |
| 20:55:57 | → | obs\ joins (~obscur1ty@user/obs/x-5924898) |
| 20:56:06 | <ixlun> | davean: right, so `Traversable` is really the combination of two other classes, `Foldable` to iterate over the data strrcutre and `Functor` to allow a mapping for each element over the structure? |
| 20:56:58 | × | acidjnk_new3 quits (~acidjnk@p200300d0c72b95281da3f9599f9b27a2.dip0.t-ipconnect.de) (Ping timeout: 250 seconds) |
| 20:58:05 | → | Null_A joins (~null_a@2601:645:8700:2290:7da4:a1bb:6c20:daba) |
| 20:58:15 | <davean> | ixlun: I mean ... no? It requires both of those, but it gives more than those alone |
| 20:58:27 | <davean> | Its on top of those two |
| 20:58:28 | <Boarders> | different version of my question: in megaparsec how do I take all text before a given keyword? |
| 20:58:58 | <geekosaur> | manyTill? |
| 20:59:15 | → | infinity0 joins (~infinity0@occupy.ecodis.net) |
| 21:01:19 | <ixlun> | Hmm, okay - looks like I need to do some more reading. Thanks davean |
| 21:03:00 | <davean> | ixlun: sequenceA :: Applicative f => t (f a) -> f (t a) |
| 21:03:07 | <davean> | thats more powerful than Foldable and Functor together |
| 21:03:08 | → | falafel joins (~falafel@pool-96-255-70-50.washdc.fios.verizon.net) |
| 21:03:17 | <davean> | neither allows you to rotate the types |
| 21:05:50 | <ixlun> | Right, I think I get it now! I use this pattern a lot: `sequence $ map print [1,2,3]`. Actually I could use traverse instead? |
| 21:06:11 | <ixlun> | and if `[]` isn't `Traversable`, I couldn't use `sequence`. |
| 21:09:40 | × | mastarija quits (~mastarija@78-3-212-215.adsl.net.t-com.hr) (Read error: Connection reset by peer) |
| 21:10:47 | <tomsmeding> | Boarders: string "```" >> manyTill anyChar (string "```") |
| 21:11:06 | <tomsmeding> | with parsec you'd need try () around those `string` calls |
| 21:11:28 | <tomsmeding> | (as geekosaur said) |
| 21:12:04 | × | son0p quits (~ff@181.136.122.143) (Ping timeout: 272 seconds) |
| 21:12:40 | → | ahri joins (~ahri@109.70.150.160) |
| 21:13:20 | × | Core9863 quits (~agua_pesa@2804:14c:8793:8e2f:48b4:3d09:2f3b:552b) (Ping timeout: 272 seconds) |
| 21:14:30 | <ahri> | I'm trying to pass my program "+RTS -K1K" to be able to control the stack size, but it doesn't seem like it honours that setting - I can control (and exhaust) the heap size via -M and -A, but "-K_" doesn't even error, and I don't get stack overflows for valid configs |
| 21:14:43 | <ahri> | am I doing it wrong? |
| 21:15:06 | × | neceve quits (~quassel@2a02:c7f:607e:d600:f762:20dd:304e:4b1f) (Ping timeout: 258 seconds) |
| 21:15:32 | <sm> | ahri: that's more of a suggestion than a command - it's not a hard limit - also 1K sounds unreasonably small |
| 21:16:11 | <ahri> | I'm trying to make it unreasonably small, per https://neilmitchell.blogspot.com/2015/09/detecting-space-leaks.html |
| 21:16:13 | <sm> | oh sorry, maybe not for -K. I was thinking of -M |
| 21:17:01 | <ahri> | https://downloads.haskell.org/~ghc/latest/docs/html/users_guide/runtime_control.html makes it sound like a command, it says it will emit StackOverflows |
| 21:17:02 | <geekosaur> | try using the GHCRTS environment variable instead, especially if you're runniing via stack or cabal which may be eating the parameter |
| 21:17:27 | <sm> | right, I was just going to link that. Strange |
| 21:17:55 | <ahri> | when I used the env var it seems like stack was being influenced by it, but I'll have another go |
| 21:18:16 | → | agua_pesada joins (~agua_pesa@191.177.175.57) |
| 21:18:43 | → | Kaipi joins (~Kaiepi@156.34.44.192) |
| 21:18:45 | <geekosaur> | yes, every haskell program would be influenced by the envar |
| 21:19:00 | × | Kaiepi quits (~Kaiepi@156.34.44.192) (Read error: Connection reset by peer) |
| 21:19:41 | <geekosaur> | but you need to use --RTS early on to force stack to pass on the +RTS to the child process |
| 21:19:53 | <geekosaur> | stack --RTS exec ... +RTS ... |
| 21:20:08 | <ahri> | ahhh, yes, that makes sense |
| 21:21:35 | <sm> | --RTS, interesting. I always do "stack exec -- ...", maybe that would also have solved it ? |
| 21:22:04 | <geekosaur> | II don't think -- applies to the RTS params, but maybe |
| 21:22:28 | <geekosaur> | they're read too soon by the RTS |
| 21:22:52 | <tomsmeding> | in my experience, using -- works fine |
| 21:23:03 | <tomsmeding> | perhaps stack has a C wrapper that eats some parameters? |
| 21:25:58 | <sm> | yeah -- always worked for me |
| 21:28:01 | <ahri> | I just tried this to take stack out of the equation: `stack exec --profile which server` +RTS -K_ -RTS |
| 21:28:54 | <ahri> | it still doesn't care that the -K_ is invalid, and giving it a probably valid param like -K1B doesn't error with a StackOverflow |
| 21:31:42 | <ahri> | the binary was compiled with "-Wall -Werror -O2 -static -optc-static -optl-static -optl-pthread -rtsopts" |
| 21:32:06 | <ahri> | would this preclude the use of -K? |
| 21:33:06 | × | oxide quits (~lambda@user/oxide) (Quit: oxide) |
| 21:40:18 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 21:42:45 | × | agua_pesada quits (~agua_pesa@191.177.175.57) (Read error: Connection reset by peer) |
| 21:43:26 | × | mikoto-chan quits (~mikoto-ch@ip-193-121-10-50.dsl.scarlet.be) (Ping timeout: 252 seconds) |
| 21:43:32 | → | dunj3 joins (~dunj3@2001:981:9d95:1:886d:656c:9636:23f4) |
| 21:44:26 | <sm> | ahri: what ghc version ? I wonder if you need -rtsopts=all now, https://downloads.haskell.org/ghc/latest/docs/html/users_guide/phases.html#ghc-flag--rtsopts[=⟨none|some|all|ignore|ignoreAll⟩] |
| 21:44:28 | → | Tuplanolla joins (~Tuplanoll@91-159-69-50.elisa-laajakaista.fi) |
| 21:45:03 | <sm> | (that doc confuses me) |
| 21:45:22 | <sm> | probably not |
| 21:45:55 | <ahri> | I'm on 8.4.4 |
| 21:46:22 | <sm> | run your executable with +RTS --help and see if -K is listed ? |
| 21:46:37 | → | ubert joins (~Thunderbi@91.141.44.204.wireless.dyn.drei.com) |
| 21:46:40 | <ahri> | I'll have a go with -rtsopts=all, and --help |
| 21:47:09 | × | arkho quits (~ccc@dynamic-acs-24-112-153-241.zoominternet.net) (Remote host closed the connection) |
| 21:47:36 | → | arkho joins (~ccc@dynamic-acs-24-112-153-241.zoominternet.net) |
| 21:47:44 | × | arkho quits (~ccc@dynamic-acs-24-112-153-241.zoominternet.net) (Remote host closed the connection) |
| 21:48:09 | × | __monty__ quits (~toonn@user/toonn) (Quit: leaving) |
| 21:49:35 | <ahri> | --help does like -K, and even having recompiled with -rtsopts=all it doesn't care what I pass to -K :( -Kplsdie is as acceptable as -K1k |
| 21:49:59 | <ahri> | *does list -K |
| 21:50:49 | <sm> | confirmed here, -K ignores a junk argument |
| 21:51:04 | <sm> | perhaps #ghc or their issue tracker knows more |
| 21:52:37 | <ahri> | hehe, ok, I'll pursue this more tomorrow, gonna call it a night for now :) thank you for your help |
| 21:52:44 | <sm> | good luck! |
| 21:54:05 | × | ahri quits (~ahri@109.70.150.160) (Quit: zzz) |
| 21:54:15 | <sm> | (FWIW, this does give a stack overflow: stack path +RTS -K1k) |
| 21:54:23 | → | arkho joins (~ccc@dynamic-acs-24-112-153-241.zoominternet.net) |
| 21:54:47 | → | Erutuon joins (~Erutuon@user/erutuon) |
| 21:58:05 | × | ubert quits (~Thunderbi@91.141.44.204.wireless.dyn.drei.com) (Quit: ubert) |
| 22:03:01 | × | drd quits (~drd@93-39-151-19.ip76.fastwebnet.it) (Ping timeout: 258 seconds) |
| 22:09:46 | → | wrengr joins (~wrengr@56.4.82.34.bc.googleusercontent.com) |
| 22:10:41 | × | yoctocell quits (~user@h87-96-130-155.cust.a3fiber.se) (Ping timeout: 258 seconds) |
| 22:13:10 | × | falafel quits (~falafel@pool-96-255-70-50.washdc.fios.verizon.net) (Ping timeout: 256 seconds) |
| 22:14:31 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 258 seconds) |
| 22:14:54 | × | wrengr quits (~wrengr@56.4.82.34.bc.googleusercontent.com) (Quit: leaving) |
| 22:15:12 | → | wrengr joins (~wrengr@56.4.82.34.bc.googleusercontent.com) |
| 22:15:22 | → | ubert joins (~Thunderbi@91.141.44.204.wireless.dyn.drei.com) |
| 22:17:09 | → | jmorris joins (uid433911@id-433911.stonehaven.irccloud.com) |
| 22:19:23 | × | wrengr quits (~wrengr@56.4.82.34.bc.googleusercontent.com) (Client Quit) |
| 22:20:52 | → | wrengr joins (~wrengr@56.4.82.34.bc.googleusercontent.com) |
| 22:20:57 | × | Atum_ quits (~IRC@user/atum/x-2392232) (Remote host closed the connection) |
| 22:21:46 | × | amahl quits (~amahl@dsl-jklbng12-54fbca-64.dhcp.inet.fi) (Ping timeout: 240 seconds) |
| 22:23:10 | × | hnOsmium0001 quits (uid453710@id-453710.stonehaven.irccloud.com) (Quit: Connection closed for inactivity) |
| 22:25:47 | × | xff0x quits (~xff0x@2001:1a81:521f:1e00:df79:95ae:114:be51) (Ping timeout: 252 seconds) |
| 22:26:50 | → | xff0x joins (~xff0x@2001:1a81:521f:1e00:f63a:2090:9719:2426) |
| 22:30:32 | × | Pickchea quits (~private@user/pickchea) (Quit: Leaving) |
| 22:37:07 | × | wrengr quits (~wrengr@56.4.82.34.bc.googleusercontent.com) (Quit: leaving) |
| 22:37:26 | → | wrengr joins (~wrengr@56.4.82.34.bc.googleusercontent.com) |
| 22:38:06 | × | ubert quits (~Thunderbi@91.141.44.204.wireless.dyn.drei.com) (Ping timeout: 256 seconds) |
| 22:39:13 | → | son0p joins (~ff@181.136.122.143) |
| 22:41:01 | → | curiousgay joins (~curiousga@77-120-186-48.kha.volia.net) |
| 22:42:44 | × | michalz quits (~michalz@185.246.204.40) (Remote host closed the connection) |
| 22:43:10 | → | cjb joins (~cjb@user/cjb) |
| 22:46:06 | KM4MBG | is now known as Jack-KM4MBG |
| 22:51:59 | → | Atum_ joins (~IRC@user/atum/x-2392232) |
| 22:53:06 | × | acidjnk_new quits (~acidjnk@p200300d0c72b95281da3f9599f9b27a2.dip0.t-ipconnect.de) (Ping timeout: 250 seconds) |
| 22:54:18 | × | deejaytee quits (~deejaytee@cpc91196-cmbg18-2-0-cust215.5-4.cable.virginm.net) (Quit: Leaving) |
| 22:55:18 | × | Neuromancer quits (~Neuromanc@user/neuromancer) (Ping timeout: 272 seconds) |
| 22:58:10 | → | dajoer joins (~david@user/gvx) |
| 23:04:59 | → | lavaman joins (~lavaman@98.38.249.169) |
| 23:09:21 | × | vysn quits (~vysn@user/vysn) (Remote host closed the connection) |
| 23:09:46 | × | justsurfin243590 quits (~justsurfi@cpe-98-146-133-53.natnow.res.rr.com) (Quit: Client closed) |
| 23:13:16 | × | takuan quits (~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection) |
| 23:14:01 | <zzz> | what does (MonadParsec e String m) mean as a class constraint? |
| 23:14:04 | → | chris joins (~chris@81.96.113.213) |
| 23:14:07 | chris | is now known as Guest2552 |
| 23:14:42 | × | Melantha quits (~pyon@user/pyon) (Quit: WeeChat 3.2) |
| 23:14:49 | × | obs\ quits (~obscur1ty@user/obs/x-5924898) (Quit: Leaving) |
| 23:15:07 | → | Melantha joins (~pyon@user/pyon) |
| 23:16:42 | × | curiousgay quits (~curiousga@77-120-186-48.kha.volia.net) (Ping timeout: 240 seconds) |
| 23:18:55 | → | hnOsmium0001 joins (uid453710@id-453710.stonehaven.irccloud.com) |
| 23:20:29 | × | lavaman quits (~lavaman@98.38.249.169) (Remote host closed the connection) |
| 23:24:41 | → | the_proffesor joins (~theproffe@2601:282:847f:8010::3a29) |
| 23:24:54 | <dsal> | @hoogle MonadParsec |
| 23:24:55 | <lambdabot> | Text.Megaparsec class (Stream s, MonadPlus m) => MonadParsec e s m | m -> e s |
| 23:25:22 | <dsal> | zzz: need a bit more context but it means that some type being referenced has an instance of that class. |
| 23:25:44 | × | theproffesor quits (~theproffe@user/theproffesor) (Ping timeout: 252 seconds) |
| 23:30:34 | × | jgeerds quits (~jgeerds@55d45555.access.ecotel.net) (Ping timeout: 240 seconds) |
| 23:32:09 | × | Atum_ quits (~IRC@user/atum/x-2392232) (Quit: Atum_) |
| 23:34:36 | × | eggplantade quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection) |
| 23:36:16 | <Axman6> | without having looked at megaparsec, I would guess it says that m needs to be an instance of that class, where e can be anything (probably chosen by your choice of m) and the stream type is String |
| 23:46:37 | × | dunj3 quits (~dunj3@2001:981:9d95:1:886d:656c:9636:23f4) (Remote host closed the connection) |
| 23:47:49 | × | Ariakenom quits (~Ariakenom@c83-255-154-140.bredband.tele2.se) (Quit: Leaving) |
| 23:48:42 | → | eggplantade joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) |
| 23:51:01 | → | lavaman joins (~lavaman@98.38.249.169) |
| 23:53:08 | × | the_proffesor quits (~theproffe@2601:282:847f:8010::3a29) (Changing host) |
| 23:53:08 | → | the_proffesor joins (~theproffe@user/theproffesor) |
| 23:55:20 | × | lavaman quits (~lavaman@98.38.249.169) (Ping timeout: 258 seconds) |
| 23:56:09 | × | xsperry quits (~as@user/xsperry) () |
| 23:57:01 | × | Tuplanolla quits (~Tuplanoll@91-159-69-50.elisa-laajakaista.fi) (Quit: Leaving.) |
All times are in UTC on 2021-08-03.