Home liberachat/#haskell: Logs Calendar

Logs on 2022-07-19 (liberachat/#haskell)

00:00:04 × AlexZenon quits (~alzenon@178.34.160.206) (*.net *.split)
00:00:04 × John_Ivan quits (~John_Ivan@user/john-ivan/x-1515935) (*.net *.split)
00:00:04 × Pickchea quits (~private@user/pickchea) (*.net *.split)
00:00:04 × NaturalNumber quits (~monadam@137.229.82.64) (*.net *.split)
00:00:04 × dolio quits (~dolio@130.44.130.54) (*.net *.split)
00:00:04 × tzh quits (~tzh@c-24-21-73-154.hsd1.or.comcast.net) (*.net *.split)
00:00:05 × kmein quits (~weechat@user/kmein) (*.net *.split)
00:00:05 × marquis_andras quits (~marquis_a@202-161-119-113.tpgi.com.au) (*.net *.split)
00:00:05 × byorgey quits (~byorgey@155.138.238.211) (*.net *.split)
00:00:05 × inversed quits (~inversed@05412f44.skybroadband.com) (*.net *.split)
00:00:05 × gawen quits (~gawen@user/gawen) (*.net *.split)
00:00:05 × sayola quits (~sayola@dslb-088-078-152-210.088.078.pools.vodafone-ip.de) (*.net *.split)
00:00:05 × Benzi-Junior quits (~BenziJuni@88-149-67-162.du.xdsl.is) (*.net *.split)
00:00:05 × Igloo quits (~ian@matrix.chaos.earth.li) (*.net *.split)
00:00:05 × heath quits (~heath@user/heath) (*.net *.split)
00:00:05 × cross quits (~cross@spitfire.i.gajendra.net) (*.net *.split)
00:00:05 × jjhoo quits (~jahakala@user/jjhoo) (*.net *.split)
00:00:05 × Goodbye_Vincent quits (cyvahl@freakshells.net) (*.net *.split)
00:00:05 × FragByte quits (~christian@user/fragbyte) (*.net *.split)
00:00:05 × fryguybob quits (~fryguybob@cpe-74-67-169-145.rochester.res.rr.com) (*.net *.split)
00:00:05 × aforemny quits (~aforemny@static.248.158.34.188.clients.your-server.de) (*.net *.split)
00:00:05 × Square quits (~a@user/square) (*.net *.split)
00:00:05 × kaol quits (~kaol@94-237-42-30.nl-ams1.upcloud.host) (*.net *.split)
00:00:05 × Guest1698 quits (~Guest1698@20.83.116.49) (*.net *.split)
00:00:05 × Patternmaster quits (~georg@user/Patternmaster) (*.net *.split)
00:00:05 × xstill_ quits (xstill@fimu/xstill) (*.net *.split)
00:00:05 × shane_ quits (~shane@ana.rch.ist) (*.net *.split)
00:00:05 × statusfailed quits (~statusfai@statusfailed.com) (*.net *.split)
00:00:05 × djanatyn1 quits (~djanatyn@vps-7f49a6b0.vps.ovh.ca) (*.net *.split)
00:00:05 × tomsmeding quits (~tomsmedin@static.21.109.88.23.clients.your-server.de) (*.net *.split)
00:00:05 × orcus quits (~orcus@user/brprice) (*.net *.split)
00:00:05 × kawen quits (~quassel@static.208.191.216.95.clients.your-server.de) (*.net *.split)
00:00:05 × niko quits (niko@libera/staff/niko) (*.net *.split)
00:00:05 × infinity0 quits (~infinity0@185.112.146.113) (*.net *.split)
00:00:05 × sajith quits (~sajith@user/sajith) (*.net *.split)
00:00:05 × tired quits (~tired@user/tired) (*.net *.split)
00:00:06 × Hecate quits (~mariposa@user/hecate) (*.net *.split)
00:00:06 × hltk quits (~hltk@hltk.fi) (*.net *.split)
00:00:06 × Heffalump quits (~ganesh@urchin.earth.li) (*.net *.split)
00:00:06 × Unode quits (~Unode@194.94.44.220) (*.net *.split)
00:00:06 × eagleflo quits (~aku@163.172.137.34) (*.net *.split)
00:00:06 × ouroboros quits (~ouroboros@user/ouroboros) (*.net *.split)
00:00:17 byorgey joins (~byorgey@155.138.238.211)
00:00:19 Patternmaster joins (~georg@li1192-118.members.linode.com)
00:00:20 Benzi-Junior joins (~BenziJuni@dsl-149-67-162.hive.is)
00:00:20 Unode joins (~Unode@194.94.44.220)
00:00:22 Heffalump joins (~ganesh@urchin.earth.li)
00:00:22 Pickchea joins (~private@185.31.55.18.dyn.kraftcom.at)
00:00:23 FragByte joins (~christian@p200300f4c702350000197deb46927975.dip0.t-ipconnect.de)
00:00:23 AlexZenon joins (~alzenon@178.34.160.206)
00:00:26 djanatyn1 joins (~djanatyn@vps-7f49a6b0.vps.ovh.ca)
00:00:28 Goodbye_Vincent joins (cyvahl@freakshells.net)
00:00:28 tzh joins (~tzh@c-24-21-73-154.hsd1.or.comcast.net)
00:00:29 NaturalNumber joins (~monadam@137.229.82.64)
00:00:40 cross joins (~cross@spitfire.i.gajendra.net)
00:00:41 × Pickchea quits (~private@185.31.55.18.dyn.kraftcom.at) (Changing host)
00:00:41 Pickchea joins (~private@user/pickchea)
00:00:41 × FragByte quits (~christian@p200300f4c702350000197deb46927975.dip0.t-ipconnect.de) (Changing host)
00:00:41 FragByte joins (~christian@user/fragbyte)
00:00:44 Guest1698 joins (~Guest1698@20.83.116.49)
00:00:47 inversed joins (~inversed@05412f44.skybroadband.com)
00:00:50 dolio joins (~dolio@130.44.130.54)
00:00:52 × Patternmaster quits (~georg@li1192-118.members.linode.com) (Changing host)
00:00:52 Patternmaster joins (~georg@user/Patternmaster)
00:00:55 aforemny joins (~aforemny@static.248.158.34.188.clients.your-server.de)
00:01:54 John_Ivan joins (~John_Ivan@user/john-ivan/x-1515935)
00:02:12 infinity0 joins (~infinity0@185.112.146.113)
00:02:14 × John_Ivan quits (~John_Ivan@user/john-ivan/x-1515935) (Remote host closed the connection)
00:02:16 tired joins (~tired@user/tired)
00:02:26 tomsmeding joins (~tomsmedin@2a01:4f8:c0c:5e5e::2)
00:02:27 Square joins (~a@user/square)
00:02:33 ouroboros joins (~ouroboros@user/ouroboros)
00:02:44 sajith joins (~sajith@user/sajith)
00:02:45 John_Ivan joins (~John_Ivan@user/john-ivan/x-1515935)
00:02:47 gawen joins (~gawen@user/gawen)
00:02:53 orcus joins (~orcus@user/brprice)
00:02:57 heath joins (~heath@user/heath)
00:02:58 xstill_ joins (xstill@fimu/xstill)
00:02:59 kawen joins (~quassel@static.208.191.216.95.clients.your-server.de)
00:03:11 × ChaiTRex quits (~ChaiTRex@user/chaitrex) (Remote host closed the connection)
00:03:16 kmein joins (~weechat@user/kmein)
00:04:41 ChaiTRex joins (~ChaiTRex@user/chaitrex)
00:04:57 sayola joins (~sayola@dslb-088-078-152-210.088.078.pools.vodafone-ip.de)
00:05:11 kaol joins (~kaol@94-237-42-30.nl-ams1.upcloud.host)
00:05:11 Igloo joins (~ian@matrix.chaos.earth.li)
00:05:13 shane joins (~shane@ana.rch.ist)
00:05:16 statusfailed joins (~statusfai@statusfailed.com)
00:05:16 hltk joins (~hltk@hltk.fi)
00:05:17 Hecate joins (~mariposa@user/hecate)
00:05:22 jjhoo joins (jahakala@user/jjhoo)
00:05:25 fryguybob joins (~fryguybob@cpe-74-67-169-145.rochester.res.rr.com)
00:05:32 eagleflo joins (~aku@163.172.137.34)
00:05:34 marquis_andras joins (~marquis_a@202-161-119-113.tpgi.com.au)
00:06:31 phma joins (phma@2001:5b0:211b:a238:1bda:2a18:c8e3:5e16)
00:07:53 × jpds1 quits (~jpds@gateway/tor-sasl/jpds) (Remote host closed the connection)
00:08:23 jpds1 joins (~jpds@gateway/tor-sasl/jpds)
00:09:30 × Morrow_ quits (~Morrow@192.114.91.213) (Read error: Connection reset by peer)
00:09:36 Morrow joins (~Morrow@192.114.91.213)
00:17:27 merijn joins (~merijn@c-001-001-002.client.esciencecenter.eduvpn.nl)
00:17:39 nate4 joins (~nate@98.45.169.16)
00:20:45 × segfaultfizzbuzz quits (~segfaultf@157-131-253-58.fiber.dynamic.sonic.net) (Ping timeout: 276 seconds)
00:22:25 × nate4 quits (~nate@98.45.169.16) (Ping timeout: 260 seconds)
00:27:29 lemonsni- joins (~lemonsnic@cpc159519-perr18-2-0-cust114.19-1.cable.virginm.net)
00:28:27 × lemonsnicks quits (~lemonsnic@cpc159519-perr18-2-0-cust114.19-1.cable.virginm.net) (Ping timeout: 272 seconds)
00:30:25 niko joins (niko@libera/staff/niko)
00:33:17 segfaultfizzbuzz joins (~segfaultf@157-131-253-58.fiber.dynamic.sonic.net)
00:33:40 nehsou^ joins (~nehsou@12.187.69.131)
00:34:06 gleostocha joins (~runic@104-182-236-205.lightspeed.sntcca.sbcglobal.net)
00:44:10 × machinedgod quits (~machinedg@d172-219-86-154.abhsia.telus.net) (Ping timeout: 240 seconds)
00:46:42 Haskelytic joins (~Haskelyti@118.179.211.17)
00:47:54 × xff0x quits (~xff0x@2405:6580:b080:900:1300:28ff:6b85:b3ee) (Ping timeout: 272 seconds)
00:52:20 × merijn quits (~merijn@c-001-001-002.client.esciencecenter.eduvpn.nl) (Ping timeout: 272 seconds)
00:53:30 × nehsou^ quits (~nehsou@12.187.69.131) (Ping timeout: 268 seconds)
00:56:19 × pgass quits (~pg@190.247.245.154) (Ping timeout: 272 seconds)
00:59:13 × matthewmosior quits (~matthewmo@173.170.253.91) (Ping timeout: 244 seconds)
01:01:11 × NaturalNumber quits (~monadam@137.229.82.64) (Quit: Have a nice day)
01:02:05 × waleee quits (~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340) (Ping timeout: 260 seconds)
01:02:06 × zaquest quits (~notzaques@5.130.79.72) (Remote host closed the connection)
01:04:07 jmdaemon joins (~jmdaemon@user/jmdaemon)
01:08:52 chomwitt joins (~chomwitt@2a02:587:dc00:5a00:598f:68ae:c905:7332)
01:09:38 NaturalNumber joins (~monadam@137.229.82.64)
01:10:42 × segfaultfizzbuzz quits (~segfaultf@157-131-253-58.fiber.dynamic.sonic.net) (Ping timeout: 272 seconds)
01:10:48 × albet70 quits (~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection)
01:11:07 × Pickchea quits (~private@user/pickchea) (Quit: Leaving)
01:15:09 zaquest joins (~notzaques@5.130.79.72)
01:16:55 albet70 joins (~xxx@2400:8902::f03c:92ff:fe60:98d8)
01:19:34 × gleostocha quits (~runic@104-182-236-205.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 272 seconds)
01:29:33 xff0x joins (~xff0x@125x103x176x34.ap125.ftth.ucom.ne.jp)
01:34:21 segfaultfizzbuzz joins (~segfaultf@157-131-253-58.fiber.dynamic.sonic.net)
01:34:22 nightbreak[Away] is now known as nightbreak
01:36:32 matthewmosior joins (~matthewmo@173.170.253.91)
01:36:43 × winny quits (~weechat@user/winny) (Remote host closed the connection)
01:37:14 winny joins (~weechat@user/winny)
01:38:28 × dextaa quits (~DV@user/dextaa) (Read error: Connection reset by peer)
01:39:28 <Haskelytic> how do you typically model is-a relation between types like in trad OOP?
01:40:02 nehsou^ joins (~nehsou@12.187.69.131)
01:40:45 dextaa joins (~DV@user/dextaa)
01:40:50 × y04nn quits (~y04nn@2001:ac8:28:95::a17e) (Ping timeout: 240 seconds)
01:42:19 × John_Ivan quits (~John_Ivan@user/john-ivan/x-1515935) (Read error: Connection reset by peer)
01:42:39 × NaturalNumber quits (~monadam@137.229.82.64) (Quit: Have a nice day)
01:43:13 <c_wraith> Haskelytic: same way as in OOP. ignore subclassing because it's broken, and use composition.
01:43:39 <Haskelytic> XD  thought so
01:45:00 <c_wraith> OOP-like ideas come up sometimes when you want values with arbitrarily different behaviors that all have the same nominal type. For that you usually end up doing a record-of-functions thing.
01:47:59 merijn joins (~merijn@c-001-001-002.client.esciencecenter.eduvpn.nl)
01:52:07 × natto17 quits (~natto@140.238.225.67) (Quit: a.)
01:52:13 <monochrom> I thought is-a is between a class/interface and an object, between a type and a value.
01:52:59 natto joins (~natto@140.238.225.67)
01:54:35 frost joins (~frost@user/frost)
01:54:51 <c_wraith> is-a is also used to describe the subclassing relationship. a rectange is a shape, etc
01:55:16 <c_wraith> Except of course all those easy examples break down really fast when you try to actually write code like that.
01:55:29 <c_wraith> but that's what object-oriented modeling wants you to think about
01:59:18 × segfaultfizzbuzz quits (~segfaultf@157-131-253-58.fiber.dynamic.sonic.net) (Ping timeout: 240 seconds)
02:00:54 × lys quits (sid194105@user/lys) ()
02:02:40 jakalx parts (~jakalx@base.jakalx.net) (Error from remote client)
02:04:07 jakalx joins (~jakalx@base.jakalx.net)
02:04:20 lottaquestions joins (~nick@2607:fa49:503e:7100:9456:dbb2:33e5:f0a2)
02:06:30 nightbreak is now known as nightbreak[Away]
02:07:31 × winny quits (~weechat@user/winny) (Ping timeout: 268 seconds)
02:08:08 × azimut quits (~azimut@gateway/tor-sasl/azimut) (Ping timeout: 268 seconds)
02:08:33 azimut joins (~azimut@gateway/tor-sasl/azimut)
02:09:35 kino-shinkai joins (~kino-shin@user/kino-shinkai)
02:09:41 winny joins (~weechat@user/winny)
02:11:38 × chomwitt quits (~chomwitt@2a02:587:dc00:5a00:598f:68ae:c905:7332) (Ping timeout: 240 seconds)
02:12:38 × Morrow quits (~Morrow@192.114.91.213) (Read error: Connection reset by peer)
02:12:43 Morrow_ joins (~Morrow@192.114.91.213)
02:22:54 × merijn quits (~merijn@c-001-001-002.client.esciencecenter.eduvpn.nl) (Ping timeout: 272 seconds)
02:22:56 × dextaa quits (~DV@user/dextaa) (Read error: Connection reset by peer)
02:24:56 chomwitt joins (~chomwitt@2a02:587:dc00:5a00:8a2c:4e72:ccb9:e678)
02:25:12 dextaa joins (~DV@user/dextaa)
02:29:44 nasosev joins (~nasosev@193-116-244-197.tpgi.com.au)
02:32:18 × nasosev quits (~nasosev@193-116-244-197.tpgi.com.au) (Client Quit)
02:32:33 nasosev joins (~nasosev@193-116-244-197.tpgi.com.au)
02:34:01 × nasosev quits (~nasosev@193-116-244-197.tpgi.com.au) (Client Quit)
02:34:15 naso joins (~nasosev@193-116-244-197.tpgi.com.au)
02:36:30 NaturalNumber joins (~monadam@137.229.82.64)
02:40:37 × matthewmosior quits (~matthewmo@173.170.253.91) (Ping timeout: 244 seconds)
02:42:52 × [itchyjunk] quits (~itchyjunk@user/itchyjunk/x-7353470) (Read error: Connection reset by peer)
02:48:24 × zebrag quits (~chris@user/zebrag) (Quit: Konversation terminated!)
02:49:53 × nehsou^ quits (~nehsou@12.187.69.131) (Ping timeout: 255 seconds)
02:51:14 × jao quits (~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net) (Ping timeout: 255 seconds)
02:53:13 × Me-me quits (~me-me@user/me-me) (Quit: Disconnecting on purpose.)
02:53:28 biberu\ joins (~biberu@user/biberu)
02:54:05 Me-me joins (~me-me@tunnel690570-pt.tunnel.tserv12.mia1.ipv6.he.net)
02:54:57 × Me-me quits (~me-me@tunnel690570-pt.tunnel.tserv12.mia1.ipv6.he.net) (Changing host)
02:54:57 Me-me joins (~me-me@user/me-me)
02:56:50 × td_ quits (~td@94.134.91.5) (Ping timeout: 240 seconds)
02:57:24 × biberu quits (~biberu@user/biberu) (Ping timeout: 276 seconds)
02:57:24 biberu\ is now known as biberu
02:58:09 nightbreak[Away] is now known as nightbreak
02:58:54 td_ joins (~td@muedsl-82-207-238-145.citykom.de)
03:00:26 nehsou^ joins (~nehsou@12.187.69.131)
03:09:22 matthewmosior joins (~matthewmo@173.170.253.91)
03:10:39 × Haskelytic quits (~Haskelyti@118.179.211.17) (Quit: Client closed)
03:13:23 brence joins (~brence@2a01:4b00:895f:3d00:ddcd:fb62:887c:2ea0)
03:13:41 × matthewmosior quits (~matthewmo@173.170.253.91) (Ping timeout: 244 seconds)
03:18:31 merijn joins (~merijn@c-001-001-002.client.esciencecenter.eduvpn.nl)
03:23:02 × kino-shinkai quits (~kino-shin@user/kino-shinkai) (Quit: The Lounge - https://thelounge.chat)
03:24:50 kino-shinkai joins (~kino-shin@user/kino-shinkai)
03:28:16 matthewmosior joins (~matthewmo@173.170.253.91)
03:35:17 × mon_aaraj quits (~MonAaraj@user/mon-aaraj/x-4416475) (Ping timeout: 272 seconds)
03:36:34 mon_aaraj joins (~MonAaraj@user/mon-aaraj/x-4416475)
03:42:53 <qrpnxz> okay, this is epic: https://hackage.haskell.org/package/diffarray
03:42:57 <yin> c_wraith: how is subtyping broken?
03:43:49 <Clinton[m]> How can I write a function with the following signature? I feel like I should be able to do this but I'm just tying myself in knots a bit:... (full message at https://libera.ems.host/_matrix/media/r0/download/libera.chat/18f826d2b7e8b77db9230eb5eb154ef41aa5f6fc)
03:45:18 × chomwitt quits (~chomwitt@2a02:587:dc00:5a00:8a2c:4e72:ccb9:e678) (Ping timeout: 240 seconds)
03:46:14 × azimut quits (~azimut@gateway/tor-sasl/azimut) (Remote host closed the connection)
03:46:15 × bitdex quits (~bitdex@gateway/tor-sasl/bitdex) (Remote host closed the connection)
03:46:15 × califax quits (~califax@user/califx) (Write error: Connection reset by peer)
03:46:15 × adanwan quits (~adanwan@gateway/tor-sasl/adanwan) (Remote host closed the connection)
03:46:15 × jpds1 quits (~jpds@gateway/tor-sasl/jpds) (Remote host closed the connection)
03:46:29 nightbreak is now known as nightbreak[Away]
03:46:30 nightbreak[Away] is now known as nightbreak
03:46:33 adanwan joins (~adanwan@gateway/tor-sasl/adanwan)
03:46:41 jpds1 joins (~jpds@gateway/tor-sasl/jpds)
03:47:00 nightbreak is now known as nightbreak[Away]
03:47:19 bitdex joins (~bitdex@gateway/tor-sasl/bitdex)
03:47:33 califax joins (~califax@user/califx)
03:49:12 azimut joins (~azimut@gateway/tor-sasl/azimut)
03:50:02 <qrpnxz> Clinton[m]: g = getOp . contramap (\(p :: Proxy (Maybe p)) -> Proxy :: p) . Op . fmap Just
03:50:27 <qrpnxz> needs ScopedTypeVariables
03:50:39 <jackdk> `g f x =Just $ f Proxy`?
03:50:55 <qrpnxz> bye bye x?
03:51:20 <jackdk> returning the Maybe seems dubious
03:51:34 <qrpnxz> oh lol yeah i guess you can do that
03:52:26 × mon_aaraj quits (~MonAaraj@user/mon-aaraj/x-4416475) (Ping timeout: 255 seconds)
03:52:36 <jackdk> `g' :: (Proxy a -> s) -> Proxy (Maybe a) -> s`; `g' f x = f Proxy` the fact that there's a `Maybe` in the second proxy adds no value-level information so you'll always be able to return an `s`
03:52:38 × merijn quits (~merijn@c-001-001-002.client.esciencecenter.eduvpn.nl) (Ping timeout: 240 seconds)
03:54:36 mon_aaraj joins (~MonAaraj@user/mon-aaraj/x-4416475)
03:56:08 × brence quits (~brence@2a01:4b00:895f:3d00:ddcd:fb62:887c:2ea0) (Ping timeout: 252 seconds)
03:58:56 nightbreak[Away] is now known as nightbreak
04:05:56 merijn joins (~merijn@c-001-001-002.client.esciencecenter.eduvpn.nl)
04:08:32 chomwitt joins (~chomwitt@2a02:587:dc00:5a00:e3c4:775f:d866:7dfa)
04:10:38 × merijn quits (~merijn@c-001-001-002.client.esciencecenter.eduvpn.nl) (Ping timeout: 240 seconds)
04:11:00 × adanwan quits (~adanwan@gateway/tor-sasl/adanwan) (Remote host closed the connection)
04:11:41 adanwan joins (~adanwan@gateway/tor-sasl/adanwan)
04:16:06 × Morrow_ quits (~Morrow@192.114.91.213) (Read error: Connection reset by peer)
04:16:11 Morrow joins (~Morrow@192.114.91.213)
04:17:35 × NaturalNumber quits (~monadam@137.229.82.64) (Remote host closed the connection)
04:18:05 × Morrow quits (~Morrow@192.114.91.213) (Read error: Connection reset by peer)
04:18:17 Morrow joins (~Morrow@192.114.91.213)
04:19:08 nate4 joins (~nate@98.45.169.16)
04:20:23 × azimut quits (~azimut@gateway/tor-sasl/azimut) (Remote host closed the connection)
04:20:49 azimut joins (~azimut@gateway/tor-sasl/azimut)
04:20:54 Morrow_ joins (~Morrow@192.114.91.213)
04:21:07 × Morrow quits (~Morrow@192.114.91.213) (Read error: Connection reset by peer)
04:21:32 segfaultfizzbuzz joins (~segfaultf@157-131-253-58.fiber.dynamic.sonic.net)
04:21:49 × naso quits (~nasosev@193-116-244-197.tpgi.com.au) ()
04:24:20 × nate4 quits (~nate@98.45.169.16) (Ping timeout: 268 seconds)
04:27:20 <Clinton[m]> Thank you, but I think I'm stuck on something again:... (full message at https://libera.ems.host/_matrix/media/r0/download/libera.chat/688906a3c5b59f65156a8b18d4a70bdf374707f7)
04:28:02 × Morrow_ quits (~Morrow@192.114.91.213) (Ping timeout: 268 seconds)
04:31:34 × matthewmosior quits (~matthewmo@173.170.253.91) (Ping timeout: 244 seconds)
04:36:12 <Clinton[m]> Can I somehow split the instance? One instance for `(s :: Just Symbol)` and the other for `(s :: Nothing)`? This kind stuff I is twisting my mind a bit.
04:40:21 michalz joins (~michalz@185.246.204.77)
04:43:38 matthewmosior joins (~matthewmo@173.170.253.91)
04:43:41 <qrpnxz> Clinton[m]: i would write a KnownMaybeSymbol class and define instance for Maybe Symbol and Nothing to extract the value
04:45:26 <Clinton[m]> Ah good idea. I just found out spliting the instance works fine also. Like:... (full message at https://libera.ems.host/_matrix/media/r0/download/libera.chat/b635f05045e5e0e29703d04c807550ad2d0c840a)
04:46:35 <qrpnxz> ah yeah that'll do
05:05:52 <qrpnxz> anyone have intuition/experience with traversals on cyclic data? I'm guessing it probably is not a Lawful traversal, but I'm wondering how a derived instance would behave.
05:06:57 merijn joins (~merijn@c-001-001-002.client.esciencecenter.eduvpn.nl)
05:07:09 yauhsien joins (~yauhsien@61-231-22-68.dynamic-ip.hinet.net)
05:08:26 redmp joins (~redmp@mobile-166-137-179-070.mycingular.net)
05:10:00 × segfaultfizzbuzz quits (~segfaultf@157-131-253-58.fiber.dynamic.sonic.net) (Ping timeout: 260 seconds)
05:12:08 <qrpnxz> i write the instance just the same and works, since it would be lawful if it wasn't cyclic, also when it is cyclic? I never heard of a traversal law of "except when cyclic" lol
05:12:13 zxx7529 joins (~Thunderbi@user/zxx7529)
05:13:40 × yauhsien quits (~yauhsien@61-231-22-68.dynamic-ip.hinet.net) (Ping timeout: 268 seconds)
05:14:18 mbuf joins (~Shakthi@122.165.55.71)
05:25:30 _ht joins (~quassel@231-169-21-31.ftth.glasoperator.nl)
05:26:07 × vglfr quits (~vglfr@coupling.penchant.volia.net) (Ping timeout: 272 seconds)
05:29:22 nightbreak is now known as nightbreak[Away]
05:29:56 <qrpnxz> ok so i did a test and i can feed a cyclic into a zipper, but if i modify the focus, that modification doesn't extend into the cycles. That makes sense since that would require actually mutation, but what we see is just a brand new data now pointing to the old data
05:32:27 × mvk quits (~mvk@2607:fea8:5ce3:8500::909a) (Ping timeout: 272 seconds)
05:35:30 × foul_owl quits (~kerry@23.82.194.109) (Ping timeout: 240 seconds)
05:38:33 NaturalNumber joins (~monadam@137.229.82.64)
05:40:05 foul_owl joins (~kerry@174-21-132-202.tukw.qwest.net)
05:40:18 × merijn quits (~merijn@c-001-001-002.client.esciencecenter.eduvpn.nl) (Ping timeout: 240 seconds)
05:41:19 <qrpnxz> now, if i made the cyclic references themselves the targets of the traversal i think i'll be getting somewhere... :)
05:42:31 × kino-shinkai quits (~kino-shin@user/kino-shinkai) (Remote host closed the connection)
05:44:34 takuan joins (~takuan@178-116-218-225.access.telenet.be)
05:44:53 × matthewmosior quits (~matthewmo@173.170.253.91) (Ping timeout: 255 seconds)
05:56:40 kino-shinkai joins (~kino-shin@user/kino-shinkai)
05:57:53 × ChaiTRex quits (~ChaiTRex@user/chaitrex) (Remote host closed the connection)
05:59:45 littlebobeep joins (~alMalsamo@gateway/tor-sasl/almalsamo)
06:00:45 ChaiTRex joins (~ChaiTRex@user/chaitrex)
06:02:12 × winny quits (~weechat@user/winny) (Remote host closed the connection)
06:02:38 × littlebobeep quits (~alMalsamo@gateway/tor-sasl/almalsamo) (Remote host closed the connection)
06:02:40 winny joins (~weechat@user/winny)
06:04:21 × kino-shinkai quits (~kino-shin@user/kino-shinkai) (Remote host closed the connection)
06:04:55 littlebobeep joins (~alMalsamo@gateway/tor-sasl/almalsamo)
06:10:49 acidjnk_new3 joins (~acidjnk@p200300d6e70586378c7d9ef9e9e8454b.dip0.t-ipconnect.de)
06:12:03 × bliminse quits (~bliminse@user/bliminse) (Quit: leaving)
06:12:51 gmg joins (~user@user/gehmehgeh)
06:13:39 matthewmosior joins (~matthewmo@173.170.253.91)
06:15:10 × redmp quits (~redmp@mobile-166-137-179-070.mycingular.net) (Quit: leaving)
06:17:05 × NaturalNumber quits (~monadam@137.229.82.64) (Remote host closed the connection)
06:19:58 kino-shinkai joins (~kino-shin@user/kino-shinkai)
06:22:23 NaturalNumber joins (~monadam@137.229.82.64)
06:30:53 mmhat joins (~mmh@p200300f1c7055987ee086bfffe095315.dip0.t-ipconnect.de)
06:31:18 × foul_owl quits (~kerry@174-21-132-202.tukw.qwest.net) (Ping timeout: 240 seconds)
06:35:49 alternateved joins (~user@staticline-31-183-144-54.toya.net.pl)
06:37:15 merijn joins (~merijn@c-001-001-002.client.esciencecenter.eduvpn.nl)
06:38:02 fserucas_ joins (~fserucas@39.64.114.89.rev.vodafone.pt)
06:40:33 × dtman34 quits (~dtman34@2601:446:4400:2ad9:50de:fed7:560f:d711) (Quit: ZNC 1.7.2+deb3 - https://znc.in)
06:42:14 × sus quits (zero@user/zeromomentum) (Quit: the lounge - https://webirc.envs.net)
06:42:47 dtman34 joins (~dtman34@2601:446:4400:2ad9:d18c:aab6:fc87:3dca)
06:44:35 sus joins (zero@user/zeromomentum)
06:45:22 foul_owl joins (~kerry@23.82.194.107)
06:47:37 × zxx7529 quits (~Thunderbi@user/zxx7529) (Quit: zxx7529)
06:48:19 dtman34_ joins (~dtman34@c-73-62-246-247.hsd1.mn.comcast.net)
06:48:54 × dtman34 quits (~dtman34@2601:446:4400:2ad9:d18c:aab6:fc87:3dca) (Ping timeout: 272 seconds)
06:51:03 ccntrq joins (~Thunderbi@2a02:3100:70f0:db00:7397:6a5e:7236:7fcd)
06:51:23 × ccntrq quits (~Thunderbi@2a02:3100:70f0:db00:7397:6a5e:7236:7fcd) (Remote host closed the connection)
06:51:24 × mon_aaraj quits (~MonAaraj@user/mon-aaraj/x-4416475) (Ping timeout: 276 seconds)
06:52:23 MajorBiscuit joins (~MajorBisc@86-88-79-148.fixed.kpn.net)
06:52:40 mon_aaraj joins (~MonAaraj@user/mon-aaraj/x-4416475)
06:54:53 ccntrq joins (~Thunderbi@2a02:3100:70f0:db00:d79a:be3f:a1fd:ac0d)
06:56:37 × Sgeo quits (~Sgeo@user/sgeo) (Read error: Connection reset by peer)
06:58:05 Major_Biscuit joins (~MajorBisc@c-001-019-019.client.tudelft.eduvpn.nl)
07:00:21 × MajorBiscuit quits (~MajorBisc@86-88-79-148.fixed.kpn.net) (Ping timeout: 268 seconds)
07:01:20 cfricke joins (~cfricke@user/cfricke)
07:02:25 <qrpnxz> if i use references, carry around the environment, and rebuild that environment on modification, i can zip around while making globally visible changes it seems
07:02:40 <qrpnxz> no idea if this is a valid traversal but it works with zipper so... lol
07:03:27 <qrpnxz> "value in context" perhaps i should be using comonad? Is this finally the moment?!
07:06:18 × NaturalNumber quits (~monadam@137.229.82.64) (Quit: Have a nice day)
07:11:19 × toluene quits (~toluene@user/toulene) (Quit: Ping timeout (120 seconds))
07:12:12 × merijn quits (~merijn@c-001-001-002.client.esciencecenter.eduvpn.nl) (Ping timeout: 276 seconds)
07:14:17 toluene joins (~toluene@user/toulene)
07:16:54 × matthewmosior quits (~matthewmo@173.170.253.91) (Ping timeout: 244 seconds)
07:25:24 Neuromancer joins (~Neuromanc@user/neuromancer)
07:25:30 merijn joins (~merijn@c-001-001-002.client.esciencecenter.eduvpn.nl)
07:27:07 zeenk joins (~zeenk@2a02:2f04:a311:2d00:6865:d863:4c93:799f)
07:28:04 jakalx parts (~jakalx@base.jakalx.net) ()
07:30:14 matthewmosior joins (~matthewmo@173.170.253.91)
07:30:43 jakalx joins (~jakalx@base.jakalx.net)
07:32:56 × nehsou^ quits (~nehsou@12.187.69.131) (Ping timeout: 255 seconds)
07:34:00 maroloccio joins (~marolocci@37.100.36.239)
07:34:41 × matthewmosior quits (~matthewmo@173.170.253.91) (Ping timeout: 255 seconds)
07:36:28 dcoutts joins (~duncan@host86-167-206-10.range86-167.btcentralplus.com)
07:38:21 <Axman6> qrpnxz: can you detect that you have cycles?
07:41:54 <qrpnxz> hypothetically, yes. I could tag each node with a unique id then do some pointer chasing
07:43:22 xerox__ is now known as xerox
07:47:07 matthewmosior joins (~matthewmo@173.170.253.91)
07:51:52 coot joins (~coot@213.134.190.95)
07:53:12 × matthewmosior quits (~matthewmo@173.170.253.91) (Ping timeout: 244 seconds)
07:54:33 y04nn joins (~y04nn@2001:ac8:28:95::a17e)
07:56:48 naso joins (~nasosev@193-116-244-197.tpgi.com.au)
07:56:51 × infinity0 quits (~infinity0@185.112.146.113) (Ping timeout: 272 seconds)
07:58:25 × naso quits (~nasosev@193-116-244-197.tpgi.com.au) (Client Quit)
07:58:42 naso joins (~nasosev@193-116-244-197.tpgi.com.au)
07:59:17 chele joins (~chele@user/chele)
07:59:36 machinedgod joins (~machinedg@d172-219-86-154.abhsia.telus.net)
07:59:39 × naso quits (~nasosev@193-116-244-197.tpgi.com.au) (Client Quit)
08:01:26 naso joins (~naso@193-116-244-197.tpgi.com.au)
08:05:27 kazaf joins (~kazaf@84.252.147.246)
08:07:59 × coot quits (~coot@213.134.190.95) (Quit: coot)
08:08:58 × shriekingnoise quits (~shrieking@201.212.175.181) (Quit: Quit)
08:14:28 gurkenglas joins (~gurkengla@dslb-002-203-144-112.002.203.pools.vodafone-ip.de)
08:14:50 kuribas joins (~user@silversquare.silversquare.eu)
08:15:42 bliminse joins (~bliminse@user/bliminse)
08:16:56 segfaultfizzbuzz joins (~segfaultf@157-131-253-58.fiber.dynamic.sonic.net)
08:17:27 <kuribas> I finished my Hkd record of lenses implementation, but it's pretty convoluted.
08:18:13 <kuribas> The problem is that I need a (forall g :: (k -> *) . Rep (t g)), but that's not possible because Rep is a type family, and I cannot partially apply it.
08:18:42 <kuribas> So instead I box it in an existential, then unsafely extract it.
08:18:53 <kuribas> I don't think that's very efficient.
08:19:55 <kuribas> I suppose a template haskell implementation will be more straightforward.
08:19:57 <kuribas> And efficient.
08:20:10 coot joins (~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba)
08:20:40 nate4 joins (~nate@98.45.169.16)
08:20:58 × segfaultfizzbuzz quits (~segfaultf@157-131-253-58.fiber.dynamic.sonic.net) (Ping timeout: 240 seconds)
08:22:34 <[exa]> kuribas: how would you partially apply Rep there? (it has only 1 param right?)
08:23:33 matthewmosior joins (~matthewmo@173.170.253.91)
08:23:56 <kuribas> [exa]: but the `g` is unknown.
08:24:08 <[exa]> ah you know `t` but not `g`?
08:24:14 <kuribas> yeah
08:24:27 <[exa]> can you make some wrap SplitRep t g where you could deduce something from `t` ?
08:25:12 <kuribas> I have "newtype FLens s a = FLens { getFLens :: forall g . Lens' (g a) (s g)}"
08:25:18 × nate4 quits (~nate@98.45.169.16) (Ping timeout: 240 seconds)
08:25:24 <kuribas> Then a (t (Flens t))
08:25:33 × eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:2da3:f583:8579:9c6f) (Remote host closed the connection)
08:26:08 × talismanick quits (~talismani@2601:200:c100:3850::dd64) (Ping timeout: 268 seconds)
08:26:38 <kuribas> The g cannot be deduced, because it works for any g.
08:27:40 <[exa]> ah I see
08:27:45 <[exa]> ,_,
08:27:45 <tomsmeding> % :k (forall g. GHC.Generics.Rep (Maybe g)) -- kuribas
08:27:46 <yahb2> (forall g. GHC.Generics.Rep (Maybe g)) -- kuribas :: * -> *
08:27:57 <tomsmeding> Not sure what about this doesn't work
08:28:14 × matthewmosior quits (~matthewmo@173.170.253.91) (Ping timeout: 255 seconds)
08:28:16 Tuplanolla joins (~Tuplanoll@91-159-69-97.elisa-laajakaista.fi)
08:29:26 <tomsmeding> Or you mean that Rep doesn't simplify for unknown g because its expansion depends on g?
08:29:35 <kuribas> yes
08:29:44 × Kaiepi quits (~Kaiepi@156.34.47.253) (Read error: Connection reset by peer)
08:30:10 <tomsmeding> Type families that don't simplify aren't necessarily a problem in and of themselves, right?
08:30:26 <tomsmeding> As long as eventually, at a usage site, it becomes monomorphic
08:30:44 <kuribas> tomsmeding: not in my type signature.
08:31:02 <kuribas> (t (Flens t)) is polymorphic at the usage site.
08:31:23 <kuribas> tomsmeding: but I could make a version that would monomorphise.
08:31:27 × toluene quits (~toluene@user/toulene) (Quit: Ping timeout (120 seconds))
08:32:11 <tomsmeding> If you need to inspect the output of Rep somehow, e.g. because you want to put constraints on it, then I see why it might not work
08:32:13 <kuribas> tomsmeding: but then wouldn't that create a new lens for each `g`?
08:32:32 <tomsmeding> I mean, a polymorphic value _is_ a function from a type to a value
08:32:38 <kuribas> The problem is that `g` is here not known at runtime.
08:32:56 toluene joins (~toluene@user/toulene)
08:32:58 <kuribas> so the `Rep (t g)` isn't known either, and the typeclasses don't resolve.
08:33:08 <tomsmeding> Right, typeclasses
08:33:14 <tomsmeding> That's where it goes wrong
08:33:21 <tomsmeding> You're not partially applying anything
08:33:35 <tomsmeding> The issue is indeed that type classes need to get resolved statically
08:33:51 <tomsmeding> Or, s/is indeed/could indeed well be/
08:34:14 <kuribas> tomsmeding: I am partly apply FLens
08:34:45 <tomsmeding> Right
08:34:56 <tomsmeding> But you can partially apply newtypes, just not type families :)
08:35:01 <tomsmeding> But I see the issue now
08:35:09 <kuribas> which needs to go through the Generics.
08:35:48 vglfr joins (~vglfr@coupling.penchant.volia.net)
08:36:26 <tomsmeding> The source of my questioning was that sometimes, knowing that this thing is the representation of this other thing is sufficient to make everything typecheck, even if "this other thing" is completely unknown
08:36:42 <tomsmeding> But your situation is not one of those "sometimes" :)
08:37:28 <kuribas> tomsmeding: you're right that i could remove the `forall g`, and make a set of lenses for a specific `g`.
08:38:02 <kuribas> I just thought it would be inefficient, because it needs to create a monomorphic version for each `g`.
08:38:14 <kuribas> But then maybe with inlining etc that's fine.
08:38:17 <tomsmeding> It would always anyway, right?
08:38:35 <kuribas> yeah, maybe that's my mistake.
08:38:38 <tomsmeding> Because in core, a polymorphic value is a function from a type to the corresponding monomorphic value
08:38:58 <kuribas> I don't know how ghc handles polymoprhic funtions at runtime.
08:38:59 <tomsmeding> This is why MonomorphismRestriction exists
08:39:07 <kuribas> maybe it has a generic representation of values?
08:39:13 <kuribas> like a void pointer.
08:39:32 <tomsmeding> Because if you had `let x = 10 in x + x` where x :: Num a => a, then x might be evaluated twice there
08:40:02 <kuribas> right
08:40:23 <tomsmeding> Now in that case it's really a function that takes a typeclass dictionary, and I'm not sure it can happen in the absence of constraints
08:40:50 <tomsmeding> Yeah I believe that "void pointer" is the whole point of lifted values
08:41:05 <tomsmeding> They have a uniform representation on the heap
08:41:18 <tomsmeding> So I'm probably wrong, and this is only an issue if there are typeclass dicts involved
08:41:26 <tomsmeding> Because that => is really a function
08:42:30 × Patternmaster quits (~georg@user/Patternmaster) (Ping timeout: 240 seconds)
08:42:56 <kuribas> right, so the best solution now is to remove the forall g, and make lenses specific for a `g`.
08:43:11 × kino-shinkai quits (~kino-shin@user/kino-shinkai) (Quit: The Lounge - https://thelounge.chat)
08:43:30 Patternmaster joins (~georg@user/Patternmaster)
08:43:32 <kuribas> then there is no need for a generic representation.
08:44:01 kino-shinkai joins (~kino-shin@user/kino-shinkai)
08:44:13 <tomsmeding> This uniform lifted representation is also why this is not allowed https://play-haskell.tomsmeding.com/play/paste/3oecS2Tt/1
08:44:53 <kuribas> yes, and why I needed to wrap in an existential.
08:45:18 <tomsmeding> Mehs all around :p
08:45:43 <kuribas> funny how types often simplify greatly if you take a different approach.
08:46:06 <kuribas> I think that's why lispers don't like types, you cannot just implement any crazy idea :)
08:46:34 arahael1 joins (~arahael@60-240-61-30.tpgi.com.au)
08:46:42 <kuribas> But I find that the types guide you towards a solution that is more consistent, often also saner.
08:47:26 <tomsmeding> As people like monochrom like to say: they require you to actually think about what you're doing, to an extent
08:47:58 × arahael quits (~arahael@118.211.185.62) (Ping timeout: 272 seconds)
08:48:03 arahael1 is now known as arahael
08:48:32 <kuribas> think about the model
08:49:57 <kuribas> I often see in lisp code that shows `how` to do things, but not `what` thing are, how they compose, etc...
08:50:36 <kuribas> those are described by the types.
08:51:13 segfaultfizzbuzz joins (~segfaultf@157-131-253-58.fiber.dynamic.sonic.net)
08:51:21 × kino-shinkai quits (~kino-shin@user/kino-shinkai) (Ping timeout: 268 seconds)
08:51:26 × azimut quits (~azimut@gateway/tor-sasl/azimut) (Ping timeout: 268 seconds)
08:55:40 × segfaultfizzbuzz quits (~segfaultf@157-131-253-58.fiber.dynamic.sonic.net) (Ping timeout: 268 seconds)
08:58:24 matthewmosior joins (~matthewmo@173.170.253.91)
09:00:08 × luke-clifton[m] quits (~luke-clif@2001:470:69fc:105::2:3122) (Quit: You have been kicked for being idle)
09:00:33 × thewaves quits (~thewaves@2001:470:69fc:105::2:2eef) (Quit: You have been kicked for being idle)
09:00:40 × Yehoshua quits (~yehoshua@2001:470:69fc:105::1:593f) (Quit: You have been kicked for being idle)
09:00:45 × reza[m] quits (~rezaphone@2001:470:69fc:105::3eda) (Quit: You have been kicked for being idle)
09:00:47 × boxscape quits (~boxscape@user/boxscape) (Quit: You have been kicked for being idle)
09:01:40 <kuribas> Usually being "stuck" by types is enlightening.
09:01:54 reza[m] joins (~rezaphone@2001:470:69fc:105::3eda)
09:01:54 Yehoshua joins (~yehoshua@2001:470:69fc:105::1:593f)
09:01:54 <kuribas> Because it shows a new path for development.
09:01:54 thewaves joins (~thewaves@2001:470:69fc:105::2:2eef)
09:02:08 boxscape joins (~boxscape@user/boxscape)
09:02:37 <tomsmeding> Lispers will say that's stockholm syndrome :)
09:03:05 <kuribas> yeah, and focussing on a language feature instead of the business logic.
09:03:37 thewaves parts (~thewaves@2001:470:69fc:105::2:2eef) ()
09:04:01 Yehoshua parts (~yehoshua@2001:470:69fc:105::1:593f) ()
09:04:13 reza[m] parts (~rezaphone@2001:470:69fc:105::3eda) ()
09:04:20 boxscape parts (~boxscape@user/boxscape) ()
09:05:18 × ccntrq quits (~Thunderbi@2a02:3100:70f0:db00:d79a:be3f:a1fd:ac0d) (Quit: ccntrq)
09:05:34 ccntrq joins (~Thunderbi@dynamic-078-050-043-144.78.50.pool.telefonica.de)
09:06:10 <kuribas> But how I see it is that you gain insight in the business logic and the relations.
09:06:50 × y04nn quits (~y04nn@2001:ac8:28:95::a17e) (Ping timeout: 260 seconds)
09:07:07 × tzh quits (~tzh@c-24-21-73-154.hsd1.or.comcast.net) (Quit: zzz)
09:08:25 dschrempf joins (~dominik@2a01-036d-0118-4212-c433-bd85-0bb7-3c00.pool6.digikabel.hu)
09:15:27 ccntrq1 joins (~Thunderbi@2a02:3100:70f0:db00:df27:9986:c8dc:f583)
09:16:08 Pickchea joins (~private@user/pickchea)
09:17:52 × ccntrq quits (~Thunderbi@dynamic-078-050-043-144.78.50.pool.telefonica.de) (Ping timeout: 268 seconds)
09:17:52 ccntrq1 is now known as ccntrq
09:18:47 causal joins (~user@50.35.83.177)
09:20:16 × motherfsck quits (~motherfsc@user/motherfsck) (Ping timeout: 272 seconds)
09:25:40 kino-shinkai joins (~kino-shin@user/kino-shinkai)
09:25:56 eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:2da3:f583:8579:9c6f)
09:27:24 × mmhat quits (~mmh@p200300f1c7055987ee086bfffe095315.dip0.t-ipconnect.de) (Ping timeout: 276 seconds)
09:28:32 __monty__ joins (~toonn@user/toonn)
09:31:02 × eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:2da3:f583:8579:9c6f) (Ping timeout: 272 seconds)
09:31:40 × jmdaemon quits (~jmdaemon@user/jmdaemon) (Ping timeout: 272 seconds)
09:33:06 motherfsck joins (~motherfsc@user/motherfsck)
09:33:38 × dschrempf quits (~dominik@2a01-036d-0118-4212-c433-bd85-0bb7-3c00.pool6.digikabel.hu) (Ping timeout: 240 seconds)
09:37:01 y04nn joins (~y04nn@2001:ac8:28:95::a17e)
09:37:26 × cheater quits (~Username@user/cheater) (Ping timeout: 244 seconds)
09:40:36 mmhat joins (~mmh@p200300f1c70559dfee086bfffe095315.dip0.t-ipconnect.de)
09:42:57 segfaultfizzbuzz joins (~segfaultf@157-131-253-58.fiber.dynamic.sonic.net)
09:43:35 × hnOsmium0001 quits (uid453710@user/hnOsmium0001) (Quit: Connection closed for inactivity)
09:44:18 mc47 joins (~mc47@xmonad/TheMC47)
09:44:28 × littlebobeep quits (~alMalsamo@gateway/tor-sasl/almalsamo) (Ping timeout: 268 seconds)
09:46:11 <romes[m]> is there a reason why deriving (Eq1, Ord1) isn’t available?
09:46:50 <merijn> Why would they be?
09:47:28 × segfaultfizzbuzz quits (~segfaultf@157-131-253-58.fiber.dynamic.sonic.net) (Ping timeout: 268 seconds)
09:52:18 raehik joins (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
09:59:24 × econo quits (uid147250@user/econo) (Quit: Connection closed for inactivity)
10:02:48 <jackdk> https://hackage.haskell.org/package/deriving-compat-0.6.1/docs/Data-Eq-Deriving-Internal.html#v:deriveEq1
10:03:02 <jackdk> https://hackage.haskell.org/package/deriving-compat-0.6.1/docs/Data-Ord-Deriving-Internal.html#v:deriveOrd1
10:05:10 cheater joins (~Username@user/cheater)
10:05:58 yauhsien joins (~yauhsien@61-231-22-68.dynamic-ip.hinet.net)
10:06:22 × matthewmosior quits (~matthewmo@173.170.253.91) (Ping timeout: 244 seconds)
10:07:16 lisbeths joins (uid135845@id-135845.lymington.irccloud.com)
10:10:58 × yauhsien quits (~yauhsien@61-231-22-68.dynamic-ip.hinet.net) (Ping timeout: 268 seconds)
10:17:27 × geekosaur quits (~geekosaur@xmonad/geekosaur) (Ping timeout: 272 seconds)
10:18:32 × xff0x quits (~xff0x@125x103x176x34.ap125.ftth.ucom.ne.jp) (Ping timeout: 272 seconds)
10:18:38 × coot quits (~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba) (Ping timeout: 240 seconds)
10:18:47 geekosaur joins (~geekosaur@xmonad/geekosaur)
10:19:08 dschrempf joins (~dominik@2a01-036d-0118-4212-d780-b5a7-1f7c-1a85.pool6.digikabel.hu)
10:19:21 coot joins (~coot@213.134.190.95)
10:19:36 matthewmosior joins (~matthewmo@173.170.253.91)
10:20:10 littlebobeep joins (~alMalsamo@gateway/tor-sasl/almalsamo)
10:20:19 × vglfr quits (~vglfr@coupling.penchant.volia.net) (Ping timeout: 244 seconds)
10:20:48 eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:2da3:f583:8579:9c6f)
10:21:42 × Pickchea quits (~private@user/pickchea) (Ping timeout: 272 seconds)
10:24:58 × eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:2da3:f583:8579:9c6f) (Ping timeout: 240 seconds)
10:30:43 Midjak joins (~Midjak@82.66.147.146)
10:32:30 × notzmv quits (~zmv@user/notzmv) (Ping timeout: 240 seconds)
10:33:19 segfaultfizzbuzz joins (~segfaultf@157-131-253-58.fiber.dynamic.sonic.net)
10:33:48 × califax quits (~califax@user/califx) (Remote host closed the connection)
10:34:15 califax joins (~califax@user/califx)
10:36:06 × y04nn quits (~y04nn@2001:ac8:28:95::a17e) (Ping timeout: 264 seconds)
10:36:15 CiaoSen joins (~Jura@p200300c9570ffb002a3a4dfffe84dbd5.dip0.t-ipconnect.de)
10:38:10 × segfaultfizzbuzz quits (~segfaultf@157-131-253-58.fiber.dynamic.sonic.net) (Ping timeout: 272 seconds)
10:41:31 × hueso quits (~root@user/hueso) (Ping timeout: 272 seconds)
10:41:55 × cyphase_eviltwin quits (~cyphase@user/cyphase) (Ping timeout: 260 seconds)
10:43:12 cyphase_eviltwin joins (~cyphase@user/cyphase)
10:44:30 × mon_aaraj quits (~MonAaraj@user/mon-aaraj/x-4416475) (Ping timeout: 272 seconds)
10:46:07 mon_aaraj joins (~MonAaraj@user/mon-aaraj/x-4416475)
10:46:56 × coot quits (~coot@213.134.190.95) (Quit: coot)
10:47:58 × geekosaur quits (~geekosaur@xmonad/geekosaur) (Ping timeout: 240 seconds)
10:48:13 geekosaur joins (~geekosaur@xmonad/geekosaur)
10:53:45 Kaiepi joins (~Kaiepi@156.34.47.253)
10:54:49 × mon_aaraj quits (~MonAaraj@user/mon-aaraj/x-4416475) (Ping timeout: 272 seconds)
10:56:27 mon_aaraj joins (~MonAaraj@user/mon-aaraj/x-4416475)
10:57:38 <romes[m]> jackdk: indeed, i’m using that at the moment, but was wondering why GHC doesn’t support it like Eq and Ord
10:59:15 × CiaoSen quits (~Jura@p200300c9570ffb002a3a4dfffe84dbd5.dip0.t-ipconnect.de) (Ping timeout: 272 seconds)
10:59:37 <merijn> Eq and Ord a trivial to define mechanically, not really sure that's true for Eq1 and Ord1
11:01:10 Pickchea joins (~private@user/pickchea)
11:10:46 notzmv joins (~zmv@user/notzmv)
11:10:48 hellwolf joins (~hellwolf@7-41-50-84.sta.estpak.ee)
11:12:31 <jackdk> Eq and Ord were in the report, I think Eq1 etc were invented back when people wanted to keep closer to Haskell98. But that was before my time.
11:14:39 xff0x joins (~xff0x@2405:6580:b080:900:604b:7f6a:615b:55d0)
11:15:25 × frost quits (~frost@user/frost) (Quit: Client closed)
11:17:35 vglfr joins (~vglfr@coupling.penchant.volia.net)
11:17:57 × mc47 quits (~mc47@xmonad/TheMC47) (Remote host closed the connection)
11:18:50 × mon_aaraj quits (~MonAaraj@user/mon-aaraj/x-4416475) (Ping timeout: 255 seconds)
11:19:50 × dschrempf quits (~dominik@2a01-036d-0118-4212-d780-b5a7-1f7c-1a85.pool6.digikabel.hu) (Ping timeout: 260 seconds)
11:19:53 frost joins (~frost@user/frost)
11:20:47 mon_aaraj joins (~MonAaraj@user/mon-aaraj/x-4416475)
11:23:26 iamgarp is now known as CAT_S
11:23:41 mastarija joins (~mastarija@2a05:4f46:e02:8c00:c16d:6f16:8e31:78a1)
11:24:38 × matthewmosior quits (~matthewmo@173.170.253.91) (Ping timeout: 255 seconds)
11:33:25 cyanide3dinner joins (~cyanide4d@2402:e280:2149:513:931b:41cb:2a7e:791d)
11:36:56 × kazaf quits (~kazaf@84.252.147.246) (Remote host closed the connection)
11:37:14 kazaf joins (~kazaf@84.252.147.246)
11:37:48 pretty_dumm_guy joins (trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655)
11:39:45 matthewmosior joins (~matthewmo@173.170.253.91)
11:43:00 andscape joins (~andscape@ti0185a400-0748.bb.online.no)
11:43:17 cyanide4breakfas joins (~cyanide4d@2402:e280:2149:513:931b:41cb:2a7e:791d)
11:44:26 hueso joins (~root@user/hueso)
11:44:42 × machinedgod quits (~machinedg@d172-219-86-154.abhsia.telus.net) (Ping timeout: 268 seconds)
11:48:25 eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:2da3:f583:8579:9c6f)
11:50:01 × cyanide4breakfas quits (~cyanide4d@2402:e280:2149:513:931b:41cb:2a7e:791d) (Quit: Leaving)
11:51:13 machinedgod joins (~machinedg@d172-219-86-154.abhsia.telus.net)
11:53:20 × eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:2da3:f583:8579:9c6f) (Ping timeout: 268 seconds)
11:56:28 y04nn joins (~y04nn@2001:ac8:28:95::a17e)
11:59:58 × mon_aaraj quits (~MonAaraj@user/mon-aaraj/x-4416475) (Ping timeout: 240 seconds)
12:04:52 lortabac joins (~lortabac@37.101.134.31)
12:08:37 <troydm> how can I force foldl to be strict?
12:09:07 <Franciman> troydm: foldl'
12:09:09 <Franciman> :t foldl'
12:09:10 <lambdabot> Foldable t => (b -> a -> b) -> b -> t a -> b
12:09:17 <Franciman> it is strict in the accumulator
12:09:43 <troydm> Variable not in scope
12:10:15 <troydm> I'm using GHC 9.0.2
12:10:19 <geekosaur> @index foldl'
12:10:19 <lambdabot> Data.Foldable, Data.List, GHC.OldList, Data.ByteString.Lazy.Char8, Data.ByteString.Lazy, Data.ByteString.Char8, Data.ByteString, Data.IntMap.Strict, Data.IntMap.Lazy, Data.IntMap, Data.IntSet, Data.
12:10:19 <lambdabot> Map.Lazy, Data.Map.Strict, Data.Map, Data.Set
12:10:29 <geekosaur> you want Data.Foldable
12:10:33 <geekosaur> it's not in Prelude
12:11:15 <troydm> ahh okey
12:11:17 <troydm> thx
12:11:21 × kazaf quits (~kazaf@84.252.147.246) (Remote host closed the connection)
12:12:29 mon_aaraj joins (~MonAaraj@user/mon-aaraj/x-4416475)
12:13:51 kazaf joins (~kazaf@94.180.63.53)
12:15:40 kenran joins (~kenran@200116b82bc6b100b80672891718c9cf.dip.versatel-1u1.de)
12:17:03 infinity0 joins (~infinity0@185.112.146.113)
12:18:28 × kazaf quits (~kazaf@94.180.63.53) (Ping timeout: 252 seconds)
12:19:58 dschrempf joins (~dominik@94-21-158-143.pool.digikabel.hu)
12:21:33 zxx7529 joins (~Thunderbi@user/zxx7529)
12:22:10 nate4 joins (~nate@98.45.169.16)
12:23:33 × kenran quits (~kenran@200116b82bc6b100b80672891718c9cf.dip.versatel-1u1.de) (Ping timeout: 276 seconds)
12:24:59 × mon_aaraj quits (~MonAaraj@user/mon-aaraj/x-4416475) (Ping timeout: 255 seconds)
12:26:37 kazaf joins (~kazaf@94.180.63.53)
12:26:50 mon_aaraj joins (~MonAaraj@user/mon-aaraj/x-4416475)
12:27:17 × nate4 quits (~nate@98.45.169.16) (Ping timeout: 272 seconds)
12:28:17 eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:2da3:f583:8579:9c6f)
12:31:13 coot joins (~coot@213.134.190.95)
12:31:18 × kazaf quits (~kazaf@94.180.63.53) (Ping timeout: 252 seconds)
12:32:45 × eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:2da3:f583:8579:9c6f) (Ping timeout: 260 seconds)
12:36:22 yauhsien joins (~yauhsien@61-231-22-68.dynamic-ip.hinet.net)
12:39:09 × bitdex quits (~bitdex@gateway/tor-sasl/bitdex) (Quit: = "")
12:39:24 pgass joins (~pg@190.247.245.154)
12:41:22 × yauhsien quits (~yauhsien@61-231-22-68.dynamic-ip.hinet.net) (Ping timeout: 268 seconds)
12:42:55 × matthewmosior quits (~matthewmo@173.170.253.91) (Ping timeout: 244 seconds)
12:43:58 × cyanide3dinner quits (~cyanide4d@2402:e280:2149:513:931b:41cb:2a7e:791d) (Remote host closed the connection)
12:46:01 wootehfoot joins (~wootehfoo@user/wootehfoot)
12:46:35 × cfricke quits (~cfricke@user/cfricke) (Ping timeout: 255 seconds)
12:47:15 × wootehfoot quits (~wootehfoo@user/wootehfoot) (Max SendQ exceeded)
12:47:59 wootehfoot joins (~wootehfoo@user/wootehfoot)
12:54:43 × maroloccio quits (~marolocci@37.100.36.239) (Quit: WeeChat 3.0)
12:59:08 waleee joins (~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340)
12:59:17 lys_ joins (~lys@user/lys)
13:07:47 matthewmosior joins (~matthewmo@173.170.253.91)
13:08:54 bontaq joins (~user@ool-45779fe5.dyn.optonline.net)
13:12:11 × matthewmosior quits (~matthewmo@173.170.253.91) (Ping timeout: 255 seconds)
13:13:43 matthewmosior joins (~matthewmo@173.170.253.91)
13:14:07 jao joins (~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net)
13:15:17 × dschrempf quits (~dominik@94-21-158-143.pool.digikabel.hu) (Ping timeout: 268 seconds)
13:15:56 eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:2da3:f583:8579:9c6f)
13:16:42 dschrempf joins (~dominik@94-21-158-143.pool.digikabel.hu)
13:16:58 × mon_aaraj quits (~MonAaraj@user/mon-aaraj/x-4416475) (Ping timeout: 240 seconds)
13:17:54 × lys_ quits (~lys@user/lys) (Quit: Leaving)
13:19:15 mon_aaraj joins (~MonAaraj@user/mon-aaraj/x-4416475)
13:21:07 × eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:2da3:f583:8579:9c6f) (Ping timeout: 272 seconds)
13:29:38 lys joins (sid194105@user/lys)
13:30:40 × matthewmosior quits (~matthewmo@173.170.253.91) (Remote host closed the connection)
13:30:46 matthewmosior joins (~matthewmo@173.170.253.91)
13:35:26 × zxx7529 quits (~Thunderbi@user/zxx7529) (Quit: zxx7529)
13:40:18 segfaultfizzbuzz joins (~segfaultf@157-131-253-58.fiber.dynamic.sonic.net)
13:42:37 × matthewmosior quits (~matthewmo@173.170.253.91) (Remote host closed the connection)
13:43:29 × dextaa quits (~DV@user/dextaa) (Read error: Connection reset by peer)
13:44:54 × winny quits (~weechat@user/winny) (Remote host closed the connection)
13:45:11 × segfaultfizzbuzz quits (~segfaultf@157-131-253-58.fiber.dynamic.sonic.net) (Ping timeout: 272 seconds)
13:45:26 winny joins (~weechat@user/winny)
13:45:42 dextaa joins (~DV@user/dextaa)
13:46:02 × dextaa quits (~DV@user/dextaa) (Read error: Connection reset by peer)
13:47:20 × kuribas quits (~user@silversquare.silversquare.eu) (Remote host closed the connection)
13:48:19 dextaa joins (~DV@user/dextaa)
13:48:39 × dextaa quits (~DV@user/dextaa) (Read error: Connection reset by peer)
13:48:44 matthewmosior joins (~matthewmo@173.170.253.91)
13:50:16 × matthewmosior quits (~matthewmo@173.170.253.91) (Remote host closed the connection)
13:50:56 dextaa joins (~DV@user/dextaa)
13:51:42 × Pickchea quits (~private@user/pickchea) (Ping timeout: 264 seconds)
13:58:58 matthewmosior joins (~matthewmo@173.170.253.91)
14:03:08 × matthewmosior quits (~matthewmo@173.170.253.91) (Ping timeout: 244 seconds)
14:07:39 × pavonia quits (~user@user/siracusa) (Quit: Bye!)
14:08:56 Sgeo joins (~Sgeo@user/sgeo)
14:09:12 × andscape quits (~andscape@ti0185a400-0748.bb.online.no) (Ping timeout: 252 seconds)
14:13:24 × lys quits (sid194105@user/lys) (Quit: sleep)
14:14:05 lys joins (sid194105@id-194105.uxbridge.irccloud.com)
14:14:54 × lys quits (sid194105@id-194105.uxbridge.irccloud.com) (Changing host)
14:14:54 lys joins (sid194105@user/lys)
14:18:11 cfricke joins (~cfricke@user/cfricke)
14:20:35 × dschrempf quits (~dominik@94-21-158-143.pool.digikabel.hu) (Quit: WeeChat 3.5)
14:30:18 segfaultfizzbuzz joins (~segfaultf@157-131-253-58.fiber.dynamic.sonic.net)
14:30:23 × kritzefitz quits (~kritzefit@debian/kritzefitz) (Ping timeout: 244 seconds)
14:31:33 kritzefitz joins (~kritzefit@debian/kritzefitz)
14:31:37 matthewmosior joins (~matthewmo@173.170.253.91)
14:34:54 × segfaultfizzbuzz quits (~segfaultf@157-131-253-58.fiber.dynamic.sonic.net) (Ping timeout: 268 seconds)
14:36:05 × matthewmosior quits (~matthewmo@173.170.253.91) (Ping timeout: 244 seconds)
14:38:57 × lys quits (sid194105@user/lys) ()
14:45:02 × hellwolf quits (~hellwolf@7-41-50-84.sta.estpak.ee) (Remote host closed the connection)
14:45:26 hellwolf joins (~hellwolf@7-41-50-84.sta.estpak.ee)
14:45:53 lys joins (sid194105@id-194105.uxbridge.irccloud.com)
14:46:41 kuribas joins (~user@silversquare.silversquare.eu)
14:46:58 × son0p quits (~ff@181.136.122.143) (Ping timeout: 240 seconds)
14:50:47 × lys quits (sid194105@id-194105.uxbridge.irccloud.com) (Changing host)
14:50:47 lys joins (sid194105@user/lys)
14:53:24 × ccntrq quits (~Thunderbi@2a02:3100:70f0:db00:df27:9986:c8dc:f583) (Ping timeout: 272 seconds)
14:53:42 ccntrq1 joins (~Thunderbi@2a01:c22:909c:5f00:dbaf:bba8:c756:e76f)
14:54:28 × dextaa quits (~DV@user/dextaa) (Read error: Connection reset by peer)
14:55:48 × alternateved quits (~user@staticline-31-183-144-54.toya.net.pl) (Ping timeout: 268 seconds)
14:55:54 ccntrq1 is now known as ccntrq
14:56:45 dextaa joins (~DV@user/dextaa)
14:57:03 × dextaa quits (~DV@user/dextaa) (Read error: Connection reset by peer)
14:59:14 dextaa joins (~DV@user/dextaa)
15:00:20 × dextaa quits (~DV@user/dextaa) (Read error: Connection reset by peer)
15:01:23 × dtman34_ quits (~dtman34@c-73-62-246-247.hsd1.mn.comcast.net) (Read error: Connection reset by peer)
15:01:41 dtman34 joins (~dtman34@2601:446:4400:2ad9:d18c:aab6:fc87:3dca)
15:02:26 dextaa joins (~DV@user/dextaa)
15:02:50 × dextaa quits (~DV@user/dextaa) (Read error: Connection reset by peer)
15:04:10 matthewmosior joins (~matthewmo@173.170.253.91)
15:04:15 × coot quits (~coot@213.134.190.95) (Quit: coot)
15:04:54 dextaa joins (~DV@user/dextaa)
15:05:32 shriekingnoise joins (~shrieking@201.212.175.181)
15:05:40 × dextaa quits (~DV@user/dextaa) (Read error: Connection reset by peer)
15:07:48 dextaa joins (~DV@user/dextaa)
15:07:55 × dextaa quits (~DV@user/dextaa) (Read error: Connection reset by peer)
15:08:45 × matthewmosior quits (~matthewmo@173.170.253.91) (Ping timeout: 244 seconds)
15:09:22 × dcoutts quits (~duncan@host86-167-206-10.range86-167.btcentralplus.com) (Ping timeout: 268 seconds)
15:10:08 dextaa joins (~DV@user/dextaa)
15:11:48 coot joins (~coot@213.134.190.95)
15:21:42 × kritzefitz quits (~kritzefit@debian/kritzefitz) (Remote host closed the connection)
15:21:52 segfaultfizzbuzz joins (~segfaultf@157-131-253-58.fiber.dynamic.sonic.net)
15:21:56 kritzefitz joins (~kritzefit@debian/kritzefitz)
15:24:41 tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
15:26:38 × segfaultfizzbuzz quits (~segfaultf@157-131-253-58.fiber.dynamic.sonic.net) (Ping timeout: 268 seconds)
15:26:48 ccntrq1 joins (~Thunderbi@2a01:c22:8521:6a00:8a5e:c335:b76e:d8af)
15:27:10 × ccntrq quits (~Thunderbi@2a01:c22:909c:5f00:dbaf:bba8:c756:e76f) (Ping timeout: 260 seconds)
15:29:30 ccntrq joins (~Thunderbi@2a01:c22:8586:2300:104:3af5:e0c1:639f)
15:29:30 × lortabac quits (~lortabac@37.101.134.31) (Quit: WeeChat 2.8)
15:29:41 × phma quits (phma@2001:5b0:211b:a238:1bda:2a18:c8e3:5e16) (Read error: Connection reset by peer)
15:29:49 × cfricke quits (~cfricke@user/cfricke) (Quit: WeeChat 3.5)
15:30:36 phma joins (phma@2001:5b0:210b:99d8:7aa7:eab5:6b73:863a)
15:31:35 × ccntrq1 quits (~Thunderbi@2a01:c22:8521:6a00:8a5e:c335:b76e:d8af) (Ping timeout: 272 seconds)
15:32:45 zxx7529 joins (~Thunderbi@user/zxx7529)
15:36:00 jakalx parts (~jakalx@base.jakalx.net) ()
15:36:06 jakalx joins (~jakalx@base.jakalx.net)
15:38:05 matthewmosior joins (~matthewmo@173.170.253.91)
15:38:11 segfaultfizzbuzz joins (~segfaultf@157-131-253-58.fiber.dynamic.sonic.net)
15:38:11 × frost quits (~frost@user/frost) (Quit: Client closed)
15:42:12 × matthewmosior quits (~matthewmo@173.170.253.91) (Ping timeout: 244 seconds)
15:44:29 × segfaultfizzbuzz quits (~segfaultf@157-131-253-58.fiber.dynamic.sonic.net) (Remote host closed the connection)
15:44:43 <yin> would brick be a good choice for a 2D ascii game?
15:45:11 segfaultfizzbuzz joins (~segfaultf@157-131-253-58.fiber.dynamic.sonic.net)
15:45:54 <yin> or is it usually better to just use a graphics engine for performance?
15:46:32 <yin> brick looks like it's made more with UIs in mind
15:46:59 × ccntrq quits (~Thunderbi@2a01:c22:8586:2300:104:3af5:e0c1:639f) (Remote host closed the connection)
15:47:00 <geekosaur> brick is a UI built on top of vty
15:47:17 ccntrq joins (~Thunderbi@2a01:c22:8586:2300:104:3af5:e0c1:639f)
15:47:25 <geekosaur> depending on what you're doing, you may want to use vty directly
15:47:40 × y04nn quits (~y04nn@2001:ac8:28:95::a17e) (Ping timeout: 268 seconds)
15:47:58 eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:2da3:f583:8579:9c6f)
15:49:02 <dolio> My impression is that brick might be useful for laying out the game interface, but something like drawing an ascii map might require implementing a more custom widget.
15:49:28 <dolio> But I haven't looked closely.
15:50:54 <yin> ok that's what it seems to me. thanks
15:51:35 <maerwald[m]> yin: https://hackage.haskell.org/package/ansi-terminal-game
15:51:55 × raehik quits (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 268 seconds)
15:54:23 × hueso quits (~root@user/hueso) (Ping timeout: 268 seconds)
15:55:47 × waleee quits (~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340) (Quit: WeeChat 3.6)
15:57:05 matthewmosior joins (~matthewmo@173.170.253.91)
15:57:50 waleee joins (~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340)
15:58:23 hueso joins (~root@user/hueso)
15:59:53 × machinedgod quits (~machinedg@d172-219-86-154.abhsia.telus.net) (Remote host closed the connection)
15:59:53 <sm> +1
16:01:04 machinedgod joins (~machinedg@d172-219-86-154.abhsia.telus.net)
16:02:17 × matthewmosior quits (~matthewmo@173.170.253.91) (Ping timeout: 255 seconds)
16:03:06 <yin> maerwald[m]: nice!
16:03:44 × tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
16:07:41 × machinedgod quits (~machinedg@d172-219-86-154.abhsia.telus.net) (Ping timeout: 272 seconds)
16:09:07 machinedgod joins (~machinedg@d172-219-86-154.abhsia.telus.net)
16:10:31 matthewmosior joins (~matthewmo@173.170.253.91)
16:13:10 × matthewmosior quits (~matthewmo@173.170.253.91) (Remote host closed the connection)
16:13:17 matthewmosior joins (~matthewmo@173.170.253.91)
16:14:18 × segfaultfizzbuzz quits (~segfaultf@157-131-253-58.fiber.dynamic.sonic.net) (Ping timeout: 240 seconds)
16:14:40 × matthewmosior quits (~matthewmo@173.170.253.91) (Remote host closed the connection)
16:14:52 mvk joins (~mvk@2607:fea8:5ce3:8500::909a)
16:15:30 matthewmosior joins (~matthewmo@173.170.253.91)
16:15:58 × mrmr quits (~mrmr@user/mrmr) (Quit: The Lounge - https://thelounge.chat)
16:17:08 × naso quits (~naso@193-116-244-197.tpgi.com.au) ()
16:17:54 × littlebobeep quits (~alMalsamo@gateway/tor-sasl/almalsamo) (Ping timeout: 268 seconds)
16:17:54 <c_wraith> yin: oh, missed your question last night. anyway, I didn't say subtyping is bad. I said subclassing is bad. That's because it conflates subtyping with implementation reuse, when they really should be completely different ideas.
16:18:37 × kuribas quits (~user@silversquare.silversquare.eu) (Remote host closed the connection)
16:23:42 nate4 joins (~nate@98.45.169.16)
16:27:16 × Major_Biscuit quits (~MajorBisc@c-001-019-019.client.tudelft.eduvpn.nl) (Quit: WeeChat 3.5)
16:28:57 razetime joins (~quassel@117.254.35.64)
16:28:59 × nate4 quits (~nate@98.45.169.16) (Ping timeout: 268 seconds)
16:29:09 × superbil quits (~superbil@1-34-176-171.hinet-ip.hinet.net) (*.net *.split)
16:29:50 superbil joins (~superbil@1-34-176-171.hinet-ip.hinet.net)
16:30:29 ccntrq1 joins (~Thunderbi@2a01:c23:9416:ba00:93fe:7a9d:27cd:9383)
16:30:39 × machinedgod quits (~machinedg@d172-219-86-154.abhsia.telus.net) (Remote host closed the connection)
16:31:37 machinedgod joins (~machinedg@d172-219-86-154.abhsia.telus.net)
16:32:24 segfaultfizzbuzz joins (~segfaultf@157-131-253-58.fiber.dynamic.sonic.net)
16:32:30 × ccntrq quits (~Thunderbi@2a01:c22:8586:2300:104:3af5:e0c1:639f) (Ping timeout: 260 seconds)
16:32:30 ccntrq1 is now known as ccntrq
16:36:24 × machinedgod quits (~machinedg@d172-219-86-154.abhsia.telus.net) (Ping timeout: 276 seconds)
16:38:10 × segfaultfizzbuzz quits (~segfaultf@157-131-253-58.fiber.dynamic.sonic.net) (Ping timeout: 268 seconds)
16:39:19 × zxx7529 quits (~Thunderbi@user/zxx7529) (Remote host closed the connection)
16:40:55 slack1256 joins (~slack1256@191.125.227.211)
16:42:19 ccntrq1 joins (~Thunderbi@2a01:c22:886b:9b00:348f:a0ea:8cc:1fef)
16:42:43 segfaultfizzbuzz joins (~segfaultf@157-131-253-58.fiber.dynamic.sonic.net)
16:42:52 kenran joins (~kenran@200116b82bc6b100093795c796f55f58.dip.versatel-1u1.de)
16:43:19 × kenran quits (~kenran@200116b82bc6b100093795c796f55f58.dip.versatel-1u1.de) (Client Quit)
16:44:12 × ccntrq quits (~Thunderbi@2a01:c23:9416:ba00:93fe:7a9d:27cd:9383) (Ping timeout: 276 seconds)
16:44:12 ccntrq1 is now known as ccntrq
16:44:29 × mbuf quits (~Shakthi@122.165.55.71) (Quit: Leaving)
16:45:04 <slack1256> I got a "sum" data type with a `Generic` instance. I would like to simulate a "Bounded" and "Ord" instance to enumarate all possible constructors. I cannot change the data definitions. Is there a easy way to do so? or should I write the function by hand over the Generic repr?
16:51:09 <tomsmeding> slack1256: you can't just add "deriving (Ord, Bounded)"?
16:51:10 Kevin578 joins (~Kevin578@pool-173-76-179-30.bstnma.fios.verizon.net)
16:51:44 <tomsmeding> Or using StandaloneDeriving as a separate declaration: `deriving instance Ord MyDataType`
16:51:51 × lys quits (sid194105@user/lys) ()
16:52:21 lys joins (sid194105@id-194105.uxbridge.irccloud.com)
16:55:25 <slack1256> tomsmeding: I would to avoid add it to the original definition as it is a ADT generated via template-haskell. I can use StandaloneDeriving to define a orphan instance.
16:56:04 <tomsmeding> (if you put the standalone instance in the same module as the (generated) data type declaration, it's not even an orphan)
16:56:31 <slack1256> !!!!!!
16:56:37 <slack1256> You are right!
16:56:48 <slack1256> I don't have to put it on the splice itself. I can put it afterwards.
16:57:26 × ccntrq quits (~Thunderbi@2a01:c22:886b:9b00:348f:a0ea:8cc:1fef) (Remote host closed the connection)
16:57:53 × coot quits (~coot@213.134.190.95) (Quit: coot)
16:59:40 <slack1256> Thank tomsmeding
16:59:55 <tomsmeding> StandaloneDeriving is super useful sometimes
17:00:08 × lys quits (sid194105@id-194105.uxbridge.irccloud.com) (Changing host)
17:00:08 lys joins (sid194105@user/lys)
17:00:38 <slack1256> I had only used it to specify the heads of the deriving instances. This is a new trick for me! :-)
17:01:09 tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
17:02:02 <tomsmeding> I've mostly used it to derive e.g. Show got GADTs, because for some unknown (to me) reason, one cannot put `deriving (Show)` on a GADT declaration directly
17:02:11 <Profpatsch> What’s the easiest way of “enriching” a Monad with a counter that returns how many monadic actions were taken?
17:02:12 <tomsmeding> s/got/for/
17:02:27 <Profpatsch> Just a WriterT (Sum Natural)?
17:02:44 <Profpatsch> But pretty bad from a leaking perspective no?
17:02:59 <tomsmeding> Profpatsch: how many >>= were executed or something more high-level?
17:03:41 <Profpatsch> tomsmeding: just how many m a’s
17:04:06 <Profpatsch> tomsmeding: i.e. f <$> ma <*> mb counts to 2 if both ma and mb have a count of 1
17:04:22 × m1dnight quits (~christoph@78-22-0-121.access.telenet.be) (Ping timeout: 244 seconds)
17:04:31 <tomsmeding> How much does `return () >> return ()` count for?
17:04:37 <Profpatsch> 0
17:05:00 <tomsmeding> And `return 42 >>= \x -> return (x + 1)`?
17:05:37 <Profpatsch> tomsmeding: I think I’m thinking about this wrong
17:05:43 <tomsmeding> If also 0, then I think your only option is WriterT (Sum Natural), and `tell` 1 in each of your primitive monadic actions that _do_ cost
17:05:53 <Profpatsch> tomsmeding: yes, exactly
17:06:09 <Profpatsch> tomsmeding: But would you use a StateT or a WriterT?
17:06:15 <Profpatsch> Afaik WriterT always leaks spaces
17:06:17 <Profpatsch> -s
17:06:18 <tomsmeding> Because then there's no inherent feature in Haskell that determines whether actions cost something or not
17:06:36 <tomsmeding> There is a cps-based writer that is supposed to be better
17:07:09 <Profpatsch> I mean I could put it all in STM or something :)
17:07:18 <c_wraith> note that CPS'd WriterT is the same type as StateT. it just exposes different operations
17:07:19 <tomsmeding> https://hackage.haskell.org/package/transformers-0.6.0.4/docs/Control-Monad-Trans-Writer-CPS.html
17:07:26 <Profpatsch> But this is just for a test
17:07:28 <tomsmeding> Ah
17:07:29 <Profpatsch> so nobody really cares
17:07:36 <Profpatsch> c_wraith: oh that’s pretty cool
17:07:40 <Profpatsch> Will keep that in mind!
17:07:47 <Profpatsch> I guess this should really be the default writer
17:08:32 <Profpatsch> What a bother that the default WriterT exposes its constructor
17:08:36 <Profpatsch> otherwise we could just replace it
17:09:17 <Profpatsch> Why there is no big fat warning in the WriterT documentation at this point is beyond me
17:09:40 <tomsmeding> I mean, there is a warning, it's just very innocuous :p
17:09:43 <c_wraith> the default WriterT is on rare occasion the correct choice - when you want the concatenation to be non-strict
17:09:50 × mon_aaraj quits (~MonAaraj@user/mon-aaraj/x-4416475) (Ping timeout: 255 seconds)
17:10:06 <Profpatsch> c_wraith: it’s not an actual wrapper around StateT btw
17:10:15 <Profpatsch> https://hackage.haskell.org/package/transformers-0.6.0.4/docs/src/Control.Monad.Trans.Writer.CPS.html#WriterT
17:10:16 <tomsmeding> "on rare occasion" does sound like, ideally, it shouldn't have been the default
17:10:18 <Profpatsch> Just isomorphic
17:10:34 <Profpatsch> tomsmeding: Haskell has a lot of things that people only figured out over the years :)
17:10:39 <Profpatsch> Like `return`
17:10:47 <tomsmeding> Profpatsch: both are newtypes, so they are even representationally equal ;)
17:10:49 <c_wraith> err. yes. my phrasing was somewhere in the neighborhood of misleading to wrong
17:11:10 <tomsmeding> Profpatsch: oh for sure, I'm not saying the designers of `transformers` should've known better
17:11:30 <tomsmeding> It would have been nice, but hindsight is cheap
17:11:31 × gff quits (~gff@70.56.148.67) (Quit: WeeChat 3.0)
17:11:40 m1dnight joins (~christoph@78-22-0-121.access.telenet.be)
17:11:43 mon_aaraj joins (~MonAaraj@user/mon-aaraj/x-4416475)
17:11:51 <Profpatsch> tomsmeding: We just have a buncho hlint rules that enforce things like this
17:12:03 gff joins (~gff@user/gff)
17:12:03 <Profpatsch> e.g. one that tells users to not import Data.Map and import Data.Map.Strict instead
17:12:16 <tomsmeding> Oh is that an hlint rule?
17:12:17 <Profpatsch> And now I’m gonna add one for Writer.CPS
17:12:21 <tomsmeding> That's one of the better ones then
17:12:24 <Profpatsch> tomsmeding: only in our codebase
17:12:30 <tomsmeding> Ah :)
17:12:45 <Profpatsch> tomsmeding: But you and me both
17:12:57 <Profpatsch> tomsmeding: https://gist.github.com/Profpatsch/5a41d0283755d573511b08c01ff40148
17:13:28 <Profpatsch> To me it seems like hlint was built to nudge people towards maximally unreadable code :P
17:13:31 <tomsmeding> Profpatsch: line 11 has a missed opportunity for a pun
17:13:43 <Profpatsch> tomsmeding: oh
17:13:44 <Profpatsch> lol
17:14:21 <tomsmeding> Oh man that "Use fmap" thing is so harmful
17:14:42 econo joins (uid147250@user/econo)
17:15:12 <tomsmeding> Where it tells you to change `do x <- long action and stuff ; return (x and more things)` to `(\x -> x and more things) <$> long action and stuff`
17:15:18 <tomsmeding> _no_ that is not more readable
17:15:26 <c_wraith> sometimes I really do want to case on a Book!
17:15:36 <c_wraith> err. Bool. thanks, autocorrect
17:17:18 <tomsmeding> Profpatsch: the isNothing thing actually has a reason, sortof: (== Nothing) requires Eq of the contained type, whereas isNothing doesn't
17:17:18 × tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
17:17:26 <Profpatsch> tomsmeding: yeah that’s true
17:17:27 × fserucas_ quits (~fserucas@39.64.114.89.rev.vodafone.pt) (Quit: Leaving)
17:17:28 <Profpatsch> however
17:17:31 <Profpatsch> I can still write isNothing
17:17:37 <Profpatsch> if the type really doesn’t have Eq
17:17:44 <Profpatsch> It’s not like it will complain about that
17:17:53 <tomsmeding> Though if there _is_ an Eq instance, it shouldn't really matter for runtime performance in the end
17:17:58 <tomsmeding> Yeah
17:17:59 <Profpatsch> But in that case I’d probably just case-match anyway
17:18:23 <[Leary]> > null Nothing
17:18:24 <tomsmeding> I agree with most of your ignores :p
17:18:25 <lambdabot> True
17:18:34 <[Leary]> Is the other option.
17:18:40 <Profpatsch> [Leary]: Don’t remind me of Foldable omg
17:18:46 <Profpatsch> you troll
17:18:51 <tomsmeding> Well, I agree with all, because I prefer not to use a style linter at all lol
17:19:10 <[Leary]> I actually like how generalised all the Foldable stuff is. *shrug*
17:19:14 <Profpatsch> tomsmeding: hlint is super helpful if you want to tell people in your company that there is a better variant
17:19:31 <tomsmeding> Right
17:19:53 <tomsmeding> Now let it be the case that I'm doing a phd and write code mostly by myself :)
17:20:13 <Profpatsch> [Leary]: Then you obviously never had a production bug because somebody changed (\a :: Int -> length a) to (\a :: (Int, Bool) -> length a) lol
17:20:23 <Profpatsch> We had one,, in our authentication logic
17:20:33 <tomsmeding> Profpatsch: length :: Int -> Int?
17:20:49 <Profpatsch> tomsmeding: err replace Int with [Int] or something
17:20:51 <tomsmeding> s/Int/[Int]/ presumably :p
17:20:52 <tomsmeding> Yeah
17:20:55 <Profpatsch> was thinking wrong
17:21:02 <Profpatsch> Or [a]
17:21:09 <tomsmeding> Or Maybe a
17:21:24 × razetime quits (~quassel@117.254.35.64) (Quit: https://quassel-irc.org - Chat comfortably. Anywhere.)
17:21:25 <Profpatsch> So for example there is a hlint rule that tells people to use List.length instead of Foldable.length
17:21:27 jakalx parts (~jakalx@base.jakalx.net) (Error from remote client)
17:21:35 <Profpatsch> which will prevent such bugs, by being specific about the container
17:21:42 <tomsmeding> Or Const () a
17:21:46 <tomsmeding> ;)
17:21:52 <Profpatsch> Oh, there was also multiple runtime crashes because of `maximum`. Fun stuff!
17:22:05 <Profpatsch> Note how the default instance of `maximum` in the class is … partial
17:22:17 <Profpatsch> Because it’s impossible to have a sensible `maximum` for Foldable
17:22:34 <tomsmeding> If you use the linter to selectively enable the really useful rules, then I can see it being very helpful, especially in a company context
17:22:49 × mastarija quits (~mastarija@2a05:4f46:e02:8c00:c16d:6f16:8e31:78a1) (Quit: Leaving)
17:22:52 <Profpatsch> tomsmeding: hlint is actually a super useful tool, just not with good defaults
17:22:54 <Profpatsch> like … vim for example
17:22:59 <tomsmeding> Heh
17:23:06 <tomsmeding> Maybe that's the conclusion
17:23:45 <tomsmeding> I lazily revetted to hls.config.hlintOn = false
17:23:49 <tomsmeding> *reverted
17:24:15 <Profpatsch> tomsmeding: yeah if you create projects a lot, that’s probably the best if you don’t want to copy the default config everywhere
17:24:17 <tomsmeding> > null (Const 42)
17:24:18 <Profpatsch> tho nothing wrong with that.
17:24:19 <lambdabot> True
17:24:40 <Profpatsch> tomsmeding: wait, does that monomorphise to Const ()?
17:24:58 <tomsmeding> There is `instance Foldable (Const m)`
17:25:20 <tomsmeding> So it doesn't even matter what it monomorphises to :p
17:25:25 <Profpatsch> oh noooo
17:25:29 <tomsmeding> > toList (Const [1,2,3])
17:25:30 <lambdabot> []
17:25:49 <tomsmeding> :t Const
17:25:50 <lambdabot> forall k a (b :: k). a -> Const a b
17:26:03 <tomsmeding> There are no b's in a Const
17:26:05 <geekosaur> and in any case () is a valid monomorphization because ExtendedDefaultRules is on
17:26:08 <Profpatsch> foldl1 _ _ = errorWithoutStackTrace "foldl1: Proxy"
17:26:10 <Profpatsch> foldr1 _ _ = errorWithoutStackTrace "foldr1: Proxy"
17:26:12 <Profpatsch> hm
17:27:01 <tomsmeding> > toList (Proxy :: Proxy Int)
17:27:04 <lambdabot> []
17:27:20 <tomsmeding> Lol that's got to be the most useless Foldable instance ever
17:27:43 <tomsmeding> I see why it's there though, it enables auto-deriving Foldable on a data type containing proxies
17:28:00 <Profpatsch> I guess that’s the reason for most of these instances
17:28:05 <tomsmeding> Yeah
17:28:13 <Profpatsch> just shouldn’t be in Prelude
17:28:46 <tomsmeding> You mean the instance should be orphaned and put in a different module, like Show (a -> b) is in Text.Show.Functions?
17:29:17 <tomsmeding> Not sure that's an improvement
17:29:21 <Profpatsch> tomsmeding: I mean Prelude.length should have type :: [a] -> Int
17:29:27 <tomsmeding> Ah yeah
17:29:41 <Profpatsch> cause you can always use it with length . toList
17:29:43 <Profpatsch> if you really must
17:29:50 <tomsmeding> Or Foldable.length
17:29:54 <Profpatsch> I guess toList can be in Prelude
17:29:59 <Profpatsch> That would make sense
17:30:05 × mvk quits (~mvk@2607:fea8:5ce3:8500::909a) (Ping timeout: 255 seconds)
17:30:12 <geekosaur> but that's annoying if you want e.g. the size of a Set
17:30:15 × mon_aaraj quits (~MonAaraj@user/mon-aaraj/x-4416475) (Ping timeout: 260 seconds)
17:30:25 <geekosaur> instead of using custom functions (which Sets admittedly have)
17:30:44 <Profpatsch> geekosaur: that’s Set.size
17:30:45 tomsmeding always uses Set.size
17:31:13 <Profpatsch> With hls it’s like “write it down, hit Ctrl+. and Enter”
17:31:19 <Profpatsch> And you got the right import
17:31:35 <Profpatsch> Okay, maybe once hls sorts the import suggestions by most viable instead of just alphabetically
17:32:00 <tomsmeding> What I don't like about that auto-import feature is that it just dumps it at the bottom
17:32:03 mon_aaraj joins (~MonAaraj@user/mon-aaraj/x-4416475)
17:32:18 <tomsmeding> Maybe I'm going to patch my hls at some point to insert it where I want it to go
17:32:46 <tomsmeding> Though that'll be more than a one-line change
17:33:20 <tomsmeding> I already have it patched to auto-complete case-insensitively :p
17:33:37 <tomsmeding> I don't want to have to press Shift to get Maybe
17:34:08 jakalx joins (~jakalx@base.jakalx.net)
17:34:24 mvk joins (~mvk@2607:fea8:5ce3:8500::909a)
17:35:36 × lisbeths quits (uid135845@id-135845.lymington.irccloud.com) (Quit: Connection closed for inactivity)
17:36:48 <Profpatsch> tomsmeding: how much effort is it to patch hls?
17:37:10 <Profpatsch> I guess I use nix for the environment so it should be pretty easy to get it distributed once I have a patch
17:38:32 <qrpnxz> look like diff arrays are a bust :( STArray/Vector here i come
17:39:01 <tomsmeding> Profpatsch: Building hls is just `cabal build`, once you have copied the right cabal.project.* to cabal.project
17:39:11 <tomsmeding> So patching is just, well, editing the code :p
17:39:40 <Profpatsch> tomsmeding: nice
17:39:41 <tomsmeding> qrpnxz: iirc diff arrays look promising but have pretty bad constant factor performanc3
17:39:51 <tomsmeding> *performance
17:39:54 <Profpatsch> tomsmeding: But hls has a billion zillion deps no?
17:39:54 o-90 joins (~o-90@gateway/tor-sasl/o-90)
17:39:55 × stiell quits (~stiell@gateway/tor-sasl/stiell) (Ping timeout: 268 seconds)
17:39:59 <tomsmeding> Yes :D
17:40:07 <tomsmeding> That's why we have cabal
17:40:09 <Profpatsch> for the 1 Million $ question: can you run hls on the hls codebase
17:40:13 <tomsmeding> Yes
17:40:16 <Profpatsch> nice
17:40:32 <qrpnxz> i looked into it, and it seem like they were ok/good, but at some point GHC changed and they got bad, and nobody has been interested in fixing/replacing/mantain it since. For like 20 years. Pretty sad tbh
17:40:34 <Profpatsch> I should get into some hls tasks on company time
17:40:51 <tomsmeding> qrpnxz: ah TIL
17:41:36 stiell joins (~stiell@gateway/tor-sasl/stiell)
17:42:17 dcoutts joins (~duncan@host86-167-206-10.range86-167.btcentralplus.com)
17:45:43 <qrpnxz> or probably i should be giving up on arrays and just use a intmap lol
17:54:56 × matthewmosior quits (~matthewmo@173.170.253.91) (Remote host closed the connection)
17:55:25 matthewmosior joins (~matthewmo@173.170.253.91)
17:55:28 × chele quits (~chele@user/chele) (Quit: Leaving)
17:56:27 <yin> qrpnxz: what's the performance you're after?
17:58:09 tzh joins (~tzh@c-24-21-73-154.hsd1.or.comcast.net)
17:59:39 × matthewmosior quits (~matthewmo@173.170.253.91) (Ping timeout: 244 seconds)
18:00:11 <qrpnxz> just... as fast as possible :) ik that's not helpful, but I'm writing this for learning purposes not so much a particular practical goal. I also haven't benchmarked anything so probably this is even premature optimization, but I just know (i'm so getting jinxed) that all the copying of an Array is begging use either mutable or something else.
18:05:23 <yin> ok, so different structures will have different compromises
18:05:45 <yin> so there is not a right answer for the general case
18:06:10 <yin> have you tried unboxed vectors?
18:06:28 <yin> they have constant accessors
18:06:56 <yin> https://hackage.haskell.org/package/vector-0.13.0.0/docs/Data-Vector-Unboxed.htm
18:07:14 <yin> oops
18:07:19 <yin> https://hackage.haskell.org/package/vector-0.13.0.0/docs/Data-Vector-Unboxed.html
18:07:30 <qrpnxz> yeah, i think mutable unboxed would be the fastest, but I think that some kind of map could give me really good bang for my buck in pure code and possibly enable parallelization
18:07:35 × mon_aaraj quits (~MonAaraj@user/mon-aaraj/x-4416475) (Ping timeout: 268 seconds)
18:08:45 <[exa]> yin: re brick, we tried with students and it's pretty much okay for ~20fps games in standard-size terminal
18:09:23 mon_aaraj joins (~MonAaraj@user/mon-aaraj/x-4416475)
18:09:31 <[exa]> the slowest thing there is brick laying out simple stuff ("pixel" characters in rows), I guess that can be circumvented with much performance gain
18:09:58 × acidjnk_new3 quits (~acidjnk@p200300d6e70586378c7d9ef9e9e8454b.dip0.t-ipconnect.de) (Ping timeout: 240 seconds)
18:10:31 <yin> thanks [exa]
18:11:02 <yin> i'm exploring vty and ansi-terminal-game
18:11:37 <[exa]> like, making a widget for your "graphical" stuff that renders directly to vty would probably solve most of the problems. Brick really is for "bricks" ie. tUI stuff
18:11:54 <sm> i think ansi-terminal-game at least can run faster than that
18:12:19 <sm> I suooose it depends on your machine and terminal sw
18:13:36 × mvk quits (~mvk@2607:fea8:5ce3:8500::909a) (Ping timeout: 244 seconds)
18:13:37 <exarkun> how much difference does, eg, gnome-terminal vs alacritty make
18:13:43 Pickchea joins (~private@user/pickchea)
18:13:48 <yin> i'm interested in displaying 2D simulations mostly, think many layers of different automata interacting with themselves plus player events
18:14:11 <yin> so my challenge is to display a map that updates quite frequently
18:14:52 <tomsmeding> yin: if you use unicode, prepare for slowness in some terminals
18:15:02 <yin> that's why i was considering openGL :)
18:15:06 <tomsmeding> Ascii is fast enough in all common terminals
18:15:36 <tomsmeding> Macos Terminal.app was notorious in the past for slow unicode; might have improved in the meantime
18:15:56 <yin> ascii suffices
18:16:16 <tomsmeding> Then terminal rendering performance shouldn't slow you down much
18:16:16 × o-90 quits (~o-90@gateway/tor-sasl/o-90) (Remote host closed the connection)
18:16:43 <sm> I'd measure before abandoning ansi for opengl, that's quite a jump
18:16:43 <sm> in complexity :)
18:17:28 <yin> gloss looks simple enough!
18:17:36 matthewmosior joins (~matthewmo@173.170.253.91)
18:18:04 × mon_aaraj quits (~MonAaraj@user/mon-aaraj/x-4416475) (Ping timeout: 268 seconds)
18:18:59 <sm> true
18:19:28 <yin> but yeah that's exactly where i'm at right now. going to try terminal first
18:19:44 mon_aaraj joins (~MonAaraj@user/mon-aaraj/x-4416475)
18:21:04 <yin> keep the interface layer separated so i can test both
18:22:41 <exarkun> is there a ghc extension that lets you compile haskell down to vertex shaders (et al), or whatever it is modern graphics cards use?
18:24:45 hnOsmium0001 joins (uid453710@user/hnOsmium0001)
18:24:56 nightbreak[Away] is now known as nightbreak
18:26:42 × mon_aaraj quits (~MonAaraj@user/mon-aaraj/x-4416475) (Ping timeout: 268 seconds)
18:27:35 <merijn> exarkun: No
18:27:44 <merijn> exarkun: And unlikely to exist anytime soon :p
18:28:05 mon_aaraj joins (~MonAaraj@user/mon-aaraj/x-4416475)
18:29:06 × nightbreak quits (~nightbrea@2600:1700:70d1:d800:4c68:423:c75b:c148) (Ping timeout: 244 seconds)
18:30:50 <exarkun> aww
18:30:55 nightbreak joins (~nightbrea@2600:1700:70d1:d800:78c0:dca8:2899:48b2)
18:32:53 lys parts (sid194105@user/lys) ()
18:32:54 × slack1256 quits (~slack1256@191.125.227.211) (Read error: Connection reset by peer)
18:34:39 slack1256 joins (~slack1256@186.11.21.37)
18:36:10 <merijn> exarkun: That said, lemme do Athas' work and shill you some Futhark ;)
18:36:22 <merijn> exarkun: https://futhark-lang.org/
18:36:33 <merijn> exarkun: Which is as close to what you want as you can currently (afaik) get :p
18:36:58 y04nn joins (~y04nn@2001:ac8:28:95::a17e)
18:37:23 <exarkun> neat
18:39:54 × segfaultfizzbuzz quits (~segfaultf@157-131-253-58.fiber.dynamic.sonic.net) (Ping timeout: 276 seconds)
18:40:36 sm meant faster than 20fps
18:41:13 <[exa]> sm: wow I didn't know about ansi-terminal-game
18:41:15 <[exa]> cool
18:44:24 <[exa]> exarkun: there's been a bit of recent development on that front, llvm can be translated to spir-v which can be run as a compute shader pretty much anywhere
18:44:59 <sm> if you need fast text display using opengl, I believe ic.rbow in #haskell-game has a lib
18:45:09 <[exa]> there's a hefty one-time investment of the vulkan boilerplate that runs it for you but it generally works nicely
18:45:19 son0p joins (~ff@181.136.122.143)
18:49:13 <exarkun> Huh, did I even know there was an llvm backend for Haskell? maybe not. is this a real thing or just a one-off proof of concept from 15 years ago?
18:49:32 <merijn> exarkun: It's been working in mainline GHC for over a decade?
18:49:41 <merijn> exarkun: It's a bit finnicky, but it's been around for ages
18:49:49 segfaultfizzbuzz joins (~segfaultf@157-131-253-58.fiber.dynamic.sonic.net)
18:50:16 Guest|27 joins (~Guest|27@151.45.227.234)
18:51:00 × Guest|27 quits (~Guest|27@151.45.227.234) (Client Quit)
18:51:08 <[exa]> I was thinking more of some kind of EDSL that runs atop llvm-hs or so, compiling the haskellish llvm to vulkan is IMHO a sci-fi at this point
18:51:46 <exarkun> aha, there is real documentation, just took me a few tries to look in the right place, https://downloads.haskell.org/ghc/latest/docs/html/users_guide/codegens.html?highlight=llvm#llvm-code-generator-fllvm
18:51:53 tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
18:52:01 <exarkun> [exa]: ah I see
18:52:03 <exarkun> still, neat
18:52:34 <[exa]> I kindof hope someone makes a dedicated EDSL for spir-v
18:52:41 × wootehfoot quits (~wootehfoo@user/wootehfoot) (Quit: Leaving)
18:54:20 <[exa]> the availability of vulkan on hardware is cool, you can veeeeeery easily surpass openCL with it, and the shaders are more-or-less portable between vendors (slash some typical issues like workgroup sizing etc)
18:58:21 azimut joins (~azimut@gateway/tor-sasl/azimut)
18:59:24 × segfaultfizzbuzz quits (~segfaultf@157-131-253-58.fiber.dynamic.sonic.net) (Ping timeout: 276 seconds)
19:05:01 × mon_aaraj quits (~MonAaraj@user/mon-aaraj/x-4416475) (Ping timeout: 272 seconds)
19:06:43 mon_aaraj joins (~MonAaraj@user/mon-aaraj/x-4416475)
19:08:12 × eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:2da3:f583:8579:9c6f) (Remote host closed the connection)
19:08:49 × cyphase_eviltwin quits (~cyphase@user/cyphase) (Ping timeout: 272 seconds)
19:10:38 × y04nn quits (~y04nn@2001:ac8:28:95::a17e) (Ping timeout: 240 seconds)
19:10:59 nightbreak is now known as nightbreak[Away]
19:15:40 nightbreak[Away] is now known as nightbreak
19:15:41 acidjnk_new3 joins (~acidjnk@p200300d6e7058637b1e8edca185469f4.dip0.t-ipconnect.de)
19:24:14 eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:2da3:f583:8579:9c6f)
19:30:50 × Kevin578 quits (~Kevin578@pool-173-76-179-30.bstnma.fios.verizon.net) (Ping timeout: 268 seconds)
19:32:21 slac90600 joins (~slack1256@191.126.227.211)
19:33:39 Kevin578 joins (~Kevin578@pool-173-76-179-30.bstnma.fios.verizon.net)
19:33:52 × matthewmosior quits (~matthewmo@173.170.253.91) (Remote host closed the connection)
19:35:09 × slack1256 quits (~slack1256@186.11.21.37) (Ping timeout: 268 seconds)
19:35:26 slac90600 is now known as slack1256
19:36:56 y04nn joins (~y04nn@nayon.fr)
19:37:29 nightbreak is now known as nightbreak[Away]
19:47:42 azimut_ joins (~azimut@gateway/tor-sasl/azimut)
19:48:49 cyphase_eviltwin joins (~cyphase@user/cyphase)
19:50:28 matthewmosior joins (~matthewmo@173.170.253.91)
19:50:39 × azimut quits (~azimut@gateway/tor-sasl/azimut) (Ping timeout: 268 seconds)
19:53:49 lys joins (sid194105@user/lys)
19:54:59 × matthewmosior quits (~matthewmo@173.170.253.91) (Ping timeout: 244 seconds)
19:55:21 × tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
19:59:14 asarch joins (~asarch@2806:10ae:7:f3be:b47:e21f:5e63:b176)
20:00:50 polo joins (~Gambino@user/polo)
20:01:09 jinsun__ joins (~jinsun@user/jinsun)
20:01:09 jinsun__ is now known as jinsun
20:02:13 tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
20:07:42 × polo quits (~Gambino@user/polo) (Read error: Connection reset by peer)
20:08:58 matthewmosior joins (~matthewmo@173.170.253.91)
20:09:04 Polo joins (~Gambino@user/polo)
20:11:28 jmdaemon joins (~jmdaemon@user/jmdaemon)
20:12:57 segfaultfizzbuzz joins (~segfaultf@157-131-253-58.fiber.dynamic.sonic.net)
20:14:16 × econo quits (uid147250@user/econo) (Quit: Connection closed for inactivity)
20:15:07 jinsun is now known as Guest4203
20:15:07 jinsun__ joins (~jinsun@user/jinsun)
20:15:07 × Guest4203 quits (~jinsun@user/jinsun) (Killed (molybdenum.libera.chat (Nickname regained by services)))
20:15:07 jinsun__ is now known as jinsun
20:15:44 econo joins (uid147250@user/econo)
20:21:21 × Polo quits (~Gambino@user/polo) (Killed (tungsten.libera.chat (Nickname regained by services)))
20:22:07 machinedgod joins (~machinedg@d172-219-86-154.abhsia.telus.net)
20:22:41 talismanick joins (~talismani@campus-043-126.ucdavis.edu)
20:25:14 nate4 joins (~nate@98.45.169.16)
20:27:38 × merijn quits (~merijn@c-001-001-002.client.esciencecenter.eduvpn.nl) (Ping timeout: 268 seconds)
20:28:58 × asarch quits (~asarch@2806:10ae:7:f3be:b47:e21f:5e63:b176) (Quit: Leaving)
20:30:31 × nate4 quits (~nate@98.45.169.16) (Ping timeout: 272 seconds)
20:31:51 <tomsmeding> exarkun: the llvm backend drove arm support until ghc's native code generator started supporting arm in either 9.0 or 9.2
20:34:14 <wrengr> You might also want to take a look at MLIR which can do various vulkan/spirv things, and which has Haskell bindings
20:34:34 × winny quits (~weechat@user/winny) (Remote host closed the connection)
20:35:07 winny joins (~weechat@user/winny)
20:36:15 × raym quits (~raym@user/raym) (Remote host closed the connection)
20:36:59 Topsi joins (~Topsi@dyndsl-095-033-017-083.ewe-ip-backbone.de)
20:47:38 × Topsi quits (~Topsi@dyndsl-095-033-017-083.ewe-ip-backbone.de) (Read error: Connection reset by peer)
20:49:09 × segfaultfizzbuzz quits (~segfaultf@157-131-253-58.fiber.dynamic.sonic.net) (Ping timeout: 268 seconds)
20:49:18 × talismanick quits (~talismani@campus-043-126.ucdavis.edu) (Ping timeout: 264 seconds)
20:49:51 nate4 joins (~nate@98.45.169.16)
20:56:05 John_Ivan joins (~John_Ivan@user/john-ivan/x-1515935)
20:56:29 <John_Ivan> Hi, anyone wanna tell me what does it mean by the following error? https://pastebin.com/7Qz9dME7
20:56:34 <John_Ivan> main.hs:5:25: error:Variable not in scope:split :: (Char, String) -> [String]
20:57:34 <[exa]> John_Ivan: it doesn't know the split function
20:57:34 × eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:2da3:f583:8579:9c6f) (Remote host closed the connection)
20:57:51 <John_Ivan> is the function a "variable?"
20:58:20 <[exa]> yes, functions are normal values
20:58:48 <[exa]> btw you seem to use C-style function argument passing -- haskell doesn't use the parentheses() to call
20:58:59 <[exa]> the canonical way to call the split with 2 arguments is roughly like
20:59:07 <[exa]> split '/' "some/string"
20:59:17 <John_Ivan> [exa], ok I'll change that. what package would contain the "String.split" method?
20:59:40 <[exa]> given ofcourse there's a function that does splitting
20:59:51 <c_wraith> @hoogle split
20:59:52 <lambdabot> Data.ByteString split :: Word8 -> ByteString -> [ByteString]
20:59:52 <lambdabot> Data.ByteString.Char8 split :: Char -> ByteString -> [ByteString]
20:59:52 <lambdabot> Data.ByteString.Lazy split :: Word8 -> ByteString -> [ByteString]
21:00:01 <c_wraith> Hmm. not any of those. darn you, lambdabot!
21:00:13 <c_wraith> it's in a package called... wait for it... split
21:00:15 <[exa]> likely the one from Data.List.Split
21:00:23 <[exa]> yeah, that one ^
21:01:00 <John_Ivan> main.hs:1:1: error:Failed to load interface for ‘Data.List.Split’
21:01:05 <John_Ivan> "import Data.List.Split" ;/
21:01:57 <[exa]> John_Ivan: you might need to pass `-package split`
21:02:09 <[exa]> (and maybe install the package)
21:02:22 <John_Ivan> I'm using an online compiler - https://www.tutorialspoint.com/compile_haskell_online.php
21:02:36 <[exa]> (at this point it may look weird that splitting is not in a total base library, but in functional programming this functionality is kinda frowned upon)
21:02:39 <John_Ivan> so no standard library incorporated for string split handling? :(
21:02:48 <John_Ivan> eh?
21:02:53 <John_Ivan> how come
21:03:11 <[exa]> too many ways to do it wrong
21:03:59 <Rembane> Too many kinds of strings
21:04:03 <John_Ivan> Every day, little by little, I lose faith in functional programming :(
21:04:11 <[exa]> anyway, you can very easily do the split in a way that is good for you
21:04:53 <John_Ivan> No, actually, sorry but I think I'll put haskell away for yet another few months. Because the more I explore this language, the more I find dissapointment in it than anything worthwhile.
21:04:54 × machinedgod quits (~machinedg@d172-219-86-154.abhsia.telus.net) (Ping timeout: 264 seconds)
21:05:14 <John_Ivan> Sorry about that. Appreciate the help though.
21:05:18 <[exa]> John_Ivan: in your case I'd use: splitAt _ [] = []; splitAt c xs = takeWhile (/= c) xs : splitAt c (dropWhile (/= c) xs)
21:05:29 <c_wraith> Why do you think it has anything to do with "functional programming"?
21:05:48 <c_wraith> It's much more a case of "most every standard library gets this wrong. let's not do that."
21:05:52 segfaultfizzbuzz joins (~segfaultf@157-131-253-58.fiber.dynamic.sonic.net)
21:06:13 <John_Ivan> ok
21:07:44 <John_Ivan> c_wraith, I do not see anything objectively or subjectively wrong with a clear functionality that involves iterating character by character and splitting a string into an array of strings by that delimiter.
21:07:46 <[exa]> (btw my example there contains a small mistake, I sholdn't code directly to IRC :D )
21:08:16 <John_Ivan> if the "functional programming" community does, then I don't know how to retaliate.
21:08:52 <John_Ivan> [exa], that's ok, no worries.
21:09:33 <c_wraith> John_Ivan: unicode breaks a lot of things
21:09:53 <c_wraith> John_Ivan: for instance, there are a lot of glyphs which aren't represented by single codepoints.
21:10:08 <John_Ivan> I suppose it does, isn't it wiser to offer the encoding you expect to work on in each string function?
21:10:25 <c_wraith> that's not even the same thing
21:10:31 <c_wraith> encoding is for bytes
21:10:35 <c_wraith> unicode is about code points
21:10:38 y04nn4471 joins (~y04nn@2001:ac8:28:95::a17e)
21:10:46 <John_Ivan> yet no unicode implementation exists without bytes
21:10:52 <John_Ivan> be it UTF8 or widechar
21:10:55 <John_Ivan> or w/e
21:10:57 <c_wraith> those are encodings
21:11:02 <John_Ivan> hence my point.
21:11:03 <c_wraith> unicode doesn't describe those
21:11:14 <c_wraith> I mean, it does, in an appendix somewhere
21:11:20 <c_wraith> but they're not what it's about
21:11:30 <John_Ivan> alright.
21:11:51 <[exa]> John_Ivan: btw that view of split assumes that you want to store the result (people rarely want to)
21:12:21 × matthewmosior quits (~matthewmo@173.170.253.91) (Ping timeout: 244 seconds)
21:13:05 × y04nn quits (~y04nn@nayon.fr) (Ping timeout: 260 seconds)
21:14:17 <[exa]> John_Ivan: anyway for the specialized "array-ish" representation of strings (Data.Text) there's the obvious splitOn: https://hackage.haskell.org/package/text-2.0/docs/Data-Text.html#v:splitOn
21:16:35 × __monty__ quits (~toonn@user/toonn) (Quit: leaving)
21:16:35 <slack1256> Do common complains to ORM apply to libraries such as opaleye?
21:19:10 × tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
21:24:06 yauhsien joins (~yauhsien@61-231-22-68.dynamic-ip.hinet.net)
21:24:21 × _ht quits (~quassel@231-169-21-31.ftth.glasoperator.nl) (Remote host closed the connection)
21:25:15 <monochrom> Belated, but most users of string splitting libraries are aiming for parsing. We go ahead and do parsing directly.
21:26:14 <monochrom> But yeah if you shoehorn an idiom designed for one programming style to another programming style, you are supposed to be disappointed.
21:26:18 × Pickchea quits (~private@user/pickchea) (Ping timeout: 276 seconds)
21:26:39 <monochrom> Why doesn't C let me define my own >>= operator, for example.
21:26:52 <hpc> the real secret is to always be disappointed ahead of time, then you can do whatever you want :D
21:26:58 <monochrom> Every time I look at Python untypedness I lose more faith in Python.
21:27:33 <monochrom> If Java doesn't do things the Haskell way, why should Haskell do things the Java way?
21:27:54 <Rembane> Wield your disappointment like a sword!
21:28:18 × yauhsien quits (~yauhsien@61-231-22-68.dynamic-ip.hinet.net) (Ping timeout: 240 seconds)
21:29:12 <hpc> at the same time, there's more than one way to do it
21:29:14 × chomwitt quits (~chomwitt@2a02:587:dc00:5a00:e3c4:775f:d866:7dfa) (Ping timeout: 272 seconds)
21:29:37 <monochrom> More ways to be disappointed.
21:29:38 <hpc> trying to write a functional zipper data structure in rust is a sure sign of insanity, for instance
21:29:44 <hpc> just use an array or whatever
21:29:53 <hpc> but maybe in haskell the zipper is better
21:30:07 <Rembane> hpc: Is it possible to write a functional zipper data structure in Rust?
21:30:17 × Midjak quits (~Midjak@82.66.147.146) (Quit: This computer has gone to sleep)
21:31:20 <hpc> probably, but i don't know how i would do it once the direct way fails me
21:31:30 × segfaultfizzbuzz quits (~segfaultf@157-131-253-58.fiber.dynamic.sonic.net) (Ping timeout: 276 seconds)
21:32:07 <hpc> another good example, bash and haskell are both rather good at processing streams
21:32:10 <hpc> but in very different ways
21:32:11 `2jt joins (~jtomas@141.red-88-17-65.dynamicip.rima-tde.net)
21:32:11 <monochrom> It is possible but insane to write your own "data List a = Nil | Cons a (List a)" in Rust in the first place. :)
21:32:22 <Rembane> But fun! :D
21:32:45 <hpc> spoken like a true dwarf fortress player
21:32:48 <monochrom> The ownership system is going to ask a lot of questions.
21:33:07 <Rembane> hpc: How did you know that?! :D
21:33:13 <monochrom> In 5 minutes you realize how much you have been taking GC for granted.
21:34:08 <hpc> and then you have to debug weird gc pauses, and learn to appreciate ownership all over again
21:34:22 <hpc> it's a neverending cycle :D
21:34:28 <monochrom> There is no way to win.
21:34:43 <hpc> i always miss do blocks though
21:35:08 <hpc> doesn't matter what language it is, being able to create my own foo $ do {...} constructs is too powerful to give up
21:36:13 <hpc> ruby can almost do it, if you can stomach the ridiculous object-y stuff you have to do
21:36:24 <hpc> and rust almost feels like it already has everything you need
21:36:38 <hpc> but i always want more
21:37:49 <Rembane> hpc: Are you doing the Church-Gödel-Turing-thing but no do-blocks?
21:38:02 <hpc> heh
21:40:29 matthewmosior joins (~matthewmo@173.170.253.91)
21:42:58 × `2jt quits (~jtomas@141.red-88-17-65.dynamicip.rima-tde.net) (Ping timeout: 240 seconds)
21:43:53 eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:2da3:f583:8579:9c6f)
21:45:02 × matthewmosior quits (~matthewmo@173.170.253.91) (Ping timeout: 244 seconds)
21:46:35 × califax quits (~califax@user/califx) (Ping timeout: 268 seconds)
21:47:06 califax joins (~califax@user/califx)
21:48:37 winny_ joins (~weechat@user/winny)
21:49:03 × winny quits (~weechat@user/winny) (Ping timeout: 268 seconds)
21:49:03 × FinnElija quits (~finn_elij@user/finn-elija/x-0085643) (Ping timeout: 268 seconds)
21:49:15 × nate4 quits (~nate@98.45.169.16) (Ping timeout: 260 seconds)
21:49:35 FinnElija joins (~finn_elij@user/finn-elija/x-0085643)
21:52:27 × takuan quits (~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection)
21:55:34 × chexum quits (~quassel@gateway/tor-sasl/chexum) (Remote host closed the connection)
21:55:36 machinedgod joins (~machinedg@d172-219-86-154.abhsia.telus.net)
21:58:47 chexum joins (~quassel@gateway/tor-sasl/chexum)
22:01:22 matthewmosior joins (~matthewmo@173.170.253.91)
22:04:03 segfaultfizzbuzz joins (~segfaultf@157-131-253-58.fiber.dynamic.sonic.net)
22:07:15 × tomboy64 quits (~tomboy64@user/tomboy64) (Ping timeout: 244 seconds)
22:19:28 × michalz quits (~michalz@185.246.204.77) (Remote host closed the connection)
22:19:43 merijn joins (~merijn@c-001-001-002.client.esciencecenter.eduvpn.nl)
22:21:41 zebrag joins (~chris@user/zebrag)
22:23:57 × gmg quits (~user@user/gehmehgeh) (Quit: Leaving)
22:26:04 × Dutchgriffon quits (~Laurens@70.36.53.134) (Read error: Connection reset by peer)
22:27:02 talismanick joins (~talismani@campus-043-126.ucdavis.edu)
22:27:44 × eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:2da3:f583:8579:9c6f) (Remote host closed the connection)
22:30:15 × slack1256 quits (~slack1256@191.126.227.211) (Read error: Connection reset by peer)
22:36:11 × pretty_dumm_guy quits (trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) (Quit: WeeChat 3.5)
22:40:54 phuegrvs[m] joins (~phuegrvsm@2001:470:69fc:105::1:65e4)
22:44:42 <qrpnxz> hmm, I'm thinking Setter would be better called "Mapping". If you actually just had a setter (s -> a -> s), well, that would just be some function. A SEC on the other hand have the power to actually map what you are trying to replace, which then fit into the theme of traversals.
22:48:47 × talismanick quits (~talismani@campus-043-126.ucdavis.edu) (Ping timeout: 268 seconds)
22:49:20 × merijn quits (~merijn@c-001-001-002.client.esciencecenter.eduvpn.nl) (Ping timeout: 260 seconds)
22:51:34 × y04nn4471 quits (~y04nn@2001:ac8:28:95::a17e) (Ping timeout: 244 seconds)
22:56:43 × segfaultfizzbuzz quits (~segfaultf@157-131-253-58.fiber.dynamic.sonic.net) (Ping timeout: 244 seconds)
22:56:55 pavonia joins (~user@user/siracusa)
22:58:51 segfaultfizzbuzz joins (~segfaultf@157-131-253-58.fiber.dynamic.sonic.net)
23:01:18 y04nn joins (~y04nn@2001:ac8:28:95::a17e)
23:02:24 × matthewmosior quits (~matthewmo@173.170.253.91) (Ping timeout: 244 seconds)
23:03:46 × mmhat quits (~mmh@p200300f1c70559dfee086bfffe095315.dip0.t-ipconnect.de) (Quit: WeeChat 3.6)
23:05:30 × jpds1 quits (~jpds@gateway/tor-sasl/jpds) (Remote host closed the connection)
23:07:19 jpds1 joins (~jpds@gateway/tor-sasl/jpds)
23:10:40 × dcoutts quits (~duncan@host86-167-206-10.range86-167.btcentralplus.com) (Ping timeout: 244 seconds)
23:11:21 pavonia_ joins (~user@user/siracusa)
23:12:39 × pavonia quits (~user@user/siracusa) (Ping timeout: 272 seconds)
23:12:44 pavonia_ is now known as pavonia
23:19:44 × Kevin578 quits (~Kevin578@pool-173-76-179-30.bstnma.fios.verizon.net) (Ping timeout: 255 seconds)
23:20:50 Kevin578 joins (~Kevin578@pool-173-76-179-30.bstnma.fios.verizon.net)
23:22:20 talismanick joins (~talismani@campus-043-126.ucdavis.edu)
23:28:54 × califax quits (~califax@user/califx) (Quit: ZNC 1.8.2 - https://znc.in)
23:30:41 califax joins (~califax@user/califx)
23:31:27 matthewmosior joins (~matthewmo@173.170.253.91)
23:34:59 × zeenk quits (~zeenk@2a02:2f04:a311:2d00:6865:d863:4c93:799f) (Quit: Konversation terminated!)
23:37:08 [itchyjunk] joins (~itchyjunk@user/itchyjunk/x-7353470)
23:37:30 × segfaultfizzbuzz quits (~segfaultf@157-131-253-58.fiber.dynamic.sonic.net) (Ping timeout: 268 seconds)
23:38:48 × acidjnk_new3 quits (~acidjnk@p200300d6e7058637b1e8edca185469f4.dip0.t-ipconnect.de) (Ping timeout: 268 seconds)
23:39:24 winny_ is now known as winny
23:40:31 × inversed quits (~inversed@05412f44.skybroadband.com) (Ping timeout: 272 seconds)
23:40:51 Lord_of_Life_ joins (~Lord@user/lord-of-life/x-2819915)
23:41:09 × Lord_of_Life quits (~Lord@user/lord-of-life/x-2819915) (Ping timeout: 272 seconds)
23:41:56 segfaultfizzbuzz joins (~segfaultf@157-131-253-58.fiber.dynamic.sonic.net)
23:42:06 Lord_of_Life_ is now known as Lord_of_Life
23:45:35 merijn joins (~merijn@c-001-001-002.client.esciencecenter.eduvpn.nl)
23:49:50 × waleee quits (~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340) (Ping timeout: 240 seconds)
23:53:22 eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:2da3:f583:8579:9c6f)
23:57:16 raehik joins (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
23:59:36 edinwood joins (~edinwood@213.205.241.236)

All times are in UTC on 2022-07-19.