Home liberachat/#haskell: Logs Calendar

Logs on 2022-12-14 (liberachat/#haskell)

00:02:52 × thyriaen quits (~thyriaen@2a01:aea0:dd4:4bae:6245:cbff:fe9f:48b1) (Remote host closed the connection)
00:06:23 lisk1n is now known as liskin
00:14:04 × Tuplanolla quits (~Tuplanoll@91-159-68-152.elisa-laajakaista.fi) (Quit: Leaving.)
00:19:31 merijn joins (~merijn@c-001-001-007.client.esciencecenter.eduvpn.nl)
00:20:32 × freeside quits (~mengwong@pd907d273.dip0.t-ipconnect.de) (Ping timeout: 272 seconds)
00:21:07 cowboy8625 joins (~cowboy@96-2-208-2-static.midco.net)
00:24:20 × merijn quits (~merijn@c-001-001-007.client.esciencecenter.eduvpn.nl) (Ping timeout: 272 seconds)
00:27:49 × szkl quits (uid110435@id-110435.uxbridge.irccloud.com) (Quit: Connection closed for inactivity)
00:32:07 freeside joins (~mengwong@pd907d273.dip0.t-ipconnect.de)
00:36:40 × freeside quits (~mengwong@pd907d273.dip0.t-ipconnect.de) (Ping timeout: 256 seconds)
00:37:18 × TonyStone quits (~TonyStone@cpe-74-76-57-186.nycap.res.rr.com) (Quit: Leaving)
00:37:27 eggplantade joins (~Eggplanta@2600:1700:38c5:d800:a84a:2d35:f948:fe07)
00:41:51 × eggplantade quits (~Eggplanta@2600:1700:38c5:d800:a84a:2d35:f948:fe07) (Ping timeout: 252 seconds)
00:45:04 × hgolden quits (~hgolden@cpe-172-251-233-141.socal.res.rr.com) (Remote host closed the connection)
00:46:31 hgolden joins (~hgolden@cpe-172-251-233-141.socal.res.rr.com)
00:46:47 magpi[m] joins (~magpimatr@2001:470:69fc:105::1:725a)
00:55:49 thyriaen joins (~thyriaen@2a01:aea0:dd4:4bae:6245:cbff:fe9f:48b1)
00:56:31 × bitdex quits (~bitdex@gateway/tor-sasl/bitdex) (Remote host closed the connection)
00:57:38 bitdex joins (~bitdex@gateway/tor-sasl/bitdex)
01:00:16 × bitdex quits (~bitdex@gateway/tor-sasl/bitdex) (Remote host closed the connection)
01:01:33 instantaphex joins (~jb@c-73-171-252-84.hsd1.fl.comcast.net)
01:02:54 bitdex joins (~bitdex@gateway/tor-sasl/bitdex)
01:09:06 × biberu quits (~biberu@user/biberu) (Read error: Connection reset by peer)
01:12:38 freeside joins (~mengwong@pd907d273.dip0.t-ipconnect.de)
01:19:45 merijn joins (~merijn@c-001-001-007.client.esciencecenter.eduvpn.nl)
01:24:50 × notzmv quits (~zmv@user/notzmv) (Ping timeout: 256 seconds)
01:25:58 × xff0x_ quits (~xff0x@ai071162.d.east.v6connect.net) (Ping timeout: 256 seconds)
01:30:40 × hsw_ quits (~hsw@112-104-142-182.adsl.dynamic.seed.net.tw) (Remote host closed the connection)
01:33:24 hsw joins (~hsw@2001-b030-2303-0104-0172-0025-0012-0132.hinet-ip6.hinet.net)
01:34:37 × hsw quits (~hsw@2001-b030-2303-0104-0172-0025-0012-0132.hinet-ip6.hinet.net) (Client Quit)
01:37:10 hsw joins (~hsw@112-104-142-182.adsl.dynamic.seed.net.tw)
01:37:23 × gurkenglas quits (~gurkengla@p548ac72e.dip0.t-ipconnect.de) (Ping timeout: 264 seconds)
01:43:32 telser joins (~quassel@user/telser)
01:46:03 wroathe joins (~wroathe@207-153-38-140.fttp.usinternet.com)
01:46:03 × wroathe quits (~wroathe@207-153-38-140.fttp.usinternet.com) (Changing host)
01:46:03 wroathe joins (~wroathe@user/wroathe)
01:47:32 ddellacosta joins (~ddellacos@143.244.47.88)
01:48:24 Me-me- joins (~me-me@2602:ff16:3:0:1:dc:beef:d00d)
01:49:25 × Wstfgl0 quits (~me-me@2602:ff16:3:0:1:dc:beef:d00d) (Read error: Connection reset by peer)
01:50:10 × thyriaen quits (~thyriaen@2a01:aea0:dd4:4bae:6245:cbff:fe9f:48b1) (Remote host closed the connection)
01:51:13 × mmhat quits (~mmh@p200300f1c718063cee086bfffe095315.dip0.t-ipconnect.de) (Quit: WeeChat 3.7.1)
01:54:37 × merijn quits (~merijn@c-001-001-007.client.esciencecenter.eduvpn.nl) (Ping timeout: 268 seconds)
02:06:30 xff0x_ joins (~xff0x@125x103x176x34.ap125.ftth.ucom.ne.jp)
02:11:03 × ec quits (~ec@gateway/tor-sasl/ec) (Remote host closed the connection)
02:11:22 × ddellacosta quits (~ddellacos@143.244.47.88) (Ping timeout: 272 seconds)
02:11:34 ec joins (~ec@gateway/tor-sasl/ec)
02:12:51 ddellacosta joins (~ddellacos@89.45.224.168)
02:13:02 × freeside quits (~mengwong@pd907d273.dip0.t-ipconnect.de) (Ping timeout: 252 seconds)
02:16:34 × mestre quits (~mestre@191.177.185.178) (Ping timeout: 252 seconds)
02:18:54 Sgeo_ joins (~Sgeo@user/sgeo)
02:19:36 × Sgeo quits (~Sgeo@user/sgeo) (Ping timeout: 272 seconds)
02:23:50 magpi[m] parts (~magpimatr@2001:470:69fc:105::1:725a) ()
02:25:34 freeside joins (~mengwong@pd907d273.dip0.t-ipconnect.de)
02:30:00 × freeside quits (~mengwong@pd907d273.dip0.t-ipconnect.de) (Ping timeout: 256 seconds)
02:34:26 abrar joins (~abrar@static-108-2-152-54.phlapa.fios.verizon.net)
02:34:42 × shriekingnoise quits (~shrieking@186.137.167.202) (Quit: Quit)
02:42:34 fizbin joins (~fizbin@user/fizbin)
02:44:12 × wroathe quits (~wroathe@user/wroathe) (Ping timeout: 252 seconds)
02:47:30 × fizbin quits (~fizbin@user/fizbin) (Ping timeout: 252 seconds)
02:50:34 merijn joins (~merijn@c-001-001-007.client.esciencecenter.eduvpn.nl)
02:56:18 × merijn quits (~merijn@c-001-001-007.client.esciencecenter.eduvpn.nl) (Ping timeout: 252 seconds)
03:01:51 [itchyjunk] joins (~itchyjunk@user/itchyjunk/x-7353470)
03:03:18 × hgolden quits (~hgolden@cpe-172-251-233-141.socal.res.rr.com) (Remote host closed the connection)
03:03:22 freeside joins (~mengwong@pd907d273.dip0.t-ipconnect.de)
03:04:59 hgolden joins (~hgolden@cpe-172-251-233-141.socal.res.rr.com)
03:13:08 × ballast quits (~ballast@cpe-104-32-238-223.socal.res.rr.com) (Ping timeout: 260 seconds)
03:13:08 eggplantade joins (~Eggplanta@104-55-37-220.lightspeed.sntcca.sbcglobal.net)
03:15:35 × bitdex quits (~bitdex@gateway/tor-sasl/bitdex) (Remote host closed the connection)
03:16:51 bitdex joins (~bitdex@gateway/tor-sasl/bitdex)
03:18:29 × instantaphex quits (~jb@c-73-171-252-84.hsd1.fl.comcast.net) (Ping timeout: 268 seconds)
03:28:38 × ddellacosta quits (~ddellacos@89.45.224.168) (Ping timeout: 272 seconds)
03:29:47 wroathe joins (~wroathe@207-153-38-140.fttp.usinternet.com)
03:29:47 × wroathe quits (~wroathe@207-153-38-140.fttp.usinternet.com) (Changing host)
03:29:47 wroathe joins (~wroathe@user/wroathe)
03:33:02 ddellacosta joins (~ddellacos@86.106.143.155)
03:35:45 notzmv joins (~zmv@user/notzmv)
03:37:26 × ddellacosta quits (~ddellacos@86.106.143.155) (Ping timeout: 256 seconds)
03:38:08 × td_ quits (~td@83.135.9.49) (Ping timeout: 272 seconds)
03:39:21 ddellacosta joins (~ddellacos@89.45.224.129)
03:39:46 td_ joins (~td@83.135.9.16)
03:40:29 instantaphex joins (~jb@c-73-171-252-84.hsd1.fl.comcast.net)
03:50:53 mvk joins (~mvk@2607:fea8:5ce3:8500::6126)
03:50:57 × mvk quits (~mvk@2607:fea8:5ce3:8500::6126) (Client Quit)
03:51:16 lisbeths joins (uid135845@id-135845.lymington.irccloud.com)
03:51:54 × [itchyjunk] quits (~itchyjunk@user/itchyjunk/x-7353470) (Remote host closed the connection)
03:53:07 merijn joins (~merijn@c-001-001-007.client.esciencecenter.eduvpn.nl)
03:56:01 zer0bitz_ joins (~zer0bitz@196.244.192.57)
03:59:00 × zer0bitz quits (~zer0bitz@196.244.192.57) (Ping timeout: 252 seconds)
04:00:31 razetime joins (~quassel@49.207.203.213)
04:02:00 × jargon quits (~jargon@174-22-192-24.phnx.qwest.net) (Remote host closed the connection)
04:02:56 × freeside quits (~mengwong@pd907d273.dip0.t-ipconnect.de) (Ping timeout: 256 seconds)
04:03:19 shriekingnoise joins (~shrieking@186.137.167.202)
04:03:30 × machinedgod quits (~machinedg@d198-53-218-113.abhsia.telus.net) (Ping timeout: 256 seconds)
04:08:36 dsrt^ joins (~dsrt@76.145.185.103)
04:10:52 × wroathe quits (~wroathe@user/wroathe) (Ping timeout: 256 seconds)
04:15:29 × zmt01 quits (~zmt00@user/zmt00) (Read error: Connection reset by peer)
04:16:13 freeside joins (~mengwong@pd907d273.dip0.t-ipconnect.de)
04:18:40 × cowboy8625 quits (~cowboy@96-2-208-2-static.midco.net) (Ping timeout: 272 seconds)
04:20:14 zmt00 joins (~zmt00@user/zmt00)
04:22:54 × zmt00 quits (~zmt00@user/zmt00) (Client Quit)
04:27:32 × merijn quits (~merijn@c-001-001-007.client.esciencecenter.eduvpn.nl) (Ping timeout: 272 seconds)
04:28:43 × JordiGH quits (~jordi@user/jordigh) (Ping timeout: 260 seconds)
04:37:57 fizbin joins (~fizbin@user/fizbin)
04:42:58 × ddellacosta quits (~ddellacos@89.45.224.129) (Ping timeout: 268 seconds)
04:50:16 McBoog joins (~McBoog@172-10-253-252.lightspeed.fyvlar.sbcglobal.net)
04:52:03 × thegeekinside quits (~thegeekin@189.217.82.244) (Read error: Connection reset by peer)
04:55:18 × McBoog quits (~McBoog@172-10-253-252.lightspeed.fyvlar.sbcglobal.net) (Ping timeout: 268 seconds)
05:04:38 × waleee quits (~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340) (Ping timeout: 252 seconds)
05:07:41 × jinsun quits (~jinsun@user/jinsun) (Read error: Connection reset by peer)
05:11:07 × Unicorn_Princess quits (~Unicorn_P@user/Unicorn-Princess/x-3540542) (Quit: Leaving)
05:13:57 Vajb joins (~Vajb@hag-jnsbng11-58c3a5-27.dhcp.inet.fi)
05:16:55 wroathe joins (~wroathe@207-153-38-140.fttp.usinternet.com)
05:16:55 × wroathe quits (~wroathe@207-153-38-140.fttp.usinternet.com) (Changing host)
05:16:55 wroathe joins (~wroathe@user/wroathe)
05:19:58 × freeside quits (~mengwong@pd907d273.dip0.t-ipconnect.de) (Ping timeout: 268 seconds)
05:21:27 merijn joins (~merijn@c-001-001-007.client.esciencecenter.eduvpn.nl)
05:24:32 × wroathe quits (~wroathe@user/wroathe) (Ping timeout: 272 seconds)
05:25:32 × Vajb quits (~Vajb@hag-jnsbng11-58c3a5-27.dhcp.inet.fi) (Read error: Connection reset by peer)
05:26:04 Vajb joins (~Vajb@2001:999:504:3ad6:52a4:a3b5:32d8:e74d)
05:26:26 × merijn quits (~merijn@c-001-001-007.client.esciencecenter.eduvpn.nl) (Ping timeout: 272 seconds)
05:27:54 zmt00 joins (~zmt00@user/zmt00)
05:31:47 freeside joins (~mengwong@pd907d273.dip0.t-ipconnect.de)
05:36:26 × freeside quits (~mengwong@pd907d273.dip0.t-ipconnect.de) (Ping timeout: 256 seconds)
05:37:38 jinsun joins (~jinsun@user/jinsun)
05:43:57 × phma quits (phma@2001:5b0:2144:3348:b796:42a8:66d:6853) (Read error: Connection reset by peer)
05:44:36 phma joins (~phma@host-67-44-208-17.hnremote.net)
05:45:09 biberu joins (~biberu@user/biberu)
05:47:08 × zmt00 quits (~zmt00@user/zmt00) (Read error: Connection reset by peer)
05:48:58 freeside joins (~mengwong@pd907d273.dip0.t-ipconnect.de)
05:52:23 × son0p quits (~ff@2604:3d08:5b7f:5540::64ea) (Ping timeout: 260 seconds)
05:53:09 zmt00 joins (~zmt00@user/zmt00)
05:54:30 × freeside quits (~mengwong@pd907d273.dip0.t-ipconnect.de) (Ping timeout: 252 seconds)
05:55:17 takuan joins (~takuan@178-116-218-225.access.telenet.be)
06:07:09 freeside joins (~mengwong@pd907d273.dip0.t-ipconnect.de)
06:08:04 × instantaphex quits (~jb@c-73-171-252-84.hsd1.fl.comcast.net) (Ping timeout: 252 seconds)
06:08:52 × nut quits (~nut@roc37-h01-176-170-197-243.dsl.sta.abo.bbox.fr) (Ping timeout: 272 seconds)
06:10:32 × Erutuon_ quits (~Erutuon@user/erutuon) (Ping timeout: 268 seconds)
06:11:12 × zmt00 quits (~zmt00@user/zmt00) (Quit: Leaving)
06:14:22 zmt00 joins (~zmt00@user/zmt00)
06:14:53 × chexum quits (~quassel@gateway/tor-sasl/chexum) (Remote host closed the connection)
06:14:54 × azimut quits (~azimut@gateway/tor-sasl/azimut) (Remote host closed the connection)
06:15:16 chexum joins (~quassel@gateway/tor-sasl/chexum)
06:15:25 azimut joins (~azimut@gateway/tor-sasl/azimut)
06:16:26 <iqubic> Seeing the error message "No instance (Functor Set)" and having to use `S.map` makes me a bit sad.
06:17:03 <jackdk> It's not possible because you can't add constraints to fmap
06:17:43 <iqubic> I know why it's impossible. I just wish it was possible.
06:18:11 bgs joins (~bgs@212-85-160-171.dynamic.telemach.net)
06:20:04 × freeside quits (~mengwong@pd907d273.dip0.t-ipconnect.de) (Ping timeout: 256 seconds)
06:20:12 instantaphex joins (~jb@c-73-171-252-84.hsd1.fl.comcast.net)
06:21:39 merijn joins (~merijn@c-001-001-007.client.esciencecenter.eduvpn.nl)
06:21:47 <EvanR> there's probably a way to force it, and there's probably many languages which have forced it and don't care about consequences xD
06:22:05 <EvanR> move Functor break things
06:22:13 <c_wraith> there's actually a pretty principled way to force it.
06:22:23 <c_wraith> But it requires defining the data types differently
06:23:09 <c_wraith> ... and it requires a GADT. so... there's that
06:23:28 forell joins (~forell@user/forell)
06:24:34 × instantaphex quits (~jb@c-73-171-252-84.hsd1.fl.comcast.net) (Ping timeout: 252 seconds)
06:26:39 <jackdk> While we're breaking the universe, let's rename fmap -> map
06:28:00 <Jade[m]> yep
06:31:18 <EvanR> you mean bundle an ordering with the Data.Set?
06:31:30 × fizbin quits (~fizbin@user/fizbin) (Quit: Leaving)
06:31:52 <EvanR> I wonder where I saw something like "this is why that's a bad idea(tm)"
06:34:35 <int-e> data FSet b where FSet :: Set a -> (a -> b) -> FSet b supports `fmap` but is otherwise pretty unpleasant?
06:35:41 <c_wraith> data FSet a b where FSet :: Set a -> FSet a a ; instance Ord a => Functor (FSet a) where ...
06:36:53 <EvanR> interesting
06:37:18 <int-e> fmap :: (a -> b) -> FSet a a -> FSet a b
06:37:31 <EvanR> ...
06:37:34 <c_wraith> that's a type error, though
06:37:40 <c_wraith> well, no it's not
06:37:47 <c_wraith> There's just no FSet constructor with that type
06:37:56 <int-e> No. But the arguments are inhabited while the result is not, unless a = b.
06:38:08 <iqubic> This is silly.
06:38:20 <int-e> So I don't think that particular type is helpful.
06:38:28 <c_wraith> Then I remembered the details wrong. I can't seem to find the reddit post.
06:38:37 <EvanR> hey, at least you can use fmap!
06:38:49 <EvanR> which was the objective? xD
06:39:03 <int-e> c_wraith: I imagine it had two constructors.
06:39:30 <int-e> c_wraith: One for Set + identity, and the other for Set + arbitrary function captured from `fmap`.
06:40:15 <c_wraith> Oh, hah. No, the trick was for Foldable, not Functor. That implementation works fine there
06:40:21 <int-e> There's no way for `fmap` to produce a new set directly. The type doesn't allow it.
06:40:45 <int-e> (where "set" = Data.Set.Set, requiring an Ord instance)
06:40:47 × zmt00 quits (~zmt00@user/zmt00) (Read error: Connection reset by peer)
06:40:53 <c_wraith> https://oleg.fi/gists/posts/2022-01-25-folding-unfoldable.html
06:40:55 <iqubic> Isn't the identity for Set just an empty set?
06:42:18 <int-e> Foldable is different, the class never constructs new Foldable values.
06:42:47 <int-e> iqubic: I meant the identity function.
06:42:57 <iqubic> Oh. I see....
06:43:27 <int-e> Set has several semigroups... what's the identity for intersection? ;-)
06:44:34 <iqubic> I don't think you can have a monoid under intersection.
06:44:55 <int-e> Ah, but for some element types you can.
06:45:09 <iqubic> Oh? How?
06:45:14 × chexum quits (~quassel@gateway/tor-sasl/chexum) (Remote host closed the connection)
06:45:20 <EvanR> when set means "subset of some universe set" it works
06:45:36 chexum joins (~quassel@gateway/tor-sasl/chexum)
06:45:40 <EvanR> that's when intersection and complement really shine
06:45:47 <int-e> iqubic: they need to be finite, and then you can enumerate them all. (For Data.Set.Set that is.)
06:46:08 <iqubic> Ah, I see.
06:46:10 <EvanR> last years advent of code does agree with the finite xD
06:46:13 <EvanR> doesn't*
06:46:17 zmt00 joins (~zmt00@user/zmt00)
06:46:38 <EvanR> it had to sectioning off subsets of an infinite plane into two regions
06:46:47 <EvanR> ok I'm going to bed
06:46:49 <iqubic> It did?
06:46:56 <EvanR> yeah
06:47:02 × img quits (~img@user/img) (Quit: ZNC 1.8.2 - https://znc.in)
06:47:08 <iqubic> Which puzzle in 2020 wanted us to section off subsets of an infinite plane?
06:47:10 <[Leary]> It can also be done in general if you represent Set differently, E.g. `newtype Set a = Set (a -> Bool)`, or `data Set a = Set (Data.Set.Set a) | Complement (Data.Set.Set a)`.
06:47:14 <EvanR> 2021?
06:47:18 <int-e> You can also have a new type `data Set' a = Direct (Set a) | Complement (Set a)`, which will support union, intersection, and complenent
06:47:26 <[Leary]> Hah.
06:47:31 img joins (~img@user/img)
06:47:34 <iqubic> EvanR: It's to late for me to be up.
06:47:38 <int-e> (but not filter; if you want filter as well, you have to go [Leary]'s route)
06:47:39 freeside joins (~mengwong@pd907d273.dip0.t-ipconnect.de)
06:47:54 <iqubic> Which puzzle had us sectioning off subsets?
06:47:56 <int-e> the first one that is
06:48:44 <int-e> (I didn't read the second half of [Leary]'s message before hitting return...)
06:50:21 <EvanR> I think I was thinking of day 22
06:50:35 <int-e> Ah, `Finite` and `Cofinite` would be nice names for those constructors.
06:50:42 <EvanR> which wasn't a plane it was 3D space
06:52:03 <iqubic> EvanR: Yeah, that puzzle was very difficult.
06:52:36 bilegeek joins (~bilegeek@2600:1008:b08d:1565:29c1:7d26:b6e4:da2a)
06:52:59 <EvanR> i could have sworn there was a 2D puzzle which at least would benefit from treating "the rest of the world" as toggling from 0 to 1 or on to off
06:55:49 <iqubic> There was. Let me see if I can figure out which puzzle that was.
06:56:22 × merijn quits (~merijn@c-001-001-007.client.esciencecenter.eduvpn.nl) (Ping timeout: 272 seconds)
06:57:55 <EvanR> maybe it was glowing octopus or something
07:07:48 kenran joins (~user@user/kenran)
07:09:07 × kenran quits (~user@user/kenran) (Remote host closed the connection)
07:09:22 × freeside quits (~mengwong@pd907d273.dip0.t-ipconnect.de) (Ping timeout: 256 seconds)
07:10:23 <int-e> This? https://adventofcode.com/2021/day/20
07:10:44 <int-e> Where the actual input had the property that it would invert the empty space.
07:12:41 <int-e> (Which apparently I just hard-coded into my solution.)
07:13:47 <iqubic> Yeah, that..
07:18:54 × shriekingnoise quits (~shrieking@186.137.167.202) (Quit: Quit)
07:20:38 <iqubic> To make my solution to that more readable I used binary literals and numeric underscores and write literals like "0b111_111_111" and such
07:27:20 × chexum quits (~quassel@gateway/tor-sasl/chexum) (Ping timeout: 255 seconds)
07:27:20 × azimut quits (~azimut@gateway/tor-sasl/azimut) (Ping timeout: 255 seconds)
07:28:14 × zmt00 quits (~zmt00@user/zmt00) (Read error: Connection reset by peer)
07:28:24 <int-e> > map (foldl' (\x y -> 2*x + if y == '.' then 0 else 1) 0 . replicate 9) ".#"
07:28:26 <lambdabot> [0,511]
07:29:07 <int-e> (that `foldl'` is something I actually used)
07:29:17 chexum joins (~quassel@gateway/tor-sasl/chexum)
07:29:30 zmt00 joins (~zmt00@user/zmt00)
07:31:14 peutri_ is now known as peutri
07:31:23 × ec quits (~ec@gateway/tor-sasl/ec) (Ping timeout: 255 seconds)
07:31:23 × ChaiTRex quits (~ChaiTRex@user/chaitrex) (Ping timeout: 255 seconds)
07:31:43 <int-e> https://paste.tomsmeding.com/bt3J2YXR -- not pretty, and, as I said, hard-coding the outside. (This is based on padding, so it alternates between padding with '.' and with '#')
07:32:00 <int-e> Not efficient either, it didn't have to be.
07:32:17 × stiell quits (~stiell@gateway/tor-sasl/stiell) (Ping timeout: 255 seconds)
07:32:32 ec joins (~ec@gateway/tor-sasl/ec)
07:32:36 ChaiTRex joins (~ChaiTRex@user/chaitrex)
07:33:31 <int-e> (I didn't even pack the rules into a vector or array or bytestring)
07:35:28 stiell joins (~stiell@gateway/tor-sasl/stiell)
07:39:00 × xff0x_ quits (~xff0x@125x103x176x34.ap125.ftth.ucom.ne.jp) (Ping timeout: 252 seconds)
07:41:10 xff0x_ joins (~xff0x@125x103x176x34.ap125.ftth.ucom.ne.jp)
07:47:24 tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
07:49:19 azimut joins (~azimut@gateway/tor-sasl/azimut)
07:50:22 lortabac joins (~lortabac@2a01:e0a:541:b8f0:9454:4b6:946e:87e6)
07:52:44 merijn joins (~merijn@c-001-001-007.client.esciencecenter.eduvpn.nl)
07:53:47 michalz joins (~michalz@185.246.204.89)
07:54:43 mncheck joins (~mncheck@193.224.205.254)
08:02:33 gmg joins (~user@user/gehmehgeh)
08:04:10 son0p joins (~ff@2604:3d08:5b7f:5540::4026)
08:07:42 nschoe joins (~q@141.101.51.197)
08:07:53 trev joins (~trev@user/trev)
08:12:41 × bilegeek quits (~bilegeek@2600:1008:b08d:1565:29c1:7d26:b6e4:da2a) (Quit: Leaving)
08:13:27 acidjnk joins (~acidjnk@p200300d6e7137a818d61d9f76e9e41fa.dip0.t-ipconnect.de)
08:13:53 mmhat joins (~mmh@p200300f1c718063cee086bfffe095315.dip0.t-ipconnect.de)
08:19:53 × trev quits (~trev@user/trev) (Remote host closed the connection)
08:21:10 trev joins (~trev@user/trev)
08:25:50 × merijn quits (~merijn@c-001-001-007.client.esciencecenter.eduvpn.nl) (Ping timeout: 246 seconds)
08:29:07 × razetime quits (~quassel@49.207.203.213) (Quit: https://quassel-irc.org - Chat comfortably. Anywhere.)
08:41:11 coot joins (~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba)
08:43:16 × gmg quits (~user@user/gehmehgeh) (Remote host closed the connection)
08:44:16 gmg joins (~user@user/gehmehgeh)
08:44:42 avicenzi joins (~avicenzi@2a00:ca8:a1f:b004:5b49:4996:51e:12cd)
08:44:49 × Sgeo_ quits (~Sgeo@user/sgeo) (Read error: Connection reset by peer)
08:50:50 machinedgod joins (~machinedg@d198-53-218-113.abhsia.telus.net)
08:53:57 × eggplantade quits (~Eggplanta@104-55-37-220.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
08:54:22 MajorBiscuit joins (~MajorBisc@2001:1c00:2404:ed00:28e1:ad14:ec67:539e)
08:56:22 × machinedgod quits (~machinedg@d198-53-218-113.abhsia.telus.net) (Ping timeout: 252 seconds)
08:58:12 fserucas joins (~fserucas@2001:818:e376:a400:fb92:70c1:dd88:c7d7)
08:58:14 machinedgod joins (~machinedg@d198-53-218-113.abhsia.telus.net)
08:58:14 × tessier quits (~treed@98.171.210.130) (Ping timeout: 260 seconds)
08:58:44 × glguy quits (~glguy@libera/staff-emeritus/glguy) (Ping timeout: 256 seconds)
08:58:57 × fserucas quits (~fserucas@2001:818:e376:a400:fb92:70c1:dd88:c7d7) (Client Quit)
08:59:06 glguy_ joins (~glguy@libera/staff-emeritus/glguy)
09:00:04 × VanceIsM7[m] quits (~vanceism7@2001:470:69fc:105::3ad) (Quit: You have been kicked for being idle)
09:00:04 × coot quits (~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba) (Quit: coot)
09:00:18 coot joins (~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba)
09:02:41 merijn joins (~merijn@86-86-29-250.fixed.kpn.net)
09:10:31 × use-value quits (~Thunderbi@2a00:23c6:8a03:2f01:40bc:fcc3:815f:f6e9) (Remote host closed the connection)
09:10:50 use-value joins (~Thunderbi@2a00:23c6:8a03:2f01:40bc:fcc3:815f:f6e9)
09:13:57 nut joins (~nut@roc37-h01-176-170-197-243.dsl.sta.abo.bbox.fr)
09:22:05 × bitdex quits (~bitdex@gateway/tor-sasl/bitdex) (Remote host closed the connection)
09:23:23 bitdex joins (~bitdex@gateway/tor-sasl/bitdex)
09:25:22 × zer0bitz_ quits (~zer0bitz@196.244.192.57) (Ping timeout: 256 seconds)
09:25:56 × gmg quits (~user@user/gehmehgeh) (Quit: Leaving)
09:30:32 fserucas joins (~fserucas@2001:818:e376:a400:fb92:70c1:dd88:c7d7)
09:31:25 Guest23 joins (~Guest23@27.57.46.219)
09:32:54 × Guest23 quits (~Guest23@27.57.46.219) (Remote host closed the connection)
09:34:52 × Xeroine_ quits (~Xeroine@user/xeroine) (Ping timeout: 252 seconds)
09:35:14 Xeroine joins (~Xeroine@user/xeroine)
09:36:26 chele joins (~chele@user/chele)
09:37:21 × jonathanx quits (~jonathan@h-178-174-176-109.A357.priv.bahnhof.se) (Remote host closed the connection)
09:37:54 × tzh quits (~tzh@c-24-21-73-154.hsd1.or.comcast.net) (Quit: zzz)
09:39:30 tessier joins (~treed@98.171.210.130)
09:45:30 × xff0x_ quits (~xff0x@125x103x176x34.ap125.ftth.ucom.ne.jp) (Ping timeout: 252 seconds)
09:46:28 xff0x_ joins (~xff0x@125x103x176x34.ap125.ftth.ucom.ne.jp)
09:48:28 jonathanx joins (~jonathan@h-178-174-176-109.A357.priv.bahnhof.se)
09:52:44 kmein_ is now known as kmein
09:54:25 eggplantade joins (~Eggplanta@2600:1700:38c5:d800:f49d:401d:a888:f078)
09:57:31 × ft quits (~ft@p4fc2a257.dip0.t-ipconnect.de) (Quit: leaving)
09:58:48 × eggplantade quits (~Eggplanta@2600:1700:38c5:d800:f49d:401d:a888:f078) (Ping timeout: 256 seconds)
10:03:29 teo joins (~teo@user/teo)
10:15:52 × chele quits (~chele@user/chele) (Ping timeout: 272 seconds)
10:18:08 × troydm quits (~troydm@host-176-37-124-197.b025.la.net.ua) (Ping timeout: 246 seconds)
10:20:17 × Lord_of_Life quits (~Lord@user/lord-of-life/x-2819915) (Ping timeout: 268 seconds)
10:22:44 Lord_of_Life joins (~Lord@user/lord-of-life/x-2819915)
10:24:14 × MajorBiscuit quits (~MajorBisc@2001:1c00:2404:ed00:28e1:ad14:ec67:539e) (Ping timeout: 260 seconds)
10:24:55 CiaoSen joins (~Jura@p200300c9571a2c002a3a4dfffe84dbd5.dip0.t-ipconnect.de)
10:28:21 dextaa2 joins (~DV@user/dextaa)
10:30:23 × dextaa quits (~DV@user/dextaa) (Ping timeout: 246 seconds)
10:30:23 dextaa2 is now known as dextaa
10:33:10 × zmt00 quits (~zmt00@user/zmt00) (Ping timeout: 252 seconds)
10:33:37 zmt00 joins (~zmt00@user/zmt00)
10:33:44 × natto quits (~natto@140.238.225.67) (Quit: a.)
10:34:20 natto joins (~natto@140.238.225.67)
10:37:54 × xff0x_ quits (~xff0x@125x103x176x34.ap125.ftth.ucom.ne.jp) (Ping timeout: 256 seconds)
10:38:40 × natto quits (~natto@140.238.225.67) (Client Quit)
10:40:32 natto joins (~natto@140.238.225.67)
10:41:06 jakalx parts (~jakalx@base.jakalx.net) ()
10:42:07 jakalx joins (~jakalx@base.jakalx.net)
10:44:08 × natto quits (~natto@140.238.225.67) (Client Quit)
10:45:19 natto joins (~natto@140.238.225.67)
10:47:54 × natto quits (~natto@140.238.225.67) (Client Quit)
10:48:26 natto joins (~natto@140.238.225.67)
10:51:14 chele joins (~chele@user/chele)
10:51:44 × acidjnk quits (~acidjnk@p200300d6e7137a818d61d9f76e9e41fa.dip0.t-ipconnect.de) (Ping timeout: 246 seconds)
10:52:43 × econo quits (uid147250@user/econo) (Quit: Connection closed for inactivity)
10:59:44 × use-value quits (~Thunderbi@2a00:23c6:8a03:2f01:40bc:fcc3:815f:f6e9) (Quit: use-value)
11:09:27 ubert joins (~Thunderbi@p200300ecdf264ebd3096e1a4e8bd793f.dip0.t-ipconnect.de)
11:16:52 × natto quits (~natto@140.238.225.67) (Quit: a.)
11:19:33 natto joins (~natto@140.238.225.67)
11:29:06 xff0x_ joins (~xff0x@ai071162.d.east.v6connect.net)
11:33:24 × hueso quits (~root@user/hueso) (Ping timeout: 260 seconds)
11:34:02 × CiaoSen quits (~Jura@p200300c9571a2c002a3a4dfffe84dbd5.dip0.t-ipconnect.de) (Ping timeout: 252 seconds)
11:34:47 hueso joins (~root@user/hueso)
11:40:43 <mniip> what's a non-terrible way to write case x of { S.Bin _ S.Tip x S.Tip -> Just x; _ -> Nothing }
11:41:17 <mniip> most operations on sets want to recurse on the branches first
11:44:09 × tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
11:49:27 CiaoSen joins (~Jura@p200300c9571a2c002a3a4dfffe84dbd5.dip0.t-ipconnect.de)
11:49:33 tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
11:52:27 perrierjouet joins (~perrier-j@modemcable048.127-56-74.mc.videotron.ca)
11:56:26 MajorBiscuit joins (~MajorBisc@2001:1c00:2404:ed00:28e1:ad14:ec67:539e)
11:56:29 eggplantade joins (~Eggplanta@2600:1700:38c5:d800:f49d:401d:a888:f078)
11:57:43 × hueso quits (~root@user/hueso) (Ping timeout: 268 seconds)
12:00:55 × eggplantade quits (~Eggplanta@2600:1700:38c5:d800:f49d:401d:a888:f078) (Ping timeout: 260 seconds)
12:01:48 hueso joins (~root@user/hueso)
12:05:16 jao joins (~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net)
12:18:02 × mmhat quits (~mmh@p200300f1c718063cee086bfffe095315.dip0.t-ipconnect.de) (Ping timeout: 252 seconds)
12:18:24 mmhat joins (~mmh@p200300f1c7180627ee086bfffe095315.dip0.t-ipconnect.de)
12:21:07 × jpds2 quits (~jpds@gateway/tor-sasl/jpds) (Remote host closed the connection)
12:21:24 jpds2 joins (~jpds@gateway/tor-sasl/jpds)
12:31:16 Guest75 joins (Guest75@2a01:7e01::f03c:92ff:fe5d:7b18)
12:36:26 JordiGH joins (~jordi@user/jordigh)
12:44:16 × JordiGH quits (~jordi@user/jordigh) (Ping timeout: 256 seconds)
12:45:58 × mauke quits (~mauke@user/mauke) (Quit: Reconnecting)
12:46:07 mauke joins (~mauke@user/mauke)
12:46:34 × mauke quits (~mauke@user/mauke) (Client Quit)
12:47:20 johnw joins (~johnw@2600:1700:cf00:db0:10fb:30b:5c13:20f5)
12:48:38 × bitdex quits (~bitdex@gateway/tor-sasl/bitdex) (Remote host closed the connection)
12:49:35 mauke joins (~mauke@user/mauke)
12:49:51 bitdex joins (~bitdex@gateway/tor-sasl/bitdex)
12:53:32 × Alex_test quits (~al_test@178.34.161.14) (Quit: ;-)
12:54:09 jonathanx_ joins (~jonathan@94.234.101.245)
12:54:35 × AlexZenon quits (~alzenon@178.34.161.14) (Quit: ;-)
12:55:54 × AlexNoo quits (~AlexNoo@178.34.161.14) (Remote host closed the connection)
12:57:22 × jonathanx quits (~jonathan@h-178-174-176-109.A357.priv.bahnhof.se) (Ping timeout: 272 seconds)
12:58:58 × bitdex quits (~bitdex@gateway/tor-sasl/bitdex) (Quit: = "")
12:59:19 cowboy8625 joins (~cowboy@96-2-208-2-static.midco.net)
13:01:27 [itchyjunk] joins (~itchyjunk@user/itchyjunk/x-7353470)
13:04:03 × Guest75 quits (Guest75@2a01:7e01::f03c:92ff:fe5d:7b18) (Ping timeout: 260 seconds)
13:04:40 jonathanx__ joins (~jonathan@h-178-174-176-109.A357.priv.bahnhof.se)
13:07:30 × jonathanx_ quits (~jonathan@94.234.101.245) (Ping timeout: 256 seconds)
13:08:06 Unicorn_Princess joins (~Unicorn_P@user/Unicorn-Princess/x-3540542)
13:17:30 freeside joins (~mengwong@37.230.10.52)
13:20:12 JordiGH joins (~jordi@user/jordigh)
13:21:56 × stiell quits (~stiell@gateway/tor-sasl/stiell) (Ping timeout: 255 seconds)
13:22:23 × jpds2 quits (~jpds@gateway/tor-sasl/jpds) (Ping timeout: 255 seconds)
13:23:09 jpds2 joins (~jpds@gateway/tor-sasl/jpds)
13:23:39 stiell joins (~stiell@gateway/tor-sasl/stiell)
13:23:45 acidjnk joins (~acidjnk@p200300d6e7137a66c0eb5a8137ed3b6d.dip0.t-ipconnect.de)
13:28:03 troydm joins (~troydm@host-176-37-124-197.b025.la.net.ua)
13:29:02 AlexNoo joins (~AlexNoo@178.34.161.14)
13:32:45 × ystael quits (~ystael@user/ystael) (Ping timeout: 260 seconds)
13:37:14 × azimut quits (~azimut@gateway/tor-sasl/azimut) (Ping timeout: 255 seconds)
13:38:46 × tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
13:39:03 × merijn quits (~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 256 seconds)
13:40:27 AlexZenon joins (~alzenon@178.34.161.14)
13:42:48 tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
13:43:24 bontaq joins (~user@ool-45779fe5.dyn.optonline.net)
13:43:54 × tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Client Quit)
13:44:59 <chreekat> mniip: PatternSynonyms perhaps?
13:45:12 <chreekat> or ViewPatterns
13:45:22 <mniip> that helps how?
13:45:28 Alex_test joins (~al_test@178.34.161.14)
13:45:37 <mniip> the problem is I don't want to have to use Data.Set.Internal
13:45:41 <chreekat> oh
13:45:54 <chreekat> well then I don't understand the problem well enough
13:46:14 × Alex_test quits (~al_test@178.34.161.14) (Client Quit)
13:46:34 Alex_test joins (~al_test@178.34.161.14)
13:49:02 <c_wraith> mniip: but that's an internal detail. the root of the tree isn't something you're supposed to care about
13:49:18 <c_wraith> Or the leaves, for that matter
13:49:20 × freeside quits (~mengwong@37.230.10.52) (Ping timeout: 268 seconds)
13:49:48 <mniip> I want a function that extracts the only element of a set, but in case there are more, it doesn't traverse the set more that necessary
13:49:57 freeside joins (~mengwong@37.230.10.52)
13:50:08 × inversed quits (~inversed@bcdcac82.skybroadband.com) (Ping timeout: 260 seconds)
13:50:12 <mniip> I guess I could do a S.findMin guarded behind S.size
13:50:30 <c_wraith> yeah, that's how you'd express that.
13:50:36 shriekingnoise joins (~shrieking@186.137.167.202)
13:51:32 <mniip> this has the behavior of case x of { S.Bin sz l x _ | sz == 1 -> case l of { S.Tip -> Just x; S.Bin -> unreachable }; _ -> Nothing }
13:51:38 <mniip> berable I guess
13:52:46 inversed joins (~inversed@bcdcac82.skybroadband.com)
13:55:13 <c_wraith> eh? if the size is 1, l should be Tip
13:55:26 <c_wraith> Oh, nevermind. It's clearly too easy for me to be reading
13:57:15 Erutuon_ joins (~Erutuon@user/erutuon)
14:04:57 merijn joins (~merijn@86-86-29-250.fixed.kpn.net)
14:08:33 × mmhat quits (~mmh@p200300f1c7180627ee086bfffe095315.dip0.t-ipconnect.de) (Quit: WeeChat 3.7.1)
14:09:21 × pavonia quits (~user@user/siracusa) (Quit: Bye!)
14:22:07 thyriaen joins (~thyriaen@2a01:aea0:dd4:4bae:6245:cbff:fe9f:48b1)
14:23:47 thegeekinside joins (~thegeekin@189.217.82.244)
14:25:24 × nut quits (~nut@roc37-h01-176-170-197-243.dsl.sta.abo.bbox.fr) (Ping timeout: 272 seconds)
14:25:42 × Vajb quits (~Vajb@2001:999:504:3ad6:52a4:a3b5:32d8:e74d) (Ping timeout: 256 seconds)
14:28:18 Vajb joins (~Vajb@2001:999:250:c9:8588:6e93:7809:7816)
14:30:10 × thegeekinside quits (~thegeekin@189.217.82.244) (Remote host closed the connection)
14:30:21 thegeekinside joins (~thegeekin@189.217.82.244)
14:31:27 ystael joins (~ystael@user/ystael)
14:36:14 × mncheck quits (~mncheck@193.224.205.254) (Remote host closed the connection)
14:36:42 mncheck joins (~mncheck@193.224.205.254)
14:38:57 × merijn quits (~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 252 seconds)
14:43:25 doyougnu joins (~doyougnu@cpe-74-69-132-225.stny.res.rr.com)
14:53:31 merijn joins (~merijn@86-86-29-250.fixed.kpn.net)
14:58:27 × coot quits (~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba) (Quit: coot)
14:58:58 × merijn quits (~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 272 seconds)
15:03:21 × chexum quits (~quassel@gateway/tor-sasl/chexum) (Remote host closed the connection)
15:03:40 × ystael quits (~ystael@user/ystael) (Ping timeout: 256 seconds)
15:04:00 chexum joins (~quassel@gateway/tor-sasl/chexum)
15:08:43 <dminuoso> mniip: You could use MonadComprehensions together with: [r | S.Bin _ S.Tip x S.Tip <- x]
15:09:07 <dminuoso> Oh slight typo in the pattern, but you get the idea
15:09:24 <mniip> what
15:09:49 <mniip> my main issue is with breaking the Data.Set abstraction, not syntax sugar
15:09:53 <dminuoso> Oh I see.
15:14:55 <dminuoso> Indeed it seems like size guarded findMin is your best bet if sticking with public API.
15:17:11 Guest23 joins (~Guest23@27.57.46.219)
15:18:45 tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
15:20:24 festive_kurbus joins (~festive_k@user/kurbus)
15:33:51 merijn joins (~merijn@86-86-29-250.fixed.kpn.net)
15:38:15 × gnyeki quits (~gnyeki@user/gnyeki) (Quit: leaving)
15:39:06 × merijn quits (~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 268 seconds)
15:41:48 gnyeki joins (~gnyeki@user/gnyeki)
15:50:09 charmelon joins (~charmelon@136.233.9.107)
15:51:03 × charmelon quits (~charmelon@136.233.9.107) (Remote host closed the connection)
15:51:32 × freeside quits (~mengwong@37.230.10.52) (Ping timeout: 272 seconds)
15:52:20 jakalx parts (~jakalx@base.jakalx.net) ()
15:52:42 jakalx joins (~jakalx@base.jakalx.net)
16:02:05 × lortabac quits (~lortabac@2a01:e0a:541:b8f0:9454:4b6:946e:87e6) (Quit: WeeChat 2.8)
16:04:18 coot joins (~coot@213.134.171.3)
16:06:19 ystael joins (~ystael@user/ystael)
16:09:17 paolino joins (~paolo@5.157.115.53)
16:10:36 <Athas> Are there any GHC binary tarballs that work on RHEL 8?
16:10:38 rcharles joins (~user@pool-71-166-43-226.bltmmd.fios.verizon.net)
16:12:02 merijn joins (~merijn@86-86-29-250.fixed.kpn.net)
16:13:14 vpan joins (~0@212.117.1.172)
16:14:14 × tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
16:15:04 nut joins (~nut@roc37-h01-176-170-197-243.dsl.sta.abo.bbox.fr)
16:15:39 × festive_kurbus quits (~festive_k@user/kurbus) (Quit: Client closed)
16:21:35 eggplantade joins (~Eggplanta@2600:1700:38c5:d800:f49d:401d:a888:f078)
16:22:34 tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
16:25:45 azimut joins (~azimut@gateway/tor-sasl/azimut)
16:33:50 festive_kurbus joins (~festive_k@user/kurbus)
16:37:52 × nschoe quits (~q@141.101.51.197) (Ping timeout: 252 seconds)
16:45:22 × merijn quits (~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 272 seconds)
16:51:55 mc47 joins (~mc47@xmonad/TheMC47)
16:52:05 <monochrom> I don't know but there is some chance one of {Fedora, CentOS} may work.
16:54:09 <geekosaur> low chance; RHEL8 is ancient
16:54:25 <geekosaur> well, probably uo to date by their release schedule but all ancient software
16:54:49 <geekosaur> hm, centos should work but I doubt there's a release for that either
16:54:59 <geekosaur> old gmp, in particular
16:55:38 <monochrom> There is a GHC binary for CentOS 7.
16:58:00 merijn joins (~merijn@86-86-29-250.fixed.kpn.net)
16:58:26 <mauke> "Since joining Epic Games in late 2021, I have been involved in the design and development of Verse, a new, declarative programming language that Epic plans to use as the language of the metaverse." <- :-( what a disappointing summary
16:58:41 <monochrom> haha
16:58:42 themc47 joins (~mc47@xmonad/TheMC47)
16:59:23 <monochrom> What's the context? Who's the intended audience?
16:59:50 × Guest23 quits (~Guest23@27.57.46.219) (Ping timeout: 256 seconds)
16:59:50 <mauke> no idea, found it in a SPJ video on youtube
16:59:56 <int-e> does "meta" work like "co", where "cocoverse" reduces to "verse"?
17:00:27 × mc47 quits (~mc47@xmonad/TheMC47) (Read error: Connection reset by peer)
17:00:42 <monochrom> Hrm so that's why it's called Verse. I thought it referred to having verses in poems etc.
17:00:59 monochrom goes write a multiverse poem!
17:01:17 <monochrom> (one more great tautology)
17:01:44 <shapr> @quote
17:01:44 <lambdabot> sigfpe says: It's like deciding that the prime numbers bigger than 20 are interesting for some reason, and then choosing to name them "the primes".
17:01:48 <mauke> "Understanding join points can help you are a programmer too, because you can write code confident that it will optimise well. You will discover a rather compelling example this."
17:01:51 <mauke> who writes these
17:02:16 × themc47 quits (~mc47@xmonad/TheMC47) (Remote host closed the connection)
17:02:22 <int-e> . o O ( Verse programs must be written in iambic pentameter. )
17:02:24 <monochrom> Prime numbers bigger than 2 are interesting for some reason, and I choose to name them "the odd primes". >:)
17:02:35 themc47 joins (~mc47@xmonad/TheMC47)
17:02:49 <int-e> monochrom: that's unfair to 2.
17:03:01 <mauke> which prime is the oddest?
17:03:10 <int-e> (which, as you are certainly aware, is a pretty odd prime)
17:03:12 <mauke> is it 2?
17:04:15 <[exa]> mauke: 1
17:04:42 [exa] runs away from the angered crowd of mathematicians
17:04:51 <mauke> sub putStr{-print@_}q o-}=0;main=do;putStr"JAHP\n"
17:05:25 int-e locks [exa] up in an Euclidean domain for safety.
17:07:21 <monochrom> "You will discover a rather compelling example this" is probably from Yoda >:)
17:07:53 × eggplantade quits (~Eggplanta@2600:1700:38c5:d800:f49d:401d:a888:f078) (Remote host closed the connection)
17:08:23 <monochrom> But I can also agree that it's from an AI that learned from Yoda.
17:08:44 × ec quits (~ec@gateway/tor-sasl/ec) (Ping timeout: 255 seconds)
17:09:30 ec joins (~ec@gateway/tor-sasl/ec)
17:14:51 aeroplane joins (~user@user/aeroplane)
17:15:04 × tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
17:16:54 × chele quits (~chele@user/chele) (Remote host closed the connection)
17:17:58 × CiaoSen quits (~Jura@p200300c9571a2c002a3a4dfffe84dbd5.dip0.t-ipconnect.de) (Ping timeout: 256 seconds)
17:20:30 tzh joins (~tzh@c-24-21-73-154.hsd1.wa.comcast.net)
17:23:07 × paolino quits (~paolo@5.157.115.53) (Quit: Leaving)
17:28:33 × sayola quits (~sayola@dslb-088-064-186-217.088.064.pools.vodafone-ip.de) (Read error: Connection reset by peer)
17:30:49 sayola joins (~sayola@dslb-088-064-186-217.088.064.pools.vodafone-ip.de)
17:33:16 × themc47 quits (~mc47@xmonad/TheMC47) (Remote host closed the connection)
17:33:35 themc47 joins (~mc47@xmonad/TheMC47)
17:35:01 Guest75 joins (Guest75@2a01:7e01::f03c:92ff:fe5d:7b18)
17:36:18 × merijn quits (~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 252 seconds)
17:37:16 × themc47 quits (~mc47@xmonad/TheMC47) (Remote host closed the connection)
17:37:35 themc47 joins (~mc47@xmonad/TheMC47)
17:40:27 <aeroplane> I've removed brackets and then this code causes memory leak, http://ix.io/4iBr/haskell
17:40:27 <aeroplane>
17:41:16 <aeroplane> Make sure to run it like this or else it will blow up your RAM, $ sh ghc -O -rtsopts haskell.hs;./haskell +RTS -M4m -RTS
17:41:27 <monochrom> I am seeing fib x = (fib x) - 1 + (fib x) - 2.
17:41:42 <monochrom> I would be surprised if it would terminate at all.
17:42:15 <aeroplane> arguments still confuses me
17:43:48 × festive_kurbus quits (~festive_k@user/kurbus) (Quit: Client closed)
17:44:03 <int-e> For the most part, spaces are irrelevant in Haskell's syntax; there's no difference between `fib x-1 + fib x-2` and `fib x - 1 + fib x - 2`.
17:44:41 <monochrom> A good white lie (much better than competing white lies) is that between "fib" and "x" there is an invisible operator for function application and its operator precedence is very high. This explains why "fib x - 1" becomes "(fib x) - 1" not "fib (x-1)".
17:44:44 <int-e> (spaces are of course relevant for indentation and for a few extensions like NegativeLiterals and TypeApplications... am I forgetting something?)
17:45:16 <int-e> % :set -XNegativeLiterals
17:45:16 <yahb2> <no output>
17:45:21 econo joins (uid147250@user/econo)
17:45:22 <int-e> % id -1
17:45:22 <yahb2> -1
17:45:29 <int-e> % id - 1 -- confusingly :-/
17:45:29 <yahb2> <interactive>:36:1: error: ; • No instance for (Show (a0 -> a0)) ; arising from a use of ‘Yahb2Defs.limitedPrint’ ; (maybe you haven't applied a function to enough arguments?) ;...
17:45:58 <monochrom> "But but isn't space that operator?" is a pretty good white lie too. (Until you find out that length"abc" works, no space.)
17:46:02 <int-e> That is an extension though.
17:46:14 <int-e> (the negative literals thing)
17:46:27 <int-e> > length"abc"
17:46:29 <lambdabot> 3
17:46:31 <int-e> > ord'a'
17:46:32 <lambdabot> error: Variable not in scope: ord'a'
17:46:36 <int-e> :-/
17:46:56 <monochrom> > let ord'a' x = ord x in ord'a' 'a'
17:46:57 <lambdabot> 97
17:46:59 <monochrom> >:)
17:47:12 festive_kurbus joins (~festive_k@user/kurbus)
17:47:28 <monochrom> Recall oleg'case'works :)
17:47:53 <mauke> rock'n'roll
17:48:24 <int-e> monochrom: I mean, I knew that it wouldn't work, and why.
17:48:31 <monochrom> OK heh
17:48:42 mc47 joins (~mc47@xmonad/TheMC47)
17:49:05 <int-e> > let foo x f = f x in foo 1id
17:49:06 <lambdabot> 1
17:49:46 <int-e> fortunately, these corner cases are not often exercised in real world code
17:49:47 × jmdaemon quits (~jmdaemon@user/jmdaemon) (Ping timeout: 265 seconds)
17:49:50 <monochrom> Unpopular opinion: Use parentheses to avoid spaces! map(f)(x:xs) = x : map(f)(xs)
17:50:11 × mc47 quits (~mc47@xmonad/TheMC47) (Remote host closed the connection)
17:50:14 <monochrom> Did you know: Landin legit wrote that in papers.
17:50:26 <monochrom> Or rather, wrote like that. "f(x)(y)".
17:50:35 mc47 joins (~mc47@xmonad/TheMC47)
17:50:36 <int-e> dym map(f)(x:xs)=x:map(f)xs
17:50:53 <monochrom> Yeah
17:51:14 × themc47 quits (~mc47@xmonad/TheMC47) (Ping timeout: 272 seconds)
17:51:20 <mauke> why not x:(map)f(xs)
17:51:45 <int-e> why not indeed
17:51:52 <int-e> or (x):(map)(f)(xs)
17:51:54 <mauke> x:f`map`xs
17:52:18 <monochrom> (:)(x)(f`map`xs)
17:52:19 <int-e> (:map(f)xs)x
17:52:53 <monochrom> OK sorry I'm degenerating to s-expressions.
17:52:54 <int-e> (and people complain about Perl being line noise)
17:53:08 × JordiGH quits (~jordi@user/jordigh) (Ping timeout: 246 seconds)
17:53:30 <monochrom> I complain about COBOL being word noise. >:)
17:53:47 × vpan quits (~0@212.117.1.172) (Quit: Leaving.)
17:54:45 <monochrom> Hey I'm going to coin "readable noise" as a derogatory term!
17:58:57 glguy_ is now known as glguy
18:01:04 × thegeekinside quits (~thegeekin@189.217.82.244) (Remote host closed the connection)
18:01:14 eggplantade joins (~Eggplanta@2600:1700:38c5:d800:f49d:401d:a888:f078)
18:02:43 merijn joins (~merijn@86-86-29-250.fixed.kpn.net)
18:07:42 × merijn quits (~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 272 seconds)
18:15:33 JordiGH joins (~jordi@user/jordigh)
18:16:03 × JordiGH quits (~jordi@user/jordigh) (Remote host closed the connection)
18:16:22 JordiGH joins (~jordi@user/jordigh)
18:20:22 × doyougnu quits (~doyougnu@cpe-74-69-132-225.stny.res.rr.com) (Ping timeout: 272 seconds)
18:21:53 fizbin joins (~fizbin@user/fizbin)
18:24:48 <fizbin> I have a question about laziness and Control.Monad.State.
18:25:56 <fizbin> Can someone explain to me the difference among the four possibilities: Control.Monad.State.Lazy.modify, Control.Monad.State.Lazy.modify', Control.Monad.State.Strict.modify, Control.Monad.State.Strict.modify'
18:26:42 <fizbin> Specifically, what exactly ends up lazy in the middle two (Lazy.modify' vs Strict.modify) there?
18:28:57 <EvanR> I looked at the source, so now I know xD
18:30:40 <aeroplane> Thanks for this awesome discussion about my ques, really understood about arguments now. Since in "fib x + 1", fib takes single argument, ∴ + is not an argument to 'fib'. And since λ is a func prog lang, ∴ order of execution is from left to right in sequence
18:30:58 thegeekinside joins (~thegeekin@189.217.82.244)
18:31:13 <geekosaur> fizbin, there are two things that can be strict vs. lazy: the (>>=) operation, and updating the state
18:31:35 <geekosaur> Strict vs. Lazy is the former, and modify vs. modify' is the latter
18:31:55 × nut quits (~nut@roc37-h01-176-170-197-243.dsl.sta.abo.bbox.fr) (Quit: WeeChat 2.3)
18:32:13 <fizbin> I guess I'm a little confused on what it means for (>>=) to be lazy then.
18:32:48 <fizbin> Because I thought that (>>=) in Control.Monad.State being lazy meant being lazy in the state.
18:32:53 × fserucas quits (~fserucas@2001:818:e376:a400:fb92:70c1:dd88:c7d7) (Ping timeout: 252 seconds)
18:33:44 <geekosaur> I think it is, but in a different place from modify/modify' ?
18:36:20 merijn joins (~merijn@86-86-29-250.fixed.kpn.net)
18:36:46 × mc47 quits (~mc47@xmonad/TheMC47) (Remote host closed the connection)
18:36:49 <EvanR> lazy >>= doesn't actual touch the state
18:37:05 mc47 joins (~mc47@xmonad/TheMC47)
18:37:09 <EvanR> it defers the continuation entirely
18:37:36 <geekosaur> there you go, then
18:38:43 <EvanR> oof, I'm looking at the code for `state'
18:39:59 <EvanR> state f = get >>= \s -> let ~(a, s') = f s in put s' >> return a
18:41:31 <mauke> inb4 backwards state monad
18:41:34 × merijn quits (~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 252 seconds)
18:41:57 <dminuoso> fizbin: Lets first talk about modify vs modify'. The difference here, is that one is strict in the state itself, so `modify f`, f is applied *strictly* to the state.
18:42:44 <dminuoso> modify' f = do { s <- get; put $! f s }
18:42:47 <dminuoso> modify f = do { s <- get; put $ f s }
18:42:54 × festive_kurbus quits (~festive_k@user/kurbus) (Quit: Client closed)
18:44:31 ft joins (~ft@p4fc2a257.dip0.t-ipconnect.de)
18:46:17 festive_kurbus joins (~festive_k@user/kurbus)
18:49:16 × mc47 quits (~mc47@xmonad/TheMC47) (Remote host closed the connection)
18:49:35 mc47 joins (~mc47@xmonad/TheMC47)
18:51:19 <EvanR> and State.Lazy >>= also has a similar ~ in the definition of >>=
18:52:05 <EvanR> much lazy
18:52:46 × mc47 quits (~mc47@xmonad/TheMC47) (Client Quit)
18:55:12 × Erutuon_ quits (~Erutuon@user/erutuon) (Ping timeout: 272 seconds)
18:57:44 × rcharles quits (~user@pool-71-166-43-226.bltmmd.fios.verizon.net) (Ping timeout: 272 seconds)
18:58:47 <monochrom> EvanR: Yes, State.Lazy allows left recursion. foo = do { xs <- foo; pure (0:xs) } gives you an infinite list.
18:59:18 tomokojun joins (~tomokojun@75.164.52.103)
18:59:42 <EvanR> fizbin, probably a giant gotcha is: even "Strict State" is particularly lazy with the state by default
19:00:26 <glguy> fizbin: The Lazy and Strict in the module names refers to being lazy in the tuple part of (s -> (a,s))
19:00:33 <glguy> and not to being strict/lazy in the state value itself
19:01:58 <glguy> so consider this from Control.Monad.State.Lazy
19:01:59 <glguy> >>> execState (undefined >> put 'a') undefined
19:02:04 <glguy> evaluates to 'a'
19:02:29 <glguy> it doesn't matter than the computation before put 'a' wasn't defined as it wasn't needed; put ignored it
19:03:08 <glguy> but that would have been undefined in the Strict state case
19:03:28 <glguy> In the strict state case, you can still be lazy in the state value
19:03:29 <glguy> >>> execState (put 'a') undefined
19:03:30 × AkechiShiro quits (~licht@user/akechishiro) (Ping timeout: 260 seconds)
19:03:32 <glguy> 'a'
19:04:10 × Adran quits (adran@botters/adran) (Ping timeout: 252 seconds)
19:04:12 AkechiShiro joins (~licht@user/akechishiro)
19:04:18 Erutuon_ joins (~Erutuon@user/erutuon)
19:04:19 × nisstyre quits (wes@user/nisstyre) (Ping timeout: 256 seconds)
19:05:22 Adran joins (~adran@botters/adran)
19:05:38 <EvanR> >>> execState (do put undefined; put 'a') 'b'
19:05:44 <EvanR> > execState (do put undefined; put 'a') 'b'
19:05:46 <lambdabot> 'a'
19:07:18 jakalx parts (~jakalx@base.jakalx.net) (Error from remote client)
19:08:43 elevenkb joins (~elevenkb@105.224.37.83)
19:08:59 <EvanR> > execState (do modify (+1); put 3) undefined
19:09:01 <lambdabot> 3
19:10:39 Tuplanolla joins (~Tuplanoll@91-159-68-152.elisa-laajakaista.fi)
19:11:12 doyougnu joins (~doyougnu@cpe-74-69-132-225.stny.res.rr.com)
19:11:25 × doyougnu quits (~doyougnu@cpe-74-69-132-225.stny.res.rr.com) (Remote host closed the connection)
19:11:40 slaydr joins (~slaydr@75.164.94.61)
19:14:42 jakalx joins (~jakalx@base.jakalx.net)
19:15:09 gensyst joins (gensyst@user/gensyst)
19:15:23 × MajorBiscuit quits (~MajorBisc@2001:1c00:2404:ed00:28e1:ad14:ec67:539e) (Ping timeout: 260 seconds)
19:16:00 <gensyst> Why could cause traceShow "foo" from not getting output? Can it be that multiple invocations are not output if the string is the same?
19:16:19 <gensyst> I'm pretty sure the thing should be evaluated because it's after a return in an IO call
19:16:32 <gensyst> return $ traceShow "foo" 2
19:16:38 <gensyst> and the 2 is used
19:16:53 <opqdonut> the compiler might lift the constant
19:17:14 <opqdonut> you can check the core to be sure
19:17:26 <opqdonut> (if it's a nontrivial sized program reading the core might be a bit of a chore though)
19:17:55 nisstyre joins (~wes@user/nisstyre)
19:17:56 <gensyst> i'm forced to throw in a random number into that string, to be sure it's output?
19:17:56 merijn joins (~merijn@86-86-29-250.fixed.kpn.net)
19:18:23 <gensyst> any tricks here?
19:18:31 <gensyst> btw that string *is* getting output, but just once
19:18:40 <opqdonut> yeah that would be consistent with constant lifting
19:18:51 <opqdonut> if you're in IO, why even use trace instead of a print?
19:19:10 <gensyst> well ok i meant monad lol
19:19:16 <gensyst> ok i'll just add monadio for now and do print lol
19:20:01 <opqdonut> this is a good demonstration of how laziness and impure operatios don't mix that well :)
19:20:13 <mauke> :t Debug.Trace.traceIO
19:20:14 <lambdabot> String -> IO ()
19:21:08 <opqdonut> there's probably some trick where you introduce a closure to make the optimizer not lift that out
19:21:28 <mauke> see description of https://hackage.haskell.org/package/base-4.17.0.0/docs/Debug-Trace.html#v:traceM
19:22:46 <gensyst> thank you guys
19:23:31 <gensyst> but why would one ever use traceIO instead of print?
19:23:44 <gensyst> built-in caching (for performance) or something?
19:24:20 <EvanR> :t print
19:24:21 <lambdabot> Show a => a -> IO ()
19:24:40 <jean-paul[m]> "Setup configure ..." is failing with "Missing (or bad) C library:". It says I can pass "-v3" to see the error messages ... but "Setup -v3 configure ..." says exactly the same thing, as does "Setup configure -v3 ...". Where do I pass it?
19:24:44 <monochrom> print goes to stdout, but I want stderr
19:25:07 <jean-paul[m]> Meh. "..." had stuff in it that reset verbosity to a lower level.
19:25:23 <monochrom> Even in a C course I teach students "debugging messages go to stderr please, don't spam stdout".
19:26:23 <EvanR> haha, traceIO is defined in terms of something called `debugBelch :: CString -> CString -> IO ()'
19:27:01 <EvanR> (presumably goes to stderr)
19:27:03 <monochrom> Unpopular opinion: When debugging messages spam stdout, it's called "test pollution". >:)
19:27:37 mikoto-chan joins (~mikoto-ch@2001:999:230:86e2:ae4c:4efd:1f0:d882)
19:28:46 <EvanR> gensyst, standard trace is attached to an expression. It's tricky to insist ghc evaluates that expression the number of times you want it to, if evaluating less times (or zero times) gives the same usual semantics
19:30:01 <EvanR> purity is great if you take it seriously xD
19:31:14 <Profpatsch> Okay okay this might sound crazy, but hear me out: RecordWildCards for HasField
19:31:28 gmg joins (~user@user/gehmehgeh)
19:32:28 <gensyst> Interesting!
19:32:57 <gensyst> Ah, so the issue is not the string being the same. The issue is the main value being the same
19:33:09 <gensyst> sorry misunderstood earlier
19:33:20 <Profpatsch> \(foo{..}, bar{..}) -> … this would put all HasField instances for the type of foo and bar into scope
19:33:56 <monochrom> Debug.Trace lets you observe lazy evaluation and more detailedly what GHC has decided about when to evaluate and how many times.
19:33:58 <EvanR> value being the same doesn't explain it, since that sounds like caching
19:34:17 <monochrom> Corollary being if you don't see a message then evaluation didn't happen.
19:35:09 <monochrom> If you see it only once then it's evaluated only once. If you expected repeats then it means GHC decided to memoize or common-subexpression-elimination etc.
19:35:52 × wagle quits (~wagle@quassel.wagle.io) (Quit: http://quassel-irc.org - Chat comfortably. Anywhere.)
19:36:23 wagle joins (~wagle@quassel.wagle.io)
19:36:30 kalj joins (~kalj@81-227-161-241-no193.tbcn.telia.com)
19:37:06 tomokojun_ joins (~tomokojun@75.164.24.44)
19:37:46 <kalj> I'm having some trouble with lsp-haskell in emacs. It doesn't seem to search for my stack.yaml file the same way that happens when I run haskell-language-server-wrapper directly.
19:38:39 × festive_kurbus quits (~festive_k@user/kurbus) (Quit: Client closed)
19:40:10 × tomokojun quits (~tomokojun@75.164.52.103) (Ping timeout: 272 seconds)
19:41:32 lortabac joins (~lortabac@2a01:e0a:541:b8f0:809d:9c93:5943:40a1)
19:46:58 ballast joins (~ballast@cpe-104-32-238-223.socal.res.rr.com)
19:47:34 × son0p quits (~ff@2604:3d08:5b7f:5540::4026) (Ping timeout: 252 seconds)
19:49:16 <ballast> what's the right data structure to model a many-to-one relation? I basically want a map where multiple keys can map to the same value. And importantly I want to also be able to go from the value to all of the keys that map to it.
19:49:55 <EvanR> Map k a already lets multiple keys go to the same value
19:50:00 <EvanR> Map a [k] goes backwards
19:51:19 <ballast> hmmm, so perhaps I could just have `a` be itself a key in a `Map a value`. I think I might want to mutate the `value`.
19:51:19 × merijn quits (~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 268 seconds)
19:52:10 tomokojun_ is now known as tomokojun
19:52:28 <EvanR> if you change the forward map, you have to change the index regardless
19:52:42 <EvanR> whether it's adding, removing, or changing values
19:53:22 × thyriaen quits (~thyriaen@2a01:aea0:dd4:4bae:6245:cbff:fe9f:48b1) (Quit: Leaving)
19:53:52 × slaydr quits (~slaydr@75.164.94.61) (Quit: Leaving)
19:53:56 <ballast> i'm a little surprised that there isn't some sort of preexisting data structure for this, but admittedly i can't think of a different way of doing it in another programming language
19:54:03 <EvanR> there's stuff on hackage, I'm sure
19:54:28 <EvanR> even for Map you need the containers package
19:54:37 <ballast> my other thought is to store `[k]` in `a` itself
19:55:09 <EvanR> How would that help
19:55:39 <ballast> wouldn't need the backwards map as long as you have `a` , but then you'd need to update every entry in `Map k a` if you add a new key
19:55:45 <EvanR> I mean, if `a' is some unique object somewhere that you can always access, ok
19:55:59 <EvanR> but I assumed a are values
19:56:13 <EvanR> independent of the state of your database
19:56:16 <ballast> ah i see
19:56:48 <ballast> regardless i think you're right that the way to go about it is just to have a regular map
19:57:18 <EvanR> some kind of index to go backwards, I just said Map a [k] because it's the dumbest
19:57:47 <EvanR> pair the index with the original map and keep it up to date
19:59:42 <EvanR> as soon as you start having multiple indexes of multiple sets, there is IxSet from package ixset
20:00:02 × lortabac quits (~lortabac@2a01:e0a:541:b8f0:809d:9c93:5943:40a1) (Ping timeout: 256 seconds)
20:02:31 × avicenzi quits (~avicenzi@2a00:ca8:a1f:b004:5b49:4996:51e:12cd) (Ping timeout: 260 seconds)
20:06:45 merijn joins (~merijn@86-86-29-250.fixed.kpn.net)
20:09:04 × coot quits (~coot@213.134.171.3) (Quit: coot)
20:11:50 × merijn quits (~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 272 seconds)
20:13:46 thyriaen joins (~thyriaen@2a01:aea0:dd4:4bae:6245:cbff:fe9f:48b1)
20:19:18 × mikoto-chan quits (~mikoto-ch@2001:999:230:86e2:ae4c:4efd:1f0:d882) (Ping timeout: 256 seconds)
20:23:38 × thyriaen quits (~thyriaen@2a01:aea0:dd4:4bae:6245:cbff:fe9f:48b1) (Quit: Leaving)
20:24:53 thyriaen joins (~thyriaen@2a01:aea0:dd4:4bae:6245:cbff:fe9f:48b1)
20:27:06 pavonia joins (~user@user/siracusa)
20:30:33 mmhat joins (~mmh@p200300f1c71eb3c8ee086bfffe095315.dip0.t-ipconnect.de)
20:30:40 × mmhat quits (~mmh@p200300f1c71eb3c8ee086bfffe095315.dip0.t-ipconnect.de) (Client Quit)
20:31:27 kenran joins (~user@user/kenran)
20:31:52 × kenran quits (~user@user/kenran) (Remote host closed the connection)
20:33:13 × ballast quits (~ballast@cpe-104-32-238-223.socal.res.rr.com) (Ping timeout: 260 seconds)
20:33:33 × thyriaen quits (~thyriaen@2a01:aea0:dd4:4bae:6245:cbff:fe9f:48b1) (Remote host closed the connection)
20:34:27 thyriaen joins (~thyriaen@2a01:aea0:dd4:4bae:6245:cbff:fe9f:48b1)
20:35:06 tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
20:36:32 × ystael quits (~ystael@user/ystael) (Ping timeout: 272 seconds)
20:40:24 ballast joins (~ballast@cpe-104-32-238-223.socal.res.rr.com)
20:43:50 festive_kurbus joins (~festive_k@user/kurbus)
20:43:50 × alphabeta quits (~kilolympu@213.144.144.24) (Ping timeout: 260 seconds)
20:47:41 kilolympus joins (~kilolympu@213.144.144.24)
20:49:54 × festive_kurbus quits (~festive_k@user/kurbus) (Quit: Client closed)
20:51:17 freeside joins (~mengwong@pd907d273.dip0.t-ipconnect.de)
20:51:54 festive_kurbus joins (~festive_k@user/kurbus)
20:52:17 Topsi joins (~Topsi@host-091-097-060-181.ewe-ip-backbone.de)
20:54:50 × kilolympus quits (~kilolympu@213.144.144.24) (Ping timeout: 268 seconds)
20:55:48 × ballast quits (~ballast@cpe-104-32-238-223.socal.res.rr.com) (Quit: Client closed)
21:01:00 × festive_kurbus quits (~festive_k@user/kurbus) (Quit: Client closed)
21:02:50 Pickchea joins (~private@user/pickchea)
21:03:16 coot joins (~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba)
21:05:40 son0p joins (~ff@2604:3d08:5b7f:5540::4026)
21:06:07 × bgs quits (~bgs@212-85-160-171.dynamic.telemach.net) (Remote host closed the connection)
21:06:58 × thyriaen quits (~thyriaen@2a01:aea0:dd4:4bae:6245:cbff:fe9f:48b1) (Remote host closed the connection)
21:07:50 merijn joins (~merijn@86-86-29-250.fixed.kpn.net)
21:12:01 <fizbin> Is it possible to declare the fixity of a non-top-level binding?
21:15:30 <fizbin> Huh. infixr inside a let expression seems to work.
21:15:45 × kalj quits (~kalj@81-227-161-241-no193.tbcn.telia.com) (Quit: Client closed)
21:15:57 × gensyst quits (gensyst@user/gensyst) (Quit: Leaving)
21:15:59 kalj joins (~kalj@81-227-161-241-no193.tbcn.telia.com)
21:16:43 × _xor quits (~xor@74.215.182.83) (Ping timeout: 252 seconds)
21:19:33 × trev quits (~trev@user/trev) (Remote host closed the connection)
21:21:06 _xor joins (~xor@74.215.182.83)
21:22:41 <geekosaur> the Report says nothing about it but ghc allows it, yes
21:22:50 <geekosaur> with no extension
21:25:14 Lycurgus joins (~juan@user/Lycurgus)
21:25:29 × mixfix41 quits (~sdenynine@user/mixfix41) (Ping timeout: 260 seconds)
21:25:59 × Pickchea quits (~private@user/pickchea) (Quit: Leaving)
21:26:34 × lisbeths quits (uid135845@id-135845.lymington.irccloud.com) (Quit: Connection closed for inactivity)
21:26:45 mixfix41_ joins (~sdenynine@user/mixfix41)
21:34:25 × Lycurgus quits (~juan@user/Lycurgus) (Quit: Exeunt: personae.ai-integration.biz)
21:35:24 × teo quits (~teo@user/teo) ()
21:36:39 <davean> geekosaur: does it not? Hum, I'd have to reread the grammar, I though it was part of the decl grammar ...
21:36:52 <davean> So it should go anywhere a decl can
21:37:42 <davean> Yah, its part of gendecl which is in decl and cdecl, not topdecl'
21:37:54 <davean> so the Haskell report clearly says it must be allowed there.
21:37:57 <geekosaur> https://downloads.haskell.org/ghc/9.4.1/docs/users_guide/exts/local_fixity_decls.html?highlight=fixity
21:38:05 <davean> https://www.haskell.org/onlinereport/haskell2010/haskellch4.html#x10-620004
21:38:28 <geekosaur> maybe it was fixed in 2010
21:38:44 <geekosaur> yeh, the one I pointed to specifically says H98
21:39:41 <davean> The complaint there is the specification is clear, even that claims they are specified to exist
21:39:52 <davean> *is not clear
21:40:29 <davean> Thats a debate about scoping, to which the correct interpritation seems clear, and taken by GHC
21:41:58 × merijn quits (~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 252 seconds)
21:42:09 ystael joins (~ystael@user/ystael)
21:46:35 mestre joins (~mestre@191.177.185.178)
21:50:49 × takuan quits (~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection)
21:51:43 × kalj quits (~kalj@81-227-161-241-no193.tbcn.telia.com) (Quit: Client closed)
21:52:10 ballast joins (~ballast@cpe-104-32-238-223.socal.res.rr.com)
21:52:11 × ballast quits (~ballast@cpe-104-32-238-223.socal.res.rr.com) (Client Quit)
21:54:43 finsternis joins (~X@23.226.237.192)
21:58:06 × ystael quits (~ystael@user/ystael) (Ping timeout: 252 seconds)
22:09:38 × freeside quits (~mengwong@pd907d273.dip0.t-ipconnect.de) (Ping timeout: 272 seconds)
22:14:58 × fizbin quits (~fizbin@user/fizbin) (Ping timeout: 252 seconds)
22:23:26 × tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
22:24:46 jmdaemon joins (~jmdaemon@user/jmdaemon)
22:24:56 money_ joins (~money@user/polo)
22:28:08 × coot quits (~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba) (Quit: coot)
22:28:08 zanc joins (~azure@103.154.231.231)
22:30:12 zeenk joins (~zeenk@2a02:2f04:a30d:4300::7fe)
22:30:23 × Topsi quits (~Topsi@host-091-097-060-181.ewe-ip-backbone.de) (Read error: Connection reset by peer)
22:32:28 × JordiGH quits (~jordi@user/jordigh) (Ping timeout: 256 seconds)
22:32:54 × mestre quits (~mestre@191.177.185.178) (Quit: Lost terminal)
22:33:03 <zanc> what is ghc's -B option?
22:35:09 <geekosaur> it tells ghc where it is actually installed, since it can be relocated at runtime
22:35:33 <zanc> is it documented somewhere?
22:38:05 merijn joins (~merijn@86-86-29-250.fixed.kpn.net)
22:38:06 <geekosaur> I don't think so; it's an internal detail
22:38:16 <geekosaur> if it is it would be in the ghc wiki
22:41:39 × mixfix41_ quits (~sdenynine@user/mixfix41) (Ping timeout: 255 seconds)
22:42:48 × gmg quits (~user@user/gehmehgeh) (Quit: Leaving)
22:43:09 × money_ quits (~money@user/polo) (Quit: late)
22:43:20 freeside joins (~mengwong@pd907d273.dip0.t-ipconnect.de)
22:45:10 × zanc quits (~azure@103.154.231.231) (Quit: WeeChat 3.7.1)
22:46:14 money_ joins (~money@user/polo)
22:46:16 JordiGH joins (~jordi@user/jordigh)
22:57:52 × freeside quits (~mengwong@pd907d273.dip0.t-ipconnect.de) (Ping timeout: 252 seconds)
22:57:58 × JordiGH quits (~jordi@user/jordigh) (Ping timeout: 256 seconds)
22:58:20 kilolympus joins (~kilolympu@213.144.144.24)
22:58:55 × money_ quits (~money@user/polo) (Ping timeout: 256 seconds)
23:00:09 × iqubic quits (~avi@2601:602:9502:c70:6988:8eb0:bd8c:3233) (Remote host closed the connection)
23:00:40 JordiGH joins (~jordi@user/jordigh)
23:00:53 money_ joins (~money@user/polo)
23:07:21 ballast joins (~ballast@cpe-104-32-238-223.socal.res.rr.com)
23:09:04 <ballast> if i have a really simple data type (let's say it's isomorphic to `Either String Int`), is there a library i can use to easily define a parser and pretty printer for it?
23:09:21 freeside joins (~mengwong@pd907d273.dip0.t-ipconnect.de)
23:09:47 <ballast> i swear i've seen things like this before (was it called bidirectional parsing? all of those libraries i found on hackage seem unpopular/unmaintained) but I can't for the life of me remember where
23:10:07 tomokojun_ joins (~tomokojun@75.164.24.44)
23:10:13 × tomokojun_ quits (~tomokojun@75.164.24.44) (Remote host closed the connection)
23:10:43 × elevenkb quits (~elevenkb@105.224.37.83) (Ping timeout: 260 seconds)
23:12:19 <monochrom> data MyType = Case1 Int | Case2 String deriving Show
23:12:30 <monochrom> err, deriving (Read, Show)
23:12:42 × merijn quits (~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 256 seconds)
23:13:56 <ballast> ah but i want to for example parse "32" as `Case1 Int` and "test" as `Case2 String` . It seems like I'll just have to settle for rolling my own simple parser
23:14:11 <monochrom> I wouldn't want that.
23:14:13 smol-hors joins (sid524992@smol/hors)
23:14:25 <jackdk> ballast: best trick I found is to use a profunctor that can also be a monad (so you can do monadic wrangling if you need). If the parser and printer are set up right (parser `p` is applicative/alternative and `pr` divisible/decidable, then `Product (Clown p) (Joker pr)` might work with the tools in control.arrow or product-profunctors
23:14:25 <EvanR> deriving (Num) xD
23:14:37 <smol-hors> how does one install Haskell these days? it's been a while since I've used it. I wanted to try Euterpea.
23:14:41 <EvanR> deriving (IsString)
23:14:53 <monochrom> data FunType = Case1 Int | Case2 Int. I wouldn't always want "32" to be parsed as Case1 32, and I wouldn't always want Case2 32 either.
23:15:20 <jackdk> ballast: https://www.microsoft.com/en-us/research/wp-content/uploads/2004/01/picklercombinators.pdf and https://poisson.chat/esop19/composing-bidir-prog-monadically.pdf are some rough papers that might help
23:15:44 <jackdk> monochrom: `data I = Even Int | Odd Int` would set certain expectations about the parse of `"32"`
23:15:50 <jackdk> smol-hors: https://www.haskell.org/ghcup/
23:16:13 <jackdk> ballast: sorry, got confused, the parser is in the Joker and the pretty-printer is in the Clown
23:16:35 <ballast> jackdk: oh… you weren't making up names…
23:16:42 <smol-hors> jackdk: thank you
23:16:43 <EvanR> ballast, I'm skeptical that you're saving a huge amount of code with these javascript-like shenanigans. But Num class has magic for numeric literals and IsString has magic for string literals
23:17:28 <EvanR> IsString magic enabled via OverloadedStrings in particular tends to cause other trouble IME
23:18:05 <ballast> hrm, i didn't mean to raise alarm by mentioning that i wanted to parse 32 to an int and test to a string. my point only is that each of the parsers ought to be relatively simple to define
23:18:46 <jackdk> ballast: https://hackage.haskell.org/package/bifunctors has the newtypes; the mnemonic is "clowns to the left of me, jokers to the right; here I am, stuck in the middle with you"
23:18:57 <EvanR> it's true
23:19:21 <ballast> jackdk: i hope they aren't going to cut my ear off, i've grown attached to it
23:19:29 <ballast> or perhaps it's grown attached to me?
23:19:43 <EvanR> pretty printing and parsing could be pretty simple
23:20:34 × shriekingnoise quits (~shrieking@186.137.167.202) (Ping timeout: 272 seconds)
23:20:59 <EvanR> you can even install them as your Show and Read instance
23:21:10 <monochrom> "deriving (Read, Show)" is very simple to define.
23:21:42 <EvanR> *assuming we're not talking about the standard derived instances for some reason, because otherwise it's trivial
23:22:06 <EvanR> my XY problem detector is now going off though
23:22:54 <ballast> fair enough, usually i ask a question because i suspect there is a slicker way of solving my problem
23:23:04 <monochrom> Yeah please write a formal specification and sign your name under it. :)
23:23:13 <ballast> of course slicker doesn't necessarily mean better
23:23:45 <ballast> but at the very least i'm learning about what high-powered options i have to accomplish even simple tasks :)
23:24:06 × cowboy8625 quits (~cowboy@96-2-208-2-static.midco.net) (Quit: WeeChat 3.5)
23:25:12 × michalz quits (~michalz@185.246.204.89) (Remote host closed the connection)
23:25:58 <smol-hors> do I want 'stack exec --package euterpea -- ghci', then to try it?
23:26:18 × ubert quits (~Thunderbi@p200300ecdf264ebd3096e1a4e8bd793f.dip0.t-ipconnect.de) (Ping timeout: 256 seconds)
23:26:51 ubert joins (~Thunderbi@p200300ecdf264e1ec8d72b0a2c29e966.dip0.t-ipconnect.de)
23:30:14 fizbin joins (~fizbin@user/fizbin)
23:33:52 <smol-hors> ok I did that but I'm running the examples and not hearing anything RIP
23:36:09 Sgeo joins (~Sgeo@user/sgeo)
23:38:45 × masterbuilder quits (~master@user/masterbuilder) (Quit: Lost terminal)
23:40:57 × money_ quits (~money@user/polo) (Quit: late)
23:43:53 <smol-hors> nvm I found my problem in troubleshooting. sorry for bothering you all!
23:44:02 money_ joins (~money@user/polo)
23:47:03 × eggplantade quits (~Eggplanta@2600:1700:38c5:d800:f49d:401d:a888:f078) (Remote host closed the connection)
23:51:32 dimsuz joins (~dimsuz@10-91-52-95.baltnet.ru)
23:53:50 × brettgilio quits (~brettgili@x-irc.gq) (Quit: The Lounge - https://thelounge.chat)
23:54:49 × money_ quits (~money@user/polo) (Quit: late)
23:58:00 × ballast quits (~ballast@cpe-104-32-238-223.socal.res.rr.com) (Quit: Client closed)
23:58:02 money_ joins (~money@user/polo)
23:58:03 <dimsuz> Hi! I have a list [a] and then I know that some elements under certain indexes (say 1, 3, 4) I must call "f :: a" and prepend this 'a' to element at that index. so given [a,b,c,d,e] I would get [a, x, b, c, y, d, z, e]. I'm trying to think of what instrument to use here: can this be done with foldr/foldl, or can I use Traversable (which I don't
23:58:04 <dimsuz> fully grasp yet).
23:58:36 <dimsuz> I'd be thankful for a pointer on where I should point my reading to
23:59:46 <dimsuz> I would also like this to be a performant solution

All times are in UTC on 2022-12-14.