2021/09/27

2021-09-27 00:01:14 +0200jespada(~jespada@host196.190-3-30.dynamic.telmex.net.ar)
2021-09-27 00:02:24 +0200tromp(~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2021-09-27 00:22:42 +0200tromp(~textual@dhcp-077-249-230-040.chello.nl)
2021-09-27 00:24:45 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:75e5:da2f:c054:6c5d) (Remote host closed the connection)
2021-09-27 00:31:31 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:75e5:da2f:c054:6c5d)
2021-09-27 00:32:01 +0200cjb(~cjb@user/cjb)
2021-09-27 00:32:15 +0200unit73e(~emanuel@2001:818:e8dd:7c00:32b5:c2ff:fe6b:5291) (Remote host closed the connection)
2021-09-27 00:34:14 +0200nfd(~nfd@user/nfd) (Ping timeout: 260 seconds)
2021-09-27 00:35:41 +0200machinedgod(~machinedg@24.105.81.50) (Ping timeout: 252 seconds)
2021-09-27 00:36:07 +0200hyiltiz(~quassel@31.220.5.250) (Ping timeout: 252 seconds)
2021-09-27 00:39:23 +0200hyiltiz(~quassel@31.220.5.250)
2021-09-27 00:41:47 +0200tromp(~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2021-09-27 00:43:25 +0200falafel(~falafel@2603-8000-d800-688c-09e7-c002-f7c4-b460.res6.spectrum.com) (Ping timeout: 252 seconds)
2021-09-27 00:48:53 +0200lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2021-09-27 00:56:09 +0200shriekingnoise(~shrieking@186.137.144.80)
2021-09-27 00:56:31 +0200Tuplanolla(~Tuplanoll@91-159-69-50.elisa-laajakaista.fi) (Quit: Leaving.)
2021-09-27 00:58:40 +0200CiaoSen(~Jura@p2e5c6ba6.dip0.t-ipconnect.de) (Ping timeout: 252 seconds)
2021-09-27 01:00:44 +0200machinedgod(~machinedg@24.105.81.50)
2021-09-27 01:06:23 +0200mestre(~mestre@191.177.175.57)
2021-09-27 01:08:32 +0200Vajb(~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi) (Read error: Connection reset by peer)
2021-09-27 01:09:15 +0200 <hololeap> hoistCofree :: Functor f => (forall x. f x -> g x) -> Cofree f a -> Cofree g a
2021-09-27 01:09:21 +0200Vajb(~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi)
2021-09-27 01:09:31 +0200 <hololeap> why does this use RankNTypes instead of
2021-09-27 01:09:42 +0200 <hololeap> Functor f => (f a -> g b) -> Cofree f a -> Cofree g b
2021-09-27 01:10:29 +0200 <hololeap> hm, that's not quite right, but there is a more general way to write this without the forall
2021-09-27 01:10:40 +0200 <c_wraith> to prove that it can't branch based on the values in the nodes
2021-09-27 01:12:24 +0200 <hololeap> ok, I think that makes sense
2021-09-27 01:19:40 +0200lavaman(~lavaman@98.38.249.169)
2021-09-27 01:21:30 +0200max22-(~maxime@2a01cb0883359800493cb2ff7652c33a.ipv6.abo.wanadoo.fr) (Remote host closed the connection)
2021-09-27 01:23:21 +0200Vajb(~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi) (Read error: Connection reset by peer)
2021-09-27 01:24:01 +0200lavaman(~lavaman@98.38.249.169) (Ping timeout: 252 seconds)
2021-09-27 01:28:50 +0200acidjnk_new(~acidjnk@pd9e0b933.dip0.t-ipconnect.de) (Ping timeout: 260 seconds)
2021-09-27 01:28:55 +0200machinedgod(~machinedg@24.105.81.50) (Ping timeout: 252 seconds)
2021-09-27 01:35:41 +0200 <monochrom> It also expresses a natural transformation.
2021-09-27 01:35:45 +0200justsomeguy(~justsomeg@user/justsomeguy) (Quit: WeeChat 3.2)
2021-09-27 01:37:00 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-09-27 01:40:36 +0200falafel(~falafel@2603-8000-d800-688c-09e7-c002-f7c4-b460.res6.spectrum.com)
2021-09-27 01:41:05 +0200falafel_(~falafel@2603-8000-d800-688c-7903-5fe9-5138-968d.res6.spectrum.com)
2021-09-27 01:43:04 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:75e5:da2f:c054:6c5d) (Remote host closed the connection)
2021-09-27 01:45:10 +0200falafel(~falafel@2603-8000-d800-688c-09e7-c002-f7c4-b460.res6.spectrum.com) (Ping timeout: 260 seconds)
2021-09-27 01:45:42 +0200Vajb(~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi)
2021-09-27 01:47:44 +0200wroathe(~wroathe@user/wroathe) (Ping timeout: 252 seconds)
2021-09-27 02:00:29 +0200zer0bitz(~zer0bitz@dsl-hkibng31-54fafc-123.dhcp.inet.fi) (Read error: Connection reset by peer)
2021-09-27 02:03:41 +0200nabaiste^(~nabaiste@68.101.50.106) (Ping timeout: 252 seconds)
2021-09-27 02:04:27 +0200wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-09-27 02:04:27 +0200wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Changing host)
2021-09-27 02:04:27 +0200wroathe(~wroathe@user/wroathe)
2021-09-27 02:04:58 +0200nabaiste^(~nabaiste@68.101.50.106)
2021-09-27 02:09:11 +0200wroathe(~wroathe@user/wroathe) (Ping timeout: 252 seconds)
2021-09-27 02:11:16 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 252 seconds)
2021-09-27 02:17:05 +0200segfaultfizzbuzz(~segfaultf@135-180-0-138.static.sonic.net)
2021-09-27 02:17:25 +0200 <segfaultfizzbuzz> my eyes are crossing as i try to learn more about programming languages
2021-09-27 02:17:52 +0200cjb87253(~cjb@user/cjb)
2021-09-27 02:18:00 +0200cjb(~cjb@user/cjb) (Ping timeout: 260 seconds)
2021-09-27 02:18:16 +0200cjb87253cjb
2021-09-27 02:23:12 +0200yauhsien(~yauhsien@118-167-48-21.dynamic-ip.hinet.net)
2021-09-27 02:23:14 +0200machinedgod(~machinedg@24.105.81.50)
2021-09-27 02:23:49 +0200justsomeguy(~justsomeg@user/justsomeguy)
2021-09-27 02:25:40 +0200 <segfaultfizzbuzz> i feel bombarded by an endless collection of abstractions and constraints which, if i want my code to work or be effective, it must take into account
2021-09-27 02:27:53 +0200yauhsien(~yauhsien@118-167-48-21.dynamic-ip.hinet.net) (Ping timeout: 252 seconds)
2021-09-27 02:31:43 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:75e5:da2f:c054:6c5d)
2021-09-27 02:32:11 +0200 <Cale> In cases like that, get something working first, then work out which abstractions to apply.
2021-09-27 02:38:24 +0200alzgh(~alzgh@user/alzgh) (Remote host closed the connection)
2021-09-27 02:44:54 +0200falafel_(~falafel@2603-8000-d800-688c-7903-5fe9-5138-968d.res6.spectrum.com) (Ping timeout: 260 seconds)
2021-09-27 03:01:31 +0200wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-09-27 03:01:31 +0200wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Changing host)
2021-09-27 03:01:31 +0200wroathe(~wroathe@user/wroathe)
2021-09-27 03:02:11 +0200tabemann(~tabemann@172-13-49-137.lightspeed.milwwi.sbcglobal.net) (Remote host closed the connection)
2021-09-27 03:10:52 +0200tabemann(~tabemann@172-13-49-137.lightspeed.milwwi.sbcglobal.net)
2021-09-27 03:12:09 +0200albet70(~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection)
2021-09-27 03:13:16 +0200albet70(~xxx@2400:8902::f03c:92ff:fe60:98d8)
2021-09-27 03:17:42 +0200 <sm> absolutely. Add abstractions and constraints when your code requires you to
2021-09-27 03:23:26 +0200wroathe(~wroathe@user/wroathe) (Ping timeout: 252 seconds)
2021-09-27 03:29:05 +0200wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-09-27 03:29:06 +0200wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Changing host)
2021-09-27 03:29:06 +0200wroathe(~wroathe@user/wroathe)
2021-09-27 03:30:00 +0200lavaman(~lavaman@98.38.249.169)
2021-09-27 03:35:25 +0200machinedgod(~machinedg@24.105.81.50) (Ping timeout: 265 seconds)
2021-09-27 03:38:10 +0200MQ-17J(~MQ-17J@d192-24-122-179.try.wideopenwest.com) (Read error: Connection reset by peer)
2021-09-27 03:38:18 +0200MQ-17J(~MQ-17J@d192-24-122-179.try.wideopenwest.com)
2021-09-27 03:39:25 +0200waleee(~waleee@2001:9b0:216:8200:d457:9189:7843:1dbd) (Ping timeout: 250 seconds)
2021-09-27 03:39:46 +0200wroathe(~wroathe@user/wroathe) (Ping timeout: 265 seconds)
2021-09-27 03:44:07 +0200raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 240 seconds)
2021-09-27 03:44:27 +0200xff0x(~xff0x@2001:1a81:52da:9800:f593:2afb:aa0a:4d64) (Ping timeout: 240 seconds)
2021-09-27 03:45:13 +0200mikoto-chan(~mikoto-ch@83.137.2.244)
2021-09-27 03:46:42 +0200xff0x(~xff0x@2001:1a81:5315:a700:e786:c90b:4d0b:4699)
2021-09-27 03:47:33 +0200yauhsien(~yauhsien@118-167-48-21.dynamic-ip.hinet.net)
2021-09-27 03:48:17 +0200jespada(~jespada@host196.190-3-30.dynamic.telmex.net.ar) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2021-09-27 03:52:06 +0200yauhsien(~yauhsien@118-167-48-21.dynamic-ip.hinet.net) (Ping timeout: 260 seconds)
2021-09-27 03:54:59 +0200neurocyte01324(~neurocyte@user/neurocyte)
2021-09-27 03:56:52 +0200neurocyte0132(~neurocyte@user/neurocyte) (Ping timeout: 252 seconds)
2021-09-27 03:56:52 +0200neurocyte01324neurocyte0132
2021-09-27 03:58:36 +0200zebrag(~chris@user/zebrag)
2021-09-27 04:04:45 +0200lemonsnicks(~lemonsnic@cpc159519-perr18-2-0-cust114.19-1.cable.virginm.net) (Quit: ZNC 1.8.2 - https://znc.in)
2021-09-27 04:07:59 +0200MQ-17J(~MQ-17J@d192-24-122-179.try.wideopenwest.com) (Read error: Connection reset by peer)
2021-09-27 04:08:10 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-09-27 04:09:06 +0200MQ-17J(~MQ-17J@d192-24-122-179.try.wideopenwest.com)
2021-09-27 04:10:11 +0200td_(~td@94.134.91.109) (Ping timeout: 252 seconds)
2021-09-27 04:11:45 +0200td_(~td@muedsl-82-207-238-023.citykom.de)
2021-09-27 04:15:49 +0200[itchyjunk](~itchyjunk@user/itchyjunk/x-7353470)
2021-09-27 04:15:55 +0200sneedsfeed(~sneedsfee@rrcs-173-95-122-169.midsouth.biz.rr.com) (Ping timeout: 256 seconds)
2021-09-27 04:15:58 +0200lemonsnicks(~lemonsnic@cpc159519-perr18-2-0-cust114.19-1.cable.virginm.net)
2021-09-27 04:24:55 +0200yinghua(~yinghua@2800:2121:1400:1db:dd9a:21db:bfa:2483) (Quit: Leaving)
2021-09-27 04:25:30 +0200pretty_dumm_guy(trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) (Quit: WeeChat 3.3)
2021-09-27 04:28:09 +0200alx741(~alx741@186.178.109.140) (Quit: alx741)
2021-09-27 04:34:09 +0200mestre(~mestre@191.177.175.57) (Quit: leaving)
2021-09-27 04:40:19 +0200FinnElija(~finn_elij@user/finn-elija/x-0085643) (Ping timeout: 252 seconds)
2021-09-27 04:41:32 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 252 seconds)
2021-09-27 04:41:55 +0200FinnElija(~finn_elij@user/finn-elija/x-0085643)
2021-09-27 04:43:40 +0200falafel_(~falafel@2603-8000-d800-688c-d1df-4118-0ede-09f0.res6.spectrum.com)
2021-09-27 04:44:47 +0200machinedgod(~machinedg@24.105.81.50)
2021-09-27 05:00:03 +0200zebrag(~chris@user/zebrag) (Quit: Konversation terminated!)
2021-09-27 05:01:00 +0200yauhsien(~yauhsien@118-167-48-21.dynamic-ip.hinet.net)
2021-09-27 05:02:59 +0200shapr(~user@pool-100-36-247-68.washdc.fios.verizon.net) (Ping timeout: 252 seconds)
2021-09-27 05:19:49 +0200wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-09-27 05:19:50 +0200wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Changing host)
2021-09-27 05:19:50 +0200wroathe(~wroathe@user/wroathe)
2021-09-27 05:21:50 +0200hgolden(~hgolden2@cpe-172-114-81-123.socal.res.rr.com) (Remote host closed the connection)
2021-09-27 05:24:25 +0200hgolden(~hgolden2@cpe-172-114-81-123.socal.res.rr.com)
2021-09-27 05:25:37 +0200wroathe(~wroathe@user/wroathe) (Ping timeout: 265 seconds)
2021-09-27 05:30:23 +0200troydm(~troydm@host-176-37-124-197.b025.la.net.ua) (Quit: What is Hope? That all of your wishes and all of your dreams come true? To turn back time because things were not supposed to happen like that (C) Rau Le Creuset)
2021-09-27 05:30:35 +0200troydm(~troydm@host-176-37-124-197.b025.la.net.ua)
2021-09-27 05:42:30 +0200wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-09-27 05:42:30 +0200wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Changing host)
2021-09-27 05:42:30 +0200wroathe(~wroathe@user/wroathe)
2021-09-27 05:42:49 +0200[itchyjunk](~itchyjunk@user/itchyjunk/x-7353470) (Remote host closed the connection)
2021-09-27 05:44:50 +0200pavonia(~user@user/siracusa) (Quit: Bye!)
2021-09-27 05:46:59 +0200wroathe(~wroathe@user/wroathe) (Ping timeout: 252 seconds)
2021-09-27 05:51:56 +0200Guest1654(~Guest16@219.sub-174-250-145.myvzw.com)
2021-09-27 05:52:58 +0200 <Guest1654> Whats good any one on here
2021-09-27 05:57:01 +0200Guest90(~Guest90@219.sub-174-250-145.myvzw.com)
2021-09-27 05:57:11 +0200falafel__(~falafel@cpe-76-168-195-162.socal.res.rr.com)
2021-09-27 06:00:26 +0200falafel_(~falafel@2603-8000-d800-688c-d1df-4118-0ede-09f0.res6.spectrum.com) (Ping timeout: 260 seconds)
2021-09-27 06:01:50 +0200MQ-17J(~MQ-17J@d192-24-122-179.try.wideopenwest.com) (Read error: Connection reset by peer)
2021-09-27 06:01:58 +0200MQ-17J(~MQ-17J@d192-24-122-179.try.wideopenwest.com)
2021-09-27 06:02:03 +0200MQ-17J(~MQ-17J@d192-24-122-179.try.wideopenwest.com) (Read error: Connection reset by peer)
2021-09-27 06:02:23 +0200MQ-17J(~MQ-17J@d192-24-122-179.try.wideopenwest.com)
2021-09-27 06:05:51 +0200Guest1654(~Guest16@219.sub-174-250-145.myvzw.com) (Ping timeout: 256 seconds)
2021-09-27 06:06:14 +0200yauhsien(~yauhsien@118-167-48-21.dynamic-ip.hinet.net) (Ping timeout: 252 seconds)
2021-09-27 06:09:15 +0200Guest90(~Guest90@219.sub-174-250-145.myvzw.com) (Ping timeout: 256 seconds)
2021-09-27 06:16:18 +0200machinedgod(~machinedg@24.105.81.50) (Ping timeout: 260 seconds)
2021-09-27 06:20:26 +0200wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-09-27 06:20:26 +0200wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Changing host)
2021-09-27 06:20:26 +0200wroathe(~wroathe@user/wroathe)
2021-09-27 06:22:32 +0200lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2021-09-27 06:29:25 +0200lavaman(~lavaman@98.38.249.169)
2021-09-27 06:30:34 +0200Axman6Sadly, there was, in fact, no one on here
2021-09-27 06:31:24 +0200zmt00(~zmt00@user/zmt00) (Read error: Connection reset by peer)
2021-09-27 06:33:44 +0200lavaman(~lavaman@98.38.249.169) (Ping timeout: 252 seconds)
2021-09-27 06:34:38 +0200zmt00(~zmt00@user/zmt00)
2021-09-27 06:35:23 +0200segfaultfizzbuzz(~segfaultf@135-180-0-138.static.sonic.net) (Ping timeout: 252 seconds)
2021-09-27 06:36:06 +0200slowButPresent(~slowButPr@user/slowbutpresent) (Quit: leaving)
2021-09-27 06:38:27 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-09-27 06:49:05 +0200chomwitt(~chomwitt@2a02:587:dc0a:5800:12c3:7bff:fe6d:d374)
2021-09-27 06:53:21 +0200takuan(~takuan@178-116-218-225.access.telenet.be)
2021-09-27 06:57:40 +0200emf(~emf@2601:600:104:1fb:1448:b25b:b518:8649)
2021-09-27 06:58:16 +0200emf(~emf@2601:600:104:1fb:1448:b25b:b518:8649) (Client Quit)
2021-09-27 06:58:59 +0200emf(~emf@2601:600:104:1fb:1448:b25b:b518:8649)
2021-09-27 06:59:38 +0200emf_(~emf@2601:602:9401:b660:47d:d5f4:4143:7c05)
2021-09-27 07:03:26 +0200emf(~emf@2601:600:104:1fb:1448:b25b:b518:8649) (Ping timeout: 260 seconds)
2021-09-27 07:03:29 +0200emf__(~emf@2620:10d:c090:400::5:5f6f)
2021-09-27 07:04:22 +0200emf_(~emf@2601:602:9401:b660:47d:d5f4:4143:7c05) (Ping timeout: 260 seconds)
2021-09-27 07:05:09 +0200cjb(~cjb@user/cjb) ()
2021-09-27 07:11:57 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 265 seconds)
2021-09-27 07:19:23 +0200zangi(~zangi@103.154.230.133)
2021-09-27 07:21:59 +0200 <zangi> does cabal test normally takes an argument? I've seen a package from hackage that its test takes an argument, i.e. `main = do [control_port, test_port] <- getArgs` which will fail if I run `cabal test`
2021-09-27 07:23:28 +0200emf(~emf@2620:10d:c090:400::5:5f6f)
2021-09-27 07:25:22 +0200emf__(~emf@2620:10d:c090:400::5:5f6f) (Ping timeout: 260 seconds)
2021-09-27 07:26:10 +0200 <Axman6> I can't remember ever seeing that
2021-09-27 07:27:00 +0200 <Axman6> though many test frameworks do provide a function you can assign main to and they will often support some kind of configuration - perhaps try cabal test --help and see if there's something about test arguments
2021-09-27 07:27:15 +0200 <Axman6> I know stack has a way, and I would be extremely surprised of cabal doesn't
2021-09-27 07:27:29 +0200zmt00(~zmt00@user/zmt00) (Read error: Connection reset by peer)
2021-09-27 07:28:57 +0200 <zangi> https://hackage.haskell.org/package/serialport-0.5.2/src/tests/Tests.hs
2021-09-27 07:30:49 +0200wroathe(~wroathe@user/wroathe) (Ping timeout: 252 seconds)
2021-09-27 07:35:08 +0200 <sclv> zangi: see `cabal test help` and it'll show you the flags (which includes --test-options)
2021-09-27 07:35:36 +0200emf_(~emf@2620:10d:c090:400::5:5f6f)
2021-09-27 07:35:49 +0200emf(~emf@2620:10d:c090:400::5:5f6f) (Ping timeout: 252 seconds)
2021-09-27 07:37:30 +0200mikoto-chan(~mikoto-ch@83.137.2.244) (Ping timeout: 260 seconds)
2021-09-27 07:38:35 +0200emf(~emf@2620:10d:c090:400::5:5f6f)
2021-09-27 07:39:01 +0200 <zangi> isn't `cabal build` run the test by default?
2021-09-27 07:39:31 +0200mikoto-chan(~mikoto-ch@83.137.2.246)
2021-09-27 07:41:17 +0200 <sclv> nope! you have to ask it to
2021-09-27 07:42:10 +0200emf_(~emf@2620:10d:c090:400::5:5f6f) (Ping timeout: 260 seconds)
2021-09-27 07:42:25 +0200 <Axman6> the other way around is true, cabal test will build too
2021-09-27 07:42:25 +0200 <zangi> oh shoot, I was confusing it with Nix package manager which enables the test by default
2021-09-27 07:47:42 +0200wroathe(~wroathe@user/wroathe)
2021-09-27 07:48:33 +0200ircbrowse_tom(~ircbrowse@2a01:4f8:1c1c:9319::1) (ZNC 1.7.5+deb4 - https://znc.in)
2021-09-27 07:48:57 +0200ircbrowse_tom(~ircbrowse@2a01:4f8:1c1c:9319::1)
2021-09-27 07:48:57 +0200Server+Cnt
2021-09-27 07:49:09 +0200drewolson(~drewolson@user/drewolson)
2021-09-27 07:49:16 +0200shanemikel(~shanemike@desk.roadwar.net)
2021-09-27 07:49:24 +0200mcfrdy(~mcfrdy@user/mcfrdy)
2021-09-27 07:49:24 +0200erisco(~erisco@d24-57-249-233.home.cgocable.net)
2021-09-27 07:51:53 +0200max22-(~maxime@2a01cb0883359800e72b80574f347e03.ipv6.abo.wanadoo.fr)
2021-09-27 07:52:16 +0200wroathe(~wroathe@user/wroathe) (Ping timeout: 252 seconds)
2021-09-27 07:54:41 +0200sm2n(~sm2n@user/sm2n) (*.net *.split)
2021-09-27 07:54:41 +0200Vq(~vq@90-227-195-41-no77.tbcn.telia.com) (*.net *.split)
2021-09-27 07:54:41 +0200fiddlerwoaroof(~fiddlerwo@user/fiddlerwoaroof) (*.net *.split)
2021-09-27 07:54:41 +0200aji(~alex@prickle.ajitek.net) (*.net *.split)
2021-09-27 07:54:41 +0200tito(tito@tilde.team) (*.net *.split)
2021-09-27 07:54:41 +0200astra`(sid289983@user/amish) (*.net *.split)
2021-09-27 07:54:41 +0200srk(~sorki@user/srk) (*.net *.split)
2021-09-27 07:54:41 +0200adium(adium@user/adium) (*.net *.split)
2021-09-27 07:54:41 +0200eldritch_(~eldritch@user/eldritch/x-9272577) (*.net *.split)
2021-09-27 07:54:41 +0200flukiluke(~m-7humut@plum.alephc.xyz) (*.net *.split)
2021-09-27 07:54:41 +0200mrus(~mrus@149.28.224.172) (*.net *.split)
2021-09-27 07:54:41 +0200carter(sid14827@id-14827.helmsley.irccloud.com) (*.net *.split)
2021-09-27 07:54:41 +0200gmc(sid58314@id-58314.ilkley.irccloud.com) (*.net *.split)
2021-09-27 07:54:41 +0200connrs(~connrs@user/connrs) (*.net *.split)
2021-09-27 07:54:41 +0200tomboy64(~tomboy64@user/tomboy64) (*.net *.split)
2021-09-27 07:54:41 +0200stampirl(~stampirl@195-154-112-77.rev.poneytelecom.eu) (*.net *.split)
2021-09-27 07:54:41 +0200sus(zero@user/zeromomentum) (*.net *.split)
2021-09-27 07:54:41 +0200micro(~micro@user/micro) (*.net *.split)
2021-09-27 07:54:41 +0200kosmikus(~kosmikus@nullzig.kosmikus.org) (*.net *.split)
2021-09-27 07:54:41 +0200angerman(sid209936@id-209936.ilkley.irccloud.com) (*.net *.split)
2021-09-27 07:54:41 +0200hook54321(sid149355@user/hook54321) (*.net *.split)
2021-09-27 07:54:41 +0200ProofTechnique(sid79547@id-79547.ilkley.irccloud.com) (*.net *.split)
2021-09-27 07:54:41 +0200whez(sid470288@id-470288.lymington.irccloud.com) (*.net *.split)
2021-09-27 07:54:41 +0200lisq(~quassel@lis.moe) (*.net *.split)
2021-09-27 07:54:41 +0200SoF(~skius@user/skius) (*.net *.split)
2021-09-27 07:54:41 +0200rbocquet(~weechat@2001:bc8:47a8:44e::1) (*.net *.split)
2021-09-27 07:54:42 +0200energizer(~energizer@user/energizer) (*.net *.split)
2021-09-27 07:54:42 +0200drewr(~drew@user/drewr) (*.net *.split)
2021-09-27 07:54:42 +0200Unode(~Unode@194.94.44.220) (*.net *.split)
2021-09-27 07:54:42 +0200polux(~polux@51.15.169.172) (*.net *.split)
2021-09-27 07:54:42 +0200Dykam(Dykam@dykam.nl) (*.net *.split)
2021-09-27 07:54:42 +0200wanko(~wanko@51.15.4.226) (*.net *.split)
2021-09-27 07:54:42 +0200Clint(~Clint@user/clint) (*.net *.split)
2021-09-27 07:54:42 +0200Trattue(~Trattue@152.70.182.158) (*.net *.split)
2021-09-27 07:54:42 +0200dme2(~dme2@67.205.140.199) (*.net *.split)
2021-09-27 07:54:42 +0200drdo(~drdo@overlord0.drdo.eu) (*.net *.split)
2021-09-27 07:54:42 +0200agander_m(sid407952@id-407952.tinside.irccloud.com) (*.net *.split)
2021-09-27 07:54:42 +0200_0x47(sid508683@id-508683.tinside.irccloud.com) (*.net *.split)
2021-09-27 07:54:42 +0200kristjansson_(sid126207@id-126207.tinside.irccloud.com) (*.net *.split)
2021-09-27 07:54:42 +0200jle`(~justin@cpe-23-240-75-236.socal.res.rr.com) (*.net *.split)
2021-09-27 07:54:42 +0200mrckndt(~mrckndt@user/mrckndt) (*.net *.split)
2021-09-27 07:54:42 +0200earthy(~arthurvl@2001:984:275b:1:ba27:ebff:fea0:40b0) (*.net *.split)
2021-09-27 07:54:42 +0200frobnicator(~frobnicat@185-227-75-147.dsl.cambrium.nl) (*.net *.split)
2021-09-27 07:54:42 +0200jiribenes(~jiribenes@rosa.jiribenes.com) (*.net *.split)
2021-09-27 07:54:42 +0200PHO`__(~pho@akari.cielonegro.org) (*.net *.split)
2021-09-27 07:54:42 +0200immae(~immae@2a01:4f8:141:53e7::) (*.net *.split)
2021-09-27 07:54:42 +0200remedan(~remedan@balak.me) (*.net *.split)
2021-09-27 07:54:42 +0200alinab(sid468903@id-468903.helmsley.irccloud.com) (*.net *.split)
2021-09-27 07:54:42 +0200megaTherion(~therion@coruscant.unix.io) (*.net *.split)
2021-09-27 07:54:42 +0200amirouche(~amirouche@user/amirouche) (*.net *.split)
2021-09-27 07:54:42 +0200mstruebing(~maex@2001:41d0:8:93c7::1) (*.net *.split)
2021-09-27 07:54:42 +0200arkeet(arkeet@moriya.ca) (*.net *.split)
2021-09-27 07:54:42 +0200codedmart(codedmart@2600:3c01::f03c:92ff:fefe:8511) (*.net *.split)
2021-09-27 07:54:42 +0200ggVGc(~ggVGc@a.lowtech.earth) (*.net *.split)
2021-09-27 07:54:42 +0200Kabouik(~Kabouik@user/kabouik) (*.net *.split)
2021-09-27 07:54:42 +0200Guest6642(~mike@user/feetwind) (*.net *.split)
2021-09-27 07:54:42 +0200Ferdirand(~somebody@2001:4c78:2012:5000::2) (*.net *.split)
2021-09-27 07:54:42 +0200bwe(~bwe@2a01:4f8:1c1c:4878::2) (*.net *.split)
2021-09-27 07:54:42 +0200greenbourne277(~greenbour@2001:4b98:dc2:45:216:3eff:fe8a:bbf0) (*.net *.split)
2021-09-27 07:54:42 +0200lieven(~mal@ns2.wyrd.be) (*.net *.split)
2021-09-27 07:54:49 +0200micro(~micro@user/micro)
2021-09-27 07:54:50 +0200Clint(~Clint@user/clint)
2021-09-27 07:54:50 +0200wanko(~wanko@51.15.4.226)
2021-09-27 07:54:50 +0200bwe(~bwe@2a01:4f8:1c1c:4878::2)
2021-09-27 07:54:52 +0200lisq(~quassel@lis.moe)
2021-09-27 07:54:52 +0200Ferdirand(~somebody@2001:4c78:2012:5000::2)
2021-09-27 07:54:52 +0200alinab(sid468903@id-468903.helmsley.irccloud.com)
2021-09-27 07:54:56 +0200Dykam(Dykam@dykam.nl)
2021-09-27 07:54:56 +0200kosmikus(~kosmikus@nullzig.kosmikus.org)
2021-09-27 07:54:57 +0200rbocquet(~weechat@2001:bc8:47a8:44e::1)
2021-09-27 07:54:57 +0200tito(tito@tilde.team)
2021-09-27 07:54:57 +0200codedmart(codedmart@2600:3c01::f03c:92ff:fefe:8511)
2021-09-27 07:54:59 +0200arkeet(arkeet@moriya.ca)
2021-09-27 07:54:59 +0200mstruebing(~maex@2001:41d0:8:93c7::1)
2021-09-27 07:55:03 +0200ProofTechnique(sid79547@id-79547.ilkley.irccloud.com)
2021-09-27 07:55:03 +0200ggVGc(~ggVGc@a.lowtech.earth)
2021-09-27 07:55:07 +0200whez(sid470288@id-470288.lymington.irccloud.com)
2021-09-27 07:55:08 +0200kristjansson_(sid126207@id-126207.tinside.irccloud.com)
2021-09-27 07:55:12 +0200greenbourne277(~greenbour@2001:4b98:dc2:45:216:3eff:fe8a:bbf0)
2021-09-27 07:55:13 +0200lieven(~mal@ns2.wyrd.be)
2021-09-27 07:55:14 +0200Guest6642(~mike@2406:d500:6:1:216:3cff:fe36:651)
2021-09-27 07:55:15 +0200earthy(~arthurvl@2001:984:275b:1:ba27:ebff:fea0:40b0)
2021-09-27 07:55:18 +0200jle`(~justin@cpe-23-240-75-236.socal.res.rr.com)
2021-09-27 07:55:18 +0200Kabouik(~Kabouik@2a03:4000:4d:fbd:4fe:b1ff:fee3:35d)
2021-09-27 07:55:18 +0200frobnicator(~frobnicat@185-227-75-147.dsl.cambrium.nl)
2021-09-27 07:55:18 +0200tomboy64(~tomboy64@2a02:2454:416:db00:ba27:ebff:fe58:73c2)
2021-09-27 07:55:21 +0200amirouche(~amirouche@2a01:4f8:c0c:d9c2::1)
2021-09-27 07:55:22 +0200gmc_(sid58314@id-58314.ilkley.irccloud.com)
2021-09-27 07:55:28 +0200angerman(sid209936@id-209936.ilkley.irccloud.com)
2021-09-27 07:55:29 +0200sus(zero@user/zeromomentum)
2021-09-27 07:55:33 +0200mrckndt(~mrckndt@user/mrckndt)
2021-09-27 07:55:34 +0200immae(~immae@2a01:4f8:141:53e7::)
2021-09-27 07:55:35 +0200polux(~polux@51.15.169.172)
2021-09-27 07:55:37 +0200carter(sid14827@id-14827.helmsley.irccloud.com)
2021-09-27 07:55:38 +0200astra`(sid289983@id-289983.hampstead.irccloud.com)
2021-09-27 07:55:41 +0200tomboy64(~tomboy64@2a02:2454:416:db00:ba27:ebff:fe58:73c2) (Changing host)
2021-09-27 07:55:41 +0200tomboy64(~tomboy64@user/tomboy64)
2021-09-27 07:55:45 +0200_0x47(sid508683@id-508683.tinside.irccloud.com)
2021-09-27 07:55:46 +0200Kabouik(~Kabouik@2a03:4000:4d:fbd:4fe:b1ff:fee3:35d) (Changing host)
2021-09-27 07:55:46 +0200Kabouik(~Kabouik@user/kabouik)
2021-09-27 07:55:49 +0200agander_m(sid407952@id-407952.tinside.irccloud.com)
2021-09-27 07:55:52 +0200astra`(sid289983@id-289983.hampstead.irccloud.com) (Changing host)
2021-09-27 07:55:52 +0200astra`(sid289983@user/amish)
2021-09-27 07:55:56 +0200Trattue(~Trattue@152.70.182.158)
2021-09-27 07:56:07 +0200jiribenes(~jiribenes@rosa.jiribenes.com)
2021-09-27 07:56:08 +0200mrus(~mrus@149.28.224.172)
2021-09-27 07:56:10 +0200sm2n(~sm2n@user/sm2n)
2021-09-27 07:56:17 +0200srk(~sorki@user/srk)
2021-09-27 07:56:23 +0200dme2(~dme2@67.205.140.199)
2021-09-27 07:56:24 +0200drdo(~drdo@overlord0.drdo.eu)
2021-09-27 07:56:25 +0200hook54321(sid149355@user/hook54321)
2021-09-27 07:56:32 +0200connrs(~connrs@user/connrs)
2021-09-27 07:56:34 +0200remedan(~remedan@balak.me)
2021-09-27 07:56:36 +0200aji(~alex@prickle.ajitek.net)
2021-09-27 07:56:36 +0200eldritch_(~eldritch@user/eldritch/x-9272577)
2021-09-27 07:57:54 +0200Unode(~Unode@194.94.44.220)
2021-09-27 07:58:53 +0200energizer(~energizer@user/energizer)
2021-09-27 07:59:38 +0200fiddlerwoaroof(~fiddlerwo@user/fiddlerwoaroof)
2021-09-27 08:00:00 +0200Vq(~vq@90-227-195-41-no77.tbcn.telia.com)
2021-09-27 08:02:52 +0200Sgeo(~Sgeo@user/sgeo) (Read error: Connection reset by peer)
2021-09-27 08:03:17 +0200adium(adium@user/adium)
2021-09-27 08:04:20 +0200amirouche(~amirouche@2a01:4f8:c0c:d9c2::1) (Quit: WeeChat 2.8)
2021-09-27 08:04:32 +0200amirouche(~amirouche@user/amirouche)
2021-09-27 08:04:45 +0200Vajb(~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi) (Read error: Connection reset by peer)
2021-09-27 08:04:53 +0200Vajb(~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi)
2021-09-27 08:05:00 +0200megaTherion(~therion@coruscant.unix.io)
2021-09-27 08:05:23 +0200mikoto-chan(~mikoto-ch@83.137.2.246) (Quit: mikoto-chan)
2021-09-27 08:09:16 +0200hololeap(~hololeap@user/hololeap) (Quit: Bye)
2021-09-27 08:11:38 +0200falafel__(~falafel@cpe-76-168-195-162.socal.res.rr.com) (Ping timeout: 252 seconds)
2021-09-27 08:21:52 +0200falafel__(~falafel@2603-8000-d800-688c-d1df-4118-0ede-09f0.res6.spectrum.com)
2021-09-27 08:25:37 +0200michalz(~michalz@185.246.204.55)
2021-09-27 08:27:30 +0200Ariakenom(~patrik@h-81-170-208-30.A163.corp.bahnhof.se)
2021-09-27 08:32:38 +0200kuribas(~user@188.189.62.173)
2021-09-27 08:33:01 +0200emf(~emf@2620:10d:c090:400::5:5f6f) (Ping timeout: 252 seconds)
2021-09-27 08:41:37 +0200brainfreeze(~brainfree@2a03:1b20:4:f011::20d) (Remote host closed the connection)
2021-09-27 08:44:12 +0200jakalx(~jakalx@base.jakalx.net) ()
2021-09-27 08:44:20 +0200zangi(~zangi@103.154.230.133) (Quit: zangi)
2021-09-27 08:47:02 +0200kenran(~kenran@b2b-37-24-119-190.unitymedia.biz)
2021-09-27 08:49:52 +0200dhouthoo(~dhouthoo@178-117-36-167.access.telenet.be)
2021-09-27 08:51:09 +0200ubert(~Thunderbi@178.115.58.211.wireless.dyn.drei.com)
2021-09-27 08:52:39 +0200jakalx(~jakalx@base.jakalx.net)
2021-09-27 08:54:57 +0200chele(~chele@user/chele)
2021-09-27 08:55:27 +0200tzh(~tzh@c-24-21-73-154.hsd1.or.comcast.net) (Quit: zzz)
2021-09-27 08:56:40 +0200rtjure(~rtjure@bras-79-132-17-74.comnet.bg)
2021-09-27 08:57:26 +0200lortabac(~lortabac@2a01:e0a:541:b8f0:64e7:f1a7:9c7e:5b3b)
2021-09-27 08:58:59 +0200kuribas(~user@188.189.62.173) (Remote host closed the connection)
2021-09-27 09:04:48 +0200tromp(~textual@dhcp-077-249-230-040.chello.nl)
2021-09-27 09:08:55 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-09-27 09:10:47 +0200hnOsmium0001(uid453710@id-453710.hampstead.irccloud.com) (Quit: Connection closed for inactivity)
2021-09-27 09:13:26 +0200falafel__(~falafel@2603-8000-d800-688c-d1df-4118-0ede-09f0.res6.spectrum.com) (Ping timeout: 245 seconds)
2021-09-27 09:18:04 +0200lavaman(~lavaman@98.38.249.169)
2021-09-27 09:18:47 +0200acidjnk_new(~acidjnk@p200300d0c703cb8375874f69261f85b4.dip0.t-ipconnect.de)
2021-09-27 09:22:11 +0200lavaman(~lavaman@98.38.249.169) (Ping timeout: 245 seconds)
2021-09-27 09:27:51 +0200acidjnk_new3(~acidjnk@pd9e0b933.dip0.t-ipconnect.de)
2021-09-27 09:30:53 +0200acidjnk(~acidjnk@p200300d0c703cb839546693cf9acbce8.dip0.t-ipconnect.de)
2021-09-27 09:31:18 +0200acidjnk_new(~acidjnk@p200300d0c703cb8375874f69261f85b4.dip0.t-ipconnect.de) (Ping timeout: 265 seconds)
2021-09-27 09:32:36 +0200acidjnk_new3(~acidjnk@pd9e0b933.dip0.t-ipconnect.de) (Ping timeout: 245 seconds)
2021-09-27 09:33:58 +0200cfricke(~cfricke@user/cfricke)
2021-09-27 09:34:22 +0200immae(~immae@2a01:4f8:141:53e7::) (Quit: WeeChat 2.9)
2021-09-27 09:34:42 +0200gehmehgeh(~user@user/gehmehgeh)
2021-09-27 09:34:49 +0200immae(~immae@2a01:4f8:141:53e7::)
2021-09-27 09:43:30 +0200lieven(~mal@ns2.wyrd.be) (Ping timeout: 260 seconds)
2021-09-27 09:44:56 +0200shriekingnoise(~shrieking@186.137.144.80) (Quit: Quit)
2021-09-27 10:00:45 +0200xff0x(~xff0x@2001:1a81:5315:a700:e786:c90b:4d0b:4699) (Ping timeout: 250 seconds)
2021-09-27 10:01:52 +0200xff0x(~xff0x@2001:1a81:5315:a700:680b:605d:85e2:404c)
2021-09-27 10:03:33 +0200dschrempf(~dominik@070-207.dynamic.dsl.fonira.net)
2021-09-27 10:06:46 +0200lieven(~mal@ns2.wyrd.be)
2021-09-27 10:10:40 +0200nfd(~nfd@user/nfd)
2021-09-27 10:18:27 +0200benin036932301(~benin@183.82.207.251)
2021-09-27 10:19:58 +0200terrorjack(~terrorjac@ec2-13-37-149-154.eu-west-3.compute.amazonaws.com) (Ping timeout: 265 seconds)
2021-09-27 10:20:23 +0200SoF(~skius@user/skius)
2021-09-27 10:20:34 +0200__monty__(~toonn@user/toonn)
2021-09-27 10:22:35 +0200yauhsien(~yauhsien@118-167-48-21.dynamic-ip.hinet.net)
2021-09-27 10:26:46 +0200yauhsien(~yauhsien@118-167-48-21.dynamic-ip.hinet.net) (Ping timeout: 245 seconds)
2021-09-27 10:26:56 +0200nabaiste^(~nabaiste@68.101.50.106) (Ping timeout: 252 seconds)
2021-09-27 10:29:18 +0200nabaiste^(~nabaiste@68.101.50.106)
2021-09-27 10:29:38 +0200werneta(~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net) (Ping timeout: 265 seconds)
2021-09-27 10:33:02 +0200kuribas(~user@ip-188-118-57-242.reverse.destiny.be)
2021-09-27 10:33:57 +0200ubert1(~Thunderbi@178.115.58.211.wireless.dyn.drei.com)
2021-09-27 10:53:00 +0200teddyc(theodorc@cassarossa.samfundet.no)
2021-09-27 10:55:50 +0200Guest6489(~chris@81.96.113.213) (Remote host closed the connection)
2021-09-27 10:57:12 +0200tromp(~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2021-09-27 10:58:43 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:75e5:da2f:c054:6c5d) (Remote host closed the connection)
2021-09-27 11:00:43 +0200chris(~chris@81.96.113.213)
2021-09-27 11:00:47 +0200chrisGuest8621
2021-09-27 11:05:26 +0200Guest8621(~chris@81.96.113.213) (Ping timeout: 252 seconds)
2021-09-27 11:05:47 +0200spruit11(~quassel@2a02:a467:ccd6:1:1568:8cd5:25bd:6e4e) (Ping timeout: 240 seconds)
2021-09-27 11:07:54 +0200azeem(~azeem@2a00:801:2d6:ba33:1dbc:2215:71a9:ffcb) (Read error: Connection reset by peer)
2021-09-27 11:09:01 +0200Gurkenglas(~Gurkengla@dslb-002-203-144-204.002.203.pools.vodafone-ip.de)
2021-09-27 11:11:32 +0200azeem(~azeem@emp-180-222.eduroam.uu.se)
2021-09-27 11:13:59 +0200raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
2021-09-27 11:19:37 +0200spruit11(~quassel@2a02:a467:ccd6:1:1568:8cd5:25bd:6e4e)
2021-09-27 11:20:23 +0200dschrempf(~dominik@070-207.dynamic.dsl.fonira.net) (Quit: WeeChat 3.3)
2021-09-27 11:24:24 +0200spruit11(~quassel@2a02:a467:ccd6:1:1568:8cd5:25bd:6e4e) (Ping timeout: 265 seconds)
2021-09-27 11:25:49 +0200econo(uid147250@user/econo) (Quit: Connection closed for inactivity)
2021-09-27 11:25:49 +0200azeem(~azeem@emp-180-222.eduroam.uu.se) (Read error: Connection reset by peer)
2021-09-27 11:28:27 +0200azeem(~azeem@emp-180-222.eduroam.uu.se)
2021-09-27 11:38:11 +0200jonathanx(~jonathan@dyn-8-sc.cdg.chalmers.se) (Remote host closed the connection)
2021-09-27 11:39:45 +0200 <dminuoso> Does warp not come with something to parse HostPreference?
2021-09-27 11:40:10 +0200jonathanx(~jonathan@dyn-8-sc.cdg.chalmers.se)
2021-09-27 11:41:09 +0200 <dminuoso> https://hackage.haskell.org/package/streaming-commons-0.2.2.1/docs/src/Data.Streaming.Network.Inte…
2021-09-27 11:41:11 +0200 <dminuoso> Zzzz
2021-09-27 11:41:32 +0200 <dminuoso> So essentially there's no tools that can validate a host preference, I just have to stuff it into `run` and watch it blow up
2021-09-27 11:51:09 +0200spruit11(~quassel@2a02:a467:ccd6:1:1568:8cd5:25bd:6e4e)
2021-09-27 11:52:58 +0200terrorjack(~terrorjac@2a05:d012:f4:f400:3981:7d7e:56ee:2dd9)
2021-09-27 11:55:31 +0200spruit11(~quassel@2a02:a467:ccd6:1:1568:8cd5:25bd:6e4e) (Ping timeout: 245 seconds)
2021-09-27 11:55:37 +0200tromp(~textual@dhcp-077-249-230-040.chello.nl)
2021-09-27 11:56:07 +0200troydm1(~troydm@host-176-37-124-197.b025.la.net.ua)
2021-09-27 11:57:08 +0200troydm(~troydm@host-176-37-124-197.b025.la.net.ua) (Ping timeout: 252 seconds)
2021-09-27 11:59:07 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:75e5:da2f:c054:6c5d)
2021-09-27 12:03:26 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:75e5:da2f:c054:6c5d) (Ping timeout: 245 seconds)
2021-09-27 12:08:51 +0200__monty__(~toonn@user/toonn) (Ping timeout: 245 seconds)
2021-09-27 12:09:50 +0200kenran(~kenran@b2b-37-24-119-190.unitymedia.biz) (Ping timeout: 265 seconds)
2021-09-27 12:10:27 +0200azeem(~azeem@emp-180-222.eduroam.uu.se) (Read error: Connection reset by peer)
2021-09-27 12:10:46 +0200azeem(~azeem@2a00:801:2d6:ba33:1dbc:2215:71a9:ffcb)
2021-09-27 12:19:01 +0200ub(~Thunderbi@77.119.200.198.wireless.dyn.drei.com)
2021-09-27 12:20:47 +0200ubert1(~Thunderbi@178.115.58.211.wireless.dyn.drei.com) (Ping timeout: 252 seconds)
2021-09-27 12:20:55 +0200spruit11(~quassel@2a02:a467:ccd6:1:1568:8cd5:25bd:6e4e)
2021-09-27 12:20:57 +0200ubert(~Thunderbi@178.115.58.211.wireless.dyn.drei.com) (Ping timeout: 265 seconds)
2021-09-27 12:20:57 +0200ububert
2021-09-27 12:21:53 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 252 seconds)
2021-09-27 12:22:27 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-09-27 12:24:12 +0200yauhsien(~yauhsien@118-167-48-21.dynamic-ip.hinet.net)
2021-09-27 12:25:04 +0200azeem(~azeem@2a00:801:2d6:ba33:1dbc:2215:71a9:ffcb) (Read error: Connection reset by peer)
2021-09-27 12:27:15 +0200azeem(~azeem@emp-180-222.eduroam.uu.se)
2021-09-27 12:28:12 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 265 seconds)
2021-09-27 12:28:20 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-09-27 12:28:29 +0200yauhsien(~yauhsien@118-167-48-21.dynamic-ip.hinet.net) (Ping timeout: 252 seconds)
2021-09-27 12:30:11 +0200__monty__(~toonn@user/toonn)
2021-09-27 12:33:26 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 245 seconds)
2021-09-27 12:34:19 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-09-27 12:38:34 +0200__monty__(~toonn@user/toonn) (Quit: leaving)
2021-09-27 12:39:29 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 252 seconds)
2021-09-27 12:40:07 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-09-27 12:45:27 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 265 seconds)
2021-09-27 12:45:58 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-09-27 12:51:24 +0200azeem(~azeem@emp-180-222.eduroam.uu.se) (Ping timeout: 265 seconds)
2021-09-27 12:51:55 +0200azeem(~azeem@2a00:801:2d6:ba33:1dbc:2215:71a9:ffcb)
2021-09-27 12:54:51 +0200azeem(~azeem@2a00:801:2d6:ba33:1dbc:2215:71a9:ffcb) (Read error: Connection reset by peer)
2021-09-27 12:55:04 +0200azeem(~azeem@emp-180-222.eduroam.uu.se)
2021-09-27 12:56:14 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 265 seconds)
2021-09-27 12:56:14 +0200azeem(~azeem@emp-180-222.eduroam.uu.se) (Read error: Connection reset by peer)
2021-09-27 12:56:40 +0200CiaoSen(~Jura@p2e5c6ba6.dip0.t-ipconnect.de)
2021-09-27 12:56:53 +0200azeem(~azeem@emp-180-222.eduroam.uu.se)
2021-09-27 12:57:59 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-09-27 12:58:59 +0200jonathanx(~jonathan@dyn-8-sc.cdg.chalmers.se) (Remote host closed the connection)
2021-09-27 12:59:24 +0200WhiteKarura(~WhiteKaru@user/whitekarura)
2021-09-27 12:59:29 +0200WhiteKarura(~WhiteKaru@user/whitekarura) ()
2021-09-27 13:00:04 +0200jonathanx(~jonathan@dyn-8-sc.cdg.chalmers.se)
2021-09-27 13:00:51 +0200alx741(~alx741@186.178.109.140)
2021-09-27 13:03:01 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 245 seconds)
2021-09-27 13:03:50 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-09-27 13:04:16 +0200xff0x(~xff0x@2001:1a81:5315:a700:680b:605d:85e2:404c) (Ping timeout: 245 seconds)
2021-09-27 13:09:17 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 265 seconds)
2021-09-27 13:10:11 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-09-27 13:14:56 +0200xff0x(~xff0x@2001:1a81:5315:a700:680b:605d:85e2:404c)
2021-09-27 13:15:09 +0200asgas(~asgas@c-24-30-27-91.hsd1.ga.comcast.net)
2021-09-27 13:15:29 +0200 <asgas> What should I be using for haskell package installing? Stack? Cabal? This is all new and confusing to me.
2021-09-27 13:15:31 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 245 seconds)
2021-09-27 13:16:13 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-09-27 13:17:21 +0200dextaa(~DV@user/dextaa) (Ping timeout: 265 seconds)
2021-09-27 13:19:47 +0200lavaman(~lavaman@98.38.249.169)
2021-09-27 13:20:21 +0200 <maerwald> cabal
2021-09-27 13:21:42 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 265 seconds)
2021-09-27 13:22:17 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-09-27 13:22:35 +0200 <asgas> Why cabal? I've read cabal hell is a thing.
2021-09-27 13:22:50 +0200 <arahael> cabal's improved over the years, it used to be far clunkier.
2021-09-27 13:24:35 +0200 <merijn> "cabal hell" as a real thing stopped existing over a decade ago
2021-09-27 13:24:36 +0200lavaman(~lavaman@98.38.249.169) (Ping timeout: 265 seconds)
2021-09-27 13:24:41 +0200 <arahael> As for the package version things, the only thing stack helps there is they curate their package sets; but if you end up neeidng to go outside that set you're back where you started anyway.
2021-09-27 13:24:53 +0200 <maerwald> asgas: cabal is the standard
2021-09-27 13:25:12 +0200 <asgas> Alrighty then. I'll use cabal. What's the difference between a v1-install and v2-install?
2021-09-27 13:25:14 +0200 <maerwald> and currently has more active development
2021-09-27 13:25:15 +0200 <merijn> 95% of the people using the term "cabal hell" these days don't even know what "cabal hell" referred to and really just mean "I'm using outdated and bitrotted dependencies and now stuff don't work"
2021-09-27 13:25:35 +0200 <merijn> asgas: Just use "install" (i.e. v2-install in all versions you should consider using)
2021-09-27 13:25:42 +0200 <arahael> merijn: Also, "I'm using libraries that honestly shouldn't have ever been released".
2021-09-27 13:25:43 +0200 <dibblego> haha, 95% is generous
2021-09-27 13:25:47 +0200 <maerwald> merijn: I have projects that are 6-7 years old and I can still make them build with cabal
2021-09-27 13:26:01 +0200 <merijn> asgas: v1- vs v2- is backwards compat stuff
2021-09-27 13:26:35 +0200 <merijn> asgas: in cabal-install 3.0 install started working differently, but we're at 3.6 by now and you really shouldn't be using anything older than 3.0, so pretend v1- doesn't exist
2021-09-27 13:27:02 +0200 <merijn> dibblego: I know, probably closer to 99.9% of complainants don't know what actual cabal hell is >.>
2021-09-27 13:27:12 +0200 <merijn> dibblego: I like to hedge on the conservative side
2021-09-27 13:27:21 +0200 <merijn> maerwald: I'm not saying you can't build old stuff
2021-09-27 13:27:43 +0200 <merijn> maerwald: Just saying it's weird people use libraries that had 1 release a decade ago, then blame "cabal hell" when their code refuses to build
2021-09-27 13:27:58 +0200 <asgas> Is finding haskell developers difficult? Because haskell looks very cool compared to C or C++.
2021-09-27 13:28:14 +0200 <maerwald> asgas: good haskell developers or any?
2021-09-27 13:28:16 +0200 <arahael> asgas: You've found a few here easily enough? ;)
2021-09-27 13:29:06 +0200 <dminuoso> asgas: cabal hell is a thing from the "v1" past. "v2" is what addressed it, and it has become the default in recent cabal versions. So if you type `cabal build`, it will automatically use the v2-build command behind the scenes.
2021-09-27 13:29:35 +0200 <Cajun> cabal hell is just a specialized use of dependency hell right?
2021-09-27 13:29:39 +0200 <dminuoso> Relatedly, `cabal install` is no longer a thing for libraries, it's only useful for binaries.
2021-09-27 13:29:40 +0200 <merijn> dminuoso: Not even v1-hell
2021-09-27 13:29:42 +0200 <merijn> Cajun: No
2021-09-27 13:29:48 +0200 <merijn> Cajun: That's just the silly modern usage
2021-09-27 13:30:05 +0200 <jneira[m]> well to be honest still there are some cabal bugs which could corrupt the global store, but they are marginal imo
2021-09-27 13:30:09 +0200 <maerwald> stack has dependency hell too btw
2021-09-27 13:30:13 +0200 <dminuoso> asgas: so the regular flow for dependencies is to just declare them in your cabal file, and everything else happens automatically via `cabal run` and `cabal build`. :)
2021-09-27 13:30:25 +0200 <jneira[m]> but it is not the cabal hell from 2000
2021-09-27 13:30:30 +0200 <merijn> Cajun: *Actual* cabal hell, from back in the day is when cabal would (silently) upgrade an installed package when installing something new. Which silently broke every installed package depending on the old version in an old recoverable way
2021-09-27 13:30:49 +0200 <Cajun> that sounds.. infuriating :P
2021-09-27 13:30:57 +0200 <maerwald> sandboxes fixed that
2021-09-27 13:31:00 +0200 <merijn> Cajun: The only way out of a sea of broken packages and obscure errors was nuking everything
2021-09-27 13:31:09 +0200 <merijn> Cajun: But that's not been an issue for close to a decade
2021-09-27 13:31:20 +0200 <merijn> Cajun: It was, hence the term "hell"
2021-09-27 13:31:26 +0200 <jneira[m]> (and cabal install -lib could cause cabal hell via ghc env files)
2021-09-27 13:31:50 +0200 <merijn> "my dependencies aren't compatible" is often labelled "cabal hell" these days, but that's weird, 'cos wtf is cabal supposed to do about that?
2021-09-27 13:32:04 +0200 <merijn> "don't use incompatible dependencies, then"
2021-09-27 13:32:05 +0200 <maerwald> merijn: throw away its solver
2021-09-27 13:32:07 +0200 <maerwald> lol
2021-09-27 13:32:41 +0200 <maerwald> a "curated package set" is really just a statement "I'm too lazy to think about what versions to use"
2021-09-27 13:32:42 +0200 <merijn> maerwald: Fuck it, let's throw away dependencies on just have everything depend on master and do versioning explicitly in the module names, like go >.>
2021-09-27 13:32:59 +0200 <maerwald> I've been there
2021-09-27 13:33:15 +0200 <maerwald> and I think the only ecosystem that does it right is ... C
2021-09-27 13:33:32 +0200 <maerwald> if you mess up your API, create a new package or get lost :p
2021-09-27 13:34:11 +0200 <arahael> merijn: Hang on, that sounds like Nix!
2021-09-27 13:34:15 +0200 <jneira[m]> dont try to be smart to make users be smart or die :-D
2021-09-27 13:34:19 +0200 <maerwald> PVP and semver is too much maintenance overhead for most people and it encourages not caring about API breakage
2021-09-27 13:36:22 +0200 <maerwald> also... the ability to change behavior of a function without even changing its types... is horrible. And that's one of the major selling points of PVP
2021-09-27 13:36:44 +0200 <merijn> maerwald: There's only one thing that gets people caring about API breakage
2021-09-27 13:36:50 +0200 <maerwald> it assumes people read changelogs and have good test coverage
2021-09-27 13:36:55 +0200 <maerwald> 2 assumptions that are mostly wrong
2021-09-27 13:36:58 +0200 <merijn> getting paid
2021-09-27 13:37:29 +0200 <maerwald> merijn: oh, like cardano?
2021-09-27 13:37:52 +0200 <maerwald> they get paid and their API is a constantly moving monstrosity :)
2021-09-27 13:37:53 +0200 <merijn> maerwald: Getting paid is a necessary, not sufficient condition for caring about breakage :p
2021-09-27 13:38:01 +0200 <merijn> maerwald: Don't know, don't care, tbh
2021-09-27 13:38:08 +0200 <merijn> I know cardano exists and that's all I know
2021-09-27 13:38:22 +0200alzgh(~alzgh@user/alzgh)
2021-09-27 13:38:29 +0200 <maerwald> well, getting paid is clearly not enough, yeah
2021-09-27 13:38:41 +0200 <maerwald> caring about API takes effort
2021-09-27 13:39:08 +0200 <maerwald> you're basically making using your library less expensive for others
2021-09-27 13:39:16 +0200 <merijn> People wanna rely on stable open source APIs, but most people build thing for themselves so they don't give a fuck about you
2021-09-27 13:39:36 +0200 <merijn> maerwald: You make that sound like a feature :p
2021-09-27 13:39:45 +0200tromp(~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2021-09-27 13:39:50 +0200 <maerwald> but if others want to use your api real bad, you don't need to care
2021-09-27 13:40:03 +0200 <maerwald> like base breaking every other year
2021-09-27 13:40:12 +0200 <maerwald> you can hardly opt out
2021-09-27 13:41:35 +0200 <arahael> What's PVP again? :(
2021-09-27 13:41:51 +0200 <maerwald> it's like PVE, except you're fighting version bounds, LOL
2021-09-27 13:42:06 +0200 <arahael> :facepalm:.
2021-09-27 13:42:29 +0200dextaa(~DV@user/dextaa)
2021-09-27 13:42:35 +0200juhp(~juhp@118.200.109.69) (Quit: juhp)
2021-09-27 13:42:49 +0200juhp(~juhp@118.200.109.69)
2021-09-27 13:42:57 +0200 <merijn> arahael: Package Versioning Policy
2021-09-27 13:42:59 +0200 <merijn> @where pvp
2021-09-27 13:42:59 +0200 <lambdabot> https://pvp.haskell.org/
2021-09-27 13:43:10 +0200 <arahael> merijn: Thanks. :)
2021-09-27 13:44:04 +0200 <maerwald> add to your bashrc: alias cabal_build='cabal build --allow-newer'
2021-09-27 13:44:06 +0200 <maerwald> :p
2021-09-27 13:44:11 +0200 <jneira[m]> https://cabal.fandom.com/wiki/Player_versus_player
2021-09-27 13:45:31 +0200 <Franciman> Can I ask about the happy parser generator here? Or is it considered offtopic?
2021-09-27 13:45:39 +0200 <dminuoso> Ask.
2021-09-27 13:45:46 +0200 <Franciman> basically I wanted to know if there is a way to get happy to tell me what the conflicts it found are
2021-09-27 13:45:51 +0200 <Franciman> it just says there are 60 conflicts
2021-09-27 13:46:05 +0200 <Franciman> so I want to ask it: can you please tell me where? ^^
2021-09-27 13:47:55 +0200juhp(~juhp@118.200.109.69) (Quit: juhp)
2021-09-27 13:48:08 +0200juhp(~juhp@118.200.109.69)
2021-09-27 13:48:22 +0200juhp(~juhp@118.200.109.69) (Remote host closed the connection)
2021-09-27 13:48:32 +0200juhp(~juhp@118.200.109.69)
2021-09-27 13:48:41 +0200gmc_gmc
2021-09-27 13:48:48 +0200 <Franciman> oh! Found out, I can ask that by telling it to put grammar info in a file
2021-09-27 13:48:57 +0200ubert(~Thunderbi@77.119.200.198.wireless.dyn.drei.com) (Quit: ubert)
2021-09-27 13:49:00 +0200 <Franciman> I couldn't believe I would say this but, damn, bison is so advanced
2021-09-27 13:49:13 +0200 <Franciman> it shows the grammar problems WITH COLORS
2021-09-27 13:49:15 +0200 <Franciman> lol
2021-09-27 13:49:24 +0200alx741(~alx741@186.178.109.140) (Ping timeout: 265 seconds)
2021-09-27 13:50:17 +0200 <Franciman> I can also ask it to produce counterexamples, displaying what the conflicts are
2021-09-27 13:51:14 +0200 <asgas> Would you say haskell is a difficult language to learn?
2021-09-27 13:51:19 +0200yauhsien(~yauhsien@118-167-48-21.dynamic-ip.hinet.net)
2021-09-27 13:51:33 +0200pretty_dumm_guy(trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655)
2021-09-27 13:51:50 +0200 <earthy> asgas: yes, I would. but that has a bit to do with functional programming in general being not easy to learn for everyone.
2021-09-27 13:52:08 +0200 <merijn> asgas: Yes, but disagree with earthy's claim :p
2021-09-27 13:52:09 +0200 <earthy> (to some people it comes more easily than to others)
2021-09-27 13:52:12 +0200 <arahael> Also note: most devs seem to forget the difficulty they had with learning their first langauge.
2021-09-27 13:52:45 +0200 <arahael> I used qbasic for like, a year, not learning about functions. But when it comes to learning languages these days, I try to learn every single advanced feature the language has.
2021-09-27 13:52:57 +0200 <merijn> asgas: Programming is hard to learn. Learning Haskell is a lot like learning to program again from scratch (a feeling many experienced programmers have forgotten and/or surpressed)
2021-09-27 13:53:00 +0200 <arahael> (So I set a higher barrier)
2021-09-27 13:53:29 +0200 <asgas> I didn't know that purescript was made in haskell. I'm surprised. Same thing with shellcheck (A bash and other shell static analyzer for those who don't know what shellcheck is)
2021-09-27 13:53:29 +0200 <merijn> asgas: I know several people who learned Haskell as their first language and they didn't really struggle more than the people I saw learning python/JS as a first language
2021-09-27 13:53:36 +0200 <arahael> Haskell is also a gateway drug to trying to apply new and crazy stuff.
2021-09-27 13:54:11 +0200 <merijn> asgas: Learning Haskell as someone who already knows one (or more) mainstream languages will feel much harder than learning any other mainstream language, though
2021-09-27 13:54:13 +0200kuribasis using idris for that now.
2021-09-27 13:55:07 +0200 <kuribas> maybe idris is a better learning language than haskell.
2021-09-27 13:55:22 +0200 <arahael> I think I made haskell harder for myself because when I was teaching myself haskell, I tried to learn how to do lens from scratch and all those excercises.
2021-09-27 13:55:25 +0200 <kuribas> type level programming is more elegant in idris.
2021-09-27 13:55:40 +0200 <kuribas> but haskell is more suitable for practical programs.
2021-09-27 13:55:56 +0200yauhsien(~yauhsien@118-167-48-21.dynamic-ip.hinet.net) (Ping timeout: 245 seconds)
2021-09-27 13:56:55 +0200 <dminuoso> Personally I believe that learning Haskell has a good chance at making you a better programmer even in your old imperative/mainstream language.
2021-09-27 13:57:22 +0200 <dminuoso> For me it changed how I thought about programming in a lot of ways, which itself is enough reason.
2021-09-27 13:57:50 +0200 <kuribas> dminuoso: and it will spoil that language, because you no longer can tolerate badly written programs.
2021-09-27 13:58:04 +0200 <asgas> You think I should install xmonad, the wm for X11, to learn haskell better?
2021-09-27 13:58:12 +0200 <arahael> asgas: No.
2021-09-27 13:58:15 +0200juhp(~juhp@118.200.109.69) (Quit: juhp)
2021-09-27 13:58:17 +0200 <kuribas> asgas: no
2021-09-27 13:58:30 +0200juhp(~juhp@118.200.109.69)
2021-09-27 13:58:36 +0200 <arahael> asgas: If xmonad is exposing haskell like that, then it's badly written. :)
2021-09-27 13:58:51 +0200 <asgas> xmonad is written in haskell and the config file is a haskell file.
2021-09-27 13:59:08 +0200 <dminuoso> Xmonad doesnt really teach haskell well enough
2021-09-27 13:59:21 +0200 <dminuoso> In part because large parts are just copy/paste, there's little actual programming/problem solving
2021-09-27 13:59:37 +0200 <dminuoso> And parts of it are not very idiomatic, due to the way xmonad is designed.
2021-09-27 13:59:42 +0200 <kuribas> asgas: I'd recommend "write yourself a scheme"
2021-09-27 14:00:26 +0200 <asgas> Would learning scheme/lisp make haskell easier to read?
2021-09-27 14:00:46 +0200 <dminuoso> Probably not.
2021-09-27 14:00:52 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:75e5:da2f:c054:6c5d)
2021-09-27 14:01:03 +0200 <arahael> scheme and lisp approach functional programming from very different directions, imho.
2021-09-27 14:01:07 +0200 <dminuoso> The closest thing that, I guess, could help is perhaps ML type of languages.
2021-09-27 14:01:10 +0200 <dminuoso> Say SML
2021-09-27 14:01:35 +0200 <kuribas> asgas: https://en.wikibooks.org/wiki/Write_Yourself_a_Scheme_in_48_Hours
2021-09-27 14:02:04 +0200 <kuribas> asgas: no, but IMO SICP is one of the best texts about computing.
2021-09-27 14:02:09 +0200 <kuribas> and it uses scheme.
2021-09-27 14:02:15 +0200alx741(~alx741@186.178.109.237)
2021-09-27 14:04:43 +0200 <asgas> So other than WIASI48, what other books do you recommend to learn haskell better?
2021-09-27 14:05:06 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:75e5:da2f:c054:6c5d) (Ping timeout: 245 seconds)
2021-09-27 14:06:46 +0200bitdex(~bitdex@gateway/tor-sasl/bitdex) (Quit: = "")
2021-09-27 14:07:06 +0200tromp(~textual@dhcp-077-249-230-040.chello.nl)
2021-09-27 14:07:09 +0200 <arahael> I liked "Real World Haskell", but that's a very dated book now. I could not learn from "Teach yourself a haskell" with their stupid deliberately broken english, though.
2021-09-27 14:07:29 +0200 <arahael> "Learn you a haskell for great good!", I mean. <-- Awful english.
2021-09-27 14:07:56 +0200 <merijn> arahael: That was on purpose
2021-09-27 14:08:16 +0200 <arahael> merijn: I know, and that makes it worse.
2021-09-27 14:08:18 +0200 <merijn> arahael: It was styled after "Why's poignant guide to ruby"
2021-09-27 14:08:29 +0200 <arahael> merijn: Except Why_ actually did it well.
2021-09-27 14:10:01 +0200 <arahael> merijn: And not once did LYAH refer to chunky bacon.
2021-09-27 14:10:15 +0200 <dminuoso> asgas: CIS194 is a great resource.
2021-09-27 14:10:32 +0200 <dminuoso> (Both versions, the one from Brent and the one from Breitner)
2021-09-27 14:10:48 +0200 <kuribas> CIS194 is great because it starts from the beginning, but doesn't feel like dumbing things down.
2021-09-27 14:10:49 +0200 <dminuoso> *Brent Yorgey and Joachim Breitner
2021-09-27 14:10:56 +0200 <kuribas> Or coming up with weird analogies.
2021-09-27 14:11:03 +0200 <arahael> merijn: Granted, I'm probably not a typical reader, since I didn't learn it from hearing it. :)
2021-09-27 14:11:21 +0200 <arahael> kuribas: Like Buritos? :)
2021-09-27 14:11:26 +0200 <opqdonut> asgas: not a book, but consider https://haskell.mooc.fi/, it has pretty good exercises (beating my own drum here :)
2021-09-27 14:11:29 +0200 <kuribas> arahael: yeah, or the box analogy.
2021-09-27 14:11:31 +0200asgas(~asgas@c-24-30-27-91.hsd1.ga.comcast.net) (Quit: Leaving)
2021-09-27 14:11:38 +0200 <kuribas> A functor is a box, a monad is a box, etc...
2021-09-27 14:11:46 +0200CiaoSen(~Jura@p2e5c6ba6.dip0.t-ipconnect.de) (Ping timeout: 245 seconds)
2021-09-27 14:11:50 +0200 <kuribas> That doesn't actually say anything.
2021-09-27 14:11:51 +0200 <arahael> kuribas: Luckily, we have unboxed types in haskell!
2021-09-27 14:12:07 +0200 <kuribas> yeah
2021-09-27 14:12:11 +0200 <dminuoso> opqdonut: Are you a professor in Helsinki?
2021-09-27 14:12:32 +0200 <dminuoso> Or where does this come from?
2021-09-27 14:12:37 +0200 <kuribas> "everything is a box" is only good if you're a cat.
2021-09-27 14:12:48 +0200 <opqdonut> dminuoso: yeah, helsinki. I'm not a professor but I'm affiliated with the university
2021-09-27 14:13:01 +0200 <dminuoso> I see. Guest lecturer?
2021-09-27 14:13:20 +0200 <dminuoso> Just trying to figure out how this excercise and you fit into all of this.
2021-09-27 14:13:43 +0200 <opqdonut> yeah, I've lectured on various FP things a bit, and I took some time recently to package things up into a nice self-study course
2021-09-27 14:13:58 +0200 <opqdonut> kind of a pro bono thing
2021-09-27 14:14:03 +0200 <opqdonut> I work as a consultant mostly
2021-09-27 14:14:24 +0200 <arahael> opqdonut: The english there is good and proper, I like it, and it's easy to read. :)
2021-09-27 14:14:38 +0200 <opqdonut> thanks, that's nice to hear
2021-09-27 14:15:49 +0200 <maerwald> is there a way with `cabal install` to ignore the cache for *local* packages?
2021-09-27 14:18:20 +0200kenran(~kenran@200116b82b02c800235a46755b6439a0.dip.versatel-1u1.de)
2021-09-27 14:18:46 +0200 <merijn> maerwald: To force a recompile even if no changes?
2021-09-27 14:19:01 +0200 <merijn> Or what?
2021-09-27 14:20:39 +0200 <maerwald> to force a recompile if there are changes
2021-09-27 14:20:51 +0200 <maerwald> install will not recompile if PVP version matches but there are changes
2021-09-27 14:20:58 +0200 <maerwald> which is the case for local packages
2021-09-27 14:22:02 +0200 <maerwald> and breaks the use case of cloning a repo and running `cabal install`
2021-09-27 14:22:13 +0200 <maerwald> unless they bump pvp for every commit
2021-09-27 14:23:15 +0200 <jneira[m]> there should be a cabal issue for this..
2021-09-27 14:23:54 +0200 <merijn> There is a generic "bikesheding "recompilation avoidance"-avoidance"
2021-09-27 14:24:51 +0200 <maerwald> wonder what --one-shot does
2021-09-27 14:25:06 +0200 <maerwald> probably legacy of v1
2021-09-27 14:25:08 +0200jespada(~jespada@2803:9800:9842:7a62:8558:368:788c:6dc6)
2021-09-27 14:25:15 +0200 <maerwald> --help in cabal is useless
2021-09-27 14:26:18 +0200unmanbearpig(~unmanbear@user/unmanbearpig)
2021-09-27 14:27:34 +0200kuribas(~user@ip-188-118-57-242.reverse.destiny.be) (Read error: No route to host)
2021-09-27 14:27:57 +0200lbseale(~lbseale@user/ep1ctetus)
2021-09-27 14:37:54 +0200enoq(~enoq@2a05:1141:1f5:5600:b9c9:721a:599:bfe7)
2021-09-27 14:38:19 +0200slowButPresent(~slowButPr@user/slowbutpresent)
2021-09-27 14:38:49 +0200 <maerwald> is there a way to find the locations of built libraries in a cabal project?
2021-09-27 14:39:34 +0200 <merijn> maerwald: cabal-plan?
2021-09-27 14:39:50 +0200 <maerwald> how
2021-09-27 14:40:44 +0200 <merijn> hmm, maybe that only does executables
2021-09-27 14:46:33 +0200xiongxin(~quassel@113.116.33.5)
2021-09-27 14:46:34 +0200max22-(~maxime@2a01cb0883359800e72b80574f347e03.ipv6.abo.wanadoo.fr) (Quit: Leaving)
2021-09-27 14:46:52 +0200 <Franciman> ok, I don't understand what is happening. I get an internal happy error
2021-09-27 14:46:58 +0200benin036932301(~benin@183.82.207.251) (Ping timeout: 252 seconds)
2021-09-27 14:47:01 +0200bontaq(~user@ool-45779fe5.dyn.optonline.net) (Ping timeout: 252 seconds)
2021-09-27 14:47:16 +0200 <Franciman> https://bpa.st/OHFQ this is the grammar
2021-09-27 14:47:58 +0200 <Franciman> basically, at startup, it calls the function notHappyAtAll
2021-09-27 14:48:01 +0200 <Franciman> but what the legit heck?^
2021-09-27 14:48:50 +0200 <Franciman> I can pass the generated parser any argument
2021-09-27 14:48:54 +0200 <Franciman> it always calls notHappyAtAll
2021-09-27 14:48:57 +0200 <Franciman> but what the heck?
2021-09-27 14:49:20 +0200 <Franciman> I suppose I did something wrong
2021-09-27 14:49:22 +0200 <Franciman> let's see
2021-09-27 14:50:06 +0200machinedgod(~machinedg@135-23-192-217.cpe.pppoe.ca)
2021-09-27 14:58:31 +0200azeem(~azeem@emp-180-222.eduroam.uu.se) (Read error: Connection reset by peer)
2021-09-27 14:59:33 +0200azeem(~azeem@emp-180-222.eduroam.uu.se)
2021-09-27 15:05:07 +0200tremon(~tremon@217-63-61-89.cable.dynamic.v4.ziggo.nl)
2021-09-27 15:05:27 +0200nschoe(~quassel@178.251.84.79)
2021-09-27 15:06:46 +0200max22-(~maxime@lfbn-ren-1-539-224.w81-53.abo.wanadoo.fr)
2021-09-27 15:09:10 +0200geekosaur(~geekosaur@xmonad/geekosaur)
2021-09-27 15:14:35 +0200nschoe(~quassel@178.251.84.79) (Ping timeout: 252 seconds)
2021-09-27 15:15:07 +0200nschoe(~quassel@178.251.84.79)
2021-09-27 15:16:42 +0200waleee(~waleee@2001:9b0:216:8200:d457:9189:7843:1dbd)
2021-09-27 15:18:20 +0200justsomeguy(~justsomeg@user/justsomeguy) (Quit: WeeChat 3.2)
2021-09-27 15:18:26 +0200TheCoffeMaker(~TheCoffeM@user/thecoffemaker) (Ping timeout: 252 seconds)
2021-09-27 15:19:09 +0200ulvarrefr(~user@185.24.53.152) (Ping timeout: 265 seconds)
2021-09-27 15:19:24 +0200ulvarrefr(~user@185.24.53.152)
2021-09-27 15:20:59 +0200TheCoffeMaker(~TheCoffeM@user/thecoffemaker)
2021-09-27 15:21:40 +0200max22-(~maxime@lfbn-ren-1-539-224.w81-53.abo.wanadoo.fr) (Remote host closed the connection)
2021-09-27 15:29:58 +0200TDANG(~TDANG@inet-177-7.ets.org)
2021-09-27 15:34:16 +0200[itchyjunk](~itchyjunk@user/itchyjunk/x-7353470)
2021-09-27 15:40:38 +0200shapr(~user@pool-100-36-247-68.washdc.fios.verizon.net)
2021-09-27 15:41:35 +0200nschoe(~quassel@178.251.84.79) (Remote host closed the connection)
2021-09-27 15:42:47 +0200nschoe(~quassel@178.251.84.79)
2021-09-27 15:50:48 +0200pbrisbin(~patrick@pool-173-49-147-250.phlapa.fios.verizon.net)
2021-09-27 15:51:20 +0200wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-09-27 15:51:20 +0200wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Changing host)
2021-09-27 15:51:20 +0200wroathe(~wroathe@user/wroathe)
2021-09-27 15:53:07 +0200yauhsien(~yauhsien@118-167-48-21.dynamic-ip.hinet.net)
2021-09-27 15:55:02 +0200nabaiste^(~nabaiste@68.101.50.106) (Remote host closed the connection)
2021-09-27 15:57:11 +0200nschoe(~quassel@178.251.84.79) (Ping timeout: 245 seconds)
2021-09-27 15:57:57 +0200nschoe(~quassel@178.251.84.79)
2021-09-27 15:57:58 +0200yauhsien(~yauhsien@118-167-48-21.dynamic-ip.hinet.net) (Ping timeout: 265 seconds)
2021-09-27 15:58:33 +0200shriekingnoise(~shrieking@186.137.144.80)
2021-09-27 16:00:08 +0200xsperry(~xs@user/xsperry) (Remote host closed the connection)
2021-09-27 16:00:30 +0200xsperry(~xs@cpe-188-129-101-182.dynamic.amis.hr)
2021-09-27 16:01:08 +0200rembo10(~rembo10@wally.codeshy.com) (Quit: ZNC 1.8.2 - https://znc.in)
2021-09-27 16:02:19 +0200xff0x(~xff0x@2001:1a81:5315:a700:680b:605d:85e2:404c) (Ping timeout: 265 seconds)
2021-09-27 16:02:33 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:75e5:da2f:c054:6c5d)
2021-09-27 16:03:07 +0200xff0x(~xff0x@2001:1a81:5315:a700:a625:8ed2:e82f:87f0)
2021-09-27 16:06:10 +0200rembo10(~rembo10@wally.codeshy.com)
2021-09-27 16:06:46 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:75e5:da2f:c054:6c5d) (Ping timeout: 245 seconds)
2021-09-27 16:07:35 +0200max22-(~maxime@lfbn-ren-1-762-224.w81-53.abo.wanadoo.fr)
2021-09-27 16:11:01 +0200acidjnk(~acidjnk@p200300d0c703cb839546693cf9acbce8.dip0.t-ipconnect.de) (Ping timeout: 265 seconds)
2021-09-27 16:13:26 +0200nschoe(~quassel@178.251.84.79) (Ping timeout: 265 seconds)
2021-09-27 16:15:24 +0200nschoe(~quassel@178.251.84.79)
2021-09-27 16:16:07 +0200blueonyx(~blueonyx@user/blueonyx)
2021-09-27 16:17:04 +0200Sgeo(~Sgeo@user/sgeo)
2021-09-27 16:18:23 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 252 seconds)
2021-09-27 16:20:11 +0200blueonyx(~blueonyx@user/blueonyx) (Client Quit)
2021-09-27 16:25:44 +0200justsomeguy(~justsomeg@user/justsomeguy)
2021-09-27 16:32:17 +0200justsomeguy(~justsomeg@user/justsomeguy) (Ping timeout: 265 seconds)
2021-09-27 16:32:41 +0200ec(~ec@gateway/tor-sasl/ec)
2021-09-27 16:34:11 +0200ectjl
2021-09-27 16:34:51 +0200tjltlj
2021-09-27 16:35:50 +0200Ariakenom(~patrik@h-81-170-208-30.A163.corp.bahnhof.se) (Quit: WeeChat 3.1)
2021-09-27 16:37:17 +0200Ariakenom(~Ariakenom@h-81-170-208-30.A163.corp.bahnhof.se)
2021-09-27 16:39:35 +0200hnOsmium0001(uid453710@id-453710.hampstead.irccloud.com)
2021-09-27 16:41:03 +0200justsomeguy(~justsomeg@user/justsomeguy)
2021-09-27 16:44:15 +0200tljtjl
2021-09-27 16:46:35 +0200jangid(~user@2405:201:5c06:70a7:16c8:89ac:79ce:93ab)
2021-09-27 16:48:14 +0200lbseale(~lbseale@user/ep1ctetus) (Ping timeout: 265 seconds)
2021-09-27 16:48:20 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-09-27 16:48:38 +0200td_(~td@muedsl-82-207-238-023.citykom.de) (Ping timeout: 252 seconds)
2021-09-27 16:50:17 +0200tjl(~ec@gateway/tor-sasl/ec) (Quit: tjl)
2021-09-27 16:50:35 +0200ec(~ec@gateway/tor-sasl/ec)
2021-09-27 16:52:36 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 245 seconds)
2021-09-27 16:52:52 +0200jangid(~user@2405:201:5c06:70a7:16c8:89ac:79ce:93ab) (ERC (IRC client for Emacs 28.0.50))
2021-09-27 16:56:40 +0200ec(~ec@gateway/tor-sasl/ec) (Quit: ec)
2021-09-27 16:57:15 +0200ec(~ec@gateway/tor-sasl/ec)
2021-09-27 16:57:23 +0200ec(~ec@gateway/tor-sasl/ec) (Client Quit)
2021-09-27 16:57:54 +0200raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 265 seconds)
2021-09-27 16:58:06 +0200ec(~ec@gateway/tor-sasl/ec)
2021-09-27 16:59:00 +0200lbseale(~lbseale@user/ep1ctetus)
2021-09-27 17:02:06 +0200NotIndonesian(znc@Indonesians.are.sick.bnc.HUNTERS.thats.bad.mn)
2021-09-27 17:03:42 +0200Ariakenom(~Ariakenom@h-81-170-208-30.A163.corp.bahnhof.se) (Ping timeout: 265 seconds)
2021-09-27 17:05:41 +0200wroathe(~wroathe@user/wroathe) (Ping timeout: 252 seconds)
2021-09-27 17:06:29 +0200timCF(~timCF@m91-129-108-244.cust.tele2.ee)
2021-09-27 17:09:51 +0200 <timCF> Hello! Is there any way do extract somehow phantom kind parameter as a Text in runtime to use it in Show instance? For example, let say `data Foo = Bar | Buz` and `data Hello (a :: Foo) = Hello` and then I want to implement `instance Show (Hello a)` such that result of `show` function would be "Bar" or "Buz".
2021-09-27 17:11:03 +0200 <byorgey> timCF: if it is truly a phantom type parameter, then there is no way to recover it at runtime. However you can do it if you add a Typeable constraint.
2021-09-27 17:11:21 +0200 <geekosaur> that sounds like abuse of Show instances. and if it's phantom then it doesn't exist at runtime
2021-09-27 17:11:29 +0200 <ldlework> byorgey: neat project, swarm
2021-09-27 17:11:30 +0200TDANG(~TDANG@inet-177-7.ets.org) (Quit: Konversation terminated!)
2021-09-27 17:11:41 +0200 <byorgey> ldlework: thanks!
2021-09-27 17:12:08 +0200 <timCF> geekosaur: Show it's just an example, I need pahntom parameer name in runtime for logging purposes
2021-09-27 17:12:41 +0200 <geekosaur> then you need something like Typeable as byorgey saidm so there's something that persists past the typechecker
2021-09-27 17:13:09 +0200 <timCF> byorgey: geekosaur: I'll take a look what Typeable class is doing) Thanks!
2021-09-27 17:13:16 +0200 <geekosaur> because phantoms vanis after the typechecker is done with them
2021-09-27 17:14:55 +0200 <Franciman> I thought haskell's ecosystem could not get worse than cabal
2021-09-27 17:14:57 +0200 <Franciman> it gets worse
2021-09-27 17:15:00 +0200 <Franciman> with happy
2021-09-27 17:15:02 +0200 <Franciman> :D
2021-09-27 17:15:16 +0200 <geekosaur> all it's doing is attaching a typeclass dictionary that persists to runtime
2021-09-27 17:15:40 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:75e5:da2f:c054:6c5d)
2021-09-27 17:15:51 +0200 <geekosaur> which contains enough information to reconstruct the type, including the phantoms that would otherwise go away
2021-09-27 17:16:30 +0200 <timCF> geekosaur: probably I do need to add some kind of `forall` equivalent for `instance Show (forall a. (Hello a)) where` to refer into phantom parameter inside of the function instance? Not sure about correct syntax
2021-09-27 17:16:34 +0200 <geekosaur> of course that means you have to carry that dictionary around everywhere or you'll lose the information you want
2021-09-27 17:18:00 +0200 <geekosaur> instance (Typeable a, Show a) => Hello a where ... {- you can use both Show and Typeable methods here -}
2021-09-27 17:18:28 +0200MQ-17J(~MQ-17J@d192-24-122-179.try.wideopenwest.com) (Read error: Connection reset by peer)
2021-09-27 17:18:31 +0200 <timCF> geekosaur: cool, thanks!
2021-09-27 17:18:52 +0200 <geekosaur> you can't declare a Typeable instance, the compiler makes that automatically, but you still have to cite it wherever it's needed
2021-09-27 17:18:53 +0200 <ldlework> byorgey: I hope to play it some day once I better figure out how to use haskell stuff on Nix :P
2021-09-27 17:19:09 +0200MQ-17J(~MQ-17J@8.6.144.233)
2021-09-27 17:20:13 +0200 <timCF> geekosaur: never used Typeable before, but from what you are saying it feels like it's handled similar to Coerciable - you don't derive it, but it's just there
2021-09-27 17:20:19 +0200 <geekosaur> right
2021-09-27 17:20:41 +0200 <geekosaur> it's both generated and used by the typechecker, but is also available at runtime
2021-09-27 17:21:39 +0200lavaman(~lavaman@98.38.249.169)
2021-09-27 17:21:49 +0200justsomeguy(~justsomeg@user/justsomeguy) (Quit: WeeChat 3.2)
2021-09-27 17:22:33 +0200lortabac(~lortabac@2a01:e0a:541:b8f0:64e7:f1a7:9c7e:5b3b) (Quit: WeeChat 2.8)
2021-09-27 17:22:43 +0200wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-09-27 17:22:43 +0200wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Changing host)
2021-09-27 17:22:43 +0200wroathe(~wroathe@user/wroathe)
2021-09-27 17:24:18 +0200emf(~emf@2620:10d:c090:400::5:a68f)
2021-09-27 17:25:50 +0200bontaq`(~user@ool-45779fe5.dyn.optonline.net)
2021-09-27 17:25:56 +0200lavaman(~lavaman@98.38.249.169) (Ping timeout: 245 seconds)
2021-09-27 17:26:25 +0200timCF(~timCF@m91-129-108-244.cust.tele2.ee) (Ping timeout: 265 seconds)
2021-09-27 17:26:40 +0200bontaq`bontaq
2021-09-27 17:27:08 +0200wroathe(~wroathe@user/wroathe) (Ping timeout: 252 seconds)
2021-09-27 17:30:46 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:75e5:da2f:c054:6c5d) (Remote host closed the connection)
2021-09-27 17:34:50 +0200emf(~emf@2620:10d:c090:400::5:a68f) (Ping timeout: 260 seconds)
2021-09-27 17:38:02 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-09-27 17:39:57 +0200wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-09-27 17:39:58 +0200wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Changing host)
2021-09-27 17:39:58 +0200wroathe(~wroathe@user/wroathe)
2021-09-27 17:40:02 +0200cfricke(~cfricke@user/cfricke) (Quit: WeeChat 3.2.1)
2021-09-27 17:40:57 +0200Ariakenom(~Ariakenom@h-81-170-208-30.A163.corp.bahnhof.se)
2021-09-27 17:42:41 +0200abhixec(~abhixec@c-67-169-139-16.hsd1.ca.comcast.net) (Quit: leaving)
2021-09-27 17:44:15 +0200tzh(~tzh@c-24-21-73-154.hsd1.or.comcast.net)
2021-09-27 17:47:02 +0200chris(~chris@81.96.113.213)
2021-09-27 17:47:06 +0200chrisGuest4705
2021-09-27 17:49:19 +0200kenran(~kenran@200116b82b02c800235a46755b6439a0.dip.versatel-1u1.de) (Quit: WeeChat info:version)
2021-09-27 17:49:42 +0200xiongxin(~quassel@113.116.33.5) (Quit: https://quassel-irc.org - Chat comfortably. Anywhere.)
2021-09-27 17:50:13 +0200Null_A(~null_a@2601:645:8700:2290:91f2:4a69:be9c:a77e)
2021-09-27 17:54:06 +0200ec(~ec@gateway/tor-sasl/ec) (Remote host closed the connection)
2021-09-27 17:54:31 +0200yauhsien(~yauhsien@118-167-48-21.dynamic-ip.hinet.net)
2021-09-27 17:54:48 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:75e5:da2f:c054:6c5d)
2021-09-27 17:55:27 +0200[_](~itchyjunk@user/itchyjunk/x-7353470)
2021-09-27 17:57:52 +0200[itchyjunk](~itchyjunk@user/itchyjunk/x-7353470) (Ping timeout: 252 seconds)
2021-09-27 17:58:30 +0200[_](~itchyjunk@user/itchyjunk/x-7353470) (Client Quit)
2021-09-27 17:58:51 +0200yauhsien(~yauhsien@118-167-48-21.dynamic-ip.hinet.net) (Ping timeout: 245 seconds)
2021-09-27 18:01:33 +0200Ariakenom(~Ariakenom@h-81-170-208-30.A163.corp.bahnhof.se) (Remote host closed the connection)
2021-09-27 18:01:47 +0200Ariakenom(~Ariakenom@h-81-170-208-30.a163.corp.bahnhof.se)
2021-09-27 18:04:21 +0200fef(~thedawn@user/thedawn)
2021-09-27 18:06:55 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:75e5:da2f:c054:6c5d) (Remote host closed the connection)
2021-09-27 18:07:48 +0200bitdex(~bitdex@gateway/tor-sasl/bitdex)
2021-09-27 18:09:26 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 265 seconds)
2021-09-27 18:10:03 +0200ec(~ec@gateway/tor-sasl/ec)
2021-09-27 18:14:38 +0200Ariakenom(~Ariakenom@h-81-170-208-30.a163.corp.bahnhof.se) (Read error: Connection reset by peer)
2021-09-27 18:15:07 +0200qbt(~edun@user/edun)
2021-09-27 18:15:29 +0200enoq(~enoq@2a05:1141:1f5:5600:b9c9:721a:599:bfe7) (Quit: enoq)
2021-09-27 18:16:11 +0200sneedsfeed(~sneedsfee@rrcs-173-95-122-169.midsouth.biz.rr.com)
2021-09-27 18:16:39 +0200ec(~ec@gateway/tor-sasl/ec) (Remote host closed the connection)
2021-09-27 18:16:50 +0200tromp(~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2021-09-27 18:17:01 +0200nschoe(~quassel@178.251.84.79) (Ping timeout: 265 seconds)
2021-09-27 18:18:59 +0200lavaman(~lavaman@98.38.249.169)
2021-09-27 18:20:42 +0200emf(~emf@2620:10d:c090:400::5:4ff3)
2021-09-27 18:23:16 +0200 <sneedsfeed> how does the community feel about leaving unmatched patterns? I have code here that I'm really happy with. Its only 28 lines long and it should solve any maze you throw at it very efficiently. But it has a LOT of unmatched patterns that in theory should never matter and I'm stuck wondering if I should fill all these in, just leave them unmatched,
2021-09-27 18:23:17 +0200 <sneedsfeed> or take this as a sign that my code isnt as good as I thought it was and to start thinking about different approaches
2021-09-27 18:24:11 +0200nschoe(~quassel@178.251.84.79)
2021-09-27 18:24:25 +0200emf(~emf@2620:10d:c090:400::5:4ff3) (Client Quit)
2021-09-27 18:24:26 +0200 <hpc> like non-exhaustive patterns, or unreachable code?
2021-09-27 18:24:28 +0200 <hpc> > head []
2021-09-27 18:24:30 +0200 <lambdabot> *Exception: Prelude.head: empty list
2021-09-27 18:24:36 +0200 <sneedsfeed> here it is by the way https://paste.tomsmeding.com/ywqQSxfk
2021-09-27 18:24:44 +0200emf(~emf@2620:10d:c090:400::5:4ff3)
2021-09-27 18:25:14 +0200 <sneedsfeed> non exhaustive
2021-09-27 18:25:27 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:75e5:da2f:c054:6c5d)
2021-09-27 18:25:59 +0200 <hpc> ah, addUnsearched is non-exhaustive here
2021-09-27 18:26:18 +0200 <sneedsfeed> yea
2021-09-27 18:27:07 +0200geekosaur(~geekosaur@xmonad/geekosaur) (Remote host closed the connection)
2021-09-27 18:27:46 +0200 <hpc> you might try renaming it to addUnsearched'
2021-09-27 18:27:54 +0200 <hpc> and then defining a new addUnsearched which doesn't take that parameter
2021-09-27 18:28:17 +0200 <hpc> except then hmm, you do call it in two different ways
2021-09-27 18:28:57 +0200geekosaur(~geekosaur@xmonad/geekosaur)
2021-09-27 18:29:41 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:75e5:da2f:c054:6c5d) (Ping timeout: 245 seconds)
2021-09-27 18:29:42 +0200 <hpc> another idea some modules use is your non-exhaustive function would be something internal
2021-09-27 18:29:52 +0200 <hpc> and then if your code was a module, maybe it would only expose isSolvable
2021-09-27 18:30:06 +0200ec(~ec@gateway/tor-sasl/ec)
2021-09-27 18:30:08 +0200 <hpc> that way users of the code can't shoot themselves in the foot
2021-09-27 18:30:42 +0200azeem(~azeem@emp-180-222.eduroam.uu.se) (Ping timeout: 265 seconds)
2021-09-27 18:30:55 +0200 <sneedsfeed> ah yea that makes sense, If I was going to package this up for others to use I dont think I would expose addUnsearched
2021-09-27 18:30:56 +0200nschoe(~quassel@178.251.84.79) (Ping timeout: 245 seconds)
2021-09-27 18:30:58 +0200 <hpc> or just leave it there and document the flaw, if all of those end up being impossible in some way
2021-09-27 18:31:24 +0200 <sneedsfeed> or yea if I have to expose it to the outside I could fill in all the cases
2021-09-27 18:31:46 +0200 <hpc> the containers package has some functions that only work if you give them a sorted list as input, but it's too useful to not have those available
2021-09-27 18:31:55 +0200raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
2021-09-27 18:32:25 +0200segfaultfizzbuzz(~segfaultf@135-180-0-138.static.sonic.net)
2021-09-27 18:32:29 +0200wroathe(~wroathe@user/wroathe) (Ping timeout: 265 seconds)
2021-09-27 18:33:08 +0200 <sneedsfeed> filling in all the cases wouldnt really help because its not clear how this function would apply to all of them...
2021-09-27 18:33:15 +0200 <sneedsfeed> an error would just be better
2021-09-27 18:33:54 +0200 <sneedsfeed> okay thanks for all that info. i feel better just leaving it this way now.
2021-09-27 18:34:44 +0200alzgh(~alzgh@user/alzgh) (Remote host closed the connection)
2021-09-27 18:35:04 +0200alzgh(~alzgh@user/alzgh)
2021-09-27 18:37:57 +0200Guest4705(~chris@81.96.113.213) (Remote host closed the connection)
2021-09-27 18:42:09 +0200azeem(~azeem@2a00:801:2d0:9de5:7998:f5fe:f405:f6a8)
2021-09-27 18:45:45 +0200tromp(~textual@dhcp-077-249-230-040.chello.nl)
2021-09-27 18:48:48 +0200wroathe(~wroathe@user/wroathe)
2021-09-27 18:49:37 +0200 <dminuoso> sneedsfeed: By the way, your usage of list with random access is very unidiomatic.
2021-09-27 18:50:12 +0200werneta(~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net)
2021-09-27 18:53:26 +0200wroathe(~wroathe@user/wroathe) (Ping timeout: 245 seconds)
2021-09-27 18:56:29 +0200 <sneedsfeed> dminuoso sorry I don't know what you mean.
2021-09-27 18:57:02 +0200 <sneedsfeed> i used list like a stack here
2021-09-27 18:57:15 +0200 <sneedsfeed> dont think I ever randomly accessed part of it
2021-09-27 18:57:26 +0200 <dminuoso> sneedsfeed: You're doing random access on your [String]
2021-09-27 18:57:27 +0200 <Franciman> does haskell have a guide for idiomatic writing?
2021-09-27 18:57:33 +0200 <Franciman> that's new
2021-09-27 18:58:01 +0200 <sneedsfeed> line 14?
2021-09-27 18:58:21 +0200 <dminuoso> sneedsfeed: and on line 21.
2021-09-27 18:58:38 +0200 <dminuoso> Also `length m` is an O(n) operation.
2021-09-27 18:58:49 +0200 <dminuoso> Haskell lists are singly linked lists without any meta data.
2021-09-27 18:58:55 +0200 <sneedsfeed> its a challenge problem for codewars, they give me the maze as a string
2021-09-27 18:59:05 +0200 <dminuoso> Ah I see.
2021-09-27 18:59:17 +0200 <dminuoso> Does codewars let you use `vector`?
2021-09-27 18:59:24 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:75e5:da2f:c054:6c5d)
2021-09-27 18:59:44 +0200 <sneedsfeed> I could probably convert the string maze into a vector then work on that
2021-09-27 18:59:48 +0200 <monochrom> I disagree with unconditionally picking on "xs !! i" without first asking "how big is i?"
2021-09-27 19:00:21 +0200ubert(~Thunderbi@91.141.58.84.wireless.dyn.drei.com)
2021-09-27 19:00:27 +0200 <monochrom> But I also disagree with "the problem spec gives me a sequence so I will only use sequence structures ever"
2021-09-27 19:01:20 +0200 <monochrom> I once gave a data structure assignment in which the input is a Java list of edges for a graph.
2021-09-27 19:01:48 +0200FinnElija(~finn_elij@user/finn-elija/x-0085643) (Quit: FinnElija)
2021-09-27 19:02:07 +0200 <monochrom> Part of the student's job was to recognize "OK first thing I do should be converting that to adjacency lists format because the rest is BFS"
2021-09-27 19:02:18 +0200 <Franciman> lol
2021-09-27 19:02:21 +0200 <Franciman> java assignments
2021-09-27 19:02:23 +0200 <Franciman> be like
2021-09-27 19:02:26 +0200 <Franciman> I need to learn OOP first
2021-09-27 19:02:56 +0200 <monochrom> Clearly some students reasoned "the prof gave me a list of edges so I'll stick to a list of edges" and caused BFS to take quadratic time.
2021-09-27 19:03:07 +0200 <dminuoso> monochrom: You require your students to think for themselves?
2021-09-27 19:03:34 +0200 <dminuoso> Or let me rephrase. Do other professors actually not demand this?
2021-09-27 19:03:51 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:75e5:da2f:c054:6c5d) (Ping timeout: 245 seconds)
2021-09-27 19:03:58 +0200 <monochrom> No. In lecture, I already said that BFS runs fastest when the graph is in adjacency list format. (So, not even matrix format.)
2021-09-27 19:04:09 +0200 <monochrom> I require my students to listen.
2021-09-27 19:04:35 +0200 <Franciman> lol
2021-09-27 19:04:39 +0200 <Franciman> honestly
2021-09-27 19:04:45 +0200 <Franciman> that's not an easy thing
2021-09-27 19:04:53 +0200 <Franciman> I mean teching requires more than requiring listening
2021-09-27 19:05:09 +0200 <Franciman> I struggle a lot with this concept
2021-09-27 19:05:14 +0200 <Franciman> because you must also be listened to
2021-09-27 19:05:29 +0200FinnElija(~finn_elij@user/finn-elija/x-0085643)
2021-09-27 19:05:34 +0200econo(uid147250@user/econo)
2021-09-27 19:05:36 +0200 <Franciman> attention request is something that has become the dictator of our day
2021-09-27 19:05:46 +0200 <Franciman> who are you to be one of the attention seekers of XXI century?
2021-09-27 19:05:53 +0200 <Franciman> are you instagram?
2021-09-27 19:05:56 +0200 <Franciman> are you Lil Nas X ?
2021-09-27 19:05:58 +0200 <monochrom> Let me turn that around.
2021-09-27 19:06:23 +0200 <monochrom> Learning requires more than listening too.
2021-09-27 19:06:33 +0200 <monochrom> But if one fails at even listening, nevermind learning.
2021-09-27 19:07:03 +0200 <monochrom> Teaching does not require listening.
2021-09-27 19:07:25 +0200 <monochrom> Not my job to decide whether my students want to listen.
2021-09-27 19:07:31 +0200 <Franciman> I think this is not hitting the point completely, I don't know at what level you are teaching
2021-09-27 19:07:33 +0200 <nshepperd> i predict that some teachers dock points for converting the input to a different datastructure and writing the algorithm on that
2021-09-27 19:07:48 +0200 <Franciman> but we must also get a way to talk to students
2021-09-27 19:07:56 +0200 <monochrom> My job is to provide the best things to listen to, the best things to do exercises on, etc.
2021-09-27 19:07:58 +0200 <Franciman> you can't dispotically require listening from people
2021-09-27 19:08:01 +0200timCF(~timCF@m91-129-108-244.cust.tele2.ee)
2021-09-27 19:08:11 +0200 <Franciman> probably for university this is different
2021-09-27 19:08:12 +0200 <monochrom> My job is not to control students.
2021-09-27 19:08:22 +0200 <Franciman> most probably
2021-09-27 19:08:31 +0200 <Franciman> but for school it is totaly a different subject
2021-09-27 19:08:34 +0200 <monochrom> But my job can be, if you don't listen, you're going to get 0 marks.
2021-09-27 19:08:34 +0200 <Franciman> and if they don't listen to you
2021-09-27 19:08:50 +0200 <Franciman> it's because lower grades of school didn't allow them to understand
2021-09-27 19:08:58 +0200 <Franciman> requiring them dispotically to listen to their teacher
2021-09-27 19:09:27 +0200 <Franciman> there are many ways of teaching, really
2021-09-27 19:09:34 +0200 <Franciman> lectures are probably the most boring
2021-09-27 19:09:48 +0200 <monochrom> nshepperd: In my case, the students already know my marking scheme: I will run test cases, I will also time them.
2021-09-27 19:09:51 +0200 <Franciman> but esier for the lecturer
2021-09-27 19:10:04 +0200segfaultfizzbuzz(~segfaultf@135-180-0-138.static.sonic.net) (Quit: Leaving)
2021-09-27 19:10:44 +0200 <Franciman> In my experience I've had many teachers who looked like Babbage's famous: I don't care if you listen to my music
2021-09-27 19:10:59 +0200 <Franciman> well I don't care about you either!
2021-09-27 19:11:09 +0200 <awpr> then don't enroll in the course
2021-09-27 19:12:08 +0200 <monochrom> I care to the extent of "if you take the time to listen to me, I tell you useful information, I try not to waste your time".
2021-09-27 19:12:28 +0200 <monochrom> But that's it. If you don't want to listen, I'm not going to care.
2021-09-27 19:12:29 +0200 <Franciman> monochrom: please note that I wasn't saying you are a bad teacher!
2021-09-27 19:12:49 +0200 <monochrom> The same way I view promoting Haskell.
2021-09-27 19:12:53 +0200 <Franciman> so it was not a personal attack
2021-09-27 19:13:06 +0200 <monochrom> Not going to preach Haskell if you aren't interested.
2021-09-27 19:13:39 +0200 <monochrom> "How do I explain Haskell to my coworkers who aren't interested in Haskell?" My answer: Don't.
2021-09-27 19:13:44 +0200 <Franciman> I was just saying that requiring listening because otherwise you don't pass the exam, is not a good way to teach people
2021-09-27 19:13:48 +0200 <awpr> I sense a bit of irony in that we're talking about "despotically" forcing people to listen, but the despotism is really in forcing people to learn regardless of whether they want to participate in learning. "don't listen -> you won't learn" is the opposite of despotic
2021-09-27 19:14:13 +0200 <Franciman> awpr: actually in western culture we despotically put people in schools
2021-09-27 19:14:18 +0200 <Franciman> at least to make them learn to read
2021-09-27 19:14:21 +0200 <Franciman> but that's "for good reason"
2021-09-27 19:14:24 +0200 <awpr> sure, that's exactly what I'm referring to
2021-09-27 19:14:26 +0200 <Franciman> but if you do it too dispotically
2021-09-27 19:14:31 +0200 <Franciman> they won't learn
2021-09-27 19:14:45 +0200 <Franciman> also as I said I wasn't saying monochrom is not a good teacher lol
2021-09-27 19:14:47 +0200 <awpr> at university level, that's no longer the case; students are there because they ostensibly want to be
2021-09-27 19:14:58 +0200 <Franciman> I think that's no longer the case, tbh
2021-09-27 19:15:10 +0200 <Franciman> university is becoming more for the mass
2021-09-27 19:15:33 +0200 <monochrom> In my case, if you don't listen to me, but you think for yourself or listen to some other good sources, you can also come to the same conclusion: convert to adjacency list format first before doing BFS.
2021-09-27 19:16:07 +0200 <awpr> was it this channel that recently visited the concept that "teaching" is putting the action backwards, and "learning" should be the central thing, with professors being there to aid the process?
2021-09-27 19:16:13 +0200 <Franciman> my geometry professor's case: if you don't listen to me, it's because you are stupid
2021-09-27 19:16:19 +0200 <Franciman> -> I can't even understand what he is saying
2021-09-27 19:16:32 +0200 <Franciman> then you go to exam
2021-09-27 19:16:35 +0200 <Franciman> give a different proof
2021-09-27 19:16:38 +0200 <Franciman> and they say: it's wrong
2021-09-27 19:16:42 +0200 <Franciman> because it's not their proof
2021-09-27 19:16:50 +0200 <Franciman> but it is not wrong, emmy noether wrote it
2021-09-27 19:16:54 +0200 <Franciman> and it was accepted 100 years ago
2021-09-27 19:17:15 +0200 <Franciman> so if you don't listen to me, maybe there is something going on
2021-09-27 19:17:27 +0200 <Franciman> and teaching requires engaging with the student
2021-09-27 19:17:29 +0200 <Franciman> not just lecturing
2021-09-27 19:18:03 +0200 <Franciman> frontal lectures are more like dorsal lectures
2021-09-27 19:18:12 +0200 <Franciman> wit hthe teacher spending 99% of their time writing on the blackboard
2021-09-27 19:18:15 +0200chris(~chris@81.96.113.213)
2021-09-27 19:18:17 +0200chele(~chele@user/chele) (Remote host closed the connection)
2021-09-27 19:18:19 +0200chrisGuest7900
2021-09-27 19:18:25 +0200 <Franciman> is a possible model that is more effective possible?
2021-09-27 19:18:31 +0200 <Franciman> many teacher don't care at all
2021-09-27 19:18:40 +0200 <Franciman> they just want to go their 2 hours trhough, with no trouble
2021-09-27 19:18:45 +0200 <Franciman> that makes me extremely nervous
2021-09-27 19:18:54 +0200 <Franciman> because I pay them
2021-09-27 19:19:10 +0200 <awpr> are you presupposing that everyone involved in education must have the job description "teacher"?
2021-09-27 19:19:12 +0200 <Franciman> and they say: if you don't pay attention, it's not my fault
2021-09-27 19:19:33 +0200 <Franciman> awpr: i think that's the issue
2021-09-27 19:19:41 +0200 <awpr> why shouldn't "lecturer" be a valid role? it's different from a teacher, sure. but should it be banned?
2021-09-27 19:19:47 +0200 <Franciman> especially at university, there are people who are great at their research
2021-09-27 19:19:50 +0200 <Franciman> and terrible at teaching
2021-09-27 19:20:06 +0200 <awpr> should all professors be required to be individual tutors for every student of all their courses?
2021-09-27 19:20:09 +0200 <Franciman> for teaching you must be teaching
2021-09-27 19:20:19 +0200 <Franciman> not reading the damn book
2021-09-27 19:20:31 +0200 <Franciman> and if I don't listen it's my fault
2021-09-27 19:21:03 +0200 <Franciman> I reckon that lecturing means literally, reading the book out loud to the class
2021-09-27 19:21:08 +0200 <int-e> Well, it is your fault. Lectures, by design, do not accomodate individual engagements.
2021-09-27 19:21:08 +0200 <Franciman> but I mean
2021-09-27 19:21:17 +0200 <Franciman> eheh int-e indeed
2021-09-27 19:21:19 +0200 <Franciman> it's my fault
2021-09-27 19:21:34 +0200 <Franciman> it's my fault indeed
2021-09-27 19:21:48 +0200Robin_Jadoul(~Robin_Jad@152.67.64.160)
2021-09-27 19:22:03 +0200 <Franciman> If I ever become a teacher, I will be a people teacher, not a servant of the ivory tower
2021-09-27 19:22:11 +0200doyougnu(~user@c-73-25-202-122.hsd1.or.comcast.net)
2021-09-27 19:22:13 +0200 <geekosaur> keep in mind that a good lecturer does what has been discussed recently on one of the mailing lists: presenting things in different ways to help people understand them. not just reading from the book
2021-09-27 19:22:14 +0200 <Franciman> who gets pride in getting as many students away
2021-09-27 19:22:25 +0200 <Franciman> as they can
2021-09-27 19:22:38 +0200Guest7900(~chris@81.96.113.213) (Ping timeout: 252 seconds)
2021-09-27 19:24:17 +0200 <Franciman> you think that it is a single person's issue
2021-09-27 19:24:22 +0200 <Franciman> enjoy your view
2021-09-27 19:24:30 +0200 <Franciman> enjoy not wanting to also put yourself in the students shoes
2021-09-27 19:24:36 +0200 <Franciman> enjoy it, because the system is on your side
2021-09-27 19:24:55 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:75e5:da2f:c054:6c5d)
2021-09-27 19:24:56 +0200 <Franciman> enjoy taking nearly 0 effort in preparing your lectures, by just reading what's written in the book
2021-09-27 19:25:09 +0200 <Franciman> the system is with you
2021-09-27 19:25:13 +0200 <Franciman> the ivory tower is safe
2021-09-27 19:25:14 +0200 <monochrom> Ugh did any one of us do that?
2021-09-27 19:25:32 +0200 <geekosaur> there's some lazy TAs who may do that
2021-09-27 19:25:50 +0200 <Franciman> I am full of professors that do like that
2021-09-27 19:25:58 +0200 <Franciman> At least 4 that I've disgracefully met
2021-09-27 19:26:06 +0200 <geekosaur> the fix is to replace the TA, and there are generally course assessments that let you do that
2021-09-27 19:26:27 +0200 <Franciman> so just saying: lecturing do not accomodate individual engagements is cringe
2021-09-27 19:26:39 +0200 <Franciman> that's now what we are talking about
2021-09-27 19:27:19 +0200 <awpr> where is this tirade against universities coming from, as if you're forced to be involved with it and it's some evil concept of despotic learning? if you want to learn, put in the effort. if your university is doing a poor job of helping you, fire it and find a different one or be self-guided
2021-09-27 19:27:41 +0200 <geekosaur> ^
2021-09-27 19:27:54 +0200 <juri_> universities are good for getting access to professors. classes? feh.
2021-09-27 19:28:14 +0200 <Franciman> awpr: that's not against universities
2021-09-27 19:28:19 +0200 <Franciman> but against a common conception of teaching
2021-09-27 19:28:25 +0200 <sneedsfeed> awpr If only it could be only about the skills and not about the pieces of paper
2021-09-27 19:28:27 +0200 <juri_> if you expect the universe to train you for you, you'll be waiting a while.
2021-09-27 19:28:33 +0200 <monochrom> I respect that switching universities is easier said than done.
2021-09-27 19:29:00 +0200 <Franciman> also that
2021-09-27 19:29:14 +0200 <hpc> juri_: it will, the problem is it's a genetic algorithm :D
2021-09-27 19:29:45 +0200__monty__(~toonn@user/toonn)
2021-09-27 19:29:46 +0200 <Franciman> Hegel is famous for writing with the aim of not being understood
2021-09-27 19:29:53 +0200 <int-e> Franciman: There are good lecturers and bad lecturers. but if your expectation of a lecture is individual stimulation you're thoroughly misguided. You may need an individual tutor for that.
2021-09-27 19:30:01 +0200 <Franciman> because he had to be accessible to just fews
2021-09-27 19:30:19 +0200 <Franciman> there is also a french tradition of involuted writings dating back to ... at least derrida
2021-09-27 19:30:25 +0200 <Franciman> that makes their writing HIGHLY inaccessible
2021-09-27 19:31:12 +0200 <Franciman> int-e: I totally understand that, I just say that I've met many teacher who I was not _THE ONLY ONE_ to have problems with
2021-09-27 19:31:13 +0200 <monochrom> Are you describing med school?
2021-09-27 19:31:17 +0200 <Franciman> and they were well respected
2021-09-27 19:31:40 +0200 <monochrom> I understand that prescriptions are supposed to be unreadable. >:)
2021-09-27 19:31:41 +0200 <Franciman> and even in charge of things, so assessments didn't change anything
2021-09-27 19:32:01 +0200__monty__(~toonn@user/toonn) (Client Quit)
2021-09-27 19:35:03 +0200 <sclv> offtopic, but hegel absolutely wanted to be understood
2021-09-27 19:36:03 +0200 <sclv> and for a span of time, lots of people did understand him! its distance from certain traditions of argument and the particulars of debates in that time that now makes it seem so inpenetrable
2021-09-27 19:37:53 +0200 <Franciman> sclv: he wanted to be understood by people nearby him
2021-09-27 19:37:59 +0200 <Franciman> his writing is highly convoluted
2021-09-27 19:38:22 +0200 <Franciman> and on purpose, because it was a common conception that only the skilled ones had to access the writings
2021-09-27 19:38:29 +0200 <Franciman> otherwise they had little importance
2021-09-27 19:38:58 +0200 <sclv> i think its pretty straightforward, if you take your time with it
2021-09-27 19:39:09 +0200 <sclv> and to the extent it isn't, it was absolutely _not_ because he desired to be esoteric
2021-09-27 19:39:15 +0200 <Franciman> proof?
2021-09-27 19:39:18 +0200 <sclv> there are scholars who you could say sought to be abtruce
2021-09-27 19:39:19 +0200 <sclv> abtruse
2021-09-27 19:39:20 +0200 <Franciman> I had read it in a book
2021-09-27 19:39:26 +0200 <shiraeeshi[m]> imagine if people decided to just have fun while learning something, no need for marks, grades, etc. Who needs grades anyway?
2021-09-27 19:39:34 +0200 <sclv> i read the opposite in two books.
2021-09-27 19:39:37 +0200 <monochrom> Like this? https://www.smbc-comics.com/comic/language >:)
2021-09-27 19:39:39 +0200emf(~emf@2620:10d:c090:400::5:4ff3) (Quit: emf)
2021-09-27 19:39:45 +0200 <Franciman> sclv: name of the books?
2021-09-27 19:39:51 +0200 <shiraeeshi[m]> grades are what makes the process too beurocratized, mechanical
2021-09-27 19:39:53 +0200tromp(~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2021-09-27 19:39:56 +0200emf(~emf@2620:10d:c090:400::5:4ff3)
2021-09-27 19:39:58 +0200 <Franciman> ah you are making fun of me
2021-09-27 19:39:59 +0200 <Franciman> I see :<
2021-09-27 19:40:02 +0200ec(~ec@gateway/tor-sasl/ec) (Remote host closed the connection)
2021-09-27 19:40:17 +0200 <Franciman> that's a bit unfair but I understand
2021-09-27 19:40:32 +0200 <Franciman> my book is my high school philosophy book
2021-09-27 19:40:57 +0200 <Franciman> it's called `Ricerca del pensiero` by Abbagnano and Fornero
2021-09-27 19:40:59 +0200 <sclv> i mean i've read a number of books about philosophy of the period, as well as a number of philosophers of the period directly, and i've never seen this claim made by anyone familiar with that body of work
2021-09-27 19:41:41 +0200 <sclv> i've only seen it by people relatively unfamiliar with it and seeking to dismiss it, and i've seen it made about _almost every single writer_ that anyone has ever disliked
2021-09-27 19:41:48 +0200 <monochrom> shiraeeshi[m]: When I was a student, I decided to just have fun and ignore marks.
2021-09-27 19:41:59 +0200 <Franciman> sclv: have you ever read Derrida?
2021-09-27 19:42:03 +0200 <sclv> i've also seen it made about programming languages, about plt, about physics, about everything
2021-09-27 19:42:08 +0200 <sclv> yes, i've read derrida
2021-09-27 19:42:14 +0200 <Franciman> do you find it easy prose?
2021-09-27 19:42:24 +0200 <Franciman> I read derrida first hand
2021-09-27 19:42:24 +0200 <sclv> not always, no. hegel is much easier.
2021-09-27 19:42:29 +0200 <monochrom> During exam study periods, I studied everything outside the scope of the exam, or played games.
2021-09-27 19:42:32 +0200 <Franciman> I understood 0 words
2021-09-27 19:42:35 +0200 <Franciman> I am not saying it does not make sense
2021-09-27 19:42:39 +0200 <Franciman> but it is very convoluted
2021-09-27 19:42:53 +0200ec(~ec@gateway/tor-sasl/ec)
2021-09-27 19:43:03 +0200 <monochrom> or rather, I got it backwards. Everything I studed was outside the scope of the exam.
2021-09-27 19:43:04 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:75e5:da2f:c054:6c5d) (Remote host closed the connection)
2021-09-27 19:43:13 +0200 <Franciman> now why did he write like that?
2021-09-27 19:43:22 +0200 <sclv> certain people like lacan, adorno, iirc you can actually find in print or interviews saying "yes i'm trying to not say things directly, because i'm prompting the reader to engage sidewise with things that i can't articulate directly"
2021-09-27 19:43:26 +0200 <sclv> also, joyce
2021-09-27 19:43:34 +0200 <sclv> you will _not_ find this said by hegel
2021-09-27 19:43:45 +0200 <Franciman> I had read it was a common attitude
2021-09-27 19:43:49 +0200 <Franciman> wait I think
2021-09-27 19:43:54 +0200 <Franciman> I see the problem
2021-09-27 19:43:56 +0200 <sclv> and you will find none of these people ever said "i'm writing like this because i don't want certain people to understand me"
2021-09-27 19:44:14 +0200 <Franciman> He is writing (actually was) in a AULIC way
2021-09-27 19:44:21 +0200 <Franciman> to give prestige to the writing
2021-09-27 19:44:32 +0200 <Franciman> so not to directly block learner
2021-09-27 19:44:34 +0200 <Franciman> I see
2021-09-27 19:44:34 +0200 <shiraeeshi[m]> monochrom: that's what I'm talking about. Our civilization has one bug: it tries to make an instrument out of everything. So it tries to make a university an instrument of achieving some goal: filtering people, creating professionals who are going to work and become instruments themselves. But if you go too far into making instruments out of everything, you are going to spoil everything.
2021-09-27 19:44:39 +0200fef(~thedawn@user/thedawn) (Ping timeout: 276 seconds)
2021-09-27 19:44:54 +0200 <sclv> again i just don't think this is true of hegel. its far offtopic so i won't keep going. but something like the "shorter logic" is not at all as you describe
2021-09-27 19:45:10 +0200 <Franciman> I see
2021-09-27 19:45:20 +0200 <Franciman> well I never read hegel first hand
2021-09-27 19:45:26 +0200 <Franciman> so your two books are more than my single book
2021-09-27 19:45:48 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:75e5:da2f:c054:6c5d)
2021-09-27 19:46:16 +0200 <Franciman> shiraeeshi[m]: unfortunately I think you are right
2021-09-27 19:46:56 +0200 <Franciman> another highly controversial writer is nietzhsce
2021-09-27 19:46:58 +0200 <Franciman> nietzsche
2021-09-27 19:47:08 +0200 <Franciman> he purposefully writes in an obscure manner
2021-09-27 19:47:31 +0200 <Franciman> I think
2021-09-27 19:47:34 +0200 <Franciman> I never read this
2021-09-27 19:47:45 +0200 <Franciman> but oh if he is good at writing
2021-09-27 19:48:11 +0200 <sclv> i'm sorry i engaged on this, we're way offtopic for this channel
2021-09-27 19:48:30 +0200 <Franciman> do you prefer talking about the awful status of cabal's documentation?
2021-09-27 19:48:33 +0200 <Franciman> or happy?
2021-09-27 19:48:40 +0200 <sclv> PRs welcome.
2021-09-27 19:48:44 +0200 <Franciman> yeah I know
2021-09-27 19:48:47 +0200 <sclv> (there are a number on cabal underway)
2021-09-27 19:48:54 +0200 <Franciman> if only I could understand what the heck happens insdie that monster
2021-09-27 19:49:01 +0200 <sclv> i've never made significant use of happy so i can't help you there
2021-09-27 19:49:03 +0200 <Franciman> I would happly write a PR
2021-09-27 19:49:04 +0200 <monochrom> Well I suppose if you turn this into critiquing Haskell for being intentionally inaccessible it's all good. >:)
2021-09-27 19:49:12 +0200 <Franciman> lol
2021-09-27 19:49:12 +0200 <sclv> aaaaack
2021-09-27 19:49:16 +0200 <Franciman> I did
2021-09-27 19:49:26 +0200 <Franciman> I was not serious
2021-09-27 19:49:29 +0200 <Franciman> just turned tables around :D
2021-09-27 19:49:31 +0200 <dminuoso> Honestly, cabal is not that badly documented.
2021-09-27 19:49:33 +0200 <Franciman> btw I am realy sorry for cabal
2021-09-27 19:49:40 +0200 <Franciman> I can never find things
2021-09-27 19:49:51 +0200 <Franciman> I keep on hitting the Issues on github, it's a better documentation than the actual documentation
2021-09-27 19:49:53 +0200 <Franciman> tbh
2021-09-27 19:49:53 +0200 <dminuoso> Your experience differs from mine, then.
2021-09-27 19:49:55 +0200 <Franciman> for me
2021-09-27 19:50:00 +0200 <monochrom> You can start with my analysis at http://www.vex.net/~trebla/haskell/prerequisite.xhtml and argue that this is proof that Haskell is inaccessible.
2021-09-27 19:50:23 +0200 <Franciman> I think haskell is becoming too corporate
2021-09-27 19:50:25 +0200 <Franciman> not inaccessible
2021-09-27 19:50:27 +0200 <Franciman> btw
2021-09-27 19:50:38 +0200 <monochrom> PHP does not make you do equational reasoning. Haskell does. Haskell is more inaccessible than PHP.
2021-09-27 19:51:21 +0200 <monochrom> And this: http://www.vex.net/~trebla/haskell/IO.xhtml
2021-09-27 19:51:22 +0200 <sclv> php does not let you do any reasoning
2021-09-27 19:51:29 +0200 <Franciman> I think it is hearsaying
2021-09-27 19:51:31 +0200 <dminuoso> monochrom: Is that really so? Usually imperative language has just as much equational reasoning, except it's a bit harder to see that it's required of you.
2021-09-27 19:51:32 +0200 <Franciman> it's php5
2021-09-27 19:51:35 +0200 <Franciman> php8 got much better
2021-09-27 19:52:28 +0200 <monochrom> PHP does not force you to distinguish "a program that reads a number from stdin, and today the number happens to be 4" from "a program that always gives you 4". Haskell does. Haskell is making it more difficult.
2021-09-27 19:52:30 +0200 <Franciman> haskell's ecosystem is terrible mostly because corps don't put money in those
2021-09-27 19:52:44 +0200 <Franciman> and the majority of people doing the ecosystem just work for corps
2021-09-27 19:52:47 +0200 <Franciman> so there are a few tools
2021-09-27 19:52:50 +0200 <Franciman> doing great job
2021-09-27 19:52:54 +0200 <Franciman> the rest largely undocumentend
2021-09-27 19:52:58 +0200 <Franciman> and or unmantained
2021-09-27 19:54:36 +0200brainfreeze(~brainfree@2a03:1b20:4:f011::20d)
2021-09-27 19:55:43 +0200 <monochrom> dminuoso: If both your point and my point are edited a bit, we can come to an agreement, and it is the truth.
2021-09-27 19:56:12 +0200 <Franciman> do you have any resource on learning and understanding how haskell programs actually get executed?
2021-09-27 19:56:17 +0200yauhsien(~yauhsien@118-167-48-21.dynamic-ip.hinet.net)
2021-09-27 19:56:20 +0200 <Franciman> in order to get a better understanding of how to optimize things
2021-09-27 19:56:21 +0200bitdex(~bitdex@gateway/tor-sasl/bitdex) (Ping timeout: 276 seconds)
2021-09-27 19:56:33 +0200 <monochrom> One can do either equational reasoning or operational reasoning ("use a debugger to step through execution") to both kinds of languages.
2021-09-27 19:57:07 +0200 <monochrom> But equational reasoning is easier for Haskell, operational reasoning is easier for imperative languages.
2021-09-27 19:57:14 +0200 <Franciman> euqational reasoning is a nice abstraction, but how does it work when you try to squeeze out the proformances of your program?
2021-09-27 19:57:34 +0200 <tomsmeding> Franciman: the other day I stumbled upon this https://github.com/quchen/stgi#readme
2021-09-27 19:57:46 +0200 <monochrom> So suppose someone chooses to stick to operational reasoning, unconditionally, because they flunked algebra and are proud of it.
2021-09-27 19:57:58 +0200 <Franciman> thanks a lot tomsmeding
2021-09-27 19:57:58 +0200 <monochrom> Haskell is going to be visibly harder.
2021-09-27 19:58:36 +0200 <tomsmeding> Franciman: (see also the last section of the readme)
2021-09-27 19:58:54 +0200 <Franciman> oh I read that eval/apply is faster yeah
2021-09-27 19:58:57 +0200 <Franciman> damn
2021-09-27 19:59:03 +0200 <monochrom> Franciman, I view equational reasoning as very helpful, almost necessary, for squeezing out performance correctly.
2021-09-27 19:59:10 +0200 <Franciman> how so?
2021-09-27 19:59:16 +0200 <Franciman> ty tomsmeding
2021-09-27 19:59:21 +0200 <monochrom> Yes, you need operational reasoning to show that the faster version is faster.
2021-09-27 19:59:29 +0200Robin_Jadoul(~Robin_Jad@152.67.64.160) (Ping timeout: 252 seconds)
2021-09-27 19:59:30 +0200 <Franciman> no you don't
2021-09-27 19:59:33 +0200 <Franciman> you just run the program
2021-09-27 19:59:35 +0200 <Franciman> to test things
2021-09-27 19:59:43 +0200 <monochrom> But you need equational reasoning to show that the faster version is giving the same answer as the slower version.
2021-09-27 19:59:44 +0200Cajun(~Cajun@user/cajun) (Quit: Client closed)
2021-09-27 20:00:00 +0200 <Franciman> how do you recognize what is happening with equational reasoning alone?
2021-09-27 20:00:07 +0200 <Franciman> how do you understand where you need to optimize
2021-09-27 20:00:09 +0200 <Franciman> and how
2021-09-27 20:00:11 +0200 <Franciman> and why
2021-09-27 20:00:19 +0200 <Franciman> I just see denontation in the equational reasoning
2021-09-27 20:00:20 +0200 <monochrom> I thought I already addressed that.
2021-09-27 20:00:29 +0200 <monochrom> <monochrom> Yes, you need operational reasoning to show that the faster version is faster.
2021-09-27 20:00:39 +0200 <Franciman> I am not talking about showing things
2021-09-27 20:00:45 +0200 <Franciman> I talk about understand what is happening
2021-09-27 20:00:55 +0200 <Franciman> which comes before proving things
2021-09-27 20:00:56 +0200yauhsien(~yauhsien@118-167-48-21.dynamic-ip.hinet.net) (Ping timeout: 265 seconds)
2021-09-27 20:00:57 +0200 <monochrom> To me, proof = understanding.
2021-09-27 20:00:59 +0200werneta(~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net) (Read error: Connection reset by peer)
2021-09-27 20:01:05 +0200 <Franciman> proof is the result of the understanding
2021-09-27 20:01:09 +0200 <tomsmeding> a mathematical proof is making someone understand the truth of the statement being proven
2021-09-27 20:01:15 +0200 <tomsmeding> this holds across mathematics
2021-09-27 20:01:24 +0200 <Franciman> the process of understanding is harder than the written proof, imho
2021-09-27 20:01:32 +0200 <tomsmeding> for a proof in a proof assistant, that someone is the verification kernel
2021-09-27 20:01:35 +0200werneta(~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net)
2021-09-27 20:01:38 +0200 <tomsmeding> for general math proofs, that is the reviewer of the paper
2021-09-27 20:01:46 +0200 <monochrom> No, seriously, there are a lot of things that people say "here is the intuition:" and it's all BS to me, and then "here is the proof:" and then I understand.
2021-09-27 20:02:00 +0200 <tomsmeding> for understanding that your program does the same thing after modifying it, that someone is yourself
2021-09-27 20:02:15 +0200 <Franciman> I mean you get your proofs all together?
2021-09-27 20:02:18 +0200 <Franciman> without tweaking around?
2021-09-27 20:02:25 +0200 <Franciman> that's notable
2021-09-27 20:02:41 +0200 <tomsmeding> and also notable about this idea: proof for person A != a proof for person B
2021-09-27 20:02:57 +0200Tuplanolla(~Tuplanoll@91-159-69-50.elisa-laajakaista.fi)
2021-09-27 20:03:19 +0200 <tomsmeding> which is why an intuitive argument might suffice for you but not for some picky person that reads your paper :p
2021-09-27 20:03:26 +0200 <monochrom> Yeah if I see more different proofs I understand more.
2021-09-27 20:03:37 +0200 <monochrom> If I see one proof I only understand one angle.
2021-09-27 20:03:46 +0200 <Franciman> but the act you are describing is not syntethic, it is analytical
2021-09-27 20:03:50 +0200 <Franciman> you read proofs to understand
2021-09-27 20:03:54 +0200 <Franciman> but how do you produce your proof?
2021-09-27 20:04:04 +0200wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-09-27 20:04:04 +0200wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Changing host)
2021-09-27 20:04:04 +0200wroathe(~wroathe@user/wroathe)
2021-09-27 20:04:08 +0200 <sclv> there's actually a lot of work on equational reasomning for program efficiency. i suggest in particular hutton's stuff on "improvement theory" a lot of which is joint work with hackett: http://www.cs.nott.ac.uk/~pszgmh/bib.html#metrics
2021-09-27 20:04:11 +0200 <monochrom> I'm OK with relaxing to "proof sketch" if you want a more warm-fuzzy meaning of "understanding".
2021-09-27 20:04:41 +0200sneedsfeed(~sneedsfee@rrcs-173-95-122-169.midsouth.biz.rr.com) (Quit: Ping timeout (120 seconds))
2021-09-27 20:04:46 +0200 <shapr> ooh that's neat, haven't heard of improvement theory
2021-09-27 20:05:04 +0200 <monochrom> I produce my proof by a mix of experience and blind guessing?
2021-09-27 20:05:12 +0200 <sclv> i think the worker/wrapper paper was particularly accessible iirc
2021-09-27 20:05:21 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-09-27 20:05:22 +0200 <Franciman> read it
2021-09-27 20:05:26 +0200 <Franciman> it was for me
2021-09-27 20:05:37 +0200 <monochrom> Meaning that if eventually my attempt at a proof doesn't work out, it means my "understanding" is wrong?
2021-09-27 20:05:43 +0200 <monochrom> Which sounds about right?
2021-09-27 20:05:52 +0200 <monochrom> How do you know that you understand?
2021-09-27 20:05:59 +0200 <Franciman> you feel it
2021-09-27 20:06:02 +0200 <Franciman> if you don't feel it
2021-09-27 20:06:11 +0200 <Franciman> you didn't understand the feeling
2021-09-27 20:06:13 +0200 <Franciman> maybe
2021-09-27 20:06:30 +0200emf(~emf@2620:10d:c090:400::5:4ff3) (Ping timeout: 260 seconds)
2021-09-27 20:06:32 +0200 <tomsmeding> plenty students feel that they understand the material when the teacher presents it to them, but then they get stuck trying to apply it :p
2021-09-27 20:06:38 +0200 <monochrom> My experience with myself and my student is Dunning-Kruger.
2021-09-27 20:06:39 +0200 <tomsmeding> that feeling is not always right
2021-09-27 20:06:47 +0200 <monochrom> If you feel that you understand, you're wrong.
2021-09-27 20:06:53 +0200 <monochrom> Always wrong.
2021-09-27 20:07:14 +0200 <dminuoso> I understand what you're saying.
2021-09-27 20:07:22 +0200 <dminuoso> /s
2021-09-27 20:07:27 +0200 <tomsmeding> monochrom: meaning that you can only understand something if you don't feel like you understand it?
2021-09-27 20:07:32 +0200 <tomsmeding> that sounds fishy
2021-09-27 20:07:35 +0200 <Franciman> lol that's yeah
2021-09-27 20:07:37 +0200 <Franciman> to say the least
2021-09-27 20:07:42 +0200 <Franciman> that works for great bodies of work, though
2021-09-27 20:07:55 +0200 <Franciman> like Feinmann's "you don't understand quantum mechanics if you say you do"
2021-09-27 20:07:58 +0200 <Franciman> Feynmann
2021-09-27 20:08:01 +0200 <dminuoso> tomsmeding: Perhaps there is a missing emphasis on *feel*
2021-09-27 20:08:25 +0200 <tomsmeding> dminuoso: in my message or monochrom's?
2021-09-27 20:08:31 +0200 <Franciman> having the hubris of saying you understand everything that's been told on a subject just because you had a course at university is Dunning-Kruger
2021-09-27 20:08:40 +0200 <Franciman> saying you understand the proof that 1+1=2
2021-09-27 20:08:45 +0200 <Franciman> maybe is ok?
2021-09-27 20:09:01 +0200 <dminuoso> tomsmeding: his
2021-09-27 20:09:12 +0200 <monochrom> To be fair if you mean the Russell-Whitehall proof, I don't understand that one.
2021-09-27 20:09:20 +0200 <Franciman> no
2021-09-27 20:09:36 +0200tomsmedingguesses peano arithmetic, or perhaps the axioms of \R
2021-09-27 20:09:47 +0200 <Franciman> I mean the definition of + encoded in the lambda calculus
2021-09-27 20:09:51 +0200 <Franciman> through ecclesiastic encoding
2021-09-27 20:10:44 +0200 <monochrom> Then I say that I understand one proof, one angle.
2021-09-27 20:11:05 +0200emf(~emf@2620:10d:c090:400::5:4ff3)
2021-09-27 20:11:16 +0200 <monochrom> Or rather, I have seen one proof, so I understand one angle.
2021-09-27 20:12:02 +0200zaquest(~notzaques@5.128.210.178) (Remote host closed the connection)
2021-09-27 20:13:20 +0200 <Hecate> meow
2021-09-27 20:13:21 +0200 <monochrom> And back to "how do I even know how to modify my code to increase speed".
2021-09-27 20:13:28 +0200zaquest(~notzaques@5.128.210.178)
2021-09-27 20:13:47 +0200 <monochrom> We know a lot of equations for that.
2021-09-27 20:14:01 +0200 <monochrom> That is one way equational reasoning helps.
2021-09-27 20:15:24 +0200 <tomsmeding> though there are also some potential optimisations of Haskell code that aren't easily captured in equations, perhaps because they depend on assumptions / domain knowledge about what the rest of the program is doing
2021-09-27 20:15:58 +0200 <tomsmeding> for example, adding a ! somewhere that technically modifies semantics of the function in question, so ghc can't just do it, but you know that the program at large isn't affected
2021-09-27 20:16:08 +0200 <monochrom> In that case I understand that we generalize to "conditional equational reasoning"..
2021-09-27 20:16:08 +0200 <tomsmeding> but it may (or may not) increase performance
2021-09-27 20:16:36 +0200 <tomsmeding> or switching to a different algorithm entirely :)
2021-09-27 20:16:50 +0200 <tomsmeding> instead of implementing bubble sort, you're probably better off using Data.List.sort
2021-09-27 20:17:10 +0200 <sclv> one way to pose this is "if you can't show that this code is the same as that code, you certainly can't say 'this code is the same, but faster'"
2021-09-27 20:17:28 +0200 <tomsmeding> or stuff like array-of-structs to struct-of-arrays (is that even a transformation that does much useful in haskell? perhaps if you're using vectors)
2021-09-27 20:17:38 +0200 <tomsmeding> sclv++
2021-09-27 20:18:30 +0200 <monochrom> array-of-structs to struct-of-arrays is a fairly simple equational reasoning.
2021-09-27 20:18:47 +0200 <tomsmeding> with potentially far-reaching implications in many functions!
2021-09-27 20:19:03 +0200 <tomsmeding> I wouldn't call that "simple equational reasoning" tbh; but perhaps that depends on how you're representing the program
2021-09-27 20:19:32 +0200 <tomsmeding> (also "simple" is subjective anyway, so I can't speak for you)
2021-09-27 20:22:24 +0200 <monochrom> It is as simple as this: Suppose you have a program that accesses a matrix by "M[foo][bar]". One day you decide to store the transpose of that matrix instead. Then you program just needs "M[foo][bar]" systematically replaced by "M[bar][foo]".
2021-09-27 20:23:00 +0200 <tomsmeding> and what if the program contained "thing = M[foo] :: StructType" ?
2021-09-27 20:23:05 +0200 <shiraeeshi[m]> monochrom: "When I was a student, I decided to just have fun and ignore marks."
2021-09-27 20:23:05 +0200 <shiraeeshi[m]> monochrom: "or rather, I got it backwards. Everything I studed was outside the scope of the exam."
2021-09-27 20:23:08 +0200 <tomsmeding> (in a let-binding or whatever)
2021-09-27 20:23:11 +0200 <shiraeeshi[m]> what marks did you get?
2021-09-27 20:23:32 +0200 <monochrom> OK yes, that one is way harder. Sometimes you even consider it doable.
2021-09-27 20:23:43 +0200 <monochrom> A+
2021-09-27 20:24:01 +0200 <monochrom> err, Sometimes you don't even consider it doable.
2021-09-27 20:24:10 +0200 <tomsmeding> monochrom: no-one said that it was impossible :) I'm just not sure I'd call it "simple equational reasoning" in general.
2021-09-27 20:24:11 +0200 <tomsmeding> right
2021-09-27 20:24:57 +0200 <monochrom> OK I mean that it's simple if you only have "M[foo][bar]" to worry about, no "M[foo]" or "M[bar]".
2021-09-27 20:25:38 +0200 <tomsmeding> true
2021-09-27 20:25:56 +0200 <hpc> or in C, foo[M]
2021-09-27 20:25:57 +0200 <hpc> :D
2021-09-27 20:26:08 +0200 <monochrom> ugh hahaha
2021-09-27 20:26:18 +0200 <tomsmeding> *(foo + M)
2021-09-27 20:26:34 +0200 <tomsmeding> *(offsetof(M, foo) + M) or what was that syntax
2021-09-27 20:26:56 +0200 <Rembane> C, or how to turn multidimensional arrays into brain melting arithmetic.
2021-09-27 20:27:26 +0200 <tomsmeding> multidimensional arrays in C are quite fine, until you have to allocate them on the heap
2021-09-27 20:27:56 +0200 <tomsmeding> I know that there is some incantation involving some obscure cast and malloc() that happens to work, but I remember only that it was weird enough that I just flatten my arrays in practice
2021-09-27 20:31:49 +0200chris(~chris@81.96.113.213)
2021-09-27 20:31:53 +0200chrisGuest5736
2021-09-27 20:34:02 +0200renzhi(~xp@2607:fa49:6500:b100::1d9d) (Ping timeout: 260 seconds)
2021-09-27 20:39:41 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 245 seconds)
2021-09-27 20:45:43 +0200renzhi(~xp@2607:fa49:6500:b100::5845)
2021-09-27 20:47:32 +0200timCF(~timCF@m91-129-108-244.cust.tele2.ee) (Quit: leaving)
2021-09-27 20:49:43 +0200lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2021-09-27 20:50:12 +0200tromp(~textual@dhcp-077-249-230-040.chello.nl)
2021-09-27 20:55:35 +0200MQ-17J(~MQ-17J@8.6.144.233) (Ping timeout: 252 seconds)
2021-09-27 20:56:00 +0200MQ-17J(~MQ-17J@35.50.22.115)
2021-09-27 21:01:10 +0200 <juri_> o/~ that's me in the corner.. thats me writing haskell, breaking my type system.. trying make it total too.. but i don't know if i should do it.. oh no i've changed too much.. o/~
2021-09-27 21:02:12 +0200jinsun(~quassel@user/jinsun) (Read error: Connection reset by peer)
2021-09-27 21:02:31 +0200 <monochrom> Ah, sunk cost policy :)
2021-09-27 21:04:19 +0200Null_A(~null_a@2601:645:8700:2290:91f2:4a69:be9c:a77e) (Read error: Connection reset by peer)
2021-09-27 21:07:06 +0200tromp(~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2021-09-27 21:07:40 +0200 <tzh> okay, so i'm working on some forms/ui code, and i have a situation where each kind of form element has different internal state (a list of checkboxes stores the index of each checked item, a text field stores the text typed, etc). i'd like to be able to extract that type variable in some way so i can have various functions that operate more-or-less identically on each form type, save for they have a different internal state value. what
2021-09-27 21:07:40 +0200 <tzh> would be a good way to handle this?
2021-09-27 21:09:23 +0200 <tomsmeding> tzh: what kind of operation would you want to do on all such form elements, for example?
2021-09-27 21:10:13 +0200 <tomsmeding> assuming your situation is that you have lots of 'FormElement a' values for different values of 'a'
2021-09-27 21:12:08 +0200nfd(~nfd@user/nfd) (Ping timeout: 265 seconds)
2021-09-27 21:12:09 +0200Null_A(~null_a@2601:645:8700:2290:91f2:4a69:be9c:a77e)
2021-09-27 21:12:19 +0200 <tzh> tomsmeding: render them, for one. they're all hooked into a whole event cycle thing, and currently i'm doing a GADT hack where i have a constructor `App :: Form (x -> a) -> Form x -> Form a` that gets combined during the rendering & event processing steps, but there's not really a way to remove the state types in the same way if i want to have them available when i actually need to alter their values
2021-09-27 21:13:48 +0200 <tomsmeding> tzh: you can hide a type variable using an existential type, like 'data Some f where MkSome :: f a -> Some f', but then you can't get 'a' out anymore -- except if you can re-discover 'a' by pattern matching on the 'f a'
2021-09-27 21:14:46 +0200 <tomsmeding> but if you can't do that re-discovery, you'll have to have a source of truth that has the fully typed values somewhere, and hide the type variables somehow when you pass it to a function that needs to treat stuff uniformly
2021-09-27 21:15:17 +0200 <tomsmeding> random thought that probably doesn't help but maybe: data HList f list where HCons :: f a -> HList f list -> HList f (a ': list) ; HNil :: HList f '[]
2021-09-27 21:15:19 +0200 <tzh> right. in that case i can later on extract the 'x -> a' function and apply the 'x' to it coherently to get a valid 'a' value, it's just that definitely doesn't work for the state values (which don't even exist in the types at that point; they're only in the values)
2021-09-27 21:16:24 +0200 <tomsmeding> I think this kind of depends on how you appliation is setup :p
2021-09-27 21:16:32 +0200 <tomsmeding> *application
2021-09-27 21:16:33 +0200 <tzh> yeah
2021-09-27 21:16:56 +0200 <tzh> i was thinking something to do with type families but i've never used them before and i don't actually know if that would help in any way
2021-09-27 21:17:14 +0200 <monochrom> Yeah you have to completely list all functions you want to be identical over your types (or values, it is not yet clear which is better).
2021-09-27 21:17:16 +0200 <tomsmeding> type families are just functions on the type level
2021-09-27 21:17:25 +0200tommd(~tommd@75-164-130-101.ptld.qwest.net)
2021-09-27 21:17:47 +0200ubert(~Thunderbi@91.141.58.84.wireless.dyn.drei.com) (Ping timeout: 265 seconds)
2021-09-27 21:17:53 +0200tromp(~textual@dhcp-077-249-230-040.chello.nl)
2021-09-27 21:17:59 +0200 <monochrom> The reason is that every act of generalization also comes with sacrifices. Or less dramatically, omissions. You consciously forget differences.
2021-09-27 21:18:11 +0200 <tomsmeding> like you can define that 'f 42 = True', you can define that 'F (Maybe Bool) = [Int]'
2021-09-27 21:18:31 +0200 <monochrom> A complete list of functions is a way to say "I ignore all other functions".
2021-09-27 21:19:59 +0200 <monochrom> Suppose I have the Integer type and the Polymonial type. I go "doesn't it stand to reason that the same GCD algorithm works for both?"
2021-09-27 21:20:10 +0200takuan(~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection)
2021-09-27 21:20:53 +0200 <monochrom> Yes, but it means I recognize that the commonality is they both have some kind of +, -, *, div, mod.
2021-09-27 21:21:10 +0200hiruji(~hiruji@user/hiruji)
2021-09-27 21:21:35 +0200 <monochrom> That's my way of saying that "I ignore any other difference between Integer and Polynomial".
2021-09-27 21:22:17 +0200 <tomsmeding> and, importantly: you'll have to implement +, -, *, div, mod separately for those two data types
2021-09-27 21:22:51 +0200ubert(~Thunderbi@91.141.58.84.wireless.dyn.drei.com)
2021-09-27 21:25:00 +0200betelgeuse8(~betelgeus@94-225-47-8.access.telenet.be)
2021-09-27 21:25:15 +0200betelgeuse(~betelgeus@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer)
2021-09-27 21:25:15 +0200betelgeuse8betelgeuse
2021-09-27 21:27:45 +0200Guest5736(~chris@81.96.113.213) (Remote host closed the connection)
2021-09-27 21:28:42 +0200ubert1(~Thunderbi@91.141.58.84.wireless.dyn.drei.com)
2021-09-27 21:30:06 +0200qbt(~edun@user/edun) (Ping timeout: 245 seconds)
2021-09-27 21:31:49 +0200ubert(~Thunderbi@91.141.58.84.wireless.dyn.drei.com) (Ping timeout: 252 seconds)
2021-09-27 21:31:49 +0200ubert1ubert
2021-09-27 21:32:57 +0200chris(~chris@81.96.113.213)
2021-09-27 21:33:01 +0200chrisGuest6698
2021-09-27 21:34:27 +0200acidjnk_new(~acidjnk@p200300d0c703cb837cfb9841cc066d33.dip0.t-ipconnect.de)
2021-09-27 21:35:11 +0200ubert(~Thunderbi@91.141.58.84.wireless.dyn.drei.com) (Remote host closed the connection)
2021-09-27 21:37:06 +0200pavonia(~user@user/siracusa)
2021-09-27 21:37:11 +0200Guest6698(~chris@81.96.113.213) (Ping timeout: 245 seconds)
2021-09-27 21:37:27 +0200lavaman(~lavaman@98.38.249.169)
2021-09-27 21:39:49 +0200chris(~chris@81.96.113.213)
2021-09-27 21:39:53 +0200chrisGuest1344
2021-09-27 21:45:01 +0200lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2021-09-27 21:46:50 +0200 <janus> when did stack switch from getting build plans from fpco/lts-haskell to commericalhaskell/stackage-snapshots?
2021-09-27 21:47:09 +0200max22-(~maxime@lfbn-ren-1-762-224.w81-53.abo.wanadoo.fr) (Remote host closed the connection)
2021-09-27 21:47:30 +0200choucavalier(~choucaval@user/choucavalier) (Read error: Connection reset by peer)
2021-09-27 21:48:01 +0200 <Franciman> man1
2021-09-27 21:48:07 +0200 <Franciman> ops sorry
2021-09-27 21:49:09 +0200betelgeuse(~betelgeus@94-225-47-8.access.telenet.be) (Quit: The Lounge - https://thelounge.chat)
2021-09-27 21:49:39 +0200Null_A(~null_a@2601:645:8700:2290:91f2:4a69:be9c:a77e) (Remote host closed the connection)
2021-09-27 21:50:01 +0200ulvarrefr(~user@185.24.53.152) (Remote host closed the connection)
2021-09-27 21:51:55 +0200dhouthoo(~dhouthoo@178-117-36-167.access.telenet.be) (Quit: WeeChat 3.2)
2021-09-27 21:52:53 +0200lavaman(~lavaman@98.38.249.169)
2021-09-27 21:54:55 +0200 <alzgh> hello, I was wondering if there is a way to format GHCi output? Like for the `:info` and `:doc` commands, possibly also `:type` maybe?
2021-09-27 21:55:38 +0200 <alzgh> For instance, using the already available formatting character that are used on the web.
2021-09-27 21:55:50 +0200 <alzgh> @characters
2021-09-27 21:55:50 +0200 <lambdabot> Unknown command, try @list
2021-09-27 21:56:04 +0200 <alzgh> *characters, sorry
2021-09-27 21:56:40 +0200Null_A(~null_a@2601:645:8700:2290:91f2:4a69:be9c:a77e)
2021-09-27 21:57:43 +0200yauhsien(~yauhsien@118-167-48-21.dynamic-ip.hinet.net)
2021-09-27 22:00:52 +0200 <monochrom> I think no.
2021-09-27 22:02:24 +0200yauhsien(~yauhsien@118-167-48-21.dynamic-ip.hinet.net) (Ping timeout: 265 seconds)
2021-09-27 22:03:09 +0200 <janus> how can i work around stack not having a solver? cabal builds and i want to take that plan and shove it into package.yaml and build with the nightly snapshot
2021-09-27 22:03:53 +0200 <sclv> cabal gen-bounds will spit out the calculated cabal bounds for the build
2021-09-27 22:04:06 +0200emf(~emf@2620:10d:c090:400::5:4ff3) (Ping timeout: 260 seconds)
2021-09-27 22:04:28 +0200tromp(~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2021-09-27 22:05:39 +0200 <alzgh> monochrom: If I wanted to add a feature like that, what are my options?
2021-09-27 22:06:44 +0200max22-(~maxime@2a01cb0883359800761b1c69d9198b7f.ipv6.abo.wanadoo.fr)
2021-09-27 22:11:32 +0200 <geekosaur> ghci is a thinn wrapper around the ghc api, it's relatively easy to hack on
2021-09-27 22:13:06 +0200 <geekosaur> sadly you have to build all of ghc to do it currently, unless someone has been keeping ghci-ng up to date (but it looks like the last change was in 2015)
2021-09-27 22:18:08 +0200jinsun(~quassel@user/jinsun)
2021-09-27 22:18:49 +0200tromp(~textual@dhcp-077-249-230-040.chello.nl)
2021-09-27 22:21:13 +0200 <janus> it doesn't seem like 'cabal gen-bounds' discovers my private dependencies from cabal.project. how can i made it do that?
2021-09-27 22:21:39 +0200 <dminuoso> what is a "private dependency"?
2021-09-27 22:21:59 +0200 <sclv> it won’t. those aren’t going to have bounds since they can’t be solved for, they’re fixed “inplace”
2021-09-27 22:22:01 +0200 <janus> dminuoso: a dependency that is not on hackage, not on stackage, simply a git repo on my filesystem
2021-09-27 22:22:42 +0200waleee(~waleee@2001:9b0:216:8200:d457:9189:7843:1dbd) (Ping timeout: 265 seconds)
2021-09-27 22:22:56 +0200 <geekosaur> right, it can't compute bounds for those because all it knows is the git repo
2021-09-27 22:23:17 +0200 <janus> well i don't need the bounds for that one, but what about all the others? it bails because of that private one
2021-09-27 22:23:18 +0200 <geekosaur> at its current revision
2021-09-27 22:24:06 +0200 <geekosaur> bounds are kinda tied to hackage so you'd need it to be on hackage for the bounds to be meaningful for anyone else
2021-09-27 22:24:23 +0200waleee(~waleee@h-98-128-228-119.NA.cust.bahnhof.se)
2021-09-27 22:25:04 +0200 <janus> well the bounds wouldn't be related to the private repo! but i'd like to get the bounds for all the public packages. right now i can't do that because i have a private dep
2021-09-27 22:25:55 +0200nfd(~nfd@user/nfd)
2021-09-27 22:25:59 +0200 <janus> i guess i can just remove it, then the bounds can be calculated. it doesn't matter that it wouldn't compile, the solver runs before compilation anyway
2021-09-27 22:28:25 +0200 <janus> though it might mean that the private dependencies' dependencies could conflict as they wouldn't be taken into account...
2021-09-27 22:29:18 +0200tromp(~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2021-09-27 22:29:47 +0200 <janus> maybe i should run my own hackage o_O for my secrit deps
2021-09-27 22:30:44 +0200Feuermagier(~Feuermagi@user/feuermagier) (Remote host closed the connection)
2021-09-27 22:30:46 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:75e5:da2f:c054:6c5d) (Remote host closed the connection)
2021-09-27 22:31:16 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:75e5:da2f:c054:6c5d)
2021-09-27 22:31:48 +0200 <sclv> janus: do you mean that cabal like literally dies before generating any bounds because you have git packages in your cabal.project?
2021-09-27 22:31:54 +0200 <shiraeeshi[m]> move to golang
2021-09-27 22:32:04 +0200 <sclv> oh wait, yeah, we have that ticket https://github.com/haskell/cabal/issues/7504
2021-09-27 22:32:36 +0200 <shapr> shiraeeshi[m]: I tried that
2021-09-27 22:32:40 +0200 <shiraeeshi[m]> golang allows to declare local dependencies without having to post them to the repo
2021-09-27 22:32:51 +0200 <janus> sclv: yes that is what i meant. thanks for the link! :D very helpful!
2021-09-27 22:32:58 +0200 <sclv> so does haskell. this is just about a bug in cabal that keeps gen-bounds from working in such a situation
2021-09-27 22:33:33 +0200 <Franciman> why exactly is it useful to have multiprojects, when we have cabal.project file?
2021-09-27 22:34:04 +0200 <shapr> what's a multi-project?
2021-09-27 22:34:07 +0200 <sclv> two reasons: first, there are often universes of coupled libs and exes it makes sense to build together as a single project
2021-09-27 22:34:24 +0200shaprreads the link *embarassed*
2021-09-27 22:34:29 +0200 <Franciman> there's cabal.project for thet, in't there?
2021-09-27 22:34:38 +0200 <sclv> that's literally what a "multiproject" means
2021-09-27 22:34:55 +0200 <mrianbloom> Is there an accelerate function that allows you to filter on the outer dimension of an array?
2021-09-27 22:34:57 +0200 <Franciman> oh I thought multilple executable /library
2021-09-27 22:35:00 +0200 <Franciman> in the same cabal file
2021-09-27 22:35:02 +0200 <shapr> yeah, we have half a million lines of Haskell at work like that (excluding blank lines)
2021-09-27 22:35:30 +0200 <sclv> multiple exes in the same cabal file make sense sometimes too, if they're all pretty coupled and share a lot of code. *shrug*
2021-09-27 22:35:31 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:75e5:da2f:c054:6c5d) (Ping timeout: 245 seconds)
2021-09-27 22:35:41 +0200 <Franciman> again, there is cabal.project for that
2021-09-27 22:36:04 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-09-27 22:36:15 +0200 <shapr> would be interesting to see a compare and contrast post
2021-09-27 22:36:45 +0200 <janus> hmm so multi-project is something else than deps from cabal.project? so this bug does not precisely describe my issue?
2021-09-27 22:36:50 +0200 <mrianbloom> Basically I have a vector of vectors and I want to exclude vectors that don't meet a predicate.
2021-09-27 22:37:03 +0200 <sclv> janus: no its exactly that, and the discussion got confused here
2021-09-27 22:37:08 +0200 <Franciman> sorry
2021-09-27 22:38:17 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:75e5:da2f:c054:6c5d)
2021-09-27 22:38:53 +0200 <geekosaur> possibly dating from a time when cabal.project was new and people were more used to single-target projects
2021-09-27 22:38:55 +0200MQ-17J(~MQ-17J@35.50.22.115) (Read error: Connection reset by peer)
2021-09-27 22:39:13 +0200 <Franciman> that's what causes the cabal's complexity
2021-09-27 22:41:36 +0200MQ-17J(~MQ-17J@ip-99-203-15-239.pools.cgn.spcsdns.net)
2021-09-27 22:42:07 +0200geekosaur(~geekosaur@xmonad/geekosaur) (Remote host closed the connection)
2021-09-27 22:43:18 +0200nctcf^(~nctcf@68.101.50.106)
2021-09-27 22:43:57 +0200geekosaur(~geekosaur@xmonad/geekosaur)
2021-09-27 22:44:01 +0200 <monochrom> You know, I can't reproduce that bug. My "cd package-a ; cabal gen-bounds" ended with "Congratulations, all your dependencies have upper bounds!"
2021-09-27 22:44:47 +0200 <monochrom> To be fair, I did a "cabal update" first.
2021-09-27 22:45:35 +0200 <monochrom> <useless informaiton>In my case it was s/15/57/ so I definitely needed a "cabal update", no?</useless information>
2021-09-27 22:48:28 +0200 <monochrom> Interesting. If I undo my "cabal update", then "cabal build all" already fails, "Could not resolve dependencies:". (I don't think you want to know the details, but let me know if you do.)
2021-09-27 22:48:36 +0200 <monochrom> So, problem vanished?
2021-09-27 22:49:22 +0200 <monochrom> err wait sorry, I take that back, I had another moving part, I switched GHC version at the same time. Sorry! I'll retest and report back.
2021-09-27 22:49:44 +0200 <janus> 'cabal build all' already fails for me because of base bound ^>=4.14.2, but i thought that wasn't part of the test and i should just fix that
2021-09-27 22:51:34 +0200 <janus> but if i fix that base bound, indeed it does build without issue on cabal-install 3.6.0.0
2021-09-27 22:51:45 +0200 <sclv> nice
2021-09-27 22:52:04 +0200 <monochrom> OK how do I undo undo-cabal-update? :)
2021-09-27 22:53:15 +0200 <monochrom> More precisely, how to undo "cabal update <an august timestamp here>" so that I go back to today's index? Do I say "cabal update HEAD"?
2021-09-27 22:53:43 +0200 <janus> dunno if it is 'nice' because if it isn't broken, it means i havn't understood why my use case is broken :P
2021-09-27 22:56:06 +0200 <monochrom> Anyway, <no longer useful report>"cabal build all" already fails with GHC 8.10.4, today's hackage index</no longer useful report>
2021-09-27 22:56:22 +0200segfaultfizzbuzz(~segfaultf@135-180-0-138.static.sonic.net)
2021-09-27 22:56:47 +0200 <segfaultfizzbuzz> is there a thoughtful article discussing somewhere what i can't build if i don't have a turing complete programming language
2021-09-27 22:57:04 +0200 <geekosaur> GEB?
2021-09-27 22:57:43 +0200 <sclv> segfaultfizzbuzz: there's a whole hierarchy of strengths less than turning complete
2021-09-27 22:57:58 +0200 <segfaultfizzbuzz> okay, great, is there a nice accounting of this somewhere?
2021-09-27 22:57:59 +0200 <dolio> There probably are. But are any actually correct?
2021-09-27 22:58:00 +0200 <monochrom> Who the hell coined "multiproject" anyway? This scenerio is one single project that contains multiple packages, not multiple project.
2021-09-27 22:58:04 +0200 <sclv> so... its not "what can i build if less than X" its "what can i build with at least Y1, Y2, Y3"
2021-09-27 22:58:05 +0200 <awpr> pacman-complete is the most useful one
2021-09-27 22:58:29 +0200 <monochrom> And I have had such a project with great success, no issue at all, cabal-install does everything as advertised.
2021-09-27 22:58:37 +0200 <segfaultfizzbuzz> what are the Y1 Y2 and Y3 ? is there a nice list of those things somewhere?
2021-09-27 22:59:01 +0200 <sclv> the general field is called "recursion theory". i'm looking for a good reference on the sub-turing side
2021-09-27 23:00:22 +0200 <sclv> the most common sort of sub-turing language will still allow primitive recursion, so that brings us here: https://en.wikipedia.org/wiki/Primitive_recursive_function
2021-09-27 23:01:03 +0200Cajun(~Cajun@user/cajun)
2021-09-27 23:02:20 +0200 <monochrom> segfaultfizzbuzz: An old paper «on the size of machines» by Manuel Blum shows a slowdown for things too, when the language has restricted recursion.
2021-09-27 23:02:38 +0200 <monochrom> Today this is known as "Blum size theorem" or something.
2021-09-27 23:02:44 +0200 <segfaultfizzbuzz> slowdown? like, you can't make certain optimizations you're saying?
2021-09-27 23:03:02 +0200 <monochrom> I still haven't read the paper, years after someone mentioned it to me. :)
2021-09-27 23:03:05 +0200son0p(~ff@181.136.122.143) (Ping timeout: 264 seconds)
2021-09-27 23:03:33 +0200 <segfaultfizzbuzz> "Blum's speedup theorem shows that for any complexity measure there are computable functions that are not optimal with respect to that measure" -- this kind of mathematical thinking i find to be incredibly boring
2021-09-27 23:03:43 +0200 <sclv> there's a weaker class than primitive recursive called "elementary recursive" and then you can get weaker still by e.g. not allowing recursion at all :-)
2021-09-27 23:03:44 +0200CannabisIndica(~herb@user/mesaboogie) (Ping timeout: 252 seconds)
2021-09-27 23:03:52 +0200 <segfaultfizzbuzz> any time you set up a system of rules there is some kind of exception
2021-09-27 23:04:07 +0200 <segfaultfizzbuzz> what is important is whether the exception is non-pathological, frequently encountered, absolutely necessary to account for, etc
2021-09-27 23:04:07 +0200 <sclv> also you can sort of bound these classes so you can say like "elementary recursive, but only up to 5" and etc.
2021-09-27 23:04:48 +0200 <dolio> Yeah, that's exactly the problem with citing that theorem.
2021-09-27 23:05:00 +0200 <dolio> Does anyone care about the algorithms that can't be expressed?
2021-09-27 23:05:09 +0200 <monochrom> Well yeah I haven't read Blum's paper or any related paper so I wouldn't assume either it's relevant or it's irrelevant.
2021-09-27 23:05:23 +0200pbrisbin(~patrick@pool-173-49-147-250.phlapa.fios.verizon.net) (Ping timeout: 252 seconds)
2021-09-27 23:05:26 +0200lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2021-09-27 23:05:58 +0200lavaman(~lavaman@98.38.249.169)
2021-09-27 23:06:29 +0200 <monochrom> However, here is what I have figured out so far from a little trying and "I failed, so it looks like can't be done. Sure, I can't be sure, but meh."
2021-09-27 23:06:50 +0200 <sclv> all my favorite algorithms can't be expressed. that way i can say "oh i'd tell you my favorite algorithm, but you've never heard of it"
2021-09-27 23:07:43 +0200 <monochrom> So suppose you use System F and you use church encoding for natural numbers. "subtract 1" is going to suck.
2021-09-27 23:08:25 +0200 <segfaultfizzbuzz> monochrom: i'm so confused why do you need all of this machinery... do you need to handle "arbitrarily" large numbers?
2021-09-27 23:08:26 +0200 <dolio> Right, but that's what Mendler encodings are for, and people have made type theories that nicely incorporate those.
2021-09-27 23:08:45 +0200 <dolio> Like Cedille.
2021-09-27 23:08:46 +0200 <segfaultfizzbuzz> monochrom: can't i just have a few logic gates perform an addition operation?
2021-09-27 23:09:06 +0200 <segfaultfizzbuzz> you can do a lot with 64 bit integers, and 128 is pretty good too if you need to go that far,...
2021-09-27 23:09:08 +0200 <monochrom> At this point you would be right to critique "but church encoding of numbers is irrelevant". I agree. But I think this one is just the tip of an iceburg, this phenomenon generalizes to all ADTs that matter.
2021-09-27 23:09:44 +0200 <segfaultfizzbuzz> i am not aware of circumstances outside of cryptography and specialized mathematics research applications where you need something beyond a 64 or 128 bit integer
2021-09-27 23:10:06 +0200lavaman(~lavaman@98.38.249.169) (Ping timeout: 245 seconds)
2021-09-27 23:10:12 +0200emf(~emf@2620:10d:c090:400::5:92d0)
2021-09-27 23:10:20 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 252 seconds)
2021-09-27 23:10:31 +0200xff0x(~xff0x@2001:1a81:5315:a700:a625:8ed2:e82f:87f0) (Ping timeout: 245 seconds)
2021-09-27 23:11:28 +0200xff0x(~xff0x@2001:1a81:5315:a700:248e:1ff5:c263:f618)
2021-09-27 23:12:38 +0200gehmehgeh(~user@user/gehmehgeh) (Quit: Leaving)
2021-09-27 23:12:50 +0200Lord_of_Life(~Lord@user/lord-of-life/x-2819915) (Ping timeout: 265 seconds)
2021-09-27 23:13:41 +0200 <geekosaur> I have a program that uses them. Granted it's something of an unusual application
2021-09-27 23:14:04 +0200 <geekosaur> for a private (currently) project
2021-09-27 23:14:36 +0200 <dolio> Also it's important to ask why/in what way you're not Turing complete. Like, if your language is a total type theory, but one of the types is a sort of Turing-equivalent embedded language, and `main` runs something in that embedded language, like Haskell runs an `IO` value, is "the language" Turing-complete, or not? And if not, does it matter?
2021-09-27 23:14:56 +0200 <geekosaur> let's just say it generates timelines over a 43-(our-)year period for a bunch of different probably-nonexistent planets
2021-09-27 23:14:59 +0200 <monochrom> I am agnostic to "128 bits ought to be enough" vs "people should worry more about overflow and underflow".
2021-09-27 23:15:08 +0200Lord_of_Life(~Lord@user/lord-of-life/x-2819915)
2021-09-27 23:15:35 +0200 <geekosaur> including timezones and the like
2021-09-27 23:15:48 +0200 <dolio> At that point it's like saying, "ZFC isn't Turing-complete," while all your reasoning about Turing machines is, according to mathematicians, taking place inside ZFC.
2021-09-27 23:15:56 +0200 <monochrom> But next time "people should worry more about overflow and underflow" appears on haskell-cafe, is it OK to ping you to go and tell them "I haven't seen a need for more than 128 bits"? >:)
2021-09-27 23:15:59 +0200 <geekosaur> mostly it uses CReal but there are a few places it has to "downcast" to Integer
2021-09-27 23:16:57 +0200 <alzgh> where's the repository of ghci?
2021-09-27 23:17:09 +0200 <geekosaur> ghci is part of ghc
2021-09-27 23:17:14 +0200Robin_Jadoul(~Robin_Jad@152.67.64.160)
2021-09-27 23:17:19 +0200 <alzgh> Oh, OK
2021-09-27 23:17:25 +0200 <geekosaur> so it's on gitlab.haskell.org/ghc
2021-09-27 23:17:43 +0200 <geekosaur> there used to be a standalone sandbox for ghci but it's way out of date :(
2021-09-27 23:18:54 +0200 <geekosaur> (it was also a proof of concept for splitting ghci from ghc but they decided against because it needs to change every time ghc-api does and keeping separate repos in sync that way sucks)
2021-09-27 23:19:15 +0200 <monochrom> dolio: Is that analogous to: there are countable models of ZFC, and yet we use ZFC to prove that uncountability exists?
2021-09-27 23:19:26 +0200 <alzgh> I guess compiling ghc is a monster
2021-09-27 23:19:26 +0200 <dolio> Hmmm...
2021-09-27 23:20:31 +0200 <monochrom> To be fair, cardinality forgets a lot of interesting structures. It may not be a useful measure in the first place.
2021-09-27 23:20:48 +0200 <dolio> I think those are kind of different.
2021-09-27 23:22:15 +0200lavaman(~lavaman@98.38.249.169)
2021-09-27 23:22:51 +0200 <shiraeeshi[m]> alzgh: here is a link to info about building ghc: https://gitlab.haskell.org/ghc/ghc/-/wikis/building
2021-09-27 23:23:12 +0200 <alzgh> shiraeeshi[m]: thanks fren
2021-09-27 23:23:26 +0200MQ-17J(~MQ-17J@ip-99-203-15-239.pools.cgn.spcsdns.net) (Ping timeout: 245 seconds)
2021-09-27 23:25:10 +0200 <geekosaur> it's not lightweight
2021-09-27 23:25:17 +0200 <dolio> I guess the similarity is this. As long as you can describe a Turing machine to be executed in the total language, and your runtime executes that Turing machine, you are not seriously limited by the theory not recognizing that the Turing machine calculates a total function. And as long as it can describe a set you want, it doesn't matter that it thinks it's uncountable, when in the model you're thinking about, everything is countable.
2021-09-27 23:25:19 +0200 <geekosaur> I can't even build it on my laptop
2021-09-27 23:26:48 +0200tromp(~textual@dhcp-077-249-230-040.chello.nl)
2021-09-27 23:27:03 +0200 <dolio> In the latter case, it just means that 'uncountable' has a more interesting meaning than mathematicians usually think it does.
2021-09-27 23:27:54 +0200 <alzgh> https://gitlab.haskell.org/ghc/ghc/-/wikis/team-ghc list of contributors at the end should be updated. It's up to 2018 only
2021-09-27 23:28:20 +0200 <geekosaur> that might go to #ghc
2021-09-27 23:28:51 +0200MQ-17J(~MQ-17J@d192-24-122-179.try.wideopenwest.com)
2021-09-27 23:29:36 +0200 <geekosaur> oh, you might also want to select a specific branch; I think the general instructions assume you're building HEAD which would get you some ghc 9.3 prerelease
2021-09-27 23:29:52 +0200 <geekosaur> whereas you may want to experiment with 9.1 or 8.10.7
2021-09-27 23:31:41 +0200 <alzgh> ghc master is 8.10.7, iirc
2021-09-27 23:31:46 +0200 <alzgh> or was at least last week
2021-09-27 23:31:55 +0200 <geekosaur> in particular I think HEAD has a build issue currently
2021-09-27 23:32:56 +0200 <alzgh> I made 2 very small patches to the docs and it took forever for the ci/cd to build and never succeeded
2021-09-27 23:33:12 +0200lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2021-09-27 23:37:06 +0200tromp(~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2021-09-27 23:37:55 +0200 <monochrom> This line of thought inspires me to turn the "I haven't seen a need for more than 64 bits" argument around.
2021-09-27 23:38:23 +0200 <monochrom> I haven't seen anyone willing to wait for termination if the terminate means waiting for more than 2^64 seconds.
2021-09-27 23:38:50 +0200 <monochrom> Does it really help to know that a language is total?
2021-09-27 23:39:50 +0200 <monochrom> As opposed to: Just knowing that your algorithm takes at most 2^64 steps for all input sizes below 2^64 bits? Or even just 64 bits?
2021-09-27 23:40:35 +0200 <monochrom> Because by this point you shouldn't even care about really arbitrarily large input sizes.
2021-09-27 23:41:52 +0200 <monochrom> Hell, in fact, s/willing/able/
2021-09-27 23:42:14 +0200 <[exa]> this always reminds me that the computers have limited memory so luckily everything there can be decided to be total or not in finite time. :]
2021-09-27 23:42:31 +0200 <monochrom> save for Dorian Gray, vampires, and Guinan. :)
2021-09-27 23:42:50 +0200lavaman(~lavaman@98.38.249.169)
2021-09-27 23:43:10 +0200 <[exa]> 2^64 CPU cycles can be done in practice now though, you better bump your integers. :]
2021-09-27 23:44:09 +0200tromp(~textual@dhcp-077-249-230-040.chello.nl)
2021-09-27 23:45:41 +0200 <monochrom> OK, to be fair, people care about totality for safety, not efficiency. They want to avoid "head []".
2021-09-27 23:46:01 +0200 <Franciman> is nowaways Text.ParserCombinators.ReadP from the base package still used?
2021-09-27 23:46:05 +0200 <Franciman> or is it legacy?
2021-09-27 23:46:22 +0200 <sshine> Franciman, probably mostly for teaching.
2021-09-27 23:46:27 +0200 <monochrom> This means that, instead, you should have/make a theory that doesn't lump "instant crash" and "runs forever" into the same thing.
2021-09-27 23:46:37 +0200 <Franciman> oh I see
2021-09-27 23:48:45 +0200 <monochrom> I don't even think that ReadP was much used or much taught in the past.
2021-09-27 23:49:15 +0200son0p(~ff@181.136.122.143)
2021-09-27 23:49:16 +0200 <monochrom> But it looks like many standard Read instances use it internally.
2021-09-27 23:50:56 +0200wroathe(~wroathe@user/wroathe) (Ping timeout: 245 seconds)
2021-09-27 23:51:37 +0200 <sshine> we used it at my local university
2021-09-27 23:51:52 +0200 <sshine> along with Parse
2021-09-27 23:51:53 +0200 <sshine> c
2021-09-27 23:51:58 +0200 <dolio> monochrom: There are situations you're not thinking about.
2021-09-27 23:52:14 +0200 <sshine> as far as I recall, ReadP was used as a practical example of list monads.
2021-09-27 23:52:59 +0200 <segfaultfizzbuzz> i mean,... from my persepctive maybe it's worth explicitly labeling functions an non-total and using them sparingly,... but maybe i don't know what i am talking about
2021-09-27 23:53:20 +0200 <dolio> You can have an algorithm that is only 'safe' if some proposition is proved. And you could write a proof that takes 2^64 seconds to normalize fully. But you might not need to normalize it to know that it constitutes a witness that the dependent algorithm is safe.
2021-09-27 23:54:28 +0200 <monochrom> Hey I'm a fan of that! I keep reminding people "you don't actually run every proof as a program, do you?"
2021-09-27 23:54:28 +0200MQ-17J(~MQ-17J@d192-24-122-179.try.wideopenwest.com) (Read error: Connection reset by peer)
2021-09-27 23:54:42 +0200 <sshine> segfaultfizzbuzz, I have at least one internal fixpoint function that I'm not totally sure is total if fed the wrong things. and then I wrap it so that that doesn't happen. I'm happy I don't have to prove anything. :-D
2021-09-27 23:55:14 +0200MQ-17J(~MQ-17J@d192-24-122-179.try.wideopenwest.com)
2021-09-27 23:55:45 +0200tromp(~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2021-09-27 23:57:42 +0200wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-09-27 23:57:42 +0200wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Changing host)
2021-09-27 23:57:42 +0200wroathe(~wroathe@user/wroathe)
2021-09-27 23:57:59 +0200 <dolio> It's also true that essentially no type theory is a practical bottleneck for what people do with computers, though, because you can just do induction on some extremely large natural number as part of your can-only-be-done-by-Turing-machines algorithm, and the computer will break before the algorithm stops because it reached 0.
2021-09-27 23:58:18 +0200 <dolio> Because Turing machines aren't real.
2021-09-27 23:58:39 +0200 <sshine> 🤯
2021-09-27 23:58:51 +0200geranim0(~geranim0@modemcable242.171-178-173.mc.videotron.ca)