Home liberachat/#haskell: Logs Calendar

Logs on 2022-04-29 (liberachat/#haskell)

00:00:59 bitdex joins (~bitdex@gateway/tor-sasl/bitdex)
00:01:16 mjs2600 joins (~mjs2600@c-24-91-3-49.hsd1.vt.comcast.net)
00:04:58 × eggplantade quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
00:10:22 × mjs2600 quits (~mjs2600@c-24-91-3-49.hsd1.vt.comcast.net) (Read error: Connection reset by peer)
00:10:46 mjs2600 joins (~mjs2600@c-24-91-3-49.hsd1.vt.comcast.net)
00:19:08 × vicfred quits (~vicfred@user/vicfred) (Quit: Leaving)
00:20:00 × pretty_dumm_guy quits (trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) (Quit: WeeChat 3.5)
00:22:19 × xaotuk quits (~sasha@2a06:5b00:15fe:9b00::2) (Ping timeout: 260 seconds)
00:24:13 xaotuk joins (~sasha@net162-32-245-109.mbb.telenor.rs)
00:27:01 abastro joins (~abab9579@220.75.216.63)
00:29:12 × pwug quits (~pwug@user/pwug) (Quit: Leaving)
00:29:44 tommd joins (~tommd@97-120-41-123.ptld.qwest.net)
00:30:41 totbwf__ joins (sid402332@id-402332.uxbridge.irccloud.com)
00:31:05 × kaph quits (~kaph@net-2-42-128-49.cust.vodafonedsl.it) (Ping timeout: 256 seconds)
00:41:30 eggplantade joins (~Eggplanta@108.201.191.115)
00:45:59 totbwf__ is now known as totbwf
00:57:24 × [itchyjunk] quits (~itchyjunk@user/itchyjunk/x-7353470) (Ping timeout: 240 seconds)
00:58:12 × raehik quits (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 276 seconds)
00:58:51 × yauhsien quits (~yauhsien@61-231-19-191.dynamic-ip.hinet.net) (Ping timeout: 256 seconds)
00:59:44 × machinedgod quits (~machinedg@24.105.81.50) (Ping timeout: 272 seconds)
01:01:34 [itchyjunk] joins (~itchyjunk@user/itchyjunk/x-7353470)
01:02:13 × eggplantade quits (~Eggplanta@108.201.191.115) (Remote host closed the connection)
01:02:27 king_gs joins (~Thunderbi@2806:103e:29:1f3f:9059:7534:3810:b9c6)
01:03:06 littlebobeep joins (~alMalsamo@gateway/tor-sasl/almalsamo)
01:07:26 frost joins (~frost@user/frost)
01:10:30 × albet70 quits (~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection)
01:13:46 eggplantade joins (~Eggplanta@108.201.191.115)
01:16:37 albet70 joins (~xxx@2400:8902::f03c:92ff:fe60:98d8)
00:00:00 <parse error>
01:20:23 × mmhat quits (~mmh@55d4d51f.access.ecotel.net) (Ping timeout: 256 seconds)
01:21:40 jargon_ joins (~jargon@174-22-206-112.phnx.qwest.net)
01:21:58 × Macbethwin quits (~chargen@D964062A.static.ziggozakelijk.nl) (Remote host closed the connection)
01:22:12 littlebobeep joins (~alMalsamo@gateway/tor-sasl/almalsamo)
01:22:17 Macbethwin joins (~chargen@D964062A.static.ziggozakelijk.nl)
01:22:36 × mc47 quits (~mc47@xmonad/TheMC47) (Remote host closed the connection)
01:23:33 × jargon quits (~jargon@174-22-223-120.phnx.qwest.net) (Ping timeout: 276 seconds)
01:23:51 <abastro[m]> Can anyone tell me why the second answer from https://stackoverflow.com/questions/14012603/how-to-implement-dijkstra-algorithm-in-haskell is SPFA not dijkstra?
01:24:33 xff0x_ joins (~xff0x@om126167099166.29.openmobile.ne.jp)
01:26:15 jao joins (~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net)
01:32:04 × hololeap quits (~hololeap@user/hololeap) (Ping timeout: 240 seconds)
01:32:42 mmhat joins (~mmh@55d4d7fb.access.ecotel.net)
01:34:57 hololeap joins (~hololeap@user/hololeap)
01:41:01 × lechner quits (lechner@debian/lechner) (Quit: WeeChat 3.5)
01:42:08 lechner joins (lechner@debian/lechner)
01:43:03 × dcoutts_ quits (~duncan@host213-122-143-245.range213-122.btcentralplus.com) (Ping timeout: 276 seconds)
01:43:07 andrey__ joins (~andrey@p200300dbcf087900604788b0cc6ab984.dip0.t-ipconnect.de)
01:45:51 × andrey_ quits (~andrey@p200300dbcf11ae00e8dd79092b2d901b.dip0.t-ipconnect.de) (Ping timeout: 260 seconds)
01:56:11 × hololeap quits (~hololeap@user/hololeap) (Remote host closed the connection)
01:56:29 wroathe joins (~wroathe@206-55-188-8.fttp.usinternet.com)
01:56:29 × wroathe quits (~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host)
01:56:29 wroathe joins (~wroathe@user/wroathe)
01:56:55 yauhsien joins (~yauhsien@61-231-19-191.dynamic-ip.hinet.net)
02:02:39 × yauhsien quits (~yauhsien@61-231-19-191.dynamic-ip.hinet.net) (Ping timeout: 240 seconds)
02:05:09 × xaotuk quits (~sasha@net162-32-245-109.mbb.telenor.rs) (Ping timeout: 276 seconds)
02:05:34 leungbk joins (~user@2603-8000-1201-2dd2-8941-f45a-8e9c-72d3.res6.spectrum.com)
02:06:19 × tommd quits (~tommd@97-120-41-123.ptld.qwest.net) (Ping timeout: 240 seconds)
02:19:33 finn_elija joins (~finn_elij@user/finn-elija/x-0085643)
02:19:33 × FinnElija quits (~finn_elij@user/finn-elija/x-0085643) (Killed (NickServ (Forcing logout FinnElija -> finn_elija)))
02:19:33 finn_elija is now known as FinnElija
02:20:08 gpncarl joins (~gpncarl@210.12.195.5)
02:20:51 × gpncarl_ quits (~gpncarl@210.12.195.5) (Ping timeout: 260 seconds)
02:26:52 AlexNoo_ joins (~AlexNoo@178.34.160.71)
02:29:03 × AlexZenon quits (~alzenon@94.233.241.106) (Ping timeout: 246 seconds)
02:29:39 × Alex_test quits (~al_test@94.233.241.106) (Ping timeout: 240 seconds)
02:30:50 × king_gs quits (~Thunderbi@2806:103e:29:1f3f:9059:7534:3810:b9c6) (Ping timeout: 250 seconds)
02:30:56 × AlexNoo quits (~AlexNoo@94.233.241.106) (Ping timeout: 272 seconds)
02:32:19 × wroathe quits (~wroathe@user/wroathe) (Ping timeout: 240 seconds)
02:33:04 kaph joins (~kaph@net-2-42-128-205.cust.vodafonedsl.it)
02:33:57 AlexZenon joins (~alzenon@178.34.160.71)
02:34:07 Alex_test joins (~al_test@178.34.160.71)
02:34:37 × td_ quits (~td@muedsl-82-207-238-120.citykom.de) (Ping timeout: 256 seconds)
02:36:04 td_ joins (~td@muedsl-82-207-238-122.citykom.de)
02:45:08 × waleee quits (~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340) (Ping timeout: 250 seconds)
02:48:58 littlebo1eep joins (~alMalsamo@gateway/tor-sasl/almalsamo)
02:49:04 × littlebobeep quits (~alMalsamo@gateway/tor-sasl/almalsamo) (Ping timeout: 240 seconds)
02:51:08 tommd joins (~tommd@97-120-41-123.ptld.qwest.net)
02:52:25 king_gs joins (~Thunderbi@2806:103e:29:1f3f:9059:7534:3810:b9c6)
02:52:31 deadmarshal_ joins (~deadmarsh@95.38.119.247)
02:54:16 oxide joins (~lambda@user/oxide)
02:54:43 × mmhat quits (~mmh@55d4d7fb.access.ecotel.net) (Quit: WeeChat 3.5)
02:57:05 × Techcable quits (~Techcable@user/Techcable) (Remote host closed the connection)
02:57:32 × deadmarshal_ quits (~deadmarsh@95.38.119.247) (Ping timeout: 272 seconds)
02:58:18 Techcable joins (~Techcable@user/Techcable)
02:59:20 Techcable_ joins (~Techcable@user/Techcable)
03:03:39 × gpncarl quits (~gpncarl@210.12.195.5) (Ping timeout: 240 seconds)
03:06:22 × leungbk quits (~user@2603-8000-1201-2dd2-8941-f45a-8e9c-72d3.res6.spectrum.com) (Ping timeout: 250 seconds)
03:06:57 gpncarl joins (~gpncarl@210.12.195.5)
03:12:26 × mvk quits (~mvk@2607:fea8:5ce3:8500::aa1d) (Ping timeout: 250 seconds)
03:15:09 leungbk joins (~user@2603-8000-1201-2dd2-8941-f45a-8e9c-72d3.res6.spectrum.com)
03:15:16 × abastro quits (~abab9579@220.75.216.63) (Ping timeout: 272 seconds)
03:25:51 × zebrag quits (~chris@user/zebrag) (Quit: Konversation terminated!)
03:26:06 × jao quits (~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net) (Ping timeout: 246 seconds)
03:42:00 × gpncarl quits (~gpncarl@210.12.195.5) (Ping timeout: 276 seconds)
03:42:26 mebious404 joins (~mebious40@2804:14d:5c31:9869:7fe5:542d:50f:c775)
03:44:15 benin joins (~benin@183.82.204.110)
03:49:20 × mebious404 quits (~mebious40@2804:14d:5c31:9869:7fe5:542d:50f:c775) (Quit: Leaving)
03:50:14 × Techcable quits (~Techcable@user/Techcable) (Remote host closed the connection)
03:50:14 × Techcable_ quits (~Techcable@user/Techcable) (Remote host closed the connection)
03:51:37 × Unicorn_Princess quits (~Unicorn_P@93-103-228-248.dynamic.t-2.net) (Remote host closed the connection)
04:00:14 × tommd quits (~tommd@97-120-41-123.ptld.qwest.net) (Ping timeout: 272 seconds)
04:00:34 × littlebo1eep quits (~alMalsamo@gateway/tor-sasl/almalsamo) (Ping timeout: 240 seconds)
04:05:59 slaydr joins (~seriley@75.164.21.11)
04:06:32 × slaydr quits (~seriley@75.164.21.11) (Client Quit)
04:10:12 × Macbethwin quits (~chargen@D964062A.static.ziggozakelijk.nl) (Ping timeout: 246 seconds)
04:13:13 notzmv joins (~zmv@user/notzmv)
04:15:14 × Vajb quits (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi) (Read error: Connection reset by peer)
04:18:30 × leungbk quits (~user@2603-8000-1201-2dd2-8941-f45a-8e9c-72d3.res6.spectrum.com) (Read error: Connection reset by peer)
04:19:32 leungbk joins (~user@2603-8000-1201-2dd2-8941-f45a-8e9c-72d3.res6.spectrum.com)
04:21:09 P1RATEZ joins (piratez@cpe98524ab27125-cm98524ab27123.cpe.net.cable.rogers.com)
04:25:39 littlebobeep joins (~alMalsamo@gateway/tor-sasl/almalsamo)
04:25:41 × tureba quits (~tureba@tureba.org) (Ping timeout: 256 seconds)
04:26:25 tureba joins (~tureba@tureba.org)
04:28:56 takuan joins (~takuan@178-116-218-225.access.telenet.be)
04:29:09 × P1RATEZ quits (piratez@cpe98524ab27125-cm98524ab27123.cpe.net.cable.rogers.com) (Changing host)
04:29:09 P1RATEZ joins (piratez@user/p1ratez)
04:29:54 × P1RATEZ quits (piratez@user/p1ratez) (Remote host closed the connection)
04:33:37 × zyklotomic quits (~ethan@res380d-128-61-87-30.res.gatech.edu) (Ping timeout: 256 seconds)
04:35:01 jakalx parts (~jakalx@base.jakalx.net) ()
04:35:40 zyklotomic joins (~ethan@res380d-128-61-85-233.res.gatech.edu)
04:37:57 P1RATEZ joins (piratez@user/p1ratez)
04:38:34 jaamro is now known as ormaaj
04:43:45 × redb quits (~nmh@136.49.49.211) (Ping timeout: 276 seconds)
04:43:59 cynomys joins (~cynomys@user/cynomys)
04:53:54 × xff0x_ quits (~xff0x@om126167099166.29.openmobile.ne.jp) (Read error: Connection reset by peer)
04:53:58 redb joins (~nmh@136.49.49.211)
04:56:05 Vajb joins (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi)
04:58:30 × redb quits (~nmh@136.49.49.211) (Ping timeout: 272 seconds)
05:01:04 deadmarshal_ joins (~deadmarsh@95.38.119.247)
05:03:22 × kmein quits (~weechat@user/kmein) (Quit: ciao kakao)
05:05:25 kmein joins (~weechat@user/kmein)
05:07:45 vicfred joins (~vicfred@user/vicfred)
05:08:22 redb joins (~nmh@136.49.49.211)
05:10:10 xff0x_ joins (~xff0x@om126167099166.29.openmobile.ne.jp)
05:10:51 michalz joins (~michalz@185.246.204.109)
05:15:36 × redb quits (~nmh@136.49.49.211) (Ping timeout: 272 seconds)
05:17:31 Techcable joins (~Techcable@user/Techcable)
05:20:36 jakalx joins (~jakalx@base.jakalx.net)
05:22:47 × liz quits (~liz@host109-151-125-217.range109-151.btcentralplus.com) (Quit: Lost terminal)
05:23:34 redb joins (~nmh@136.49.49.211)
05:34:44 gpncarl joins (~gpncarl@210.12.195.5)
05:36:34 × littlebobeep quits (~alMalsamo@gateway/tor-sasl/almalsamo) (Ping timeout: 240 seconds)
05:38:38 littlebobeep joins (~alMalsamo@gateway/tor-sasl/almalsamo)
05:38:58 × jargon_ quits (~jargon@174-22-206-112.phnx.qwest.net) (Quit: Nini. ZZzz...)
05:52:32 <dsal> abastro[m]: I'm too about to go to bed to read that, but I think it's just looking at the shortest path to the next node. dijkstra looks at the shortest total path on every step.
05:57:49 × bliminse_ quits (~bliminse@host86-142-79-206.range86-142.btcentralplus.com) (Quit: leaving)
05:59:34 × littlebobeep quits (~alMalsamo@gateway/tor-sasl/almalsamo) (Ping timeout: 240 seconds)
06:03:42 × gpncarl quits (~gpncarl@210.12.195.5) (Ping timeout: 276 seconds)
06:03:44 × deadmarshal_ quits (~deadmarsh@95.38.119.247) (Ping timeout: 272 seconds)
06:04:06 bliminse joins (~bliminse@host86-142-79-206.range86-142.btcentralplus.com)
06:04:28 × leungbk quits (~user@2603-8000-1201-2dd2-8941-f45a-8e9c-72d3.res6.spectrum.com) (Ping timeout: 250 seconds)
06:05:00 × xff0x_ quits (~xff0x@om126167099166.29.openmobile.ne.jp) (Ping timeout: 272 seconds)
06:06:28 xff0x_ joins (~xff0x@om126167099166.29.openmobile.ne.jp)
06:07:14 searemind joins (~searemind@2401:4900:414e:bc55:cc66:ab49:6502:7de8)
06:08:01 × searemind quits (~searemind@2401:4900:414e:bc55:cc66:ab49:6502:7de8) (Client Quit)
06:10:45 alp_ joins (~alp@user/alp)
06:11:18 <int-e> abastro[m]: it's closer to Dijkstra than to SPFA, since it picks nodes in order of increasing distance... but the toBeVisited set can contain useless entries (the same node at different costs).
06:17:10 × P1RATEZ quits (piratez@user/p1ratez) (Remote host closed the connection)
06:21:34 × img quits (~img@user/img) (Quit: ZNC 1.8.2 - https://znc.in)
06:22:57 img joins (~img@user/img)
06:27:37 gpncarl joins (~gpncarl@222.249.231.3)
06:31:23 gpncarl_ joins (~gpncarl@222.249.231.3)
06:31:57 × gpncarl quits (~gpncarl@222.249.231.3) (Ping timeout: 246 seconds)
06:32:22 tromp joins (~textual@dhcp-077-249-230-040.chello.nl)
06:32:32 × Sgeo quits (~Sgeo@user/sgeo) (Read error: Connection reset by peer)
06:34:05 CiaoSen joins (~Jura@p200300c95732ec002a3a4dfffe84dbd5.dip0.t-ipconnect.de)
06:36:39 acidjnk joins (~acidjnk@p200300d0c73b4503f47d9d030ed656a8.dip0.t-ipconnect.de)
06:37:49 × Vajb quits (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi) (Read error: Connection reset by peer)
06:38:01 Vajb joins (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi)
06:42:49 × gpncarl_ quits (~gpncarl@222.249.231.3) (Ping timeout: 256 seconds)
06:45:52 gpncarl_ joins (~gpncarl@210.12.195.5)
06:50:34 × briandaed quits (~briandaed@109.95.142.93.r.toneticgroup.pl) (Remote host closed the connection)
06:51:33 littlebobeep joins (~alMalsamo@gateway/tor-sasl/almalsamo)
06:55:03 × son0p quits (~ff@181.136.122.143) (Ping timeout: 246 seconds)
06:58:57 lortabac joins (~lortabac@2a01:e0a:541:b8f0:11c6:ad8e:84a0:4c9d)
07:03:11 × renzhi quits (~xp@2607:fa49:6500:b100::1d4a) (Ping timeout: 260 seconds)
07:05:51 ircbrowse_tom joins (~ircbrowse@2a01:4f8:1c1c:9319::1)
07:05:53 Server sets mode +Cnt
07:07:42 chele joins (~chele@user/chele)
07:08:00 × [itchyjunk] quits (~itchyjunk@user/itchyjunk/x-7353470) (Read error: Connection reset by peer)
07:09:33 yauhsien joins (~yauhsien@61-231-19-191.dynamic-ip.hinet.net)
07:09:46 deadmarshal_ joins (~deadmarsh@95.38.119.247)
07:14:23 × deadmarshal_ quits (~deadmarsh@95.38.119.247) (Ping timeout: 260 seconds)
07:19:45 renzhi joins (~xp@2607:fa49:6500:b100::2dea)
07:21:33 <tomsmeding> jackdk: indeed lol
07:24:16 MajorBiscuit joins (~MajorBisc@c-001-013-041.client.tudelft.eduvpn.nl)
07:27:35 × hiredman quits (~hiredman@frontier1.downey.family) (Ping timeout: 256 seconds)
07:33:45 <tomsmeding> monochrom: see: the haskell weekly news came
07:38:11 Midjak joins (~Midjak@82.66.147.146)
07:44:32 vpan joins (~0@212.117.1.172)
07:46:00 <maerwald[m]> tomsmeding: has the playground been covered there?
07:46:00 machinedgod joins (~machinedg@24.105.81.50)
07:46:04 × littlebobeep quits (~alMalsamo@gateway/tor-sasl/almalsamo) (Ping timeout: 240 seconds)
07:47:47 × acidjnk quits (~acidjnk@p200300d0c73b4503f47d9d030ed656a8.dip0.t-ipconnect.de) (Ping timeout: 240 seconds)
07:48:42 <tomsmeding> it hasn't
07:48:56 <tomsmeding> monochrom was just wondering why there wasn't a newsletter yesterday yet
07:50:20 <maerwald[m]> tomsmeding: and dis you ask haskell.org to host it?
07:50:31 <tomsmeding> I didn't yet
07:50:37 <tomsmeding> I guess I could
07:50:47 <tomsmeding> I wanted to do the horizontal scaling thing first maybe
07:51:00 <tomsmeding> started working on that and progressing nicely, should have more time this weekend
07:51:23 <maerwald[m]> It should be a microservice yeah
07:51:41 <maerwald[m]> Literally the only use case for that abomination
07:51:51 <tomsmeding> lol yes
07:52:01 <tomsmeding> the concept of a microservice is not _inherently_ bad
07:52:11 <tomsmeding> just like OOP has a bunch of legitimate usecases
07:52:39 <tomsmeding> it's just that there are also quite a lot of situations where it's maybe _not_ the most effective approach
07:53:47 <maerwald[m]> If you've ever worked at a Go shop, you'll have microservice PTSD for the rest of your life
07:54:22 <maerwald[m]> Make it cloudscale
07:54:36 acidjnk joins (~acidjnk@p200300d0c73b4503e5dce27061996713.dip0.t-ipconnect.de)
07:55:04 <tomsmeding> not going to use mongodb, don't worry
07:55:19 <tomsmeding> there's not even anything to put in there lol
07:55:53 <tomsmeding> sqlite is looking at the pastebin traffic and saying "is this database usage?"
07:56:16 <maerwald[m]> How mucs GB?
07:56:50 <tomsmeding> maerwald[m]: https://tomsmeding.com/f/pastebin_plot/dbsize.png sorry for absence of data points, I messed up the monitoring when migrating to different server
07:57:00 <tomsmeding> x axis is days since unix epoch, because who doesn't love interesting units
07:57:22 <tomsmeding> like 0.005 gb
07:57:52 <tomsmeding> this in contrast to my conduit matrix server that I'm running for personal usage only, that puts about 1MiB per second in the syslog
08:02:31 <maerwald[m]> Why not AWS dynamoDB
08:03:01 <maerwald[m]> Or let's use smart contracts for pastebin
08:03:14 <abastro[m]> maerwald: Go shop O.o
08:03:29 <abastro[m]> Lmao smart contracts for pastebinn
08:03:29 <maerwald[m]> abastro: I was young and needed the money
08:03:51 <abastro[m]> I need to do that as well!
08:04:06 <abastro[m]> Wait. (Thankfully?) No go shops nearby
08:04:17 <abastro[m]> Should do Java instead, rather
08:04:29 <abastro[m]> And that admits less to microservices I think
08:04:49 <maerwald[m]> Java has everything
08:04:58 <abastro[m]> Oh noh
08:05:00 <abastro[m]> Meh
08:05:27 <maerwald[m]> E.g. better event sourcing than Haskell
08:05:57 <maerwald[m]> Money solves your problems, not tech
08:05:58 <abastro[m]> Hmm
08:06:04 <abastro[m]> Event sourcing?
08:06:42 <abastro[m]> Yea, Java now has history of all the money invested stacked as great return
08:06:45 <maerwald[m]> abastro[m]: The next abomination right after microservices
08:06:53 <abastro[m]> Wait lmao
08:07:21 zeenk joins (~zeenk@2a02:2f0e:7506:c001:7ef1:d76c:496:86d6)
08:08:06 <maerwald[m]> Yeah, my life flashes before my eyes
08:09:16 <abastro[m]> I thought you were talking about how it's rather workable
08:09:44 <abastro[m]> Anyway I guess that's the price to pay to earn money
08:10:17 <maerwald[m]> So what comes after microservices and event sourcing? Blockchain.
08:11:00 <maerwald[m]> Maybe we could even partially evaluate haskell code via plutus
08:11:53 <abastro[m]> Partially evaluate haskell code?
08:12:05 <maerwald[m]> Don't listen to me
08:12:13 <abastro[m]> Anyway I guess I could earn quick money through blockchain
08:12:18 × king_gs quits (~Thunderbi@2806:103e:29:1f3f:9059:7534:3810:b9c6) (Ping timeout: 250 seconds)
08:12:47 <abastro[m]> To avoid direct guilt, just by getting hired by one such company
08:13:17 <maerwald[m]> Well, there are some cool people working on it
08:13:23 <abastro[m]> Bothersome and fruitless work for quick money
08:13:35 <abastro[m]> "Cool" eeh
08:14:12 <maerwald[m]> Who cares about the tech. I think it's more exciting to work with good engineers
08:14:24 <abastro[m]> Hmm
08:14:35 <abastro[m]> I mean quick money is more important
08:15:08 <maerwald[m]> There's nothing quick about it
08:15:29 <abastro[m]> True, but hm
08:15:52 <abastro[m]> I think it pays better than some shit part-time jobs
08:15:56 <abastro[m]> Like convenience store
08:16:04 ahammer joins (~ahammer@157.122.68.183)
08:16:05 deadmarshal_ joins (~deadmarsh@95.38.119.247)
08:16:13 <abastro[m]> And that is also referred to as quick money so
08:17:36 ccntrq joins (~Thunderbi@2a01:e34:eccb:b060:9de6:b0fb:57b3:5001)
08:18:41 × asivitz quits (uid178348@id-178348.tinside.irccloud.com) (Quit: Connection closed for inactivity)
08:20:21 cfricke joins (~cfricke@user/cfricke)
08:20:40 × deadmarshal_ quits (~deadmarsh@95.38.119.247) (Ping timeout: 248 seconds)
08:20:44 <abastro[m]> What kind of quick dirty job are there around
08:20:51 <lortabac> re. event-sourcing, I've had some very good experiences
08:21:33 <lortabac> and some bad experiences, especially when it was not the right use case
08:21:47 <abastro[m]> Wow
08:22:01 <maerwald[m]> lortabac: what is the right use case?
08:23:40 <lortabac> there are some domains that are naturally event-based
08:24:23 <abastro[m]> Is event-sourcing = event-driven
08:24:30 <lortabac> by using a mutable DB you lose information, and run into various problems
08:24:39 × ahammer quits (~ahammer@157.122.68.183) (Ping timeout: 246 seconds)
08:24:39 <lortabac> abastro[m]: no, it's not the same thing
08:24:53 <abastro[m]> Hm
08:25:21 <Hecate> and not the same thing as event-storming :D
08:25:24 <lortabac> event-sourcing refers to how you represent the data that you store, event-driven refers to the flow of messages in your system
08:25:29 <abastro[m]> XD
08:25:44 <maerwald[m]> lortabac: that's too vague to me
08:25:55 <abastro[m]> Ah, storing events
08:26:04 <maerwald[m]> I've used it in fintech and my opinion is that it's useless to most use cases even there
08:26:04 <abastro[m]> But yea, vague
08:26:38 <maerwald[m]> For it to be actually useful, you need to write a lot of tools from scratch
08:26:50 <maerwald[m]> Otherwise the advantage is only theoretical
08:27:05 <maerwald[m]> And most of the time you won't have time to develop those tools
08:27:08 <lortabac> maerwald[m]: first of all you need to use a specialized database like EventStore
08:27:27 <lortabac> event-sourcing on top of Postgres is masochism IMHO
08:27:38 <abastro[m]> Money solves problem :tm:
08:27:48 <lortabac> then yes, you need to implement various tools
08:29:12 <maerwald[m]> lortabac: yeah and you'll solve all the problems SQL databases have solved from scratch
08:29:12 <abastro[m]> If you need the tools, pay someone who has the tools
08:29:16 <maerwald[m]> So 50% of your time is wasted on novelty tech
08:29:16 × eggplantade quits (~Eggplanta@108.201.191.115) (Remote host closed the connection)
08:29:16 <maerwald[m]> That has no business value in its own
08:29:39 <abastro[m]> With money, they would have already patched those problems as well
08:31:12 <abastro[m]> Like what would be problems of these EventSource DB compared to SQL, when they would have money to implement all the amenities
08:31:18 <lortabac> maerwald[m]: I don't disagree with you, I'm just saying that I've worked on projects where event-sourcing was highly beneficial
08:31:58 <lortabac> and we had the time and energy to build all the necessary tools
08:32:30 <abastro[m]> Uhm wait
08:32:30 <abastro[m]> You did not pay someone to build the tools?
08:32:35 <abastro[m]> That certainly sounds wasteful
08:32:54 <lortabac> abastro[m]: what's the difference between paying me or another person?
08:32:59 <maerwald[m]> lortabac: it's a little like blockchain: huge technical challenges, but no one rally knows what business problem you're solving xD
08:33:03 <abastro[m]> Unless employee pay is dirt cheap
08:33:07 ahammer joins (~ahammer@157.122.68.183)
08:33:34 × ahammer quits (~ahammer@157.122.68.183) (Read error: Connection reset by peer)
08:33:38 <abastro[m]> lortabac: you might be able to offload the boring work to low cost shops
08:33:48 <abastro[m]> Outsourcing
08:35:05 <abastro[m]> maerwald: At least blockchain is useful for money laundry
08:35:28 <abastro[m]> And bypassing the govy
08:35:30 <abastro[m]> Govt*
08:35:35 × cfricke quits (~cfricke@user/cfricke) (Ping timeout: 256 seconds)
08:35:43 <maerwald[m]> I remember one incident where event sourcing could have been useful, but the event log was so noisy and the tooling years behind that it didn't really help. And since it was one incident, the business decision was to not spend 1 year to improve the tooling, but work on features instead
08:36:16 <tomsmeding> abastro[m]: "unless employee pay is dirt cheap" I wouldn't want the code underlying the data store of my production application to be written by cheap workers somewhere that I don't know
08:36:22 <abastro[m]> Well to be serious.. why no one developed good tooling for event sourcing if money is on those?
08:36:29 Pickchea joins (~private@user/pickchea)
08:36:39 <abastro[m]> tomsmeding: I mean yeah, you don't. Businesses want that
08:36:45 deadmarshal_ joins (~deadmarsh@95.38.119.247)
08:36:54 <abastro[m]> Cost saving is half everything for businesses
08:36:55 <tomsmeding> right, and I usually don't think like one
08:37:02 <lortabac> abastro[m]: one problem is that it's hard to generalize
08:37:09 <abastro[m]> Oh.
08:37:16 <abastro[m]> Now that.. is meh
08:37:40 <lortabac> different projects may require different tools
08:38:01 <abastro[m]> Hm then, I don't see the benefits of event sourcing
08:38:16 <abastro[m]> Don't businesses want to reduce cost?
08:39:00 <abastro[m]> Then implementing machinaries which is available already if you use another platform
08:39:08 <lortabac> that said, there are databases like EventStore which provide lots of generic tools to categorize events, filter etc.
08:39:11 <abastro[m]> Would be very cost intensive
08:39:32 <abastro[m]> Yea I mean you still have to implement more tools to suit your needs
08:39:59 <abastro[m]> <del>Better to use sth like MongoDB because that is more egligible for cheap workers</del>
08:41:13 <maerwald[m]> Most CTOs don't pick tech based on real business needs. It's usually either 1. I wanns try this cool thing or 2. Google employees wrote a blog post that tech XY solved all their problems
08:41:29 <maerwald[m]> So let's just do the same
08:41:29 <abastro[m]> Ewww
08:41:36 <lortabac> maerwald[m]: +1, that's the real issue
08:42:10 <abastro[m]> Why don't they put their knees down over capitalism
08:42:18 <abastro[m]> down to*
08:43:13 dyeplexer joins (~dyeplexer@user/dyeplexer)
08:43:58 <abastro[m]> maerwald: Google employees? Why do they get that much power
08:49:58 <abastro[m]> .. Sorry for being facetious
08:50:02 <Hecate> x)
08:50:24 <abastro[m]> Is it possible to delete my own messages?
08:51:34 ahammer joins (~ahammer@157.122.68.183)
08:54:32 <[exa]> abastro[m]: no
08:55:56 <abastro[m]> Nooooo :/
08:55:59 × ahammer quits (~ahammer@157.122.68.183) (Ping timeout: 256 seconds)
08:56:21 × hughjfchen quits (~hughjfche@vmi556545.contaboserver.net) (Quit: WeeChat 2.8)
08:57:09 <tomsmeding> #haskell-offtopic doesn't have logging ;p
08:57:15 <tomsmeding> s/logging/public logging/
08:57:20 × tzh quits (~tzh@c-24-21-73-154.hsd1.wa.comcast.net) (Quit: zzz)
08:59:23 <[exa]> except for like, everyone logging it for private purposes
08:59:47 <[exa]> abastro[m]: but you're always welcome to write a blogpost where you refute yourself properly :D
08:59:58 jgeerds joins (~jgeerds@d53604b0.access.ecotel.net)
09:00:05 × polykernel[m] quits (~polykerne@user/polykernel) (Quit: You have been kicked for being idle)
09:00:06 × jaror[m] quits (~jaror@2001:470:69fc:105::265) (Quit: You have been kicked for being idle)
09:00:19 × desklamp[m] quits (~desklampm@2001:470:69fc:105::77b8) (Quit: You have been kicked for being idle)
09:00:32 <abastro[m]> Oh
09:01:14 <abastro[m]> I mean writing rebuttal over my useless comments is by itself silly
09:02:40 <[exa]> I wouldn't bother, this is IRC, no one reads what people say here! :D (but still, capitalism-kneeling etc would be better in #-offtopic)
09:04:19 son0p joins (~ff@181.136.122.143)
09:05:20 × shriekingnoise quits (~shrieking@201.231.16.156) (Quit: Quit)
09:05:55 ubert1 joins (~Thunderbi@2a02:8109:9880:303c:a404:bb1:fc68:65af)
09:08:33 nut joins (~haskellfi@roc37-h01-176-170-197-243.dsl.sta.abo.bbox.fr)
09:09:03 <nut> could anyone take a look at this ghc source compile error ? https://wtools.io/paste-code/bB3g
09:09:24 <nut> i use the default compile configs
09:09:34 × FinnElija quits (~finn_elij@user/finn-elija/x-0085643) (Ping timeout: 240 seconds)
09:09:42 <nut> ./boot -> ./configure -> make -j16
09:13:39 FinnElija joins (~finn_elij@user/finn-elija/x-0085643)
09:15:41 <abastro[m]> <del>Yea I mean, that part is where I thought is the most reasonable among my ramblings</del>
09:16:45 × gpncarl_ quits (~gpncarl@210.12.195.5) (Ping timeout: 276 seconds)
09:17:25 <[exa]> abastro[m]: what does the <del> around your post mean?
09:19:04 <[exa]> nut: might be helpful to know what's the source version
09:19:28 <[exa]> also isn't there any other error report earlier? this looks like an outcome of a command failure earlier in the process
09:20:42 gpncarl_ joins (~gpncarl@210.12.195.5)
09:21:08 <nut> it's the version i pulled directly
09:21:26 <nut> [exa]: i checked and no previous errors
09:21:56 <nut> [exa]: i'm building it without -j16 to see if it's related
09:22:51 <nut> [exa]: it's the master branch
09:23:27 <[exa]> removing -j16 should hopefully not fix anything
09:23:51 <[exa]> in either case I'd visit #ghc
09:24:21 <[exa]> btw check out if you are able to compile a tagged commit, master might just be broken or so
09:25:12 × ubert1 quits (~Thunderbi@2a02:8109:9880:303c:a404:bb1:fc68:65af) (Ping timeout: 248 seconds)
09:25:27 <tomsmeding> [exa]: <del> is html, and thus ""markdown"", for strikethrough
09:26:01 <nut> -j16 gave similar results. i'm now on the 9.2 branch to test
09:26:21 × ccntrq quits (~Thunderbi@2a01:e34:eccb:b060:9de6:b0fb:57b3:5001) (Remote host closed the connection)
09:27:19 × MajorBiscuit quits (~MajorBisc@c-001-013-041.client.tudelft.eduvpn.nl) (Quit: WeeChat 3.4)
09:27:40 <[exa]> tomsmeding: yeah but like, what's the purpose of posting strikethrough text :D
09:28:18 <tomsmeding> [exa]: I assumed tongue-in-cheek
09:29:06 <tomsmeding> not sure what the difference in nuance is between that and /s
09:29:21 hiredman joins (~hiredman@frontier1.downey.family)
09:29:52 × frost quits (~frost@user/frost) (Quit: Client closed)
09:29:53 eggplantade joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
09:30:26 <[exa]> perhaps I'm bad at all this new IRC markup. :D
09:30:46 ccntrq joins (~Thunderbi@2a01:e34:eccb:b060:c1cb:857c:856:a6e9)
09:32:06 × dyeplexer quits (~dyeplexer@user/dyeplexer) (Ping timeout: 272 seconds)
09:32:37 <tomsmeding> I think it renders as actual strikethrough in whatever matrix client they're using
09:34:31 × eggplantade quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 256 seconds)
09:35:37 raehik joins (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
09:37:59 dcoutts_ joins (~duncan@host213-122-143-245.range213-122.btcentralplus.com)
09:38:20 mikoto-chan joins (~mikoto-ch@84.199.144.234)
09:40:06 xaotuk joins (~sasha@net167-34-245-109.mbb.telenor.rs)
09:40:49 <abastro[m]> tomsmeding: I meant a bit different to /s
09:40:57 MajorBiscuit joins (~MajorBisc@c-001-013-041.client.tudelft.eduvpn.nl)
09:42:18 <abastro[m]> That is, my useless comment
09:43:19 × notzmv quits (~zmv@user/notzmv) (Ping timeout: 240 seconds)
09:43:20 × mikoto-chan quits (~mikoto-ch@84.199.144.234) (Ping timeout: 248 seconds)
09:50:55 dyeplexer joins (~dyeplexer@user/dyeplexer)
09:51:37 × dyeplexer quits (~dyeplexer@user/dyeplexer) (Remote host closed the connection)
09:57:27 × econo quits (uid147250@user/econo) (Quit: Connection closed for inactivity)
10:06:56 × Pickchea quits (~private@user/pickchea) (Ping timeout: 272 seconds)
10:07:34 × CiaoSen quits (~Jura@p200300c95732ec002a3a4dfffe84dbd5.dip0.t-ipconnect.de) (Ping timeout: 250 seconds)
10:09:32 pretty_dumm_guy joins (trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655)
10:09:46 × tromp quits (~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
10:10:54 tromp joins (~textual@dhcp-077-249-230-040.chello.nl)
10:11:10 Hiring joins (~Hiring@31.222.238.38)
10:13:31 mmhat joins (~mmh@55d4d7fb.access.ecotel.net)
10:13:45 Tuplanolla joins (~Tuplanoll@91-159-68-39.elisa-laajakaista.fi)
10:15:27 dhil joins (~dhil@cpc103052-sgyl39-2-0-cust260.18-2.cable.virginm.net)
10:16:52 abastro joins (~abab9579@220.75.216.63)
10:18:10 notzmv joins (~zmv@user/notzmv)
10:21:01 × abastro quits (~abab9579@220.75.216.63) (Remote host closed the connection)
10:21:32 abastro joins (~abab9579@220.75.216.63)
10:23:02 coot joins (~coot@213.134.190.95)
10:27:04 × MajorBiscuit quits (~MajorBisc@c-001-013-041.client.tudelft.eduvpn.nl) (Ping timeout: 248 seconds)
10:28:08 MajorBiscuit joins (~MajorBisc@c-001-013-041.client.tudelft.eduvpn.nl)
10:28:14 kilolympus joins (~kilolympu@31.205.200.235)
10:29:54 toms joins (~foobar@pogostick.net)
10:31:59 × yauhsien quits (~yauhsien@61-231-19-191.dynamic-ip.hinet.net) (Remote host closed the connection)
10:36:03 × deadmarshal_ quits (~deadmarsh@95.38.119.247) (Ping timeout: 276 seconds)
10:36:54 yauhsien joins (~yauhsien@61-231-19-191.dynamic-ip.hinet.net)
10:38:20 × MajorBiscuit quits (~MajorBisc@c-001-013-041.client.tudelft.eduvpn.nl) (Ping timeout: 250 seconds)
10:40:29 MajorBiscuit joins (~MajorBisc@86-88-79-148.fixed.kpn.net)
10:42:33 × Lord_of_Life quits (~Lord@user/lord-of-life/x-2819915) (Ping timeout: 276 seconds)
10:43:05 Lord_of_Life joins (~Lord@user/lord-of-life/x-2819915)
10:43:50 dextaa4 joins (~dextaa@user/dextaa)
10:48:04 <int-e> tomsmeding: Is https://ircbrowse.tomsmeding.com/browse/lchaskell?q=tomsmeding supposed to do anything? I see no difference between that and the link without the q=...
10:48:06 × yauhsien quits (~yauhsien@61-231-19-191.dynamic-ip.hinet.net) (Remote host closed the connection)
10:48:34 <int-e> (maybe it used to work but was too expensive? that's my speculation right now)
10:48:52 yauhsien joins (~yauhsien@61-231-19-191.dynamic-ip.hinet.net)
10:53:48 × yauhsien quits (~yauhsien@61-231-19-191.dynamic-ip.hinet.net) (Ping timeout: 272 seconds)
11:05:38 × sprout quits (~quassel@2a02-a467-ccd6-1-1c23-6375-d28e-79ab.fixed6.kpn.net) (Ping timeout: 250 seconds)
11:09:01 × MajorBiscuit quits (~MajorBisc@86-88-79-148.fixed.kpn.net) (Ping timeout: 272 seconds)
11:10:56 × dextaa4 quits (~dextaa@user/dextaa) (Remote host closed the connection)
11:11:18 CiaoSen joins (~Jura@p200300c95732ec002a3a4dfffe84dbd5.dip0.t-ipconnect.de)
11:16:46 yauhsien joins (~yauhsien@61-231-19-191.dynamic-ip.hinet.net)
11:21:57 gpncarl joins (~gpncarl@210.12.195.5)
11:22:18 × gpncarl_ quits (~gpncarl@210.12.195.5) (Ping timeout: 272 seconds)
11:25:47 MajorBiscuit joins (~MajorBisc@86-88-79-148.fixed.kpn.net)
11:28:11 × coot quits (~coot@213.134.190.95) (Quit: coot)
11:32:05 eggplantade joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
11:36:55 × eggplantade quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 256 seconds)
11:37:57 littlebobeep joins (~alMalsamo@gateway/tor-sasl/almalsamo)
11:40:05 <tomsmeding> int-e: https://github.com/chrisdone/ircbrowse/commit/075232f70721837c01016d67393cf080e3fc822e
11:40:29 <tomsmeding> I've been meaning to set up some form of search again for a while, but other stuff has taken priority :p
11:40:57 × yauhsien quits (~yauhsien@61-231-19-191.dynamic-ip.hinet.net) (Remote host closed the connection)
11:41:08 <maerwald[m]> Start hiring haskeller!
11:41:36 <int-e> tomsmeding: love the verbose commit message :-/
11:41:38 <tomsmeding> me hiring people?
11:41:43 yauhsien joins (~yauhsien@61-231-19-191.dynamic-ip.hinet.net)
11:41:43 <tomsmeding> int-e: right?
11:41:55 <tomsmeding> well, the commit summary is not inaccurate
11:41:59 <tomsmeding> it could have been worse
11:42:29 <tomsmeding> int-e: there's quite a bunch of stuff in ircbrowse that was just randomly disabled by the time I started looking at the code
11:42:58 <tomsmeding> there's a page that lists PDF links that just randomly didn't work because the sql query was wrong
11:43:33 <tomsmeding> it kind of felt like Chris had done a good job of setting up a nice codebase, then had no time to do stuff anymore and made a bunch of changes with the minimal possible effort
11:43:43 <tomsmeding> at least, that's my inference from looking at the code
11:45:36 × yauhsien quits (~yauhsien@61-231-19-191.dynamic-ip.hinet.net) (Remote host closed the connection)
11:46:18 <int-e> Yeah, can't blame him. I was just wondering... looking at logs, he seems to have switched hosting providers for ircbrowse around that time.
11:46:56 yauhsien joins (~yauhsien@61-231-19-191.dynamic-ip.hinet.net)
11:47:57 <int-e> (Not 100% conclusive, but if that's right, maybe he didn't manage to set up the sphinx search engine thing again and postponed that?)
11:48:40 × xaotuk quits (~sasha@net167-34-245-109.mbb.telenor.rs) (Ping timeout: 248 seconds)
11:48:43 <int-e> tomsmeding: Anyway, thanks for that link
11:49:26 <tomsmeding> int-e: ah! That would explain it, yes sounds likely
11:50:03 <Bulby[m]> Can I lift any value into type space? or only strings and ints?
11:50:33 <tomsmeding> Bulby[m]: https://downloads.haskell.org/~ghc/latest/docs/html/users_guide/exts/data_kinds.html#extension-DataKinds
11:50:59 × kaph quits (~kaph@net-2-42-128-205.cust.vodafonedsl.it) (Read error: Connection reset by peer)
11:51:16 kaph joins (~kaph@net-2-42-128-205.cust.vodafonedsl.it)
11:51:39 × yauhsien quits (~yauhsien@61-231-19-191.dynamic-ip.hinet.net) (Ping timeout: 256 seconds)
11:52:25 <Bulby[m]> What I want is a "Default" type where you give a type and then an expression of that type. If there is no field provided then I will handle that in code by grabbing the default type and returning that
11:56:04 × littlebobeep quits (~alMalsamo@gateway/tor-sasl/almalsamo) (Ping timeout: 240 seconds)
11:57:00 sprout joins (~quassel@2a02-a45f-f170-1-dc46-b3e0-ed65-be35.fixed6.kpn.net)
11:57:35 <lortabac> Bulby[m]: I don't understand your question, can you clarify a little bit or give an example?
11:58:35 <Bulby[m]> So I want to be able to say... (full message at https://libera.ems.host/_matrix/media/r0/download/libera.chat/f35cda520bfc9626ab14be8797ba57d128f1013b)
12:00:10 <lortabac> ok I think I understand
12:00:26 <lortabac> "hi" is the default string in your example, right?
12:00:30 <Bulby[m]> yes
12:00:41 <lortabac> and you want to generalize this behavior to all the types, not only strings
12:00:54 <Bulby[m]> I understand symbols
12:01:15 <lortabac> you need DataKinds, as someone suggested
12:01:20 <Bulby[m]> I don't know if that will be needed, but would be nice
12:01:46 <tomsmeding> symbols have the property that you can recover the value-level value from the reflected type
12:01:52 <lortabac> and you need some mechanism to go from a type to its corresponding value
12:02:05 <geekosaur> which is where it becomes a nightmare :)
12:02:08 <tomsmeding> like, reify :: forall (t :: Symbol). t -> String exists
12:02:19 <lortabac> geekosaur: haha, not necessarily
12:02:23 <Bulby[m]> ok, I'll do it as I go
12:02:29 <tomsmeding> that isn't predefined for every data type
12:02:35 <Bulby[m]> I don't think i'll need to do anything other than symbol
12:02:38 <lortabac> if it's just one-way (type -> value) a type-class should be enough
12:03:50 <tomsmeding> with singletons you have this https://hackage.haskell.org/package/singletons-3.0.1/docs/Data-Singletons.html#v:demote
12:03:56 <Bulby[m]> oh wait symbol won't work because I have to evaluate stuff 😭
12:04:04 <tomsmeding> but try to avoid getting singletons in here if you don't need it lol
12:04:18 <Bulby[m]> I am doing dbus stuff and want a default address
12:04:32 <geekosaur> you can't have a value expression at type level
12:04:43 <geekosaur> and type level expressions are things like type families
12:06:59 × tromp quits (~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
12:07:00 xaotuk joins (~sasha@net164-38-245-109.mbb.telenor.rs)
12:07:36 <lortabac> the idea is to have something like this: https://paste.tomsmeding.com/cE7X9kMr
12:08:12 <lortabac> however if you need more than this it becomes quickly a nightmare
12:08:41 xkuru joins (~xkuru@user/xkuru)
12:08:59 × bitdex quits (~bitdex@gateway/tor-sasl/bitdex) (Quit: = "")
12:15:39 × acidjnk quits (~acidjnk@p200300d0c73b4503e5dce27061996713.dip0.t-ipconnect.de) (Ping timeout: 240 seconds)
12:15:39 Pickchea joins (~private@user/pickchea)
12:18:06 × xaotuk quits (~sasha@net164-38-245-109.mbb.telenor.rs) (Ping timeout: 276 seconds)
12:18:47 frost joins (~frost@user/frost)
12:19:34 × Pickchea quits (~private@user/pickchea) (Client Quit)
12:26:33 × Ram-Z quits (~Ram-Z@li1814-254.members.linode.com) (Ping timeout: 276 seconds)
12:26:55 <apache2> say I have data x = A | B | C
12:27:09 <apache2> does haskell have "refutation cases" ?
12:27:18 <apache2> ie I want to match something like
12:27:27 <apache2> say I have data x = A Int | B Int | C
12:27:55 <apache2> f x = case x of
12:28:09 <apache2> f x y = case (x,y) of
12:28:21 <apache2> (A 1, A 2) -> True
12:28:37 <apache2> (B _ B _) -> True
12:28:50 <apache2> (C , C) -> True
12:28:54 <apache2> _ -> False
12:29:37 × zeenk quits (~zeenk@2a02:2f0e:7506:c001:7ef1:d76c:496:86d6) (Quit: Konversation terminated!)
12:30:07 <apache2> but I don't want _ -> False I want (A _, (B _ |C)) -> False and (B _ , (A _ |C)) -> False and (C, (A _ | B _)) -> False
12:30:16 mikoto-chan joins (~mikoto-ch@213.177.151.239)
12:30:51 <apache2> so before I write _ -> False I'd like to know that all pairs of A _ A _ and B _ B and C , C are covered; and if not I want a compile-time error/warning about non-exhaustiveness
12:31:51 <geekosaur> with -Wall (or the appropriate individual warning, I think -Wincomplete-patterns) it does exhaustiveness checking
12:32:04 × Hiring quits (~Hiring@31.222.238.38) (Quit: Client closed)
12:32:04 <geekosaur> you csn also -Werror=incomplete-patterns
12:32:07 <apache2> in Ocaml I'd write type x = A of int | B of int | C let f x y = match x,y with A 1 , B 2 -> true | B _ , B_ -> true | C,C -> true | A _, A _ -> . | B _ , B _ -> . | C,C -> . _ -> false for example
12:32:41 <apache2> and it will tell me that A _ , A _ -> . is not refuted because A 0, A 0 would match it
12:32:55 <apache2> geekosaur: right but then I can't use _ -> False at the end
12:33:12 <apache2> my data type has 20 constructors so enumeratin all combinations is going to suck
12:33:46 <geekosaur> sure you can, that would just satisfy the exaustiveness checker that you'd covered all other cases with the catch-all
12:34:27 <geekosaur> oh, I see
12:34:28 <apache2> geekosaur: I'd be OK with 20x (A _, (B|C)) (B _, (A|C)) (C, (A|B)) cases
12:34:34 <geekosaur> I think patterns don't extend that far
12:34:40 <apache2> but I can't get | inside pattern matching to work
12:34:51 <geekosaur> in particular there are no or-patterns
12:34:58 <apache2> hm that's a bummer
12:35:13 <apache2> can I compare the constructors maybe?
12:35:40 <apache2> like extract the constructor function A and B, regardless of arguments and compare on the constructor itself?
12:35:44 <geekosaur> not as a pattern. you can use guards (which is the syntax that prevents | from being "or")
12:36:06 <geekosaur> A {} matches A with anything (as would A _)
12:36:15 <apache2> (x, y) | toConstructor x = toConstructor y -> False
12:37:03 <geekosaur> you're getting close to Generics there but I think toConstr might work
12:37:13 <apache2> geekosaur: right but then I still need 20*19 cases to get exhaustiveness checking
12:37:37 <apache2> is the toConstr thing possible?
12:38:06 <apache2> (OCaml wouldn't allow that)
12:38:41 × lbseale quits (~quassel@user/ep1ctetus) (Quit: https://quassel-irc.org - Chat comfortably. Anywhere.)
12:39:03 anomal joins (~anomal@87.227.196.109)
12:39:05 lbseale joins (~quassel@user/ep1ctetus)
12:39:25 <geekosaur> requires a Data constraint (so you'd have to derive Data on your type) and I'm still not entirely clear on what you're doing tbh
12:41:30 × benin quits (~benin@183.82.204.110) (Ping timeout: 276 seconds)
12:42:08 agrosant joins (~agrosant@79.103.56.172.dsl.dyn.forthnet.gr)
12:42:48 × jgeerds quits (~jgeerds@d53604b0.access.ecotel.net) (Ping timeout: 276 seconds)
12:46:29 <apache2> oh this works
12:46:32 <apache2> data X = A Int | B Int | C deriving (Show)
12:46:32 <apache2> :{
12:46:32 <apache2> k x =
12:46:32 <apache2> case x of
12:46:32 <apache2> A {} -> A
12:46:32 <apache2> :}
12:46:41 <apache2> g = (k (A 2)) 3
12:48:24 <apache2> then I can maybe do
12:48:26 <apache2> case (k (A 2)) of z | z == A -> True _ -> False
12:48:31 Ram-Z joins (~Ram-Z@li1814-254.members.linode.com)
12:54:41 AlexNoo_ is now known as AlexNoo
12:55:51 <Bulby[m]> https://paste.tomsmeding.com/HQasship is there a better way to do stuff like this for tuples
12:58:13 jgeerds joins (~jgeerds@d53604b0.access.ecotel.net)
13:00:21 × kaph quits (~kaph@net-2-42-128-205.cust.vodafonedsl.it) (Ping timeout: 276 seconds)
13:06:16 kaph joins (~kaph@net-2-42-128-205.cust.vodafonedsl.it)
13:07:08 tromp joins (~textual@dhcp-077-249-230-040.chello.nl)
13:10:27 Unicorn_Princess joins (~Unicorn_P@93-103-228-248.dynamic.t-2.net)
13:11:03 <[exa]> Bulby[m]: what's diwrap and dioptional? (can't find these)
13:13:51 <[exa]> other than that I guess that general advice for avoiding long tuples would apply (why not make a small `data TheItem = ...` for this?)
13:16:31 × gpncarl quits (~gpncarl@210.12.195.5) (Ping timeout: 260 seconds)
13:18:03 __monty__ joins (~toonn@user/toonn)
13:18:18 <[exa]> uh wait, the (.=) there is from Aeson and not from lens, right?
13:22:19 × CiaoSen quits (~Jura@p200300c95732ec002a3a4dfffe84dbd5.dip0.t-ipconnect.de) (Ping timeout: 240 seconds)
13:25:24 huu joins (~huu@uwyo-129-72-151-122.uwyo.edu)
13:26:56 <huu> hi, wondering how to define data type as datetime ISO8601 - something like this? `created :: !ISO8601`
13:31:48 wroathe joins (~wroathe@206-55-188-8.fttp.usinternet.com)
13:31:48 × wroathe quits (~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host)
13:31:48 wroathe joins (~wroathe@user/wroathe)
13:36:06 × nut quits (~haskellfi@roc37-h01-176-170-197-243.dsl.sta.abo.bbox.fr) (Ping timeout: 276 seconds)
13:37:02 <geekosaur> ISO8601 is not a type, it's a typeclass for formatting a DateTime in ISO8601 format
13:37:32 <geekosaur> you do not normally *store* in that format (the formatted value is a String)
13:38:39 <Bulby[m]> it's from Tomland sorry
13:40:06 benin joins (~benin@183.82.204.110)
13:40:09 <Bulby[m]> https://hackage.haskell.org/package/tomland-1.3.1.0/docs/Toml-Codec-Di.html#v:dimatch
13:40:09 <geekosaur> so your conversion from TOML would use https://downloads.haskell.org/ghc/8.10.7/docs/html/libraries/time-1.9.3/Data-Time-Format-ISO8601.html#v:iso8601ParseM to parse the ISO8601 into an appropriate DateTime type (there are several)
13:40:32 <geekosaur> oh wait, I think I've just confused two discussions
13:40:33 <Bulby[m]> you are mixing two people 😄
13:41:07 × jgeerds quits (~jgeerds@d53604b0.access.ecotel.net) (Ping timeout: 240 seconds)
13:41:16 <geekosaur> huu, anyway you don't store an ISO8601, you parse it into an appropriate type or you format the type into ISO8601
13:41:24 <geekosaur> just as we don't store numbers as Strings
13:42:13 abastro oh no I need to hide my string-ified integers
13:42:18 <huu> geekosaur so for strings it's ok to define it as `created :: !Text` ?
13:42:37 abastro hides "15", "42" and "960"
13:42:46 <geekosaur> if you only care about the formatted value and don't want to manipulate it, sure
13:43:14 <geekosaur> if you want to treat it as a DateTime, you want to use the function I pointed to to parse ISO8601 into a DateTime
13:43:43 <Bulby[m]> Oh I see the difference in the examples
13:44:09 <Bulby[m]> 1 of them is a sum type the other is arbitrarily allowing two different types to be together
13:44:43 <Bulby[m]> well
13:44:57 [itchyjunk] joins (~itchyjunk@user/itchyjunk/x-7353470)
13:45:41 gurkenglas joins (~gurkengla@dslb-178-012-018-212.178.012.pools.vodafone-ip.de)
13:46:07 <huu> geekosaur this here https://hackage.haskell.org/package/datetime-0.3.1/docs/Data-DateTime.html
13:47:06 <geekosaur> DateTime is just one of them, you'll notice in there conversions from/to UniversalTime and then there's LocalTime
13:47:12 <geekosaur> and ZonedTime
13:47:24 <geekosaur> it depends on what you are doing with it
13:47:36 <huu> ah ok ok thanks
13:49:17 <geekosaur> since an ISO8601 formatted timestamp includes a timezone, ZonedTime would actually be my first choice for representing it, although for most things I stick to UTCTime aka DateTime
13:49:45 × wroathe quits (~wroathe@user/wroathe) (Ping timeout: 276 seconds)
13:53:52 × jonathanx quits (~jonathan@h-178-174-176-109.A357.priv.bahnhof.se) (Remote host closed the connection)
13:56:05 gpncarl joins (~gpncarl@120.244.220.254)
14:00:44 × vpan quits (~0@212.117.1.172) (Quit: Leaving.)
14:03:49 × huu quits (~huu@uwyo-129-72-151-122.uwyo.edu) (Quit: Client closed)
14:04:27 hughjfchen joins (~hughjfche@vmi556545.contaboserver.net)
14:05:07 × tromp quits (~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
14:05:42 × gpncarl quits (~gpncarl@120.244.220.254) (Ping timeout: 272 seconds)
14:06:02 nut joins (~haskellfi@roc37-h01-176-170-197-243.dsl.sta.abo.bbox.fr)
14:19:29 Hiring joins (~Hiring@31.222.238.38)
14:22:26 tromp joins (~textual@dhcp-077-249-230-040.chello.nl)
14:24:36 geranim0 joins (~geranim0@modemcable242.171-178-173.mc.videotron.ca)
14:25:12 <janus> any aeson maintainers in here? i'd like to discuss my PR for 9.2 compat for the 1.x series
14:28:16 Sgeo joins (~Sgeo@user/sgeo)
14:28:21 × anomal quits (~anomal@87.227.196.109) (Remote host closed the connection)
14:28:40 anomal joins (~anomal@87.227.196.109)
14:29:10 × sammelweis quits (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Quit: https://quassel-irc.org - Chat comfortably. Anywhere.)
14:30:38 <dminuoso> Is there some non-obvious way to insert a -v helper in optparse-applicative?
14:32:54 sammelweis joins (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10)
14:34:06 <janus> apache2: if you are using boolean guards, you are probably defeating exhaustiveness checking... so i think "z | z == A" doesn't make a lot of sense
14:34:20 eggplantade joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
14:37:20 shriekingnoise joins (~shrieking@201.231.16.156)
14:37:40 Guest|33 joins (~Guest|33@83-84-24-47.cable.dynamic.v4.ziggo.nl)
14:37:48 × chele quits (~chele@user/chele) (Remote host closed the connection)
14:37:59 × Guest|33 quits (~Guest|33@83-84-24-47.cable.dynamic.v4.ziggo.nl) (Client Quit)
14:38:27 × eggplantade quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 246 seconds)
14:38:27 × geekosaur quits (~geekosaur@xmonad/geekosaur) (Quit: Leaving)
14:38:40 <janus> apache2: did you consider a separate hierarchy with 'GroupA MyType | GroupB MyType'. then you get the exhaustiveness checking.
14:39:54 geekosaur joins (~geekosaur@xmonad/geekosaur)
14:40:33 × kaph quits (~kaph@net-2-42-128-205.cust.vodafonedsl.it) (Ping timeout: 246 seconds)
14:43:00 × anomal quits (~anomal@87.227.196.109) (Remote host closed the connection)
14:43:19 anomal joins (~anomal@87.227.196.109)
14:44:31 × albet70 quits (~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection)
14:45:35 kaph joins (~kaph@net-2-42-128-205.cust.vodafonedsl.it)
14:50:38 albet70 joins (~xxx@2400:8902::f03c:92ff:fe60:98d8)
14:51:34 king_gs joins (~Thunderbi@187.201.77.157)
14:55:49 eggplantade joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
14:55:55 justsomeguy joins (~justsomeg@user/justsomeguy)
15:01:11 gpncarl joins (~gpncarl@120.244.220.254)
15:01:37 × frost quits (~frost@user/frost) (Quit: Client closed)
15:03:43 × anomal quits (~anomal@87.227.196.109) (Remote host closed the connection)
15:04:02 anomal joins (~anomal@87.227.196.109)
15:06:17 × mjs2600 quits (~mjs2600@c-24-91-3-49.hsd1.vt.comcast.net) (Quit: ZNC 1.8.2 - https://znc.in)
15:06:54 × lortabac quits (~lortabac@2a01:e0a:541:b8f0:11c6:ad8e:84a0:4c9d) (Quit: WeeChat 2.8)
15:07:21 × ccntrq quits (~Thunderbi@2a01:e34:eccb:b060:c1cb:857c:856:a6e9) (Remote host closed the connection)
15:07:42 mjs2600 joins (~mjs2600@c-24-91-3-49.hsd1.vt.comcast.net)
15:07:50 × eggplantade quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
15:08:54 × incertia quits (~incertia@d47-69-133-171.try.wideopenwest.com) (Ping timeout: 246 seconds)
15:08:57 ahammer joins (~ahammer@157.122.68.183)
15:11:13 deadmarshal_ joins (~deadmarsh@95.38.119.247)
15:13:19 <Bulby[m]> ` (showHex r "") ++ (showHex g "") ++ (showHex b "") ` how can I take advantage of ShowS here
15:13:32 king_gs1 joins (~Thunderbi@2806:103e:29:1f3f:9059:7534:3810:b9c6)
15:13:41 incertia joins (~incertia@d47-69-133-171.try.wideopenwest.com)
15:13:53 <Bulby[m]> `prepends the output String to an existing String. `
15:14:07 × king_gs quits (~Thunderbi@187.201.77.157) (Read error: Connection reset by peer)
15:14:08 king_gs1 is now known as king_gs
15:16:12 × deadmarshal_ quits (~deadmarsh@95.38.119.247) (Ping timeout: 276 seconds)
15:18:07 gehmehgeh joins (~user@user/gehmehgeh)
15:20:37 <geekosaur> > let r = 127; g = 63; b = 255 in showHex r . showHex g . showHex b $ ""
15:20:39 <lambdabot> "7f3fff"
15:20:43 frost joins (~frost@user/frost)
15:20:56 <Bulby[m]> \o/
15:21:12 <Bulby[m]> wasn't sure if it would be in a sane order
15:21:59 × ahammer quits (~ahammer@157.122.68.183) (Ping timeout: 240 seconds)
15:22:34 stackdroid18 joins (14094@user/stackdroid)
15:23:09 × pooryorick quits (~pooryoric@87-119-174-173.tll.elisa.ee) (Remote host closed the connection)
15:25:38 coot joins (~coot@213.134.190.95)
15:26:19 <EvanR> think of showHex 127 as ("7f" ++)
15:26:48 <Bulby[m]> yeah I was unsure if it was going to be `(++ "7f")`
15:26:56 <EvanR> that's what I'm saying xD
15:27:00 <geekosaur> "try it and see"
15:27:02 <EvanR> big difference
15:27:37 eggplantade joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
15:27:55 <EvanR> ("7f" ++) has a chance at being efficient
15:28:06 pooryorick joins (~pooryoric@87-119-174-173.tll.elisa.ee)
15:28:06 <EvanR> the other one not so much
15:28:28 ahammer joins (~ahammer@157.122.68.227)
15:28:34 <dminuoso> Rather than ShowS, can we just have dlist in base please?
15:29:04 ccntrq joins (~Thunderbi@2a01:e34:eccb:b060:441e:52da:78fc:d8fa)
15:29:12 × jespada quits (~jespada@89.238.130.78) (Ping timeout: 276 seconds)
15:29:21 <dminuoso> It's a bit strange to throw singly linked lists at us, and not give us the tools to work efficiently with them. :(
15:29:40 <dminuoso> (I mean yeah, you can do it all by hand, but a newtype wrapper and separate functions help a lot)
15:29:56 <EvanR> is it that there are too many dlist packages to choose from? xD
15:30:02 × tromp quits (~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
15:30:13 × x88x88x quits (~x88x88x@2001:19f0:5:39a8:5400:3ff:feb6:73cb) (Quit: ZNC - https://znc.in)
15:30:52 jespada joins (~jespada@cpc121022-nmal24-2-0-cust171.19-2.cable.virginm.net)
15:31:50 × nut quits (~haskellfi@roc37-h01-176-170-197-243.dsl.sta.abo.bbox.fr) (Ping timeout: 272 seconds)
15:32:34 nut joins (~haskellfi@roc37-h01-176-170-197-243.dsl.sta.abo.bbox.fr)
15:33:06 × ahammer quits (~ahammer@157.122.68.227) (Ping timeout: 272 seconds)
15:33:42 ahammer joins (~ahammer@157.122.68.183)
15:35:07 × Hiring quits (~Hiring@31.222.238.38) (Quit: Client closed)
15:35:49 × anomal quits (~anomal@87.227.196.109) (Remote host closed the connection)
15:36:08 anomal joins (~anomal@87.227.196.109)
15:38:40 × eggplantade quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
15:39:19 <c_wraith> dminuoso: what, is Endo [a] too annoying?
15:39:58 <c_wraith> (the answer is probably "yes)
15:40:08 <c_wraith> uh. just ignore that syntax error, please. :)
15:40:42 × ahammer quits (~ahammer@157.122.68.183) (Ping timeout: 272 seconds)
15:41:21 × xff0x_ quits (~xff0x@om126167099166.29.openmobile.ne.jp) (Read error: Connection reset by peer)
15:42:05 <Franciman> does ghc do the so called cons tail optimisation?
15:42:19 × abastro quits (~abab9579@220.75.216.63) (Ping timeout: 240 seconds)
15:42:32 <Franciman> or tail optimisation modulo cons
15:43:43 <c_wraith> I've never heard of that one, but... the answer is probably one of "yes, but it's less helpful than you think" and "it's not even relevant", like most questions about tail calls in haskell
15:44:12 × frost quits (~frost@user/frost) (Ping timeout: 252 seconds)
15:44:52 <c_wraith> ah. I looked it up. That's the latter case.
15:44:58 zer0bitz joins (~zer0bitz@2001:2003:f444:8f00:c914:2e3d:9c4a:a429)
15:45:50 <c_wraith> It's not even relevant, because of laziness
15:46:59 <Franciman> gorg
15:47:01 <Franciman> ty
15:48:25 <c_wraith> In particular, evaluation stops at a data constructor.
15:48:28 eggplantade joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
15:49:27 <Franciman> so i just build a long list of thunks in heap
15:49:34 <Franciman> not in the stack and no need of tail call optimise
15:49:40 <Franciman> just cry when it's slow, tho?
15:50:33 <c_wraith> so if you say `map f (x:xs) = f x : map f xs' (pretend there's a base case too) that function doesn't cause recursive evaluation
15:51:04 <c_wraith> It evaluates the first constructor of its input list, then generates a single constructor pointing to two thunks.
15:51:12 ahammer joins (~ahammer@157.122.68.183)
15:52:03 <c_wraith> any recursive evaluation that might happen is going to come from whatever is consuming the output
15:52:16 <Franciman> makes sense
15:52:56 <Franciman> so in fact it does not build a long list of thunks either
15:53:00 <Franciman> just on demande
15:53:02 <Franciman> thank you!
15:53:06 <Franciman> demand*
15:53:28 <monochrom> Yeah lazy evaluation changes this. In this context, the eager instinct of "let me use an accumulator and later reverse" is actually bad.
15:53:28 cosimone joins (~user@2001:b07:ae5:db26:c24a:d20:4d91:1e20)
15:53:48 × mjs2600 quits (~mjs2600@c-24-91-3-49.hsd1.vt.comcast.net) (Quit: ZNC 1.8.2 - https://znc.in)
15:54:05 <monochrom> Tons of "best practice" just go out of the window.
15:54:07 mvk joins (~mvk@2607:fea8:5ce3:8500::aa1d)
15:54:21 k8yun joins (~k8yun@user/k8yun)
15:54:57 <monochrom> > foldr (&&) undefined (False : repeat True)
15:54:58 <lambdabot> False
15:55:05 razetime joins (~quassel@117.254.34.160)
15:55:10 × ccntrq quits (~Thunderbi@2a01:e34:eccb:b060:441e:52da:78fc:d8fa) (Remote host closed the connection)
15:55:11 <monochrom> You actually want that.
15:55:19 mjs2600 joins (~mjs2600@c-24-91-3-49.hsd1.vt.comcast.net)
15:55:25 <monochrom> > foldl (&&) undefined (False : repeat True)
15:55:34 <lambdabot> mueval.real: ExitFailure 1
15:55:45 <monochrom> And that's what's wrong with tail call and accumulator.
15:56:38 <Franciman> i analyse this from another point of view
15:56:46 <Franciman> haskell conflates sense and denotation
15:56:49 <Franciman> because of laziness
15:56:52 <Franciman> which is good
15:56:59 <Franciman> until you start going crazy
15:57:31 <Franciman> the fact that you can write a term to mention it, instead of fully evaluating it is gorgeous
15:57:42 <maerwald> anyone knows if there's a good way to detect whether I'm in china (from within bash)
15:57:54 <Franciman> lol
15:57:54 <Hecate> maerwald: curl myip.whatevs
15:58:01 <Hecate> can't remember the actual domain name
15:58:05 <Hecate> but there's one
15:58:15 × vicfred quits (~vicfred@user/vicfred) (Quit: Leaving)
15:58:22 <geekosaur> just try to connect to something blocked by the great wall
15:58:24 <maerwald> Hecate: are you sure that domain works in china? xD
15:58:29 <monochrom> No, I think it's some people, not Haskell, who have that conflation. I don't, and I don't see Haskell doing it.
15:58:40 <maerwald> geekosaur: yeah, like downloads.haskell.org ;)
15:58:41 <Hecate> maerwald: for a chinese mirror? You can do like the linux & freebsd installers and ask the user if they want to specify their country's mirror
15:58:44 <Hecate> maerwald: hahaha
15:58:52 <Franciman> in haskell there is no distinction between evaluate to value and just do it whenever you feel like
15:59:02 <Franciman> you must leverage ghc extensions like Bang Patterns
15:59:34 <monochrom> I know some people intuit that [x | x <- [1..], x==0] = [] but I don't, not even on day 1. It's clearly bottom.
16:00:00 <maerwald> the problem also seems to be that curl doesn't cleanly fail, so users get some corrupted empty files and then weird errors
16:00:20 × Vajb quits (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi) (Ping timeout: 272 seconds)
16:00:39 <maerwald> well, you could say the file is not corrupted, because it's empty
16:01:00 Vajb joins (~Vajb@2001:999:504:1dda:267d:6860:bdf7:f68b)
16:01:20 <Franciman> monochrom: so for you in haskell every term is just mentioned, right?
16:01:21 <maerwald> sort of a thunk
16:01:22 <Franciman> never used
16:01:25 <Franciman> until main
16:01:35 <maerwald> lazy haskell installation
16:01:55 <Franciman> then you have to go back and descend the tree to mark the nodes who are not just mentioned, but used!
16:02:00 × ahammer quits (~ahammer@157.122.68.183) (Ping timeout: 248 seconds)
16:02:51 littlebobeep joins (~alMalsamo@gateway/tor-sasl/almalsamo)
16:03:22 × maerwald quits (~maerwald@mail.hasufell.de) (Changing host)
16:03:22 maerwald joins (~maerwald@user/maerwald)
16:03:36 ahammer joins (~ahammer@157.122.68.183)
16:03:54 <janus> maerwald: https://gadm.org/ has polygons for the countries
16:04:43 <janus> another option is to look at the time zone
16:07:00 <janus> while `date +%Z` could report "CDT", `timezonectl status` is more accurate and reports America/Chicago for me
16:09:54 × eggplantade quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
16:10:17 <EvanR> Franciman, you can think of a haskell program or value as being an expression, more often than not
16:11:01 <Franciman> i wonder if i could add modal operators to the type system to keep explicit track of lazy evaluated thinks
16:11:34 × littlebobeep quits (~alMalsamo@gateway/tor-sasl/almalsamo) (Ping timeout: 240 seconds)
16:11:53 <janus> oh geoclue looks cool https://gitlab.freedesktop.org/geoclue/geoclue/-/wikis/home
16:12:00 <Franciman> unquote :: □a -> a
16:12:00 tzh joins (~tzh@c-24-21-73-154.hsd1.wa.comcast.net)
16:12:01 <EvanR> if it's evaluated, it's no longer lazy
16:12:37 <EvanR> but could hold unevaluated payloads
16:12:43 <Franciman> i would also have k :: □(a -> b) -> □a -> □b
16:12:58 <EvanR> I don't think quotation is the right way to think of haskell
16:13:03 <EvanR> it's not quoted
16:13:17 <EvanR> but there is template haskell
16:13:27 <Franciman> quotation is probably a misnomer
16:13:36 <Franciman> ok, can I use modal operators to keep track of thunks?
16:13:55 <maerwald> Franciman: are you building a blockchain?
16:13:58 <EvanR> thunks is an implementation detail, what are you really trying to do
16:14:07 <Franciman> I'm trying to make sense of haskell's evil
16:14:10 <Franciman> laziness
16:14:21 <EvanR> laziness is also an implementation detail xD
16:14:22 <Franciman> it evaluates things under my feet, and i'm too obtuse to understand what's going on
16:14:24 <maerwald> I run my thunks via smart contracts
16:14:31 <Franciman> lol maerwald
16:14:46 <EvanR> evaluation is on demand, that's all
16:15:02 <Franciman> so it's non local
16:15:07 <Franciman> it makes local reasoning hard
16:15:17 <EvanR> since there are no side effects it's fine
16:15:22 <maerwald> Franciman: exactly!
16:15:40 littlebobeep joins (~alMalsamo@gateway/tor-sasl/almalsamo)
16:15:44 <EvanR> whatever you would have evaluated, it still evaluates just at a different time
16:15:53 <EvanR> (except for a difference regarding infinite loops)
16:15:59 <maerwald> Haskell breaks with the "local reasoning" concept via laziness. You could argue it's inherently non-functional then
16:16:01 <maerwald> hmm
16:16:15 waleee joins (~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340)
16:16:16 <EvanR> the purity of haskell is what saves local reasoning
16:16:20 <Franciman> maerwald: the neat thing is that , as EvanR says, it can do it safely exactly because it's functional!
16:16:22 <Franciman> lol
16:16:34 <Franciman> EvanR: not local reasoning about performances!
16:16:39 <Franciman> or space consumption
16:16:43 <maerwald> Franciman: safely?
16:16:44 <Franciman> that's a neglected form of reasoning, maybe?
16:16:48 <EvanR> performance? nah nah nah I can't hear you
16:16:52 <Franciman> eh indeed
16:16:54 <Franciman> :')
16:17:10 <Franciman> not being able to assess what my program does is B-B-BADDO
16:17:13 <EvanR> laziness has a cost
16:17:16 <Franciman> for my use case i mean
16:17:21 <Franciman> that's ok for doing scripts
16:17:28 <Franciman> not for working on my language
16:17:31 <Franciman> interpreter
16:17:32 <EvanR> it might not be good to run haskell directly on arduinos
16:17:42 CiaoSen joins (~Jura@p200300c95732ec002a3a4dfffe84dbd5.dip0.t-ipconnect.de)
16:17:43 <EvanR> but you could use haskell to make a language for arduinos
16:17:51 <Franciman> just a compiler
16:17:53 <Franciman> not an interpreter
16:18:01 <Franciman> i could use it to make a program that makes interpreters in C, tho
16:18:02 <Franciman> that's fair
16:18:09 <Franciman> and something i tried, but i am too dumb LOL
16:18:17 <EvanR> C's pretty bad for programming language development xD
16:18:24 <Franciman> not when used as assembly
16:18:30 × ahammer quits (~ahammer@157.122.68.183) (Remote host closed the connection)
16:18:36 <Franciman> you even get a lot of optimisations for free!
16:18:55 <EvanR> you also miss out on a lot of optimizations
16:18:59 <Franciman> true
16:19:06 <Franciman> but that's for the next step of the work, no?
16:19:21 <Franciman> it's a good first step
16:19:28 × justsomeguy quits (~justsomeg@user/justsomeguy) (Ping timeout: 260 seconds)
16:19:36 <EvanR> since no one using the language cares what you used to make the compiler, just skip to the last step and use haskell, or something better than C at least
16:19:50 <Franciman> ehm
16:19:59 <Franciman> i see
16:20:08 <Franciman> but haskell's laziness gets in the way and makes everything evil
16:20:23 × gpncarl quits (~gpncarl@120.244.220.254) (Ping timeout: 260 seconds)
16:20:28 <EvanR> haven't noticed that
16:20:38 <EvanR> purity is by definition lack of evil
16:21:49 gpncarl joins (~gpncarl@120.244.220.254)
16:22:55 <Franciman> ^^ true
16:25:16 zeenk joins (~zeenk@2a02:2f04:a109:fa00:116f:8f1a:7ce7:cae5)
16:26:29 × gpncarl quits (~gpncarl@120.244.220.254) (Ping timeout: 256 seconds)
16:35:20 tromp joins (~textual@dhcp-077-249-230-040.chello.nl)
16:36:16 yauhsien joins (~yauhsien@61-231-19-191.dynamic-ip.hinet.net)
16:37:15 wroathe joins (~wroathe@206-55-188-8.fttp.usinternet.com)
16:37:15 × wroathe quits (~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host)
16:37:15 wroathe joins (~wroathe@user/wroathe)
16:38:16 <janus> EvanR: what would be a better language to develop each of Python, Postgres and Lua in?
16:39:19 <EvanR> is this a time travel question or a brain transplant question
16:39:28 <janus> one answer for each :P
16:39:51 <janus> the time travel variant is the most interesting
16:40:31 <EvanR> haskell still had baby teeth back when those languages were being forged from pure chaos
16:40:38 <EvanR> so not haskell
16:40:56 × yauhsien quits (~yauhsien@61-231-19-191.dynamic-ip.hinet.net) (Ping timeout: 248 seconds)
16:42:20 <janus> A big part of why Lua is popular is because it is written in a really portable variant of C. Even today, lots of users would be hosed if they rewrote it in Rust/Zig/Hare/Haskell
16:42:59 <janus> I think the argument also applies to Python to some degree?
16:44:38 <janus> But in Python, the experiment is being conducted since Pypy is written in RPython
16:45:28 <Hecate> python people don't care that much tbf
16:45:39 <Hecate> python doesn't advertise the same things as lua
16:46:16 <dolio> Isn't lua's selling point being embeddable into e.g. C programs as a scripting language?
16:46:21 <dolio> That's pretty cherry picked.
16:46:22 <Hecate> yes
16:46:30 <Hecate> well, that's called a purpose :p
16:46:38 <Hecate> low-overhead, low-resources
16:47:40 <geekosaur> same was true of Tcl until Lua came along and trumped it with sane syntax
16:47:41 <janus> ok, so that leaves postgres. we must convince them to switch to c++ like GCC, then we have proven once for all that C is bad
16:49:23 <dolio> Also, just because your specific niche forces you to use C to achieve some goal doesn't mean that C is actually good at that general domain, where not everything neecs to meet that specific goal.
16:49:39 × wroathe quits (~wroathe@user/wroathe) (Ping timeout: 240 seconds)
16:49:53 justsomeguy joins (~justsomeg@user/justsomeguy)
16:50:24 <dolio> It just means that your particular case forced you to use a bad tool.
16:50:53 <Hecate> that is true
16:51:03 <Hecate> but I don't know if that was anybody's point
16:51:05 × tromp quits (~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
16:51:08 <janus> but why is the existence of 20 years of codebase and experience in a specific language not something that makes the language 'good'?
16:51:28 <Hecate> janus: for the same reason tech debt doesn't turn into tech credit
16:51:37 <Hecate> even wine turns into vinegar
16:52:07 <geekosaur> C became popular because it was in the right place at the right time, not because it was good
16:52:14 <janus> so english is bad too, esperanto is good?
16:52:20 asivitz joins (uid178348@id-178348.tinside.irccloud.com)
16:52:30 <Hecate> janus: I don't know what you're trying to make me say
16:52:35 tromp joins (~textual@dhcp-077-249-230-040.chello.nl)
16:52:40 <Hecate> so huh, please stop? :D
16:52:42 <geekosaur> that doesn't prove C is bad, either, it just means you can't judge it solely by how popular it is
16:53:34 × littlebobeep quits (~alMalsamo@gateway/tor-sasl/almalsamo) (Ping timeout: 240 seconds)
16:53:45 <Franciman> hey vinegar is useful too!
16:54:50 <Hecate> in french, it's caleld "vinaigre", which is the combination of "vin" (wine) and "aigre" (sour)
16:54:56 <Hecate> and yes vinegar useful
16:55:06 <Hecate> but not as a wine ;-D
16:55:33 econo joins (uid147250@user/econo)
16:55:46 <Hecate> that being said, this whole discussion is leading to nothing
16:56:07 <Hecate> so let's talk about something that doesn't rely on everyone's mis-interpretation of the other person's words
16:56:12 <Franciman> i use it to avoid being bitten by mosquitoes
16:56:18 <Franciman> i use it on salad
16:56:25 <Hecate> I use it to be delicious when cannibals eat me
16:56:29 <Franciman> and in some nice dishes
16:56:37 <Franciman> yaaaaaaaaaaaaaaaaaaaaaaas
16:57:21 × king_gs quits (~Thunderbi@2806:103e:29:1f3f:9059:7534:3810:b9c6) (Remote host closed the connection)
16:58:11 <Franciman> ok, what about this
16:58:18 <Franciman> do you think is there ever gonna be Haskellton?
16:58:26 <Franciman> an haskell compiler based on MLton's backend?
16:58:40 king_gs joins (~Thunderbi@2806:103e:29:1f3f:9059:7534:3810:b9c6)
16:58:43 <dolio> Probably not.
16:59:33 <geekosaur> Franciman, have you seen https://github.com/grin-compiler/grin ?
16:59:36 dextaa4 joins (~dextaa@user/dextaa)
16:59:57 <Franciman> yes, that one is coool
17:00:19 eggplantade joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
17:03:52 × tromp quits (~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
17:04:37 jakalx parts (~jakalx@base.jakalx.net) (Error from remote client)
17:05:24 × irfan quits (~irfan@user/irfan) (Quit: leaving)
17:07:02 × razetime quits (~quassel@117.254.34.160) (Remote host closed the connection)
17:08:05 jgeerds joins (~jgeerds@d53604b0.access.ecotel.net)
17:08:17 acidjnk joins (~acidjnk@p200300d0c73b450341d4da31930f8e6b.dip0.t-ipconnect.de)
17:08:26 × anomal quits (~anomal@87.227.196.109) (Remote host closed the connection)
17:08:40 anomal joins (~anomal@87.227.196.109)
17:09:43 <tomsmeding> Franciman: doesn't MLton implement a strict language
17:12:52 jakalx joins (~jakalx@base.jakalx.net)
17:15:04 × anomal quits (~anomal@87.227.196.109) (Remote host closed the connection)
17:15:23 anomal joins (~anomal@87.227.196.109)
17:16:27 × elkcl quits (~elkcl@broadband-37-110-156-162.ip.moscow.rt.ru) (Ping timeout: 276 seconds)
17:17:44 × stackdroid18 quits (14094@user/stackdroid) (Quit: hasta la vista... tchau!)
17:18:30 × coot quits (~coot@213.134.190.95) (Quit: coot)
17:26:26 littlebobeep joins (~alMalsamo@gateway/tor-sasl/almalsamo)
17:29:59 × benin quits (~benin@183.82.204.110) (Quit: The Lounge - https://thelounge.chat)
17:31:14 <Franciman> tomsmeding: yes, but in some slides of presentation they wanted to also introduce haskellton
17:33:17 × pavonia quits (~user@user/siracusa) (Quit: Bye!)
17:33:43 <tomsmeding> I wonder how useful existing opimisations for a strict functional language are when you compile a lazy language to it
17:33:54 <tomsmeding> feel like it won't generate very natural ML code
17:34:56 chexum_ is now known as chexum
17:35:05 <Franciman> the important ideas are to convert an high order language to a first order monomorphic language
17:35:17 <Franciman> i think this part doesn't depend on lazy or strict semantics
17:36:30 dcoutts__ joins (~duncan@host213-122-143-176.range213-122.btcentralplus.com)
17:36:31 littlebo1eep joins (~alMalsamo@gateway/tor-sasl/almalsamo)
17:37:04 × littlebobeep quits (~alMalsamo@gateway/tor-sasl/almalsamo) (Ping timeout: 240 seconds)
17:39:46 × dcoutts_ quits (~duncan@host213-122-143-245.range213-122.btcentralplus.com) (Ping timeout: 272 seconds)
17:39:48 × raehik quits (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 240 seconds)
17:39:52 <EvanR> janus, from a ivory tower perspective, language users don't care what the compiler is written in. After all they are using language X not the compiler's language. But your practical examples involve stories where the programmers assume C or C++ is god and anything else is secondary
17:40:28 <EvanR> there's no theoretical reason why that's the case
17:40:50 <EvanR> which is good because pandoc users might not want to learn haskell
17:41:56 <geekosaur> and in fact pandoc is widely used and nobody cares that it's in Haskell; they get it from their package manager and are none the wiser
17:44:01 × eggplantade quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
17:46:00 dcoutts_ joins (~duncan@host86-155-218-224.range86-155.btcentralplus.com)
17:46:15 <exarkun> unfortunately a few people notice
17:46:28 <exarkun> and endlessly use its compilation time as an argument against haskell
17:47:34 <EvanR> haskell's compiler specifically, yeah, has some non theoretical delay xD
17:47:36 × k8yun quits (~k8yun@user/k8yun) (Quit: Leaving)
17:47:49 × dextaa4 quits (~dextaa@user/dextaa) (Read error: Connection reset by peer)
17:48:53 <EvanR> (also linking takes enough time so it basically can't be realtime)
17:49:04 × littlebo1eep quits (~alMalsamo@gateway/tor-sasl/almalsamo) (Ping timeout: 240 seconds)
17:49:16 × dcoutts__ quits (~duncan@host213-122-143-176.range213-122.btcentralplus.com) (Ping timeout: 272 seconds)
17:50:00 dextaa4 joins (~dextaa@user/dextaa)
17:50:19 × king_gs quits (~Thunderbi@2806:103e:29:1f3f:9059:7534:3810:b9c6) (Remote host closed the connection)
17:52:38 king_gs joins (~Thunderbi@187.201.77.157)
17:53:11 Logio_ is now known as Logio
17:53:37 <Logio> Haskell packages on Gentoo can be a pain, if the deps update often
17:54:17 <apache2> janus: in this case I'd need a hierarchy for each of the contsructors and I'd end up with the same problem once removed
17:54:20 <Logio> I actually remember having to get rid of pandoc at some point since it was just too much, every .z release causing hours of rebuilds on an old machine
17:54:36 × mikoto-chan quits (~mikoto-ch@213.177.151.239) (Read error: Connection reset by peer)
17:56:23 × dextaa4 quits (~dextaa@user/dextaa) (Read error: Connection reset by peer)
17:56:53 <monochrom> My solution is to not use gentoo.
17:56:55 eggplantade joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
17:57:25 <monochrom> But I can see how it even needs to rebuild GHC every 2 months.
17:58:28 dextaa4 joins (~dextaa@user/dextaa)
17:59:10 raehik joins (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
17:59:20 × dextaa4 quits (~dextaa@user/dextaa) (Read error: Connection reset by peer)
18:00:35 mikoto-chan joins (~mikoto-ch@213.177.151.239)
18:00:42 × MajorBiscuit quits (~MajorBisc@86-88-79-148.fixed.kpn.net) (Quit: WeeChat 3.4)
18:01:01 dcoutts__ joins (~duncan@host86-151-9-6.range86-151.btcentralplus.com)
18:01:24 dextaa4 joins (~dextaa@user/dextaa)
18:03:50 × dcoutts_ quits (~duncan@host86-155-218-224.range86-155.btcentralplus.com) (Ping timeout: 272 seconds)
18:07:20 × sammelweis quits (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Remote host closed the connection)
18:08:54 × raehik quits (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 272 seconds)
18:09:59 × xkuru quits (~xkuru@user/xkuru) (Ping timeout: 240 seconds)
18:10:27 sammelweis joins (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10)
18:12:05 × king_gs quits (~Thunderbi@187.201.77.157) (Read error: Connection reset by peer)
18:12:37 × dcoutts__ quits (~duncan@host86-151-9-6.range86-151.btcentralplus.com) (Remote host closed the connection)
18:12:43 × anomal quits (~anomal@87.227.196.109) (Remote host closed the connection)
18:12:59 dcoutts__ joins (~duncan@host86-151-9-6.range86-151.btcentralplus.com)
18:13:02 anomal joins (~anomal@87.227.196.109)
18:13:46 king_gs joins (~Thunderbi@2806:103e:29:1f3f:9059:7534:3810:b9c6)
18:16:04 littlebobeep joins (~alMalsamo@gateway/tor-sasl/almalsamo)
18:16:08 × zeenk quits (~zeenk@2a02:2f04:a109:fa00:116f:8f1a:7ce7:cae5) (Quit: Konversation terminated!)
18:16:19 xkuru joins (~xkuru@user/xkuru)
18:17:06 × eggplantade quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
18:18:03 × king_gs quits (~Thunderbi@2806:103e:29:1f3f:9059:7534:3810:b9c6) (Client Quit)
18:18:18 king_gs joins (~Thunderbi@187.201.77.157)
18:19:56 <Franciman> how much does it take to compile ghc, Logio ?
18:20:54 <EvanR> give your answer in gigaflops
18:21:19 <Franciman> LOL
18:22:20 littlebo1eep joins (~alMalsamo@gateway/tor-sasl/almalsamo)
18:22:40 tromp joins (~textual@dhcp-077-249-230-040.chello.nl)
18:22:46 yauhsien joins (~yauhsien@61-231-19-191.dynamic-ip.hinet.net)
18:23:07 × jgeerds quits (~jgeerds@d53604b0.access.ecotel.net) (Ping timeout: 240 seconds)
18:25:41 arjun joins (~arjun@user/arjun)
18:26:04 × littlebobeep quits (~alMalsamo@gateway/tor-sasl/almalsamo) (Ping timeout: 240 seconds)
18:26:06 <arjun> hi
18:26:22 <arjun> i seem to have 9 workspaces by default
18:26:38 <tomsmeding> arjun: #xmonad
18:26:43 <arjun> wrongChannelMyBad
18:26:49 <tomsmeding> :)
18:26:58 <arjun> :)
18:27:23 <tomsmeding> @botsnack
18:27:23 <lambdabot> :)
18:27:57 × yauhsien quits (~yauhsien@61-231-19-191.dynamic-ip.hinet.net) (Ping timeout: 276 seconds)
18:28:05 <sm> I also got rid of all references to pandoc source in my projects (eg hakyll sites), now strictly using only prebuilt pandoc binaries
18:29:58 <monochrom> xmonad was written by a cat. It has 9 lives, so it wants 9 workspaces by default. :)
18:30:16 deadmarshal_ joins (~deadmarsh@95.38.119.247)
18:30:56 <monochrom> @query lambdabot
18:30:56 <lambdabot> Unknown command, try @list
18:31:20 × sprout quits (~quassel@2a02-a45f-f170-1-dc46-b3e0-ed65-be35.fixed6.kpn.net) (Ping timeout: 248 seconds)
18:31:21 <EvanR> xmonad runs on conway's life automaton
18:31:35 <EvanR> it's behavior is defined with 9 rules
18:31:52 <arjun> i just logged back into xmonad after a week of i3
18:32:05 <arjun> is it just me or does it just feel more comfortable
18:32:20 <EvanR> never used xmonad sorry
18:32:24 <tomsmeding> could it just be what you're used to
18:32:32 <arjun> also, font rendering seems a bit sharper in xmonad, it could just be placebo
18:32:50 <arjun> tomsmeding, i'm used to xfce :p
18:33:04 <EvanR> a good rule of thumb, if you think text rendering improved, it probably didn't
18:33:24 <monochrom> I never used i3.
18:33:41 <arjun> EvanR, since i moved to thinkpads, i've pretty much dropped my standards for sharpness
18:33:50 <arjun> i'll take anything on that matter
18:33:50 × tromp quits (~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
18:33:52 dh97 joins (~dh97@2401:4900:16ef:2167:a3b2:ae61:ac0b:1718)
18:34:12 <tomsmeding> I recently put i3 on my work laptop (had ubuntu WM) because between ubuntu's gnome derivative, pure gnome, and i3, i3 was the only one that didn't drop to 1FPS when connecting an external monitor
18:34:19 <tomsmeding> and no I have no idea what's going on there
18:34:41 <geekosaur> compositing?
18:34:49 <tomsmeding> 🤔
18:35:02 <tomsmeding> embarassing if true
18:36:16 <geekosaur> compositing will always be slower, even if accelerated by e.g. opengl. that said, I wouldn't expect it to be *that* slow unless it's e.g. newer versions of picom that have lots of unnecessary calls in their hot path
18:36:24 <geekosaur> but gnome doesn't use picom
18:36:35 <tomsmeding> no it was really <1FPS, I'm not exaggerating
18:36:49 <tomsmeding> so if it's the compositor, there's still something _really_ wrong
18:37:03 littlebo2eep joins (~alMalsamo@gateway/tor-sasl/almalsamo)
18:37:57 hexfive joins (~eric@50.35.83.177)
18:37:58 × king_gs quits (~Thunderbi@187.201.77.157) (Read error: Connection reset by peer)
18:38:11 <arjun> tomsmeding, were you running crysis in the background?
18:38:22 <tomsmeding> no, just ubuntu
18:38:30 <tomsmeding> dunno, maybe that's enough
18:38:35 <arjun> then it's weird
18:39:31 × Flonk quits (~Flonk@vps-zap441517-1.zap-srv.com) (Quit: Ping timeout (120 seconds))
18:39:39 <tomsmeding> feels slightly slower in i3+picom than plain i3, but nowhere as bad as ubuntu wm
18:39:52 Flonk joins (~Flonk@vps-zap441517-1.zap-srv.com)
18:40:09 <tomsmeding> in any case this is heavily offtopic lol
18:40:22 king_gs joins (~Thunderbi@2806:103e:29:1f3f:9059:7534:3810:b9c6)
18:40:34 × littlebo1eep quits (~alMalsamo@gateway/tor-sasl/almalsamo) (Ping timeout: 240 seconds)
18:40:34 × redb quits (~nmh@136.49.49.211) (Ping timeout: 272 seconds)
18:41:41 redb joins (~nmh@136.49.49.211)
18:42:02 <mrianbloom> Let's say I
18:42:53 <mrianbloom> I- I'm modeling an object oriented system. And there are objects called Entitys and parameters called properties.
18:43:47 <mrianbloom> I want to use the type system in Haskell to enforce that I can never add a certain property to an entity unless it's know to contain that property.
18:43:54 <mrianbloom> *known
18:43:59 <EvanR> I'm modeling a database system. And there are objects called Tables and parameters called columns xD
18:44:07 <mrianbloom> :)
18:44:45 <EvanR> (table would be a class of objects, instances would be rows)
18:44:51 raehik joins (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
18:44:51 <mrianbloom> Is the best way to enforce property ownership, to do it with multiparameter typeclasses?
18:46:06 <mrianbloom> For example if I have a function addProp :: SomeProperty -> SomeEntity -> SomeEntity
18:46:16 × redb quits (~nmh@136.49.49.211) (Ping timeout: 272 seconds)
18:47:09 <mrianbloom> And each of those types is a GADT that describes which type of entity and which type of property.
18:47:46 <mrianbloom> Many properties are shared by various entities.
18:47:51 <monochrom> I don't know what means "entity", "property", "add property to entity", and worst of all "add property to entity but the entity must have that property in the first place" if I already know Haskell why would you add the property "knows Haskell" to me?
18:48:31 <monochrom> This is why people should either do denotational design or write down typing rules.
18:48:52 <mrianbloom> Good point. Lets say the function is modifyProperty :: (SomeProperty -> SomeProperty) -> SomeEntity -> SomeEntity
18:49:16 <tomsmeding> can different entities have the same property?
18:49:23 <mrianbloom> Yes
18:49:36 <tomsmeding> that's not like any OO system I know, but then maybe it's smalltalk, I don't know smalltalk
18:49:53 redb joins (~nmh@136.49.49.211)
18:50:00 <EvanR> the rule was "the operation is only well typed if the objects happens to already have that property"
18:50:10 <mrianbloom> I'm writing a haskell API for a OO system basically.
18:50:13 <EvanR> which is a dynamic circumstance and is not going to be easy to encode
18:50:44 <mrianbloom> Ownership of a property is static depending on the type of entity.
18:50:51 <monochrom> OK so, lens?
18:50:53 <EvanR> Like I was saying earlier I think it's easier if you decide ahead of time what has what properties
18:50:55 <geekosaur> you can encode that with a type level list, but that's going to be pretty hideous to work with
18:51:19 <mrianbloom> I see. I'll look into those.
18:51:51 <tomsmeding> mrianbloom: why is an entity not just a record with a bunch of properties as fields? Is it really essential that different entities have the _same_ property thing?
18:52:06 <EvanR> to share field names among different object types, that's AOL keyword "extensible records"
18:52:35 <EvanR> which can be implemented with heterolists but yeah tricky business (in haskell)
18:53:29 <EvanR> practically you may get more milage not sharing the concept of Property among different types
18:53:46 <EvanR> and may find it's doesn't really help anyway
18:54:18 × redb quits (~nmh@136.49.49.211) (Ping timeout: 246 seconds)
18:54:19 × dh97 quits (~dh97@2401:4900:16ef:2167:a3b2:ae61:ac0b:1718) (Ping timeout: 240 seconds)
18:54:43 littlebo1eep joins (~alMalsamo@gateway/tor-sasl/almalsamo)
18:55:10 <EvanR> it is still possible to name the fields of different types the same, using the module system and qualified names
18:55:22 <mrianbloom> tomsmeding: I'm actually encoding a series of operations that are fed to a server so the objects I'm manipulating are not in haskell, and I'm just hoping to determine if an operation is legal on the type level before I encode it.
18:55:37 <tomsmeding> I see
18:56:03 <tomsmeding> yeah then a multi-param type class might be an idea, like 'class HasProp entity property'
18:56:20 <tomsmeding> depending on how type-safe you want to make this, the class need not even have any methods
18:56:34 × littlebo2eep quits (~alMalsamo@gateway/tor-sasl/almalsamo) (Ping timeout: 240 seconds)
18:56:41 <tomsmeding> an empty class is just a relation between types, where the (empty) instances are the axioms of the relation
18:56:49 <mrianbloom> Right. The multi-param type class just feels odd.
18:57:06 <tomsmeding> because it's empty, because it's multi-param, or because this feels like the wrong place to use a type class?
18:57:09 redb joins (~nmh@136.49.49.211)
18:57:33 × zaquest quits (~notzaques@5.130.79.72) (Remote host closed the connection)
18:58:14 <tomsmeding> I mean, another option would be to have a type family that maps an entity type to a type-level list of the properties that it contains, but I doubt whether that's actually more useful in practice than the type class approach
18:58:15 <mrianbloom> Well for example the user of my API will get an unineilligible error message.
18:58:56 <EvanR> such as, no instance HasProp MiddleName Employee
18:58:56 <mrianbloom> ...with the multiparameter method.
18:59:41 <EvanR> I guess "Employee has no property MiddleName" is more humane
18:59:54 littlebo3eep joins (~alMalsamo@gateway/tor-sasl/almalsamo)
19:00:04 × littlebo1eep quits (~alMalsamo@gateway/tor-sasl/almalsamo) (Ping timeout: 240 seconds)
19:00:05 <tomsmeding> mrianbloom: "No instance for (Has E2 P1) arising from a use of ‘foo’" -- seems an okay error message
19:00:18 <tomsmeding> https://play-haskell.tomsmeding.com/play/paste/NS25TEFY/1
19:00:32 <mrianbloom> Seems pretty good actually.
19:00:44 <mrianbloom> It is a constraint after all.
19:01:37 <EvanR> also, could customized type error messages be used
19:01:45 × redb quits (~nmh@136.49.49.211) (Ping timeout: 256 seconds)
19:02:16 <mrianbloom> That's possible. I was looking for how to write those, I've seen them before in the CLUtil api
19:02:45 <maerwald> finally, neovim fixed the Ctrl+i vs tab debacle and I can switch
19:02:46 redb joins (~nmh@136.49.49.211)
19:03:08 <tomsmeding> EvanR: mrianbloom: https://play-haskell.tomsmeding.com/play/paste/m4FbUm2A/1
19:03:32 <tomsmeding> it's nice, but requires a bunch of language extensions that would otherwise be unnecessary, and it's not even _that_ huge of an improvement IMO
19:04:26 <mrianbloom> That's pretty great though. I'll give it a shot and see how annoying the extensions are.
19:04:34 × jpds quits (~jpds@gateway/tor-sasl/jpds) (Ping timeout: 240 seconds)
19:04:34 <mrianbloom> Thank you.
19:06:47 × redb quits (~nmh@136.49.49.211) (Ping timeout: 240 seconds)
19:07:08 <tomsmeding> maerwald: what was the debacle
19:07:13 jpds joins (~jpds@gateway/tor-sasl/jpds)
19:07:27 <maerwald> tomsmeding: it wouldn't distinguish them and they debated on how to fix it for 5 years
19:07:27 tromp joins (~textual@dhcp-077-249-230-040.chello.nl)
19:07:50 <tomsmeding> how _do_ you distinguish them
19:08:02 <geekosaur> in a gui environment they're distinct
19:08:04 <maerwald> well, for GUIs it's pretty obvious... it couldn't even do that
19:08:09 <tomsmeding> ah I see
19:08:17 tomsmeding was thinking about a terminal environment
19:08:30 <maerwald> now they use CSI u
19:08:58 <maerwald> so you have to teach your terminal now to send the CSI u keycode for Ctrl+i
19:10:07 × king_gs quits (~Thunderbi@2806:103e:29:1f3f:9059:7534:3810:b9c6) (Ping timeout: 240 seconds)
19:12:15 sprout joins (~quassel@2a02-a467-ccd6-1-ed7e-2264-bed5-6948.fixed6.kpn.net)
19:12:26 redb joins (~nmh@136.49.49.211)
19:15:15 × arjun quits (~arjun@user/arjun) (Remote host closed the connection)
19:16:27 × redb quits (~nmh@136.49.49.211) (Ping timeout: 240 seconds)
19:17:43 eggplantade joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
19:19:59 redb joins (~nmh@136.49.49.211)
19:21:57 × eggplantade quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 246 seconds)
19:24:54 × redb quits (~nmh@136.49.49.211) (Ping timeout: 272 seconds)
19:31:07 × martin02_ quits (~silas@141.84.69.76) (Ping timeout: 240 seconds)
19:32:18 × deadmarshal_ quits (~deadmarsh@95.38.119.247) (Ping timeout: 276 seconds)
19:34:25 deadmarshal_ joins (~deadmarsh@95.38.119.247)
19:36:11 × tromp quits (~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
19:36:27 × oxide quits (~lambda@user/oxide) (Quit: oxide)
19:36:55 Lycurgus joins (~juan@98.4.112.204)
19:38:50 redb joins (~nmh@136.49.49.211)
19:41:28 lortabac joins (~lortabac@2a01:e0a:541:b8f0:2084:cd50:1a1b:e908)
19:43:52 × nut quits (~haskellfi@roc37-h01-176-170-197-243.dsl.sta.abo.bbox.fr) (Ping timeout: 248 seconds)
19:43:54 × redb quits (~nmh@136.49.49.211) (Ping timeout: 272 seconds)
19:44:57 martin02_ joins (~silas@2001:4ca0:0:fe00:0:5efe:a96:1bc1)
19:52:48 × justsomeguy quits (~justsomeg@user/justsomeguy) (Quit: WeeChat 3.4)
19:55:29 × Lycurgus quits (~juan@98.4.112.204) (Quit: Exeunt)
19:56:44 redb joins (~nmh@136.49.49.211)
19:59:45 tromp joins (~textual@dhcp-077-249-230-040.chello.nl)
20:01:03 × lortabac quits (~lortabac@2a01:e0a:541:b8f0:2084:cd50:1a1b:e908) (Quit: WeeChat 2.8)
20:02:34 _ht joins (~quassel@231-169-21-31.ftth.glasoperator.nl)
20:03:00 × CiaoSen quits (~Jura@p200300c95732ec002a3a4dfffe84dbd5.dip0.t-ipconnect.de) (Ping timeout: 240 seconds)
20:04:10 littlebobeep joins (~alMalsamo@gateway/tor-sasl/almalsamo)
20:07:04 × littlebo3eep quits (~alMalsamo@gateway/tor-sasl/almalsamo) (Ping timeout: 240 seconds)
20:12:21 × _ht quits (~quassel@231-169-21-31.ftth.glasoperator.nl) (Remote host closed the connection)
20:13:15 × kaph quits (~kaph@net-2-42-128-205.cust.vodafonedsl.it) (Ping timeout: 276 seconds)
20:13:33 × redb quits (~nmh@136.49.49.211) (Read error: Connection reset by peer)
20:14:18 vorpuni joins (~pvorp@2001:861:3881:c690:e32d:1997:1f61:d569)
20:14:21 yous joins (~Polo@user/polo)
20:17:34 × littlebobeep quits (~alMalsamo@gateway/tor-sasl/almalsamo) (Ping timeout: 240 seconds)
20:18:30 littlebobeep joins (~alMalsamo@gateway/tor-sasl/almalsamo)
20:20:46 jgeerds joins (~jgeerds@d53604b0.access.ecotel.net)
20:23:28 × tromp quits (~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
20:24:38 yauhsien joins (~yauhsien@61-231-19-191.dynamic-ip.hinet.net)
20:25:37 × dextaa4 quits (~dextaa@user/dextaa) (Ping timeout: 256 seconds)
20:27:03 stackdroid18 joins (14094@user/stackdroid)
20:27:34 × littlebobeep quits (~alMalsamo@gateway/tor-sasl/almalsamo) (Ping timeout: 240 seconds)
20:28:22 kaph joins (~kaph@net-2-42-128-205.cust.vodafonedsl.it)
20:29:01 × yauhsien quits (~yauhsien@61-231-19-191.dynamic-ip.hinet.net) (Ping timeout: 256 seconds)
20:31:46 littlebobeep joins (~alMalsamo@gateway/tor-sasl/almalsamo)
20:31:57 × raehik quits (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 246 seconds)
20:34:10 raehik joins (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
20:36:05 zebrag joins (~chris@user/zebrag)
20:42:35 pavonia joins (~user@user/siracusa)
20:44:33 coot joins (~coot@213.134.190.95)
20:49:11 tromp joins (~textual@dhcp-077-249-230-040.chello.nl)
20:51:34 × littlebobeep quits (~alMalsamo@gateway/tor-sasl/almalsamo) (Ping timeout: 240 seconds)
20:51:35 × Vajb quits (~Vajb@2001:999:504:1dda:267d:6860:bdf7:f68b) (Read error: Connection reset by peer)
20:52:11 Vajb joins (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi)
20:52:48 × mikoto-chan quits (~mikoto-ch@213.177.151.239) (Ping timeout: 250 seconds)
20:53:03 dostoevsky9 joins (~5c42c5384@user/dostoevsky)
20:54:39 × dostoevsky quits (~5c42c5384@user/dostoevsky) (Ping timeout: 240 seconds)
20:54:39 dostoevsky9 is now known as dostoevsky
20:55:59 random-jellyfish joins (~random-je@user/random-jellyfish)
20:56:24 king_gs joins (~Thunderbi@187.201.77.157)
20:57:24 smitop2 joins (uid328768@id-328768.tinside.irccloud.com)
20:59:34 × jpds quits (~jpds@gateway/tor-sasl/jpds) (Ping timeout: 240 seconds)
21:00:29 × michalz quits (~michalz@185.246.204.109) (Remote host closed the connection)
21:01:40 jpds joins (~jpds@gateway/tor-sasl/jpds)
21:02:42 jmdaemon joins (~jmdaemon@user/jmdaemon)
21:02:57 × yous quits (~Polo@user/polo) (Quit: Textual IRC Client: www.textualapp.com)
21:03:41 littlebobeep joins (~alMalsamo@gateway/tor-sasl/almalsamo)
21:05:24 × __monty__ quits (~toonn@user/toonn) (Quit: leaving)
21:06:15 × tromp quits (~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
21:09:34 × littlebobeep quits (~alMalsamo@gateway/tor-sasl/almalsamo) (Ping timeout: 240 seconds)
21:10:50 tromp joins (~textual@dhcp-077-249-230-040.chello.nl)
21:19:34 eggplantade joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
21:23:25 × deadmarshal_ quits (~deadmarsh@95.38.119.247) (Ping timeout: 256 seconds)
21:24:45 × eggplantade quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 276 seconds)
21:24:48 darkling joins (~darkling@2001-ba8-1f1-f0e6-0-0-0-2.autov6rev.bitfolk.space)
21:35:21 × takuan quits (~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection)
21:51:34 jargon joins (~jargon@174-22-206-112.phnx.qwest.net)
21:55:41 littlebobeep joins (~alMalsamo@gateway/tor-sasl/almalsamo)
21:58:29 × littlebobeep quits (~alMalsamo@gateway/tor-sasl/almalsamo) (Remote host closed the connection)
22:00:47 littlebobeep joins (~alMalsamo@gateway/tor-sasl/almalsamo)
22:02:32 × coot quits (~coot@213.134.190.95) (Quit: coot)
22:03:15 <abastro[m]> How is haskell playground formatting going
22:04:39 × king_gs quits (~Thunderbi@187.201.77.157) (Read error: Connection reset by peer)
22:07:33 king_gs joins (~Thunderbi@187.201.77.157)
22:07:51 × vorpuni quits (~pvorp@2001:861:3881:c690:e32d:1997:1f61:d569) (Quit: bye)
22:09:00 dcoutts_ joins (~duncan@host86-151-9-6.range86-151.btcentralplus.com)
22:11:40 × dcoutts__ quits (~duncan@host86-151-9-6.range86-151.btcentralplus.com) (Ping timeout: 250 seconds)
22:13:34 × littlebobeep quits (~alMalsamo@gateway/tor-sasl/almalsamo) (Ping timeout: 240 seconds)
22:15:43 × ec quits (~ec@gateway/tor-sasl/ec) (Quit: ec)
22:16:19 × geranim0 quits (~geranim0@modemcable242.171-178-173.mc.videotron.ca) (Remote host closed the connection)
22:19:52 × kaph quits (~kaph@net-2-42-128-205.cust.vodafonedsl.it) (Read error: Connection reset by peer)
22:20:03 kaph joins (~kaph@net-2-42-128-205.cust.vodafonedsl.it)
22:20:14 × alp_ quits (~alp@user/alp) (Remote host closed the connection)
22:20:33 alp_ joins (~alp@user/alp)
22:21:38 nut joins (~haskellfi@roc37-h01-176-170-197-243.dsl.sta.abo.bbox.fr)
22:23:16 × tromp quits (~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
22:27:10 × random-jellyfish quits (~random-je@user/random-jellyfish) (Ping timeout: 252 seconds)
22:27:31 × king_gs quits (~Thunderbi@187.201.77.157) (Read error: Connection reset by peer)
22:28:08 king_gs joins (~Thunderbi@187.201.77.157)
22:31:06 × raehik quits (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 272 seconds)
22:31:17 deadmarshal_ joins (~deadmarsh@95.38.230.79)
22:32:53 raehik joins (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
22:32:58 × shapr quits (~user@pool-173-73-44-186.washdc.fios.verizon.net) (Read error: Connection reset by peer)
22:33:20 shapr joins (~user@pool-173-73-44-186.washdc.fios.verizon.net)
22:33:23 lainon joins (~lainon@2601:7c0:c500:4d20:5d28:87a4:ed98:5a13)
22:35:35 × acidjnk quits (~acidjnk@p200300d0c73b450341d4da31930f8e6b.dip0.t-ipconnect.de) (Ping timeout: 260 seconds)
22:36:15 × deadmarshal_ quits (~deadmarsh@95.38.230.79) (Ping timeout: 276 seconds)
22:42:45 × nut quits (~haskellfi@roc37-h01-176-170-197-243.dsl.sta.abo.bbox.fr) (Ping timeout: 276 seconds)
22:45:17 littlebobeep joins (~alMalsamo@gateway/tor-sasl/almalsamo)
22:45:20 × mjs2600 quits (~mjs2600@c-24-91-3-49.hsd1.vt.comcast.net) (Quit: ZNC 1.8.2 - https://znc.in)
22:46:46 mjs2600 joins (~mjs2600@c-24-91-3-49.hsd1.vt.comcast.net)
22:47:29 mikoto-chan joins (~mikoto-ch@213.177.151.239)
22:51:04 × littlebobeep quits (~alMalsamo@gateway/tor-sasl/almalsamo) (Ping timeout: 240 seconds)
22:51:27 × dhil quits (~dhil@cpc103052-sgyl39-2-0-cust260.18-2.cable.virginm.net) (Ping timeout: 260 seconds)
22:53:21 bitdex joins (~bitdex@gateway/tor-sasl/bitdex)
22:57:41 × gehmehgeh quits (~user@user/gehmehgeh) (Quit: Leaving)
23:02:07 littlebobeep joins (~alMalsamo@gateway/tor-sasl/almalsamo)
23:03:13 × king_gs quits (~Thunderbi@187.201.77.157) (Quit: king_gs)
23:03:30 king_gs joins (~Thunderbi@187.201.77.157)
23:06:33 <energizer> is it possible to somehow compare classes? like Floating < Fractional < Num
23:09:19 × stackdroid18 quits (14094@user/stackdroid) (Quit: hasta la vista... tchau!)
23:09:48 × king_gs quits (~Thunderbi@187.201.77.157) (Ping timeout: 246 seconds)
23:11:01 × cosimone quits (~user@2001:b07:ae5:db26:c24a:d20:4d91:1e20) (Quit: ERC 5.4 (IRC client for GNU Emacs 28.1))
23:14:39 <geekosaur> that question sounds confused
23:16:32 Pickchea joins (~private@user/pickchea)
23:16:35 × Midjak quits (~Midjak@82.66.147.146) (Quit: This computer has gone to sleep)
23:16:53 <energizer> there's an ordering
23:17:14 <energizer> how can i take two classes and compare them?
23:17:23 <[Leary]> With QuantifiedConstraints I suppose you can define and use a constraint synonym like `type c1 <= c2 = forall a. c1 a => c2 a`, but I wonder where you could meaningfully use it?
23:17:43 <exarkun> energizer: There are lots of possible orderings. But does Haskell know about any of them?
23:18:08 <energizer> haskell knows Fractional a => Floating a
23:18:34 <energizer> which presumably implies Floating < Fractional fsvo <
23:18:37 <exarkun> True, but that's not an ordering itself. It's a constraint. You could build an ordering out of it.
23:19:24 <exarkun> Or you could say that you don't want an ordering of the typeclasses but instead you want to know a graph made out of typeclasses and their constraint relationships to each other.
23:19:26 <geekosaur> right, but Haskell also lets you say things like data Foo a … ; instance Monad Foo where … ; instance Applicative Foo where { pure = return; <*> = ap; }
23:19:38 <geekosaur> i.e. the relationship is not a strict one
23:20:17 <exarkun> energizer: What are you going to do with the info?
23:20:53 <energizer> exarkun: let's say i want to toposort them
23:23:26 <geekosaur> toposort doesn't require ordering, just the => relationship (see tsort on unix)
23:24:13 <energizer> what distinction are you making between => and ordering?
23:24:51 <geekosaur> what distinction are *you* making between them? I'm not the onelooking for ordering
23:25:31 <exarkun> energizer: yea but why
23:25:38 <exarkun> energizer: if it's purely academic, cool, just say that :)
23:26:02 <janus> energizer: i always read '=>' more like 'implies'
23:26:55 <energizer> exarkun: sure, it's just curiosity i guess
23:26:58 <janus> energizer: if you like 'propositions are types' it makes a lot of sense too, since it says 'if you have this precondition, you can derive this'
23:27:04 × bitdex quits (~bitdex@gateway/tor-sasl/bitdex) (Ping timeout: 240 seconds)
23:28:25 × jgeerds quits (~jgeerds@d53604b0.access.ecotel.net) (Ping timeout: 248 seconds)
23:28:33 <geekosaur> except that doesn't quite work. You can have Fractional without Floating
23:29:12 <energizer> :info Floating
23:29:15 <geekosaur> I read `Fractional a => Floating a where` as `given a type "a" which has a Fractional instance, it has a Floating instance if`
23:29:49 <energizer> ok
23:29:54 <geekosaur> the standard types that have Floating are Float and Double. But Rational is a Fractional without Floating
23:30:36 <energizer> i said it backwards
23:30:47 <energizer> any Floating is also Fractional
23:30:59 bitdex joins (~bitdex@gateway/tor-sasl/bitdex)
23:32:04 × littlebobeep quits (~alMalsamo@gateway/tor-sasl/almalsamo) (Ping timeout: 240 seconds)
23:35:14 × mmhat quits (~mmh@55d4d7fb.access.ecotel.net) (Quit: WeeChat 3.5)
23:38:59 <geekosaur> also you can get some decidedly odd relationships if you take this stuff too seriously. you can declare a Num instance for any Applicative, for instance (instance Applicative a => Num a where …)
23:40:12 Artem[m] joins (~artemtype@2001:470:69fc:105::75b)
23:42:17 <energizer> i dont get it
23:43:36 <energizer> unless /all/ Num instances are Applicative, it doesnt seem like a problem
23:44:03 <geekosaur> no, but it'll complicate your toposort
23:44:35 <monochrom> Please refer to the Haskell 2010 Report which would state that Floating is a "subclass" of Fractional, for example.
23:44:43 <geekosaur> and you have that backwards. (and I left out a part, bad me. instance (Num a, Applicative f) => Num (f a) where)
23:46:23 <monochrom> But perhaps knowing a magic word is less important than wtf does that word mean in the context of Haskell semantics.
23:46:25 <geekosaur> I still think that makes it sound more OO than it is
23:46:27 <energizer> is it possible to write `isSubclass`
23:46:46 × smitop2 quits (uid328768@id-328768.tinside.irccloud.com) (Quit: Connection closed for inactivity)
23:47:00 <[Leary]> The relation as I defined it is a partial order if you relax your notion of equality a little, and should correspond to superclasses/subclasses. I don't think you can get funky results by writing funky /instances/, only funky /classes/.
23:47:27 <monochrom> Well yes but the ship has sailed. It all went wrong on day one starting with "class Fractional"
23:47:57 <geekosaur> energizer, neither types nor constraints exist at value level. in other words, what would you call isSubclass on?
23:48:39 <energizer> geekosaur: i think that's the answer i was looking for
23:49:20 <geekosaur> @let isSubclass :: Constraint -> Constraint -> Bool
23:49:21 <lambdabot> /sandbox/tmp/.L.hs:176:1: error:
23:49:21 <lambdabot> The type signature for ‘isSubclass’ lacks an accompanying binding
23:49:21 <lambdabot> |
23:49:33 <geekosaur> huh, I expected an error before that
23:49:42 <geekosaur> @let isSubclass :: Constraint -> Constraint -> Bool; isSubclass = undefined
23:49:44 <lambdabot> Defined.
23:49:51 <geekosaur> oh really
23:50:19 <monochrom> Perhaps type-in-type :)
23:50:22 <geekosaur> somehow I suspect fancy type level machinery is biting me in the butt and this doesn't mean what I think
23:50:36 <geekosaur> well, there was a point where Constraint and Type were the same thing
23:51:06 <geekosaur> > Fractional `isSubclass` Num
23:51:08 <lambdabot> error:
23:51:08 <lambdabot> • Data constructor not in scope: Fractional :: Constraint
23:51:08 <lambdabot> • Perhaps you meant variable ‘rational’ (imported from Text.PrettyPrint....
23:51:34 <geekosaur> right, not even doing what I intended :)
23:51:37 <geekosaur> @undefine
23:51:37 <lambdabot> Undefined.
23:51:55 <geekosaur> @let {-# LANGUAGE ConstraintKinds #-}
23:51:56 <lambdabot> Defined.
23:52:02 <geekosaur> @let isSubclass :: Constraint -> Constraint -> Bool; isSubclass = undefined
23:52:03 <lambdabot> Defined.
23:52:08 <geekosaur> > Fractional `isSubclass` Num
23:52:09 <lambdabot> error:
23:52:09 <lambdabot> • Data constructor not in scope: Fractional :: Constraint
23:52:09 <lambdabot> • Perhaps you meant variable ‘rational’ (imported from Text.PrettyPrint....
23:52:45 <geekosaur> right, this is taking what I wrote as something completely different
23:54:01 <hpc> first off, Fractional isn't :: Constraint
23:54:50 <hpc> :t (Fractional Rational) `isSubclass` (Num Rational)
23:54:51 <lambdabot> error:
23:54:51 <lambdabot> • Data constructor not in scope: Fractional :: t0 -> Constraint
23:54:51 <lambdabot> • Perhaps you meant variable ‘rational’ (imported from Text.PrettyPrint.HughesPJ)
23:54:54 <monochrom> "Constraint :: Type" is true. Whenever "Foo :: Type" is true, "f :: Foo -> ..." is legal.
23:55:11 <hpc> :k Fractional
23:55:12 <lambdabot> * -> Constraint
23:55:28 <hpc> ugh
23:55:53 <hpc> @let {-# LANGUAGE DataKinds #-}
23:55:54 <lambdabot> Defined.
23:55:56 <hpc> :t (Fractional Rational) `isSubclass` (Num Rational)
23:55:57 <lambdabot> error:
23:55:57 <lambdabot> • Data constructor not in scope: Fractional :: t0 -> Constraint
23:55:57 <lambdabot> • Perhaps you meant variable ‘rational’ (imported from Text.PrettyPrint.HughesPJ)
23:56:14 <monochrom> "Fractional Rational :: Constraint" both type-checks and is true. However, "Fractional Rational" is not a term-level thing.
23:56:25 <hpc> :k (Fractional Rational) `isSubclass` (Num Rational)
23:56:26 <lambdabot> error: Not in scope: type variable ‘isSubclass’
23:56:30 <hpc> ah right, because :t
23:56:36 <hpc> or >
23:57:15 <hpc> :k (Fractional Rational) `'isSubclass` (Num Rational)
23:57:16 <lambdabot> error: parse error on input ‘'’
23:57:39 <monochrom> Type-level syntax does not support `div` :)
23:57:48 ahammer joins (~ahammer@157.122.68.227)
23:57:50 fernand joins (uid551405@id-551405.tinside.irccloud.com)
23:58:22 <monochrom> Term-level "isSubclass" is not promoted to type level unless you use the templates from the singleton library...
23:58:27 yauhsien joins (~yauhsien@61-231-19-191.dynamic-ip.hinet.net)
23:58:42 <monochrom> You may have better luck with Lean.
23:59:10 <hpc> yeah, it's easy to take for granted how far the haskell type-level language has come sometimes
23:59:36 <hpc> oh well
23:59:46 × gurkenglas quits (~gurkengla@dslb-178-012-018-212.178.012.pools.vodafone-ip.de) (Ping timeout: 272 seconds)

All times are in UTC on 2022-04-29.