2023/04/11

2023-04-11 00:02:52 +0200opticblast(~Thunderbi@172.58.85.126)
2023-04-11 00:13:51 +0200gurkenglas(~gurkengla@dynamic-046-114-181-212.46.114.pool.telefonica.de) (Ping timeout: 260 seconds)
2023-04-11 00:15:26 +0200gurkenglas(~gurkengla@dynamic-046-114-181-068.46.114.pool.telefonica.de)
2023-04-11 00:23:22 +0200takuan(~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection)
2023-04-11 00:23:32 +0200NiceBird(~NiceBird@185.133.111.196) (Ping timeout: 246 seconds)
2023-04-11 00:27:27 +0200acidjnk(~acidjnk@p200300d6e715c499d4f5be9b40c24016.dip0.t-ipconnect.de) (Ping timeout: 246 seconds)
2023-04-11 00:28:13 +0200cassiopea(~cassiopea@user/cassiopea)
2023-04-11 00:31:51 +0200heraldo(~heraldo@user/heraldo) (Ping timeout: 255 seconds)
2023-04-11 00:34:32 +0200heraldo(~heraldo@user/heraldo)
2023-04-11 00:46:29 +0200merijn(~merijn@86-86-29-250.fixed.kpn.net)
2023-04-11 00:49:02 +0200nunggu(~q@user/nunggu)
2023-04-11 00:54:14 +0200sammelweis(~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Quit: No Ping reply in 180 seconds.)
2023-04-11 00:54:21 +0200sammelweis(~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10)
2023-04-11 01:01:52 +0200gurkenglas(~gurkengla@dynamic-046-114-181-068.46.114.pool.telefonica.de) (Ping timeout: 248 seconds)
2023-04-11 01:04:34 +0200perrierjouet(~perrier-j@modemcable048.127-56-74.mc.videotron.ca) (Quit: WeeChat 3.8)
2023-04-11 01:04:57 +0200perrierjouet(~perrier-j@modemcable048.127-56-74.mc.videotron.ca)
2023-04-11 01:13:58 +0200captnemo(~captnemo@193.32.127.232) (Quit: WeeChat 3.8)
2023-04-11 01:18:37 +0200potash(~potash@user/foghorn)
2023-04-11 01:20:54 +0200merijn(~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 255 seconds)
2023-04-11 01:21:00 +0200vglfr(~vglfr@88.155.45.17) (Ping timeout: 252 seconds)
2023-04-11 01:21:53 +0200Tuplanolla(~Tuplanoll@91-159-68-236.elisa-laajakaista.fi) (Quit: Leaving.)
2023-04-11 01:33:20 +0200heraldo(~heraldo@user/heraldo) (Quit: heraldo)
2023-04-11 01:40:58 +0200opticblast(~Thunderbi@172.58.85.126) (Ping timeout: 276 seconds)
2023-04-11 01:42:02 +0200nunggu(~q@user/nunggu) (Ping timeout: 255 seconds)
2023-04-11 01:46:17 +0200opticblast(~Thunderbi@172.58.85.126)
2023-04-11 01:52:57 +0200wroathe(~wroathe@207-153-38-140.fttp.usinternet.com)
2023-04-11 01:52:57 +0200wroathe(~wroathe@207-153-38-140.fttp.usinternet.com) (Changing host)
2023-04-11 01:52:57 +0200wroathe(~wroathe@user/wroathe)
2023-04-11 01:59:58 +0200Lord_of_Life(~Lord@user/lord-of-life/x-2819915) (Ping timeout: 268 seconds)
2023-04-11 02:00:06 +0200mauke_(~mauke@user/mauke)
2023-04-11 02:02:22 +0200Lord_of_Life(~Lord@user/lord-of-life/x-2819915)
2023-04-11 02:02:25 +0200mauke(~mauke@user/mauke) (Ping timeout: 268 seconds)
2023-04-11 02:02:25 +0200mauke_mauke
2023-04-11 02:06:10 +0200 <hololeap> whatsupdoc: is that the one kmett has been working on?
2023-04-11 02:07:18 +0200zeenk(~zeenk@2a02:2f04:a307:2300::7fe) (Quit: Konversation terminated!)
2023-04-11 02:11:36 +0200werneta(~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net) (Quit: Lost terminal)
2023-04-11 02:17:02 +0200merijn(~merijn@86-86-29-250.fixed.kpn.net)
2023-04-11 02:22:34 +0200merijn(~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 276 seconds)
2023-04-11 02:41:38 +0200chanceyan(~chanceyan@user/chanceyan)
2023-04-11 03:00:35 +0200 <Nosrep> elixir the language?
2023-04-11 03:00:47 +0200 <Nosrep> ekmett doesn't have any elixir repos in his github and there's 299 repos
2023-04-11 03:07:11 +0200 <Axman6> hololeap: are you thinking about guanxi?
2023-04-11 03:07:26 +0200 <Axman6> elixir's the rubified erlang
2023-04-11 03:08:48 +0200machinedgod(~machinedg@d198-53-218-113.abhsia.telus.net) (Ping timeout: 248 seconds)
2023-04-11 03:09:42 +0200 <hololeap> I'm not sure, but I remember kmett saying something about working on a different language
2023-04-11 03:10:25 +0200albet70(~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection)
2023-04-11 03:10:42 +0200 <hololeap> I think it runs on jvm
2023-04-11 03:11:03 +0200 <hololeap> rubified erlang sounds cool, honestly
2023-04-11 03:13:18 +0200opticblast(~Thunderbi@172.58.85.126) (Read error: Connection reset by peer)
2023-04-11 03:13:37 +0200opticblast(~Thunderbi@172.58.85.126)
2023-04-11 03:14:06 +0200 <hololeap> edwardk_: what was the other language you have been working on, or am I totally off base
2023-04-11 03:14:24 +0200opticblast(~Thunderbi@172.58.85.126) (Client Quit)
2023-04-11 03:16:32 +0200albet70(~xxx@2400:8902::f03c:92ff:fe60:98d8)
2023-04-11 03:18:25 +0200merijn(~merijn@86-86-29-250.fixed.kpn.net)
2023-04-11 03:20:23 +0200werneta(~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net)
2023-04-11 03:20:25 +0200 <monochrom> I heard of "Turbo Haskell" :)
2023-04-11 03:21:36 +0200 <c_wraith> hololeap: the Haskell-like that runs on the JVM was ermine. But I don't think edwardk has worked at the place developing that in a long time
2023-04-11 03:22:01 +0200 <c_wraith> well. the haskell-like that runs on the jvm that he was working on
2023-04-11 03:22:07 +0200 <hololeap> but he _did_? this was a random convo on IRC and yeah it was at least a couple years ago
2023-04-11 03:22:32 +0200 <c_wraith> yes. Probably more than 10 years ago, now
2023-04-11 03:22:41 +0200 <hololeap> oh, well not that long ago
2023-04-11 03:23:02 +0200 <c_wraith> it easily can come up in conversation more recently
2023-04-11 03:23:21 +0200 <hololeap> my impression was that it was current work
2023-04-11 03:24:29 +0200nunggu(~q@user/nunggu)
2023-04-11 03:24:31 +0200 <monochrom> Every car was once a new car. Every work was once current work. >:D
2023-04-11 03:25:10 +0200 <monochrom> http://www.vex.net/~trebla/humour/tautologies.html #13
2023-04-11 03:25:57 +0200 <c_wraith> I feel like if I really looked, I could find some cars that were built old. :P
2023-04-11 03:27:34 +0200 <monochrom> Fortunately I happened to not talk of violins. Some people make intially-old violins to fake Strads. >:D
2023-04-11 03:27:55 +0200leah2(~leah@vuxu.org) (Ping timeout: 252 seconds)
2023-04-11 03:27:56 +0200 <hololeap> oldsmobile QED
2023-04-11 03:28:11 +0200 <monochrom> hahaha
2023-04-11 03:29:53 +0200 <hololeap> I saw something that was saying Stradivarius violins have a unique sound because they were made from trees that grew in the little ice age, which made the wood more dense
2023-04-11 03:30:29 +0200nunggu(~q@user/nunggu) (Remote host closed the connection)
2023-04-11 03:33:52 +0200[itchyjunk](~itchyjunk@user/itchyjunk/x-7353470) (Ping timeout: 248 seconds)
2023-04-11 03:38:43 +0200justsomeguy(~justsomeg@user/justsomeguy) (Ping timeout: 260 seconds)
2023-04-11 03:43:01 +0200czy(~user@host-140-25.ilcub310.champaign.il.us.clients.pavlovmedia.net) (Remote host closed the connection)
2023-04-11 03:43:17 +0200[itchyjunk](~itchyjunk@user/itchyjunk/x-7353470)
2023-04-11 03:51:07 +0200xff0x(~xff0x@ai098135.d.east.v6connect.net) (Ping timeout: 248 seconds)
2023-04-11 03:52:11 +0200justsomeguy(~justsomeg@user/justsomeguy)
2023-04-11 03:52:33 +0200merijn(~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 255 seconds)
2023-04-11 03:53:24 +0200nate1(~nate@98.45.169.16)
2023-04-11 03:55:23 +0200 <Nosrep> step 1. refrigerated greenhouse 2. ??? 3. profit
2023-04-11 03:58:21 +0200nate1(~nate@98.45.169.16) (Ping timeout: 268 seconds)
2023-04-11 03:59:28 +0200zq(~zq@xorshift.org)
2023-04-11 03:59:30 +0200 <zq> hello
2023-04-11 03:59:43 +0200 <zq> ml module functor == haskell typeclass functor?
2023-04-11 04:00:25 +0200sammelweis(~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Quit: No Ping reply in 180 seconds.)
2023-04-11 04:01:33 +0200sammelweis(~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10)
2023-04-11 04:05:01 +0200leah2(~leah@vuxu.org)
2023-04-11 04:10:20 +0200wroathe(~wroathe@user/wroathe) (Ping timeout: 265 seconds)
2023-04-11 04:11:17 +0200nunggu(~q@user/nunggu)
2023-04-11 04:12:58 +0200eggplantade(~Eggplanta@2600:1700:38c5:d800:ad1e:c088:4c6f:8ed8)
2023-04-11 04:16:37 +0200 <probie> zq: not at all
2023-04-11 04:16:51 +0200td_(~td@i53870914.versanet.de) (Ping timeout: 268 seconds)
2023-04-11 04:17:35 +0200eggplantade(~Eggplanta@2600:1700:38c5:d800:ad1e:c088:4c6f:8ed8) (Ping timeout: 260 seconds)
2023-04-11 04:18:21 +0200td_(~td@i5387091F.versanet.de)
2023-04-11 04:18:44 +0200nate1(~nate@98.45.169.16)
2023-04-11 04:27:03 +0200jumpnbrownweasel(~jumpnbrow@2603-800c-240f-1c55-8db8-2c23-1ffe-bf07.res6.spectrum.com) (Quit: Leaving)
2023-04-11 04:31:32 +0200 <ryantrinkle> any recommendation on how to emit a warning or error if someone uses a particular library/module *without* using a particular compiler plugin?
2023-04-11 04:31:56 +0200 <ryantrinkle> i just wrote a lib where users will suffer an enormous performance penalty if they forget to use the plugin
2023-04-11 04:32:36 +0200sammelweis(~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Quit: No Ping reply in 180 seconds.)
2023-04-11 04:33:44 +0200sammelweis(~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10)
2023-04-11 04:33:59 +0200xff0x(~xff0x@125x103x176x34.ap125.ftth.ucom.ne.jp)
2023-04-11 04:35:39 +0200jwiegley_(~jwiegley@76-234-69-149.lightspeed.frokca.sbcglobal.net)
2023-04-11 04:36:18 +0200jwiegley(~jwiegley@76-234-69-149.lightspeed.frokca.sbcglobal.net) (Read error: Connection reset by peer)
2023-04-11 04:38:25 +0200pieguy128_(~pieguy128@bras-base-mtrlpq5031w-grc-50-65-93-192-141.dsl.bell.ca)
2023-04-11 04:38:33 +0200 <probie> ryantrinkle: Do you also control the compiler plugin? Definitely a hack, but if so you can add a type checker plugin to it that can solve a specific constraint, and then add that otherwise unsolvable constraint to your library
2023-04-11 04:38:55 +0200pieguy128(~pieguy128@bas8-montreal02-65-93-194-11.dsl.bell.ca) (Ping timeout: 260 seconds)
2023-04-11 04:43:18 +0200 <probie> e.g. `class UsingCompilerPluginFoo a where` and then somewhere in your library have a useless dummy function `usingCompilerPlugin :: UsingCompilerPluginFoo () => ()` to block compilation unless the plugin is being used
2023-04-11 04:46:28 +0200 <jackdk> probie: `-XMultiParamTypeClasses` allows nullary type classes; can you use that here? Also, you could put such a type class on the library functions that require the plugin, instead of a magic binding
2023-04-11 04:48:35 +0200merijn(~merijn@86-86-29-250.fixed.kpn.net)
2023-04-11 04:53:51 +0200merijn(~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 268 seconds)
2023-04-11 04:54:23 +0200opticblast(~Thunderbi@172.58.85.126)
2023-04-11 04:55:32 +0200justsomeguy(~justsomeg@user/justsomeguy) (Quit: WeeChat 3.6)
2023-04-11 04:59:24 +0200finn_elija(~finn_elij@user/finn-elija/x-0085643)
2023-04-11 04:59:24 +0200FinnElija(~finn_elij@user/finn-elija/x-0085643) (Killed (NickServ (Forcing logout FinnElija -> finn_elija)))
2023-04-11 04:59:24 +0200finn_elijaFinnElija
2023-04-11 05:01:17 +0200[itchyjunk](~itchyjunk@user/itchyjunk/x-7353470) (Remote host closed the connection)
2023-04-11 05:01:25 +0200 <probie> jackdk: does ghc promise to erase "empty" type classes, or is there a risk it's going to rewrite `C => T` to `() -> T` instead of `T`?
2023-04-11 05:03:34 +0200 <jackdk> I dunno. I jut remember seeing it in the doc for that extension. If it rewrites it to a silly function, that's easily fixable with the plugin anyway
2023-04-11 05:06:11 +0200Vq(~vq@90-227-192-206-no77.tbcn.telia.com) (Ping timeout: 268 seconds)
2023-04-11 05:07:57 +0200Vq(~vq@90-227-192-206-no77.tbcn.telia.com)
2023-04-11 05:10:38 +0200eggplantade(~Eggplanta@2600:1700:38c5:d800:ad1e:c088:4c6f:8ed8)
2023-04-11 05:14:52 +0200jero98772(~jero98772@2800:484:1d84:9000::2) (Remote host closed the connection)
2023-04-11 05:19:01 +0200nate1(~nate@98.45.169.16) (Ping timeout: 240 seconds)
2023-04-11 05:33:48 +0200opticblast(~Thunderbi@172.58.85.126) (Ping timeout: 255 seconds)
2023-04-11 05:36:13 +0200opticblast(~Thunderbi@172.58.85.126)
2023-04-11 05:37:18 +0200czy(~user@host-140-25.ilcub310.champaign.il.us.clients.pavlovmedia.net)
2023-04-11 05:38:11 +0200pyook(~puke@user/puke)
2023-04-11 05:44:17 +0200sammelweis(~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Quit: No Ping reply in 180 seconds.)
2023-04-11 05:45:39 +0200sammelweis(~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10)
2023-04-11 05:49:13 +0200sammelweis(~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Client Quit)
2023-04-11 05:49:57 +0200merijn(~merijn@86-86-29-250.fixed.kpn.net)
2023-04-11 05:50:01 +0200matthews(~matthews@gentoo/developer/matthew) (Quit: ZNC 1.8.2+deb2+b1 - https://znc.in)
2023-04-11 05:50:29 +0200sammelweis(~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10)
2023-04-11 05:56:51 +0200opticblast(~Thunderbi@172.58.85.126) (Ping timeout: 260 seconds)
2023-04-11 06:20:31 +0200hugo(znc@verdigris.lysator.liu.se) (Ping timeout: 240 seconds)
2023-04-11 06:23:16 +0200wroathe(~wroathe@207-153-38-140.fttp.usinternet.com)
2023-04-11 06:23:17 +0200wroathe(~wroathe@207-153-38-140.fttp.usinternet.com) (Changing host)
2023-04-11 06:23:17 +0200wroathe(~wroathe@user/wroathe)
2023-04-11 06:24:12 +0200merijn(~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 255 seconds)
2023-04-11 06:30:03 +0200wroathe(~wroathe@user/wroathe) (Ping timeout: 255 seconds)
2023-04-11 06:30:32 +0200hugo(znc@verdigris.lysator.liu.se)
2023-04-11 06:30:40 +0200xff0x(~xff0x@125x103x176x34.ap125.ftth.ucom.ne.jp) (Ping timeout: 268 seconds)
2023-04-11 06:32:22 +0200xff0x(~xff0x@125x103x176x34.ap125.ftth.ucom.ne.jp)
2023-04-11 06:41:15 +0200mbuf(~Shakthi@49.207.178.186)
2023-04-11 06:44:54 +0200trev(~trev@user/trev)
2023-04-11 06:59:10 +0200Feuermagier_(~Feuermagi@user/feuermagier)
2023-04-11 07:00:13 +0200Feuermagier(~Feuermagi@user/feuermagier) (Read error: Connection reset by peer)
2023-04-11 07:00:26 +0200Feuermagier(~Feuermagi@user/feuermagier)
2023-04-11 07:01:13 +0200Feuermagier_(~Feuermagi@user/feuermagier) (Client Quit)
2023-04-11 07:08:54 +0200cheater_(~Username@user/cheater)
2023-04-11 07:10:29 +0200cheater(~Username@user/cheater) (Ping timeout: 250 seconds)
2023-04-11 07:10:38 +0200cheater_cheater
2023-04-11 07:20:10 +0200merijn(~merijn@86-86-29-250.fixed.kpn.net)
2023-04-11 07:26:03 +0200bgs(~bgs@212-85-160-171.dynamic.telemach.net)
2023-04-11 07:27:03 +0200freeside(~mengwong@50.216.111.242)
2023-04-11 07:30:48 +0200mikess(~sam@user/mikess) (Ping timeout: 264 seconds)
2023-04-11 07:31:30 +0200takuan(~takuan@178-116-218-225.access.telenet.be)
2023-04-11 07:40:11 +0200hopelessness[m](~hopelessn@2001:470:69fc:105::3:4043)
2023-04-11 07:43:30 +0200waleee(~waleee@2001:9b0:21c:4000:5bf9:6515:c030:57b7) (Ping timeout: 260 seconds)
2023-04-11 07:46:21 +0200sammelweis(~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Quit: No Ping reply in 180 seconds.)
2023-04-11 07:46:29 +0200sammelweis(~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10)
2023-04-11 07:50:55 +0200cheater(~Username@user/cheater) (Read error: Connection reset by peer)
2023-04-11 07:51:54 +0200cheater(~Username@user/cheater)
2023-04-11 07:54:19 +0200merijn(~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 248 seconds)
2023-04-11 08:00:53 +0200michalz(~michalz@185.246.204.101)
2023-04-11 08:04:12 +0200bgs(~bgs@212-85-160-171.dynamic.telemach.net) (Remote host closed the connection)
2023-04-11 08:05:26 +0200nunggu(~q@user/nunggu) (Ping timeout: 255 seconds)
2023-04-11 08:11:06 +0200harveypwca(~harveypwc@2601:246:c180:a570:3828:d8:e523:3f67)
2023-04-11 08:11:29 +0200MajorBiscuit(~MajorBisc@31-23-159.netrun.cytanet.com.cy)
2023-04-11 08:15:19 +0200kenran(~user@user/kenran)
2023-04-11 08:20:59 +0200chanceyan(~chanceyan@user/chanceyan) (Quit: Client closed)
2023-04-11 08:23:58 +0200_leo___(~emmanuelu@user/emmanuelux) (Quit: au revoir)
2023-04-11 08:24:47 +0200shriekingnoise(~shrieking@186.137.175.87) (Ping timeout: 260 seconds)
2023-04-11 08:38:48 +0200werneta(~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net) (Ping timeout: 252 seconds)
2023-04-11 08:39:13 +0200gurkenglas(~gurkengla@dynamic-046-114-181-068.46.114.pool.telefonica.de)
2023-04-11 08:40:51 +0200werneta(~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net)
2023-04-11 08:50:42 +0200merijn(~merijn@86-86-29-250.fixed.kpn.net)
2023-04-11 08:53:36 +0200ddellacosta(~ddellacos@146.70.171.100) (Ping timeout: 264 seconds)
2023-04-11 08:55:00 +0200Guest99(~Guest99@host-im9myvj.static.zeelandnet.nl)
2023-04-11 08:58:57 +0200vglfr(~vglfr@88.155.17.187)
2023-04-11 09:06:09 +0200lortabac(~lortabac@2a01:e0a:541:b8f0:807f:2761:46c9:9711)
2023-04-11 09:07:16 +0200zeenk(~zeenk@2a02:2f04:a307:2300::7fe)
2023-04-11 09:08:08 +0200zaquest(~notzaques@5.130.79.72) (Remote host closed the connection)
2023-04-11 09:11:14 +0200acidjnk(~acidjnk@p200300d6e715c407d4f5be9b40c24016.dip0.t-ipconnect.de)
2023-04-11 09:15:35 +0200coot(~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba)
2023-04-11 09:15:47 +0200ddellacosta(~ddellacos@146.70.185.100)
2023-04-11 09:17:35 +0200zaquest(~notzaques@5.130.79.72)
2023-04-11 09:19:40 +0200chanceyan(~chanceyan@user/chanceyan)
2023-04-11 09:20:32 +0200kuribas(~user@188.189.245.25)
2023-04-11 09:25:00 +0200merijn(~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 252 seconds)
2023-04-11 09:25:45 +0200_ht(~Thunderbi@28-52-174-82.ftth.glasoperator.nl)
2023-04-11 09:32:50 +0200merijn(~merijn@86-86-29-250.fixed.kpn.net)
2023-04-11 09:39:09 +0200Sgeo(~Sgeo@user/sgeo) (Read error: Connection reset by peer)
2023-04-11 09:39:42 +0200mastarija(~mastarija@2a05:4f46:e03:6000:95dc:f9bd:1c2a:3be8)
2023-04-11 09:40:20 +0200zeenk(~zeenk@2a02:2f04:a307:2300::7fe) (Remote host closed the connection)
2023-04-11 09:40:42 +0200zeenk(~zeenk@2a02:2f04:a307:2300::fba)
2023-04-11 09:41:19 +0200 <JensPetersen[m]> I have a space character operator ("ab" +-+ "cd == "ab " +-+ " cd" = ), but now I can't decide what it should do for an empty string: "ab" +-+ "", hmm
2023-04-11 09:42:34 +0200 <hopelessness[m]> according to the first example I would think that `"ab "` and `"ab"` would be equally valid
2023-04-11 09:42:51 +0200 <hopelessness[m]> imo `"ab"` would make more sense on the context I'm inferring
2023-04-11 09:47:44 +0200freeside(~mengwong@50.216.111.242) (Ping timeout: 248 seconds)
2023-04-11 09:50:23 +0200harveypwca(~harveypwc@2601:246:c180:a570:3828:d8:e523:3f67) (Quit: Leaving)
2023-04-11 09:52:09 +0200jespada(~jespada@cpc121308-nmal25-2-0-cust15.19-2.cable.virginm.net) (Quit: Textual IRC Client: www.textualapp.com)
2023-04-11 09:53:51 +0200 <mauke> > ab" +-+ "cd == "ab " +-+ " cd" =
2023-04-11 09:53:53 +0200 <lambdabot> <hint>:1:32: error: parse error on input ‘=’
2023-04-11 09:54:40 +0200cfricke(~cfricke@user/cfricke)
2023-04-11 09:55:50 +0200chanceyan(~chanceyan@user/chanceyan) (Quit: Client closed)
2023-04-11 09:56:24 +0200ddellacosta(~ddellacos@146.70.185.100) (Ping timeout: 265 seconds)
2023-04-11 09:57:05 +0200ddellacosta(~ddellacos@146.70.171.100)
2023-04-11 09:58:35 +0200machinedgod(~machinedg@d198-53-218-113.abhsia.telus.net)
2023-04-11 10:02:52 +0200 <tomsmeding> JensPetersen[m]: spec seems to be to concatenate while removing any spaces in between, right? In which case indeed "ab" +-+ "" == "ab"
2023-04-11 10:03:42 +0200 <JensPetersen[m]> tomsmeding: Yeah I feel that is right - maybe I just want an append space operator too :)
2023-04-11 10:03:48 +0200drdo(~drdo@bl7-76-103.dsl.telepac.pt) (Ping timeout: 255 seconds)
2023-04-11 10:05:46 +0200 <tomsmeding> @let a +␠+ b = a ++ " " ++ b
2023-04-11 10:05:47 +0200 <lambdabot> Defined.
2023-04-11 10:07:58 +0200Guest99(~Guest99@host-im9myvj.static.zeelandnet.nl) (Quit: Client closed)
2023-04-11 10:09:27 +0200 <mauke> > let a +??+ b = unwords (words a ++ words b) in "ab " +??+ " cd"
2023-04-11 10:09:29 +0200 <lambdabot> "ab cd"
2023-04-11 10:10:06 +0200kuribas(~user@188.189.245.25) (Ping timeout: 255 seconds)
2023-04-11 10:10:19 +0200freeside(~mengwong@50.216.111.242)
2023-04-11 10:13:02 +0200 <JensPetersen[m]> aha
2023-04-11 10:13:29 +0200jespada(~jespada@cpc121308-nmal25-2-0-cust15.19-2.cable.virginm.net)
2023-04-11 10:13:57 +0200 <JensPetersen[m]> Yeah that is a simple implementation indeed
2023-04-11 10:16:39 +0200mmhat(~mmh@p200300f1c7106e86ee086bfffe095315.dip0.t-ipconnect.de)
2023-04-11 10:17:42 +0200mmhat(~mmh@p200300f1c7106e86ee086bfffe095315.dip0.t-ipconnect.de) (Client Quit)
2023-04-11 10:18:14 +0200Rembane(~Rembane@li346-36.members.linode.com)
2023-04-11 10:19:52 +0200tzh(~tzh@c-24-21-73-154.hsd1.or.comcast.net) (Quit: zzz)
2023-04-11 10:20:35 +0200ubert(~Thunderbi@p548c84d6.dip0.t-ipconnect.de) (Quit: ubert)
2023-04-11 10:23:45 +0200econo(uid147250@user/econo) (Quit: Connection closed for inactivity)
2023-04-11 10:24:20 +0200winny(~weechat@user/winny) (Quit: kernel)
2023-04-11 10:25:01 +0200winny(~weechat@user/winny)
2023-04-11 10:39:45 +0200kuribas(~user@ip-188-118-57-242.reverse.destiny.be)
2023-04-11 10:43:05 +0200 <ncf> zq: no, and it also has nothing to do with what C++ calls a functor, or what Prolog calls a functor (all four are different concepts 🙃)
2023-04-11 10:58:24 +0200 <Hecate> ahah yes the famous OCaml/Haskell/C++/Prolog dichotomy
2023-04-11 11:00:07 +0200pareto-optimal-d(~pareto-op@2001:470:69fc:105::1:b61f) (Quit: You have been kicked for being idle)
2023-04-11 11:00:07 +0200ikervagyok[m](~ikervagyo@2001:470:69fc:105::2:f119) (Quit: You have been kicked for being idle)
2023-04-11 11:01:21 +0200 <hopelessness[m]> that seems more like a quartotomy :p
2023-04-11 11:01:27 +0200__monty__(~toonn@user/toonn)
2023-04-11 11:01:38 +0200 <hopelessness[m]> s/quartotomy/quarchotomy/
2023-04-11 11:02:54 +0200Guest66(~Guest66@140.124.184.119)
2023-04-11 11:04:06 +0200chanceyan(~chanceyan@user/chanceyan)
2023-04-11 11:05:07 +0200 <hopelessness[m]> wiktionary doesn't list it as a word, even though it acknowledges [trichotomy](https://en.m.wiktionary.org/wiki/trichotomy#English) as analog to [dichotomy](https://en.m.wiktionary.org/wiki/dichotomy#English)
2023-04-11 11:05:09 +0200 <merijn> Hecate: Wouldn't that be a tetrachotomy?
2023-04-11 11:05:20 +0200 <merijn> hopelessness[m]: Wrong language prefix ;)
2023-04-11 11:05:36 +0200 <Hecate> merijn: yes that would be the greek word indeed
2023-04-11 11:05:41 +0200 <hopelessness[m]> ahhhh heck
2023-04-11 11:05:42 +0200 <hopelessness[m]> out-nerded
2023-04-11 11:05:51 +0200 <hopelessness[m]> * wiktionary doesn't list it as a word, even though it acknowledges [trichotomy](https://en.m.wiktionary.org/wiki/trichotomy#English) as analog to [dichotomy](https://en.m.wiktionary.org/wiki/dichotomy#English)
2023-04-11 11:06:15 +0200 <merijn> hopelessness[m]: I'm just extrapolating from di/tri/tetra in chemistry
2023-04-11 11:07:26 +0200 <hopelessness[m]> I was never good in chemistry 😆
2023-04-11 11:08:23 +0200ubert(~Thunderbi@2a02:8109:abc0:6434:81f3:78d3:e012:2761)
2023-04-11 11:22:44 +0200mastarija(~mastarija@2a05:4f46:e03:6000:95dc:f9bd:1c2a:3be8) (Quit: WeeChat 3.7.1)
2023-04-11 11:36:50 +0200NiceBird(~NiceBird@185.133.111.196)
2023-04-11 11:38:17 +0200eggplantade(~Eggplanta@2600:1700:38c5:d800:ad1e:c088:4c6f:8ed8) (Remote host closed the connection)
2023-04-11 11:44:43 +0200ft(~ft@p4fc2a88b.dip0.t-ipconnect.de) (Quit: leaving)
2023-04-11 11:46:16 +0200chanceyan(~chanceyan@user/chanceyan) (Quit: Client closed)
2023-04-11 11:49:55 +0200Guest66(~Guest66@140.124.184.119) (Quit: Client closed)
2023-04-11 11:51:20 +0200lortabac(~lortabac@2a01:e0a:541:b8f0:807f:2761:46c9:9711) (Ping timeout: 246 seconds)
2023-04-11 11:51:37 +0200gensyst(~gensyst@user/gensyst)
2023-04-11 11:53:45 +0200 <gensyst> Have you worked yet with "nixpkgs support for incremental Haskell builds" ?
2023-04-11 11:53:52 +0200 <gensyst> Is this already done?
2023-04-11 11:54:24 +0200 <gensyst> It's GHC 9.4 or later only supposedly, because only >= GHC 9.4 has file hashing to detect changes.
2023-04-11 11:57:45 +0200vglfr(~vglfr@88.155.17.187) (Ping timeout: 265 seconds)
2023-04-11 12:09:54 +0200gurkenglas(~gurkengla@dynamic-046-114-181-068.46.114.pool.telefonica.de) (Quit: leaving)
2023-04-11 12:10:17 +0200xff0x(~xff0x@125x103x176x34.ap125.ftth.ucom.ne.jp) (Ping timeout: 265 seconds)
2023-04-11 12:15:51 +0200 <fendor[m]> I may have asked before, but is it typeclasses or type classes? or is either fine?
2023-04-11 12:16:43 +0200mei(~mei@user/mei) (Remote host closed the connection)
2023-04-11 12:16:54 +0200 <merijn> fendor[m]: I think the report uses the latter?
2023-04-11 12:17:44 +0200 <fendor[m]> realworldhaskell and lyah use the former, wikipedia uses the latter
2023-04-11 12:18:47 +0200 <fendor[m]> but yeah, the report uses the latter, going to use that as my source of truth, thanks!
2023-04-11 12:19:08 +0200mei(~mei@user/mei)
2023-04-11 12:19:56 +0200gurkenglas(~gurkengla@dynamic-046-114-181-068.46.114.pool.telefonica.de)
2023-04-11 12:31:01 +0200vglfr(~vglfr@88.155.17.187)
2023-04-11 12:38:46 +0200eggplantade(~Eggplanta@2600:1700:38c5:d800:ad1e:c088:4c6f:8ed8)
2023-04-11 12:39:45 +0200saolof(~saolof@2001:2002:5ae4:c319:4108:8be0:bf78:a848)
2023-04-11 12:44:30 +0200eggplantade(~Eggplanta@2600:1700:38c5:d800:ad1e:c088:4c6f:8ed8) (Ping timeout: 260 seconds)
2023-04-11 12:46:17 +0200zeenk(~zeenk@2a02:2f04:a307:2300::fba) (Quit: Konversation terminated!)
2023-04-11 12:51:05 +0200forell(~forell@user/forell) (Ping timeout: 250 seconds)
2023-04-11 12:53:02 +0200gnalzo(~gnalzo@2a01:e0a:498:fd50:fcc6:bb5d:489a:ce8c)
2023-04-11 12:54:19 +0200forell(~forell@user/forell)
2023-04-11 12:56:52 +0200sammelweis(~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Quit: No Ping reply in 180 seconds.)
2023-04-11 12:58:09 +0200sammelweis(~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10)
2023-04-11 12:58:30 +0200xff0x(~xff0x@ai098135.d.east.v6connect.net)
2023-04-11 13:03:08 +0200kenran`(~user@user/kenran)
2023-04-11 13:04:31 +0200kenran(~user@user/kenran) (Ping timeout: 240 seconds)
2023-04-11 13:09:25 +0200lortabac(~lortabac@2a01:e0a:541:b8f0:c066:a6a4:43b5:25e)
2023-04-11 13:19:49 +0200gurkenglas(~gurkengla@dynamic-046-114-181-068.46.114.pool.telefonica.de) (Remote host closed the connection)
2023-04-11 13:21:33 +0200coot(~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba) (Quit: coot)
2023-04-11 13:21:46 +0200gurkenglas(~gurkengla@dynamic-046-114-181-068.46.114.pool.telefonica.de)
2023-04-11 13:28:49 +0200L29Ah(~L29Ah@wikipedia/L29Ah) (Ping timeout: 276 seconds)
2023-04-11 13:30:55 +0200cfricke(~cfricke@user/cfricke) (Quit: WeeChat 3.8)
2023-04-11 13:35:23 +0200pyook(~puke@user/puke) (Read error: Connection reset by peer)
2023-04-11 13:35:36 +0200pyook(~puke@user/puke)
2023-04-11 13:43:28 +0200vglfr(~vglfr@88.155.17.187) (Ping timeout: 248 seconds)
2023-04-11 13:43:32 +0200gnalzo(~gnalzo@2a01:e0a:498:fd50:fcc6:bb5d:489a:ce8c) (Quit: WeeChat 3.8)
2023-04-11 13:43:40 +0200vglfr(~vglfr@88.155.17.187)
2023-04-11 13:46:40 +0200anpad(~pandeyan@user/anpad) (Quit: ZNC 1.8.2 - https://znc.in)
2023-04-11 13:47:01 +0200anpad(~pandeyan@user/anpad)
2023-04-11 13:50:06 +0200enoq(~enoq@2a05:1141:1f5:5600:b9c9:721a:599:bfe7)
2023-04-11 13:50:58 +0200vglfr(~vglfr@88.155.17.187) (Ping timeout: 268 seconds)
2023-04-11 13:52:08 +0200vglfr(~vglfr@88.155.17.187)
2023-04-11 13:58:46 +0200vglfr(~vglfr@88.155.17.187) (Ping timeout: 252 seconds)
2023-04-11 14:03:56 +0200vglfr(~vglfr@88.155.17.187)
2023-04-11 14:08:38 +0200paulpaul1076(~textual@95-29-5-208.broadband.corbina.ru)
2023-04-11 14:09:48 +0200akadude[m](~akadudema@2001:470:69fc:105::2:5bf7)
2023-04-11 14:11:45 +0200Vq(~vq@90-227-192-206-no77.tbcn.telia.com) (Ping timeout: 255 seconds)
2023-04-11 14:13:43 +0200Vq(~vq@90-227-192-206-no77.tbcn.telia.com)
2023-04-11 14:24:29 +0200Katarushisu(~Katarushi@cpc147790-finc20-2-0-cust502.4-2.cable.virginm.net) (Quit: The Lounge - https://thelounge.chat)
2023-04-11 14:25:40 +0200Katarushisu(~Katarushi@cpc147790-finc20-2-0-cust502.4-2.cable.virginm.net)
2023-04-11 14:28:06 +0200 <chreekat> <fendor[m]> "realworldhaskell and lyah use..." <- oh damn is that what's going on
2023-04-11 14:28:26 +0200 <chreekat> I had asked myself the same question and came to the same conclusion (follow the report), but wasn't sure why I was confused in the first place
2023-04-11 14:28:28 +0200 <chreekat> database, data base
2023-04-11 14:28:47 +0200 <chreekat> i think I still prefer typeclass though
2023-04-11 14:33:14 +0200 <fendor[m]> I also feel like typeclass reads slightly more natural, but couldn't give an argument why
2023-04-11 14:34:19 +0200 <int-e> exposure
2023-04-11 14:34:47 +0200 <fendor[m]> yeah I guess that's it
2023-04-11 14:34:47 +0200bitdex(~bitdex@gateway/tor-sasl/bitdex) (Quit: = "")
2023-04-11 14:35:06 +0200use-value(~Thunderbi@2a00:23c6:8a03:2f01:9da2:60aa:4250:a867)
2023-04-11 14:35:16 +0200edwardk_edwardk
2023-04-11 14:35:38 +0200 <int-e> (As a data point, I prefer "type class" and I have not read either of those books... but I do prefer "database" and the only reason I see for that is that that's what everybody else uses.)
2023-04-11 14:39:41 +0200 <kenran`> "user name" vs. "username" is the same for me
2023-04-11 14:39:54 +0200 <kenran`> I guess as German it's only natural for the concatenated variant to feel more natural to me though
2023-04-11 14:40:28 +0200kenran`kenran
2023-04-11 14:42:17 +0200coot(~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba)
2023-04-11 14:50:06 +0200 <hopelessness[m]> haha yeah
2023-04-11 14:50:17 +0200 <hopelessness[m]> I often concatenate even when it's not possible
2023-04-11 14:50:37 +0200 <int-e> . o O ( overconcatenation )
2023-04-11 14:51:05 +0200 <[exa]> might deserve a hyphen. :D
2023-04-11 14:51:19 +0200 <int-e> [exa]: that would destroy the joke
2023-04-11 14:51:33 +0200 <hopelessness[m]> hyphen-deserving
2023-04-11 14:51:37 +0200 <hopelessness[m]> hyphendeserving
2023-04-11 14:51:39 +0200 <yin> i feel like there's a subtle difference like in 'log in' vs 'login'
2023-04-11 14:52:05 +0200 <hopelessness[m]> mhm
2023-04-11 14:52:07 +0200 <ncf> verb vs noun
2023-04-11 14:52:15 +0200 <kenran> yeah, like verb vs. noun. clean up vs cleanup
2023-04-11 14:52:32 +0200 <hopelessness[m]> ncf: I thought so at first, but both can be used for both, right ... ?
2023-04-11 14:52:41 +0200 <hopelessness[m]> Like there's a clear preferences but I think both work
2023-04-11 14:52:53 +0200 <kenran> I don't think so tbh, but yeah, not a native speaker either
2023-04-11 14:53:27 +0200 <kenran> "The log in was successful" just looks wrong to me, or a commit message like "Cleanup some stuff"
2023-04-11 14:53:51 +0200 <hopelessness[m]> hmm
2023-04-11 14:54:06 +0200 <int-e> You log in with your login (was that spelled "log-in" at some point in the past?) credentials...
2023-04-11 14:54:09 +0200 <ncf> if you're not allergic to prescriptivism, http://www.notaverb.com/login
2023-04-11 14:55:37 +0200 <int-e> (I feel that often these compound terms start out hyphenated and then at some point the hyphen gets dropped for convenience, but I don't know whether this is actually true.)
2023-04-11 14:55:53 +0200 <hopelessness[m]> that seems right, yeah
2023-04-11 14:55:55 +0200 <[Leary]> 'Typeclass' is immediately recognisable as the specific jargon, not any other meaning that could arise from the combination of 'type' and 'class'. 'Database' and 'username' probably arose and persisted for the same reason: they clarify.
2023-04-11 14:56:37 +0200yoneda(~mike@193.206.102.122)
2023-04-11 14:57:08 +0200 <int-e> . o O ( We didn't learn that in type class. )
2023-04-11 14:57:33 +0200 <ncf> my favourite dehyphenation is "reëxports" (to stay vaguely on-topic :p)
2023-04-11 14:58:23 +0200 <ncf> (https://hackage.haskell.org/package/composition-prelude-3.0.0.2/docs/Control-Composition.html#g:12)
2023-04-11 14:59:04 +0200 <yin> i have always wondered who needed to come up with "initialize"
2023-04-11 15:00:45 +0200 <int-e> "bootstrap"
2023-04-11 15:01:13 +0200 <int-e> "endianness" (those last two both come from fictional stories)
2023-04-11 15:01:46 +0200 <yin> did they?
2023-04-11 15:02:03 +0200 <kenran> Wait, bootstrap? you mean the usage as verb specifically?
2023-04-11 15:03:10 +0200 <int-e> At least as far as I know. Bootstrapping is Münchhausen (pulling himself out of a swamp by his bootstraps) and "endianness" alludes to the war in Gulliver's Travels about which side to open an egg from.
2023-04-11 15:03:21 +0200 <Rembane> And then war ensues
2023-04-11 15:04:37 +0200 <int-e> Cf. https://www.rfc-editor.org/ien/ien137.txt for endianness.
2023-04-11 15:05:28 +0200 <kenran> int-e: ah, got it. I somehow read that as "the word bootstrap comes from a fictional story", which sounded strange :D
2023-04-11 15:06:25 +0200 <int-e> "Words are failing me to express how eloquent I'm feeling today."
2023-04-11 15:07:48 +0200 <merijn> kenran: It does
2023-04-11 15:08:46 +0200jpds4jpds
2023-04-11 15:11:31 +0200kenran(~user@user/kenran) (Ping timeout: 276 seconds)
2023-04-11 15:14:13 +0200mei(~mei@user/mei) (Remote host closed the connection)
2023-04-11 15:15:10 +0200 <yin> int-e: the "Who's on first? Zero or One ??" chapter in your link reminded me on how ridiculous it is that we've abbreviated "prima minuta" to "minute" and "seconda minuta" to "second".
2023-04-11 15:15:33 +0200 <yin> more specifically "pars minuta prima" and "pars minuta seconda"
2023-04-11 15:15:53 +0200 <yin> *secunda apparently
2023-04-11 15:16:38 +0200mei(~mei@user/mei)
2023-04-11 15:17:56 +0200 <merijn> I love how Amazon's generated example code is just...wrong
2023-04-11 15:18:01 +0200 <merijn> such fune
2023-04-11 15:18:07 +0200 <merijn> I love my life >.<
2023-04-11 15:23:29 +0200gensyst(~gensyst@user/gensyst) (Quit: Leaving)
2023-04-11 15:26:35 +0200werneta(~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net) (Ping timeout: 248 seconds)
2023-04-11 15:34:39 +0200mikess(~sam@user/mikess)
2023-04-11 15:42:20 +0200wroathe(~wroathe@207-153-38-140.fttp.usinternet.com)
2023-04-11 15:42:21 +0200wroathe(~wroathe@207-153-38-140.fttp.usinternet.com) (Changing host)
2023-04-11 15:42:21 +0200wroathe(~wroathe@user/wroathe)
2023-04-11 15:44:30 +0200tlaxkit(~hexchat@170.253.32.109)
2023-04-11 15:47:23 +0200 <kuribas> int-e: doesn't it come from puss in boots?
2023-04-11 15:48:16 +0200 <ryantrinkle> probie: yes, I do; awesome suggestion, thanks!
2023-04-11 15:58:24 +0200jero98772(~jero98772@2800:484:1d84:9000::5)
2023-04-11 16:00:43 +0200wroathe(~wroathe@user/wroathe) (Ping timeout: 260 seconds)
2023-04-11 16:03:31 +0200merijn(~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 276 seconds)
2023-04-11 16:04:44 +0200kenran(~user@user/kenran)
2023-04-11 16:08:18 +0200cfricke(~cfricke@user/cfricke)
2023-04-11 16:19:12 +0200shriekingnoise(~shrieking@186.137.175.87)
2023-04-11 16:23:51 +0200zeenk(~zeenk@2a02:2f04:a307:2300::fba)
2023-04-11 16:28:14 +0200marinelli(~marinelli@gateway/tor-sasl/marinelli)
2023-04-11 16:29:15 +0200szkl(uid110435@id-110435.uxbridge.irccloud.com) (Quit: Connection closed for inactivity)
2023-04-11 16:29:42 +0200merijn(~merijn@86-86-29-250.fixed.kpn.net)
2023-04-11 16:29:50 +0200Sgeo(~Sgeo@user/sgeo)
2023-04-11 16:33:12 +0200Square(~Square4@user/square)
2023-04-11 16:38:37 +0200freeside(~mengwong@50.216.111.242) (Ping timeout: 276 seconds)
2023-04-11 16:39:13 +0200Albina_Pavlovna(~Albina_Pa@2603-7000-76f0-76e0-491d-4022-58a1-d85a.res6.spectrum.com)
2023-04-11 16:45:13 +0200marinelli(~marinelli@gateway/tor-sasl/marinelli) (Remote host closed the connection)
2023-04-11 16:56:09 +0200freeside(~mengwong@50.216.111.242)
2023-04-11 16:59:55 +0200olle(~olle@h-155-4-129-160.NA.cust.bahnhof.se)
2023-04-11 17:00:21 +0200 <olle> Let's say I have an effectful read inside a function that depends on logic. Is there a way to move it out so I don't have to use IO there?
2023-04-11 17:00:36 +0200 <olle> One (ugly?) way could be to simply preload it.
2023-04-11 17:00:58 +0200 <hopelessness[m]> you mean reading a file?
2023-04-11 17:01:11 +0200 <olle> Reading anything - db, file, url, ...
2023-04-11 17:02:00 +0200MatthiasG(~MatthiasG@202.133.199.92)
2023-04-11 17:02:23 +0200 <hopelessness[m]> you could either pass the data to the function and then `effectfulRead >>= f` where `f` is the processing function, or you make your function return an `IO` action as well
2023-04-11 17:02:39 +0200 <hopelessness[m]> In theory theres `performUnsafeIO` but ... don't use that
2023-04-11 17:02:57 +0200 <olle> Hm
2023-04-11 17:03:13 +0200 <olle> No algebraic effects in haskell, right?
2023-04-11 17:03:14 +0200 <hopelessness[m]> s/performUnsafeIO/unsafePerformIO/
2023-04-11 17:03:30 +0200 <TheMatten[m]> olle: There're libraries for that
2023-04-11 17:03:39 +0200 <hopelessness[m]> what do you want to do in the first place?
2023-04-11 17:03:42 +0200merijn(~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 252 seconds)
2023-04-11 17:05:13 +0200 <olle> Looking for strategies to extend the "functional core" of a system. I don't work in Haskell tho, just thought I'd ask here too. :)
2023-04-11 17:05:40 +0200 <hopelessness[m]> hm ok
2023-04-11 17:06:05 +0200 <hopelessness[m]> do you have an example in mind? I have a hard time understanding what you mean, I think 😅
2023-04-11 17:06:26 +0200 <olle> Not currently. :( I need one.
2023-04-11 17:06:53 +0200 <hopelessness[m]> ok, let me give a setup maybe
2023-04-11 17:09:13 +0200freeside(~mengwong@50.216.111.242) (Read error: Connection reset by peer)
2023-04-11 17:09:29 +0200 <hopelessness[m]> (unlines . reverse . lines) <$> readFile "foo.txt"
2023-04-11 17:09:58 +0200 <hopelessness[m]> this is just a basic example of reading a file and then reversing the order of all lines
2023-04-11 17:10:06 +0200 <hopelessness[m]> What would be a "better" way to do that?
2023-04-11 17:10:27 +0200 <olle> No, the issue is when the read depends on business logic somehow.
2023-04-11 17:10:42 +0200werneta(~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net)
2023-04-11 17:10:44 +0200 <hopelessness[m]> hm
2023-04-11 17:10:47 +0200 <olle> So the read happens _sometimes_ but not always :)
2023-04-11 17:11:12 +0200 <hopelessness[m]> ah,
2023-04-11 17:11:13 +0200 <hopelessness[m]> * ah
2023-04-11 17:16:37 +0200gnalzo(~gnalzo@2a01:e0a:498:fd50:fcc6:bb5d:489a:ce8c)
2023-04-11 17:17:20 +0200isekaijin(~isekaijin@user/isekaijin) (Read error: Connection reset by peer)
2023-04-11 17:17:51 +0200fryguybob(~fryguybob@cpe-24-94-50-22.stny.res.rr.com)
2023-04-11 17:18:49 +0200saolof(~saolof@2001:2002:5ae4:c319:4108:8be0:bf78:a848) (Remote host closed the connection)
2023-04-11 17:20:00 +0200saolof(~saolof@2001:2002:5ae4:c319:4108:8be0:bf78:a848)
2023-04-11 17:21:56 +0200saolof(~saolof@2001:2002:5ae4:c319:4108:8be0:bf78:a848) (Remote host closed the connection)
2023-04-11 17:23:44 +0200aweinstock(~aweinstoc@cpe-74-76-189-75.nycap.res.rr.com) (Ping timeout: 248 seconds)
2023-04-11 17:31:58 +0200 <ncf> first thing that comes to mind is the free monad over Reader Text, or something
2023-04-11 17:32:48 +0200yoneda(~mike@193.206.102.122) (Quit: leaving)
2023-04-11 17:34:42 +0200lortabac(~lortabac@2a01:e0a:541:b8f0:c066:a6a4:43b5:25e) (Ping timeout: 246 seconds)
2023-04-11 17:36:31 +0200use-value(~Thunderbi@2a00:23c6:8a03:2f01:9da2:60aa:4250:a867) (Remote host closed the connection)
2023-04-11 17:36:50 +0200use-value(~Thunderbi@2a00:23c6:8a03:2f01:75c2:a71f:beaa:29bf)
2023-04-11 17:37:09 +0200merijn(~merijn@86-86-29-250.fixed.kpn.net)
2023-04-11 17:37:51 +0200enoq(~enoq@2a05:1141:1f5:5600:b9c9:721a:599:bfe7) (Quit: enoq)
2023-04-11 17:37:57 +0200eggplantade(~Eggplanta@2600:1700:38c5:d800:ad1e:c088:4c6f:8ed8)
2023-04-11 17:41:06 +0200econo(uid147250@user/econo)
2023-04-11 17:41:38 +0200hugo(znc@verdigris.lysator.liu.se) (Ping timeout: 246 seconds)
2023-04-11 17:42:03 +0200merijn(~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 248 seconds)
2023-04-11 17:44:10 +0200 <olle> I'd need to read up on that :d
2023-04-11 17:44:17 +0200 <olle> Free monad, freer monad, ...
2023-04-11 17:49:13 +0200hugo-(znc@verdigris.lysator.liu.se)
2023-04-11 17:54:03 +0200hugo-(znc@verdigris.lysator.liu.se) (Ping timeout: 255 seconds)
2023-04-11 18:04:43 +0200 <ncf> olle: super basic example: https://f.monade.li/sUQK1S.hs
2023-04-11 18:05:03 +0200waleee(~waleee@2001:9b0:21c:4000:5bf9:6515:c030:57b7)
2023-04-11 18:05:19 +0200 <ncf> this is a monad that allows you to read something at most once (not technically a free monad, but maybe a "free idempotent monad" if you like)
2023-04-11 18:05:54 +0200fen46(~fen@250.79-105-213.static.virginmediabusiness.co.uk)
2023-04-11 18:06:11 +0200 <fen46> hi, re haskell as *not* a dependently typed language
2023-04-11 18:06:21 +0200 <fen46> given the type system is complete, whats the problem?
2023-04-11 18:06:56 +0200 <fen46> like, what we have at term level thats important is a completeness that the type system also has
2023-04-11 18:07:57 +0200 <fen46> where, by complete, i mean that since the top level function implementations can be recursive and so form a function graph...
2023-04-11 18:08:09 +0200 <fen46> graph like what a turing machine implements
2023-04-11 18:08:10 +0200hiredman(~hiredman@frontier1.downey.family)
2023-04-11 18:08:13 +0200 <fen46> so complete
2023-04-11 18:09:06 +0200 <fen46> the only thing i can think of is the problem of defunctionalisation
2023-04-11 18:09:16 +0200 <fen46> but thats just an inconvineice
2023-04-11 18:09:25 +0200MatthiasG(~MatthiasG@202.133.199.92) (Ping timeout: 260 seconds)
2023-04-11 18:09:39 +0200MatthiasG(~MatthiasG@119.56.103.127)
2023-04-11 18:09:52 +0200 <fen46> trying to think what a language extension that would satisfy the dependent programming problem
2023-04-11 18:10:05 +0200 <fen46> is it impossible to solve defunctionalisation using a language extension?
2023-04-11 18:11:03 +0200 <fen46> and can anyone think of anything else apart from that?
2023-04-11 18:11:22 +0200 <fen46> that would be required for the dependent typing problem to be considered solved
2023-04-11 18:11:24 +0200tzh(~tzh@c-24-21-73-154.hsd1.or.comcast.net)
2023-04-11 18:14:47 +0200 <ncf> er, "free pointed endofunctor", not free idempotent monad.
2023-04-11 18:15:10 +0200 <ncf> basically a functor-level Maybe
2023-04-11 18:15:11 +0200hugo-(znc@verdigris.lysator.liu.se)
2023-04-11 18:18:09 +0200MatthiasG(~MatthiasG@119.56.103.127) (Read error: Connection reset by peer)
2023-04-11 18:18:13 +0200 <ncf> with this, you can define `ask` as `Read id`, and then write computations just as in Reader r
2023-04-11 18:18:31 +0200MatthiasG(~MatthiasG@202.133.199.92)
2023-04-11 18:18:55 +0200 <c_wraith> fen46: Haskell can emulate a lot of what dependently-typed languages do, but it's verbose, indirect, and has some awful gaps like an utter lack of floating-point values at the type level.
2023-04-11 18:21:17 +0200 <fen46> can we do things like traversaable at type level?
2023-04-11 18:21:52 +0200 <fen46> a had a problem with scanning a hetrogenous list with a convolutional opperator
2023-04-11 18:22:31 +0200 <fen46> i think its quite an undertaking... but possible?
2023-04-11 18:23:16 +0200 <fen46> i have it written at term level, maybe someone could help me write it at type level?
2023-04-11 18:23:27 +0200 <c_wraith> It's probably possible to represent the aspects you care about. But that doesn't mean it's pleasant. Or even worth doing.
2023-04-11 18:23:29 +0200 <fen46> help me by writing it at type level*
2023-04-11 18:23:43 +0200 <fen46> c_wraith: its just a requirement
2023-04-11 18:23:59 +0200 <fen46> so its more like "can you avoid having to do it"
2023-04-11 18:24:22 +0200 <fen46> so, yeah, not doing convolutional scannings on hetrogenous lists...
2023-04-11 18:24:43 +0200Guest|18(~Guest|18@31.111.125.187)
2023-04-11 18:24:45 +0200 <fen46> im sure there are other uses
2023-04-11 18:24:50 +0200 <fen46> thats just the kind of test case
2023-04-11 18:25:57 +0200 <olle> ncf: right, and you combine the read with a lambda for a successful read?
2023-04-11 18:26:01 +0200 <fen46> eg if i wanted to zipWith (/), the lengthed lists in a hetrogenous list, and have to work out the resulting length
2023-04-11 18:26:18 +0200 <fen46> the adjacent antries of*
2023-04-11 18:26:21 +0200 <fen46> entries*
2023-04-11 18:26:58 +0200 <fen46> so then you have to do the same kind of scanning with adjacency convolution at type level with the length returning opperation
2023-04-11 18:27:08 +0200 <fen46> seems like a pretty general pattern
2023-04-11 18:27:18 +0200 <c_wraith> I strongly recommend not doing that
2023-04-11 18:27:25 +0200 <c_wraith> (In Haskell)
2023-04-11 18:27:29 +0200 <fen46> start hitting things like that pretty quickly when you start length annotating things
2023-04-11 18:27:43 +0200 <ncf> olle: not sure i understand the question
2023-04-11 18:27:51 +0200 <fen46> and yeah, basically have to if you want to do any fancy thing like passing around graphs with specified shapes
2023-04-11 18:27:57 +0200 <c_wraith> Even if you can make it work, it won't be worth using.
2023-04-11 18:28:01 +0200 <fen46> and then the levity recursion on that seems like it might kill you
2023-04-11 18:29:07 +0200 <fen46> c_wriath: i cant prove you wrong on that, but it seems pessimistic
2023-04-11 18:29:34 +0200 <fen46> but yeah, with the current state of defunctionalisation i would tend to agree out of sheer lacitude
2023-04-11 18:29:59 +0200 <fen46> and am constantly checking back in to see if theres any progress with the dependant typing language extension
2023-04-11 18:30:37 +0200 <fen46> lets just assume im thriftier than i actually am, and both need to and am able to wrangle these type level graph convolutions
2023-04-11 18:30:45 +0200 <fen46> and just am lacking the syntax
2023-04-11 18:32:06 +0200 <fen46> and yeah, i can think of a case, which is literally just the implementation of a graph, where you need to do basically an adjacency matrix exponentiation at type level
2023-04-11 18:32:35 +0200 <fen46> its not like its "unnecessary", its like the fundamentals of even being able to write the types of graphs
2023-04-11 18:33:32 +0200 <fen46> and, they are always hetrogenous, because they are supposed to be able to support representing programs
2023-04-11 18:34:05 +0200 <fen46> and there is some (truly ungodly) issue about the monad instance, of subgraphs, and the consequent hetroginaity
2023-04-11 18:35:05 +0200 <fen46> i mean, maybe its fine to have no type level representation of the way the program is structured
2023-04-11 18:35:20 +0200 <fen46> but it seems to kill everything at the levity recursion stage
2023-04-11 18:35:32 +0200werneta(~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net) (Remote host closed the connection)
2023-04-11 18:36:08 +0200 <fen46> i guess i might be suspecting that its actually writing the traversable machinery at type level, such that would allow to handle these hetrogenous convolutions, that would "solve all our problems"
2023-04-11 18:36:31 +0200MajorBiscuit(~MajorBisc@31-23-159.netrun.cytanet.com.cy) (Ping timeout: 252 seconds)
2023-04-11 18:36:38 +0200 <fen46> eg. by doing something like allowing for program representation using the graph representation it would support
2023-04-11 18:36:48 +0200Square(~Square4@user/square) (Ping timeout: 248 seconds)
2023-04-11 18:36:58 +0200 <fen46> and then somehow because thats available be able to act as a compiler or whatever you would need at type level thats apparently missing
2023-04-11 18:37:11 +0200 <fen46> pretty vague i know, sorry
2023-04-11 18:37:54 +0200 <fen46> like, what i think im saying is "people on about dependent types just want map to work out the box at type level"
2023-04-11 18:38:09 +0200 <fen46> and that actually wouldnt be that far from the point
2023-04-11 18:38:48 +0200merijn(~merijn@86-86-29-250.fixed.kpn.net)
2023-04-11 18:38:57 +0200 <fen46> obvs using tail recursion to derive the traversable and listlike alternative, monad and comonadic zipper opperations
2023-04-11 18:39:33 +0200 <fen46> like, dont forget i think being able to do map somehow extends to giving you pointers by suspended traversal since your just pattern matching on the head basically
2023-04-11 18:39:47 +0200 <fen46> traversable things flattening to lists modulo some shape data
2023-04-11 18:40:07 +0200drdo(~drdo@bl7-76-103.dsl.telepac.pt)
2023-04-11 18:40:18 +0200Albina_Pavlovna(~Albina_Pa@2603-7000-76f0-76e0-491d-4022-58a1-d85a.res6.spectrum.com) (Quit: ZZZzzz…)
2023-04-11 18:40:24 +0200 <fen46> "if only type level lists worket properly"
2023-04-11 18:40:47 +0200 <fen46> and then its like, well why dont they!?
2023-04-11 18:41:22 +0200 <fen46> where most of the list opperations are from prelude
2023-04-11 18:41:38 +0200ubert(~Thunderbi@2a02:8109:abc0:6434:81f3:78d3:e012:2761) (Remote host closed the connection)
2023-04-11 18:41:57 +0200 <fen46> so when i ask, can someone help me put the traversable etc. (through to comonadic pointer) opperations at type level
2023-04-11 18:42:17 +0200 <fen46> i imagine it is basically towards the effort of satisfying whats missing in terms of dependet types
2023-04-11 18:42:31 +0200 <fen46> and wonder why people just say things like "ooh, i wouldnt bother with that, sounds difficult"
2023-04-11 18:43:01 +0200 <fen46> instead of being like "omg, thats the best idea iv ever heard, now all i want to do is levity proof convolutions"
2023-04-11 18:44:16 +0200drdo(~drdo@bl7-76-103.dsl.telepac.pt) (Remote host closed the connection)
2023-04-11 18:44:35 +0200drdo(~drdo@bl7-76-103.dsl.telepac.pt)
2023-04-11 18:44:55 +0200 <fen46> like, i literally did something like a PHD on this, the dissuasion seems almost impertinent, given the technology has already been presented
2023-04-11 18:46:39 +0200elevenkb(~elevenkb@105.225.53.253)
2023-04-11 18:47:41 +0200Guest|18(~Guest|18@31.111.125.187) (Quit: Connection closed)
2023-04-11 18:48:25 +0200kuribas(~user@ip-188-118-57-242.reverse.destiny.be) (Quit: ERC (IRC client for Emacs 27.1))
2023-04-11 18:51:47 +0200opticblast(~Thunderbi@172.58.85.126)
2023-04-11 18:55:00 +0200razetime(~Thunderbi@117.193.7.1)
2023-04-11 18:57:56 +0200kenran(~user@user/kenran) (Remote host closed the connection)
2023-04-11 18:59:14 +0200MatthiasG(~MatthiasG@202.133.199.92) (Read error: Connection reset by peer)
2023-04-11 18:59:49 +0200MatthiasG(~MatthiasG@202.133.199.92)
2023-04-11 19:00:09 +0200notzmv(~zmv@user/notzmv)
2023-04-11 19:01:07 +0200opticblast(~Thunderbi@172.58.85.126) (Ping timeout: 265 seconds)
2023-04-11 19:02:14 +0200eggplantade(~Eggplanta@2600:1700:38c5:d800:ad1e:c088:4c6f:8ed8) (Remote host closed the connection)
2023-04-11 19:06:56 +0200 <fen46> the bit i cant do is understanding how it would work
2023-04-11 19:07:07 +0200 <fen46> like, if it were to be a language extension, or a module or something
2023-04-11 19:07:53 +0200 <fen46> to envisage what "does what it says on the tin" actually means for haskell and as close as it might become on its path *towards* dependent types
2023-04-11 19:08:15 +0200 <fen46> i think what i say could almost sound convincing that what you actually want is type level seti
2023-04-11 19:08:42 +0200 <fen46> is kind of what im trying to say, rather than "i really actually waant to have to write the program graphs"
2023-04-11 19:09:17 +0200 <fen46> like, we have recursive datatypes, so the main mechanism is present
2023-04-11 19:09:25 +0200 <fen46> which is why i basically think its complete i guess
2023-04-11 19:09:43 +0200 <fen46> so then the question is whats actually missing?
2023-04-11 19:09:49 +0200mbuf(~Shakthi@49.207.178.186) (Quit: Leaving)
2023-04-11 19:10:09 +0200 <fen46> and i can get pretty far with seti, and its as far as the prelude does, in offering the ground level haskell environment
2023-04-11 19:10:42 +0200pavonia(~user@user/siracusa) (Quit: Bye!)
2023-04-11 19:10:54 +0200 <fen46> i guess maybe i could use some kind of deriving instances in data families or what i cant even understand...
2023-04-11 19:11:25 +0200 <fen46> some kind of type level default instances or something is missing? i cant figure it out
2023-04-11 19:11:58 +0200 <fen46> basically wanting something like foldMapDefault
2023-04-11 19:12:10 +0200jpds(~jpds@gateway/tor-sasl/jpds) (Remote host closed the connection)
2023-04-11 19:12:11 +0200merijn(~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 264 seconds)
2023-04-11 19:12:24 +0200 <fen46> big complicated hierarchy of defaults from geti+seti instances
2023-04-11 19:12:41 +0200 <fen46> at Type Level...
2023-04-11 19:12:55 +0200 <fen46> and if thats literally all thats missing...
2023-04-11 19:13:04 +0200 <fen46> to give the absent type level prelude
2023-04-11 19:13:25 +0200 <fen46> and that with it, then dependent types isnt done, but haskell is more tooled up for type level programing
2023-04-11 19:13:37 +0200 <fen46> much more to the point where its usable
2023-04-11 19:13:48 +0200 <fen46> since traversable basically covers so much
2023-04-11 19:14:29 +0200 <fen46> so maybe my question is, would type level seti be a satesfactory standin for full dependent types
2023-04-11 19:14:38 +0200 <fen46> and if so, can i get some hands on!?
2023-04-11 19:14:58 +0200jtza8(~user@165.255.63.78)
2023-04-11 19:16:06 +0200 <fen46> like, if you think about how mental type level lenses in the style of ed kmett would be, and that the canonical version presented by geti+seti seems like  feasable implementation in comparison and would at least allow for lists to have the usual higher order functions over them
2023-04-11 19:16:56 +0200 <fen46> given thats basically "where its at" for haskell at term level, seems like this would be natural way to go towards type level land
2023-04-11 19:17:24 +0200 <fen46> since dependant languages exist and haskell will not likely join them
2023-04-11 19:17:41 +0200 <fen46> that this would be basically the best place for haskell to get developed
2023-04-11 19:18:23 +0200 <fen46> the actual instances are really simple, geti and seti that is, to mimic at type level alongside term level implementations
2023-04-11 19:18:24 +0200 <monochrom> I think at some point you need to recall that if no one is interested in your discussion then you should stop.
2023-04-11 19:18:44 +0200 <fen46> i wasnt even sure anyone was reading it
2023-04-11 19:18:53 +0200 <monochrom> Or at least switch to Facebook or Twitter.
2023-04-11 19:19:09 +0200 <fen46> so i shouldnt try and message you?
2023-04-11 19:19:46 +0200 <fen46> someone could weigh in with a comment on the subject material i guess
2023-04-11 19:19:53 +0200cfricke(~cfricke@user/cfricke) (Quit: WeeChat 3.8)
2023-04-11 19:19:57 +0200coot(~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba) (Quit: coot)
2023-04-11 19:20:06 +0200 <int-e> tl;dr
2023-04-11 19:20:46 +0200 <darkling> I think monochrom's point was that if nobody has by now, you're probably not going to get one...
2023-04-11 19:20:48 +0200 <fen46> tl;dr: i think i can convince you to write type level seti for me and add it to the language because its the best thing to do
2023-04-11 19:21:00 +0200 <monochrom> I personally start my discussion with one or maybe at most five lines. Then I suspend until someone shows interest. Otherwise let it go.
2023-04-11 19:21:39 +0200 <fen46> then im confused about the, it being the best thing ever and people, as you seem to imply not being interested
2023-04-11 19:21:52 +0200 <monochrom> But if that's against your philosophy, you can always go to Twitter, and no one will complain there.
2023-04-11 19:21:59 +0200 <fen46> it does seem accurate to be fair
2023-04-11 19:22:18 +0200jpds(~jpds@gateway/tor-sasl/jpds)
2023-04-11 19:22:34 +0200 <fen46> i guess im *not* convinced people arent interested, you just set the tone
2023-04-11 19:23:24 +0200 <monochrom> No, I spoke what other people were too polite to speak.
2023-04-11 19:23:32 +0200 <fen46> oh right, your just complaining about the messages. yeah, im not too stoked on doing stuff either
2023-04-11 19:23:33 +0200vglfr(~vglfr@88.155.17.187) (Ping timeout: 256 seconds)
2023-04-11 19:23:39 +0200 <fen46> oh, ok the flood. my bad.
2023-04-11 19:23:43 +0200 <fen46> im dumb like that
2023-04-11 19:23:49 +0200 <fen46> i didnt realise people were online.
2023-04-11 19:24:23 +0200 <fen46> sorry ill shut up. but any input would still be appreciated if thats where a discussion could lead
2023-04-11 19:24:31 +0200 <monochrom> My said technique of "at most 5 lines then suspend" can be learned.
2023-04-11 19:24:41 +0200vglfr(~vglfr@88.155.17.187)
2023-04-11 19:24:51 +0200 <fen46> im wondering if my subject material can be...
2023-04-11 19:24:52 +0200 <monochrom> Or else switching to a suitable social media platform can be easily done.
2023-04-11 19:25:07 +0200 <fen46> i was yet to be aware of these fantastic techniques
2023-04-11 19:25:24 +0200 <fen46> im still keen on input
2023-04-11 19:25:55 +0200tlaxkit(~hexchat@170.253.32.109) (Quit: Saliendo...)
2023-04-11 19:25:58 +0200 <fen46> so my one question. if seti could help haskell at type level, would you be interested?
2023-04-11 19:26:18 +0200 <fen46> since i guess everything rests on that
2023-04-11 19:26:45 +0200razetime(~Thunderbi@117.193.7.1) (Remote host closed the connection)
2023-04-11 19:34:15 +0200eggplantade(~Eggplanta@2600:1700:38c5:d800:ad1e:c088:4c6f:8ed8)
2023-04-11 19:34:17 +0200Albina_Pavlovna(~Albina_Pa@2603-7000-76f0-76e0-491d-4022-58a1-d85a.res6.spectrum.com)
2023-04-11 19:35:01 +0200Guest87(~Guest87@047-224-137-232.res.spectrum.com)
2023-04-11 19:40:37 +0200MatthiasG(~MatthiasG@202.133.199.92) (Ping timeout: 268 seconds)
2023-04-11 19:40:45 +0200MatthiasG(~MatthiasG@202.133.199.92)
2023-04-11 19:41:03 +0200MatthiasG(~MatthiasG@202.133.199.92) (Read error: Connection reset by peer)
2023-04-11 19:42:51 +0200 <Guest87> @pl \x -> f x + g x
2023-04-11 19:42:51 +0200 <lambdabot> liftM2 (+) f g
2023-04-11 19:44:12 +0200 <Guest87> @pl \x -> x +x
2023-04-11 19:44:12 +0200 <lambdabot> join (+)
2023-04-11 19:45:06 +0200L29Ah(~L29Ah@wikipedia/L29Ah)
2023-04-11 19:47:00 +0200Guest87(~Guest87@047-224-137-232.res.spectrum.com) (Quit: Client closed)
2023-04-11 19:53:52 +0200[exa](~exa@srv3n.blesmrt.net) (Changing host)
2023-04-11 19:53:52 +0200[exa](~exa@user/exa/x-3587197)
2023-04-11 19:55:32 +0200eggplantade(~Eggplanta@2600:1700:38c5:d800:ad1e:c088:4c6f:8ed8) (Remote host closed the connection)
2023-04-11 19:55:33 +0200mechap(~mechap@user/mechap)
2023-04-11 20:00:14 +0200jtza8(~user@165.255.63.78) (Remote host closed the connection)
2023-04-11 20:00:18 +0200 <ncf> to whom it may interest: the construction i was trying to describe earlier is analogous to the "free monoid on a semigroup", i.e. the left adjoint to the forgetful functor from monoids to semigroups
2023-04-11 20:01:00 +0200 <ncf> so, it's a "functorification" of the instance Semigroup a => Monoid (Maybe a) (https://hackage.haskell.org/package/base-4.18.0.0/docs/src/GHC.Base.html#line-489)
2023-04-11 20:09:16 +0200merijn(~merijn@86-86-29-250.fixed.kpn.net)
2023-04-11 20:09:20 +0200coot(~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba)
2023-04-11 20:12:18 +0200coot_(~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba)
2023-04-11 20:14:56 +0200coot(~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba) (Ping timeout: 246 seconds)
2023-04-11 20:14:56 +0200coot_coot
2023-04-11 20:15:28 +0200kenran(~user@user/kenran)
2023-04-11 20:16:41 +0200jpds(~jpds@gateway/tor-sasl/jpds) (Ping timeout: 255 seconds)
2023-04-11 20:17:42 +0200jpds(~jpds@gateway/tor-sasl/jpds)
2023-04-11 20:20:18 +0200 <fen46> (geti,set) :: (Geti f i => f a -> ((a,i),f a),Seti f i => ((a,i),f a) -> f a)
2023-04-11 20:31:55 +0200eggplantade(~Eggplanta@104-55-37-220.lightspeed.sntcca.sbcglobal.net)
2023-04-11 20:34:53 +0200fen46(~fen@250.79-105-213.static.virginmediabusiness.co.uk) (Ping timeout: 265 seconds)
2023-04-11 20:41:53 +0200jero98772(~jero98772@2800:484:1d84:9000::5) (Ping timeout: 246 seconds)
2023-04-11 20:43:01 +0200merijn(~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 276 seconds)
2023-04-11 20:43:57 +0200pwug(~pwug@user/pwug)
2023-04-11 20:52:04 +0200codaraxis(~codaraxis@user/codaraxis)
2023-04-11 20:53:36 +0200jero98772(~jero98772@2800:484:1d84:9000::5)
2023-04-11 21:13:22 +0200BOO(~BOO@220-129-34-70.dynamic-ip.hinet.net)
2023-04-11 21:25:22 +0200merijn(~merijn@86-86-29-250.fixed.kpn.net)
2023-04-11 21:28:44 +0200MajorBiscuit(~MajorBisc@31-23-159.netrun.cytanet.com.cy)
2023-04-11 21:29:54 +0200merijn(~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 252 seconds)
2023-04-11 21:33:42 +0200ix(~ix@2a02:8012:281f:0:d65d:64ff:fe52:5efe)
2023-04-11 21:34:55 +0200eggplantade(~Eggplanta@104-55-37-220.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
2023-04-11 21:49:57 +0200vglfr_(~vglfr@88.155.17.187)
2023-04-11 21:50:56 +0200haritz(~hrtz@user/haritz) (Ping timeout: 248 seconds)
2023-04-11 21:51:16 +0200coot(~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba) (Remote host closed the connection)
2023-04-11 21:52:15 +0200jero98772(~jero98772@2800:484:1d84:9000::5) (Ping timeout: 265 seconds)
2023-04-11 21:53:14 +0200BOO(~BOO@220-129-34-70.dynamic-ip.hinet.net) (Quit: Client closed)
2023-04-11 21:53:41 +0200kenran(~user@user/kenran) (Remote host closed the connection)
2023-04-11 21:53:50 +0200jerg(~jerg@2001:a61:6134:5201:5df3:da85:9419:73e)
2023-04-11 21:55:03 +0200merijn(~merijn@86-86-29-250.fixed.kpn.net)
2023-04-11 21:55:26 +0200ft(~ft@p4fc2a88b.dip0.t-ipconnect.de)
2023-04-11 21:57:01 +0200heraldo(~heraldo@user/heraldo)
2023-04-11 21:57:23 +0200vglfr_(~vglfr@88.155.17.187) (Quit: leaving)
2023-04-11 21:58:11 +0200Square(~Square@user/square)
2023-04-11 22:01:54 +0200auiee(~vglfr@88.155.17.187)
2023-04-11 22:03:42 +0200auiee(~vglfr@88.155.17.187) (Client Quit)
2023-04-11 22:03:48 +0200Sciencentistguy1(~sciencent@hacksoc/ordinary-member)
2023-04-11 22:05:30 +0200jero98772(~jero98772@2800:484:1d84:9000::5)
2023-04-11 22:05:52 +0200Sciencentistguy(~sciencent@hacksoc/ordinary-member) (Ping timeout: 248 seconds)
2023-04-11 22:05:52 +0200Sciencentistguy1Sciencentistguy
2023-04-11 22:06:59 +0200auiee(~vglfr@88.155.17.187)
2023-04-11 22:08:49 +0200gnalzo(~gnalzo@2a01:e0a:498:fd50:fcc6:bb5d:489a:ce8c) (Quit: WeeChat 3.8)
2023-04-11 22:08:52 +0200auiee(~vglfr@88.155.17.187) (Client Quit)
2023-04-11 22:10:59 +0200Square2(~Square4@user/square)
2023-04-11 22:12:56 +0200merijn(~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 246 seconds)
2023-04-11 22:13:14 +0200jpds(~jpds@gateway/tor-sasl/jpds) (Ping timeout: 255 seconds)
2023-04-11 22:13:24 +0200troydm(~troydm@user/troydm) (Quit: What is Hope? That all of your wishes and all of your dreams come true? To turn back time because things were not supposed to happen like that (C) Rau Le Creuset)
2023-04-11 22:13:43 +0200jpds(~jpds@gateway/tor-sasl/jpds)
2023-04-11 22:14:09 +0200Square(~Square@user/square) (Ping timeout: 255 seconds)
2023-04-11 22:14:14 +0200troydm(~troydm@user/troydm)
2023-04-11 22:14:33 +0200Square2Square
2023-04-11 22:23:33 +0200elevenkb(~elevenkb@105.225.53.253) (Quit: Client closed)
2023-04-11 22:25:22 +0200mei(~mei@user/mei) (Remote host closed the connection)
2023-04-11 22:27:47 +0200mei(~mei@user/mei)
2023-04-11 22:33:21 +0200_ht(~Thunderbi@28-52-174-82.ftth.glasoperator.nl) (Remote host closed the connection)
2023-04-11 22:33:49 +0200pavonia(~user@user/siracusa)
2023-04-11 22:35:14 +0200michalz(~michalz@185.246.204.101) (Remote host closed the connection)
2023-04-11 22:35:24 +0200eggplantade(~Eggplanta@2600:1700:38c5:d800:ad1e:c088:4c6f:8ed8)
2023-04-11 22:39:18 +0200merijn(~merijn@86-86-29-250.fixed.kpn.net)
2023-04-11 22:39:59 +0200eggplantade(~Eggplanta@2600:1700:38c5:d800:ad1e:c088:4c6f:8ed8) (Ping timeout: 250 seconds)
2023-04-11 22:43:02 +0200MajorBiscuit(~MajorBisc@31-23-159.netrun.cytanet.com.cy) (Quit: WeeChat 3.6)
2023-04-11 22:49:28 +0200Batzy_(~quassel@user/batzy)
2023-04-11 22:52:16 +0200Batzy(~quassel@user/batzy) (Ping timeout: 248 seconds)
2023-04-11 22:53:33 +0200haritz(~hrtz@2a02:8010:65b5:0:6009:6384:e3cb:2220)
2023-04-11 22:53:33 +0200haritz(~hrtz@2a02:8010:65b5:0:6009:6384:e3cb:2220) (Changing host)
2023-04-11 22:53:33 +0200haritz(~hrtz@user/haritz)
2023-04-11 22:57:51 +0200Batzy(~quassel@user/batzy)
2023-04-11 23:01:05 +0200Batzy_(~quassel@user/batzy) (Ping timeout: 260 seconds)
2023-04-11 23:02:01 +0200jero98772(~jero98772@2800:484:1d84:9000::5) (Ping timeout: 240 seconds)
2023-04-11 23:07:11 +0200 <olle> In terms of design by contract, would you say an IO write is more complex than an IO read?
2023-04-11 23:09:02 +0200sammelweis(~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Quit: No Ping reply in 180 seconds.)
2023-04-11 23:10:49 +0200sammelweis(~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10)
2023-04-11 23:13:21 +0200 <Hecate> I've never done DbC
2023-04-11 23:13:33 +0200jero98772(~jero98772@2800:484:1d84:9000::5)
2023-04-11 23:13:54 +0200merijn(~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 265 seconds)
2023-04-11 23:25:04 +0200Albina_Pavlovna(~Albina_Pa@2603-7000-76f0-76e0-491d-4022-58a1-d85a.res6.spectrum.com) (Quit: ZZZzzz…)
2023-04-11 23:25:50 +0200 <olle> Fair enough
2023-04-11 23:27:48 +0200 <sm> olle: what's an example of applying design by contract here ?
2023-04-11 23:28:31 +0200 <sm> is it another way of saying, is the specification of one more complex than the other ?
2023-04-11 23:29:47 +0200 <zq> just read the backpack paper and have questions, any recommendations on a good place to ask?
2023-04-11 23:32:25 +0200 <olle> sm: I'm thinking of pre- and post-conditions, and how their complexity are affected by a function reading or writing to stuff
2023-04-11 23:32:33 +0200 <monochrom> I may still recall a little bit of backpack stuff.
2023-04-11 23:32:54 +0200 <sm> aha
2023-04-11 23:34:21 +0200 <olle> For example, if you have a company that _only_ reads from file, the order of the functions probably won't matter (much?). But if one function also writes to file, order might become important.
2023-04-11 23:34:43 +0200 <olle> company/function/s
2023-04-11 23:34:44 +0200 <olle> ><
2023-04-11 23:34:54 +0200 <hpc> alternatively, if you only write to a file, do you even have to do anything at all?
2023-04-11 23:34:59 +0200 <monochrom> IMO pre/post conditions are utterly useless for I/O R/W unless you make the totally ancient (Apple-DOS era) assumption that you are the only one accessing the file system and so the file system is just one huge but unshared mutable variable.
2023-04-11 23:36:03 +0200 <monochrom> In this The Year 2023 of Our Lord, the file system is emphatically shared and multi-user. You are better off with at the very least automata or any concurrency theory.
2023-04-11 23:37:13 +0200 <monochrom> (If you haven't heard of Apple DOS, then try CP/M.)
2023-04-11 23:38:09 +0200 <olle> I'm assuming atomic access to file system here
2023-04-11 23:38:53 +0200 <monochrom> I was not even bringing up non-atomicity in the real world.
2023-04-11 23:39:12 +0200 <olle> Well
2023-04-11 23:39:25 +0200 <olle> In any case, my question is how to compare the complexity of one contract to another :)
2023-04-11 23:39:40 +0200 <hpc> once you get small enough, every operation is atomic
2023-04-11 23:39:45 +0200 <monochrom> I was, merely, pointing out that even with atomicity, you even cannot assume "read that location; 5 seconds later, read that location again" is idempotent.
2023-04-11 23:40:19 +0200 <hpc> just keep subdividing the non-atomic operations
2023-04-11 23:41:02 +0200 <hpc> olle: this class of problem (especially on the filesystem) is called time-of-call/time-of-use
2023-04-11 23:41:31 +0200 <monochrom> I have a feeling that, as usual, comparing two contracts is undecidable.
2023-04-11 23:41:32 +0200 <hpc> between stating a file and opening it, something else deleted it
2023-04-11 23:41:39 +0200 <olle> hpc: still unrelated ^^
2023-04-11 23:41:56 +0200 <monochrom> Right? Even "merely" comparing two CFGs is already undecidable.
2023-04-11 23:42:10 +0200koolazer(~koo@user/koolazer)
2023-04-11 23:43:26 +0200 <olle> To take an example, imagine you have function F that reads 3 times and writes 2 times, and function G that reads 2 times and writes 3 times. Does it make sense to compare their contracts from such a perspective?
2023-04-11 23:43:39 +0200 <hpc> olle: i guess the answer to the question as stated then is, neither operation has a consistent "complexity" value by measures that make sense
2023-04-11 23:43:53 +0200 <hpc> imagine you have a function H that reads 100 times, and a funcgion I that writes 100 times
2023-04-11 23:44:03 +0200 <olle> Maybe not
2023-04-11 23:44:04 +0200 <hpc> in the case of H, it's equivalent to reading once
2023-04-11 23:44:09 +0200 <hpc> in I, it's equivalent to doing nothing at all
2023-04-11 23:44:14 +0200 <hpc> because you never read
2023-04-11 23:44:41 +0200 <monochrom> But that's for very private local vars that no one else can observe.
2023-04-11 23:44:44 +0200 <hpc> (or if I is part of a larger system, I is equivalent to writing once)
2023-04-11 23:44:51 +0200 <olle> I mean, some other function can read. :)
2023-04-11 23:45:21 +0200 <olle> Read/write to/from file, that is
2023-04-11 23:45:38 +0200 <hpc> you'd need to come up with some way of analyzing F/G such that you can say F has 15 complexity points and G has 12
2023-04-11 23:45:59 +0200 <hpc> maybe that means how many ways you can reorder the read/write calls and get funny results, or something like that
2023-04-11 23:46:28 +0200 <monochrom> Although, entropy and information theory says that writing generates more waste heat than reading.
2023-04-11 23:46:29 +0200 <olle> Yeah, the crucial point is how the reads/writes depend on each other.
2023-04-11 23:47:35 +0200 <monochrom> Or maybe not. If you read to somewhere, that also means writing to that somewhere. meh.
2023-04-11 23:48:17 +0200 <olle> hpc: Sounds like some type of graph analysis
2023-04-11 23:48:31 +0200 <olle> What depends on what in which order
2023-04-11 23:48:50 +0200 <olle> Where independent reads/writes could be considered less complex [for the human brain]
2023-04-11 23:49:31 +0200 <hpc> actually, that reordering idea doesn't quite make sense, you'd basically be measuring concurrency issues instead
2023-04-11 23:49:32 +0200monochromon next year's April 1st will go to the linux kernel and swap read() and write(), rationale being that the original "read"() writes to memory, and the original "write"() reads from memory. >:D
2023-04-11 23:50:42 +0200 <olle> hpc: No, I think it has some merit. Imagine copy a file and delete the original. Not good if you delete the original first. ^^'
2023-04-11 23:53:51 +0200 <hpc> sure, but that doesn't say which operation to attribute that misbehavior to
2023-04-11 23:54:43 +0200 <olle> The post-condition breaks if you re-order the reads/writes?
2023-04-11 23:55:02 +0200 <monochrom> Um, you always attribute misbehaviours to the programmer!
2023-04-11 23:55:07 +0200 <hpc> yeah, but which was it, read or write?
2023-04-11 23:55:22 +0200 <hpc> you have to say one of them contributed more to the problem than the other, otherwise you can't get that "X is more complex than Y" metric
2023-04-11 23:55:48 +0200 <olle> hpc: Does it matter? It should be compared to another function that also has one read and one write where a re-order does _not_ cause a bug.
2023-04-11 23:55:57 +0200 <olle> Wait
2023-04-11 23:56:14 +0200 <mauke> monochrom: https://www.ioccc.org/1984/anonymous/anonymous.c
2023-04-11 23:56:24 +0200 <olle> I'm confusing semantics with syntax or something
2023-04-11 23:57:17 +0200 <olle> Wait, is the conclusion that cp is less complex than mv?
2023-04-11 23:57:53 +0200 <monochrom> Wait a second, '-'-'-' is now a file descriptor... haha
2023-04-11 23:58:08 +0200 <monochrom> OK I am now too scared to run that program.
2023-04-11 23:58:11 +0200 <olle> Well cp is read-write and mv is read-write-write (second write is the delete)
2023-04-11 23:59:02 +0200 <geekosaur> unless it's on the same filesystem in whoich case it's write-write (link, unlink)
2023-04-11 23:59:15 +0200 <olle> Obviously you couldn't implement cp as write-read either :d