Home liberachat/#haskell: Logs Calendar

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.