Home liberachat/#haskell: Logs Calendar

Logs on 2022-01-28 (liberachat/#haskell)

00:01:59 × Null_A quits (~null_a@2601:645:8700:2290:8935:4edf:b32:6553) (Remote host closed the connection)
00:02:09 <jackdk> monochrom: in the docs for Data.Functor.Contravariant, it says `fmap f = phantom`, which is what I think is being referenced
00:02:25 × Guest76 quits (~Guest76@a109-50-190-38.cpe.netcabo.pt) (Quit: Client closed)
00:02:37 × davros quits (~davros@host86-184-82-149.range86-184.btcentralplus.com) (Ping timeout: 240 seconds)
00:02:42 Null_A joins (~null_a@2601:645:8700:2290:8935:4edf:b32:6553)
00:03:21 <jackdk> is it true that "if an ADT F a has a Functor instance, every a is in positive position" (and similar for Contravariant/negative position)?
00:03:39 <jackdk> and is it true that type variables are either in positive xor negative position?
00:04:01 <ski> what about `Endo a' ? `IORef a' ?
00:04:30 <ski> (or `Const c a')
00:04:49 <jackdk> Endo does not have a functor instance, Const c a has no `a`, so every a is in positive position
00:04:50 yauhsien joins (~yauhsien@61-231-37-18.dynamic-ip.hinet.net)
00:05:10 <jackdk> Then if F has both Functor and Contravariant instances, every a must be in both positive and negative position, and the only way that can be true is if it has no `a`s?
00:05:27 <ski> oh, second question was a continuation of first one
00:06:01 <jackdk> I'm trying to spitball my way to an answer to lyxia 's question because I don't know how to actually solve it
00:06:13 <ski> well, clearly `Const c a' does have an `a'
00:06:41 <jackdk> % :info Const
00:06:42 <yahb> jackdk: type role Const representational phantom; type Const :: forall {k}. * -> k -> *; newtype Const a b = Const {getConst :: a}; -- Defined in `Data.Functor.Const'; instance Monoid m => Applicative (Const m) -- Defined in `Data.Functor.Const'; instance forall a k (b :: k). Eq a => Eq (Const a b) -- Defined in `Data.Functor.Const'; instance Functor (Const m) -- Defined in `Data.Functor.Const'; instance fora
00:07:02 × Null_A quits (~null_a@2601:645:8700:2290:8935:4edf:b32:6553) (Ping timeout: 260 seconds)
00:07:06 <ski> (the implementation of it doesn't have an `a', though)
00:07:32 <jackdk> `Const c a` has a `c`, but not an `a`. I am using "has" to mean "is present in at least one data constructor"
00:07:56 <ski> oh, i thought you were talking about type variable occurances in the type expression
00:08:57 × Raito_Bezarius quits (~Raito@wireguard/tunneler/raito-bezarius) (Ping timeout: 250 seconds)
00:09:22 × yauhsien quits (~yauhsien@61-231-37-18.dynamic-ip.hinet.net) (Ping timeout: 256 seconds)
00:09:31 <jackdk> no, I'm trying to work out how to crystallise the intution that "the constraints imposed by a Functor and a Contravariant instance imply that `F a` must be phantom in `a`
00:09:31 Raito_Bezarius joins (~Raito@wireguard/tunneler/raito-bezarius)
00:09:43 <ski> but if you want to, you could go `newtype MyConst c a = MkMyConst (Const c a)', and then there's an `a' present in at least one data constructor
00:10:29 <awpr> @free forall a b. f a -> f b
00:10:29 <lambdabot> Try `free <ident>` or `free <ident> :: <type>`
00:10:41 <ski> @freep fpp :: forall a b. f a -> f b
00:10:41 <lambdabot> Extra stuff at end of line
00:10:54 <ski> @freep foo :: F a -> F b
00:10:54 <lambdabot> $map_F g . foo = foo . $map_F f
00:12:07 <ski> jackdk : as for your first question, i think that's right
00:13:08 × Raito_Bezarius quits (~Raito@wireguard/tunneler/raito-bezarius) (Excess Flood)
00:13:43 Raito_Bezarius joins (~Raito@wireguard/tunneler/raito-bezarius)
00:14:55 × wyrd quits (~wyrd@gateway/tor-sasl/wyrd) (Remote host closed the connection)
00:15:12 <lyxia> well my issue is actually that in dependent type theory you get that (a -> Type) is both a Functor and a Contravariant, or at least strongly looks like it.
00:16:03 <ski> hm .. can you elaborate ?
00:16:24 <ski> (and is this related to the covariant and the contravariant powerset functors ?)
00:16:34 davros joins (~davros@host86-184-82-232.range86-184.btcentralplus.com)
00:16:34 × td_ quits (~td@muedsl-82-207-238-147.citykom.de) (Ping timeout: 250 seconds)
00:17:12 <lyxia> yes that is the powerset functor
00:17:26 × waleee quits (~waleee@2001:9b0:21d:fc00:398f:b003:b90d:acf4) (Ping timeout: 250 seconds)
00:17:55 <lyxia> so you can map any function (f :: a -> b) forward and backward as the image/reverse image mapping
00:18:27 td_ joins (~td@94.134.91.240)
00:19:18 waleee joins (~waleee@2001:9b0:21d:fc00:398f:b003:b90d:acf4)
00:21:04 × CHUD quits (~CHUD@host-80-41-89-108.as13285.net) (Ping timeout: 256 seconds)
00:21:17 × Raito_Bezarius quits (~Raito@wireguard/tunneler/raito-bezarius) (Ping timeout: 240 seconds)
00:21:19 × AkechiShiro quits (~licht@user/akechishiro) (Ping timeout: 250 seconds)
00:21:33 wyrd joins (~wyrd@gateway/tor-sasl/wyrd)
00:23:18 AkechiShiro joins (~licht@user/akechishiro)
00:23:37 × segfaultfizzbuzz quits (~rustisafu@2602:306:cd3c:9350:59e3:db49:aa0a:46e5) (Ping timeout: 240 seconds)
00:24:21 Raito_Bezarius joins (~Raito@wireguard/tunneler/raito-bezarius)
00:26:33 jackson99 joins (~bc8147f2@83.167.180.121)
00:30:00 × mon_aaraj quits (~MonAaraj@user/mon-aaraj/x-4416475) (Ping timeout: 250 seconds)
00:32:07 mon_aaraj joins (~MonAaraj@user/mon-aaraj/x-4416475)
00:32:40 × eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:41be:eda7:26bd:771e) (Remote host closed the connection)
00:34:52 machinedgod joins (~machinedg@24.105.81.50)
00:35:00 random-jellyfish joins (~random-je@user/random-jellyfish)
00:37:50 eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:41be:eda7:26bd:771e)
00:44:56 × vicfred quits (~vicfred@user/vicfred) (Quit: Leaving)
00:50:34 Null_A joins (~null_a@2601:645:8700:2290:8935:4edf:b32:6553)
00:52:00 × litharge quits (litharge@libera/bot/litharge) (Remote host closed the connection)
00:52:25 × polyphem quits (~rod@2a02:810d:840:8754:2622:b61:ec32:bf43) (Quit: WeeChat 3.4)
00:53:57 litharge joins (litharge@libera/bot/litharge)
00:54:00 × waleee quits (~waleee@2001:9b0:21d:fc00:398f:b003:b90d:acf4) (Quit: WeeChat 3.4)
00:55:50 × Gurkenglas quits (~Gurkengla@dslb-090-186-104-244.090.186.pools.vodafone-ip.de) (Ping timeout: 256 seconds)
00:57:26 waleee joins (~waleee@2001:9b0:21d:fc00:398f:b003:b90d:acf4)
01:05:32 × Erutuon quits (~Erutuon@user/erutuon) (Ping timeout: 250 seconds)
01:06:22 × eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:41be:eda7:26bd:771e) (Remote host closed the connection)
01:08:06 × random-jellyfish quits (~random-je@user/random-jellyfish) (Ping timeout: 256 seconds)
01:08:30 × akurilin_ quits (uid322841@id-322841.ilkley.irccloud.com) (Quit: Connection closed for inactivity)
01:08:40 Erutuon joins (~Erutuon@user/erutuon)
01:11:43 × Null_A quits (~null_a@2601:645:8700:2290:8935:4edf:b32:6553) (Remote host closed the connection)
01:11:46 × albet70 quits (~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection)
01:17:52 albet70 joins (~xxx@2400:8902::f03c:92ff:fe60:98d8)
01:19:28 × jushur quits (~human@user/jushur) (Quit: ¯\_(ツ)_/¯)
01:21:23 eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:41be:eda7:26bd:771e)
01:22:02 × shapr quits (~user@pool-100-36-247-68.washdc.fios.verizon.net) (Remote host closed the connection)
01:22:42 wroathe joins (~wroathe@206-55-188-8.fttp.usinternet.com)
01:22:42 × wroathe quits (~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host)
01:22:42 wroathe joins (~wroathe@user/wroathe)
01:22:48 shapr joins (~user@pool-100-36-247-68.washdc.fios.verizon.net)
01:23:36 × machinedgod quits (~machinedg@24.105.81.50) (Ping timeout: 256 seconds)
01:24:25 chenqisu1 joins (~chenqisu1@183.217.200.249)
01:31:13 × stiell quits (~stiell@gateway/tor-sasl/stiell) (Remote host closed the connection)
01:31:35 stiell joins (~stiell@gateway/tor-sasl/stiell)
01:37:11 doyougnu joins (~doyougnu@cpe-67-249-83-190.twcny.res.rr.com)
01:42:18 × dsrt^ quits (~dsrt@50.231.5.242) (Ping timeout: 256 seconds)
01:53:41 × jao quits (~jao@static-68-235-44-10.cust.tzulo.com) (Remote host closed the connection)
01:56:15 × xsperry quits (~xs@user/xsperry) (Remote host closed the connection)
02:02:53 jao joins (~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net)
02:05:37 × Erutuon quits (~Erutuon@user/erutuon) (Ping timeout: 240 seconds)
02:08:44 × ProfSimm quits (~ProfSimm@87.227.196.109) (Ping timeout: 256 seconds)
02:08:54 ProfSimm joins (~ProfSimm@87.227.196.109)
02:18:57 × xff0x quits (~xff0x@2001:1a81:523c:5300:707e:bf72:dc84:30f7) (Ping timeout: 250 seconds)
02:20:17 × neurocyte0917090 quits (~neurocyte@user/neurocyte) (Ping timeout: 240 seconds)
02:21:03 xff0x joins (~xff0x@2001:1a81:5277:3c00:f024:75d4:2bb:2631)
02:21:54 × zaquest quits (~notzaques@5.130.79.72) (Remote host closed the connection)
02:23:00 zaquest joins (~notzaques@5.130.79.72)
02:27:28 xsperry joins (~xs@user/xsperry)
02:31:49 alp joins (~alp@user/alp)
02:37:56 × matijja quits (~matijja@193.77.181.201) (Quit: ZNC 1.8.1 - https://znc.in)
02:38:11 matijja joins (~matijja@193.77.181.201)
02:38:39 × dfordvm quits (~dfordivam@tk2-219-19469.vs.sakura.ne.jp) (Ping timeout: 268 seconds)
02:39:08 dfordvm joins (~dfordivam@tk2-219-19469.vs.sakura.ne.jp)
02:44:38 × wroathe quits (~wroathe@user/wroathe) (Ping timeout: 256 seconds)
02:52:43 califax- joins (~califax@user/califx)
02:55:54 × califax quits (~califax@user/califx) (Ping timeout: 276 seconds)
02:55:55 califax- is now known as califax
03:00:31 wroathe joins (~wroathe@206-55-188-8.fttp.usinternet.com)
03:00:31 × wroathe quits (~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host)
03:00:31 wroathe joins (~wroathe@user/wroathe)
03:10:30 andreabedini joins (~andreabed@8s8kj6nj5000h5zkmpxr.ip6.superloop.com)
03:12:09 Jing joins (~hedgehog@240e:390:7c53:a7e1:2d90:ff3:b02f:c2ef)
03:12:58 × FinnElija quits (~finn_elij@user/finn-elija/x-0085643) (Killed (NickServ (Forcing logout FinnElija -> finn_elija)))
03:12:58 finn_elija joins (~finn_elij@user/finn-elija/x-0085643)
03:12:58 finn_elija is now known as FinnElija
03:15:39 bitdex joins (~bitdex@gateway/tor-sasl/bitdex)
03:20:54 × jle` quits (~jle`@cpe-23-240-75-236.socal.res.rr.com) (Ping timeout: 256 seconds)
03:22:43 jle` joins (~jle`@cpe-23-240-75-236.socal.res.rr.com)
03:23:01 cynomys joins (~cynomys@user/cynomys)
03:28:18 × pretty_dumm_guy quits (trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) (Quit: WeeChat 3.4)
03:28:39 × ProfSimm quits (~ProfSimm@87.227.196.109) (Remote host closed the connection)
03:34:42 EsoAlgo joins (~EsoAlgo@152.70.142.52)
03:37:33 lionhairdino joins (~jacoo@121.131.39.82)
03:40:14 × td_ quits (~td@94.134.91.240) (Ping timeout: 250 seconds)
03:41:53 td_ joins (~td@94.134.91.157)
03:44:25 × terrorjack quits (~terrorjac@2a01:4f8:1c1e:509a::1) (Quit: The Lounge - https://thelounge.chat)
03:44:42 × davros quits (~davros@host86-184-82-232.range86-184.btcentralplus.com) (Ping timeout: 256 seconds)
03:45:39 terrorjack joins (~terrorjac@2a01:4f8:1c1e:509a::1)
03:47:18 × Henson quits (~kvirc@107-179-133-201.cpe.teksavvy.com) (Quit: KVIrc 5.0.0 Aria http://www.kvirc.net/)
03:53:40 × burnsidesLlama quits (~burnsides@dhcp168-030.wadham.ox.ac.uk) (Remote host closed the connection)
03:54:12 burnsidesLlama joins (~burnsides@client-8-88.eduroam.oxuni.org.uk)
03:54:18 × cynomys quits (~cynomys@user/cynomys) (Quit: Lost terminal)
03:56:40 davros joins (~davros@host86-184-190-187.range86-184.btcentralplus.com)
03:57:34 × kritzefitz quits (~kritzefit@debian/kritzefitz) (Ping timeout: 260 seconds)
03:58:26 × burnsidesLlama quits (~burnsides@client-8-88.eduroam.oxuni.org.uk) (Ping timeout: 250 seconds)
04:16:26 × [itchyjunk] quits (~itchyjunk@user/itchyjunk/x-7353470) (Ping timeout: 256 seconds)
04:20:28 [itchyjunk] joins (~itchyjunk@user/itchyjunk/x-7353470)
04:23:27 Erutuon joins (~Erutuon@user/erutuon)
04:24:52 × waleee quits (~waleee@2001:9b0:21d:fc00:398f:b003:b90d:acf4) (Ping timeout: 250 seconds)
04:40:28 × n3rdy1 quits (~n3rdy1@2600:1700:4570:3480:1b88:50f:dae0:9293) (Ping timeout: 250 seconds)
04:44:28 × little_mac_ quits (~little_ma@2601:410:4300:3ce0:4184:bb26:81f2:501e) (Remote host closed the connection)
04:45:20 deadmarshal joins (~deadmarsh@95.38.114.1)
04:51:03 on^ joins (~on@50.231.5.242)
04:53:45 Null_A joins (~null_a@2601:645:8700:2290:8935:4edf:b32:6553)
04:54:57 mbuf joins (~Shakthi@122.173.235.64)
04:55:22 n3rdy1 joins (~n3rdy1@2600:1700:4570:3480:1b88:50f:dae0:9293)
05:01:57 × davros quits (~davros@host86-184-190-187.range86-184.btcentralplus.com) (Ping timeout: 240 seconds)
05:03:37 × wroathe quits (~wroathe@user/wroathe) (Ping timeout: 240 seconds)
05:05:30 vysn joins (~vysn@user/vysn)
05:09:42 × chenqisu1 quits (~chenqisu1@183.217.200.249) (Ping timeout: 256 seconds)
05:12:26 wroathe joins (~wroathe@206-55-188-8.fttp.usinternet.com)
05:12:26 × wroathe quits (~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host)
05:12:26 wroathe joins (~wroathe@user/wroathe)
05:14:07 davros joins (~davros@host86-185-61-1.range86-185.btcentralplus.com)
05:16:37 × wroathe quits (~wroathe@user/wroathe) (Ping timeout: 240 seconds)
05:19:52 zyklotomic joins (~ethan@r4-128-61-88-167.res.gatech.edu)
05:20:11 <zyklotomic> is there a way to detect when a data type has been modified to fit more subtypes?
05:20:29 <zyklotomic> which would be nice if you have ever used a case-of statement w/ a wildcard
05:20:59 <dsal> What is a subtype?
05:21:12 <zyklotomic> i'm not sure if im phrasing it correctly sorry
05:21:23 <zyklotomic> say you have data MyData = A | B
05:21:28 <dsal> Ah, yeah.
05:21:35 <dsal> Well, the answer is in your second statement. :)
05:21:38 <zyklotomic> and you do case x of; A -> smth; _ -> smth
05:21:40 <dsal> You're basically turning off the detection.
05:21:45 <dsal> So don't do that. :)
05:24:11 <zyklotomic> the alternative would be very verbose sometimes though
05:24:15 <zyklotomic> i guess accept that then :)
05:24:50 <zyklotomic> i had the dumb idea, what if you could serialize the data constructor
05:25:00 × td_ quits (~td@94.134.91.157) (Ping timeout: 256 seconds)
05:25:00 <zyklotomic> and assign a hash to each wildcard?
05:25:44 <EvanR> how does the compiler know that you do or don't care about the rest of the cases
05:26:00 <EvanR> I mean, _ and _ hash to the same thing
05:26:05 <zyklotomic> what do you mean
05:26:19 <zyklotomic> i meant hash the data constructor itself
05:26:29 <zyklotomic> so when the constructor gets changed, the hash changes
05:26:42 × Erutuon quits (~Erutuon@user/erutuon) (Ping timeout: 256 seconds)
05:26:42 td_ joins (~td@94.134.91.203)
05:26:44 <EvanR> are you changing the constructors or adding a new one
05:26:52 × jackson99 quits (~bc8147f2@83.167.180.121) (Quit: CGI:IRC (Session timeout))
05:27:08 <zyklotomic> by change, i meant as in data MyType = A | B -> data MyType = A | B | C
05:27:11 <EvanR> because you'll get an error if you change constructors that you previous used
05:27:27 <zyklotomic> yeah, apologies, i meant adding new ones
05:27:45 <zyklotomic> i understand now that constructor refers to "A", "B", "C" themselves now
05:28:06 <EvanR> when you put _ you signal that you don't care what constructor it is, it has no other information attached
05:28:37 <zyklotomic> yeah, but under the understanding of what the current available constructors are
05:28:38 <EvanR> and the reason you did this may or may not change when you add a new constructor
05:28:40 <zyklotomic> which could change
05:29:25 <EvanR> kind of sounds like you want a paper clip to appear and ask you to consider anywhere you ever used a _ if you add to MyType. Which would be good I guess
05:29:43 <zyklotomic> yeah, i'm wondering if i'm worrying too much about a problem that isn't that big of a deal
05:29:44 <EvanR> I mean, you put _ because you didn't care about the other cases.
05:29:57 merijn joins (~merijn@c-001-001-018.client.esciencecenter.eduvpn.nl)
05:29:58 <EvanR> who knows if it's a bug now
05:30:06 <zyklotomic> yeah, but you are only sure at the time of writing
05:30:13 <EvanR> if even xD
05:30:33 <EvanR> checking all cases of the data type is usually right
05:31:08 <zyklotomic> so maybe the easy/(un?)satisfying solution is to never use _
05:31:59 <dsal> Well, yeah. It's the exact answer, though. _ tells the compiler you don't care anymore. Not using _ tells the compiler to stop compiling your code if a new thing is added.
05:32:10 <EvanR> also easy, satisfying, make data types which you're pretty sure are finished
05:32:24 <EvanR> like, no one is changing Maybe, or data Queue a = Queue [a] [a], etc
05:32:27 <EvanR> too simple to change
05:32:37 <dibblego> non-overlapping patterns are easier to read
05:33:05 <dibblego> https://en.wikipedia.org/wiki/Expression_problem
05:35:53 <zyklotomic> i see, i'll read up
05:37:35 <zyklotomic> dibblego: sry, i'm not seeing how non-overlapping patterns will help for this
05:37:45 <dibblego> they are separate things
05:37:56 <dibblego> try to achieve non-overlapping patterns, it's better code
05:37:56 Cale joins (~cale@cpef48e38ee8583-cm30b7d4b3fc20.cpe.net.cable.rogers.com)
05:38:14 <dibblego> the next thing you are describing is the expression problem, classy optics solve it reasonably well
05:38:26 <zyklotomic> oh, and any code that uses _ can't be non-overlapping
05:38:43 <dibblego> not always, but often
05:38:57 <zyklotomic> i see why now
05:39:03 <dibblego> non-overlapping patterns can be identified by re-ordering the cases and the program will not change
05:43:02 × alp quits (~alp@user/alp) (Ping timeout: 268 seconds)
05:43:22 prasad joins (~user@c-73-170-49-136.hsd1.ca.comcast.net)
05:43:22 × Feuermagier quits (~Feuermagi@user/feuermagier) (Remote host closed the connection)
05:44:20 × raehik quits (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Quit: WeeChat 3.4)
05:44:59 rusrushal13 joins (~rusrushal@2401:4900:447e:b662:c06d:f354:ecf:b32e)
05:46:10 <zyklotomic> https://downloads.haskell.org/~ghc/latest/docs/html/users_guide/using-warnings.html?highlight=overlapping#ghc-flag--Woverlapping-patterns
05:46:25 <zyklotomic> dibblego: so it seems like the GHC definition of overlapping-patterns is less strict right
05:46:44 <zyklotomic> it only cares that there aren't unreachable cases
05:47:01 Feuermagier joins (~Feuermagi@user/feuermagier)
05:47:12 <zyklotomic> so having a _ at the very bottom of a case-of expresion won't be considered "overlapping" to ghc
05:47:45 <dibblego> yes
05:48:25 <zyklotomic> thanks for the insight, really appreciate it
05:49:06 curtis joins (~curtis@76.208.249.124)
05:49:12 × deadmarshal quits (~deadmarsh@95.38.114.1) (Ping timeout: 268 seconds)
05:49:21 <zyklotomic> still a bit tempted to try to implement my original idea just for fun though :)
05:50:17 <EvanR> oh, were you talking about data type migration
05:50:31 <EvanR> instead of modifying, make a new type with an incremented version number
05:50:44 fef joins (~thedawn@user/thedawn)
05:51:10 × curtis quits (~curtis@76.208.249.124) (Quit: leaving)
05:51:50 × slowButPresent quits (~slowButPr@user/slowbutpresent) (Quit: leaving)
05:52:36 curtis joins (~curtis@76.208.249.124)
05:52:46 × lionhairdino quits (~jacoo@121.131.39.82) (Ping timeout: 256 seconds)
05:55:01 <dibblego> class AsA a where _A :: Prism' a (); instance AsA MyType where...; instance AsA MyTypeVersion2 where...
05:56:32 × rusrushal13 quits (~rusrushal@2401:4900:447e:b662:c06d:f354:ecf:b32e) (Ping timeout: 256 seconds)
05:56:32 × curtis quits (~curtis@76.208.249.124) (Client Quit)
05:56:50 statusbot1 joins (~statusbot@ec2-34-198-122-184.compute-1.amazonaws.com)
05:57:45 mncheckm joins (~mncheck@193.224.205.254)
05:58:01 × geekosaur quits (~geekosaur@xmonad/geekosaur) (Killed (NickServ (GHOST command used by allbery_b)))
05:58:02 allbery_b joins (~geekosaur@xmonad/geekosaur)
05:58:05 allbery_b is now known as geekosaur
05:58:30 Codaraxis_ joins (~Codaraxis@user/codaraxis)
05:58:39 MironZ7 joins (~MironZ@nat-infra.ehlab.uk)
05:58:47 EsoAlgo3 joins (~EsoAlgo@152.70.142.52)
05:58:49 × fef quits (~thedawn@user/thedawn) (Quit: Leaving)
05:59:25 ajb_ joins (~ajb@cupid.whatbox.ca)
06:00:08 np joins (~nerdypepp@user/nerdypepper)
06:00:12 × n3rdy1 quits (~n3rdy1@2600:1700:4570:3480:1b88:50f:dae0:9293) (Ping timeout: 250 seconds)
06:00:34 dobblego joins (~dibblego@122-199-1-30.ip4.superloop.com)
06:00:34 × dobblego quits (~dibblego@122-199-1-30.ip4.superloop.com) (Changing host)
06:00:34 dobblego joins (~dibblego@haskell/developer/dibblego)
06:00:37 × jao quits (~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net) (Ping timeout: 240 seconds)
06:00:52 hyiltiz_ joins (~quassel@31.220.5.250)
06:00:55 × son0p quits (~ff@2800:484:1d81:b700::5) (Ping timeout: 268 seconds)
06:01:09 hgolden_ joins (~hgolden2@cpe-172-114-81-123.socal.res.rr.com)
06:01:33 uroboros joins (~ouroboros@user/ouroboros)
06:01:43 ezzieygu1wuf joins (~Unknown@user/ezzieyguywuf)
06:01:45 gawen_ joins (~gawen@user/gawen)
06:01:50 gentauro_ joins (~gentauro@185.107.12.141)
06:01:51 dextaa__ joins (~dextaa@217.61.225.120)
06:01:56 fryguybo1 joins (~fryguybob@cpe-74-67-169-145.rochester.res.rr.com)
06:01:56 absence_ joins (torgeihe@hildring.pvv.ntnu.no)
06:02:07 zyklotom1 joins (~ethan@r4-128-61-88-167.res.gatech.edu)
06:02:08 Clint_ joins (~Clint@user/clint)
06:02:11 Cheery_ joins (~cheery@7-239-179-185.static.tentacle.fi)
06:02:14 marquis_1ndras joins (~marquis_a@124.170.163.166)
06:02:14 xdej joins (~xdej@quatramaran.salle-s.org)
06:02:21 × eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:41be:eda7:26bd:771e) (Remote host closed the connection)
06:02:38 some02 joins (~cat@h-98-128-128-173.A351.priv.bahnhof.se)
06:02:39 mstksg joins (~jle`@cpe-23-240-75-236.socal.res.rr.com)
06:02:48 × merijn quits (~merijn@c-001-001-018.client.esciencecenter.eduvpn.nl) (Ping timeout: 250 seconds)
06:03:30 qwedfg_ joins (~qwedfg@user/qwedfg)
06:05:00 Rabbit joins (~rabbit@206.81.18.26)
06:05:27 cyphase_eviltwin joins (~cyphase@user/cyphase)
06:07:00 jakalx parts (~jakalx@base.jakalx.net) (Disconnected: Replaced by new connection)
06:07:01 jakalx joins (~jakalx@base.jakalx.net)
06:07:08 × prasad quits (~user@c-73-170-49-136.hsd1.ca.comcast.net) (*.net *.split)
06:07:08 × zyklotomic quits (~ethan@r4-128-61-88-167.res.gatech.edu) (*.net *.split)
06:07:08 × on^ quits (~on@50.231.5.242) (*.net *.split)
06:07:08 × EsoAlgo quits (~EsoAlgo@152.70.142.52) (*.net *.split)
06:07:08 × jle` quits (~jle`@cpe-23-240-75-236.socal.res.rr.com) (*.net *.split)
06:07:09 × wombat875 quits (~wombat875@pool-72-89-24-154.nycmny.fios.verizon.net) (*.net *.split)
06:07:09 × dextaa_ quits (~dextaa@217.61.225.120) (*.net *.split)
06:07:09 × juhp quits (~juhp@128.106.188.82) (*.net *.split)
06:07:09 × Akiva quits (~Akiva@user/Akiva) (*.net *.split)
06:07:09 × WhateverRabbit quits (~rabbit@206.81.18.26) (*.net *.split)
06:07:09 × kmein_ quits (~weechat@user/kmein) (*.net *.split)
06:07:09 × Codaraxis quits (~Codaraxis@user/codaraxis) (*.net *.split)
06:07:09 × mncheck quits (~mncheck@193.224.205.254) (*.net *.split)
06:07:09 × Megant quits (megant@user/megant) (*.net *.split)
06:07:09 × cyphase quits (~cyphase@user/cyphase) (*.net *.split)
06:07:09 × marquis_andras quits (~marquis_a@124.170.163.166) (*.net *.split)
06:07:09 × abrar quits (~abrar@static-108-2-152-54.phlapa.fios.verizon.net) (*.net *.split)
06:07:09 × qwedfg quits (~qwedfg@user/qwedfg) (*.net *.split)
06:07:09 × Clint quits (~Clint@user/clint) (*.net *.split)
06:07:09 × amk quits (~amk@109.255.169.126) (*.net *.split)
06:07:09 × gentauro quits (~gentauro@user/gentauro) (*.net *.split)
06:07:09 × ishutin quits (~ishutin@87-97-82-177.pool.digikabel.hu) (*.net *.split)
06:07:09 × c_wraith quits (~c_wraith@adjoint.us) (*.net *.split)
06:07:09 × statusfailed quits (~statusfai@statusfailed.com) (*.net *.split)
06:07:09 × canta quits (~canta@user/canta) (*.net *.split)
06:07:09 × dminuoso quits (~dminuoso@user/dminuoso) (*.net *.split)
06:07:09 × dibblego quits (~dibblego@haskell/developer/dibblego) (*.net *.split)
06:07:09 × Goodbye_Vincent quits (~Goodbye_V@freakshells.net) (*.net *.split)
06:07:09 × ezzieyguywuf quits (~Unknown@user/ezzieyguywuf) (*.net *.split)
06:07:09 × mmalter quits (~mmalter@88.126.10.237) (*.net *.split)
06:07:09 × tcard quits (~tcard@p2878075-ipngn18701hodogaya.kanagawa.ocn.ne.jp) (*.net *.split)
06:07:09 × Cheery quits (~cheery@7-239-179-185.static.tentacle.fi) (*.net *.split)
06:07:09 × fryguybob quits (~fryguybob@cpe-74-67-169-145.rochester.res.rr.com) (*.net *.split)
06:07:09 × juri_ quits (~juri@178.63.35.222) (*.net *.split)
06:07:09 × xsarnik quits (xsarnik@lounge.fi.muni.cz) (*.net *.split)
06:07:09 × xstill- quits (xstill@fimu/xstill) (*.net *.split)
06:07:09 × tolt quits (~weechat-h@li219-154.members.linode.com) (*.net *.split)
06:07:09 × mmaruseacph2 quits (~mihai@198.199.100.72) (*.net *.split)
06:07:09 × meejah quits (~meejah@rutas.meejah.ca) (*.net *.split)
06:07:09 × fluxit quits (~fluxit@techsmix.net) (*.net *.split)
06:07:09 × andjjj23_ quits (~irc@107.170.228.47) (*.net *.split)
06:07:09 × forell quits (~forell@user/forell) (*.net *.split)
06:07:09 × sagax quits (~sagax_nb@user/sagax) (*.net *.split)
06:07:09 × hyiltiz quits (~quassel@31.220.5.250) (*.net *.split)
06:07:09 × statusbot quits (~statusbot@ec2-34-198-122-184.compute-1.amazonaws.com) (*.net *.split)
06:07:09 × neverwas quits (jpneverwas@swissbox.unperson.link) (*.net *.split)
06:07:09 × n3t quits (n3t@user/n3t) (*.net *.split)
06:07:09 × ski quits (~ski@remote11.chalmers.se) (*.net *.split)
06:07:09 × koolazer quits (~koo@user/koolazer) (*.net *.split)
06:07:09 × hgolden quits (~hgolden2@cpe-172-114-81-123.socal.res.rr.com) (*.net *.split)
06:07:09 × kojo5551 quits (~kojo5551@fep.grid.pub.ro) (*.net *.split)
06:07:09 × MironZ quits (~MironZ@nat-infra.ehlab.uk) (*.net *.split)
06:07:09 × loonycyborg quits (~loonycybo@wesnoth/developer/loonycyborg) (*.net *.split)
06:07:09 × nerdypepper quits (~nerdypepp@user/nerdypepper) (*.net *.split)
06:07:10 × drdo quits (~drdo@roach0.drdo.eu) (*.net *.split)
06:07:10 × hpc quits (~juzz@ip98-169-35-13.dc.dc.cox.net) (*.net *.split)
06:07:10 × ouroboros quits (~ouroboros@user/ouroboros) (*.net *.split)
06:07:10 × sudden quits (~cat@user/sudden) (*.net *.split)
06:07:10 × ajb quits (~ajb@cupid.whatbox.ca) (*.net *.split)
06:07:10 × ByronJohnson quits (~bairyn@50-250-232-19-static.hfc.comcastbusiness.net) (*.net *.split)
06:07:10 × carter quits (sid14827@helmsley.irccloud.com) (*.net *.split)
06:07:10 × xdej_ quits (~xdej@quatramaran.salle-s.org) (*.net *.split)
06:07:10 × TMA quits (~tma@twin.jikos.cz) (*.net *.split)
06:07:10 × hubvu_ quits (sid495858@tinside.irccloud.com) (*.net *.split)
06:07:10 × jtmar quits (~james@jtmar.me) (*.net *.split)
06:07:10 × gawen quits (~gawen@user/gawen) (*.net *.split)
06:07:10 × absence quits (torgeihe@hildring.pvv.ntnu.no) (*.net *.split)
06:07:10 × kawpuh quits (~kawpuh@66.42.81.80) (*.net *.split)
06:07:10 × byorgey quits (~byorgey@155.138.238.211) (*.net *.split)
06:07:10 × drewr quits (~drew@user/drewr) (*.net *.split)
06:07:11 dobblego is now known as dibblego
06:07:11 MironZ7 is now known as MironZ
06:07:11 uroboros is now known as ouroboros
06:07:35 Megant joins (megant@user/megant)
06:08:15 on^ joins (~on@50.231.5.242)
06:08:16 random-jellyfish joins (~random-je@user/random-jellyfish)
06:08:37 EsoAlgo3 is now known as EsoAlgo
06:10:51 × xkuru quits (~xkuru@user/xkuru) (Remote host closed the connection)
06:11:17 xkuru joins (~xkuru@user/xkuru)
06:12:46 Rabbit is now known as 068AAJYTL
06:12:46 xstill- joins (xstill@lounge.fi.muni.cz)
06:12:46 xsarnik joins (xsarnik@lounge.fi.muni.cz)
06:12:46 amk joins (~amk@109.255.169.126)
06:12:46 kojo5551 joins (~kojo5551@fep.grid.pub.ro)
06:12:46 abrar joins (~abrar@static-108-2-152-54.phlapa.fios.verizon.net)
06:12:46 ski joins (~ski@remote11.chalmers.se)
06:12:46 hpc joins (~juzz@ip98-169-35-13.dc.dc.cox.net)
06:12:46 forell_ joins (~forell@host-178-216-90-220.sta.tvknaszapraca.pl)
06:12:46 prasad joins (~user@c-73-170-49-136.hsd1.ca.comcast.net)
06:12:46 wombat875 joins (~wombat875@pool-72-89-24-154.nycmny.fios.verizon.net)
06:12:46 kmein_ joins (~weechat@user/kmein)
06:12:46 ishutin joins (~ishutin@87-97-82-177.pool.digikabel.hu)
06:12:46 c_wraith joins (~c_wraith@adjoint.us)
06:12:46 statusfailed joins (~statusfai@statusfailed.com)
06:12:46 canta joins (~canta@user/canta)
06:12:46 dminuoso joins (~dminuoso@user/dminuoso)
06:12:46 mmalter joins (~mmalter@88.126.10.237)
06:12:46 tcard joins (~tcard@p2878075-ipngn18701hodogaya.kanagawa.ocn.ne.jp)
06:12:46 juri_ joins (~juri@178.63.35.222)
06:12:46 tolt joins (~weechat-h@li219-154.members.linode.com)
06:12:46 mmaruseacph2 joins (~mihai@198.199.100.72)
06:12:46 meejah joins (~meejah@rutas.meejah.ca)
06:12:46 fluxit joins (~fluxit@techsmix.net)
06:12:46 andjjj23_ joins (~irc@107.170.228.47)
06:12:46 neverwas joins (jpneverwas@swissbox.unperson.link)
06:12:46 n3t joins (n3t@user/n3t)
06:12:46 loonycyborg joins (~loonycybo@wesnoth/developer/loonycyborg)
06:12:46 drdo joins (~drdo@roach0.drdo.eu)
06:12:46 ByronJohnson joins (~bairyn@50-250-232-19-static.hfc.comcastbusiness.net)
06:12:46 carter joins (sid14827@helmsley.irccloud.com)
06:12:47 TMA joins (~tma@twin.jikos.cz)
06:12:47 hubvu_ joins (sid495858@tinside.irccloud.com)
06:12:47 jtmar joins (~james@jtmar.me)
06:12:47 kawpuh joins (~kawpuh@66.42.81.80)
06:12:47 byorgey joins (~byorgey@155.138.238.211)
06:12:49 × d34df00d quits (~d34df00d@2600:1700:8c60:3a10::48) (Excess Flood)
06:12:52 Akiva joins (~Akiva@user/Akiva)
06:13:58 xstill- is now known as Guest9250
06:15:09 × Null_A quits (~null_a@2601:645:8700:2290:8935:4edf:b32:6553) (Remote host closed the connection)
06:15:52 × bollu quits (~bollu@159.65.151.13) (Quit: Ping timeout (120 seconds))
06:15:52 Null_A joins (~null_a@2601:645:8700:2290:8935:4edf:b32:6553)
06:16:12 bollu joins (~bollu@159.65.151.13)
06:17:48 seer joins (~delicacie@2601:6c4:4080:3f80:3dfd:43d3:c415:2e6f)
06:17:50 seer is now known as Inst
06:17:52 <Inst> hai guys
06:18:14 <Inst> I've been recently thinking, what's the relationship between a function and an algorithm?
06:19:09 <dibblego> is this fair dinkum?
06:19:25 vglfr joins (~vglfr@88.155.15.250)
06:20:22 × Null_A quits (~null_a@2601:645:8700:2290:8935:4edf:b32:6553) (Ping timeout: 260 seconds)
06:20:33 <Inst> ???
06:21:20 <Axman6> algorithms can be made from functions?
06:22:13 <Inst> algorithms can be made from functions, but algorithms can also be the implementation of functions
06:22:14 <Axman6> algorithms are often defined as being a sequence of steps, but that would generally mean that lots of algorithm implementations in Haskell aren't algorithms because the order of steps may not be well defined
06:22:44 <Axman6> yes - because really, everything is functions; just ask Church
06:23:32 <Axman6> > (\t f -> t) "Everything is a function" "Not everything is a function"
06:23:33 <lambdabot> "Everything is a function"
06:23:41 <Inst> in which case, why not just consider algorithms the specific implementation of a function?
06:23:57 <c_wraith> at that point, you're starting to get into the weeds
06:23:57 <Inst> and if the order of steps may not be well defined, shouldn't there be an order of steps, even if it's hidden from casual examination?
06:24:11 <c_wraith> what value does a statement like that have?
06:24:30 koolazer joins (~koo@user/koolazer)
06:25:10 <random-jellyfish> wouldn't reading about Turing machines shed more light on the topic?
06:25:46 <c_wraith> depending on your exact defintions of "function" and "algorithm", all functions implement algorithms and all algorithms can be functions. The thing is, "depending on exact definitions" is doing a lot of heavy lifting.
06:25:47 <Inst> algorithms iirc come from mathematics, not computer science
06:25:54 <dibblego> no read #haskell instead
06:25:59 <Axman6> (\f t -> t) -- got my canonical true definion above backwards!
06:26:02 <c_wraith> computer science is the branch of mathematics concerned with efficiency
06:26:17 <c_wraith> anything coming from computer science is math
06:27:03 <Inst> https://plato.stanford.edu/entries/turing-machine/
06:27:15 <int-e> coming from math, functions need not be computable
06:28:34 <random-jellyfish> "Computability is the ability to solve a problem in an effective manner. It is a key topic of the field of computability theory within mathematical logic and the theory of computation within computer science. The computability of a problem is closely linked to the existence of an algorithm to solve the problem.
06:28:34 <random-jellyfish> The most widely studied models of computability are the Turing-computable and μ-recursive functions, and the lambda calculus, all of which have computationally equivalent power. Other forms of computability are studied as well: computability notions weaker than Turing machines are studied in automata theory, while computability notions stronger
06:28:35 <random-jellyfish> than Turing machines are studied in the field of hypercomputation." , https://en.wikipedia.org/wiki/Computability#:~:text=Computability%20is%20the%20ability%20to,algorithm%20to%20solve%20the%20problem.
06:28:39 takuan joins (~takuan@178-116-218-225.access.telenet.be)
06:28:47 <c_wraith> There isn't really anything deep to explore. It comes down to exact definitions in use. And you get to choose those definitions when you start the conversation.
06:28:49 rusrushal13 joins (~rusrushal@2401:4900:447e:b662:c06d:f354:ecf:b32e)
06:29:21 <Inst> c_wraith: my topic of interest is whether FP allows you to reason about algorithms more easily
06:30:01 <random-jellyfish> I'd say it allows you to do it differently
06:30:13 <random-jellyfish> whether it's easy or not depends on you
06:30:28 <Inst> i no longer feel the sense that FP is easier than imperative
06:30:30 <c_wraith> I don't think anyone thinks Hoare triples are easier than referential transparency
06:30:52 <c_wraith> the thing is, people don't actually use Hoare triples, because they just go "eh, good enough"
06:30:57 <int-e> The lack of mutation in pure functional languages simplifies reasoning.
06:30:58 × pavonia quits (~user@user/siracusa) (Quit: Bye!)
06:31:25 <int-e> But it also limits how you implement things... it's not a free meal.
06:32:28 <random-jellyfish> recursion gives you a "feeling" of mutability
06:32:50 <Inst> strictly, just accumulators
06:32:51 <random-jellyfish> with the arguments changing at each call
06:32:55 <c_wraith> recursion gives you rebinding locals. That's very different from the kind of mutability you need for like a Union-Find tree
06:33:48 <monochrom> If you allow yourself pointer-heavy mutable data structures, reasoning about algorithms operating on them is still an open question (therefore harder than even PhD level), for starters look up "separation logic".
06:33:55 <c_wraith> (specifically, the path compression portion of the Find algorithm)
06:34:15 _ht joins (~quassel@82-168-34-160.fixed.kpn.net)
06:34:24 <monochrom> However, union-find absolutely relies on allowing a pointer-heavy mutable data structure.
06:34:36 <monochrom> Yeah that :)
06:35:08 <Inst> so FP algorithms are a subset of all CS algorithms?
06:35:17 <monochrom> Honest! I swear I was just too slow typing! I already thought of union-find without reading. :)
06:35:31 <c_wraith> Union-Find is a really good example, though
06:35:35 <int-e> the term "algorithm" is not rigorously defined
06:35:35 <Axman6> Inst: purity certainly lets you reason about algorithms more easily, but not all algorithms can be implemented efficiently with pure functions (we have some cool tricks to allow us to write algorithms which use mutation and guarantee they are pure, but that doesn't mean all mutable algorithms can be implemented efficiently with purity)
06:35:53 <int-e> it's too imprecise to answer "so FP algorithms are a subset of all CS algorithms?"
06:36:00 <c_wraith> Union-Find is easy to understand and absolutely needs mutable pointers
06:36:21 <int-e> You /can/ simulate mutation with persistent associative maps and recursion.
06:36:24 <dolio> Union-find is easy to understand?
06:36:45 <c_wraith> Yes. It's not easy to *prove*, but it's easy to understand
06:36:54 <int-e> And implement union-find on top of that. But you incur a logarithmic slowdown (and a significant constant factor). Is it the same algorithm? You can argue either way.
06:37:09 <monochrom> Oh BTW even just proving its amortized time bounds is extremely messy. Especially in contrast to how the algorithms are like 5-liners and "simple" loops.
06:37:21 <dolio> I think it's really easy to not implement optimally.
06:37:29 kritzefitz joins (~kritzefit@debian/kritzefitz)
06:38:05 <dolio> Even if you know the sort of trick to do.
06:38:14 <int-e> don't mess up the ranks; don't forget path compression
06:38:16 <c_wraith> there isn't really a trick, is there?
06:38:26 <c_wraith> It's just union by rank, find with path compression
06:38:37 <monochrom> I no longer teach a data structure course, but every year when I taught it, the time bound proof was the most dreaded part of the whole course.
06:38:47 <c_wraith> yeah. that time bound proof is ridiculous
06:39:03 <int-e> Hmm I don't think I've ever worked through it.
06:39:22 <int-e> I just marvelled at the inverse Ackermann function...
06:39:35 <c_wraith> when it involves a function you've never heard of in any other context, you know it's going to be hairy
06:39:48 <int-e> Oh I've heard of it of course :)
06:39:59 <int-e> (Well, the Ackermann function)
06:40:03 <c_wraith> You've heard of *inverse* Ackermann?
06:40:09 <monochrom> So, one day, I signed up for receiving a teacher's copy of CLRS, therefore also receiving one of the author's own lecture slides. I was very excited, how does the expert teach this proof to class?
06:40:33 <int-e> "then a miracle occurs"
06:40:38 <monochrom> I opened his slides. He totally doesn't teach the proof in lecture at all. >:E
06:41:17 <c_wraith> My professor for the relevant course skipped the inverse ackermann function. He just proved amortized O(n log n) with union by rank, and ignored path compression.
06:41:32 <int-e> it may be more interesting that there are claims in the literature that this scheme is amortized constant time :)
06:41:34 <monochrom> Actually that's a relief. I guess it means I don't have to teach the proof either. >:)
06:41:58 <monochrom> Really, in my case it's a 2nd year course, I don't think the students actually benefit from seeing the proof...
06:42:02 <c_wraith> I thought you said you didn't need to even teach the course anymore. :P
06:42:33 <monochrom> But I'm a bit bivalent because it's a prominent example of a non-trivial potential argument.
06:42:41 <opqdonut> ah union-find is the famous one with the inverse ackermann
06:43:19 <c_wraith> union-find also has the nice property that it is well-suited for a simple algorithm to teach, so it's easy to justify.
06:43:31 <c_wraith> ... even if that algorithm is almost always inferior to Dijkstra's
06:44:37 × doyougnu quits (~doyougnu@cpe-67-249-83-190.twcny.res.rr.com) (Ping timeout: 240 seconds)
06:44:38 <Inst> Axman6: does it matter if you can implement such efficiently? As in, if it's logically equivalent to an efficient implementation, doesn't the FP version resolve to a useful stepping stone to understanding of the impure version?
06:44:39 <int-e> https://www.ecommons.cornell.edu/handle/1813/10810 (okay, it's just a technical report, so not peer reviewed)
06:44:39 <opqdonut> I remember an advanced data structures course that used about half of its run to do the amortized analysis of fibonacci heaps
06:45:17 <int-e> Mostly this explains Tarjan's title, "On the efficiency of a good but not linear set union algorithm"
06:45:27 <monochrom> But yeah here is how badly "algorithm" is undefined. We don't even agree on a definition of sameness of two algorithms.
06:46:25 <Axman6> Inst: the run time of an algorithm is usually considered a fundamental property of it, and often making a pure implemntation will add a log n factor to the runtime, unless you can use true mutation
06:47:33 <opqdonut> arguably if the algorithm uses mutation and you make a pure implementation it's not the same algorithm
06:47:36 <Inst> and i assume the log n isn't predictable in such a way that it can simply be removed trivially from its impure cousin?
06:47:56 <Inst> erm, from the pure cousin to represent its impure cousin?
06:48:07 fef joins (~thedawn@user/thedawn)
06:48:14 <opqdonut> many famous algorithms rely inherently on mutation, e.g. quicksort
06:48:36 <opqdonut> some famous algorithms are effectively functional already, e.g. mergesort, or many binary tree algorithms
06:49:05 <Inst> i'm just curious, i know people who have been "filtered by trees"
06:49:39 <Inst> is working with data structures intrinsically easier, i.e, is being based in FP and translating from an FP idiom to one with mutation practical?
06:51:11 <c_wraith> I don't think that question is answerable
06:51:41 <monochrom> I don't think the question has meaning.
06:51:58 <Inst> not even wrong :)
06:52:00 <monochrom> I don't think most of the recent questions have meaning.
06:52:02 zincy joins (~zincy@2a00:23c8:970c:4801:f0bc:c4cb:1665:1c67)
06:52:10 <Inst> *my recent questions
06:52:17 <int-e> translating from an FP idiom to one with mutation is practical, ghc does it all the time
06:52:55 <Inst> i'm curious in pedagogy, i guess, when admitted i don't understand the subject myself
06:53:05 × zincy quits (~zincy@2a00:23c8:970c:4801:f0bc:c4cb:1665:1c67) (Remote host closed the connection)
06:53:26 <Inst> the idea is more around that of teaching FP first, then moving onto imperative as a way to compensate for FP's limitations
06:55:28 <random-jellyfish> are there computer architectures better suited for Haskell than von Neumann architectures?
06:55:54 <random-jellyfish> I know I could probably look this up and get 1000 results, but I like quick answers from experts :)
06:56:06 <c_wraith> hard to say.
06:56:15 <c_wraith> The reduceron existed.
06:56:16 polyphem joins (~rod@2a02:810d:840:8754:2c8b:1f9:dc9a:b89b)
06:57:18 <monochrom> https://mail.haskell.org/pipermail/haskell-cafe/2007-May/025503.html >:)
06:59:07 <random-jellyfish> I see recuceron is open source and can be installed on FPGAs, nice
07:00:16 <int-e> the pressure for dedicated hardware kind of evaporated when CPUs began executing dozens of instructions per memory access
07:00:53 <Inst> int-e: still sort of curious, why aren't there FP coprocessors?
07:01:12 <Hash> What would it do differently?
07:01:38 deadmarshal joins (~deadmarsh@95.38.114.1)
07:01:45 <int-e> And how would it be more efficient in computations that are largely memory bound?
07:01:48 <c_wraith> in a practical sense - because it's a *lot* of work to run faster than code compiled via G-Machine on commodity hardware
07:02:50 eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:41be:eda7:26bd:771e)
07:03:29 × eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:41be:eda7:26bd:771e) (Remote host closed the connection)
07:03:44 eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:41be:eda7:26bd:771e)
07:04:27 <int-e> Also... there's a strong tendency to write performance critical code in a different language that utilizes standard CPUs better (by reducing random memory accesses and giving more control over cache locality)
07:05:27 <int-e> And that's the fight you'd have to win: FP code on your specialized hardware vs. tuned other-language code on standard CPUs, or GPUs where applicable (or more specialized number crunchers like Google's TPUs)
07:06:09 <Inst> int-e: i guess i'm more talking business, suppose an FP optimized architecture that's built into a card, as opposed to being a CPU, exists, with the aim of speeding up FP computing
07:06:28 <Inst> would that see a market? Since, FP community is often fanatical, might see uptake simply because it's there, and hopefully affordable
07:07:26 <c_wraith> I can't imagine the research budget it would take to make it comparable to current hardware
07:08:20 <random-jellyfish> lisp machines had the same fate
07:08:29 × whatsupdoc quits (uid509081@id-509081.hampstead.irccloud.com) (Quit: Connection closed for inactivity)
07:09:30 ElderEphemera joins (~ElderEphe@d192-24-122-179.try.wideopenwest.com)
07:09:41 × ElderEphemera quits (~ElderEphe@d192-24-122-179.try.wideopenwest.com) (Client Quit)
07:09:42 yauhsien joins (~yauhsien@61-231-37-18.dynamic-ip.hinet.net)
07:11:27 <int-e> Even https://en.wikipedia.org/wiki/Jazelle seems to have died quietly... and that targeted a mainstream virtual machine.
07:12:44 wroathe joins (~wroathe@206-55-188-8.fttp.usinternet.com)
07:12:44 × wroathe quits (~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host)
07:12:44 wroathe joins (~wroathe@user/wroathe)
07:13:37 × vglfr quits (~vglfr@88.155.15.250) (Ping timeout: 250 seconds)
07:13:51 <random-jellyfish> if hardware design and verification were cheaper there would be a plethora of architectures running on FPGAs, only the protocols they'd use to talk to each other would be standardized
07:15:07 MQ17J joins (~MQ17J@d192-24-122-179.try.wideopenwest.com)
07:17:31 <c_wraith> instead we have Apple adding instructions to their M1 chip specifically to accelerate javascript on their hardware
07:17:34 × rusrushal13 quits (~rusrushal@2401:4900:447e:b662:c06d:f354:ecf:b32e) (Ping timeout: 256 seconds)
07:17:46 × wroathe quits (~wroathe@user/wroathe) (Ping timeout: 256 seconds)
07:19:00 <int-e> (Which may be a more fruitful avenue... think of individual instructions that CPUs could reasonably implement and that would make FP programs run faster. Maybe something that inspects pointer tags early and uses them for branch prediction, who knows.)
07:19:49 <random-jellyfish> I wonder if the advent of https://en.wikipedia.org/wiki/High-level_synthesis will eventually make hardware and software design indistinguishable
07:19:59 <int-e> Javascript is a juicier target for this if you're building a mobile device. Sadly.
07:20:06 vglfr joins (~vglfr@46.96.133.112)
07:22:18 × vglfr quits (~vglfr@46.96.133.112) (Read error: Connection reset by peer)
07:23:00 vglfr joins (~vglfr@46.96.133.112)
07:23:39 × asivitz quits (uid178348@id-178348.tinside.irccloud.com) (Quit: Connection closed for inactivity)
07:25:01 × vglfr quits (~vglfr@46.96.133.112) (Read error: Connection reset by peer)
07:25:38 vglfr joins (~vglfr@46.96.133.112)
07:26:55 × yauhsien quits (~yauhsien@61-231-37-18.dynamic-ip.hinet.net) (Remote host closed the connection)
07:27:26 × xkuru quits (~xkuru@user/xkuru) (Read error: Connection reset by peer)
07:27:44 yauhsien joins (~yauhsien@61-231-37-18.dynamic-ip.hinet.net)
07:29:40 <Maxdamantus> FPGAs are always going to be suboptimal.
07:30:20 xkuru joins (~xkuru@user/xkuru)
07:30:28 × MQ17J quits (~MQ17J@d192-24-122-179.try.wideopenwest.com) (Quit: Client closed)
07:30:33 <Maxdamantus> If you find patterns that work well on FPGAs, they should probably just be incorporated into more general processors.
07:31:23 <Maxdamantus> (ones that are produced at 4 nm resolution or whatever it is)
07:31:33 zeenk joins (~zeenk@2a02:2f04:a208:c500:649e:b5e2:d15c:7960)
07:31:37 akegalj joins (~akegalj@141-136-245-236.dsl.iskon.hr)
07:32:15 × yauhsien quits (~yauhsien@61-231-37-18.dynamic-ip.hinet.net) (Ping timeout: 250 seconds)
07:32:41 <davean> uh huh
07:32:43 <davean> Sure
07:33:38 <Maxdamantus> 10 nm*
07:35:14 <davean> Its not about the nm, what you said doesn't even make conceptual sense vs. traditional processors.
07:35:34 <davean> and the processors that it does make sense for, you'd probably not think of as a processor, and basicly are FPGAs done differently
07:35:58 <random-jellyfish> 5G base stations are using FPGAs a lot, easier for maintenance
07:36:18 <random-jellyfish> no need to replace boards, just reconfigure them
07:36:25 <davean> Also can do things that you just can't do on anything like a CPU
07:36:42 <davean> FPGAs are wide, inherently.
07:37:01 <davean> They move data differently than CPUs
07:37:28 <davean> They litterly do a different job
07:37:33 × vglfr quits (~vglfr@46.96.133.112) (Read error: Connection reset by peer)
07:37:55 <Maxdamantus> They do the same job as an ASIC, just one that's reprogrammable.
07:38:09 <Maxdamantus> The ASIC solution is going to be better at doing that particular job.
07:38:10 <davean> And an ASIC is nothing like a CPU
07:38:31 vglfr joins (~vglfr@46.96.133.112)
07:38:33 <Maxdamantus> Well, a CPU can be thought of as being made of lots of ASICs.
07:38:38 <davean> This is just dumb, I'm out
07:38:56 <int-e> so many type mismatches
07:39:10 <random-jellyfish> lol
07:40:01 <random-jellyfish> data Hardware a = Asic a | Fpga a
07:40:22 <davean> I mean FPGAs are an ASIC
07:41:31 vpan joins (~0@212.117.1.172)
07:41:54 <Maxdamantus> If I wanted to create my own car company. I would probably build the cars out of wood.
07:41:57 × zmt00 quits (~zmt00@user/zmt00) (Ping timeout: 240 seconds)
07:42:16 <Maxdamantus> If I wanted to create my own 5G base station manufacturing company. I would probably build the base stations out of FPGAs.
07:42:55 <monochrom> Ugh why is everyone dreaming.
07:43:07 <monochrom> pipe dreaming, to be specific.
07:43:07 <Maxdamantus> If Apple wanted to make 5G base stations, they would use ASICs because they would probably be targetting a sufficiently high number of units.
07:43:09 <davean> monochrom: I don't know, the troll is not the worst?
07:43:35 lionhairdino joins (~jacoo@121.131.39.82)
07:43:49 × [itchyjunk] quits (~itchyjunk@user/itchyjunk/x-7353470) (Read error: Connection reset by peer)
07:44:08 <random-jellyfish> apologies
07:44:14 <int-e> the "FP" in "FPGA" is a feature
07:44:32 <polyphem> is google down ?
07:44:39 <monochrom> "I'm thinking how to teach computer science" "I'm going to start a car company that makes 5G base stations" ...
07:45:14 <random-jellyfish> human brains return so much better search results than google
07:45:17 <int-e> building radio towers by stacking FPGAs <-- or at least that's how I visualized it
07:45:20 <random-jellyfish> apologies again
07:45:31 <monochrom> Correction: "I'm thinking how to teach computer science. I haven't learned computer science."
07:45:44 <davean> monochrom: I don't know, we've had worse trolls
07:46:25 <random-jellyfish> I worked at Ericsson a few years ago, their base stations included FPGAs, they weren't made entirely of FPGAs
07:46:26 <int-e> well, the best trolls are at least somewhat knowledgable
07:47:43 <random-jellyfish> FPGAs are good accelerating certain algorithms for which there no hw acceleration available yet
07:47:50 <random-jellyfish> are good for*
07:48:49 <monochrom> Google is not down.
07:48:50 × EsoAlgo quits (~EsoAlgo@152.70.142.52) (Ping timeout: 268 seconds)
07:49:25 <polyphem> monochrom:now it works ....
07:49:54 <davean> random-jellyfish: They're good for implimenting wide programs without a lot of conditionals
07:50:06 <davean> random-jellyfish: like if you want a next-frame ethernet server
07:51:29 gehmehgeh joins (~user@user/gehmehgeh)
07:54:28 <random-jellyfish> was google down for real?
07:56:12 <polyphem> google didnt work here whereas duckduckgo did
07:56:26 <polyphem> maybe some routing stuff , dunno
07:57:00 <Maxdamantus> random-jellyfish: exactly. That's why it's suboptimal.
07:57:09 <Maxdamantus> random-jellyfish: once there's hw acceleration, you don't need the FPGA.
07:57:21 <davean> Maxdamantus: All 11ms of that time!
07:57:52 kmein_ is now known as kmein
07:59:27 <random-jellyfish> sometimes it's better to have the hw accelleration now than later
07:59:48 <random-jellyfish> and hw bug fixes in asics are impossible
08:00:42 <polyphem> didnt amd wanted to include fpgas in their processors ?
08:00:54 <polyphem> for codecs
08:01:06 <random-jellyfish> some macbook pros already have ice40 fpgas on them
08:01:25 <davean> yes, everyone does becasue its the smart move
08:02:10 <Maxdamantus> polyphem: dunno, but that sounds like a suboptimal solution. If someone's CPU doesn't support a particular codec, they should probably have just got the video in a codec that is supported.
08:02:38 <Maxdamantus> Brand new codecs aren't going to be *that* much better than ones that are supported in the current generation of CPUs.
08:02:54 <polyphem> Maxdamantus: i think its meant for encoding,rather decoding
08:02:57 <random-jellyfish> os developers will soon be writing drivers in Verilog or Clash lol
08:03:00 <Maxdamantus> It will probably only help if you're using a 10-year old CPU.
08:03:13 zyklotom1 parts (~ethan@r4-128-61-88-167.res.gatech.edu) (WeeChat 2.7.1)
08:03:16 × prasad quits (~user@c-73-170-49-136.hsd1.ca.comcast.net) (Remote host closed the connection)
08:04:57 <Maxdamantus> polyphem: I think the same principle should apply.
08:05:50 <Maxdamantus> polyphem: an FPGA implementation of HEVC or H.264 or whatever is unlikely to be more efficient than one hardcoded at 10 nm.
08:05:52 × mstksg quits (~jle`@cpe-23-240-75-236.socal.res.rr.com) (Ping timeout: 250 seconds)
08:06:01 <Hecate> #StabilityWin mtl 2.3 will not break compat by removing some re-exports
08:06:32 <Hecate> (that was either this or provide some tooling to allow the migration to occur in large codebases smoothly)
08:06:33 <Maxdamantus> Maybe if you're developing a new codec, but for that you should probably just be using a discrete FPGA for prototyping.
08:06:44 lortabac joins (~lortabac@2a01:e0a:541:b8f0:4096:379:219d:4d69)
08:07:55 mstksg joins (~jle`@cpe-23-240-75-236.socal.res.rr.com)
08:08:19 × shriekingnoise quits (~shrieking@201.231.16.156) (Quit: Quit)
08:08:20 <int-e> Maxdamantus: Do you know what the term "trade-off" means?
08:09:04 <Maxdamantus> int-e: yes. It's when you build cars out of wood because you don't have the ability to make them out of metal.
08:09:18 <Maxdamantus> int-e: or when you build 5G base stations out of FPGAs.
08:10:12 <Maxdamantus> 5G is a fairly new technology, so I can understand why they might still be using FPGAs there.
08:11:59 <int-e> You will always have some FPGAs in there because they offer you programmable, wide, real time data processing, allowing you to add features in the field that would otherwise require you to replace several thousands worth of hardware.
08:12:32 froduck joins (~froduck@cpc101088-sgyl37-2-0-cust22.18-2.cable.virginm.net)
08:13:18 <froduck> hey, i have a pretty decent representation of pointers
08:13:25 × akegalj quits (~akegalj@141-136-245-236.dsl.iskon.hr) (Ping timeout: 250 seconds)
08:14:44 <[exa]> better than "integer byte addresses" ?
08:14:57 <froduck> type Edit a x = (Read a x,Write a x), data Pointer where Pointer a s x :: (Read a x,Edit s x) => x -> Pointer a s x
08:15:05 <froduck> [exa] yes
08:16:30 <Maxdamantus> int-e: right, with a trade-off of efficiency (need more hardware to achieve the same throughput, using more energy, costing more money due to specialisation)
08:17:01 <Maxdamantus> int-e: if your use case is really special then maybe an FPGA is the only practical option.
08:17:39 <Maxdamantus> int-e: just like how making a wooden go-kart might be the only way I can make my own car.
08:18:24 × xkuru quits (~xkuru@user/xkuru) (Ping timeout: 256 seconds)
08:18:30 <[exa]> froduck: how does that work? (looks like no pointer arithmetic there right?)
08:18:34 <froduck> class Read a x where get :: x -> a, class Write s x where set :: s -> x -> x, edit :: Edit a x => (a -> a) -> x -> x;edit f x = let a = get x in set (f a) x
08:18:44 chenqisu1 joins (~chenqisu1@183.217.200.249)
08:18:55 <[exa]> in particular, isn't that State ?
08:18:55 <froduck> [exa] set changes the pointer
08:18:56 systemfault is now known as Elsa
08:19:19 Elsa is now known as systemfault
08:19:26 <froduck> [exa] its something that has a state (editable thing) s, and can be read to get an `a'
08:19:34 <froduck> so a state with a reader
08:19:40 × andreabedini quits (~andreabed@8s8kj6nj5000h5zkmpxr.ip6.superloop.com) (Quit: WeeChat 3.3)
08:19:50 <froduck> it acts as an abstracted (wrapped) pair that way
08:20:00 CHUD joins (~CHUD@host-80-41-89-108.as13285.net)
08:20:05 <[exa]> :t (get, put, modify)
08:20:06 <lambdabot> (MonadState s1 m1, MonadState s2 m2, MonadState s3 m3) => (m1 s1, s2 -> m2 (), (s3 -> s3) -> m3 ())
08:20:20 × dextaa__ quits (~dextaa@217.61.225.120) (Quit: leaving)
08:20:35 <froduck> (wrapped in the sense that the abstracted wrapper, because it can also be a state, can extend over the pair, so its more like specifying a sectioning of the data "it at least has these two values, one you can read, the other you can edit)
08:21:24 <froduck> [exa] i dont see how get isnt taking an argument there
08:21:34 <froduck> it cant specify then the target of the class
08:21:37 × Vajb quits (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi) (Read error: Connection reset by peer)
08:21:44 Major_Biscuit joins (~MajorBisc@c-001-005-022.client.tudelft.eduvpn.nl)
08:21:55 <froduck> you cant "get something from x" in specifying the "pointer x"
08:22:19 Vajb joins (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi)
08:22:20 <froduck> i think given the classes i wrote it works ok
08:22:25 <[exa]> what's the semantics of `a` there?
08:22:43 <froduck> a is the thing being pointed to
08:22:53 <froduck> s is the "wider environment"
08:23:12 haskellberryfinn joins (~nut@roc37-h01-176-170-197-243.dsl.sta.abo.bbox.fr)
08:23:12 <froduck> modification of which "repositions" the pointer, so the `a' returned by get can change
08:23:17 <[exa]> and `x` ?
08:23:36 <dminuoso> Gah, I'm in an incredibly tough spot. I have this large product type, and I want case-insensitivity on one particular field for Eq and Ord.
08:23:36 flipchan joins (~filip@188-169-255-31.dsl.utg.ge)
08:23:47 <dminuoso> And ideally I want this without using a newtype wrapper for that field
08:23:50 <froduck> the thing that can be read to return the thing being pointed to `a' and edited by a function over s
08:24:26 × CHUD quits (~CHUD@host-80-41-89-108.as13285.net) (Ping timeout: 256 seconds)
08:24:29 <[exa]> dminuoso: is that still a proper Eq ?
08:24:31 <dminuoso> So Im left with a) either biting the bullet and forcing the inconvenience of a newtype wrapper for this field for users, b) using TH/Generics to implement the custom Eq/Ord instance, or c) handrolling it - which is particularly nasty for Ord.
08:24:35 <dminuoso> [exa]: Sure, why not?
08:24:43 <froduck> [exa] x is the pointer.
08:25:14 <froduck> its a repositionable lens over a, by its modifiability as being editable as a state s
08:25:47 × random-jellyfish quits (~random-je@user/random-jellyfish) (Quit: Client closed)
08:25:52 <dminuoso> [exa]: An equivalence relation must merely be reflexive, symmetric and transitive - all of which are preserved in a case-insensitive scenario
08:25:55 × ix quits (~ix@2a02:8010:674f:0:cda6:d05:f0d7:4922) (Remote host closed the connection)
08:25:58 <dminuoso> And the order would still be a total order
08:26:03 ix joins (~ix@2a02:8010:674f:0:d65d:64ff:fe52:5efe)
08:26:06 × ix quits (~ix@2a02:8010:674f:0:d65d:64ff:fe52:5efe) (Remote host closed the connection)
08:26:15 ix joins (~ix@2a02:8010:674f:0:d65d:64ff:fe52:5efe)
08:26:16 × ix quits (~ix@2a02:8010:674f:0:d65d:64ff:fe52:5efe) (Remote host closed the connection)
08:26:18 <[exa]> ah okay, I'm more harsh to my Eqs obviously :D
08:26:22 <froduck> i have a good example too, where you just use the pair of (a,s) which obviously can have `a' read from it and can have the `s' edited
08:26:24 ix joins (~ix@2a02:8010:674f:0:d65d:64ff:fe52:5efe)
08:26:26 × ix quits (~ix@2a02:8010:674f:0:d65d:64ff:fe52:5efe) (Remote host closed the connection)
08:26:31 <dminuoso> [exa]: Plus, if I imbue this notion - you cant tell the difference anyway!
08:26:38 <[exa]> some kind of `compareOn` with a bit of lensing wouldn't help?
08:26:41 <dminuoso> (Think about Leibnizian equality)
08:26:42 <monochrom> dminuoso: I think monoidness of Ordering helps with Ord for tuples. Here: ...
08:26:43 <polyphem> dminuoso: add a virtual field with lenses and do caseconvertion
08:27:03 <froduck> basically, to see that as a pointer, its a kind of graph with a monadic tail that pairs the state, with a wrapped ()
08:27:27 <monochrom> cmpTuple (x,y) (a,b) = compare x a <> compare y b
08:27:39 ix joins (~ix@2a02:8010:674f:0:d65d:64ff:fe52:5efe)
08:27:41 CHUD joins (~CHUD@host-80-41-89-108.as13285.net)
08:27:49 <monochrom> Let me try demoing with yahb.
08:27:50 <dminuoso> monochrom: Oh mmm, that's an interesting idea.
08:27:57 <dminuoso> Yeah I think I get the idea.
08:28:06 <monochrom> OK :)
08:28:14 Cheery_ is now known as Cheery
08:28:44 <froduck> eg. you could specify that the modifiable state was actually a list zipper, then you could use it as a pointer over lists, or similarly for trees or graphs
08:28:45 <[exa]> froduck: the purity on that one seems scary. I'd probably need to see an example of real use (like, use it to make some pointerish data structure or so)
08:28:55 prasad joins (~user@c-73-170-49-136.hsd1.ca.comcast.net)
08:29:25 <froduck> the idea is to abstract over that, to state, to also capture the ability to just unfold the tail
08:29:46 <froduck> then state s is the state used in unfolding, its clear how when that is a zipper, or another pointer like thing... etc
08:30:17 <dminuoso> monochrom: So broadly I could have `instance Ord MyType where compare (Foo a1 b1 c1) (Foo a2 b2 c3) = compare (W a1) (W a2) <> compare b1 b2 <> compare c1 c2`
08:30:19 <dminuoso> Right?
08:30:28 <monochrom> Yeah
08:30:37 <dminuoso> Brilliant, this will work nicely. :)
08:30:41 <ski> @type comparing fst <> comparing snd
08:30:42 <lambdabot> (Ord a, Ord b) => (a, b) -> (a, b) -> Ordering
08:30:42 <froduck> basically its taking the arguments to unfold, and putting them into a sectionaing via class constraints to restrict the writability of a
08:31:37 × ix quits (~ix@2a02:8010:674f:0:d65d:64ff:fe52:5efe) (Ping timeout: 240 seconds)
08:31:38 <monochrom> > [ c1 <> c2 | c1 <- [LT, EQ, GT], c2 <- [LT, EQ, GT] ]
08:31:39 <lambdabot> [LT,LT,LT,LT,EQ,GT,GT,GT,GT]
08:32:07 Guest2 joins (~Guest2@c-73-170-49-136.hsd1.ca.comcast.net)
08:32:20 <ski> instance Ord MyType where compare = comparing (W . getA) <> comparing getB <> comparing getC -- dminuoso ?
08:32:21 × CHUD quits (~CHUD@host-80-41-89-108.as13285.net) (Ping timeout: 256 seconds)
08:32:35 Guest2 is now known as presci
08:32:43 <dminuoso> ski: Mmm, that's a neat little improvement as well. :)
08:32:56 <dminuoso> Guess that would make it easier to avoid "mixing up fields"
08:32:58 <monochrom> I hate getters, so I say it's not as good. :)
08:33:03 <presci> Hi I have a question about parseDigits:: R.ReadP String
08:33:03 <presci> parseDigits = R.many1 (R.satisfy C.isDigit)
08:33:08 <dminuoso> monochrom: I have them either way.
08:33:22 <froduck> the pointer basically serves as a trivial unfold, as it can be updated using id to give an unfolding stream of the same `a', according to no pointer navigation. but when you scan over it, this can redirect the navigation, and the `a' recieved should change
08:33:45 <monochrom> But yeah the main point is if you know what <> does to Ordering you're saved. :)
08:34:07 <dminuoso> Indeed. :)
08:34:22 <froduck> you want to seperate this id :: x -> x style unfold, to give seperate roles to the internals of x, as the "thing being pointed to `a'", and the "thing you can change to change where its pointing to `s'"
08:34:55 <ski> @where monoids
08:34:55 <lambdabot> comment on "Monoids? In my programming language?" by Cale in 2008 (or 2009 ?) at <http://www.reddit.com/r/programming/comments/7cf4r/monoids_in_my_programming_language/c06adnx> about a use of `
08:34:55 <lambdabot> instance Monoid a => Monoid (rho -> a)'
08:35:08 <froduck> i guess you need to restrict the writability of `a' to ensure its changing nature results from the editability of `s' forcing it to capture the notion of position
08:35:29 <presci> Hi I have a question    parseDigits:: R.ReadP String
08:35:30 <presci> parseDigits = R.many1 (R.satisfy C.isDigit)
08:35:30 <presci> >>R.readP_to_S parseDigits "123"
08:35:31 <presci> >> gives me [("1","23"),("12","3"),("123","")]
08:35:31 <presci> >> should I use filter to get the last one or is there a better way to do it
08:35:57 × raym quits (~raym@user/raym) (Ping timeout: 240 seconds)
08:36:03 jespada joins (~jespada@87.74.36.188)
08:36:08 dhouthoo joins (~dhouthoo@178-117-36-167.access.telenet.be)
08:36:24 <[exa]> presci: please use pastebin for multiline stuff. other than that you might need to tell it that the string terminates by parsing out `eof`
08:36:37 coot joins (~coot@213.134.190.95)
08:36:49 mc47 joins (~mc47@xmonad/TheMC47)
08:36:54 raym joins (~raym@user/raym)
08:36:55 <[exa]> presci: this one https://hackage.haskell.org/package/base-4.16.0.0/docs/Text-ParserCombinators-ReadP.html#v:eof
08:37:07 × coot quits (~coot@213.134.190.95) (Remote host closed the connection)
08:37:15 ix joins (~ix@2a02:8010:674f:0:d65d:64ff:fe52:5efe)
08:37:34 coot joins (~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba)
08:38:29 × Sgeo quits (~Sgeo@user/sgeo) (Read error: Connection reset by peer)
08:39:24 × werneta quits (~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net) (Ping timeout: 268 seconds)
08:40:00 <froduck> i think really you want the pointer to be editable in `a'. but i think this has to happen as a class hierarchy extension, adding in the writability of `a' after having the pointer being with `a' being write restricted to notionally place the editability of the structure into the `s' field
08:40:06 × flipchan quits (~filip@188-169-255-31.dsl.utg.ge) (Ping timeout: 250 seconds)
08:40:31 × presci quits (~Guest2@c-73-170-49-136.hsd1.ca.comcast.net) (Quit: Client closed)
08:40:34 werneta joins (~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net)
08:41:35 × ix quits (~ix@2a02:8010:674f:0:d65d:64ff:fe52:5efe) (Ping timeout: 250 seconds)
08:41:50 × eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:41be:eda7:26bd:771e) (Remote host closed the connection)
08:42:25 fendor joins (~fendor@77.119.199.145.wireless.dyn.drei.com)
08:43:13 <xerox> presci: munch isDigit
08:43:19 × tzh quits (~tzh@c-24-21-73-154.hsd1.wa.comcast.net) (Quit: zzz)
08:43:29 <xerox> munch1 I guess
08:47:18 machinedgod joins (~machinedg@24.105.81.50)
08:48:42 × froduck quits (~froduck@cpc101088-sgyl37-2-0-cust22.18-2.cable.virginm.net) (Quit: Connection closed)
08:49:51 chele joins (~chele@user/chele)
08:51:08 × Vajb quits (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi) (Read error: Connection reset by peer)
08:52:14 CHUD joins (~CHUD@edu7979.kent.ac.uk)
08:52:15 Vajb joins (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi)
08:52:31 <dminuoso> ski, monochrom: Thanks a bunch, this looks very acceptable to me :) https://gist.github.com/dminuoso/af46f4b5cea5c2b132cda1bcc0b82723
08:53:20 <dminuoso> I'm quite happy that I could apply the same trick to Eq as well
08:53:29 <monochrom> That is epic.
08:54:05 doyougnu joins (~doyougnu@cpe-67-249-83-190.twcny.res.rr.com)
08:54:30 <[exa]> wow cool
08:54:37 gentauro_ is now known as gentauro
08:54:52 merijn joins (~merijn@c-001-001-018.client.esciencecenter.eduvpn.nl)
08:55:41 × gentauro quits (~gentauro@185.107.12.141) (Changing host)
08:55:41 gentauro joins (~gentauro@user/gentauro)
08:56:51 michalz joins (~michalz@185.246.204.57)
08:59:12 <dminuoso> And to finish the golf course, I can make a slight improvement with `gettingAll :: (a -> b -> All) -> a -> b -> Bool; gettingAll = coerce`
08:59:36 <dminuoso> Which is a bit handy since there's actually a second product type where I need to do the same
08:59:45 jgeerds joins (~jgeerds@55d4a547.access.ecotel.net)
09:00:09 × IgnatInsarov[m] quits (~kindaroma@2001:470:69fc:105::f5d9) (Quit: You have been kicked for being idle)
09:04:02 winterhound joins (~dust@2409:4071:4d8b:f7bb:2ea3:17f:ed3b:b921)
09:04:30 <winterhound> Hello
09:04:37 d0ku joins (~d0ku@178.43.19.180.ipv4.supernova.orange.pl)
09:05:30 yauhsien joins (~yauhsien@61-231-37-18.dynamic-ip.hinet.net)
09:06:17 <winterhound> I'm trying to compile gi-cairo. I get get this error 'Did not find a GI repository'. Any suggestion would be very helpful.
09:07:58 Gurkenglas joins (~Gurkengla@dslb-090-186-104-244.090.186.pools.vodafone-ip.de)
09:08:33 <[exa]> winterhound: what system is that? (btw could you pastebin a bit larger context of the error message?)
09:08:46 ubert1 joins (~Thunderbi@p200300ecdf099479a7980b6460b31c47.dip0.t-ipconnect.de)
09:10:05 lavaman joins (~lavaman@98.38.249.169)
09:11:06 × yauhsien quits (~yauhsien@61-231-37-18.dynamic-ip.hinet.net) (Ping timeout: 256 seconds)
09:11:37 × euandreh quits (~euandreh@2804:14c:33:9fe5:aa5f:93ea:3b88:5ff5) (Ping timeout: 240 seconds)
09:11:45 jgeerds_ joins (~jgeerds@55d4a547.access.ecotel.net)
09:13:50 euandreh joins (~euandreh@2804:14c:33:9fe5:e75a:d7d8:5f2b:42f0)
09:14:57 × jgeerds quits (~jgeerds@55d4a547.access.ecotel.net) (Ping timeout: 250 seconds)
09:15:43 <winterhound> exa : http://ix.io/3NKK , Trying to add package to Guix.
09:16:58 × geekosaur quits (~geekosaur@xmonad/geekosaur) (Read error: Connection reset by peer)
09:17:02 × synthmeat quits (~synthmeat@user/synthmeat) (Quit: WeeChat 3.0)
09:17:09 alp joins (~alp@user/alp)
09:17:31 geekosaur joins (~geekosaur@xmonad/geekosaur)
09:17:55 cfricke joins (~cfricke@user/cfricke)
09:18:10 ski usually calls it `equating'
09:19:16 max22- joins (~maxime@2a01cb0883359800be8bbc3fb1201a3c.ipv6.abo.wanadoo.fr)
09:19:43 × on^ quits (~on@50.231.5.242) (Ping timeout: 250 seconds)
09:20:29 Codaraxis__ joins (~Codaraxis@user/codaraxis)
09:22:54 <[exa]> winterhound: looks like the internal ./configure fails; you can try reproducing it manually in commandline with the arguments as passed there and see
09:23:26 × Codaraxis_ quits (~Codaraxis@user/codaraxis) (Ping timeout: 250 seconds)
09:23:42 <[exa]> interesting that it's searching for cairo when actually building cairo (/me not a GI expert tho)
09:29:59 synthmeat joins (~synthmeat@user/synthmeat)
09:31:08 kspalaiologos joins (~kspalaiol@user/kspalaiologos)
09:36:07 whatsupdoc joins (uid509081@id-509081.hampstead.irccloud.com)
09:37:57 winterhound parts (~dust@2409:4071:4d8b:f7bb:2ea3:17f:ed3b:b921) (Konversation terminated!)
09:38:10 × euandreh quits (~euandreh@2804:14c:33:9fe5:e75a:d7d8:5f2b:42f0) (Ping timeout: 250 seconds)
09:38:37 dust_ joins (~dust@2409:4071:4d8b:f7bb:2ea3:17f:ed3b:b921)
09:38:42 MoC joins (~moc@user/moc)
09:38:53 flipchan joins (~filip@188-169-255-31.dsl.utg.ge)
09:39:10 akegalj joins (~akegalj@141-136-245-236.dsl.iskon.hr)
09:40:08 euandreh joins (~euandreh@2804:14c:33:9fe5:8e08:7908:8918:48c0)
09:42:20 eggplantade joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
09:44:36 × dust_ quits (~dust@2409:4071:4d8b:f7bb:2ea3:17f:ed3b:b921) (Quit: Konversation terminated!)
09:46:18 × CHUD quits (~CHUD@edu7979.kent.ac.uk) (Remote host closed the connection)
09:46:36 CHUD joins (~CHUD@edu7979.kent.ac.uk)
09:46:48 × eggplantade quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 256 seconds)
09:46:54 zer0bitz joins (~zer0bitz@2001:2003:f444:a000:9102:5c27:2e48:97c2)
09:49:58 rusrushal13 joins (~rusrushal@2401:4900:5d14:182c:14c5:2762:c20c:8596)
09:51:08 × CHUD quits (~CHUD@edu7979.kent.ac.uk) (Ping timeout: 256 seconds)
09:52:01 CHUD joins (~CHUD@edu7979.kent.ac.uk)
09:54:32 × rusrushal13 quits (~rusrushal@2401:4900:5d14:182c:14c5:2762:c20c:8596) (Client Quit)
09:57:29 × Jing quits (~hedgehog@240e:390:7c53:a7e1:2d90:ff3:b02f:c2ef) (Quit: My MacBook has gone to sleep. ZZZzzz…)
09:58:36 CiaoSen joins (~Jura@p200300c95737a2002a3a4dfffe84dbd5.dip0.t-ipconnect.de)
10:00:28 × zeenk quits (~zeenk@2a02:2f04:a208:c500:649e:b5e2:d15c:7960) (Quit: Konversation terminated!)
10:02:03 Jing joins (~hedgehog@240e:390:7c53:a7e1:f9c4:ec41:3bfb:d5c6)
10:02:26 × Akiva quits (~Akiva@user/Akiva) (Ping timeout: 252 seconds)
10:02:37 × mon_aaraj quits (~MonAaraj@user/mon-aaraj/x-4416475) (Ping timeout: 240 seconds)
10:03:02 × CHUD quits (~CHUD@edu7979.kent.ac.uk) (Ping timeout: 256 seconds)
10:03:53 rusrushal13 joins (~rusrushal@2401:4900:5d14:182c:14c5:2762:c20c:8596)
10:09:54 Guest52 joins (~Guest52@80-100-97-100.ip.xs4all.nl)
10:14:40 × CiaoSen quits (~Jura@p200300c95737a2002a3a4dfffe84dbd5.dip0.t-ipconnect.de) (Quit: CiaoSen)
10:20:18 × econo quits (uid147250@user/econo) (Quit: Connection closed for inactivity)
10:26:42 CHUD joins (~CHUD@host-80-41-89-108.as13285.net)
10:28:57 × akegalj quits (~akegalj@141-136-245-236.dsl.iskon.hr) (Ping timeout: 240 seconds)
10:29:34 <tomsmeding> looks like it's looking for a cairo-1.0.gir file; my system (arch, completely different distro) has lots of .gir files in /usr/share/gir-1.0, but all start with a capital letter
10:37:07 <[exa]> the problem likely stems from the system of how guix organizes these
10:37:33 × cfricke quits (~cfricke@user/cfricke) (Quit: WeeChat 3.3)
10:37:48 × Codaraxis__ quits (~Codaraxis@user/codaraxis) (Remote host closed the connection)
10:37:56 <[exa]> I guess there should be extra path entry into the build directory or something
10:38:10 Codaraxis__ joins (~Codaraxis@user/codaraxis)
10:38:15 bendo joins (~bendo@ip5f5bebbb.dynamic.kabel-deutschland.de)
10:41:17 × Guest52 quits (~Guest52@80-100-97-100.ip.xs4all.nl) (Ping timeout: 240 seconds)
10:47:26 wroathe joins (~wroathe@206-55-188-8.fttp.usinternet.com)
10:47:26 × wroathe quits (~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host)
10:47:26 wroathe joins (~wroathe@user/wroathe)
10:49:40 Lord_of_Life_ joins (~Lord@user/lord-of-life/x-2819915)
10:49:44 × Lord_of_Life quits (~Lord@user/lord-of-life/x-2819915) (Ping timeout: 252 seconds)
10:50:57 Lord_of_Life_ is now known as Lord_of_Life
10:51:57 × wroathe quits (~wroathe@user/wroathe) (Ping timeout: 240 seconds)
10:53:02 × jgeerds_ quits (~jgeerds@55d4a547.access.ecotel.net) (Ping timeout: 252 seconds)
11:00:49 yauhsien joins (~yauhsien@61-231-37-18.dynamic-ip.hinet.net)
11:01:28 CiaoSen joins (~Jura@p200300c95737a2002a3a4dfffe84dbd5.dip0.t-ipconnect.de)
11:05:21 × CHUD quits (~CHUD@host-80-41-89-108.as13285.net) (Ping timeout: 256 seconds)
11:05:37 × CiaoSen quits (~Jura@p200300c95737a2002a3a4dfffe84dbd5.dip0.t-ipconnect.de) (Ping timeout: 240 seconds)
11:05:56 × rusrushal13 quits (~rusrushal@2401:4900:5d14:182c:14c5:2762:c20c:8596) (Ping timeout: 256 seconds)
11:06:14 × yauhsien quits (~yauhsien@61-231-37-18.dynamic-ip.hinet.net) (Ping timeout: 252 seconds)
11:06:42 × vglfr quits (~vglfr@46.96.133.112) (Ping timeout: 256 seconds)
11:06:55 froduck joins (~froduck@cpc101088-sgyl37-2-0-cust22.18-2.cable.virginm.net)
11:07:20 <froduck> hi, i have a question about monadic state
11:07:47 <froduck> based on a suggestion earlier about a representation of a pointer i suggested
11:08:10 <froduck> basically, by imbedding the value in the monad, so that it doesnt need to be provided as an argument
11:08:47 <froduck> giving a class over the monad of kind *->* instead of the object of kind * that can be retrived from and updated
11:09:21 <froduck> then within the monad you use like, get :: m a as in x <- get
11:09:27 <froduck> so you work "within the monad"
11:09:45 <froduck> but then i get confused because it was supposed to be a pointer, and now we are "working within it"
11:09:51 <froduck> so examine the monad laws
11:09:57 <froduck> what are they for a pointer?
11:10:20 <froduck> so if you have 2 nested monads with the get/edit stored value, then you basically just have 2 pointers
11:10:52 <froduck> they should compose together like values in a tuple, except with some comutation consideration
11:11:40 <froduck> basically wondering about a definition for pointer in terms of monadic state as given earlier by [exa]
11:13:01 × dut quits (~dut@user/dut) (Quit: Leaving)
11:14:45 madjestic joins (~madjestic@88-159-247-120.fixed.kpn.net)
11:15:21 mon_aaraj joins (~MonAaraj@user/mon-aaraj/x-4416475)
11:15:45 <froduck> :t (get, put, modify)
11:15:46 <lambdabot> (MonadState s1 m1, MonadState s2 m2, MonadState s3 m3) => (m1 s1, s2 -> m2 (), (s3 -> s3) -> m3 ())
11:16:52 <froduck> giving; type Pointer a p m = (MonadState a m,MonadState p m)
11:17:01 <froduck> er, p m a
11:17:29 <froduck> to have Pointer p m :: * -> *
11:17:55 <froduck> actually that seems eronious, since p isnt `p a' here, but i suppose it could/should be (?)
11:19:00 <froduck> i would argue that it shouldnt be, because the state in an unfold is not a container of a certainly
11:19:17 <froduck> maybe if you had pointer as;
11:19:18 <froduck> type Pointer (p :: * -> *) (m :: * -> *) = (MonadState a m,MonadState (p a) m)
11:19:51 <froduck> then the version with p a ~ q which then captures the unfold case could be given a different name
11:20:13 <froduck> i think basically thats a good idea because a "pointer" should be like a zipper and be shape preserving and navigable
11:20:26 <froduck> ie you stream values as you navigate around the thing, which does not change the thing
11:20:46 <froduck> and the version thats just an unfolding of values is something different
11:22:00 <froduck> (the point is both fit into the monadic tail idea from before, which seems like it captures both graphs, including streams and lists, and dag's/trees, aswell as unfolds which do not have the traversable laws of shape preservation and equality under identity traversal)
11:23:16 <froduck> (something strange happens when you say you dont actually need the tail but just the ability to generate it from an unfold)
11:24:00 <froduck> unfolds are different from pointers i guess, because of the traverse laws, and so a pointer is a specialisation over a *something*
11:24:32 <froduck> what do you call the thing that can produce value streams based on and updated carried state?
11:24:44 <froduck> since this abstraction captures pointers
11:25:00 son0p joins (~ff@2800:484:1d81:b700:d40b:900:b387:320)
11:25:22 <froduck> i guess you call it a state machine, right?
11:25:33 <froduck> so im suggesting "pointers as a form of state machine", i think
11:30:53 × haskl[error] quits (~haskl@user/haskl) (Read error: Connection reset by peer)
11:32:12 × ubert1 quits (~Thunderbi@p200300ecdf099479a7980b6460b31c47.dip0.t-ipconnect.de) (Remote host closed the connection)
11:33:11 haskl joins (~haskl@user/haskl)
11:35:13 cosimone joins (~user@2001:b07:ae5:db26:a7aa:8027:6b4e:2fb3)
11:37:06 vglfr joins (~vglfr@46.96.133.112)
11:38:05 × some02 quits (~cat@h-98-128-128-173.A351.priv.bahnhof.se) (Changing host)
11:38:05 some02 joins (~cat@user/sudden)
11:38:08 × cosimone quits (~user@2001:b07:ae5:db26:a7aa:8027:6b4e:2fb3) (Read error: Connection reset by peer)
11:38:10 some02 is now known as sudden
11:39:21 cosimone joins (~user@2001:b07:ae5:db26:a7aa:8027:6b4e:2fb3)
11:39:38 CiaoSen joins (~Jura@p200300c95737a2002a3a4dfffe84dbd5.dip0.t-ipconnect.de)
11:42:26 × zer0bitz quits (~zer0bitz@2001:2003:f444:a000:9102:5c27:2e48:97c2) (Read error: Connection reset by peer)
11:44:07 × coot quits (~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba) (Quit: coot)
11:44:49 CHUD joins (~CHUD@host-80-41-89-108.as13285.net)
11:46:29 × cosimone quits (~user@2001:b07:ae5:db26:a7aa:8027:6b4e:2fb3) (Remote host closed the connection)
11:47:13 cosimone joins (~user@2001:b07:ae5:db26:c24a:d20:4d91:1e20)
11:50:19 coot joins (~coot@213.134.190.95)
11:52:19 × haskellberryfinn quits (~nut@roc37-h01-176-170-197-243.dsl.sta.abo.bbox.fr) (Quit: WeeChat 3.3)
11:55:32 × notzmv quits (~zmv@user/notzmv) (Ping timeout: 250 seconds)
11:55:34 × awpr quits (uid446117@id-446117.lymington.irccloud.com) (Quit: Connection closed for inactivity)
11:56:34 × _ht quits (~quassel@82-168-34-160.fixed.kpn.net) (Ping timeout: 256 seconds)
11:57:02 × froduck quits (~froduck@cpc101088-sgyl37-2-0-cust22.18-2.cable.virginm.net) (Quit: Connection closed)
11:57:03 _ht joins (~quassel@2a02:a468:b619:1:f6f7:cddd:a7b5:6247)
11:59:37 __monty__ joins (~toonn@user/toonn)
12:00:42 × MoC quits (~moc@user/moc) (Quit: Konversation terminated!)
12:06:18 × fendor quits (~fendor@77.119.199.145.wireless.dyn.drei.com) (Quit: Leaving)
12:06:20 Codaraxis_ joins (~Codaraxis@user/codaraxis)
12:07:21 jgeerds_ joins (~jgeerds@55d4a547.access.ecotel.net)
12:10:10 × Codaraxis__ quits (~Codaraxis@user/codaraxis) (Ping timeout: 256 seconds)
12:12:49 xkuru joins (~xkuru@user/xkuru)
12:17:37 notzmv joins (~zmv@user/notzmv)
12:18:44 jackson99 joins (~bc8147f2@cerf.good1.com)
12:19:49 × kspalaiologos quits (~kspalaiol@user/kspalaiologos) (Quit: Leaving)
12:20:03 x_kuru joins (~xkuru@user/xkuru)
12:20:44 raehik joins (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
12:22:13 × xkuru quits (~xkuru@user/xkuru) (Ping timeout: 240 seconds)
12:24:57 × _ht quits (~quassel@2a02:a468:b619:1:f6f7:cddd:a7b5:6247) (Ping timeout: 240 seconds)
12:28:38 zer0bitz joins (~zer0bitz@2001:2003:f444:a000:e4b0:adf8:305f:a850)
12:30:51 jumper149 joins (~jumper149@base.felixspringer.xyz)
12:35:39 cfricke joins (~cfricke@user/cfricke)
12:38:29 × whatsupdoc quits (uid509081@id-509081.hampstead.irccloud.com) (Quit: Connection closed for inactivity)
12:40:43 × fryguybo1 quits (~fryguybob@cpe-74-67-169-145.rochester.res.rr.com) (Quit: leaving)
12:41:09 fryguybob joins (~fryguybob@cpe-74-67-169-145.rochester.res.rr.com)
12:45:39 Topsi joins (~Tobias@dyndsl-095-033-019-122.ewe-ip-backbone.de)
12:47:13 × bitdex quits (~bitdex@gateway/tor-sasl/bitdex) (Quit: = "")
12:54:20 × ph88 quits (~ph88@2a02:8109:9e00:71d0:f12b:1b26:c11c:e722) (Quit: Leaving)
12:54:37 ph88 joins (~ph88@ip5f5af71f.dynamic.kabel-deutschland.de)
12:54:43 sondr3 joins (~sondr3@2001:700:200:f112::2a03)
12:54:53 × cfricke quits (~cfricke@user/cfricke) (Quit: WeeChat 3.3)
12:57:04 × kjak quits (~kjak@pool-108-45-56-21.washdc.fios.verizon.net) (Ping timeout: 250 seconds)
12:59:28 × merijn quits (~merijn@c-001-001-018.client.esciencecenter.eduvpn.nl) (Ping timeout: 256 seconds)
13:01:15 zeenk joins (~zeenk@2a02:2f04:a208:c500:649e:b5e2:d15c:7960)
13:02:27 Codaraxis__ joins (~Codaraxis@user/codaraxis)
13:05:02 × max22- quits (~maxime@2a01cb0883359800be8bbc3fb1201a3c.ipv6.abo.wanadoo.fr) (Ping timeout: 252 seconds)
13:05:32 × Codaraxis_ quits (~Codaraxis@user/codaraxis) (Ping timeout: 240 seconds)
13:10:47 pretty_dumm_guy joins (trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655)
13:11:08 <sondr3> I'm probably missing something, but how can I make my megaparsec parser skip initial whitespace/comments? It fails saying it expected one of the parsers, but I thought they would skip whitespace or comments themselves and therefore that I wouldn't have to manually skip them
13:11:56 <sondr3> My approach now is just to do `void $ lexeme ""` so that it skips them
13:11:56 <dminuoso> sondr3: You'd normally use M.lexeme
13:12:20 <dminuoso> sondr3: Ah no, the idea is to wrap every lexeme you want to parse with your custom `lexeme`
13:12:22 <dminuoso> say:
13:12:30 <dminuoso> `myLexeme = M.lexeme someConsumer`
13:12:50 <dminuoso> And then `foo = myLexeme (chunk "foo"); bar = myLexeme (chunk "bar")`
13:14:32 × jgeerds_ quits (~jgeerds@55d4a547.access.ecotel.net) (Ping timeout: 240 seconds)
13:15:12 Codaraxis_ joins (~Codaraxis@user/codaraxis)
13:15:37 romesrf joins (~romes@44.190.189.46.rev.vodafone.pt)
13:15:41 <sondr3> dminuoso:  my `lexeme` function is a `lexeme = L.lexeme sc` where `sc` is `L.space space1 (comment) (blockCommend)`
13:15:49 <dminuoso> Yes looks good
13:15:53 <dminuoso> Now ensure you always use `lexeme`
13:15:57 <romesrf> o/
13:15:59 <dminuoso> for every actual lexeme you want to parse
13:18:10 × Codaraxis__ quits (~Codaraxis@user/codaraxis) (Ping timeout: 256 seconds)
13:18:36 <sondr3> It's probably because I do `pragma <- optional . try $ parsePragma` in the parse function that it skips the whitespace since it'll fail on just whitespace :facepalm:
13:19:40 <sondr3> Y
13:19:58 <sondr3> whoops, yep, that was it, changing it to `pragma <- space *> ...` fixed it
13:20:15 <sondr3> thanks for being my rubber duck dminuoso
13:22:00 drewr joins (~drew@user/drewr)
13:27:08 haskellberryfinn joins (~nut@roc37-h01-176-170-197-243.dsl.sta.abo.bbox.fr)
13:32:15 neverfindme joins (~hayden@158.123.160.43)
13:36:57 × chenqisu1 quits (~chenqisu1@183.217.200.249) (Ping timeout: 240 seconds)
13:38:24 × Feuermagier quits (~Feuermagi@user/feuermagier) (Remote host closed the connection)
13:38:41 Feuermagier joins (~Feuermagi@user/feuermagier)
13:43:12 × geekosaur quits (~geekosaur@xmonad/geekosaur) (Remote host closed the connection)
13:44:36 razetime joins (~quassel@49.207.209.26)
13:45:19 geekosaur joins (~geekosaur@xmonad/geekosaur)
13:53:48 rusrushal13 joins (~rusrushal@2401:4900:5d14:182c:14c5:2762:c20c:8596)
13:54:09 × romesrf quits (~romes@44.190.189.46.rev.vodafone.pt) (Quit: WeeChat 3.4)
13:57:11 bontaq joins (~user@ool-45779fe5.dyn.optonline.net)
13:58:14 max22- joins (~maxime@2a01cb0883359800ab210b9c3f7ba21b.ipv6.abo.wanadoo.fr)
13:58:45 × sondr3 quits (~sondr3@2001:700:200:f112::2a03) (Ping timeout: 256 seconds)
14:05:50 Sgeo joins (~Sgeo@user/sgeo)
14:07:54 califax- joins (~califax@user/califx)
14:08:39 × razetime quits (~quassel@49.207.209.26) (Quit: https://quassel-irc.org - Chat comfortably. Anywhere.)
14:09:18 × califax quits (~califax@user/califx) (Ping timeout: 276 seconds)
14:09:19 califax- is now known as califax
14:11:53 × neverfindme quits (~hayden@158.123.160.43) (Quit: Leaving)
14:12:06 mikoto-chan joins (~mikoto-ch@213.177.151.239)
14:15:49 × zeenk quits (~zeenk@2a02:2f04:a208:c500:649e:b5e2:d15c:7960) (Quit: Konversation terminated!)
14:17:37 × vysn quits (~vysn@user/vysn) (Ping timeout: 240 seconds)
14:19:43 Topsi1 joins (~Tobias@dyndsl-095-033-019-122.ewe-ip-backbone.de)
14:21:02 × max22- quits (~maxime@2a01cb0883359800ab210b9c3f7ba21b.ipv6.abo.wanadoo.fr) (Ping timeout: 240 seconds)
14:22:02 vysn joins (~vysn@user/vysn)
14:23:17 × Topsi quits (~Tobias@dyndsl-095-033-019-122.ewe-ip-backbone.de) (Ping timeout: 240 seconds)
14:25:31 × nunggu quits (~q@user/nunggu) (Remote host closed the connection)
14:26:07 nunggu joins (~q@user/nunggu)
14:27:49 × CiaoSen quits (~Jura@p200300c95737a2002a3a4dfffe84dbd5.dip0.t-ipconnect.de) (Ping timeout: 250 seconds)
14:29:56 wroathe joins (~wroathe@206-55-188-8.fttp.usinternet.com)
14:29:56 × wroathe quits (~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host)
14:29:56 wroathe joins (~wroathe@user/wroathe)
14:31:32 × vysn quits (~vysn@user/vysn) (Ping timeout: 250 seconds)
14:32:07 zer0bitz_ joins (~zer0bitz@2001:2003:f444:a000:4917:bc56:f54d:812b)
14:32:54 Topsi joins (~Tobias@dyndsl-095-033-019-122.ewe-ip-backbone.de)
14:34:14 burnsidesLlama joins (~burnsides@dhcp168-033.wadham.ox.ac.uk)
14:35:26 × Topsi1 quits (~Tobias@dyndsl-095-033-019-122.ewe-ip-backbone.de) (Ping timeout: 250 seconds)
14:35:52 × zer0bitz quits (~zer0bitz@2001:2003:f444:a000:e4b0:adf8:305f:a850) (Ping timeout: 250 seconds)
14:38:28 × gehmehgeh quits (~user@user/gehmehgeh) (Remote host closed the connection)
14:43:50 gehmehgeh joins (~user@user/gehmehgeh)
14:46:41 eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:41be:eda7:26bd:771e)
14:49:05 × jackson99 quits (~bc8147f2@cerf.good1.com) (Quit: CGI:IRC)
14:49:15 × xsperry quits (~xs@user/xsperry) ()
14:51:02 × eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:41be:eda7:26bd:771e) (Ping timeout: 250 seconds)
14:56:04 kevorna joins (~kevorna@81-228-153-98-no289.tbcn.telia.com)
14:56:13 × alp quits (~alp@user/alp) (Ping timeout: 250 seconds)
14:58:16 shriekingnoise joins (~shrieking@201.231.16.156)
15:00:18 × lavaman quits (~lavaman@98.38.249.169) (Remote host closed the connection)
15:02:55 <kevorna> I want to get into Haskell and would love to use GHC 9.2.1 (latest version, newest features, and “significantly faster” Apple M1 compilation speeds). I learned that I need a “package set” but couldn’t find 9.2.1 on https://www.stackage.org/. Should I give up on using 9.2.1? 9.0.2 has a nightly stockage package set, is that a good bet? Or
15:02:56 <kevorna> should I go all the way back to 8.10.7 to be on stackage LTS? Or skip stack completely and use 9.2.1 with something else (ghcup and hackage? idk)
15:03:26 Clint_ is now known as Clint
15:04:09 <Clint> kevorna: probably depends on the libraries you want to use
15:06:03 <kevorna> I'd want to use yesod to get into web development, and that seems to bring a lot of libs
15:07:47 <geekosaur> I should point out that while 9.2.1 has native M1 support, after release it was found to generate bad code and you should wait for 9.2.2
15:08:11 <geekosaur> so for now you probably want 9.0.2 or 8.10.7
15:08:22 × lortabac quits (~lortabac@2a01:e0a:541:b8f0:4096:379:219d:4d69) (Quit: WeeChat 2.8)
15:09:33 <geekosaur> and if you want to use yesod, stack is probably what you should use since they're kinda designed to go together
15:10:04 <kevorna> OK, thank you!
15:10:24 <kevorna> Do you think 9.0.2 is reasonable to use even though it's not LTS on stackage?
15:10:50 <geekosaur> at this point most libraries have 9.x support so using a nightly should be reasonable, yes
15:12:18 <lionhairdino> I hope hi profiling, but it is supported by only 9.2.. is right?
15:12:23 <kevorna> Great, that's enough to get me going. Thank you! I've found it quite difficult to get into Haskell compared to other languages, so I greatly appreciate the help!
15:12:37 × wroathe quits (~wroathe@user/wroathe) (Ping timeout: 240 seconds)
15:12:53 × coot quits (~coot@213.134.190.95) (Quit: coot)
15:13:22 coot joins (~coot@213.134.190.95)
15:13:39 <geekosaur> lionhairdino, yes, it's new in 9.2.1
15:18:06 × rusrushal13 quits (~rusrushal@2401:4900:5d14:182c:14c5:2762:c20c:8596) (Quit: Client closed)
15:18:52 × mon_aaraj quits (~MonAaraj@user/mon-aaraj/x-4416475) (Ping timeout: 256 seconds)
15:20:18 mon_aaraj joins (~MonAaraj@user/mon-aaraj/x-4416475)
15:21:11 <lionhairdino> thx for replying. I am waiting for 9.2 resolver...
15:21:16 wroathe joins (~wroathe@206-55-188-8.fttp.usinternet.com)
15:21:16 × wroathe quits (~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host)
15:21:16 wroathe joins (~wroathe@user/wroathe)
15:21:34 ProfSimm joins (~ProfSimm@87.227.196.109)
15:22:44 xsperry joins (~xs@user/xsperry)
15:24:16 jao joins (~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net)
15:24:36 [itchyjunk] joins (~itchyjunk@user/itchyjunk/x-7353470)
15:26:23 jstolarek joins (~jstolarek@staticline-31-183-164-222.toya.net.pl)
15:26:24 × wroathe quits (~wroathe@user/wroathe) (Ping timeout: 268 seconds)
15:27:09 × CHUD quits (~CHUD@host-80-41-89-108.as13285.net) (Ping timeout: 256 seconds)
15:28:30 × doyougnu quits (~doyougnu@cpe-67-249-83-190.twcny.res.rr.com) (Ping timeout: 256 seconds)
15:28:57 CHUD joins (~CHUD@host-80-41-89-108.as13285.net)
15:29:39 × ph88 quits (~ph88@ip5f5af71f.dynamic.kabel-deutschland.de) (Quit: Leaving)
15:29:42 CiaoSen joins (~Jura@p200300c95737a2002a3a4dfffe84dbd5.dip0.t-ipconnect.de)
15:29:49 <polyphem> lionhairdino: how is it going with your mem leak chase ?
15:29:52 waleee joins (~waleee@2001:9b0:21d:fc00:398f:b003:b90d:acf4)
15:31:03 lavaman joins (~lavaman@98.38.249.169)
15:33:24 × CHUD quits (~CHUD@host-80-41-89-108.as13285.net) (Ping timeout: 256 seconds)
15:35:24 × tremon_ quits (~tremon@217-120-53-183.cable.dynamic.v4.ziggo.nl) (Quit: getting boxed in)
15:35:32 × lavaman quits (~lavaman@98.38.249.169) (Ping timeout: 240 seconds)
15:39:34 zmt00 joins (~zmt00@user/zmt00)
15:39:44 × zmt00 quits (~zmt00@user/zmt00) (Remote host closed the connection)
15:40:47 × mbuf quits (~Shakthi@122.173.235.64) (Quit: Leaving)
15:43:26 × son0p quits (~ff@2800:484:1d81:b700:d40b:900:b387:320) (Remote host closed the connection)
15:43:28 × mikoto-chan quits (~mikoto-ch@213.177.151.239) (Ping timeout: 250 seconds)
15:47:02 × cheater quits (~Username@user/cheater) (Ping timeout: 240 seconds)
15:47:24 segfaultfizzbuzz joins (~rustisafu@2602:306:cd3c:9350:59e3:db49:aa0a:46e5)
15:47:33 cheater joins (~Username@user/cheater)
15:48:25 × raehik quits (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 250 seconds)
15:48:39 mikoto-chan joins (~mikoto-ch@213.177.151.239)
15:50:24 raehik joins (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
15:52:38 litharn[m] joins (~litharnma@2001:470:69fc:105::1:8336)
15:54:05 olebra joins (olebra@cassarossa.samfundet.no)
15:54:05 × shapr quits (~user@pool-100-36-247-68.washdc.fios.verizon.net) (Read error: Connection reset by peer)
15:55:56 shapr joins (~user@pool-100-36-247-68.washdc.fios.verizon.net)
15:56:26 CHUD joins (~CHUD@edu7B10.kent.ac.uk)
16:00:41 × grabb0id[m] quits (~alangmatr@2001:470:69fc:105::b489) (Quit: You have been kicked for being idle)
16:02:28 <hololeap> just curious if anyone here has seen this before: https://github.com/gentoo-haskell/gentoo-haskell/issues/1225#issuecomment-1024352057
16:02:58 slowButPresent joins (~slowButPr@user/slowbutpresent)
16:03:35 zmt00 joins (~zmt00@user/zmt00)
16:04:29 epolanski joins (uid312403@id-312403.helmsley.irccloud.com)
16:05:42 × kevorna quits (~kevorna@81-228-153-98-no289.tbcn.telia.com) (Ping timeout: 256 seconds)
16:06:44 × CHUD quits (~CHUD@edu7B10.kent.ac.uk) (Remote host closed the connection)
16:06:44 lavaman joins (~lavaman@98.38.249.169)
16:07:01 CHUD joins (~CHUD@edu7B10.kent.ac.uk)
16:08:45 MoC joins (~moc@user/moc)
16:11:34 × lavaman quits (~lavaman@98.38.249.169) (Ping timeout: 256 seconds)
16:12:33 max22- joins (~maxime@2a01cb08833598009858f30aea0eec11.ipv6.abo.wanadoo.fr)
16:14:24 × d0ku quits (~d0ku@178.43.19.180.ipv4.supernova.orange.pl) (Ping timeout: 256 seconds)
16:18:15 × ProfSimm quits (~ProfSimm@87.227.196.109) (Remote host closed the connection)
16:21:37 × Codaraxis_ quits (~Codaraxis@user/codaraxis) (Ping timeout: 240 seconds)
16:22:58 _ht joins (~quassel@231-169-21-31.ftth.glasoperator.nl)
16:24:49 ezzieygu1wuf is now known as ezzieyguywuf
16:26:20 × deadmarshal quits (~deadmarsh@95.38.114.1) (Ping timeout: 252 seconds)
16:28:18 × FinnElija quits (~finn_elij@user/finn-elija/x-0085643) (Remote host closed the connection)
16:28:43 FinnElija joins (~finn_elij@user/finn-elija/x-0085643)
16:31:18 Akiva joins (~Akiva@user/Akiva)
16:35:38 × geekosaur quits (~geekosaur@xmonad/geekosaur) (Quit: Leaving)
16:35:56 × ski quits (~ski@remote11.chalmers.se) (Ping timeout: 256 seconds)
16:36:46 geekosaur joins (~geekosaur@xmonad/geekosaur)
16:37:12 × madjestic quits (~madjestic@88-159-247-120.fixed.kpn.net) (Ping timeout: 250 seconds)
16:38:37 × [itchyjunk] quits (~itchyjunk@user/itchyjunk/x-7353470) (Ping timeout: 240 seconds)
16:40:22 [itchyjunk] joins (~itchyjunk@user/itchyjunk/x-7353470)
16:40:31 × phma quits (phma@2001:5b0:211c:37e8:e22d:196:60ef:f166) (Read error: Connection reset by peer)
16:42:00 phma joins (phma@2001:5b0:212a:9da8:6f5b:6926:b319:62a2)
16:43:45 × vpan quits (~0@212.117.1.172) (Quit: Leaving.)
16:44:51 vicfred joins (~vicfred@user/vicfred)
16:46:27 vicfred_ joins (~vicfred@user/vicfred)
16:48:49 mmos[m] joins (~mmosmatri@2001:470:69fc:105::1:8340)
16:48:57 × vicfred quits (~vicfred@user/vicfred) (Ping timeout: 240 seconds)
16:49:55 lbseale joins (~ep1ctetus@user/ep1ctetus)
16:50:57 deadmarshal joins (~deadmarsh@95.38.114.1)
16:53:14 doyougnu joins (~doyougnu@cpe-67-249-83-190.twcny.res.rr.com)
16:55:49 × jespada quits (~jespada@87.74.36.188) (Ping timeout: 240 seconds)
16:57:00 jespada joins (~jespada@87.74.36.188)
17:00:32 lep joins (~lep@94.31.89.203)
17:01:41 × coot quits (~coot@213.134.190.95) (Quit: coot)
17:03:27 × CHUD quits (~CHUD@edu7B10.kent.ac.uk) (Remote host closed the connection)
17:03:45 CHUD joins (~CHUD@edu7B10.kent.ac.uk)
17:04:12 wroathe joins (~wroathe@206-55-188-8.fttp.usinternet.com)
17:04:12 × wroathe quits (~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host)
17:04:12 wroathe joins (~wroathe@user/wroathe)
17:05:49 tzh joins (~tzh@c-24-21-73-154.hsd1.wa.comcast.net)
17:06:25 × waleee quits (~waleee@2001:9b0:21d:fc00:398f:b003:b90d:acf4) (Ping timeout: 250 seconds)
17:08:24 merijn joins (~merijn@c-001-001-018.client.esciencecenter.eduvpn.nl)
17:08:49 × wroathe quits (~wroathe@user/wroathe) (Ping timeout: 250 seconds)
17:08:49 eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:41be:eda7:26bd:771e)
17:12:17 <lep> my google-fu is failing me: how can i set cpp-options for cabal programatically?
17:15:23 ProfSimm joins (~ProfSimm@176-12-60-137.pon.spectrumnet.bg)
17:18:01 × mon_aaraj quits (~MonAaraj@user/mon-aaraj/x-4416475) (Ping timeout: 268 seconds)
17:18:36 <geekosaur> what do you mean by programmatically?
17:18:47 × m1dnight quits (~christoph@christophe.dev) (Ping timeout: 256 seconds)
17:18:59 <lep> like from the command line
17:19:20 awpr joins (uid446117@id-446117.lymington.irccloud.com)
17:19:23 <lep> i have different patch targets
17:19:39 mon_aaraj joins (~MonAaraj@user/mon-aaraj/x-4416475)
17:19:40 <lep> so i do -DPATCH_LVL=123
17:19:50 × burnsidesLlama quits (~burnsides@dhcp168-033.wadham.ox.ac.uk) (Remote host closed the connection)
17:20:22 burnsidesLlama joins (~burnsides@dhcp168-033.wadham.ox.ac.uk)
17:20:35 <geekosaur> in general it looks like any option you can set in a file can also be done from the command line, but cpp-options needs to be in a section and I don't think there's a way to specify a section from the command line
17:20:51 <geekosaur> but you can try: --cpp-options=-DPATCH_LVL=123
17:21:08 lavaman joins (~lavaman@98.38.249.169)
17:21:24 <geekosaur> may require you to run cabal configure explicitly
17:21:52 madjestic joins (~madjestic@77-63-68-224.mobile.kpn.net)
17:22:07 <lep> cabal configure --cppoptions=... says unrecognized configure option
17:23:20 × Vajb quits (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi) (Read error: Connection reset by peer)
17:23:27 <lep> (also im not very good with cabal)
17:23:34 <geekosaur> did you actually leave the hyphen out there?
17:23:47 Vajb joins (~Vajb@2001:999:50:e6be:1e98:9376:d93e:4506)
17:23:52 <lep> no, i just didnt c'n'p
17:24:05 yassernasc joins (~yassernas@2804:29b8:505a:f33d:178:3bce:7e3c:a914)
17:24:48 <geekosaur> ok, looks like it goes to cabal build instead of cabal configure. (I'm surprised.)
17:24:52 × burnsidesLlama quits (~burnsides@dhcp168-033.wadham.ox.ac.uk) (Ping timeout: 250 seconds)
17:25:30 <lep> i also tried build but same error
17:25:44 Hanicef joins (~gustaf@81-229-9-108-no92.tbcn.telia.com)
17:25:45 olebra parts (olebra@cassarossa.samfundet.no) (WeeChat 3.0)
17:28:55 <geekosaur> hm, --cpp-options is listed here as valid for build
17:30:42 coot joins (~coot@213.134.190.95)
17:30:43 <geekosaur> I should note that I'm running cabal 3.6. what version do you have?
17:31:46 <lep> 3.4
17:31:48 × lionhairdino quits (~jacoo@121.131.39.82) (Ping timeout: 250 seconds)
17:32:49 × jinsun quits (~quassel@user/jinsun) (Ping timeout: 268 seconds)
17:33:07 hgolden_ is now known as hgolden
17:34:45 × MoC quits (~moc@user/moc) (Quit: Konversation terminated!)
17:36:49 Null_A joins (~null_a@2601:645:8700:2290:8935:4edf:b32:6553)
17:37:06 × eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:41be:eda7:26bd:771e) (Remote host closed the connection)
17:37:32 econo joins (uid147250@user/econo)
17:38:26 × merijn quits (~merijn@c-001-001-018.client.esciencecenter.eduvpn.nl) (Ping timeout: 260 seconds)
17:39:34 jinsun joins (~quassel@user/jinsun)
17:39:36 × xff0x quits (~xff0x@2001:1a81:5277:3c00:f024:75d4:2bb:2631) (Ping timeout: 250 seconds)
17:39:46 xff0x joins (~xff0x@2001:1a81:529a:8d00:e291:e2f6:2259:ce5c)
17:40:24 burnsidesLlama joins (~burnsides@dhcp168-033.wadham.ox.ac.uk)
17:40:43 <geekosaur> checked the 3.4 manual, it shuld be supported
17:41:03 × yassernasc quits (~yassernas@2804:29b8:505a:f33d:178:3bce:7e3c:a914) (Remote host closed the connection)
17:41:11 × Null_A quits (~null_a@2601:645:8700:2290:8935:4edf:b32:6553) (Ping timeout: 245 seconds)
17:41:22 × jinsun quits (~quassel@user/jinsun) (Client Quit)
17:41:36 yassernasc joins (~yassernas@ec2-54-87-145-249.compute-1.amazonaws.com)
17:41:43 × vicfred_ quits (~vicfred@user/vicfred) (Quit: Leaving)
17:42:55 <lep> dunno, guess im inept then
17:44:16 <geekosaur> hm, where are you specifying it in the command line? some options are global and come before the subcommand, some subcommand-specific and come after
17:44:38 <lep> i think i tried all permutations
17:45:37 × CiaoSen quits (~Jura@p200300c95737a2002a3a4dfffe84dbd5.dip0.t-ipconnect.de) (Ping timeout: 240 seconds)
17:46:08 jinsun joins (~quassel@user/jinsun)
17:47:11 Null_A joins (~null_a@2601:645:8700:2290:8935:4edf:b32:6553)
17:47:28 <geekosaur> hm, just tried it and 3.6 doesn't take it either despite it being documented. :(
17:47:48 <janus> must drama as to whether mtl should remove re-exports or not: https://github.com/haskell/mtl/pull/103#issuecomment-1024456019
17:47:52 <geekosaur> sclv, around?
17:47:58 <sclv> yeah, sup
17:48:10 <lep> :D
17:48:20 <lep> at least im not as inept as i thought
17:48:28 <sclv> i mean i assume if you found a bug its a bug, idk what to tell you
17:50:07 <sclv> as a general rule, not all options listed in the help for v2-build actually do anything, because it was implemented sharing Too Much with v1-build's options
17:52:53 <lep> ok, but it doesnt make much of a difference. im *very* clueless about cabal in general
17:54:29 <sclv> lep: is this the issue? https://github.com/haskell/cabal/issues/7635
17:54:47 <geekosaur> an alternative way to do this is to put it in the cabal file guarded by a flag, and use -fflag to enable it
17:55:01 <sclv> i.e. are the cpp opts for use in haskell code or c code
17:55:19 <geekosaur> although if you need to use different versions I guess that doesn't work
17:55:27 <sclv> and is it your package or someone else's
17:55:37 × CHUD quits (~CHUD@edu7B10.kent.ac.uk) (Ping timeout: 256 seconds)
17:56:16 <lep> it's in my own code
17:56:32 <sclv> and is the cpp used in haskell code or c code
17:56:35 <lep> haskell
17:56:40 <segfaultfizzbuzz> https://twitter.com/conal/status/1454577565373394946?cxt=HHwWhMCrpdml2a8oAAAA "perfect binary leaf trees with their usual logarithm/index type" what is a "logarithm/index type" ?
17:56:52 m1dnight joins (~christoph@christophe.dev)
17:57:15 <sclv> lep: ok then I'd recommend you refactor your code -- flags set in cabal are turned into cpp variables iirc
17:57:50 <lep> yes, in this specific case it will probably work that way as there is only two cases depening on the patch lvl
17:57:52 <sclv> so instead of setting a single cpp variable with multiple potential values, the "usual" way is to have a test on individual cpp things being set
17:58:05 <sclv> and then you compile with -fSOMEFLAG
17:58:28 <lep> yeah, i just assumed it would be "easy" to set some compile time integer
17:59:08 <sclv> its not so much, because the semantics of where you set it and how much it gets set for get confusing fast
17:59:49 <sclv> so the pattern is to shield end users from knowing cpp is involved and instead giving them access thru the flags mechanism, which is more integrated with the solver, etc
18:00:01 × ProfSimm quits (~ProfSimm@176-12-60-137.pon.spectrumnet.bg) (Remote host closed the connection)
18:00:09 <EvanR> compile time integer, use type-level integer math perhaps?
18:00:22 ProfSimm joins (~ProfSimm@176-12-60-137.pon.spectrumnet.bg)
18:00:23 <EvanR> type checking = compile time integer checking
18:00:25 <prasad> Hi I need help with parsing a string here is the paste https://paste.debian.net/1228751/ input is "123,234 -> 234,345" the output [((123,234,234,3),"45"),((123,234,234,34),"5"),((123,234,234,345),"")] what I want is only the last value. Should I use filter to get the last value
18:00:25 <prasad>
18:00:42 <dminuoso> segfaultfizzbuzz: https://github.com/conal/talk-2021-can-tensor-programming-be-liberated
18:00:46 <dminuoso> segfaultfizzbuzz: https://www.youtube.com/watch?v=oaIMMclGuog
18:00:53 <dminuoso> Give that talk a view, at the end he explains it
18:01:03 <dminuoso> (Heh, "giving a talk a view")
18:01:17 <EvanR> give a picture a listen
18:01:29 <EvanR> synesthesia syle
18:01:33 <geekosaur> prasad, I'd strongly recommend you use megaparsec instead of ReadP. the multiple-parses behavior of ReadP is both slow and annoying to work with
18:02:10 <prasad> Is megaparsec part of haskell standard library
18:02:14 <dminuoso> No
18:02:36 <geekosaur> very little is part of the "standard library", just what's needed to build the compiler itself
18:02:46 <dminuoso> We dont really have a standard library, we have the `base` package and several boot libraries that come with ghc itself, that we could consider part of a "standard consortium" we ship.
18:02:50 <geekosaur> also I think while megaparsec isn't, its predecessor parsec is
18:03:05 n3rdy1 joins (~n3rdy1@2600:1700:4570:3480::41)
18:03:10 <geekosaur> which is good enough for this although missing some performance improvements
18:03:25 <dminuoso> But megaparsec is a commonly package
18:03:26 × Major_Biscuit quits (~MajorBisc@c-001-005-022.client.tudelft.eduvpn.nl) (Quit: WeeChat 3.3)
18:03:35 <dminuoso> Certainly quite popular, alongside attoparsec
18:04:17 × Jing quits (~hedgehog@240e:390:7c53:a7e1:f9c4:ec41:3bfb:d5c6) (Quit: My MacBook has gone to sleep. ZZZzzz…)
18:05:23 briandaed joins (~root@185.234.208.208.r.toneticgroup.pl)
18:07:23 EvanR checks to see how far an attoparsec even is
18:07:32 alp joins (~alp@user/alp)
18:07:46 × madjestic quits (~madjestic@77-63-68-224.mobile.kpn.net) (Read error: Connection reset by peer)
18:08:06 <EvanR> 30.8 cm
18:09:20 <dminuoso> Mmm?
18:09:22 <dminuoso> That seems wrong
18:09:31 <dminuoso> I come up with 149.598 nanometers
18:09:33 × lavaman quits (~lavaman@98.38.249.169) (Remote host closed the connection)
18:09:48 <dminuoso> atto SI prefix is a factor of 10−18
18:10:08 <EvanR> that was totally google's answer
18:11:01 <geekosaur> * 3.0856776
18:11:10 <geekosaur> from attoparsecs to cm
18:11:12 <dminuoso> 1 parsec = 3.085 7 * 1e16 m
18:11:22 <geekosaur> per units
18:11:30 <[exa]> wiki says 3.086 centimeters
18:11:36 <dminuoso> Mmm
18:11:46 <dminuoso> Oh I fail at doing math
18:11:53 <dminuoso> I mixed up parsec and AU
18:12:08 <geekosaur> quite the difference there
18:12:15 <dminuoso> An attoAU is 149.598 nanometers
18:12:35 <dminuoso> Useful to know that an attoparsec are three centimeters.
18:12:54 <dminuoso> Shall try and build this into my daily jargon now.
18:13:10 <geekosaur> so if a new package "threecm" appears we know what it is :)
18:15:14 <EvanR> I missed a zero trying to read decimals
18:15:46 neceve joins (~quassel@2.26.93.228)
18:16:22 Erutuon joins (~Erutuon@user/erutuon)
18:17:39 × vglfr quits (~vglfr@46.96.133.112) (Remote host closed the connection)
18:18:15 <monochrom> I thought parsec was an angle.
18:18:22 vglfr joins (~vglfr@46.96.133.112)
18:18:30 <geekosaur> technically yes
18:18:41 <geekosaur> parallax second
18:18:50 × vglfr quits (~vglfr@46.96.133.112) (Remote host closed the connection)
18:18:50 CHUD joins (~CHUD@host-80-41-89-108.as13285.net)
18:19:37 <monochrom> Nice.
18:20:14 <EvanR> han solo is vindicated
18:20:38 <dminuoso> Well, parsec is as much an "angle" as speed is light. One can be defined in terms of the other, but it's not the same as equivalence, no?
18:21:01 vglfr joins (~vglfr@46.96.133.112)
18:22:04 <geekosaur> hm. actually only the parallax part is an angle
18:22:09 × xff0x quits (~xff0x@2001:1a81:529a:8d00:e291:e2f6:2259:ce5c) (Ping timeout: 268 seconds)
18:22:30 <EvanR> parallax was such a cool effect on old computer games
18:23:11 <geekosaur> "the distance at which 1 au subtends an angle of one arcsecond"
18:23:23 × CHUD quits (~CHUD@host-80-41-89-108.as13285.net) (Ping timeout: 256 seconds)
18:23:57 xff0x joins (~xff0x@2001:1a81:529b:5400:ae89:612e:5a81:4cf8)
18:25:34 <EvanR> a picture would probably obviate needing to know what subtending is
18:25:36 <monochrom> OK sorry, parsec is a distance defined by an angle and the parallax effect (so linking back to 1 AU)
18:25:51 <monochrom> Heh, wikipedia has that picture
18:26:10 <monochrom> Yeah I stopped reading the text and just stared at the picture. https://en.wikipedia.org/wiki/Parsec
18:27:05 × jpds quits (~jpds@gateway/tor-sasl/jpds) (Remote host closed the connection)
18:27:13 <monochrom> But I came from old style British education in Hong Kong so I saw subtending in high school.
18:27:33 jpds joins (~jpds@gateway/tor-sasl/jpds)
18:28:04 <monochrom> (part of all the fun stuff from geometry)
18:29:14 <monochrom> Does anyone want to raise "wait, I thought second was a time interval"? >:)
18:29:34 geekosaur just blames the Babylonians
18:30:24 × cheater quits (~Username@user/cheater) (Ping timeout: 256 seconds)
18:30:36 × Null_A quits (~null_a@2601:645:8700:2290:8935:4edf:b32:6553) (Remote host closed the connection)
18:30:55 <EvanR> oh that's where I was going with han solo
18:31:07 <EvanR> I didn't even realize we weren't talking about time at that point
18:32:31 justsomeguy joins (~justsomeg@user/justsomeguy)
18:32:33 <EvanR> in the end it's all volts, on the cables connecting my monitor, on the neuron synapses, etc
18:33:15 jgeerds_ joins (~jgeerds@55d4a547.access.ecotel.net)
18:33:35 vysn joins (~vysn@user/vysn)
18:33:45 × ProfSimm quits (~ProfSimm@176-12-60-137.pon.spectrumnet.bg) (Remote host closed the connection)
18:34:05 ProfSimm joins (~ProfSimm@176-12-60-137.pon.spectrumnet.bg)
18:35:18 zincy joins (~zincy@2a00:23c8:970c:4801:f0bc:c4cb:1665:1c67)
18:36:36 cheater joins (~Username@user/cheater)
18:37:30 eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:41be:eda7:26bd:771e)
18:40:02 × zincy quits (~zincy@2a00:23c8:970c:4801:f0bc:c4cb:1665:1c67) (Ping timeout: 268 seconds)
18:40:03 lavaman joins (~lavaman@98.38.249.169)
18:40:45 × ProfSimm quits (~ProfSimm@176-12-60-137.pon.spectrumnet.bg) (Remote host closed the connection)
18:40:58 × justsomeguy quits (~justsomeg@user/justsomeguy) (Quit: WeeChat 3.4)
18:41:05 ProfSimm joins (~ProfSimm@176-12-60-137.pon.spectrumnet.bg)
18:41:37 × eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:41be:eda7:26bd:771e) (Ping timeout: 240 seconds)
18:44:07 Null_A joins (~null_a@2601:645:8700:2290:8935:4edf:b32:6553)
18:44:34 × lavaman quits (~lavaman@98.38.249.169) (Ping timeout: 256 seconds)
18:47:30 × fef quits (~thedawn@user/thedawn) (Ping timeout: 276 seconds)
18:50:14 × n3rdy1 quits (~n3rdy1@2600:1700:4570:3480::41) (Ping timeout: 250 seconds)
18:53:12 nahcetan joins (~nate@108-233-125-227.lightspeed.sntcca.sbcglobal.net)
18:53:32 × jstolarek quits (~jstolarek@staticline-31-183-164-222.toya.net.pl) (Ping timeout: 240 seconds)
18:54:07 × epolanski quits (uid312403@id-312403.helmsley.irccloud.com) (Quit: Connection closed for inactivity)
18:54:13 skewerr joins (spoonm@inaba.spoonm.org)
18:54:19 joona93 joins (~joona@91-158-9-115.elisa-laajakaista.fi)
18:54:51 × joona93 quits (~joona@91-158-9-115.elisa-laajakaista.fi) (Client Quit)
18:55:04 Katarushisu7 joins (~Katarushi@cpc147334-finc20-2-0-cust27.4-2.cable.virginm.net)
18:55:14 dixie joins (~dixie@real.wilbury.sk)
18:55:14 × spoonm quits (spoonm@inaba.spoonm.org) (Ping timeout: 256 seconds)
18:55:14 × unmanbearpig quits (~unmanbear@user/unmanbearpig) (Ping timeout: 256 seconds)
18:55:14 × n8chan quits (~nate@108-233-125-227.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 256 seconds)
18:55:14 × Jonno_FTW quits (~come@user/jonno-ftw/x-0835346) (Ping timeout: 256 seconds)
18:55:14 × dixie_ quits (~dixie@real.wilbury.sk) (Ping timeout: 256 seconds)
18:55:14 × [exa] quits (exa@user/exa/x-3587197) (Ping timeout: 256 seconds)
18:55:14 × cross quits (~cross@spitfire.i.gajendra.net) (Ping timeout: 256 seconds)
18:55:14 × gabiruh quits (~gabiruh@vps19177.publiccloud.com.br) (Ping timeout: 256 seconds)
18:55:15 × df quits (~ben@justworks.xyz) (Ping timeout: 256 seconds)
18:55:15 [exa]_ joins (exa@srv3.blesmrt.net)
18:55:21 df_ joins (~ben@justworks.xyz)
18:55:34 gabiruh joins (~gabiruh@vps19177.publiccloud.com.br)
18:55:37 cross_ joins (~cross@spitfire.i.gajendra.net)
18:55:41 × ncopa3 quits (~ncopa@gbr2-dev1.alpinelinux.org) (Ping timeout: 256 seconds)
18:55:41 × alphabeta quits (~kilolympu@31.205.200.235) (Ping timeout: 256 seconds)
18:55:41 × hughjfchen quits (~hughjfche@vmi556545.contaboserver.net) (Ping timeout: 256 seconds)
18:55:41 × cls quits (~cls@chalk.lubutu.com) (Ping timeout: 256 seconds)
18:55:41 × APic quits (apic@apic.name) (Ping timeout: 256 seconds)
18:55:41 × superbil quits (~superbil@1-34-176-171.hinet-ip.hinet.net) (Ping timeout: 256 seconds)
18:55:41 × Ekho quits (~Ekho@user/ekho) (Ping timeout: 256 seconds)
18:55:41 × Katarushisu quits (~Katarushi@cpc147334-finc20-2-0-cust27.4-2.cable.virginm.net) (Ping timeout: 256 seconds)
18:55:41 × eagleflo quits (~aku@163.172.137.34) (Ping timeout: 256 seconds)
18:55:41 × Maxdamantus quits (~Maxdamant@user/maxdamantus) (Ping timeout: 256 seconds)
18:55:41 × cods quits (~fred@82-65-232-44.subs.proxad.net) (Ping timeout: 256 seconds)
18:55:41 × exarkun quits (~exarkun@user/exarkun) (Ping timeout: 256 seconds)
18:55:41 × maerwald quits (~maerwald@user/maerwald) (Ping timeout: 256 seconds)
18:55:41 Katarushisu7 is now known as Katarushisu
18:55:52 APic joins (apic@apic.name)
18:55:54 cls joins (~cls@chalk.lubutu.com)
18:55:57 eagleflo joins (~aku@163.172.137.34)
18:55:58 ncopa3 joins (~ncopa@gbr2-dev1.alpinelinux.org)
18:56:03 hughjfchen joins (~hughjfche@vmi556545.contaboserver.net)
18:56:04 maerwald joins (~maerwald@mail.hasufell.de)
18:56:08 superbil joins (~superbil@1-34-176-171.hinet-ip.hinet.net)
18:56:26 × maerwald quits (~maerwald@mail.hasufell.de) (Changing host)
18:56:26 maerwald joins (~maerwald@user/maerwald)
18:56:34 exarkun joins (~exarkun@user/exarkun)
18:56:56 Jonno_FTW joins (~come@api.carswap.me)
18:56:56 × Jonno_FTW quits (~come@api.carswap.me) (Changing host)
18:56:56 Jonno_FTW joins (~come@user/jonno-ftw/x-0835346)
18:56:57 unmanbearpig joins (~unmanbear@user/unmanbearpig)
18:57:21 cods joins (~fred@82-65-232-44.subs.proxad.net)
18:57:28 Maxdamantus joins (~Maxdamant@user/maxdamantus)
18:57:30 df_ is now known as df
18:59:28 kilolympus joins (~kilolympu@31.205.200.235)
19:00:22 × [exa]_ quits (exa@srv3.blesmrt.net) (Changing host)
19:00:22 [exa]_ joins (exa@user/exa/x-3587197)
19:00:29 [exa]_ is now known as [exa]
19:00:37 mcglk joins (~mcglk@131.191.49.120)
19:00:47 × Inoperable quits (~PLAYER_1@fancydata.science) (Ping timeout: 256 seconds)
19:00:54 × Null_A quits (~null_a@2601:645:8700:2290:8935:4edf:b32:6553) (Remote host closed the connection)
19:01:10 × mcglk_ quits (~mcglk@131.191.49.120) (Read error: Connection reset by peer)
19:01:21 × stvc quits (~stvc@192.241.166.39) (Ping timeout: 256 seconds)
19:01:55 × AWizzArd quits (~code@user/awizzard) (Ping timeout: 256 seconds)
19:02:02 AWizzArd joins (~code@gehrels.uberspace.de)
19:02:56 stvc joins (~stvc@192.241.166.39)
19:03:05 lep parts (~lep@94.31.89.203) ()
19:03:13 n3rdy1 joins (~n3rdy1@2600:1700:4570:3480:1b88:50f:dae0:9293)
19:05:49 yauhsien joins (~yauhsien@61-231-37-18.dynamic-ip.hinet.net)
19:07:04 eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:41be:eda7:26bd:771e)
19:09:18 Inoperable joins (~PLAYER_1@fancydata.science)
19:09:38 Ekho joins (~Ekho@user/ekho)
19:09:57 × yauhsien quits (~yauhsien@61-231-37-18.dynamic-ip.hinet.net) (Ping timeout: 240 seconds)
19:11:29 × vysn quits (~vysn@user/vysn) (Ping timeout: 268 seconds)
19:12:57 × deadmarshal quits (~deadmarsh@95.38.114.1) (Ping timeout: 240 seconds)
19:13:32 × Erutuon quits (~Erutuon@user/erutuon) (Ping timeout: 240 seconds)
19:13:59 × Hanicef quits (~gustaf@81-229-9-108-no92.tbcn.telia.com) (Quit: leaving)
19:14:32 × jgeerds_ quits (~jgeerds@55d4a547.access.ecotel.net) (Ping timeout: 240 seconds)
19:15:15 × coot quits (~coot@213.134.190.95) (Quit: coot)
19:16:34 <sm> f $ x & g = f (g x), am I right ?
19:17:05 lavaman joins (~lavaman@98.38.249.169)
19:17:08 <EvanR> gross
19:17:29 <geekosaur> I believe so
19:17:41 <geekosaur> > f $ x & g :: Expr
19:17:42 <lambdabot> error:
19:17:42 <lambdabot> • Ambiguous type variable ‘t0’ arising from a use of ‘f’
19:17:42 <lambdabot> prevents the constraint ‘(Show t0)’ from being solved.
19:17:54 <geekosaur> > f $ x & g
19:17:56 <lambdabot> error:
19:17:56 <lambdabot> • Could not deduce (Show t0) arising from a use of ‘f’
19:17:56 <lambdabot> from the context: FromExpr t
19:18:11 <EvanR> % :i (&)
19:18:11 <yahb> EvanR: (&) :: a -> (a -> b) -> b -- Defined in `Data.Function'; infixl 1 &
19:18:28 <geekosaur> hm, no
19:19:09 <monochrom> Did you know: you can :i & $ on the same line :)
19:22:27 <EvanR> % :i (&) ($)
19:22:27 <yahb> EvanR: (&) :: a -> (a -> b) -> b -- Defined in `Data.Function'; infixl 1 &; ($) :: (a -> b) -> a -> b -- Defined in `GHC.Base'; infixr 0 $
19:23:14 <EvanR> what happens when an unmovable infixr collides with an unresistable infixl
19:23:24 <monochrom> Here is a nice way to test:
19:23:33 <monochrom> > Just $ () & Left
19:23:34 <lambdabot> Just (Left ())
19:24:17 × mon_aaraj quits (~MonAaraj@user/mon-aaraj/x-4416475) (Ping timeout: 240 seconds)
19:24:22 <monochrom> EvanR, the compiler flags "syntax error I can't break the tie"
19:24:51 <monochrom> The compiler makes you an offer you can't resist :)
19:25:20 <EvanR> I can hear lisp people chuckling at the situation
19:25:49 <EvanR> silly infix operator fools
19:26:20 × lavaman quits (~lavaman@98.38.249.169) (Remote host closed the connection)
19:26:31 mon_aaraj joins (~MonAaraj@user/mon-aaraj/x-4416475)
19:33:52 × werneta quits (~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net) (Ping timeout: 256 seconds)
19:35:28 werneta joins (~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net)
19:41:06 × haskellberryfinn quits (~nut@roc37-h01-176-170-197-243.dsl.sta.abo.bbox.fr) (Quit: WeeChat 3.3)
19:41:11 Erutuon joins (~Erutuon@user/erutuon)
19:45:00 × ProfSimm quits (~ProfSimm@176-12-60-137.pon.spectrumnet.bg) (Remote host closed the connection)
19:45:13 FirstTimeInHere joins (~FirstTime@200.7.90.158)
19:45:20 ProfSimm joins (~ProfSimm@176-12-60-137.pon.spectrumnet.bg)
19:46:00 × jumper149 quits (~jumper149@base.felixspringer.xyz) (Quit: WeeChat 3.3)
19:46:39 × alMalsamo quits (~alMalsamo@gateway/tor-sasl/almalsamo) (Ping timeout: 276 seconds)
19:48:07 Morrow joins (~Morrow@bzq-110-168-31-106.red.bezeqint.net)
19:48:12 alMalsamo joins (~alMalsamo@gateway/tor-sasl/almalsamo)
19:48:17 Tuplanolla joins (~Tuplanoll@91-159-68-166.elisa-laajakaista.fi)
19:49:17 × perrierjouet quits (~perrier-j@modemcable012.251-130-66.mc.videotron.ca) (Quit: WeeChat 3.4)
19:49:32 × ProfSimm quits (~ProfSimm@176-12-60-137.pon.spectrumnet.bg) (Ping timeout: 256 seconds)
19:49:42 little_mac joins (~little_ma@2601:410:4300:3ce0:7040:d478:b206:6b72)
19:49:55 <ephemient> https://sourceforge.net/p/readable/wiki/Examples/ infix in lisp :) although it doesn't implement operator precedence
19:50:56 × jao quits (~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net) (Remote host closed the connection)
19:51:06 <prasad> :q
19:51:11 cheater1__ joins (~Username@user/cheater)
19:51:37 × cheater quits (~Username@user/cheater) (Ping timeout: 240 seconds)
19:51:44 pavonia joins (~user@user/siracusa)
19:51:46 cheater1__ is now known as cheater
19:52:10 dsrt^ joins (~dsrt@75-147-197-198-Atlanta.hfc.comcastbusiness.net)
19:53:36 <monochrom> I used to have a "pythonic lisp" joke posted on lpaste.net. But lpaste.net is gone.
19:53:56 ProfSimm joins (~ProfSimm@176-12-60-137.pon.spectrumnet.bg)
19:54:20 tommd joins (~tommd@67-42-147-226.ptld.qwest.net)
19:55:05 <monochrom> If you understand "pythonic java" in https://twitter.com/HisCursedness/status/788690145822306304 , you can imagine what my joke looked like. :)
19:55:41 × prasad quits (~user@c-73-170-49-136.hsd1.ca.comcast.net) (Quit: ERC (IRC client for Emacs 27.1))
19:56:24 <monochrom> You probably have to click on the picture to see the full picture, especially what's on the right edge.
19:56:47 <monochrom> I gave an exam question on "input an AST, output this format" >:)
19:57:51 × mmalter quits (~mmalter@88.126.10.237) (Quit: Lost terminal)
19:58:27 jao joins (~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net)
19:59:47 <EvanR> what haha
20:01:39 <EvanR> I sort of regret not having an entire chunk of brain warp by java
20:01:56 <EvanR> so many people to commiserate with
20:02:59 <EvanR> now I want to see pythonic lisp, sort of
20:03:11 <EvanR> or better, haskell warped into anything other than BASIC
20:06:25 <monochrom> For pythonic lisp, the trick is to also put ( at the far right edge.
20:08:04 kjak joins (~kjak@pool-108-45-56-21.washdc.fios.verizon.net)
20:08:18 juhp joins (~juhp@128.106.188.82)
20:11:02 <janus> @hoogle (Monad m, Foldable t, Alternative f) => t (m (f a)) -> m (f a)
20:11:02 <lambdabot> No results found
20:11:22 <janus> i am looking for an effectful asum, does anybody know of a package?
20:13:41 <EvanR> :t sequence
20:13:42 <lambdabot> (Traversable t, Monad m) => t (m a) -> m (t a)
20:13:42 <byorgey> janus: asum already has that type, doesn't it?
20:13:43 waleee joins (~waleee@2001:9b0:21d:fc00:398f:b003:b90d:acf4)
20:14:02 <byorgey> janus: I mean if you replace the 'a' in the type of asum with 'f a'
20:14:28 <byorgey> oh, never mind, Alternative f.
20:16:10 <c_wraith> janus: do you really need Monad there, or is Applicative sufficient?
20:16:53 <janus> well i have a monad, a monad provides more stuff than an applicative. if you have a solution with applicative, i'd like to see it, since it would also work in a monadic context
20:17:39 <c_wraith> the constraint says what is *required* for the function. Does that function do anything that requires a monad constraint?
20:18:18 <monochrom> Ugh please don't argue over this.
20:18:18 <awpr> :t fmap Data.Monoid.getAlt . Data.Monoid.getAp . foldMap (Data.Monoid.Ap . fmap Data.Monoid.Alt)
20:18:19 <lambdabot> forall k (f1 :: * -> *) (t :: * -> *) (f2 :: k -> *) (a :: k). (Foldable t, Applicative f1, Monoid (Alt f2 a)) => t (f1 (f2 a)) -> f1 (f2 a)
20:18:52 <awpr> ...that's not what my GHCi says
20:19:14 <monochrom> If I say "I'm looking for Int->Int for increasing an Int by 1" no one is going to chastise me on "you need to generalize to Num a => a -> a or else I won't answer".
20:19:33 <c_wraith> monochrom: it wasn't about that - it was about "I don't know what that function does if there's a Monad constraint"
20:19:55 <c_wraith> like, I was looking at the same wrappers awpr is using
20:20:20 <c_wraith> And I wasn't sure if they actually would do the job, because I didn't know if Applicative was sufficient for the job
20:20:55 <awpr> not sure why lambdabot doesn't know about the Monoid instance for Alt, but it should implement the intended "effectful asum", and it should say `Alternative f2` in place of that Monoid constraint
20:21:18 <monochrom> Hrm, would yahb do better?
20:21:32 <monochrom> % :type fmap Data.Monoid.getAlt . Data.Monoid.getAp . foldMap (Data.Monoid.Ap . fmap Data.Monoid.Alt)
20:21:33 <yahb> monochrom: forall {k} {f1 :: * -> *} {t :: * -> *} {f2 :: k -> *} {a :: k}. (Foldable t, Applicative f1, Monoid (Alt f2 a)) => t (f1 (f2 a)) -> f1 (f2 a)
20:21:52 <monochrom> yahb is 9.0.* IIRC
20:22:04 <monochrom> % !ghc --version
20:22:05 <yahb> monochrom: ; <interactive>:31:1: error:; Bang pattern in expression context: !ghc; Did you mean to add a space after the '!'?
20:22:11 <monochrom> % :!ghc --version
20:22:12 <yahb> monochrom: The Glorious Glasgow Haskell Compilation System, version 9.0.1
20:22:26 <janus> if you defined it as 'pure empty' it wouldn't require Monad, but i was thinking it would also run on e.g. infinite lists as the t. with applicative, i thought you're supposed to know up-front how many steps 'computation' it would be? so then how could it work on infinite lists? not trying to argue btw :) just trying to understand
20:22:31 <c_wraith> the docs say the monoid instance has been there since base 4.8, which matches up with then Alt was added
20:22:42 <c_wraith> *when
20:22:55 <janus> thanks for the solution awpr, i am looking at it
20:23:51 <janus> oh but i guess since each element doesn't depend on the previous, it shouldn't need to be Monad
20:24:02 <janus> is that the intuition you had c_wraith?
20:24:06 <c_wraith> yes
20:24:07 <awpr> "up front" means "without depending on prior applicative results", not "in finite time" -- it knows up-front that there's an infinite sequence of effects to run
20:25:13 <janus> but in haskell, when given an infinite list, you can never actually verify that? that check would never terminate
20:25:49 <awpr> there is no check that happens temporally before execution can start. it's just that by nature Applicative computations' shapes don't depend on their intermediate values
20:25:58 <c_wraith> awpr: you know, this reminds me of something... There was a... reddit discussion? I think? a few months(?) back about how instance constraints shouldn't be automatically applied, because there isn't always a principle type in the present of FlexibleConstraints, or something?
20:26:02 × cods quits (~fred@82-65-232-44.subs.proxad.net) (Ping timeout: 240 seconds)
20:26:24 <awpr> that shape can be infinite, as long as it's infinite independently of intermediate values
20:27:24 cods joins (~fred@82-65-232-44.subs.proxad.net)
20:27:33 × briandaed quits (~root@185.234.208.208.r.toneticgroup.pl) (Quit: Lost terminal)
20:27:36 <janus> i'll have to ponder this :P
20:27:48 CiaoSen joins (~Jura@p200300c95737a2002a3a4dfffe84dbd5.dip0.t-ipconnect.de)
20:28:04 <awpr> hmm, switching to ghci 9.0.1 it still reduces that, so it's probably not due to a change in instance resolution. maybe there's something weird about the import rules specifically in lambdabot and yahb that makes it not able to see the instance?
20:28:11 <c_wraith> or... huh. ghci on 9.2 will show a Monoid constraint unless Alternative is imported. Then it will show Alternative
20:28:49 <hololeap> % :t fmap getAlt . getAp . foldMap (Ap . fmap Alt) :: (Foldable t, Applicative m, Alternative f) => t (m (f a)) -> m (f a) -- I know awpr already beat me to it :)
20:28:50 <yahb> hololeap: (Foldable t, Alternative f, Applicative m) => t (m (f a)) -> m (f a)
20:29:13 <awpr> what? why did it give a different type that time?
20:29:31 <c_wraith> because hololeap told it what type to give
20:29:35 <awpr> oh
20:29:42 <c_wraith> so it only checked instead of inferring
20:29:47 <EvanR> isInfinite :: [a] -> Bool, is similar to limited principle of omniscience
20:30:18 <EvanR> asserting that a list is either finite or infinite, and it's valid to reason like that
20:30:34 <hololeap> I'm going to go with False
20:30:35 <awpr> janus: consider `traverse_ print [0..]` -- that only needs Applicative, but it's an infinitely long computation, whose shape is only determined by that infinite list
20:30:46 <c_wraith> though... all this use of fmap Alt and fmap getAlt is making me cringe, because... this is why coerce exists!
20:31:26 <c_wraith> ... If only coerce had a better inference story
20:31:26 <awpr> yeah, a real implementation should be more like `coerce (foldMap @(Ap ... Alt ...))` with appropriate ScopedTypeVariables
20:32:00 <hololeap> or just deriving (Semigroup, Monoid) via ...
20:32:11 <c_wraith> you wouldn't even need foldMap
20:32:17 <c_wraith> It'd just be coerce fold
20:32:22 × bitmapper quits (uid464869@id-464869.lymington.irccloud.com) (Quit: Connection closed for inactivity)
20:32:24 <awpr> ah yeah, true
20:33:57 <hololeap> til all programs can be reduced down to coerce fold
20:34:48 × burnsidesLlama quits (~burnsides@dhcp168-033.wadham.ox.ac.uk) (Remote host closed the connection)
20:34:53 × eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:41be:eda7:26bd:771e) (Remote host closed the connection)
20:34:56 × mon_aaraj quits (~MonAaraj@user/mon-aaraj/x-4416475) (Ping timeout: 245 seconds)
20:35:15 burnsidesLlama joins (~burnsides@dhcp168-033.wadham.ox.ac.uk)
20:37:03 mon_aaraj joins (~MonAaraj@user/mon-aaraj/x-4416475)
20:39:36 × burnsidesLlama quits (~burnsides@dhcp168-033.wadham.ox.ac.uk) (Ping timeout: 256 seconds)
20:39:42 neurocyte0917090 joins (~neurocyte@IP-046243082200.dynamic.medianet-world.de)
20:39:42 × neurocyte0917090 quits (~neurocyte@IP-046243082200.dynamic.medianet-world.de) (Changing host)
20:39:42 neurocyte0917090 joins (~neurocyte@user/neurocyte)
20:42:07 zincy joins (~zincy@2a00:23c8:970c:4801:f0bc:c4cb:1665:1c67)
20:42:24 <janus> I can't get it to work when I call it on (repeat (read <$> getLine)) and type it to 'IO (Maybe Int)'
20:42:45 <janus> i thought i would be able to write 'Just 5' and then it would terminate, but it keeps reading
20:43:03 <EvanR> you want unsafeInterleaveIO ?
20:43:06 <EvanR> of some sort
20:43:25 <janus> why would i need that? because it is calling the getLines concurrently?
20:43:26 <EvanR> if you see the Just 5 from an IO (Maybe Int) it means that action is over
20:43:28 × ProfSimm quits (~ProfSimm@176-12-60-137.pon.spectrumnet.bg) (Remote host closed the connection)
20:43:48 ProfSimm joins (~ProfSimm@176-12-60-137.pon.spectrumnet.bg)
20:43:59 <EvanR> if the show must go on, you need threads
20:44:07 <janus> well i never see it played back to me, it keeps reading, never hands me back my repl
20:44:16 <monochrom> IO's <*> is stricter than most people's intuition.
20:44:29 <monochrom> or more eager
20:45:08 <awpr> an infinitely long computation doesn't stop being infinitely long just because the result would infinitely produce ignored values
20:45:12 <monochrom> unsafeInterleaveIO may be justified in some cases or under some models.
20:45:34 <janus> > asum (repeat $ Just 5)
20:45:35 <lambdabot> Just 5
20:45:51 <awpr> that's a program that requests infinitely many lines and then returns the `asum` of them
20:46:01 <janus> but that terminates? it has just as much infiniteness as the effectful version
20:46:10 <monochrom> Likewise, when Maybe's <*> is too strict, there are times a "pledge ~(Just x) = Just x" is justified. You can call it unsafeInterleaveMaybe.
20:46:15 <awpr> even if that result would be the first Just, there are still infinitely many lines to read before you can try to compute it
20:46:17 × zincy quits (~zincy@2a00:23c8:970c:4801:f0bc:c4cb:1665:1c67) (Ping timeout: 240 seconds)
20:46:37 × Inst quits (~delicacie@2601:6c4:4080:3f80:3dfd:43d3:c415:2e6f) (Read error: Connection reset by peer)
20:46:38 <EvanR> oh pledge is interesting
20:46:51 <EvanR> sometimes haskell is like iron man, and sometimes it's like Dr Strange
20:47:00 <monochrom> For example "some (Just 0)" is bottom, but "some (pledge (Just 0))" is successfully Just [the infinite list you hope for].
20:47:12 Null_A joins (~null_a@2601:645:8700:2290:8935:4edf:b32:6553)
20:48:14 <dolio> No, it isn't.
20:48:28 × ProfSimm quits (~ProfSimm@176-12-60-137.pon.spectrumnet.bg) (Ping timeout: 256 seconds)
20:49:09 <EvanR> and sometimes it's like the incredible hulk (unsafeCoerce)
20:49:55 lavaman joins (~lavaman@98.38.249.169)
20:50:41 <janus> but if written with monad, i wouldn't need any unsafe functions, i presume... hmmm
20:50:42 × alp quits (~alp@user/alp) (Ping timeout: 250 seconds)
20:51:46 <EvanR> you want to interleave IO with applicativing stuff? Do you have an "exit strategy" in case an IO error happens in the middle
20:52:49 <monochrom> <|> is not very strict. <*> is stricter.
20:52:57 jinsun__ joins (~quassel@user/jinsun)
20:53:03 × dhouthoo quits (~dhouthoo@178-117-36-167.access.telenet.be) (Quit: WeeChat 3.4)
20:53:33 <monochrom> and then IO's <|> and <*> are still different from other type's <|> and <*>
20:54:14 <janus> how can you determine the general strictness of <*> when it isn't mentioned in the laws how strict it should be?
20:54:41 <monochrom> Every type is different, so the laws cannot rule either way.
20:54:54 × jinsun quits (~quassel@user/jinsun) (Ping timeout: 256 seconds)
20:54:54 <monochrom> But you can always test with foo <*> undefined
20:55:05 <monochrom> and also foo <*> pure undefined
20:55:33 <monochrom> or even undefined <*> foo but usually no one really needs that.
20:56:34 <monochrom> But oh actually Control.Monad.State.Lazy plays well with undefined <*> foo so left recursion is productive, for a change!
20:57:13 <ephemient> % (undefined <*> undefined :: Proxy ()) `seq` ()
20:57:13 <yahb> ephemient: ()
20:57:13 <c_wraith> argh, I was playing with this for a while, and.. you can't actually replace fmap Alt with coerce. The problem being that the type `f` might be a total lie with a completely bogus Functor instance. If you use fmap Alt, that's a bug with the Functor instance. If you use coerce, it's a hole in the type system.
20:57:22 <c_wraith> Type families claim another victim
20:58:01 <monochrom> I think we can assume that f is an honest functor for now? It's IO or Maybe or something. :)
20:58:28 <c_wraith> yeah, I was just thinking about getting rid of the "unnecessary" fmap with coerce.
20:58:34 <c_wraith> which turns out to not be possible
20:58:57 × vglfr quits (~vglfr@46.96.133.112) (Ping timeout: 240 seconds)
20:59:12 <awpr> well you can add the appropriate representationality constraint on `f`, if you're willing to change the type signature
20:59:38 <monochrom> I became a bit sad the other day when a conversation revealed that dependent typing takes away parametricity, and it's a tautology.
20:59:54 × lavaman quits (~lavaman@98.38.249.169) (Remote host closed the connection)
21:00:02 <dolio> Huh?
21:00:08 <awpr> `forall a b. Coercible a b => Coercible (f a) (f b)` that is, which excludes any weird GADT and type family stuff
21:00:27 <c_wraith> yeah, I thought about that. But then the Coercible constraint propagates
21:00:33 <c_wraith> Which is a weird detail
21:01:01 <EvanR> forall t::Type . t -> t still only has 1 way
21:02:17 eggplantade joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
21:03:12 <EvanR> guess that's not really a dependent type
21:04:39 <awpr> I think the implication is that something like `foreach (t :: Type) -> t -> t` has more inhabitants, assuming you can type-case on such things. and if not, then you can construct other parametricity-defeating things for dependently-quantified things of types other than Type
21:04:52 <dolio> Dependent types don't let you type case.
21:06:14 <awpr> then the "if not" part kicks in. like, `forall n a. Vec n a -> Vec n a` has parametricity guarantees on `n` that it can't decide what to do based on the value of n, but `forall a. foreach n -> Vec n a -> Vec n a` can
21:06:15 whatsupdoc joins (uid509081@id-509081.hampstead.irccloud.com)
21:06:18 × Erutuon quits (~Erutuon@user/erutuon) (Ping timeout: 250 seconds)
21:06:34 <c_wraith> I wonder how much it would break if you could put representational requirements on a class
21:06:39 × neceve quits (~quassel@2.26.93.228) (Read error: Connection reset by peer)
21:06:46 ProfSimm joins (~ProfSimm@87.227.196.109)
21:07:01 <c_wraith> like, just forbid Functor instances if that type argument has a Nominal role
21:07:15 <awpr> hmm, I'm wrong about Vec because you can recover the length from the structure of the Vec
21:07:27 <dolio> What parametricity in n are you actually making use of in Haskell?
21:08:03 <awpr> I'm not making use of it. just trying to make sense of "dependent typing takes away parametricity"
21:08:14 <EvanR> that's monochrom's job xD
21:09:23 Erutuon joins (~Erutuon@user/erutuon)
21:10:12 coot joins (~coot@213.134.190.95)
21:11:29 × coot quits (~coot@213.134.190.95) (Client Quit)
21:12:02 coot joins (~coot@213.134.190.95)
21:12:04 burnsidesLlama joins (~burnsides@dhcp168-033.wadham.ox.ac.uk)
21:12:08 × FinnElija quits (~finn_elij@user/finn-elija/x-0085643) (Remote host closed the connection)
21:15:05 FinnElija joins (~finn_elij@user/finn-elija/x-0085643)
21:17:50 zincy joins (~zincy@2a00:23c8:970c:4801:f0bc:c4cb:1665:1c67)
21:21:02 × tzh quits (~tzh@c-24-21-73-154.hsd1.wa.comcast.net) (Ping timeout: 260 seconds)
21:24:15 × burnsidesLlama quits (~burnsides@dhcp168-033.wadham.ox.ac.uk) (Ping timeout: 250 seconds)
21:25:36 kimjetwav joins (~user@2607:fea8:2363:8f00:79e4:1253:5b58:4ecf)
21:26:11 × mikoto-chan quits (~mikoto-ch@213.177.151.239) (Ping timeout: 245 seconds)
21:27:50 Pickchea joins (~private@user/pickchea)
21:31:03 × jinsun__ quits (~quassel@user/jinsun) (Quit: https://quassel-irc.org - Chat comfortably. Anywhere.)
21:31:15 jgeerds_ joins (~jgeerds@55d4a547.access.ecotel.net)
21:33:52 RMSBach joins (~user@cpe-76-177-52-136.natcky.res.rr.com)
21:34:28 jinsun joins (~quassel@user/jinsun)
21:36:46 madjestic joins (~madjestic@88-159-247-120.fixed.kpn.net)
21:36:53 × [itchyjunk] quits (~itchyjunk@user/itchyjunk/x-7353470) (Remote host closed the connection)
21:37:12 × polyphem quits (~rod@2a02:810d:840:8754:2c8b:1f9:dc9a:b89b) (Remote host closed the connection)
21:37:30 polyphem joins (~rod@2a02:810d:840:8754:cd07:81a6:97c4:d71f)
21:38:32 × Topsi quits (~Tobias@dyndsl-095-033-019-122.ewe-ip-backbone.de) (Ping timeout: 256 seconds)
21:39:08 burnsidesLlama joins (~burnsides@dhcp168-033.wadham.ox.ac.uk)
21:39:13 <RMSBach>
21:39:13 <RMSBach> /msg NickServ VERIFY REGISTER RMSBach b3sDLCtFAIw5uAit
21:39:34 <geekosaur> you just sent your password to the channel
21:40:01 <RMSBach> Yeah, that was a mistake. I am getting used to ERC and setting up an account with libera at the same time :/
21:40:11 <maerwald> lol
21:40:37 <RMSBach> At least that was a one time generated password I think
21:40:51 <maerwald> lemme try that on your gmail account
21:41:16 <RMSBach> lol
21:43:38 × burnsidesLlama quits (~burnsides@dhcp168-033.wadham.ox.ac.uk) (Ping timeout: 256 seconds)
21:44:25 tzh joins (~tzh@c-24-21-73-154.hsd1.wa.comcast.net)
21:45:18 <EvanR> it looks like a really strong password though, I might have to start using it
21:45:36 <EvanR> *yoink*
21:45:44 × gdd quits (~gdd@129.199.146.230) (Ping timeout: 250 seconds)
21:45:45 merijn joins (~merijn@c-001-001-018.client.esciencecenter.eduvpn.nl)
21:46:50 <RMSBach> Be my guest, @EvanR. ;)
21:47:48 gdd joins (~gdd@129.199.146.230)
21:48:17 × mon_aaraj quits (~MonAaraj@user/mon-aaraj/x-4416475) (Ping timeout: 240 seconds)
21:48:39 × zincy quits (~zincy@2a00:23c8:970c:4801:f0bc:c4cb:1665:1c67) (Remote host closed the connection)
21:49:28 mon_aaraj joins (~MonAaraj@user/mon-aaraj/x-4416475)
21:52:42 × jao quits (~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net) (Ping timeout: 256 seconds)
21:52:51 × segfaultfizzbuzz quits (~rustisafu@2602:306:cd3c:9350:59e3:db49:aa0a:46e5) (Ping timeout: 245 seconds)
21:54:37 jao joins (~jao@static-68-235-44-25.cust.tzulo.com)
21:55:05 × wombat875 quits (~wombat875@pool-72-89-24-154.nycmny.fios.verizon.net) (Quit: WeeChat 2.2-dev)
21:57:37 × Erutuon quits (~Erutuon@user/erutuon) (Ping timeout: 250 seconds)
22:00:35 Erutuon joins (~Erutuon@user/erutuon)
22:10:10 deadmarshal joins (~deadmarsh@95.38.117.123)
22:11:25 × takuan quits (~takuan@178-116-218-225.access.telenet.be) (Ping timeout: 240 seconds)
22:14:31 × deadmarshal quits (~deadmarsh@95.38.117.123) (Ping timeout: 245 seconds)
22:14:48 × merijn quits (~merijn@c-001-001-018.client.esciencecenter.eduvpn.nl) (Ping timeout: 256 seconds)
22:16:07 jkaye joins (~jkaye@2601:281:8300:7530:1596:ed69:814a:f0eb)
22:16:36 vglfr joins (~vglfr@46.96.133.112)
22:17:04 burnsidesLlama joins (~burnsides@dhcp168-033.wadham.ox.ac.uk)
22:17:13 × RMSBach quits (~user@cpe-76-177-52-136.natcky.res.rr.com) (Quit: ERC 5.4 (IRC client for GNU Emacs 28.0.90))
22:18:43 RMSBach joins (~user@cpe-76-177-52-136.natcky.res.rr.com)
22:19:11 × yassernasc quits (~yassernas@ec2-54-87-145-249.compute-1.amazonaws.com) (Remote host closed the connection)
22:21:10 d34df00d joins (~d34df00d@2600:1700:8c60:3a10::48)
22:21:21 <d34df00d> Hi!
22:21:25 <d34df00d> unoffsetBS (BSI.PS ptr offset len) = BSI.PS (ptr `plusForeignPtr` offset) 0 len
22:21:29 <d34df00d> Is this legit with bytestring-0.10?
22:22:11 <d34df00d> I don't know much about foreign ptrs, and I'm not sure I don't mess up any finalizers or what not attached to `ptr` if I only keep ``ptr `plusForeignPtr` offset`` and the `ptr` itself will be GC'ed away.
22:23:40 toghat joins (~toghat@96-19-96-19-190-222.cpe.sparklight.net)
22:23:40 × pavonia quits (~user@user/siracusa) (Read error: Connection reset by peer)
22:23:52 × Erutuon quits (~Erutuon@user/erutuon) (Ping timeout: 256 seconds)
22:23:58 qrpnxz joins (~qrpnxz@user/qrpnxz)
22:24:09 × jkaye quits (~jkaye@2601:281:8300:7530:1596:ed69:814a:f0eb) (Quit: Leaving)
22:26:50 pavonia joins (~user@user/siracusa)
22:27:00 × toghat quits (~toghat@96-19-96-19-190-222.cpe.sparklight.net) (Client Quit)
22:27:48 <ephemient> the docs on https://hackage.haskell.org/package/base/docs/GHC-ForeignPtr.html#v:plusForeignPtr say that it keeps the finalizer
22:28:42 × __monty__ quits (~toonn@user/toonn) (Quit: leaving)
22:29:10 <d34df00d> Somehow I managed to miss that. Thanks!
22:31:32 × Vajb quits (~Vajb@2001:999:50:e6be:1e98:9376:d93e:4506) (Read error: Connection reset by peer)
22:32:05 × burnsidesLlama quits (~burnsides@dhcp168-033.wadham.ox.ac.uk) (Remote host closed the connection)
22:32:11 Vajb joins (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi)
22:32:12 burnsidesLlama joins (~burnsides@dhcp168-033.wadham.ox.ac.uk)
22:35:34 × gehmehgeh quits (~user@user/gehmehgeh) (Quit: Leaving)
22:36:07 × qrpnxz quits (~qrpnxz@user/qrpnxz) (Quit: Gateway shutdown)
22:40:36 <hololeap> is something like distcc/icecream a feasable concept for ghc?
22:40:47 × max22- quits (~maxime@2a01cb08833598009858f30aea0eec11.ipv6.abo.wanadoo.fr) (Quit: Leaving)
22:44:51 × FirstTimeInHere quits (~FirstTime@200.7.90.158) (Read error: Connection reset by peer)
22:45:21 × cosimone quits (~user@2001:b07:ae5:db26:c24a:d20:4d91:1e20) (Remote host closed the connection)
22:45:50 × zer0bitz_ quits (~zer0bitz@2001:2003:f444:a000:4917:bc56:f54d:812b) (Ping timeout: 252 seconds)
22:45:58 cosimone joins (~user@2001:b07:ae5:db26:c24a:d20:4d91:1e20)
22:48:31 alp joins (~alp@user/alp)
22:50:21 × coot quits (~coot@213.134.190.95) (Quit: coot)
22:54:52 × Null_A quits (~null_a@2601:645:8700:2290:8935:4edf:b32:6553) (Remote host closed the connection)
22:56:28 mestre joins (~mestre@191.177.181.194)
22:56:50 <EvanR> this is an embarrassing situation where I want to test some action that outputs file to a path I type in from cabal repl, but scared of overwriting the wrong file and going into a output subdir first means I can't seem to load the module in question
22:57:32 <geekosaur> can you :cd inside the repl?
22:58:05 <monochrom> Do you mind entering an absolute path? :)
22:58:36 × lbseale quits (~ep1ctetus@user/ep1ctetus) (Quit: Leaving)
22:59:18 <monochrom> If you load the module and then :cd, it doesn't hurt. Later, if you stick to :reload, the previous :cd still doesn't hurt.
23:01:24 × little_mac quits (~little_ma@2601:410:4300:3ce0:7040:d478:b206:6b72) (Remote host closed the connection)
23:02:48 <EvanR> cool
23:06:47 × albet70 quits (~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection)
23:08:54 × mon_aaraj quits (~MonAaraj@user/mon-aaraj/x-4416475) (Ping timeout: 268 seconds)
23:10:48 mon_aaraj joins (~MonAaraj@user/mon-aaraj/x-4416475)
23:12:54 albet70 joins (~xxx@2400:8902::f03c:92ff:fe60:98d8)
23:18:20 × michalz quits (~michalz@185.246.204.57) (Remote host closed the connection)
23:22:34 × Feuermagier quits (~Feuermagi@user/feuermagier) (Remote host closed the connection)
23:25:51 × Tuplanolla quits (~Tuplanoll@91-159-68-166.elisa-laajakaista.fi) (Quit: Leaving.)
23:30:35 × mc47 quits (~mc47@xmonad/TheMC47) (Remote host closed the connection)
23:30:36 × Techcable quits (~Techcable@168.235.93.147) (Ping timeout: 250 seconds)
23:32:08 AlexNoo_ joins (~AlexNoo@94.233.241.141)
23:33:49 × cosimone quits (~user@2001:b07:ae5:db26:c24a:d20:4d91:1e20) (Ping timeout: 250 seconds)
23:35:17 × AlexNoo quits (~AlexNoo@178.34.162.240) (Ping timeout: 240 seconds)
23:35:32 × AlexZenon quits (~alzenon@178.34.162.240) (Ping timeout: 240 seconds)
23:35:32 × Alex_test quits (~al_test@178.34.162.240) (Ping timeout: 240 seconds)
23:36:37 × Pickchea quits (~private@user/pickchea) (Quit: Leaving)
23:39:30 Alex_test joins (~al_test@94.233.241.141)
23:39:39 AlexZenon joins (~alzenon@94.233.241.141)
23:43:08 vysn joins (~vysn@user/vysn)
23:48:39 Null_A joins (~null_a@2601:645:8700:2290:8935:4edf:b32:6553)
23:53:49 × flipchan quits (~filip@188-169-255-31.dsl.utg.ge) (Ping timeout: 240 seconds)
23:56:39 little_mac joins (~little_ma@2601:410:4300:3ce0:a84a:183:2c1b:3735)
23:58:24 × Null_A quits (~null_a@2601:645:8700:2290:8935:4edf:b32:6553) (Remote host closed the connection)
23:59:02 ski joins (~ski@remote12.chalmers.se)

All times are in UTC on 2022-01-28.