2022/01/28

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