2021/08/03

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