2021/11/03

2021-11-03 00:02:41 +0100gehmehgeh(~user@user/gehmehgeh) (Quit: Leaving)
2021-11-03 00:04:51 +0100max22-(~maxime@lfbn-ren-1-762-224.w81-53.abo.wanadoo.fr) (Quit: Leaving)
2021-11-03 00:06:47 +0100jespada(~jespada@190.7.36.46)
2021-11-03 00:09:00 +0100thyriaen(~thyriaen@x4dbf0bd8.dyn.telefonica.de) (Quit: Leaving)
2021-11-03 00:11:56 +0100jespada_(~jespada@190.7.36.46)
2021-11-03 00:12:06 +0100jespada(~jespada@190.7.36.46) (Read error: Connection reset by peer)
2021-11-03 00:18:37 +0100vicfred(~vicfred@user/vicfred) (Quit: Leaving)
2021-11-03 00:27:34 +0100dsamperi(~dsamperi@2603-7000-3b42-5400-c881-7958-2102-07bc.res6.spectrum.com) (Ping timeout: 260 seconds)
2021-11-03 00:29:20 +0100myShoggoth(~myShoggot@97-120-85-195.ptld.qwest.net) (Read error: Connection reset by peer)
2021-11-03 00:29:37 +0100myShoggoth(~myShoggot@97-120-85-195.ptld.qwest.net)
2021-11-03 00:32:39 +0100v01d4lph4(~v01d4lph4@user/v01d4lph4)
2021-11-03 00:37:26 +0100v01d4lph4(~v01d4lph4@user/v01d4lph4) (Ping timeout: 260 seconds)
2021-11-03 00:37:40 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-11-03 00:37:40 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Changing host)
2021-11-03 00:37:41 +0100wroathe(~wroathe@user/wroathe)
2021-11-03 00:39:49 +0100waleee(~waleee@h-98-128-228-119.NA.cust.bahnhof.se)
2021-11-03 00:41:22 +0100machinedgod(~machinedg@135-23-192-217.cpe.pppoe.ca) (Remote host closed the connection)
2021-11-03 00:42:31 +0100machinedgod(~machinedg@135-23-192-217.cpe.pppoe.ca)
2021-11-03 00:47:01 +0100Jing(~textual@2604:a840:3::1021) (Remote host closed the connection)
2021-11-03 00:47:35 +0100Jing(~textual@2604:a840:3::1021)
2021-11-03 00:51:28 +0100dsamperi(~dsamperi@2603-7000-3b42-5400-c881-7958-2102-07bc.res6.spectrum.com)
2021-11-03 00:56:31 +0100burnsidesLlama(~burnsides@dhcp168-013.wadham.ox.ac.uk) (Remote host closed the connection)
2021-11-03 00:58:18 +0100bitdex(~bitdex@gateway/tor-sasl/bitdex)
2021-11-03 01:01:59 +0100 <dsal> One thing that came up in this discussion is the (,) Foldable. Is there actually a good use case for that? It's super easy to confuse people at least.
2021-11-03 01:02:24 +0100waleee(~waleee@h-98-128-228-119.NA.cust.bahnhof.se) (Ping timeout: 268 seconds)
2021-11-03 01:02:43 +0100 <geekosaur> that one keeps coming up
2021-11-03 01:02:50 +0100 <geekosaur> > length (1,'a')
2021-11-03 01:02:51 +0100 <lambdabot> 1
2021-11-03 01:02:59 +0100 <boxscape_> not even sure (,) should have a Functor instance in base
2021-11-03 01:03:24 +0100 <boxscape_> (especially considering it has a Bifunctor instance)
2021-11-03 01:03:29 +0100 <monochrom> That one I agree is more confusing than useful.
2021-11-03 01:03:47 +0100 <dsal> Some things are debatable, but I'm wondering if what the "yes, this is a good idea" argument sounds like.
2021-11-03 01:04:03 +0100 <dsal> Functor *sort of* makes sense.
2021-11-03 01:04:13 +0100waleee(~waleee@h-98-128-228-119.NA.cust.bahnhof.se)
2021-11-03 01:04:34 +0100 <dsal> It's only mildly surprising, that is.
2021-11-03 01:04:49 +0100 <awpr> best thing I can come up with is, it can have the instance, and that's the only thing the instance could possibly do, so it may as well be provided
2021-11-03 01:05:21 +0100 <dsal> Scientists were so worried about what instances they could make that they never stopped to think about whether they should.
2021-11-03 01:05:22 +0100 <geekosaur> that's more or less the only argument for I've ever heard
2021-11-03 01:05:26 +0100 <awpr> I guess it could be `toList = const []`
2021-11-03 01:05:36 +0100 <boxscape_> it also means you can use (,) in functions that expect a functor, but then, you could also use Joker + Bifunctor instance for that (but Joker's not in base)
2021-11-03 01:05:47 +0100 <dsal> What's Joker?
2021-11-03 01:05:57 +0100 <awpr> `toList (a, b) = [unsafeCoerce a, b]`
2021-11-03 01:06:02 +0100 <boxscape_> https://hackage.haskell.org/package/bifunctors-5.5.11/docs/Data-Bifunctor-Joker.html
2021-11-03 01:06:02 +0100jespada_(~jespada@190.7.36.46) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2021-11-03 01:06:13 +0100 <boxscape_> it extracts the right Functor/Foldable from a Bifunctor/-foldable
2021-11-03 01:06:28 +0100 <dsal> Ah, that's neat.
2021-11-03 01:06:42 +0100 <dsal> Why did they name the arguments `a` and `b`? That's obviously wrong.
2021-11-03 01:06:54 +0100 <monochrom> To argue for it, I would start with "(,) W is the Writer W monad" so it's also a container of size 1 but oh it also has a W value piggybacked.
2021-11-03 01:07:24 +0100 <dsal> Is that arguing for Functor or Foldable?
2021-11-03 01:08:00 +0100 <monochrom> Functor, Foldable, all the way to Traversable too. I used the "container" wording. :)
2021-11-03 01:08:19 +0100 <dsal> Ah. So the same reason Maybe is.
2021-11-03 01:08:49 +0100 <awpr> Maybe is actually fairly useful now and then
2021-11-03 01:09:03 +0100 <dsal> > length Nothing
2021-11-03 01:09:04 +0100 <lambdabot> 0
2021-11-03 01:09:04 +0100 <awpr> > foldMap show (Just 42 :: Maybe Int)
2021-11-03 01:09:06 +0100 <lambdabot> "42"
2021-11-03 01:09:11 +0100 <awpr> > foldMap show Nothing
2021-11-03 01:09:12 +0100 <lambdabot> ""
2021-11-03 01:09:22 +0100 <dsal> Yeah, Maybe doesn't surprise.
2021-11-03 01:09:28 +0100 <geekosaur> yeh, the Maybe instance treated as a list of at most one element has precedent
2021-11-03 01:09:37 +0100 <dsal> Until it returns 2.
2021-11-03 01:09:59 +0100 <awpr> I've seen some writing distinguish "left-biased sums/products" from "symmetric sums/products"
2021-11-03 01:10:29 +0100 <awpr> the Foldable instance of `(,) a` treats it as left-biased, but people probably intuitively thing of it as symmetric
2021-11-03 01:10:37 +0100 <awpr> think*
2021-11-03 01:11:34 +0100 <dsal> I'm not familiar with that terminology.
2021-11-03 01:11:35 +0100 <monochrom> Right, we think of (,) as unbiased, whereas if I say "Writer" you expect it to be biased. That's where the surprise comes from.
2021-11-03 01:12:24 +0100 <awpr> like `data WithBonusValue x a = WithBonusValue x a` having a `Foldable` instance with length 1 shouldn't be as surprising, because it's seen as focused on the `a`, but has an extra `x` too
2021-11-03 01:13:07 +0100 <dsal> Yeah, that's how I look at most of the (,) instances. I guess people just have words for those things. :)
2021-11-03 01:13:58 +0100 <boxscape_> dsal actually I take it back - as it is currently set up, Joker relies on the existing Functor/Foldable instance to extract it
2021-11-03 01:16:46 +0100eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
2021-11-03 01:20:20 +0100 <boxscape_> tbh I'm just confused by instance Functor (Clown f a), which ignores the function argument ( https://hackage.haskell.org/package/bifunctors-5.5.11/docs/src/Data.Bifunctor.Clown.html#line-167 ) - I suppose I should read the original paper
2021-11-03 01:21:01 +0100 <awpr> looks to me like those two lift normal Functors to Bifunctors that are phantom in their left or right argument
2021-11-03 01:21:21 +0100sciencentistguy(~sciencent@hacksoc/ordinary-member)
2021-11-03 01:21:31 +0100Lord_of_Life(~Lord@user/lord-of-life/x-2819915) (Ping timeout: 268 seconds)
2021-11-03 01:21:47 +0100Lord_of_Life(~Lord@user/lord-of-life/x-2819915)
2021-11-03 01:21:47 +0100 <awpr> so the Functor instance of Clown would ignore its argument because the rightmost parameter (the one Functor cares about) is the one that's phanto
2021-11-03 01:21:48 +0100 <awpr> m
2021-11-03 01:22:44 +0100myShoggoth(~myShoggot@97-120-85-195.ptld.qwest.net) (Ping timeout: 268 seconds)
2021-11-03 01:22:48 +0100 <boxscape_> but it's tagline is "Make a Functor over the first argument of a Bifunctor" - it doesn't seem like it does that
2021-11-03 01:22:51 +0100 <awpr> https://hackage.haskell.org/package/bifunctors-5.5.11/docs/Data-Bifunctor-Wrapped.html#t:WrappedBi… is the other direction
2021-11-03 01:22:59 +0100 <awpr> yeah, the tagline looks wrong
2021-11-03 01:23:20 +0100 <awpr> unless they have very weird definitions of "make", "over", and "first" or something
2021-11-03 01:23:27 +0100 <shapr> Is there a quickcheck instance for Data.Set somewhere?
2021-11-03 01:26:27 +0100 <dsal> shapr: I thought I'd find it in https://hackage.haskell.org/package/quickcheck-instances but doesn't seem to.
2021-11-03 01:26:43 +0100 <shapr> dsal: I thought that oo
2021-11-03 01:26:46 +0100 <shapr> turns out it wasn't
2021-11-03 01:26:47 +0100 <dsal> arbitrary = Set.fromList <$> listOf arbitrary
2021-11-03 01:26:51 +0100 <dsal> And then, you know, shrink.
2021-11-03 01:27:19 +0100 <dsal> Handwaving shrink is important because that's the easy part.
2021-11-03 01:28:30 +0100adium(adium@user/adium) (Quit: Stable ZNC by #bnc4you)
2021-11-03 01:28:58 +0100 <dsal> I guess it's just something like `shrink = fmap Set.fromList . shrink . Set.toList`
2021-11-03 01:32:46 +0100 <boxscape_> hm okay so the actual way to extract the right functor is WrapBifunctor as awpr said and then to extract the left one you'd have to do WrapBifunctor . Flip
2021-11-03 01:36:42 +0100waleee(~waleee@h-98-128-228-119.NA.cust.bahnhof.se) (Ping timeout: 260 seconds)
2021-11-03 01:45:59 +0100waleee(~waleee@h-98-128-228-119.NA.cust.bahnhof.se)
2021-11-03 01:47:50 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-11-03 01:53:31 +0100eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
2021-11-03 01:55:25 +0100mmhat(~mmh@55d4a263.access.ecotel.net) (Ping timeout: 268 seconds)
2021-11-03 01:56:39 +0100waleee(~waleee@h-98-128-228-119.NA.cust.bahnhof.se) (Ping timeout: 268 seconds)
2021-11-03 01:57:31 +0100waleee(~waleee@2001:9b0:216:8200:d457:9189:7843:1dbd)
2021-11-03 01:59:50 +0100hiruji(~hiruji@user/hiruji) (Ping timeout: 268 seconds)
2021-11-03 02:02:04 +0100Null_A(~null_a@2601:645:8700:2290:91de:cb47:8eef:9a3e) (Remote host closed the connection)
2021-11-03 02:04:10 +0100waleee(~waleee@2001:9b0:216:8200:d457:9189:7843:1dbd) (Ping timeout: 260 seconds)
2021-11-03 02:04:15 +0100cigsender(~cigsender@74.124.58.162) (Quit: Lost terminal)
2021-11-03 02:05:28 +0100Null_A(~null_a@2601:645:8700:2290:91de:cb47:8eef:9a3e)
2021-11-03 02:06:12 +0100lavaman(~lavaman@98.38.249.169)
2021-11-03 02:07:34 +0100mmhat(~mmh@55d4a3df.access.ecotel.net)
2021-11-03 02:08:41 +0100Tuplanolla(~Tuplanoll@91-159-69-50.elisa-laajakaista.fi) (Quit: Leaving.)
2021-11-03 02:13:54 +0100hippoid(~idris@184.105.6.88) (Quit: Lost terminal)
2021-11-03 02:22:32 +0100myShoggoth(~myShoggot@97-120-85-195.ptld.qwest.net)
2021-11-03 02:22:34 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 268 seconds)
2021-11-03 02:34:55 +0100hiruji(~hiruji@user/hiruji)
2021-11-03 02:35:27 +0100emanuele6(~emanuele6@user/emanuele6) (Read error: No route to host)
2021-11-03 02:35:49 +0100retroid_(~retro@2e41e9c8.skybroadband.com)
2021-11-03 02:36:54 +0100acidsys(~LSD@2.lsd.systems) (Excess Flood)
2021-11-03 02:37:29 +0100acidsys(~LSD@2.lsd.systems)
2021-11-03 02:39:12 +0100retro_(~retro@2e41e9c8.skybroadband.com) (Ping timeout: 268 seconds)
2021-11-03 02:40:53 +0100euouae(~euouae@user/euouae)
2021-11-03 02:40:56 +0100 <euouae> Hello
2021-11-03 02:41:09 +0100 <euouae> Are the hackage packages signed?
2021-11-03 02:42:01 +0100bitmapper(uid464869@id-464869.lymington.irccloud.com)
2021-11-03 02:42:02 +0100 <Axman6> there is some sort of signing mechanism but I don't know much about it. I don't think they are signed by the authors (stackage does allow that)
2021-11-03 02:43:05 +0100 <euouae> https://www.stackage.org/lts-18.14/package/base-4.14.3.0 For example, what is the signature here and how can it be pulled up?
2021-11-03 02:43:08 +0100 <Axman6> https://github.com/haskell/hackage-security is pretty relevant
2021-11-03 02:44:14 +0100 <euouae> Axman6 thanks. It seems that there is plenty of work for many projects to do related to TUF
2021-11-03 02:44:39 +0100 <euouae> In some sense, it's encouraging. I'm learning about crypto and stuff now and if I could participate in such a project it would be nice
2021-11-03 02:46:10 +0100kawpuh1kawpuh
2021-11-03 02:48:24 +0100hueso(~root@user/hueso) (Quit: No Ping reply in 180 seconds.)
2021-11-03 02:49:36 +0100hueso(~root@user/hueso)
2021-11-03 02:49:54 +0100jonathanclarke(~jonathanc@202.51.76.91) (Ping timeout: 260 seconds)
2021-11-03 02:50:34 +0100Jing(~textual@2604:a840:3::1021) (Remote host closed the connection)
2021-11-03 02:51:13 +0100Jing(~textual@2604:a840:3::1021)
2021-11-03 02:57:06 +0100hiruji(~hiruji@user/hiruji) (Ping timeout: 268 seconds)
2021-11-03 02:57:54 +0100MQ-17J(~MQ-17J@d192-24-122-179.try.wideopenwest.com) (Read error: Connection reset by peer)
2021-11-03 02:58:30 +0100MQ-17J(~MQ-17J@8.6.144.203)
2021-11-03 03:01:59 +0100jonathanclarke(~jonathanc@202.51.76.91)
2021-11-03 03:02:42 +0100hiruji(~hiruji@user/hiruji)
2021-11-03 03:03:34 +0100 <euouae> Or at least be able to observe the progress & apply the security when available. Thanks for the response.
2021-11-03 03:03:37 +0100euouae(~euouae@user/euouae) (Quit: )
2021-11-03 03:04:18 +0100mmhat(~mmh@55d4a3df.access.ecotel.net) (Quit: WeeChat 3.3)
2021-11-03 03:04:18 +0100MQ-17J(~MQ-17J@8.6.144.203) (Read error: Connection reset by peer)
2021-11-03 03:04:29 +0100MQ-17J(~MQ-17J@8.6.144.203)
2021-11-03 03:04:31 +0100emanuele6(~emanuele6@net-2-36-98-113.cust.vodafonedsl.it)
2021-11-03 03:04:51 +0100emanuele6(~emanuele6@net-2-36-98-113.cust.vodafonedsl.it) (Changing host)
2021-11-03 03:04:51 +0100emanuele6(~emanuele6@user/emanuele6)
2021-11-03 03:07:59 +0100tremon(~tremon@217-63-61-89.cable.dynamic.v4.ziggo.nl) (Quit: getting boxed in)
2021-11-03 03:09:25 +0100MQ-17J(~MQ-17J@8.6.144.203) (Ping timeout: 268 seconds)
2021-11-03 03:11:44 +0100MQ-17J(~MQ-17J@d192-24-122-179.try.wideopenwest.com)
2021-11-03 03:13:07 +0100sciencentistguy(~sciencent@hacksoc/ordinary-member) (Ping timeout: 268 seconds)
2021-11-03 03:14:59 +0100hiruji(~hiruji@user/hiruji) (Ping timeout: 268 seconds)
2021-11-03 03:18:52 +0100fvr(uid503686@id-503686.uxbridge.irccloud.com)
2021-11-03 03:20:42 +0100MQ-17J(~MQ-17J@d192-24-122-179.try.wideopenwest.com) (Ping timeout: 260 seconds)
2021-11-03 03:21:09 +0100brettgilio(~brettgili@x-node.gq) (Quit: Leaving...)
2021-11-03 03:22:21 +0100brettgilio(~brettgili@x-node.gq)
2021-11-03 03:23:15 +0100MQ-17J(~MQ-17J@d192-24-122-179.try.wideopenwest.com)
2021-11-03 03:24:19 +0100sprout_(~quassel@2a02:a467:ccd6:1:58cd:ccc2:f66c:e3b)
2021-11-03 03:25:50 +0100sprout(~quassel@2a02:a467:ccd6:1:8872:6fff:30a7:51e0) (Ping timeout: 260 seconds)
2021-11-03 03:28:34 +0100Null_A(~null_a@2601:645:8700:2290:91de:cb47:8eef:9a3e) (Remote host closed the connection)
2021-11-03 03:29:39 +0100[itchyjunk](~itchyjunk@user/itchyjunk/x-7353470) (Remote host closed the connection)
2021-11-03 03:31:18 +0100pretty_dumm_guy(trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) (Quit: WeeChat 3.3)
2021-11-03 03:31:59 +0100hiruji(~hiruji@user/hiruji)
2021-11-03 03:46:04 +0100LiaoTao(~LiaoTao@gateway/tor-sasl/liaotao) (Remote host closed the connection)
2021-11-03 03:47:16 +0100LiaoTao(~LiaoTao@gateway/tor-sasl/liaotao)
2021-11-03 03:49:31 +0100xff0x(~xff0x@port-92-195-109-25.dynamic.as20676.net) (Ping timeout: 268 seconds)
2021-11-03 03:51:08 +0100xff0x(~xff0x@2001:1a81:53fb:b000:b58d:2078:260f:228a)
2021-11-03 03:51:21 +0100myShoggoth(~myShoggot@97-120-85-195.ptld.qwest.net) (Ping timeout: 268 seconds)
2021-11-03 03:52:04 +0100yauhsien(~yauhsien@61-231-61-245.dynamic-ip.hinet.net)
2021-11-03 03:54:24 +0100juhp(~juhp@128.106.188.220) (Quit: juhp)
2021-11-03 03:54:38 +0100juhp(~juhp@128.106.188.220)
2021-11-03 03:56:55 +0100yauhsien(~yauhsien@61-231-61-245.dynamic-ip.hinet.net) (Ping timeout: 268 seconds)
2021-11-03 03:59:11 +0100shapr(~user@pool-100-36-247-68.washdc.fios.verizon.net) (Ping timeout: 264 seconds)
2021-11-03 04:01:13 +0100neurocyte0132889(~neurocyte@user/neurocyte) (Ping timeout: 268 seconds)
2021-11-03 04:01:51 +0100catman(~catman@user/catman) (Ping timeout: 268 seconds)
2021-11-03 04:03:24 +0100catman(~catman@user/catman)
2021-11-03 04:10:16 +0100alx741(~alx741@186.178.109.189) (Quit: alx741)
2021-11-03 04:11:23 +0100mbuf(~Shakthi@122.173.251.242)
2021-11-03 04:11:47 +0100adium(adium@user/adium)
2021-11-03 04:12:56 +0100catman(~catman@user/catman) (Ping timeout: 268 seconds)
2021-11-03 04:16:06 +0100catman(~catman@user/catman)
2021-11-03 04:16:32 +0100catman(~catman@user/catman) (Client Quit)
2021-11-03 04:17:34 +0100catman(~catman@user/catman)
2021-11-03 04:17:43 +0100dsamperi(~dsamperi@2603-7000-3b42-5400-c881-7958-2102-07bc.res6.spectrum.com) (Quit: Konversation terminated!)
2021-11-03 04:18:07 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-11-03 04:18:20 +0100mishugana(~mishugana@user/mishugana)
2021-11-03 04:18:31 +0100hiruji(~hiruji@user/hiruji) (Quit: ZNC 1.8.2 - https://znc.in)
2021-11-03 04:18:43 +0100 <mishugana> Hello, does anybody have a quick small review of "Practical Programming" by Serrano Mena?
2021-11-03 04:18:55 +0100hiruji(~hiruji@user/hiruji)
2021-11-03 04:20:17 +0100 <mishugana> Just for a quick background, I have "Programming in Haskell" by Hutton under my belt, and was looking for the next step up. I don't know what I don't know (I have Diehl's list of todos handy, but bear with me), but if I had to choose one, I'm having trouble moving up to, say, Monad Transformers. They all start off with "lift", which Hutton's book did not cover.
2021-11-03 04:21:10 +0100 <mishugana> I looked at the ToC for Serrano Mena's book, and it looks comprehensive while introducing one to the library ecosystem at the same time, but I have a nagging feeling that there is something missing between Hutton's book and Serrano Mena's book? Am I wrong?
2021-11-03 04:21:41 +0100 <dsal> mishugana: Do you have any software you're working on?
2021-11-03 04:21:48 +0100 <dsal> Some of this stuff just becomes obvious as you find you need it.
2021-11-03 04:21:51 +0100 <mishugana> By the way, I looked at the haskell programming from first principles book, but I couldnt' abide the long-winded seemingly-unnecessary verbose style
2021-11-03 04:22:02 +0100 <dsal> @hoogle [a] -> [[a]] -> [[a]]
2021-11-03 04:22:03 +0100 <lambdabot> No results found
2021-11-03 04:22:12 +0100machinedgod(~machinedg@135-23-192-217.cpe.pppoe.ca) (Ping timeout: 268 seconds)
2021-11-03 04:22:21 +0100 <mishugana> dsal: Nothing in particular right now, but I would like to use Haskell for exploratory compiler writing in the future, as a start, say
2021-11-03 04:22:50 +0100 <mishugana> About Will Kurt's book, I didn't like that either, and it doesn't cover Monad Transformers either
2021-11-03 04:23:20 +0100 <mishugana> I tried reading the Haskell Wiki, but again, they mention "lift" right from the get go, and I could look that up, but looking for a more cohesive approach
2021-11-03 04:24:49 +0100 <monochrom> For monad transformer, I would try the Typeclassopedia and/or the Haskell Wikibook (not to be confused with the Haskell Wiki)
2021-11-03 04:24:52 +0100 <mishugana> I loved Hutton's book and his style, by the way, and wish he'd written the next step up as well :(
2021-11-03 04:24:58 +0100 <dsal> I can't really learn stuff without doing stuff. Some of these concepts I read through and didn't really get until that one day when I was trying to do a thing and remembered that concept I read about back in the day and went back to review it.
2021-11-03 04:25:31 +0100 <monochrom> The Haskell Wiki is known to be written for author self-gratification not readership benefit.
2021-11-03 04:25:49 +0100 <mishugana> dsal: that makes sense, and to a great extent, applies to me as well. However, you mention connecting your practical experience with the theory you'd read sometime back - is that from book(s) or from the wiki/misc. resources?
2021-11-03 04:25:58 +0100 <mishugana> monochrom: hahaha
2021-11-03 04:26:16 +0100 <mishugana> yes, it does seem to be like that in places, I suppose
2021-11-03 04:27:15 +0100 <mishugana> That's why I was wondering if anyone had worked through the "Practical Haskell" book - I don't mind doing extra legwork in parallel, but wondering how people's experience with it went
2021-11-03 04:27:20 +0100 <dsal> mishugana: Not even sure. I've read the Hutton book, and HPFFP and some specific topics stuff like Penner's Optics book and MacGuire's "Thinking with Types" and random topics people bring up and stuff. Many of those are just words that pass through me until that time I need them.
2021-11-03 04:27:33 +0100 <mishugana> dsal: Hmmm
2021-11-03 04:28:18 +0100 <mishugana> Interestingly, I've bookmarked "The Monad Book" and "Thinking with Types" for future reading since I do wish to learn the theoretical/mathematical side of it, but after getting to at least an intermediate "practical" Haskell programmer :)
2021-11-03 04:28:41 +0100trillp(~trillp@69.233.98.238) (Quit: nyaa~)
2021-11-03 04:28:55 +0100 <dsal> I learn more from just writing and maintaining programs.
2021-11-03 04:29:55 +0100Ram-Z(~Ram-Z@li1814-254.members.linode.com) (Ping timeout: 260 seconds)
2021-11-03 04:35:26 +0100Ram-Z(~Ram-Z@li1814-254.members.linode.com)
2021-11-03 04:41:20 +0100sprout_(~quassel@2a02:a467:ccd6:1:58cd:ccc2:f66c:e3b) (Quit: https://quassel-irc.org - Chat comfortably. Anywhere.)
2021-11-03 04:41:37 +0100sprout(~quassel@2a02:a467:ccd6:1:58cd:ccc2:f66c:e3b)
2021-11-03 04:44:25 +0100 <sm> @where books
2021-11-03 04:44:25 +0100 <lambdabot> https://www.extrema.is/articles/haskell-books, see also @where LYAH, RWH, YAHT, SOE, HR, PIH, TFwH, wikibook, PCPH, HPFFP, HTAC, TwT, FoP, PFAD, WYAH, non-haskell-books
2021-11-03 04:44:25 +0100 <sm> might have some other options
2021-11-03 04:45:14 +0100 <sm> you sound a bit past HTAC, though I think it has some good practical stuff too
2021-11-03 04:45:37 +0100FinnElija(~finn_elij@user/finn-elija/x-0085643) (Ping timeout: 268 seconds)
2021-11-03 04:49:44 +0100boxscape_(~boxscape_@i59F67A65.versanet.de) (Quit: Connection closed)
2021-11-03 04:50:18 +0100 <mishugana> sm: Thank you for that list!
2021-11-03 04:50:46 +0100 <mishugana> I just checked HTAC. It's by Mark Watson, the Lisper - this guy is prolific!
2021-11-03 04:51:48 +0100 <mishugana> sm: Very useful list. Thank you yet again - I haven't seen quite a few of those books anywhere during my "research"
2021-11-03 04:52:14 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 260 seconds)
2021-11-03 04:52:30 +0100bitdex(~bitdex@gateway/tor-sasl/bitdex) (Ping timeout: 276 seconds)
2021-11-03 04:54:23 +0100econo(uid147250@user/econo) (Quit: Connection closed for inactivity)
2021-11-03 04:54:56 +0100bitdex(~bitdex@gateway/tor-sasl/bitdex)
2021-11-03 04:57:57 +0100wroathe(~wroathe@user/wroathe) (Ping timeout: 268 seconds)
2021-11-03 04:59:44 +0100dsamperi(~dsamperi@2603-7000-3b42-5400-c881-7958-2102-07bc.res6.spectrum.com)
2021-11-03 05:00:10 +0100bitdex(~bitdex@gateway/tor-sasl/bitdex) (Quit: = "")
2021-11-03 05:00:19 +0100dsamperi(~dsamperi@2603-7000-3b42-5400-c881-7958-2102-07bc.res6.spectrum.com) (Client Quit)
2021-11-03 05:07:16 +0100 <sm> yes, HTAC is great (and so is extrema.is books list, except hard to find)
2021-11-03 05:13:23 +0100v01d4lph4(~v01d4lph4@106.215.93.204)
2021-11-03 05:13:23 +0100v01d4lph4(~v01d4lph4@106.215.93.204) (Changing host)
2021-11-03 05:13:23 +0100v01d4lph4(~v01d4lph4@user/v01d4lph4)
2021-11-03 05:14:00 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-11-03 05:14:00 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Changing host)
2021-11-03 05:14:00 +0100wroathe(~wroathe@user/wroathe)
2021-11-03 05:15:00 +0100 <Axman6> just had my mind blown by not finding any haskell package which fully represents KMLs
2021-11-03 05:18:46 +0100wroathe(~wroathe@user/wroathe) (Ping timeout: 260 seconds)
2021-11-03 05:20:40 +0100jle`(~jle`@2603-8001-3b02-84d4-0000-0000-0000-025d.res6.spectrum.com)
2021-11-03 05:20:45 +0100bitdex(~bitdex@gateway/tor-sasl/bitdex)
2021-11-03 05:21:06 +0100jle`(~jle`@2603-8001-3b02-84d4-0000-0000-0000-025d.res6.spectrum.com) ()
2021-11-03 05:22:47 +0100Axman6348(~Axman6@user/axman6)
2021-11-03 05:24:06 +0100 <dsal> I've done enough work in that area that I just got annoyed by it without my mind being blown.
2021-11-03 05:24:57 +0100 <dsal> Axman6: here's my Very Good implementation: https://github.com/dustin/heatmap/blob/main/src/Graphics/Heatmap/KML.hs
2021-11-03 05:25:27 +0100Axman6(~Axman6@user/axman6) (Ping timeout: 260 seconds)
2021-11-03 05:25:42 +0100geekosaur(~geekosaur@xmonad/geekosaur) (Ping timeout: 268 seconds)
2021-11-03 05:27:56 +0100jle`(~jle`@2603-8001-3b02-84d4-0000-0000-0000-025d.res6.spectrum.com)
2021-11-03 05:27:56 +0100MQ-17J(~MQ-17J@d192-24-122-179.try.wideopenwest.com) (Read error: Connection reset by peer)
2021-11-03 05:28:19 +0100geekosaur(~geekosaur@xmonad/geekosaur)
2021-11-03 05:29:00 +0100MQ-17J(~MQ-17J@d192-24-122-179.try.wideopenwest.com)
2021-11-03 05:29:38 +0100Axman6348Axman6
2021-11-03 05:31:05 +0100 <Axman6> ha
2021-11-03 05:31:24 +0100MQ-17J(~MQ-17J@d192-24-122-179.try.wideopenwest.com) (Read error: Connection reset by peer)
2021-11-03 05:31:31 +0100MQ-17J(~MQ-17J@2607:fb90:1d84:6382:7ad7:ddcd:c10b:ea3e)
2021-11-03 05:31:55 +0100MQ-17J(~MQ-17J@2607:fb90:1d84:6382:7ad7:ddcd:c10b:ea3e) (Read error: Connection reset by peer)
2021-11-03 05:32:15 +0100MQ-17J(~MQ-17J@d192-24-122-179.try.wideopenwest.com)
2021-11-03 05:32:21 +0100jle`(~jle`@2603-8001-3b02-84d4-0000-0000-0000-025d.res6.spectrum.com) (Client Quit)
2021-11-03 05:32:36 +0100mishugana(~mishugana@user/mishugana) ()
2021-11-03 05:32:51 +0100wei2912(~wei2912@138.75.71.147)
2021-11-03 05:35:03 +0100jle`(~jle`@2603-8001-3b02-84d4-0000-0000-0000-025d.res6.spectrum.com)
2021-11-03 05:39:18 +0100MQ-17J(~MQ-17J@d192-24-122-179.try.wideopenwest.com) (Ping timeout: 260 seconds)
2021-11-03 05:39:39 +0100wei2912(~wei2912@138.75.71.147) (Quit: Lost terminal)
2021-11-03 05:40:57 +0100wei2912(~wei2912@138.75.71.147)
2021-11-03 05:43:11 +0100MQ-17J(~MQ-17J@d192-24-122-179.try.wideopenwest.com)
2021-11-03 05:44:33 +0100 <jle`> woo hoo i upgraded everything and can finally build ghc 9+
2021-11-03 05:44:37 +0100 <jle`> just in time for 9.2
2021-11-03 05:45:56 +0100 <jle`> okay um, is there a cabal equivalent for 'stack new' that sets up a skeleton project?
2021-11-03 05:46:18 +0100 <sclv> cabal init
2021-11-03 05:47:05 +0100 <Axman6> does that actually give you anything?
2021-11-03 05:47:10 +0100 <jle`> ah the docs say it only sets up the package file
2021-11-03 05:47:13 +0100 <jle`> but i can try it
2021-11-03 05:47:43 +0100 <Axman6> stack new is the mean feature I miss from stack
2021-11-03 05:48:07 +0100 <Axman6> main*
2021-11-03 05:48:12 +0100 <sclv> for richer projects there’s dedicated tools like summoner
2021-11-03 05:48:32 +0100 <jle`> ooh it made the whole skeleton, neat
2021-11-03 05:48:35 +0100 <jle`> thanks!
2021-11-03 05:48:38 +0100 <Axman6> oh yeah, summoner is great, but not sure if it's up to date
2021-11-03 05:48:47 +0100 <Axman6> check out summoner-tui too
2021-11-03 05:49:38 +0100 <jle`> ooh that's neat
2021-11-03 05:49:40 +0100 <jle`> it generates licenses too
2021-11-03 05:52:03 +0100kronicmage(user3131@neotame.csclub.uwaterloo.ca) (Ping timeout: 265 seconds)
2021-11-03 05:52:27 +0100kronicmage(user28253@neotame.csclub.uwaterloo.ca)
2021-11-03 05:53:41 +0100MQ-17J(~MQ-17J@d192-24-122-179.try.wideopenwest.com) (Remote host closed the connection)
2021-11-03 05:54:08 +0100MQ-17J(~MQ-17J@d192-24-122-179.try.wideopenwest.com)
2021-11-03 05:54:10 +0100MQ-17J(~MQ-17J@d192-24-122-179.try.wideopenwest.com) (Remote host closed the connection)
2021-11-03 05:55:17 +0100MQ-17J(~MQ-17J@d192-24-122-179.try.wideopenwest.com)
2021-11-03 05:55:30 +0100MQ-17J(~MQ-17J@d192-24-122-179.try.wideopenwest.com) (Remote host closed the connection)
2021-11-03 05:56:00 +0100dyeplexer(~dyeplexer@user/dyeplexer)
2021-11-03 05:56:12 +0100fvr(uid503686@id-503686.uxbridge.irccloud.com) (Quit: Connection closed for inactivity)
2021-11-03 05:59:18 +0100MQ-17J(~MQ-17J@d192-24-122-179.try.wideopenwest.com)
2021-11-03 06:17:13 +0100shidima(~shidima@84-104-108-90.cable.dynamic.v4.ziggo.nl)
2021-11-03 06:25:32 +0100azeem(~azeem@2a00:801:3c9:cf16:6d84:9e6f:3c27:1ca6) (Ping timeout: 268 seconds)
2021-11-03 06:35:02 +0100azeem(~azeem@2a00:801:3c9:cf16:6d84:9e6f:3c27:1ca6)
2021-11-03 06:49:17 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-11-03 06:55:44 +0100geekosaur(~geekosaur@xmonad/geekosaur) (Ping timeout: 268 seconds)
2021-11-03 06:57:10 +0100desophos(~desophos@2601:249:1680:a570:fd0e:5698:a1d9:2696)
2021-11-03 06:58:31 +0100geekosaur(~geekosaur@xmonad/geekosaur)
2021-11-03 07:01:26 +0100yauhsien(~yauhsien@61-231-61-245.dynamic-ip.hinet.net)
2021-11-03 07:05:09 +0100slowButPresent(~slowButPr@user/slowbutpresent) (Quit: leaving)
2021-11-03 07:06:23 +0100yauhsien(~yauhsien@61-231-61-245.dynamic-ip.hinet.net) (Ping timeout: 264 seconds)
2021-11-03 07:08:49 +0100chomwitt(~chomwitt@2a02:587:dc02:9f00:12c3:7bff:fe6d:d374)
2021-11-03 07:14:17 +0100fvr(uid503686@id-503686.uxbridge.irccloud.com)
2021-11-03 07:16:17 +0100Core5109(~Core5109@47.245.54.240)
2021-11-03 07:22:26 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 260 seconds)
2021-11-03 07:28:30 +0100LiaoTao(~LiaoTao@gateway/tor-sasl/liaotao) (Ping timeout: 276 seconds)
2021-11-03 07:28:39 +0100Guest|64(~Guest|64@cpe688f2ec6dd93-cm688f2ec6dd90.cpe.net.fido.ca)
2021-11-03 07:29:05 +0100Guest|64(~Guest|64@cpe688f2ec6dd93-cm688f2ec6dd90.cpe.net.fido.ca) (Client Quit)
2021-11-03 07:30:05 +0100kadir(~kadir@95.7.9.203)
2021-11-03 07:30:23 +0100kadir(~kadir@95.7.9.203) ()
2021-11-03 07:32:04 +0100LiaoTao(~LiaoTao@gateway/tor-sasl/liaotao)
2021-11-03 07:32:40 +0100jtomas(~jtomas@95.red-88-11-64.dynamicip.rima-tde.net)
2021-11-03 07:38:18 +0100Guest|8(~Guest|8@c-75-73-118-185.hsd1.mn.comcast.net)
2021-11-03 07:39:59 +0100 <Guest|8> Trying to install ghcup and getting this error: [ Info ] verifying digest of: ghc-8.10.7-x86_64-apple-darwin.tar.xz
2021-11-03 07:40:00 +0100 <Guest|8> [ Info ] Unpacking: ghc-8.10.7-x86_64-apple-darwin.tar.xz to /private/var/folders/0h/xrg9b4ln6yd4rmgm5pdrb36c0000gn/T/ghcup-2849be2844e9b286
2021-11-03 07:40:00 +0100 <Guest|8> [ Info ] Installing GHC (this may take a while)
2021-11-03 07:40:01 +0100 <Guest|8> [ ghc-configure ] checking Xcode version... not found (too old?)
2021-11-03 07:40:01 +0100 <Guest|8> [ ghc-configure ] checking for gcc... gcc
2021-11-03 07:40:02 +0100 <Guest|8> [ ghc-configure ] checking whether the C compiler works... no
2021-11-03 07:40:02 +0100 <Guest|8> [ ghc-configure ] configure: error: in `/private/var/folders/0h/xrg9b4ln6yd4rmgm5pdrb36c0000gn/T/ghcu...
2021-11-03 07:40:03 +0100 <Guest|8> [ ghc-configure ] configure: error: C compiler cannot create executables
2021-11-03 07:40:03 +0100 <Guest|8> [ ghc-configure ] See `config.log' for more details
2021-11-03 07:40:04 +0100 <Guest|8> [ Error ] Process "sh" with arguments ["./configure",
2021-11-03 07:40:04 +0100 <Guest|8> [ ... ] "--prefix=/Users/jwb/.ghcup/ghc/8.10.7"] failed with exit code 77.
2021-11-03 07:40:05 +0100 <Guest|8> [ Error ] Also check the logs in /Users/jwb/.ghcup/logs
2021-11-03 07:40:05 +0100 <Guest|8> "_eghcup --cache install ghc recommended" failed!
2021-11-03 07:40:06 +0100 <Guest|8> sh-3.2$
2021-11-03 07:40:51 +0100 <Guest|8> Downloaded the dms file manually and adjusted my PATH, but cannot see how to actually activate it.
2021-11-03 07:42:48 +0100kupi(uid212005@id-212005.hampstead.irccloud.com) (Quit: Connection closed for inactivity)
2021-11-03 07:42:52 +0100 <Axman6> @where paste
2021-11-03 07:42:52 +0100 <lambdabot> Help us help you: please paste full code, input and/or output at e.g. https://paste.tomsmeding.com
2021-11-03 07:43:05 +0100 <Axman6> please don't paste multiple lines into IRC
2021-11-03 07:43:11 +0100kjak(~kjak@pool-108-45-56-21.washdc.fios.verizon.net)
2021-11-03 07:43:48 +0100 <Axman6> you probably need to install the Xcode command line tools
2021-11-03 07:44:08 +0100 <Axman6> try running xcode-select --install
2021-11-03 07:45:46 +0100v01d4lph4(~v01d4lph4@user/v01d4lph4) (Remote host closed the connection)
2021-11-03 07:46:52 +0100yauhsien(~yauhsien@61-231-61-245.dynamic-ip.hinet.net)
2021-11-03 07:54:13 +0100Lycurgus(~juan@98.4.112.204)
2021-11-03 08:01:43 +0100Guest|8(~Guest|8@c-75-73-118-185.hsd1.mn.comcast.net) (Ping timeout: 268 seconds)
2021-11-03 08:08:03 +0100desophos(~desophos@2601:249:1680:a570:fd0e:5698:a1d9:2696) (Quit: Leaving)
2021-11-03 08:10:00 +0100takuan(~takuan@178-116-218-225.access.telenet.be)
2021-11-03 08:16:19 +0100v01d4lph4(~v01d4lph4@106.215.93.204)
2021-11-03 08:16:19 +0100v01d4lph4(~v01d4lph4@106.215.93.204) (Changing host)
2021-11-03 08:16:19 +0100v01d4lph4(~v01d4lph4@user/v01d4lph4)
2021-11-03 08:18:20 +0100Gurkenglas(~Gurkengla@dslb-002-203-144-204.002.203.pools.vodafone-ip.de)
2021-11-03 08:21:27 +0100v01d4lph4(~v01d4lph4@user/v01d4lph4) (Ping timeout: 268 seconds)
2021-11-03 08:22:43 +0100fendor(~fendor@178.165.199.1.wireless.dyn.drei.com)
2021-11-03 08:23:53 +0100yauhsien(~yauhsien@61-231-61-245.dynamic-ip.hinet.net) (Remote host closed the connection)
2021-11-03 08:24:02 +0100kadir(~kadir@95.7.9.203)
2021-11-03 08:25:49 +0100gehmehgeh(~user@user/gehmehgeh)
2021-11-03 08:26:17 +0100yauhsien(~yauhsien@61-231-61-245.dynamic-ip.hinet.net)
2021-11-03 08:31:06 +0100yauhsien(~yauhsien@61-231-61-245.dynamic-ip.hinet.net) (Ping timeout: 260 seconds)
2021-11-03 08:36:15 +0100xff0x(~xff0x@2001:1a81:53fb:b000:b58d:2078:260f:228a) (Ping timeout: 268 seconds)
2021-11-03 08:38:43 +0100xff0x(~xff0x@2001:1a81:53fb:b000:b58d:2078:260f:228a)
2021-11-03 08:40:35 +0100chomwitt(~chomwitt@2a02:587:dc02:9f00:12c3:7bff:fe6d:d374) (Ping timeout: 268 seconds)
2021-11-03 08:41:25 +0100Sgeo_(~Sgeo@user/sgeo) (Read error: Connection reset by peer)
2021-11-03 08:42:03 +0100lbseale_(~lbseale@user/ep1ctetus)
2021-11-03 08:44:10 +0100lbseale(~lbseale@user/ep1ctetus) (Ping timeout: 260 seconds)
2021-11-03 08:45:12 +0100chele(~chele@user/chele)
2021-11-03 08:46:06 +0100lortabac(~lortabac@88.125.6.227)
2021-11-03 08:47:31 +0100michalz(~michalz@185.246.204.109)
2021-11-03 08:48:30 +0100wonko(~wjc@user/wonko)
2021-11-03 08:49:49 +0100fizzsegfaultbuzz(~segfaultf@135-180-0-138.static.sonic.net) (Ping timeout: 268 seconds)
2021-11-03 08:50:06 +0100v01d4lph4(~v01d4lph4@user/v01d4lph4)
2021-11-03 08:50:24 +0100LiaoTao(~LiaoTao@gateway/tor-sasl/liaotao) (Ping timeout: 276 seconds)
2021-11-03 08:51:16 +0100LiaoTao(~LiaoTao@gateway/tor-sasl/liaotao)
2021-11-03 08:51:20 +0100tomku(~tomku@user/tomku) (Ping timeout: 260 seconds)
2021-11-03 08:52:56 +0100max22-(~maxime@lfbn-ren-1-762-224.w81-53.abo.wanadoo.fr)
2021-11-03 08:53:32 +0100wonko(~wjc@user/wonko) (Ping timeout: 268 seconds)
2021-11-03 08:54:50 +0100v01d4lph4(~v01d4lph4@user/v01d4lph4) (Ping timeout: 260 seconds)
2021-11-03 08:59:36 +0100dhouthoo(~dhouthoo@178-117-36-167.access.telenet.be)
2021-11-03 09:00:27 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-11-03 09:05:28 +0100hendursa1(~weechat@user/hendursaga)
2021-11-03 09:07:14 +0100lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2021-11-03 09:08:05 +0100nattiestnate(~nate@2001:448a:20a0:4134:25e:715f:d637:5263)
2021-11-03 09:08:54 +0100TMA(tma@twin.jikos.cz) (Ping timeout: 260 seconds)
2021-11-03 09:09:07 +0100TMA(tma@twin.jikos.cz)
2021-11-03 09:09:15 +0100hendursaga(~weechat@user/hendursaga) (Ping timeout: 276 seconds)
2021-11-03 09:12:00 +0100jakalx(~jakalx@base.jakalx.net) ()
2021-11-03 09:14:40 +0100bitmapper(uid464869@id-464869.lymington.irccloud.com) (Quit: Connection closed for inactivity)
2021-11-03 09:15:47 +0100chomwitt(~chomwitt@ppp-2-85-245-90.home.otenet.gr)
2021-11-03 09:16:54 +0100geekosaur(~geekosaur@xmonad/geekosaur) (Read error: Connection reset by peer)
2021-11-03 09:17:35 +0100shidima(~shidima@84-104-108-90.cable.dynamic.v4.ziggo.nl) (Ping timeout: 268 seconds)
2021-11-03 09:17:51 +0100geekosaur(~geekosaur@xmonad/geekosaur)
2021-11-03 09:19:13 +0100yauhsien(~yauhsien@61-231-61-245.dynamic-ip.hinet.net)
2021-11-03 09:19:45 +0100cfricke(~cfricke@user/cfricke)
2021-11-03 09:24:22 +0100yauhsien(~yauhsien@61-231-61-245.dynamic-ip.hinet.net) (Ping timeout: 268 seconds)
2021-11-03 09:24:51 +0100gehmehgeh(~user@user/gehmehgeh) (Ping timeout: 276 seconds)
2021-11-03 09:25:32 +0100jakalx(~jakalx@base.jakalx.net)
2021-11-03 09:25:47 +0100gehmehgeh(~user@user/gehmehgeh)
2021-11-03 09:28:11 +0100shidima(~shidima@84-104-108-90.cable.dynamic.v4.ziggo.nl)
2021-11-03 09:30:41 +0100mc47(~mc47@xmonad/TheMC47)
2021-11-03 09:30:51 +0100eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
2021-11-03 09:31:14 +0100 <drownbes> mishugana: "haskell in depth" by Bragilevsky is really good book for going beyond basics
2021-11-03 09:32:10 +0100eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
2021-11-03 09:33:56 +0100 <drownbes> it explains prelove spells https://paste.tomsmeding.com/hGfXvJgv pretty well
2021-11-03 09:33:58 +0100fvr(uid503686@id-503686.uxbridge.irccloud.com) (Quit: Connection closed for inactivity)
2021-11-03 09:37:18 +0100betelgeuse(~betelgeus@94-225-47-8.access.telenet.be) (Ping timeout: 260 seconds)
2021-11-03 09:43:24 +0100Lycurgus(~juan@98.4.112.204) (Quit: Exeunt)
2021-11-03 09:44:33 +0100mmhat(~mmh@55d4baf7.access.ecotel.net)
2021-11-03 09:45:34 +0100mei(~mei@user/mei)
2021-11-03 09:47:46 +0100Feuermagier(~Feuermagi@user/feuermagier) (Remote host closed the connection)
2021-11-03 09:48:43 +0100mbuf(~Shakthi@122.173.251.242) (Quit: Leaving)
2021-11-03 09:52:04 +0100mbuf(~Shakthi@122.173.251.242)
2021-11-03 09:52:12 +0100trcc(~trcc@users-1190.st.net.au.dk)
2021-11-03 09:54:56 +0100p_____(~dyeplexer@user/dyeplexer)
2021-11-03 09:55:14 +0100p_____(~dyeplexer@user/dyeplexer) (Remote host closed the connection)
2021-11-03 09:56:12 +0100v01d4lph4(~v01d4lph4@user/v01d4lph4)
2021-11-03 09:58:17 +0100dyeplexer(~dyeplexer@user/dyeplexer) (Ping timeout: 268 seconds)
2021-11-03 10:00:08 +0100bakinonion[m](~bakinonio@2001:470:69fc:105::ddb3) (Quit: You have been kicked for being idle)
2021-11-03 10:00:48 +0100trcc_(~trcc@eduroam09.au.dk)
2021-11-03 10:00:59 +0100v01d4lph4(~v01d4lph4@user/v01d4lph4) (Ping timeout: 264 seconds)
2021-11-03 10:04:50 +0100trcc(~trcc@users-1190.st.net.au.dk) (Ping timeout: 260 seconds)
2021-11-03 10:05:31 +0100trcc_(~trcc@eduroam09.au.dk) (Ping timeout: 260 seconds)
2021-11-03 10:09:40 +0100shriekingnoise(~shrieking@186.137.144.80) (Quit: Quit)
2021-11-03 10:13:43 +0100nckxThunderbi
2021-11-03 10:14:08 +0100raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
2021-11-03 10:16:28 +0100azeem(~azeem@2a00:801:3c9:cf16:6d84:9e6f:3c27:1ca6) (Read error: Connection reset by peer)
2021-11-03 10:16:50 +0100Thunderbiguix-znc-test
2021-11-03 10:16:54 +0100guix-znc-testguix
2021-11-03 10:17:04 +0100azeem(~azeem@emp-89-199.eduroam.uu.se)
2021-11-03 10:18:25 +0100aplainzetakind(~johndoe@captainludd.powered.by.lunarbnc.net) (Quit: Free ZNC ~ Powered by LunarBNC: https://LunarBNC.net)
2021-11-03 10:19:09 +0100aplainzetakind(~johndoe@captainludd.powered.by.lunarbnc.net)
2021-11-03 10:19:44 +0100yauhsien(~yauhsien@61-231-61-245.dynamic-ip.hinet.net)
2021-11-03 10:21:49 +0100guixnckx
2021-11-03 10:22:19 +0100shidima(~shidima@84-104-108-90.cable.dynamic.v4.ziggo.nl) (Ping timeout: 268 seconds)
2021-11-03 10:22:21 +0100gawen(~gawen@user/gawen) (Quit: cya)
2021-11-03 10:23:41 +0100gawen(~gawen@user/gawen)
2021-11-03 10:24:23 +0100cfricke(~cfricke@user/cfricke) (Ping timeout: 264 seconds)
2021-11-03 10:24:32 +0100geekosaur(~geekosaur@xmonad/geekosaur) (Remote host closed the connection)
2021-11-03 10:24:47 +0100yauhsien(~yauhsien@61-231-61-245.dynamic-ip.hinet.net) (Ping timeout: 268 seconds)
2021-11-03 10:27:12 +0100geekosaur(~geekosaur@xmonad/geekosaur)
2021-11-03 10:27:30 +0100tzh(~tzh@c-24-21-73-154.hsd1.or.comcast.net) (Quit: zzz)
2021-11-03 10:29:36 +0100cfricke(~cfricke@user/cfricke)
2021-11-03 10:31:23 +0100cfricke(~cfricke@user/cfricke) (Client Quit)
2021-11-03 10:31:53 +0100ubert(~Thunderbi@p200300ecdf4fca4ae019fddc82d0353e.dip0.t-ipconnect.de)
2021-11-03 10:32:48 +0100mei(~mei@user/mei) (Ping timeout: 268 seconds)
2021-11-03 10:38:18 +0100eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
2021-11-03 10:39:48 +0100jtomas(~jtomas@95.red-88-11-64.dynamicip.rima-tde.net) (Remote host closed the connection)
2021-11-03 10:43:42 +0100nschoe(~quassel@178.251.84.79)
2021-11-03 10:51:29 +0100epolanski(uid312403@id-312403.helmsley.irccloud.com)
2021-11-03 10:53:46 +0100ubert(~Thunderbi@p200300ecdf4fca4ae019fddc82d0353e.dip0.t-ipconnect.de) (Ping timeout: 268 seconds)
2021-11-03 10:56:51 +0100raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 268 seconds)
2021-11-03 11:00:53 +0100trcc(~trcc@eduroam09.au.dk)
2021-11-03 11:03:51 +0100boxscape_(~boxscape_@134.171.69.87)
2021-11-03 11:04:56 +0100ubert(~Thunderbi@2a02:8109:9880:303c:ca5b:76ff:fe29:f233)
2021-11-03 11:05:56 +0100v01d4lph4(~v01d4lph4@user/v01d4lph4)
2021-11-03 11:07:49 +0100Techcable_(~Techcable@168.235.93.147)
2021-11-03 11:07:50 +0100unmanbearpig(~unmanbear@user/unmanbearpig) (Ping timeout: 260 seconds)
2021-11-03 11:08:38 +0100Techcable(~Techcable@168.235.93.147) (Ping timeout: 265 seconds)
2021-11-03 11:08:47 +0100jonathanx(~jonathan@dyn-8-sc.cdg.chalmers.se) (Remote host closed the connection)
2021-11-03 11:09:52 +0100jonathanx(~jonathan@dyn-8-sc.cdg.chalmers.se)
2021-11-03 11:09:54 +0100unmanbearpig(~unmanbear@user/unmanbearpig)
2021-11-03 11:11:02 +0100v01d4lph4(~v01d4lph4@user/v01d4lph4) (Ping timeout: 268 seconds)
2021-11-03 11:14:44 +0100jonathanx(~jonathan@dyn-8-sc.cdg.chalmers.se) (Ping timeout: 268 seconds)
2021-11-03 11:15:20 +0100raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
2021-11-03 11:16:10 +0100johnny_sitar(~artur@078088015209.bialystok.vectranet.pl)
2021-11-03 11:17:27 +0100lavaman(~lavaman@98.38.249.169)
2021-11-03 11:18:32 +0100thornAvery(~thornAver@2401:c080:1800:4346:5400:3ff:fe2c:c8f8) (Ping timeout: 268 seconds)
2021-11-03 11:19:45 +0100acidjnk_new(~acidjnk@p200300d0c726704340645b0c72496253.dip0.t-ipconnect.de)
2021-11-03 11:20:28 +0100jonathanx(~jonathan@dyn-8-sc.cdg.chalmers.se)
2021-11-03 11:21:50 +0100lavaman(~lavaman@98.38.249.169) (Ping timeout: 260 seconds)
2021-11-03 11:23:03 +0100trcc(~trcc@eduroam09.au.dk) (Remote host closed the connection)
2021-11-03 11:26:20 +0100alzgh(~alzgh@user/alzgh)
2021-11-03 11:28:32 +0100shidima(~shidima@84-104-108-90.cable.dynamic.v4.ziggo.nl)
2021-11-03 11:32:17 +0100wonko(~wjc@user/wonko)
2021-11-03 11:36:19 +0100johnny_sitar(~artur@078088015209.bialystok.vectranet.pl) (Ping timeout: 268 seconds)
2021-11-03 11:37:27 +0100max22-(~maxime@lfbn-ren-1-762-224.w81-53.abo.wanadoo.fr) (Remote host closed the connection)
2021-11-03 11:38:18 +0100max22-(~maxime@lfbn-ren-1-762-224.w81-53.abo.wanadoo.fr)
2021-11-03 11:38:57 +0100eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
2021-11-03 11:43:44 +0100eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 268 seconds)
2021-11-03 11:51:31 +0100johnny_sitar(~artur@078088015209.bialystok.vectranet.pl)
2021-11-03 11:51:45 +0100jonathanx(~jonathan@dyn-8-sc.cdg.chalmers.se) (Ping timeout: 268 seconds)
2021-11-03 11:52:15 +0100lavaman(~lavaman@98.38.249.169)
2021-11-03 11:53:22 +0100yrlnry(~mjd@pool-74-109-22-90.phlapa.fios.verizon.net)
2021-11-03 11:54:09 +0100fendor(~fendor@178.165.199.1.wireless.dyn.drei.com) (Remote host closed the connection)
2021-11-03 11:55:19 +0100fendor(~fendor@178.165.199.1.wireless.dyn.drei.com)
2021-11-03 11:55:50 +0100Midjak(~Midjak@82-65-111-221.subs.proxad.net)
2021-11-03 11:57:18 +0100lavaman(~lavaman@98.38.249.169) (Ping timeout: 268 seconds)
2021-11-03 11:58:48 +0100trcc(~trcc@eduroam09.au.dk)
2021-11-03 11:59:12 +0100alzgh(~alzgh@user/alzgh) (Remote host closed the connection)
2021-11-03 11:59:31 +0100alzgh(~alzgh@user/alzgh)
2021-11-03 12:00:22 +0100xff0x(~xff0x@2001:1a81:53fb:b000:b58d:2078:260f:228a) (Ping timeout: 268 seconds)
2021-11-03 12:00:23 +0100azeem(~azeem@emp-89-199.eduroam.uu.se) (Read error: Connection reset by peer)
2021-11-03 12:00:53 +0100alx741(~alx741@186.178.109.189)
2021-11-03 12:02:11 +0100fendor(~fendor@178.165.199.1.wireless.dyn.drei.com) (Ping timeout: 264 seconds)
2021-11-03 12:02:52 +0100terrorjack(~terrorjac@static.3.200.12.49.clients.your-server.de) (Quit: The Lounge - https://thelounge.chat)
2021-11-03 12:03:20 +0100yauhsien(~yauhsien@61-231-61-245.dynamic-ip.hinet.net)
2021-11-03 12:04:36 +0100terrorjack(~terrorjac@2a01:4f8:1c1e:509a::1)
2021-11-03 12:04:41 +0100azeem(~azeem@emp-89-199.eduroam.uu.se)
2021-11-03 12:06:56 +0100xff0x(~xff0x@2001:1a81:53fb:b000:b58d:2078:260f:228a)
2021-11-03 12:08:03 +0100 <Hecate> < tomsmeding> Hecate: looks neat! I think I've written a Pretty class like 10 times by now // So have I, hence this library :3
2021-11-03 12:08:24 +0100yauhsien(~yauhsien@61-231-61-245.dynamic-ip.hinet.net) (Ping timeout: 268 seconds)
2021-11-03 12:08:29 +0100alzgh(~alzgh@user/alzgh) (Remote host closed the connection)
2021-11-03 12:08:29 +0100 <Hecate> < tomsmeding> Hecate: I think it's good that you didn't go overboard with the predefined instances // I tried to keep it as close to Show as possible, the real deal is for one's own datatypes
2021-11-03 12:08:49 +0100alzgh(~alzgh@user/alzgh)
2021-11-03 12:09:37 +0100fvr(uid503686@id-503686.uxbridge.irccloud.com)
2021-11-03 12:13:39 +0100v01d4lph4(~v01d4lph4@106.215.93.204)
2021-11-03 12:13:39 +0100v01d4lph4(~v01d4lph4@106.215.93.204) (Changing host)
2021-11-03 12:13:39 +0100v01d4lph4(~v01d4lph4@user/v01d4lph4)
2021-11-03 12:13:45 +0100 <boxscape_> Hecate the documentation on hackage says "decodeUtf8`" - I can't quite tell if the ` shouldn't be there or if it should be decodeUtf8'
2021-11-03 12:14:10 +0100 <Hecate> boxscape_: it's Haddock's fault!! :<
2021-11-03 12:14:13 +0100 <boxscape_> :(
2021-11-03 12:14:22 +0100 <Hecate> 'decodeUtf8'' should be valid to link the identifier
2021-11-03 12:15:09 +0100hololeap_hololeap
2021-11-03 12:15:16 +0100 <boxscape_> yeah true it's strange that it inserts a `
2021-11-03 12:16:48 +0100 <boxscape_> Ah, I see, you did it like 'decodeUtf8'' for the instance documentation but `decodeUtf8'` for the "You should not try to display ByteStrings" documentation
2021-11-03 12:17:00 +0100 <Hecate> hhhhhhhhh
2021-11-03 12:18:53 +0100v01d4lph4(~v01d4lph4@user/v01d4lph4) (Ping timeout: 268 seconds)
2021-11-03 12:20:43 +0100johnny_sitar(~artur@078088015209.bialystok.vectranet.pl) (Ping timeout: 268 seconds)
2021-11-03 12:21:27 +0100ubikium(~ubikium@i223-218-66-82.s41.a013.ap.plala.or.jp)
2021-11-03 12:22:18 +0100 <boxscape_> Hecate that's better :)
2021-11-03 12:23:56 +0100 <boxscape_> Hecate though I think you have now changed the last line to say ByteStrin&g
2021-11-03 12:24:50 +0100 <Hecate> hhhhhhhhhhhhh
2021-11-03 12:24:58 +0100Hecatefoams at the mouth
2021-11-03 12:25:30 +0100 <Hecate> alright should be good
2021-11-03 12:25:31 +0100 <Hecate> thanks boxscape_
2021-11-03 12:27:01 +0100 <Hecate> boxscape_: can you see it changed here? https://hackage.haskell.org/package/text-display-0.0.1.0/docs/Data-Text-Display.html#g:4
2021-11-03 12:27:13 +0100machinedgod(~machinedg@135-23-192-217.cpe.pppoe.ca)
2021-11-03 12:28:08 +0100gehmehgeh(~user@user/gehmehgeh) (Remote host closed the connection)
2021-11-03 12:28:47 +0100ubikium(~ubikium@i223-218-66-82.s41.a013.ap.plala.or.jp) (Leaving)
2021-11-03 12:29:03 +0100gehmehgeh(~user@user/gehmehgeh)
2021-11-03 12:29:18 +0100 <Cajun> if its meant to be decodeUtf8' then its working on my end
2021-11-03 12:30:38 +0100gehmehgeh(~user@user/gehmehgeh) (Remote host closed the connection)
2021-11-03 12:30:51 +0100 <Hecate> Cajun: okay, Hackage caches everything on my end so I can't see if it's been take into account :)
2021-11-03 12:31:10 +0100 <Hecate> Cajun: yeah, the last line, thank you :)
2021-11-03 12:31:47 +0100ubikium(~ubikium@i223-218-66-82.s41.a013.ap.plala.or.jp)
2021-11-03 12:32:49 +0100v01d4lph4(~v01d4lph4@106.215.93.204)
2021-11-03 12:32:49 +0100v01d4lph4(~v01d4lph4@106.215.93.204) (Changing host)
2021-11-03 12:32:49 +0100v01d4lph4(~v01d4lph4@user/v01d4lph4)
2021-11-03 12:33:14 +0100tomku(~tomku@user/tomku)
2021-11-03 12:33:25 +0100guniberas(~guniberas@42.191.188.121)
2021-11-03 12:33:45 +0100hippoid(~idris@184.105.6.88)
2021-11-03 12:33:48 +0100ubikium(~ubikium@i223-218-66-82.s41.a013.ap.plala.or.jp) (Quit: Leaving)
2021-11-03 12:34:08 +0100ubikium(~ubikium@i223-218-66-82.s41.a013.ap.plala.or.jp)
2021-11-03 12:34:41 +0100 <Hecate> wew already 14 downloads
2021-11-03 12:35:18 +0100ubikium(~ubikium@i223-218-66-82.s41.a013.ap.plala.or.jp) (Client Quit)
2021-11-03 12:35:36 +0100ubikium(~ubikium@i223-218-66-82.s41.a013.ap.plala.or.jp)
2021-11-03 12:36:01 +0100lavaman(~lavaman@98.38.249.169)
2021-11-03 12:37:06 +0100allbery_b(~geekosaur@xmonad/geekosaur)
2021-11-03 12:37:06 +0100geekosaur(~geekosaur@xmonad/geekosaur) (Killed (NickServ (GHOST command used by allbery_b)))
2021-11-03 12:37:09 +0100allbery_bgeekosaur
2021-11-03 12:37:27 +0100mei(~mei@user/mei)
2021-11-03 12:37:47 +0100trcc(~trcc@eduroam09.au.dk) (Remote host closed the connection)
2021-11-03 12:38:31 +0100img(~img@user/img) (Quit: ZNC 1.8.2 - https://znc.in)
2021-11-03 12:39:54 +0100img(~img@user/img)
2021-11-03 12:41:04 +0100lavaman(~lavaman@98.38.249.169) (Ping timeout: 268 seconds)
2021-11-03 12:44:02 +0100 <Cajun> i wonder if it would be useful to supply an overloaded `show` method to make displaying stuff unchanged, so long as `show` is hidden from the prelude
2021-11-03 12:45:40 +0100Farzad(~FarzadBek@178.131.31.240)
2021-11-03 12:46:12 +0100img(~img@user/img) (Quit: ZNC 1.8.2 - https://znc.in)
2021-11-03 12:47:33 +0100img(~img@user/img)
2021-11-03 12:47:47 +0100LambdaDuck(~anka@ksit.fixme.fi) (Ping timeout: 264 seconds)
2021-11-03 12:47:56 +0100opqdonut(opqdonut@pseudo.fixme.fi) (Ping timeout: 260 seconds)
2021-11-03 12:48:34 +0100 <Hecate> Cajun: the prerequisite makes it really difficult in terms of adoption :/
2021-11-03 12:48:45 +0100 <Hecate> I don't wish to export a conflictual `show`
2021-11-03 12:49:05 +0100shidima(~shidima@84-104-108-90.cable.dynamic.v4.ziggo.nl) (Ping timeout: 268 seconds)
2021-11-03 12:49:19 +0100 <Cajun> yeah i figured, and it wouldnt be too hard to define on the user end either should they want it
2021-11-03 12:51:36 +0100 <Hecate> yup'
2021-11-03 12:51:37 +0100gentauro(~gentauro@user/gentauro) (Read error: Connection reset by peer)
2021-11-03 12:52:48 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 268 seconds)
2021-11-03 12:52:56 +0100LambdaDuck(~anka@ksit.fixme.fi)
2021-11-03 12:53:49 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-11-03 12:54:03 +0100opqdonut(opqdonut@pseudo.fixme.fi)
2021-11-03 12:54:49 +0100gehmehgeh(~user@user/gehmehgeh)
2021-11-03 12:55:11 +0100yauhsien(~yauhsien@61-231-61-245.dynamic-ip.hinet.net)
2021-11-03 12:57:09 +0100 <boxscape_> Hecate sorry, had lunch, but yeah, looks good
2021-11-03 12:57:14 +0100gentauro(~gentauro@user/gentauro)
2021-11-03 12:58:19 +0100 <Hecate> boxscape_: did you eat well? :)
2021-11-03 12:58:23 +0100 <boxscape_> yes, thank you :)
2021-11-03 13:00:11 +0100yauhsien(~yauhsien@61-231-61-245.dynamic-ip.hinet.net) (Ping timeout: 268 seconds)
2021-11-03 13:00:11 +0100gentauro(~gentauro@user/gentauro) (Read error: Connection reset by peer)
2021-11-03 13:02:10 +0100acidjnk_new(~acidjnk@p200300d0c726704340645b0c72496253.dip0.t-ipconnect.de) (Ping timeout: 260 seconds)
2021-11-03 13:02:14 +0100gentauro(~gentauro@user/gentauro)
2021-11-03 13:02:47 +0100trcc(~trcc@users-5343.st.net.au.dk)
2021-11-03 13:03:31 +0100__monty__(~toonn@user/toonn)
2021-11-03 13:03:54 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 268 seconds)
2021-11-03 13:04:03 +0100jonathanx(~jonathan@dyn-8-sc.cdg.chalmers.se)
2021-11-03 13:04:03 +0100gentauro(~gentauro@user/gentauro) (Read error: Connection reset by peer)
2021-11-03 13:05:16 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-11-03 13:06:11 +0100bitdex(~bitdex@gateway/tor-sasl/bitdex) (Quit: = "")
2021-11-03 13:07:14 +0100cosimone(~user@2001:b07:ae5:db26:c24a:d20:4d91:1e20)
2021-11-03 13:07:18 +0100[itchyjunk](~itchyjunk@user/itchyjunk/x-7353470)
2021-11-03 13:07:26 +0100alzgh(~alzgh@user/alzgh) (Remote host closed the connection)
2021-11-03 13:07:46 +0100alzgh(~alzgh@user/alzgh)
2021-11-03 13:09:29 +0100gentauro(~gentauro@user/gentauro)
2021-11-03 13:10:41 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 268 seconds)
2021-11-03 13:11:01 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-11-03 13:14:05 +0100cfricke(~cfricke@user/cfricke)
2021-11-03 13:17:59 +0100cosimone(~user@2001:b07:ae5:db26:c24a:d20:4d91:1e20) (Remote host closed the connection)
2021-11-03 13:18:27 +0100cosimone(~user@2001:b07:ae5:db26:c24a:d20:4d91:1e20)
2021-11-03 13:21:47 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 268 seconds)
2021-11-03 13:22:06 +0100jpds(~jpds@gateway/tor-sasl/jpds) (Ping timeout: 276 seconds)
2021-11-03 13:22:19 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-11-03 13:24:00 +0100shapr(~user@pool-100-36-247-68.washdc.fios.verizon.net)
2021-11-03 13:24:26 +0100kadir(~kadir@95.7.9.203) ()
2021-11-03 13:26:02 +0100opqdonut(opqdonut@pseudo.fixme.fi) (Ping timeout: 260 seconds)
2021-11-03 13:26:02 +0100LambdaDuck(~anka@ksit.fixme.fi) (Ping timeout: 260 seconds)
2021-11-03 13:26:10 +0100LambdaDuck(~anka@ksit.fixme.fi)
2021-11-03 13:26:10 +0100opqdonut(opqdonut@pseudo.fixme.fi)
2021-11-03 13:26:23 +0100Ainoretho(~ypw@huji-132-64-245-57.xt.huji.ac.il)
2021-11-03 13:26:32 +0100Ainoretho(~ypw@huji-132-64-245-57.xt.huji.ac.il) (Client Quit)
2021-11-03 13:27:24 +0100Ainoretho(~ypw@huji-132-64-245-57.xt.huji.ac.il)
2021-11-03 13:27:32 +0100Ainoretho(~ypw@huji-132-64-245-57.xt.huji.ac.il) (Client Quit)
2021-11-03 13:27:57 +0100Ainoretho(~ypw@huji-132-64-245-57.xt.huji.ac.il)
2021-11-03 13:29:14 +0100Ainoretho(~ypw@huji-132-64-245-57.xt.huji.ac.il) (Client Quit)
2021-11-03 13:30:39 +0100v01d4lph4(~v01d4lph4@user/v01d4lph4) (Read error: Connection reset by peer)
2021-11-03 13:30:39 +0100gentauro(~gentauro@user/gentauro) (Read error: Connection reset by peer)
2021-11-03 13:31:02 +0100gentauro(~gentauro@user/gentauro)
2021-11-03 13:31:51 +0100fendor(~fendor@178.165.199.1.wireless.dyn.drei.com)
2021-11-03 13:31:51 +0100MQ-17J(~MQ-17J@d192-24-122-179.try.wideopenwest.com) (Read error: Connection reset by peer)
2021-11-03 13:32:16 +0100azeem(~azeem@emp-89-199.eduroam.uu.se) (Ping timeout: 268 seconds)
2021-11-03 13:32:43 +0100MQ-17J(~MQ-17J@d192-24-122-179.try.wideopenwest.com)
2021-11-03 13:32:43 +0100cosimone`(~user@93-34-133-207.ip49.fastwebnet.it)
2021-11-03 13:32:53 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 268 seconds)
2021-11-03 13:33:21 +0100azeem(~azeem@emp-89-199.eduroam.uu.se)
2021-11-03 13:33:22 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-11-03 13:34:43 +0100cosimone(~user@2001:b07:ae5:db26:c24a:d20:4d91:1e20) (Ping timeout: 268 seconds)
2021-11-03 13:36:35 +0100xff0x(~xff0x@2001:1a81:53fb:b000:b58d:2078:260f:228a) (Ping timeout: 268 seconds)
2021-11-03 13:36:39 +0100Psybur(~Psybur@mobile-166-170-30-165.mycingular.net)
2021-11-03 13:37:07 +0100xff0x(~xff0x@2001:1a81:53fb:b000:1550:cc88:ac55:5459)
2021-11-03 13:38:06 +0100jonathanx(~jonathan@dyn-8-sc.cdg.chalmers.se) (Ping timeout: 260 seconds)
2021-11-03 13:39:43 +0100jpds(~jpds@gateway/tor-sasl/jpds)
2021-11-03 13:40:02 +0100cosimone`(~user@93-34-133-207.ip49.fastwebnet.it) (Ping timeout: 260 seconds)
2021-11-03 13:41:09 +0100eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
2021-11-03 13:43:06 +0100dschrempf(~dominik@070-207.dynamic.dsl.fonira.net)
2021-11-03 13:43:21 +0100 <dminuoso> Gah. prettyprinter is funnyu
2021-11-03 13:43:22 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 268 seconds)
2021-11-03 13:43:42 +0100cosimone(~user@93-34-133-207.ip49.fastwebnet.it)
2021-11-03 13:43:53 +0100 <dminuoso> https://hackage.haskell.org/package/prettyprinter
2021-11-03 13:43:55 +0100 <dminuoso> [...] which can then be rendered to a variety of formats, for example plain Text, or Markdown. What you are reading right now was generated by this library (see GenerateReadme.hs).
2021-11-03 13:44:11 +0100 <dminuoso> Funny, because GenerateReadme.hs doesn't render it into markdown, they simply bake the markdown into the document.
2021-11-03 13:44:16 +0100 <dminuoso> :>
2021-11-03 13:44:34 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-11-03 13:44:51 +0100max22-(~maxime@lfbn-ren-1-762-224.w81-53.abo.wanadoo.fr) (Ping timeout: 260 seconds)
2021-11-03 13:45:38 +0100eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 260 seconds)
2021-11-03 13:48:22 +0100yrlnry(~mjd@pool-74-109-22-90.phlapa.fios.verizon.net) (Ping timeout: 260 seconds)
2021-11-03 13:50:09 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 268 seconds)
2021-11-03 13:50:22 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-11-03 13:52:56 +0100cosimone`(~user@93-34-133-207.ip49.fastwebnet.it)
2021-11-03 13:53:57 +0100jpds(~jpds@gateway/tor-sasl/jpds) (Ping timeout: 276 seconds)
2021-11-03 13:53:57 +0100gentauro(~gentauro@user/gentauro) (Read error: Connection reset by peer)
2021-11-03 13:54:27 +0100mei(~mei@user/mei) (Ping timeout: 268 seconds)
2021-11-03 13:54:28 +0100cosimone(~user@93-34-133-207.ip49.fastwebnet.it) (Ping timeout: 268 seconds)
2021-11-03 13:58:46 +0100cosimone`(~user@93-34-133-207.ip49.fastwebnet.it) (Ping timeout: 268 seconds)
2021-11-03 13:59:03 +0100trcc_(~trcc@eduroam09.au.dk)
2021-11-03 13:59:23 +0100MQ-17J(~MQ-17J@d192-24-122-179.try.wideopenwest.com) (Ping timeout: 268 seconds)
2021-11-03 13:59:39 +0100gentauro(~gentauro@user/gentauro)
2021-11-03 13:59:55 +0100immae(~immae@2a01:4f8:141:53e7::) (Quit: WeeChat 2.9)
2021-11-03 14:00:24 +0100immae(~immae@2a01:4f8:141:53e7::)
2021-11-03 14:01:07 +0100v01d4lph4(~v01d4lph4@user/v01d4lph4)
2021-11-03 14:01:50 +0100slowtyper(~slowtyper@user/slowtyper) (Quit: ZNC 1.8.2 - https://znc.in)
2021-11-03 14:02:07 +0100trcc(~trcc@users-5343.st.net.au.dk) (Ping timeout: 260 seconds)
2021-11-03 14:03:59 +0100obfusk(~quassel@a82-161-150-56.adsl.xs4all.nl) (Ping timeout: 264 seconds)
2021-11-03 14:03:59 +0100gentauro(~gentauro@user/gentauro) (Read error: Connection reset by peer)
2021-11-03 14:04:19 +0100kjak(~kjak@pool-108-45-56-21.washdc.fios.verizon.net) (Ping timeout: 268 seconds)
2021-11-03 14:05:14 +0100 <maerwald> big names in the author list
2021-11-03 14:05:42 +0100 <Hecate> :'')
2021-11-03 14:05:53 +0100obfusk(~quassel@a82-161-150-56.adsl.xs4all.nl)
2021-11-03 14:06:11 +0100v01d4lph4(~v01d4lph4@user/v01d4lph4) (Ping timeout: 268 seconds)
2021-11-03 14:06:47 +0100Gurkenglas(~Gurkengla@dslb-002-203-144-204.002.203.pools.vodafone-ip.de) (Ping timeout: 268 seconds)
2021-11-03 14:06:48 +0100azeem(~azeem@emp-89-199.eduroam.uu.se) (Read error: Connection reset by peer)
2021-11-03 14:07:37 +0100azeem(~azeem@emp-89-199.eduroam.uu.se)
2021-11-03 14:09:57 +0100gentauro(~gentauro@user/gentauro)
2021-11-03 14:10:13 +0100jonathanx(~jonathan@dyn-8-sc.cdg.chalmers.se)
2021-11-03 14:16:11 +0100MQ-17J(~MQ-17J@8.6.144.203)
2021-11-03 14:20:26 +0100dsamperi(~dsamperi@2603-7000-3b42-5400-b0ad-0af8-2f41-da4e.res6.spectrum.com)
2021-11-03 14:20:26 +0100gentauro(~gentauro@user/gentauro) (Read error: Connection reset by peer)
2021-11-03 14:22:03 +0100jpds(~jpds@gateway/tor-sasl/jpds)
2021-11-03 14:22:37 +0100yrlnry(~mjd@pool-100-11-2-80.phlapa.fios.verizon.net)
2021-11-03 14:24:13 +0100kadir(~kadir@95.7.9.203)
2021-11-03 14:24:16 +0100kuribas(~user@ptr-25vy0i9fcjh581tavd9.18120a2.ip6.access.telenet.be)
2021-11-03 14:25:34 +0100jpds(~jpds@gateway/tor-sasl/jpds) (Remote host closed the connection)
2021-11-03 14:25:55 +0100jpds(~jpds@gateway/tor-sasl/jpds)
2021-11-03 14:26:21 +0100gentauro(~gentauro@user/gentauro)
2021-11-03 14:27:23 +0100chomwitt(~chomwitt@ppp-2-85-245-90.home.otenet.gr) (Ping timeout: 264 seconds)
2021-11-03 14:30:21 +0100timCF(~timCF@200-149-20-81.sta.estpak.ee)
2021-11-03 14:31:43 +0100 <timCF> Hello! Is there any way expression in hpack (package.yaml) to exclude module from exposed-modules list of cabal file?
2021-11-03 14:32:33 +0100 <maerwald> in plain cabal files easily
2021-11-03 14:32:43 +0100trcc_(~trcc@eduroam09.au.dk) (Remote host closed the connection)
2021-11-03 14:33:15 +0100trcc(~trcc@users-5343.st.net.au.dk)
2021-11-03 14:34:16 +0100 <timCF> maerwald: yeah, but plain cabal is kinda pain to deal with :(
2021-11-03 14:34:17 +0100gentauro(~gentauro@user/gentauro) (Read error: Connection reset by peer)
2021-11-03 14:34:23 +0100 <maerwald> not really
2021-11-03 14:35:14 +0100 <timCF> ¯\_(ツ)_/¯
2021-11-03 14:35:34 +0100v01d4lph4(~v01d4lph4@user/v01d4lph4)
2021-11-03 14:35:52 +0100 <maerwald> given the fact that you come here asking for something that's *really* simple in cabal, my takeaway is that hpack is a pain to deal with
2021-11-03 14:36:52 +0100 <yushyin> maybe we just need one more layer of abstraction to deal with hpack? ;)
2021-11-03 14:37:08 +0100 <maerwald> timCF: https://github.com/sol/hpack#library-fields
2021-11-03 14:37:09 +0100 <jneira[m]> well in cabal is move the module from `exposed-modules` to `other-modules` iirc
2021-11-03 14:37:20 +0100 <jneira[m]> i guess hpack has the same field
2021-11-03 14:37:22 +0100 <maerwald> the documentation of hpack seems to be very clear
2021-11-03 14:37:28 +0100 <merijn> jneira[m]: Presumably he's using wild-cards to do things automatically
2021-11-03 14:37:39 +0100 <timCF> maerwald: I didn't did much research of latest cabal development, but for me critical thing was atomated maintainance of exposed-modules (project contains 469 modules and this number is changing from time to time as well as module names)
2021-11-03 14:37:43 +0100 <merijn> There's a reason why cabal (intentionally) doesn't support wildcards
2021-11-03 14:38:20 +0100 <jneira[m]> merijn: cause at some point you want to do excluisions .-)
2021-11-03 14:38:32 +0100 <merijn> timCF: I have a few 100 modules too, but generally you only add/move only a handful at a time anyway, so it's like 5s work to manage
2021-11-03 14:38:54 +0100 <merijn> jneira[m]: Well, yes, but also, more importantly that for packaging and distribution "explicitness" is a feature, not a bug
2021-11-03 14:39:02 +0100lavaman(~lavaman@98.38.249.169)
2021-11-03 14:39:22 +0100 <jneira[m]> maerwald: > Outside conditionals: All modules in source-dirs less exposed-modules less any modules mentioned in when. Inside conditionals, and only if exposed-modules is not specified inside the conditional: All modules in source-dirs of the conditional less any modules mentioned in when of the conditional
2021-11-03 14:39:30 +0100 <jneira[m]> :-D
2021-11-03 14:39:38 +0100 <merijn> cabal files are intended to be able to function as manifest files, defining explicitly what *is* and *is not* part of a package. Arguably the support for wildcard data files is a miss-feature
2021-11-03 14:39:43 +0100gentauro(~gentauro@user/gentauro)
2021-11-03 14:39:49 +0100 <jneira[m]> it looks like a groucho marx speech
2021-11-03 14:39:54 +0100 <timCF> maerwald: thanks!
2021-11-03 14:40:09 +0100max22-(~maxime@2a01cb0883359800e04aab7dab8e26cf.ipv6.abo.wanadoo.fr)
2021-11-03 14:40:26 +0100 <maerwald> merijn: the proposed solution is to expand all paths when you do `cabal sdist`
2021-11-03 14:40:42 +0100v01d4lph4(~v01d4lph4@user/v01d4lph4) (Ping timeout: 268 seconds)
2021-11-03 14:41:13 +0100 <maerwald> then hackage would just reject packages with unexpanded paths
2021-11-03 14:41:45 +0100 <merijn> maerwald: Still leads to people accidentally packaging garbage, though :p
2021-11-03 14:43:02 +0100 <maerwald> well, hackage doesn't reject bad code either
2021-11-03 14:43:48 +0100lavaman(~lavaman@98.38.249.169) (Ping timeout: 268 seconds)
2021-11-03 14:43:49 +0100cosimone(~user@93-34-133-207.ip49.fastwebnet.it)
2021-11-03 14:45:01 +0100 <maerwald> would be funny getting an error on upload like "your code looks like garbage, we don't want that here" :D
2021-11-03 14:45:22 +0100 <maerwald> that would be a nice aprils fool
2021-11-03 14:45:22 +0100gentauro(~gentauro@user/gentauro) (Read error: Connection reset by peer)
2021-11-03 14:48:44 +0100max22-(~maxime@2a01cb0883359800e04aab7dab8e26cf.ipv6.abo.wanadoo.fr) (Ping timeout: 268 seconds)
2021-11-03 14:51:03 +0100gentauro(~gentauro@user/gentauro)
2021-11-03 14:52:37 +0100hrdl(~hrdl@mail.hrdl.eu) (Remote host closed the connection)
2021-11-03 14:52:37 +0100gentauro(~gentauro@user/gentauro) (Read error: Connection reset by peer)
2021-11-03 14:53:31 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-11-03 14:53:31 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Changing host)
2021-11-03 14:53:31 +0100wroathe(~wroathe@user/wroathe)
2021-11-03 14:54:12 +0100hrdl(~hrdl@mail.hrdl.eu)
2021-11-03 14:58:05 +0100Sgeo(~Sgeo@user/sgeo)
2021-11-03 14:58:19 +0100gentauro(~gentauro@user/gentauro)
2021-11-03 14:59:46 +0100timCF(~timCF@200-149-20-81.sta.estpak.ee) (Quit: leaving)
2021-11-03 15:01:03 +0100MQ-17J(~MQ-17J@8.6.144.203) (Ping timeout: 268 seconds)
2021-11-03 15:01:04 +0100johnny_sitar(~artur@078088015209.bialystok.vectranet.pl)
2021-11-03 15:01:31 +0100jonathanx(~jonathan@dyn-8-sc.cdg.chalmers.se) (Remote host closed the connection)
2021-11-03 15:01:49 +0100jonathanx(~jonathan@dyn-8-sc.cdg.chalmers.se)
2021-11-03 15:03:00 +0100lavaman(~lavaman@98.38.249.169)
2021-11-03 15:09:04 +0100jonathanx(~jonathan@dyn-8-sc.cdg.chalmers.se) (Ping timeout: 268 seconds)
2021-11-03 15:10:03 +0100waleee(~waleee@h-98-128-228-119.NA.cust.bahnhof.se)
2021-11-03 15:10:34 +0100cosimone(~user@93-34-133-207.ip49.fastwebnet.it) (Ping timeout: 260 seconds)
2021-11-03 15:12:26 +0100wroathe(~wroathe@user/wroathe) (Ping timeout: 260 seconds)
2021-11-03 15:12:26 +0100v01d4lph4(~v01d4lph4@user/v01d4lph4)
2021-11-03 15:15:02 +0100yauhsien(~yauhsien@61-231-61-245.dynamic-ip.hinet.net)
2021-11-03 15:17:06 +0100v01d4lph4(~v01d4lph4@user/v01d4lph4) (Ping timeout: 260 seconds)
2021-11-03 15:17:06 +0100gentauro(~gentauro@user/gentauro) (Read error: Connection reset by peer)
2021-11-03 15:18:03 +0100 <dsamperi> Seems hackage is not curated, and does not provide incentive to document and provide examples. There are notable exceptions like Pipes.
2021-11-03 15:19:12 +0100 <geekosaur> youhave to define the scope of "curated" there. for example, stackage is curated but not in that sense
2021-11-03 15:22:53 +0100gentauro(~gentauro@user/gentauro)
2021-11-03 15:28:01 +0100 <shapr> do cabal files have an example stanza or something?
2021-11-03 15:28:05 +0100 <shapr> I was wondering about that yesterday.
2021-11-03 15:28:12 +0100 <Hecate> no, it's in the README or description
2021-11-03 15:28:24 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-11-03 15:28:24 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Changing host)
2021-11-03 15:28:24 +0100wroathe(~wroathe@user/wroathe)
2021-11-03 15:28:26 +0100 <shapr> Work codebase has lots of examples, and I was wondering if I could reduce compile time by not building them.
2021-11-03 15:28:57 +0100shriekingnoise(~shrieking@186.137.144.80)
2021-11-03 15:28:57 +0100 <geekosaur> you can set them to be not buildable without an examples flag
2021-11-03 15:31:27 +0100 <geekosaur> and with includable sections (which will require you to set a minimum Cabal version on the cabal file) you could define that one and include it into all the examples
2021-11-03 15:31:36 +0100FinnElija(~finn_elij@user/finn-elija/x-0085643)
2021-11-03 15:31:47 +0100 <dsamperi> I guess Haskell is more like C++ than R, being naturally a compiled language, where its takes more work to provide working examples. WIth R one can often run working examples with example(funcname).
2021-11-03 15:32:55 +0100 <maerwald> I don't understand your remarks. Are you saying documentation in Haskell is generally not very good?
2021-11-03 15:32:55 +0100burnsidesLlama(~burnsides@dhcp168-012.wadham.ox.ac.uk)
2021-11-03 15:33:08 +0100wroathe(~wroathe@user/wroathe) (Ping timeout: 268 seconds)
2021-11-03 15:34:01 +0100gentauro(~gentauro@user/gentauro) (Read error: Connection reset by peer)
2021-11-03 15:34:16 +0100gentauro(~gentauro@user/gentauro)
2021-11-03 15:36:34 +0100timCF(~timCF@200-149-20-81.sta.estpak.ee)
2021-11-03 15:36:49 +0100 <merijn> I mean, overall the average documentation on hackage seems about 50x as any of the python packages I ever have to work with
2021-11-03 15:36:49 +0100wonko(~wjc@user/wonko) (Ping timeout: 268 seconds)
2021-11-03 15:37:26 +0100 <merijn> shapr: You can mark the example components as not built by default
2021-11-03 15:38:13 +0100 <merijn> Or make them tests, which is what I did :p
2021-11-03 15:44:33 +0100cigsender(~cigsender@74.124.58.162)
2021-11-03 15:45:11 +0100 <timCF> Let's say I do have `Foo.Orphan` module with orphan instances of some class, which is used internally inside `Foo` package and is not in exposed-modules. But when there is `Bar.Orphan` file in some other package which depends on
2021-11-03 15:45:29 +0100 <timCF> `Foo` - orphan instances are stil in scope
2021-11-03 15:45:50 +0100Core5109(~Core5109@47.245.54.240) (Quit: CoreIRC for Android - www.coreirc.com)
2021-11-03 15:45:54 +0100cfricke(~cfricke@user/cfricke) (Quit: WeeChat 3.3)
2021-11-03 15:46:23 +0100 <timCF> `Bar.Orphan` instances do overlap somehow `Foo.Orphan` even if `Foo.Orphan` is not exposed/exported/imported
2021-11-03 15:46:23 +0100gentauro(~gentauro@user/gentauro) (Read error: Connection reset by peer)
2021-11-03 15:46:23 +0100 <geekosaur> orphan instances cannot be imported or exported, they are global
2021-11-03 15:46:41 +0100gentauro(~gentauro@user/gentauro)
2021-11-03 15:46:44 +0100 <geekosaur> there is no other way to handle them
2021-11-03 15:46:54 +0100 <timCF> geekosaur: omg, that's not good
2021-11-03 15:47:11 +0100 <geekosaur> separate compilation means only the linker knows the full story about instances
2021-11-03 15:47:26 +0100 <geekosaur> and the linker is designed for C/C++, not Haskell
2021-11-03 15:47:28 +0100 <timCF> at least in my case :)
2021-11-03 15:47:42 +0100tfeb(~tfb@88.98.95.237)
2021-11-03 15:49:26 +0100 <timCF> geekosaur: thanks!
2021-11-03 15:49:47 +0100 <merijn> timCF: All instances are always global. The only thing that changes is "at what point (if any) does the compiler realise they exist.
2021-11-03 15:51:21 +0100 <lortabac> if you want to hide an instance the only way is to avoid importing that module anywhere in the program
2021-11-03 15:51:21 +0100gentauro(~gentauro@user/gentauro) (Read error: Connection reset by peer)
2021-11-03 15:51:30 +0100azeem(~azeem@emp-89-199.eduroam.uu.se) (Read error: Connection reset by peer)
2021-11-03 15:51:38 +0100 <lortabac> but you can't pick different instances in different modules
2021-11-03 15:51:55 +0100tfeb(~tfb@88.98.95.237) (Client Quit)
2021-11-03 15:52:13 +0100 <dsamperi> Haskell documentation varies a lot, from little more than a bunch of function signatures (with pointers to research papers), to detailed explanations with illustrations (Pipes).
2021-11-03 15:52:25 +0100 <geekosaur> well, you can use the OVERLASPPING pragma or even IncoherentInstances, but in that case you're at the mercy of the compiler
2021-11-03 15:52:33 +0100 <geekosaur> *OVERLAPPING
2021-11-03 15:52:46 +0100azeem(~azeem@emp-89-199.eduroam.uu.se)
2021-11-03 15:53:22 +0100 <timCF> For some reason I was always sure what it's the point of orphan instances - being local, but not the case really
2021-11-03 15:53:44 +0100 <geekosaur> dsamperi, you haven't even seen the worst of it. Henning Thielemann generally writes good documentation, except all his types are named T and are intended to be used fully qualified
2021-11-03 15:54:02 +0100mmhat(~mmh@55d4baf7.access.ecotel.net) (Quit: WeeChat 3.3)
2021-11-03 15:54:08 +0100 <geekosaur> timcf, this is a large part of why orphan instances are a bad idea
2021-11-03 15:54:38 +0100 <geekosaur> dsamperi, which makes his documentation well-nigh unreadable
2021-11-03 15:55:00 +0100 <timCF> geekosaur: overlapping pragma says what it will be *some* instance, but not necessarily any particular
2021-11-03 15:55:03 +0100 <timCF> ?
2021-11-03 15:55:32 +0100 <geekosaur> yes. the compiler does try to follow some saneish rules, but at some point it'll throw up its hands and give up
2021-11-03 15:55:50 +0100 <geekosaur> (basically using the first instance it happens to know about at that point, which may not be the one you intended)
2021-11-03 15:57:00 +0100gentauro(~gentauro@user/gentauro)
2021-11-03 15:57:41 +0100 <geekosaur> because, again, only the linker knows the full story and the linker has no clue about Haskell instances
2021-11-03 15:58:00 +0100 <geekosaur> it knows there are symbols that start with `$d`, but not what they mean
2021-11-03 15:58:15 +0100 <geekosaur> (instance dictionaries)
2021-11-03 15:58:45 +0100 <merijn> timCF: Overlapping instances just says "what rules do you follow if you find multiple conflicting instances"
2021-11-03 15:59:05 +0100 <merijn> timCF: If you mix overlapping and orphans, prepare for some of the worst nightmare debugging you will ever see
2021-11-03 15:59:13 +0100 <merijn> Of course, not right away. That would be easy
2021-11-03 15:59:24 +0100 <maerwald> lolo
2021-11-03 15:59:45 +0100 <merijn> No, at some indeterminate point in the future when stars align and with some specific mix of dependencies *then* it will suddenly manifest
2021-11-03 16:00:03 +0100 <maerwald> I was never a fun of classes :D
2021-11-03 16:02:44 +0100dschrempf(~dominik@070-207.dynamic.dsl.fonira.net) (Ping timeout: 268 seconds)
2021-11-03 16:03:00 +0100 <merijn> It's like using a PRNG to generate random identifiers in a concurrent setting to ensure RPCs don't conflict. All you've done is make it less likely to happen and thus more of a nightmare to debug
2021-11-03 16:04:35 +0100lavaman(~lavaman@98.38.249.169) (Ping timeout: 264 seconds)
2021-11-03 16:05:02 +0100trcc_(~trcc@eduroam09.au.dk)
2021-11-03 16:05:03 +0100tfeb(~tfb@88.98.95.237)
2021-11-03 16:05:24 +0100 <maerwald> all code just works by chance
2021-11-03 16:05:29 +0100 <maerwald> what's the difference :D
2021-11-03 16:05:59 +0100geekosaursends maerwald a cosmic ray
2021-11-03 16:06:58 +0100 <geekosaur> anyway if you need specific behavior you might be better off passing dictionary records around explicitly instead of relying on instances in scope to do it implicitly
2021-11-03 16:06:58 +0100gentauro(~gentauro@user/gentauro) (Read error: Connection reset by peer)
2021-11-03 16:07:52 +0100albet70(~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection)
2021-11-03 16:08:50 +0100trcc(~trcc@users-5343.st.net.au.dk) (Ping timeout: 260 seconds)
2021-11-03 16:09:21 +0100tfeb(~tfb@88.98.95.237) (Client Quit)
2021-11-03 16:09:46 +0100trcc_(~trcc@eduroam09.au.dk) (Ping timeout: 260 seconds)
2021-11-03 16:11:52 +0100Farzad(~FarzadBek@178.131.31.240) (Quit: Leaving)
2021-11-03 16:12:23 +0100kadir(~kadir@95.7.9.203) ()
2021-11-03 16:12:24 +0100gentauro(~gentauro@user/gentauro)
2021-11-03 16:13:12 +0100ec(~ec@gateway/tor-sasl/ec)
2021-11-03 16:13:19 +0100Inst(~Inst@2601:6c4:4080:3f80:d8ab:2e91:63f7:db6e) (Remote host closed the connection)
2021-11-03 16:13:38 +0100Inst(~Inst@2601:6c4:4080:3f80:d8ab:2e91:63f7:db6e)
2021-11-03 16:13:59 +0100albet70(~xxx@2400:8902::f03c:92ff:fe60:98d8)
2021-11-03 16:16:27 +0100max22-(~maxime@2a01cb0883359800dcf2cfbbabba90b8.ipv6.abo.wanadoo.fr)
2021-11-03 16:16:51 +0100pavonia(~user@user/siracusa) (Quit: Bye!)
2021-11-03 16:17:33 +0100v01d4lph4(~v01d4lph4@user/v01d4lph4)
2021-11-03 16:19:20 +0100fvr(uid503686@id-503686.uxbridge.irccloud.com) (Quit: Connection closed for inactivity)
2021-11-03 16:19:51 +0100neurocyte0132889(~neurocyte@212.232.84.130)
2021-11-03 16:19:51 +0100gentauro(~gentauro@user/gentauro) (Read error: Connection reset by peer)
2021-11-03 16:19:51 +0100neurocyte0132889(~neurocyte@212.232.84.130) (Changing host)
2021-11-03 16:19:51 +0100neurocyte0132889(~neurocyte@user/neurocyte)
2021-11-03 16:20:00 +0100yauhsien(~yauhsien@61-231-61-245.dynamic-ip.hinet.net) (Ping timeout: 268 seconds)
2021-11-03 16:20:30 +0100Inst(~Inst@2601:6c4:4080:3f80:d8ab:2e91:63f7:db6e) (Ping timeout: 260 seconds)
2021-11-03 16:22:22 +0100v01d4lph4(~v01d4lph4@user/v01d4lph4) (Ping timeout: 260 seconds)
2021-11-03 16:22:49 +0100 <monochrom> All of quantum mechanics just works by chance, too. Overwhelming chance, that is.
2021-11-03 16:23:15 +0100eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
2021-11-03 16:23:23 +0100 <monochrom> And by the way transistor-based logic gates also work by that same chance.
2021-11-03 16:24:30 +0100 <monochrom> If you issue so much as "xor ax,ax" you are still "not sure" that it sets ax to 0.
2021-11-03 16:25:04 +0100 <monochrom> And nevermind what the program counter actually points to.
2021-11-03 16:25:46 +0100gentauro(~gentauro@user/gentauro)
2021-11-03 16:27:06 +0100 <janus> Is it true that because of Brownian motion, there is a small chance that my whole body will be moved to Jupiter in 42 seconds?
2021-11-03 16:27:11 +0100arahael(~arahael@118.208.229.178) (Ping timeout: 245 seconds)
2021-11-03 16:27:42 +0100 <monochrom> If you s/Brownian motion/wave mechanics/ then yes.
2021-11-03 16:27:43 +0100gentauro(~gentauro@user/gentauro) (Read error: Connection reset by peer)
2021-11-03 16:30:02 +0100 <janus> Why not true only with Brownian motion? I consist of particles suspended in gas.
2021-11-03 16:30:03 +0100waleee(~waleee@h-98-128-228-119.NA.cust.bahnhof.se) (Quit: WeeChat 3.3)
2021-11-03 16:30:24 +0100 <dsamperi> Brownian motion may just be a way of describing lack of knowledge of predicability.
2021-11-03 16:30:47 +0100gentauro(~gentauro@user/gentauro)
2021-11-03 16:30:54 +0100 <janus> Well, the same goes for Quantum mechanics, right? There are deterministic interpretations
2021-11-03 16:31:14 +0100 <monochrom> This should belong to -offtopic but Brownian motion's context is after your wave collapses to particles and after the light-speed limit.
2021-11-03 16:31:41 +0100 <dsamperi> QBism takes this point of view (Quantum Bayesianism)
2021-11-03 16:32:11 +0100 <monochrom> Whereas Feymann figured out that with waves, light speed is emergent, photon is just very likely to be at that speed, and you very likely to be under.
2021-11-03 16:32:47 +0100thyriaen(~thyriaen@dynamic-078-055-251-028.78.55.pool.telefonica.de)
2021-11-03 16:34:12 +0100bitmapper(uid464869@id-464869.lymington.irccloud.com)
2021-11-03 16:37:00 +0100NieDzejkob(~quassel@212.87.13.106)
2021-11-03 16:39:20 +0100slowButPresent(~slowButPr@user/slowbutpresent)
2021-11-03 16:41:16 +0100arahael(~arahael@124.148.78.199)
2021-11-03 16:44:42 +0100Inst(~Inst@2601:6c4:4080:3f80:cd36:4dbb:1af8:be8)
2021-11-03 16:47:30 +0100ec(~ec@gateway/tor-sasl/ec) (Ping timeout: 276 seconds)
2021-11-03 16:49:06 +0100favonia(~favonia@user/favonia)
2021-11-03 16:53:33 +0100fendor_(~fendor@178.115.63.67.wireless.dyn.drei.com)
2021-11-03 16:54:18 +0100gentauro(~gentauro@user/gentauro) (Read error: Connection reset by peer)
2021-11-03 16:55:01 +0100ec(~ec@gateway/tor-sasl/ec)
2021-11-03 16:56:23 +0100fendor(~fendor@178.165.199.1.wireless.dyn.drei.com) (Ping timeout: 268 seconds)
2021-11-03 16:58:40 +0100CubOfJudahsLion(~CubOfJuda@45.63.109.242)
2021-11-03 17:00:25 +0100gentauro(~gentauro@user/gentauro)
2021-11-03 17:00:48 +0100fizzsegfaultbuzz(~segfaultf@135-180-0-138.static.sonic.net)
2021-11-03 17:00:58 +0100dsamperi(~dsamperi@2603-7000-3b42-5400-b0ad-0af8-2f41-da4e.res6.spectrum.com) (Quit: Konversation terminated!)
2021-11-03 17:01:42 +0100CubOfJudahsLion(~CubOfJuda@45.63.109.242) (Client Quit)
2021-11-03 17:02:08 +0100eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
2021-11-03 17:05:00 +0100boxscape_(~boxscape_@134.171.69.87) (Ping timeout: 268 seconds)
2021-11-03 17:05:23 +0100jumper149(~jumper149@80.240.31.34)
2021-11-03 17:06:26 +0100myShoggoth(~myShoggot@97-120-85-195.ptld.qwest.net)
2021-11-03 17:07:16 +0100eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
2021-11-03 17:08:52 +0100thyriaen(~thyriaen@dynamic-078-055-251-028.78.55.pool.telefonica.de) (Quit: Leaving)
2021-11-03 17:09:23 +0100ubikium(~ubikium@i223-218-66-82.s41.a013.ap.plala.or.jp) (Leaving)
2021-11-03 17:12:33 +0100chomwitt(~chomwitt@2a02:587:dc02:9f00:12c3:7bff:fe6d:d374)
2021-11-03 17:18:03 +0100ec(~ec@gateway/tor-sasl/ec) (Ping timeout: 276 seconds)
2021-11-03 17:19:13 +0100 <dolio> There's almost certainly ways of making sense of QM that don't involve a 'chance' of your being suddenly teleported to Jupiter. :)
2021-11-03 17:20:21 +0100turlando_(~turlando@93-42-250-112.ip89.fastwebnet.it) (Quit: turlando_)
2021-11-03 17:20:21 +0100gentauro(~gentauro@user/gentauro) (Read error: Connection reset by peer)
2021-11-03 17:20:32 +0100 <geekosaur> transactional interpretation, yes
2021-11-03 17:20:54 +0100turlando(~turlando@93-42-250-112.ip89.fastwebnet.it)
2021-11-03 17:20:54 +0100turlando(~turlando@93-42-250-112.ip89.fastwebnet.it) (Changing host)
2021-11-03 17:20:54 +0100turlando(~turlando@user/turlando)
2021-11-03 17:21:28 +0100 <geekosaur> (note however that by any interpretation the chance is very, very small)
2021-11-03 17:22:16 +0100hendursa1(~weechat@user/hendursaga) (Quit: hendursa1)
2021-11-03 17:22:17 +0100 <janus> i am a correctness fetishist, i must obsess over even the smallest probabilities.
2021-11-03 17:23:05 +0100hendursaga(~weechat@user/hendursaga)
2021-11-03 17:24:06 +0100 <geekosaur> QM is not for you, then :)
2021-11-03 17:24:32 +0100 <geekosaur> better stay away from quantum computers
2021-11-03 17:25:58 +0100gentauro(~gentauro@user/gentauro)
2021-11-03 17:26:40 +0100dsamperi(~dsamperi@2603-7000-3b42-5400-b0ad-0af8-2f41-da4e.res6.spectrum.com)
2021-11-03 17:28:26 +0100guniberas(~guniberas@42.191.188.121) (Ping timeout: 268 seconds)
2021-11-03 17:28:27 +0100ec(~ec@gateway/tor-sasl/ec)
2021-11-03 17:28:42 +0100v01d4lph4(~v01d4lph4@user/v01d4lph4)
2021-11-03 17:29:43 +0100MQ-17J(~MQ-17J@d192-24-122-179.try.wideopenwest.com)
2021-11-03 17:31:30 +0100lortabac(~lortabac@88.125.6.227) (Quit: WeeChat 2.8)
2021-11-03 17:31:38 +0100wei2912(~wei2912@138.75.71.147) (Quit: Lost terminal)
2021-11-03 17:32:26 +0100tv(~tv@user/tv) (Ping timeout: 260 seconds)
2021-11-03 17:33:22 +0100v01d4lph4(~v01d4lph4@user/v01d4lph4) (Ping timeout: 268 seconds)
2021-11-03 17:33:23 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 268 seconds)
2021-11-03 17:36:27 +0100pop3(~pop3@user/pop3)
2021-11-03 17:37:01 +0100eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
2021-11-03 17:37:02 +0100gentauro(~gentauro@user/gentauro) (Read error: Connection reset by peer)
2021-11-03 17:37:21 +0100gentauro(~gentauro@user/gentauro)
2021-11-03 17:37:46 +0100 <janus> but QM isn't different from classical mechanics in that regard. our weather models can't rule out freak events either.
2021-11-03 17:38:06 +0100pop3(~pop3@user/pop3) (Remote host closed the connection)
2021-11-03 17:38:14 +0100boxscape_(~boxscape_@i59F67A7D.versanet.de)
2021-11-03 17:39:31 +0100 <janus> the culture around QM may have a larger focus on calculating the exact probabilities, so in that regard it may be more rigorous than weather forecasting
2021-11-03 17:40:03 +0100 <geekosaur> meh. we know exactly what's wrong with the weather models. we just can't fix it sanely
2021-11-03 17:40:06 +0100pop3(~pop3@user/pop3)
2021-11-03 17:40:23 +0100 <geekosaur> (you need perfect and exact topographical information, for one)
2021-11-03 17:40:48 +0100 <dolio> Right, it's just impossible to measure precisely enough.
2021-11-03 17:41:16 +0100betelgeuse(~betelgeus@94-225-47-8.access.telenet.be)
2021-11-03 17:42:18 +0100jespada(~jespada@190.7.36.46)
2021-11-03 17:45:48 +0100tv(~tv@user/tv)
2021-11-03 17:47:18 +0100ec(~ec@gateway/tor-sasl/ec) (Ping timeout: 276 seconds)
2021-11-03 17:51:15 +0100tv(~tv@user/tv) (Ping timeout: 268 seconds)
2021-11-03 17:51:39 +0100tv(~tv@user/tv)
2021-11-03 17:55:16 +0100zincy(~tom@2a00:23c8:970c:4801:b46f:f559:1389:e031) (Read error: Connection reset by peer)
2021-11-03 17:56:24 +0100jpds(~jpds@gateway/tor-sasl/jpds) (Ping timeout: 276 seconds)
2021-11-03 17:57:36 +0100shidima(~shidima@84-104-108-90.cable.dynamic.v4.ziggo.nl)
2021-11-03 17:57:41 +0100pretty_dumm_guy(trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655)
2021-11-03 17:58:12 +0100ec(~ec@gateway/tor-sasl/ec)
2021-11-03 17:59:53 +0100tzh(~tzh@c-24-21-73-154.hsd1.wa.comcast.net)
2021-11-03 18:00:30 +0100MQ-17J(~MQ-17J@d192-24-122-179.try.wideopenwest.com) (Ping timeout: 268 seconds)
2021-11-03 18:00:53 +0100eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
2021-11-03 18:01:35 +0100v01d4lph4(~v01d4lph4@user/v01d4lph4)
2021-11-03 18:03:29 +0100 <monochrom> "What have I done?" :)
2021-11-03 18:04:45 +0100MQ-17J(~MQ-17J@d192-24-122-179.try.wideopenwest.com)
2021-11-03 18:05:14 +0100morphism(~ret@static.247.176.55.162.clients.your-server.de)
2021-11-03 18:05:25 +0100yauhsien(~yauhsien@61-231-61-245.dynamic-ip.hinet.net)
2021-11-03 18:06:41 +0100v01d4lph4(~v01d4lph4@user/v01d4lph4) (Ping timeout: 268 seconds)
2021-11-03 18:07:26 +0100 <maerwald> weather forecasting is only important if you actually leave the house
2021-11-03 18:08:44 +0100mbuf(~Shakthi@122.173.251.242) (Quit: Leaving)
2021-11-03 18:09:05 +0100zincy(~tom@2a00:23c8:970c:4801:b46f:f559:1389:e031)
2021-11-03 18:09:29 +0100 <monochrom> ObHaskell: Analogically, IO is only important if you leave purity >:) https://ro-che.info/ccc/9
2021-11-03 18:10:39 +0100zincy(~tom@2a00:23c8:970c:4801:b46f:f559:1389:e031) (Read error: Connection reset by peer)
2021-11-03 18:12:09 +0100tv(~tv@user/tv) (Read error: Connection reset by peer)
2021-11-03 18:13:35 +0100jpds(~jpds@gateway/tor-sasl/jpds)
2021-11-03 18:15:15 +0100ec(~ec@gateway/tor-sasl/ec) (Ping timeout: 276 seconds)
2021-11-03 18:15:23 +0100Null_A(~null_a@2601:645:8700:2290:41b5:a1c:d64e:bf9)
2021-11-03 18:20:47 +0100ec(~ec@gateway/tor-sasl/ec)
2021-11-03 18:20:50 +0100zincy(~tom@2a00:23c8:970c:4801:5b6a:e81b:79dc:f684)
2021-11-03 18:21:29 +0100boxscape_(~boxscape_@i59F67A7D.versanet.de) (Ping timeout: 268 seconds)
2021-11-03 18:22:21 +0100zincy(~tom@2a00:23c8:970c:4801:5b6a:e81b:79dc:f684) (Read error: Connection reset by peer)
2021-11-03 18:23:53 +0100zincy(~tom@2a00:23c8:970c:4801:5b6a:e81b:79dc:f684)
2021-11-03 18:25:25 +0100zincy(~tom@2a00:23c8:970c:4801:5b6a:e81b:79dc:f684) (Read error: Connection reset by peer)
2021-11-03 18:28:26 +0100pretty_dumm_guy(trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) (Ping timeout: 260 seconds)
2021-11-03 18:28:30 +0100drdo(~drdo@roach0.drdo.eu) (Quit: Ping timeout (120 seconds))
2021-11-03 18:29:20 +0100pretty_dumm_guy(trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655)
2021-11-03 18:29:30 +0100azeem(~azeem@emp-89-199.eduroam.uu.se) (Ping timeout: 268 seconds)
2021-11-03 18:30:24 +0100tv(~tv@user/tv)
2021-11-03 18:30:51 +0100zincy(~tom@2a00:23c8:970c:4801:5b6a:e81b:79dc:f684)
2021-11-03 18:31:53 +0100azeem(~azeem@2a00:801:3cb:bcc0:53ee:32be:de18:8352)
2021-11-03 18:32:21 +0100drdo(~drdo@roach0.drdo.eu)
2021-11-03 18:32:24 +0100zincy(~tom@2a00:23c8:970c:4801:5b6a:e81b:79dc:f684) (Read error: Connection reset by peer)
2021-11-03 18:33:24 +0100cfricke(~cfricke@user/cfricke)
2021-11-03 18:35:05 +0100v01d4lph4(~v01d4lph4@user/v01d4lph4)
2021-11-03 18:36:01 +0100gdown(~gavin@h69-11-248-109.kndrid.broadband.dynamic.tds.net)
2021-11-03 18:36:42 +0100jpds(~jpds@gateway/tor-sasl/jpds) (Ping timeout: 276 seconds)
2021-11-03 18:36:44 +0100cosimone(~user@2001:b07:ae5:db26:c24a:d20:4d91:1e20)
2021-11-03 18:36:54 +0100xff0x(~xff0x@2001:1a81:53fb:b000:1550:cc88:ac55:5459) (Ping timeout: 268 seconds)
2021-11-03 18:37:20 +0100xff0x(~xff0x@port-92-193-245-245.dynamic.as20676.net)
2021-11-03 18:38:45 +0100chomwitt(~chomwitt@2a02:587:dc02:9f00:12c3:7bff:fe6d:d374) (Ping timeout: 268 seconds)
2021-11-03 18:39:58 +0100jpds(~jpds@gateway/tor-sasl/jpds)
2021-11-03 18:39:59 +0100v01d4lph4(~v01d4lph4@user/v01d4lph4) (Ping timeout: 268 seconds)
2021-11-03 18:41:26 +0100gdown(~gavin@h69-11-248-109.kndrid.broadband.dynamic.tds.net) (Remote host closed the connection)
2021-11-03 18:42:04 +0100gdown(~gavin@h69-11-248-109.kndrid.broadband.dynamic.tds.net)
2021-11-03 18:42:06 +0100cosimone(~user@2001:b07:ae5:db26:c24a:d20:4d91:1e20) (Quit: ERC (IRC client for Emacs 27.1))
2021-11-03 18:43:14 +0100cosimone(~user@2001:b07:ae5:db26:c24a:d20:4d91:1e20)
2021-11-03 18:46:05 +0100Topsi(~Tobias@dyndsl-095-033-088-198.ewe-ip-backbone.de)
2021-11-03 18:47:04 +0100jespada(~jespada@190.7.36.46) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2021-11-03 18:48:15 +0100kadir(~kadir@95.7.9.203)
2021-11-03 18:48:42 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-11-03 18:49:47 +0100cfricke(~cfricke@user/cfricke) (Quit: WeeChat 3.3)
2021-11-03 18:50:27 +0100zincy(~tom@2a00:23c8:970c:4801:5b6a:e81b:79dc:f684)
2021-11-03 18:51:00 +0100jpds(~jpds@gateway/tor-sasl/jpds) (Ping timeout: 276 seconds)
2021-11-03 18:51:20 +0100zincy(~tom@2a00:23c8:970c:4801:5b6a:e81b:79dc:f684) (Read error: Connection reset by peer)
2021-11-03 18:51:55 +0100kadir(~kadir@95.7.9.203) ()
2021-11-03 18:53:28 +0100zaquest(~notzaques@5.128.210.178) (Quit: Leaving)
2021-11-03 18:54:03 +0100jpds(~jpds@gateway/tor-sasl/jpds)
2021-11-03 18:55:33 +0100aegon(~mike@174.127.249.180)
2021-11-03 18:56:56 +0100ubert(~Thunderbi@2a02:8109:9880:303c:ca5b:76ff:fe29:f233) (Remote host closed the connection)
2021-11-03 18:58:48 +0100ec(~ec@gateway/tor-sasl/ec) (Ping timeout: 276 seconds)
2021-11-03 18:59:06 +0100desantra(~skykanin@user/skykanin)
2021-11-03 18:59:36 +0100zaquest(~notzaques@5.128.210.178)
2021-11-03 18:59:41 +0100mmhat(~mmh@55d4baf7.access.ecotel.net)
2021-11-03 19:00:24 +0100neurocyte0132889(~neurocyte@user/neurocyte) (Quit: The Lounge - https://thelounge.chat)
2021-11-03 19:00:28 +0100cosimone(~user@2001:b07:ae5:db26:c24a:d20:4d91:1e20) (Remote host closed the connection)
2021-11-03 19:00:57 +0100cosimone(~user@2001:b07:ae5:db26:c24a:d20:4d91:1e20)
2021-11-03 19:01:18 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-11-03 19:01:18 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Changing host)
2021-11-03 19:01:18 +0100wroathe(~wroathe@user/wroathe)
2021-11-03 19:01:45 +0100desantra(~skykanin@user/skykanin) (Client Quit)
2021-11-03 19:02:47 +0100Null_A(~null_a@2601:645:8700:2290:41b5:a1c:d64e:bf9) (Ping timeout: 264 seconds)
2021-11-03 19:03:11 +0100neurocyte0132889(~neurocyte@212.232.84.130)
2021-11-03 19:03:11 +0100neurocyte0132889(~neurocyte@212.232.84.130) (Changing host)
2021-11-03 19:03:11 +0100neurocyte0132889(~neurocyte@user/neurocyte)
2021-11-03 19:06:30 +0100wroathe(~wroathe@user/wroathe) (Ping timeout: 268 seconds)
2021-11-03 19:07:01 +0100chomwitt(~chomwitt@ppp-2-85-245-90.home.otenet.gr)
2021-11-03 19:07:06 +0100yrlnry(~mjd@pool-100-11-2-80.phlapa.fios.verizon.net) (Ping timeout: 268 seconds)
2021-11-03 19:07:07 +0100raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 268 seconds)
2021-11-03 19:08:34 +0100Jing(~textual@2604:a840:3::1021) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2021-11-03 19:09:03 +0100wonko(~wjc@user/wonko)
2021-11-03 19:09:20 +0100ec(~ec@gateway/tor-sasl/ec)
2021-11-03 19:09:59 +0100vicfred(~vicfred@user/vicfred)
2021-11-03 19:10:01 +0100v01d4lph4(~v01d4lph4@user/v01d4lph4)
2021-11-03 19:11:25 +0100nschoe(~quassel@178.251.84.79) (Ping timeout: 268 seconds)
2021-11-03 19:14:01 +0100dsamperi(~dsamperi@2603-7000-3b42-5400-b0ad-0af8-2f41-da4e.res6.spectrum.com) (Quit: Konversation terminated!)
2021-11-03 19:15:08 +0100shidima(~shidima@84-104-108-90.cable.dynamic.v4.ziggo.nl) (Ping timeout: 268 seconds)
2021-11-03 19:16:22 +0100v01d4lph4(~v01d4lph4@user/v01d4lph4) (Ping timeout: 268 seconds)
2021-11-03 19:16:47 +0100kadir(~kadir@95.7.9.203)
2021-11-03 19:19:18 +0100mei(~mei@user/mei)
2021-11-03 19:22:12 +0100kadir(~kadir@95.7.9.203) (WeeChat 3.3)
2021-11-03 19:22:32 +0100eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
2021-11-03 19:23:09 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 268 seconds)
2021-11-03 19:26:06 +0100dschrempf(~dominik@070-207.dynamic.dsl.fonira.net)
2021-11-03 19:26:45 +0100eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
2021-11-03 19:26:45 +0100ec(~ec@gateway/tor-sasl/ec) (Ping timeout: 276 seconds)
2021-11-03 19:28:42 +0100jpds(~jpds@gateway/tor-sasl/jpds) (Ping timeout: 276 seconds)
2021-11-03 19:29:06 +0100tv(~tv@user/tv) (Ping timeout: 260 seconds)
2021-11-03 19:30:37 +0100canta(~canta@user/canta) (Quit: WeeChat 2.8)
2021-11-03 19:30:47 +0100desantra(~skykanin@user/skykanin)
2021-11-03 19:30:49 +0100canta(~canta@user/canta)
2021-11-03 19:31:30 +0100jpds(~jpds@gateway/tor-sasl/jpds)
2021-11-03 19:31:39 +0100 <tomjaguarpaw> Does Haddock always show a class's members even if they're not exported? I want to export the class but not the members and I'd rather Haddock didn't show them ...
2021-11-03 19:32:10 +0100hololeap(~hololeap@user/hololeap) (Remote host closed the connection)
2021-11-03 19:32:16 +0100ubert(~Thunderbi@p200300ecdf4fca4ae019fddc82d0353e.dip0.t-ipconnect.de)
2021-11-03 19:33:16 +0100 <dsal> tomjaguarpaw: I don't think so, but can't you just try to see if it does what you expct?
2021-11-03 19:33:19 +0100dsamperi(~dsamperi@2603-7000-3b42-5400-ad06-78d6-67f9-46d9.res6.spectrum.com)
2021-11-03 19:33:28 +0100 <tomjaguarpaw> Well yeah, I tried it and it doesn't do what I want
2021-11-03 19:33:36 +0100hololeap(~hololeap@user/hololeap)
2021-11-03 19:33:44 +0100 <tomjaguarpaw> It's the autogenerated "minimal complete definition" section that shows them
2021-11-03 19:33:52 +0100 <tomjaguarpaw> I wonder if I can tell Haddock to suppress that
2021-11-03 19:34:59 +0100Gurkenglas(~Gurkengla@dslb-002-203-144-204.002.203.pools.vodafone-ip.de)
2021-11-03 19:35:18 +0100 <tomjaguarpaw> Seems to be this issue https://github.com/haskell/haddock/issues/330
2021-11-03 19:35:22 +0100dsamperi(~dsamperi@2603-7000-3b42-5400-ad06-78d6-67f9-46d9.res6.spectrum.com) (Client Quit)
2021-11-03 19:35:49 +0100dsamperi(~dsamperi@2603-7000-3b42-5400-ad06-78d6-67f9-46d9.res6.spectrum.com)
2021-11-03 19:36:26 +0100yrlnry(~mjd@pool-74-109-22-90.phlapa.fios.verizon.net)
2021-11-03 19:37:26 +0100ec(~ec@gateway/tor-sasl/ec)
2021-11-03 19:37:26 +0100johnny_sitar(~artur@078088015209.bialystok.vectranet.pl) (Ping timeout: 260 seconds)
2021-11-03 19:42:13 +0100tv(~tv@user/tv)
2021-11-03 19:45:26 +0100 <dsal> Yeah, I don't like these things that look like bugs, but you can see both arguments. I had a few of those with HPC yesterday.
2021-11-03 19:46:10 +0100hgolden(~hgolden2@cpe-172-114-81-123.socal.res.rr.com) (Remote host closed the connection)
2021-11-03 19:46:18 +0100jumper149(~jumper149@80.240.31.34) (Ping timeout: 260 seconds)
2021-11-03 19:46:35 +0100dschrempf(~dominik@070-207.dynamic.dsl.fonira.net) (Ping timeout: 268 seconds)
2021-11-03 19:47:25 +0100hgolden(~hgolden2@cpe-172-114-81-123.socal.res.rr.com)
2021-11-03 19:47:29 +0100jumper149(~jumper149@80.240.31.34)
2021-11-03 19:48:27 +0100boxscape_(~boxscape_@i59F67A7D.versanet.de)
2021-11-03 19:50:12 +0100chele(~chele@user/chele) (Remote host closed the connection)
2021-11-03 19:52:23 +0100johnny_sitar(~artur@078088015209.bialystok.vectranet.pl)
2021-11-03 19:54:35 +0100ByronJohnson(~bairyn@50-250-232-19-static.hfc.comcastbusiness.net) (Ping timeout: 268 seconds)
2021-11-03 19:54:42 +0100ec(~ec@gateway/tor-sasl/ec) (Ping timeout: 276 seconds)
2021-11-03 19:57:37 +0100waleee(~waleee@h-98-128-228-119.NA.cust.bahnhof.se)
2021-11-03 19:59:10 +0100ub(~Thunderbi@p548c9652.dip0.t-ipconnect.de)
2021-11-03 20:00:03 +0100ubert(~Thunderbi@p200300ecdf4fca4ae019fddc82d0353e.dip0.t-ipconnect.de) (Remote host closed the connection)
2021-11-03 20:00:03 +0100ububert
2021-11-03 20:01:23 +0100lavaman(~lavaman@98.38.249.169)
2021-11-03 20:04:10 +0100ec(~ec@gateway/tor-sasl/ec)
2021-11-03 20:05:06 +0100jpds(~jpds@gateway/tor-sasl/jpds) (Ping timeout: 276 seconds)
2021-11-03 20:05:22 +0100ByronJohnson(~bairyn@50-250-232-19-static.hfc.comcastbusiness.net)
2021-11-03 20:06:19 +0100lavaman(~lavaman@98.38.249.169) (Ping timeout: 268 seconds)
2021-11-03 20:08:10 +0100jpds(~jpds@gateway/tor-sasl/jpds)
2021-11-03 20:08:58 +0100zincy(~zincy@2a00:23c8:970c:4801:8d15:54ac:ed5f:296c)
2021-11-03 20:09:24 +0100sprout(~quassel@2a02:a467:ccd6:1:58cd:ccc2:f66c:e3b) (Ping timeout: 268 seconds)
2021-11-03 20:10:52 +0100yauhsien(~yauhsien@61-231-61-245.dynamic-ip.hinet.net) (Remote host closed the connection)
2021-11-03 20:11:28 +0100yauhsien(~yauhsien@61-231-61-245.dynamic-ip.hinet.net)
2021-11-03 20:13:25 +0100zincy(~zincy@2a00:23c8:970c:4801:8d15:54ac:ed5f:296c) (Remote host closed the connection)
2021-11-03 20:13:31 +0100epolanski(uid312403@id-312403.helmsley.irccloud.com) (Quit: Connection closed for inactivity)
2021-11-03 20:14:51 +0100jpds(~jpds@gateway/tor-sasl/jpds) (Ping timeout: 276 seconds)
2021-11-03 20:16:48 +0100yauhsien(~yauhsien@61-231-61-245.dynamic-ip.hinet.net) (Ping timeout: 268 seconds)
2021-11-03 20:17:41 +0100cosimone(~user@2001:b07:ae5:db26:c24a:d20:4d91:1e20) (Remote host closed the connection)
2021-11-03 20:18:20 +0100cosimone(~user@2001:b07:ae5:db26:c24a:d20:4d91:1e20)
2021-11-03 20:22:00 +0100ec(~ec@gateway/tor-sasl/ec) (Ping timeout: 276 seconds)
2021-11-03 20:24:41 +0100zincy(~zincy@2a00:23c8:970c:4801:8d15:54ac:ed5f:296c)
2021-11-03 20:26:39 +0100johnny_sitar(~artur@078088015209.bialystok.vectranet.pl) (Ping timeout: 268 seconds)
2021-11-03 20:27:48 +0100Topsi(~Tobias@dyndsl-095-033-088-198.ewe-ip-backbone.de) (Read error: Connection reset by peer)
2021-11-03 20:29:15 +0100pgib(~textual@99-148-134-85.lightspeed.knvltn.sbcglobal.net)
2021-11-03 20:29:38 +0100jpds(~jpds@gateway/tor-sasl/jpds)
2021-11-03 20:32:11 +0100zincy(~zincy@2a00:23c8:970c:4801:8d15:54ac:ed5f:296c) (Remote host closed the connection)
2021-11-03 20:32:43 +0100pavonia(~user@user/siracusa)
2021-11-03 20:32:49 +0100ec(~ec@gateway/tor-sasl/ec)
2021-11-03 20:33:42 +0100mc47(~mc47@xmonad/TheMC47) (Remote host closed the connection)
2021-11-03 20:34:48 +0100sprout(~quassel@2a02:a467:ccd6:1:58cd:ccc2:f66c:e3b)
2021-11-03 20:39:37 +0100sprout(~quassel@2a02:a467:ccd6:1:58cd:ccc2:f66c:e3b) (Ping timeout: 268 seconds)
2021-11-03 20:42:12 +0100favonia(~favonia@user/favonia) (Remote host closed the connection)
2021-11-03 20:43:23 +0100justachejustUnited
2021-11-03 20:45:04 +0100favonia(~favonia@user/favonia)
2021-11-03 20:48:26 +0100Pickchea(~private@user/pickchea)
2021-11-03 20:49:33 +0100Skyfire(~pyon@user/pyon) (Quit: WeeChat 3.3)
2021-11-03 20:50:17 +0100burnsidesLlama(~burnsides@dhcp168-012.wadham.ox.ac.uk) (Remote host closed the connection)
2021-11-03 20:50:54 +0100burnsidesLlama(~burnsides@dhcp168-012.wadham.ox.ac.uk)
2021-11-03 20:55:39 +0100burnsidesLlama(~burnsides@dhcp168-012.wadham.ox.ac.uk) (Ping timeout: 268 seconds)
2021-11-03 20:58:38 +0100yauhsien(~yauhsien@61-231-61-245.dynamic-ip.hinet.net)
2021-11-03 20:59:35 +0100econo(uid147250@user/econo)
2021-11-03 21:00:44 +0100 <AWizzArd> When reading about linear types I saw the Socket example, where they had `data State = Unbound | Bound | Listening | …` and then `data Socket (s :: State)`.
2021-11-03 21:00:51 +0100 <AWizzArd> Now we can have types such as `Socket Unbound` or `Socket Listening` etc.
2021-11-03 21:00:58 +0100 <AWizzArd> I wonder how we could find an equivalent in Java. Would Socket be a base class and BoundSocket and ClosedSocket be sub classes? Then a close method would be in the base class, while in Haskell close :: ∀s. Socket s → IOL ω ()
2021-11-03 21:01:39 +0100doyougnu(~doyougnu@c-73-25-202-122.hsd1.or.comcast.net)
2021-11-03 21:02:47 +0100 <dminuoso> Having read some opinions, I really wish linear types wouldt have gotten into GHC
2021-11-03 21:03:39 +0100yauhsien(~yauhsien@61-231-61-245.dynamic-ip.hinet.net) (Ping timeout: 268 seconds)
2021-11-03 21:04:08 +0100zincy(~zincy@2a00:23c8:970c:4801:8d15:54ac:ed5f:296c)
2021-11-03 21:04:18 +0100 <AWizzArd> dminuoso: Why? They seem to be very useful for resource management.
2021-11-03 21:04:44 +0100eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
2021-11-03 21:04:54 +0100 <AWizzArd> Saving tons of unit tests that are so big that they themselve need their own tests.
2021-11-03 21:05:38 +0100juhp(~juhp@128.106.188.220) (Ping timeout: 260 seconds)
2021-11-03 21:05:53 +0100 <dminuoso> It will promote more fragmentation in libraries, where you will have linear versions, non-linear versions
2021-11-03 21:06:28 +0100 <jumper149> Isn't linear stuff "downwards-"compatible?
2021-11-03 21:06:28 +0100 <dminuoso> And if non-linear versions die out due to lack of maintenance, you're suddenly forced to turn on big hammer extensions just to use said library..
2021-11-03 21:07:06 +0100juhp(~juhp@128.106.188.220)
2021-11-03 21:07:30 +0100ec(~ec@gateway/tor-sasl/ec) (Ping timeout: 276 seconds)
2021-11-03 21:07:47 +0100 <cigsender> AWizzArd: your example as shown doesn't have much to do with linear types, though, just DataKinds
2021-11-03 21:08:18 +0100 <jumper149> (aside from linear functions in contravariant position)
2021-11-03 21:08:20 +0100 <dminuoso> AWizzArd: Also, I think its not that silver bullet some people make it out to be.
2021-11-03 21:08:50 +0100 <dminuoso> AWizzArd: For a large portion of problems it will not catch realistic bugs, while adding huge complexity and complicate diagnostics a lot.
2021-11-03 21:09:07 +0100 <dminuoso> It's sort of why "encode invariant XYZ it into the type system" doesn't tend to go well.
2021-11-03 21:09:28 +0100 <dminuoso> It looks like a cool idea initially, but very rapidly you will drastically increase complexity and reduce the people able or willing to even touch/contribute to your code.
2021-11-03 21:09:54 +0100 <dminuoso> And even decrease likelihood of people using your api, if haddock gives complicated type signatures
2021-11-03 21:10:37 +0100 <cigsender> dminuoso: better error messages from GHC will help with this
2021-11-03 21:11:03 +0100drownbes89(~drownbes@79-206-50-195.sta.estpak.ee)
2021-11-03 21:11:22 +0100 <sm> if it's a big enough problem and the community is clear enough, they can always be removed
2021-11-03 21:11:56 +0100 <dminuoso> cigsender: These error messages will require linear type competency still to understand.
2021-11-03 21:12:14 +0100drownbes89(~drownbes@79-206-50-195.sta.estpak.ee) (Client Quit)
2021-11-03 21:12:18 +0100 <dminuoso> sm: When has a GHC extension ever been removed for any reason other than being subsumed or completely buggy?
2021-11-03 21:12:45 +0100 <cigsender> dminuoso: DataKinds without linear types still allows you to encode type-level invariants, though
2021-11-03 21:13:09 +0100 <dminuoso> And what AWizzArd said is not really true.
2021-11-03 21:13:30 +0100 <dminuoso> cigsender: Yes, and it's awfully terrible.
2021-11-03 21:13:40 +0100 <sm> I'm just saying it actually is possible
2021-11-03 21:13:42 +0100 <dminuoso> Type signatures become completely unreadable for anyone who is not the author
2021-11-03 21:14:06 +0100 <dminuoso> Errors become unreadable for anyone who is not intimiately familiar with the implementation and with how GHC type inference works
2021-11-03 21:14:27 +0100 <dminuoso> And your linearly generalized code will have type signatures that newcomers will not be able to understand
2021-11-03 21:14:30 +0100Pickchea(~private@user/pickchea) (Quit: Leaving)
2021-11-03 21:14:45 +0100 <dminuoso> linear types is a type of extension that will have a *very* noticeable impact on APIs.
2021-11-03 21:18:04 +0100ec(~ec@gateway/tor-sasl/ec)
2021-11-03 21:18:07 +0100 <maerwald> dminuoso: the authors of the proposal said it's an experiment and the community will decide if it's successful, which I find confusing. It's a one-way street. You'll never be able to remove it
2021-11-03 21:19:29 +0100 <maerwald> oh wait, I haven't read the backlog carefully
2021-11-03 21:19:37 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-11-03 21:19:39 +0100 <dminuoso> maerwald: Well, of course the community decides whether an extension is successful. Success is merely a measurement of how many people will use it.
2021-11-03 21:20:19 +0100 <maerwald> this was rather about DT, but the same principle applies to linear types
2021-11-03 21:20:43 +0100 <maerwald> at least it will allow some things in streaming libraries that's not possible right now I think
2021-11-03 21:20:49 +0100 <maerwald> whether that's a net gain, I don't know
2021-11-03 21:20:57 +0100 <dminuoso> Liquid Haskell is one of those things that is very amazing because it's so non-intrusive. Dont care about it? Well, it all exists just in comments!
2021-11-03 21:21:05 +0100 <dminuoso> You want it? Add your LH assertions all day long.
2021-11-03 21:21:16 +0100 <dminuoso> It doesn't impact me as a user in the slightest.
2021-11-03 21:21:54 +0100 <maerwald> opt-in is always great... if it works well
2021-11-03 21:22:10 +0100 <dminuoso> maerwald: Yeah. I think to some degree we're the victim of a language that has a long history of being a testbed of experimentation, despite Haskell having succeeded in becoming a language widely used in production.
2021-11-03 21:22:29 +0100 <awpr> if the API that's using linear types is a pure linear interface to mutable arrays, making it opt-in is just throwing away memory safety
2021-11-03 21:22:42 +0100burnsidesLlama(~burnsides@dhcp168-012.wadham.ox.ac.uk)
2021-11-03 21:22:53 +0100jocke-l(jocke-l@a.x0.is) (Quit: WeeChat 2.3)
2021-11-03 21:22:56 +0100 <awpr> my view on the point of adding linear types is to make it possible to write safe APIs that would otherwise have been unacceptably unsafe
2021-11-03 21:22:57 +0100 <dminuoso> awpr: It's not just throwing away memory safety, it adds usability and decreases complicated diagnostics.
2021-11-03 21:23:06 +0100jocke-l(jocke-l@a.x0.is)
2021-11-03 21:23:30 +0100 <dminuoso> Depending on the exact ergonomics in your library, linear types can easily make writing trivial and morally correct code impossible in the presence of exceptions
2021-11-03 21:23:40 +0100 <maerwald> the alternative is to create a new language that's inter-operable with haskell
2021-11-03 21:23:42 +0100 <awpr> diagnostics and ease of use are nice, but if you have to delete referential transparency to get them, it's not worth it
2021-11-03 21:24:12 +0100 <awpr> if opt-in were a viable option, we'd already have pure interfaces to mutable arrays today
2021-11-03 21:24:31 +0100 <dminuoso> Well we do with ST?
2021-11-03 21:24:47 +0100 <awpr> that's a monadic, imperative interface
2021-11-03 21:24:55 +0100 <dminuoso> Ah I see what you mean
2021-11-03 21:25:06 +0100 <boxscape_> hm it doesn't seem impossible to make linear types opt-in - I think you'd just need a flag that unsafely coerces multiplicities when they don't match'/
2021-11-03 21:25:13 +0100 <boxscape_> s/'\//?
2021-11-03 21:25:38 +0100 <awpr> yeah, it's surely possible to implement (in fact I'd guess `-fdefer-type-errors` would do it already)
2021-11-03 21:25:52 +0100 <dminuoso> -fdefer-type-errors is quite the hammer to sling
2021-11-03 21:26:00 +0100 <dminuoso> It's the nuclear option.
2021-11-03 21:26:11 +0100 <awpr> I would also guess it'd be feasible to add `-fdefer-multiplicity-errors`
2021-11-03 21:26:32 +0100 <dminuoso> What about type signatures in haddock on hackage then?
2021-11-03 21:26:47 +0100 <dminuoso> Can we add a non-linear mode to simply hide the linear type stuff?
2021-11-03 21:26:54 +0100 <boxscape_> -fdefer-type-errors doesn't do it in ghc at least, but you can unsafeCoerce an argument to a function without problem, so it seems possible in principle
2021-11-03 21:27:17 +0100 <boxscape_> dminuoso this applies to some other features as well - it'd be nice if maybe there were two versions of haddock html, a simplified view that hides advanced features, and the complete view
2021-11-03 21:27:21 +0100 <awpr> I don't have a good answer for that. multiplicity-polymorphic signatures would be a bit of a burden to newcomers indeed
2021-11-03 21:27:24 +0100 <dminuoso> Like, I dont mind linear types at all if it's not just opt-in, but the gory details hidden away for me if I dont care for them
2021-11-03 21:27:55 +0100 <AWizzArd> cigsender: yes, I just stumbled upon this while reading about LT and wondered what a good mapping to Java would be.
2021-11-03 21:28:20 +0100burnsidesLlama(~burnsides@dhcp168-012.wadham.ox.ac.uk) (Ping timeout: 268 seconds)
2021-11-03 21:28:25 +0100 <dminuoso> boxscape_: Im not sure what other things this could apply on.
2021-11-03 21:28:37 +0100 <awpr> this is like a turbocharged version of the debate on generalizing stuff in Prelude to Foldable, for one
2021-11-03 21:28:57 +0100 <boxscape_> runtime reps is the first thing that comes to my mind but I think I thought about this relating to something else in the past as well
2021-11-03 21:29:37 +0100 <dminuoso> awpr: Well sure, I mean I guess library vendors could expose a linear generalized API in one module, and a monomorphized version in another. But the reality is that this requires discipline from package authors.
2021-11-03 21:29:47 +0100favonia(~favonia@user/favonia) (Ping timeout: 264 seconds)
2021-11-03 21:29:53 +0100 <dminuoso> boxscape_: You mean levity polymorphism?
2021-11-03 21:30:06 +0100 <dminuoso> Yes, and in fact GHCi already does hide some of it
2021-11-03 21:30:18 +0100 <awpr> yeah, good point. it sort of goes in the direction of duplicating all the libraries, though
2021-11-03 21:30:21 +0100 <boxscape_> right, I'm calling it that because the flag is called -fprint-explicit-runtime-reps
2021-11-03 21:30:52 +0100 <dminuoso> Neat, I should probably enable that one by default here.
2021-11-03 21:30:52 +0100 <awpr> maybe a suitable JS-side Haddock feature could address this sort of thing: a checkbox or something equivalent to prune out the multiplicity stuff
2021-11-03 21:31:01 +0100 <AWizzArd> dminuoso: do you have an example of a high increase in complexity? To me LT seem to be not deeply complex. They will provide documentation for the reader, about arguments being consumed exactly once. They can help to manage a sequence of steps with DataKinds. Later on they can take load away from the GC.
2021-11-03 21:32:43 +0100 <dminuoso> AWizzArd: Im a newcomer, I want to write sockets stuff. Apparently awizz-sockets is the new hot library to use. Oh whats that % or Multiciplity. (Assuming I havent ran away screaming...) Oh linear types. Let me google that...
2021-11-03 21:33:00 +0100 <maerwald> lol
2021-11-03 21:33:05 +0100 <dminuoso> And here the journey ends in yet another customer saying "Haskell is a research language" or "You need to be a mathematician to understand Haskell"
2021-11-03 21:33:17 +0100 <AWizzArd> dminuoso: What Morpheus said: welcome to the real world :)
2021-11-03 21:33:36 +0100 <boxscape_> dminuoso okay actually the "something else" I had in mind was also levity polymorphism.
2021-11-03 21:33:45 +0100 <boxscape_> I just misremembered
2021-11-03 21:33:56 +0100 <AWizzArd> I don't care much about newcomers. Paul Graham wanted a language for experts. You are newbie for a short time, the rest of your career you’ll be an expert.
2021-11-03 21:34:27 +0100 <boxscape_> it has to be at least accommodating enough to newcomers that they don't quit before becoming experts
2021-11-03 21:34:35 +0100 <dminuoso> AWizzArd: Without an influx of new developers, the language will over time die out. There's going to be less people maintaining packages and writing new ones.
2021-11-03 21:34:38 +0100 <boxscape_> (well, a reasonable fraction of them, anyway)
2021-11-03 21:34:40 +0100 <dsal> I've been a newbie for decades. I don't expect to ever be an expert in anything.
2021-11-03 21:34:40 +0100 <AWizzArd> dminuoso: newcomer uses my hyped lib, accidentally makes a mistake by forgetting to close the socket. This thing doesn't compile.
2021-11-03 21:34:42 +0100 <dminuoso> I for one want my dependencies maintained.
2021-11-03 21:34:50 +0100 <dminuoso> So yes, I want a constant influx of new developers in Haskell
2021-11-03 21:35:04 +0100 <dminuoso> I can do some work on my dependencies, but there's just far too much to do it alone.
2021-11-03 21:35:05 +0100dsalused += in a haskell program for the first time today
2021-11-03 21:35:18 +0100 <AWizzArd> dminuoso: sure, new people need to join and they will study Haskell *because* it has Linear Types.
2021-11-03 21:35:32 +0100 <AWizzArd> dminuoso: Rust seems to be very popular and is way more complex than the LT in Haskell.
2021-11-03 21:35:39 +0100 <dminuoso> AWizzArd: Is GHC going to tell you. "Here, you forgot to close your socket. Look at line XYZ to see why"?
2021-11-03 21:35:49 +0100 <dminuoso> Or what is GHC going to tell you *realistically*?
2021-11-03 21:36:09 +0100dsalimagines hoards of python programmers waiting for linear types before jumping to Haskell
2021-11-03 21:36:11 +0100 <dminuoso> Besides, I dont buy this problem to be such a big problem.
2021-11-03 21:36:12 +0100 <AWizzArd> dminuoso: I hope yes, it will tell me such things in the future. It will even generate the code for me from the signature, or give me support.
2021-11-03 21:36:21 +0100 <boxscape_> * Couldn't match type 'Many with 'One; Expected: a %1 -> a Actual: a -> a
2021-11-03 21:36:31 +0100 <dminuoso> ^-
2021-11-03 21:36:34 +0100 <dminuoso> Yes. And now what?
2021-11-03 21:36:35 +0100 <AWizzArd> dminuoso: the socket thing is not big, but you want to first read from a CSV file and only then dump it into MongoDB.
2021-11-03 21:37:05 +0100 <dminuoso> AWizzArd: Yes. I can do that without linear types.
2021-11-03 21:37:17 +0100 <dminuoso> Reading from a file and stuffing it into the database seems trivial enough.
2021-11-03 21:37:38 +0100yauhsien(~yauhsien@118-167-41-229.dynamic-ip.hinet.net)
2021-11-03 21:37:50 +0100 <AWizzArd> dminuoso: how will you protect your code against changing it so that you write to the DB *before* reading the file? Unit tests, but those are more complex than the LT.
2021-11-03 21:37:59 +0100 <dsal> readCSV >>= withDBConnection storeCSVStuff
2021-11-03 21:38:29 +0100 <boxscape_> you might be able to write a custom type error to tell users when they forgot to close the socket
2021-11-03 21:38:39 +0100 <boxscape_> at least if the custom type error machinery gets improved further
2021-11-03 21:38:40 +0100 <AWizzArd> dsal: withDB storeNonsense >> readCSV >>= withDB storeCSVStuff
2021-11-03 21:38:59 +0100 <dminuoso> boxscape_: Fun fact, while I love optics type errors, at time inference has a way of backtracking so much, I get the most illegible type unification errors before optics type error helpers can resolve.
2021-11-03 21:39:00 +0100 <dolio> AWizzArd: Is this a real problem?
2021-11-03 21:39:09 +0100 <dolio> It seems like not a real problem.
2021-11-03 21:39:17 +0100 <dminuoso> boxscape_: So realistically while it improves the situation in 90%, it drastically reduces diagnostic quality in the other 10%
2021-11-03 21:39:21 +0100 <dminuoso> Numbers based on feelings.
2021-11-03 21:39:23 +0100 <boxscape_> hm, interesting
2021-11-03 21:39:51 +0100alzgh(~alzgh@user/alzgh) (Remote host closed the connection)
2021-11-03 21:40:02 +0100 <AWizzArd> dolio: yes it may happen rarely. But tell me: where is the problem with LT here? It is trivial to make this sequence of steps work. An implementation will only be correct if you read the csv and write to the db.
2021-11-03 21:40:11 +0100alzgh(~alzgh@user/alzgh)
2021-11-03 21:40:23 +0100 <AWizzArd> dolio: also why should we use Haskell in the first place if we now suddenly begin to argue that our code starts getting too correct? (:
2021-11-03 21:40:26 +0100 <dminuoso> AWizzArd: And why do you conjure up a complex type system to solve what's a trivial non-issue?
2021-11-03 21:41:01 +0100 <AWizzArd> dminuoso: where is the complexity? We have a few simple steps with DataKinds and throwing a %1 into the mix.
2021-11-03 21:41:07 +0100 <awpr> I also don't see how linear types would address that use-case
2021-11-03 21:41:09 +0100 <dminuoso> I mean yes, I can encode a lot of invariants into my type system too. For example, I can express making a modification first before writing to a database in my type system. But why do I actually need this protection?
2021-11-03 21:41:11 +0100 <dsal> AWizzArd: Can you provide a more concrete example? I read about LT a while back and barely remember how it's useful. I don't exactly understand your CSV/DB situation.
2021-11-03 21:41:40 +0100 <dolio> The problem is how much extra effort it costs and how much additional correctness is ensured, and how likely it is to be incorrect in the first place.
2021-11-03 21:41:47 +0100 <dminuoso> AWizzArd: First off, DataKind promoted types are invisible on Hackage.
2021-11-03 21:42:02 +0100 <dolio> Just saying that maximal correctness is desirable without taking any other context into account is not a good argument.
2021-11-03 21:42:10 +0100 <dminuoso> Indeed.
2021-11-03 21:42:30 +0100yauhsien(~yauhsien@118-167-41-229.dynamic-ip.hinet.net) (Ping timeout: 260 seconds)
2021-11-03 21:42:36 +0100 <AWizzArd> dolio: the extra effort seems to be a couple of minutes. And I don't see here how it made things really complex. Yes, it will take a couple of days to get trained in LT. Monads were possibly harder.
2021-11-03 21:42:56 +0100 <dolio> How did you come up with that?
2021-11-03 21:43:19 +0100 <dolio> Did you implement a complete CSV library with linear types?
2021-11-03 21:43:21 +0100 <dminuoso> AWizzArd: I have yet to find someone give me a *real* world problem that frequently produces bugs that end up in production, that linear types would have solved.
2021-11-03 21:43:23 +0100 <AWizzArd> dolio: so far the examples I saw seem to indicate that. How did you come up with the idea that it would add "much" complexity.
2021-11-03 21:43:31 +0100 <dminuoso> The commonly cited sockets example is quite poor for several reasons.
2021-11-03 21:43:45 +0100sprout(~quassel@2a02:a467:ccd6:1:58cd:ccc2:f66c:e3b)
2021-11-03 21:44:08 +0100 <AWizzArd> dminuoso: I see the use in areas where a sequence of resources need to be accessed, in a specific order.
2021-11-03 21:44:50 +0100 <awpr> is the suggestion that you'd have a token that must be used in order to access DBs or read files, and the type of the token would encode the order they must be accessed in?
2021-11-03 21:44:56 +0100 <AWizzArd> I have a lot of code where I access a file once. Why not show this in the type sig?
2021-11-03 21:44:59 +0100 <dminuoso> AWizzArd: Okay. And consider those cases, imagine an actual implementation, what are the odds of someone changing the order down the line incorrectly in the first place?
2021-11-03 21:45:05 +0100jushur(~human@user/jushur) (Quit: ¯\_(ツ)_/¯)
2021-11-03 21:45:08 +0100 <dminuoso> Im not saying I dont see what it can do
2021-11-03 21:45:37 +0100 <AWizzArd> dminuoso: rare bugs when it is a single function. I just see that C coders all the time say that they free memory twice, or use it after freeing it.
2021-11-03 21:45:40 +0100 <awpr> this is also not a fundamentally new capability of linear types; you can do the same type-state sort of thing with an indexed state monad
2021-11-03 21:45:51 +0100 <dminuoso> I know that you can encode invariants in linear types or the type system in general. But more often than not that is trying to guard against scenarios you very well can imagine already. In my experience, bugs tend to be things you couldn't imagine before hand.
2021-11-03 21:45:55 +0100 <AWizzArd> This is not because of their three-liners. It seems to happen when code is distributed.
2021-11-03 21:46:09 +0100 <awpr> but nobody does, because it doesn't really carry its weight in this instance
2021-11-03 21:46:26 +0100 <dminuoso> AWizzArd: See, with memory management I can absolutely see the value of such type systems.
2021-11-03 21:46:31 +0100 <AWizzArd> My point is that the Haskell variant looks simpler than what Rust has. Rust enforces the use everywhere. How many users does Rust have? 5x more than Haskell? Dunno.
2021-11-03 21:46:54 +0100 <AWizzArd> dminuoso: in Rust everything is a resource, you can't opt out (if I understand it correctly).
2021-11-03 21:46:56 +0100 <awpr> Rust doesn't encode the order of interacting with databases and files in types
2021-11-03 21:47:14 +0100 <awpr> at least, not in any code I've seen
2021-11-03 21:47:19 +0100 <AWizzArd> awpr: Rust is not doing anything. But you can do this in your API.
2021-11-03 21:47:25 +0100 <dminuoso> In Rust?
2021-11-03 21:47:27 +0100 <awpr> can you?
2021-11-03 21:47:38 +0100 <AWizzArd> I would assume it. No?
2021-11-03 21:47:42 +0100 <maerwald> dminuoso: streams that consume resources on draining. After you drain a stream, the stream is still there and can be passed around. Trying to drain it again will cause an IO exception
2021-11-03 21:47:57 +0100 <awpr> I don't know how to do that in Rust presently. not willing to claim it's impossible, but it's not clear to me
2021-11-03 21:47:59 +0100 <maerwald> that would be a use case for streamly
2021-11-03 21:48:27 +0100 <dminuoso> maerwald: Okay, now the real question is: This type of bug would most easily be caught by your test suite anyhow. Why do we want a linear type system instead?
2021-11-03 21:48:28 +0100 <maerwald> because once a stream is drained, the resources is cleaned up
2021-11-03 21:48:40 +0100wonko(~wjc@user/wonko) (Ping timeout: 268 seconds)
2021-11-03 21:48:59 +0100 <awpr> I suppose you could have a struct that manufactures restricted mutable references to itself, and is only willing to exchange them in a particular order
2021-11-03 21:49:03 +0100 <maerwald> dminuoso: I don't think so. If you have a large codebase and store streams in several places, you can never be sure which stream is safe to consume.
2021-11-03 21:49:27 +0100burnsidesLlama(~burnsides@dhcp168-012.wadham.ox.ac.uk)
2021-11-03 21:49:34 +0100 <dminuoso> maerwald: Fair enough. Ill have to ponder about it, but it does sound like a viable use case perhaps.
2021-11-03 21:49:40 +0100 <maerwald> of course you can avoid it... but it requires discipline
2021-11-03 21:49:52 +0100 <maerwald> and people are not disciplined
2021-11-03 21:50:09 +0100 <kuribas> I am getting: Couldn't match type ‘ann’ with ‘()’
2021-11-03 21:50:14 +0100 <maerwald> but if I imagine more widespread use of streams in APIs...
2021-11-03 21:50:19 +0100 <maerwald> I def. will run into such issues I think
2021-11-03 21:50:24 +0100 <kuribas> No place where the "()" comes from. Instead a +- 100 line do block.
2021-11-03 21:50:34 +0100 <dolio> Anyhow, I'm not saying linear types aren't useful. I'm saying the 40 character hypotheticals I'm seeing are not compelling.
2021-11-03 21:50:34 +0100 <dminuoso> maerwald: Are such undisciplined people disciplined enough to write multiplicity polymorphic code?
2021-11-03 21:50:41 +0100 <dolio> Show me a real, substantial example.
2021-11-03 21:50:42 +0100 <maerwald> well...
2021-11-03 21:50:43 +0100 <dminuoso> Also how does linear types fare in the presence of exceptions? :)
2021-11-03 21:51:02 +0100 <AWizzArd> As a sketch (please let me know if this is nonsense): we want to implement readCSVandDumpIntoMongo :: UnreadCSV %1 -> UnusedDBConn %1 -> IOL UsedDBConn And we have a readCSV :: UsreadCSV -> IOL ReadCSV and a dumpToMongo :: ReadCSV -> UnusedDBConn -> IOL UsedDBConn
2021-11-03 21:51:03 +0100ec(~ec@gateway/tor-sasl/ec) (Ping timeout: 276 seconds)
2021-11-03 21:51:31 +0100 <dminuoso> AWizzArd: The example simply does not sound convincing, it's too artificial. You're trying to show what linear types can do, not show a real world problem it would help to solve.
2021-11-03 21:52:07 +0100 <awpr> kuribas: probably something declares a pretty-printer doc with a () annotation type unnecessarily?
2021-11-03 21:52:09 +0100 <dminuoso> Start with something some people might do, and then introduce the frequent interaction that can cause a bug down the road. And then conjure up linear types as the hero on the field
2021-11-03 21:52:10 +0100 <AWizzArd> dminuoso: this example shows what many web handlers in the backend do. A series of steps.
2021-11-03 21:52:50 +0100 <kuribas> awpr: no, it comes from "my" code. I just don't know which one.
2021-11-03 21:52:55 +0100 <AWizzArd> dminuoso: Well, we just have to play around with them to see if it works. But to me it seems that I would regularily be able to use them to improve documentation and have implicit test cases.
2021-11-03 21:53:00 +0100 <dminuoso> AWizzArd: So the reality is going to be. I have `readCSV :: FilePath -> IO MyCSV` `saveToMongo :: Conn -> MyCSV -> IO ()`
2021-11-03 21:53:20 +0100 <kuribas> awpr: I which ghc would pinpoint don't the "thing" that has the type, being it a literal, or a some function with explicit type signature.
2021-11-03 21:53:45 +0100 <awpr> it's surprising if it doesn't
2021-11-03 21:53:46 +0100 <dminuoso> kuribas: No, because of how inference works.
2021-11-03 21:53:48 +0100 <AWizzArd> dminuoso: in this example you could call saveToMongo multiple times. And you can't prove that you did call it?
2021-11-03 21:54:06 +0100 <dminuoso> kuribas: I encountered this problem frequently today when reworking prettyprinter annotations just today! :)
2021-11-03 21:54:12 +0100 <kuribas> dminuoso: even with inference, it comes from "somewhere".
2021-11-03 21:54:13 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 268 seconds)
2021-11-03 21:54:20 +0100 <dminuoso> AWizzArd: Yeah, but given your example that's more than unlikely to actually happen
2021-11-03 21:54:21 +0100 <dolio> AWizzArd: GHC can already tell if you don't use a variable.
2021-11-03 21:54:25 +0100 <AWizzArd> If save2Mongo was the only way to retrieve a UsedMongoConn and when you return it then there is no way around calling it.
2021-11-03 21:54:34 +0100 <kuribas> dminuoso: unless it's a type variable...
2021-11-03 21:54:51 +0100pgib(~textual@99-148-134-85.lightspeed.knvltn.sbcglobal.net) (Ping timeout: 268 seconds)
2021-11-03 21:54:54 +0100 <dminuoso> I generally dont accidentally "copy paste a linear 3 times". It would be caught a) during writing, b) during `git add -p`, c) during the code review, and possible d) by our general test suites (perhaps)
2021-11-03 21:55:04 +0100 <AWizzArd> dolio: yes, good point, we can get a reminder here. Still we could call it too early.
2021-11-03 21:55:10 +0100 <dminuoso> kuribas: it doesnt have to tell you where it comes from
2021-11-03 21:55:21 +0100 <dolio> How are you going to call it without the data?
2021-11-03 21:55:22 +0100 <dminuoso> kuribas: What you're asking for is type error slices, something GHC doesnt have
2021-11-03 21:55:24 +0100 <dminuoso> but should have
2021-11-03 21:55:37 +0100 <AWizzArd> dolio: with bad data.
2021-11-03 21:55:54 +0100 <AWizzArd> dolio: literals in the code
2021-11-03 21:56:11 +0100 <dolio> I don't believe this is a serious, common problem.
2021-11-03 21:56:20 +0100ec(~ec@gateway/tor-sasl/ec)
2021-11-03 21:56:40 +0100 <AWizzArd> dolio: it will be rare, yet adding a %1 seems not to be a true time sink.
2021-11-03 21:56:49 +0100 <dolio> I don't believe that claim, either.
2021-11-03 21:56:52 +0100 <dminuoso> AWizzArd: Look, I have experimented plenty with encoding invariants in the type system. At the end I started to learn, that what I did was add unnecessary safety to guard against non-realistic scenarios. And more than that, they tend to be scenarios you already know, think of. Bugs tend to be things you *dont* think about.
2021-11-03 21:57:07 +0100 <dminuoso> That last bit is something Ive had to learn over and over again over many years
2021-11-03 21:57:33 +0100eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
2021-11-03 21:57:57 +0100 <AWizzArd> dminuoso: I guess in two years we’ll see if the LT will be used or not and if they turn out to be beneficial or not. I am very optimistic.
2021-11-03 21:58:32 +0100 <dminuoso> And often a simple architectural change can accomplish the same thing. You want to ensure data is used? Abstract, write a simple `a = f =<< x`. There it's incredibly trivial to validate that `a` is going to use `x` only once, and feed it precisely into `f`.
2021-11-03 21:58:33 +0100 <AWizzArd> dminuoso: put a reminder into Todoist and let's chat about this in 2 years again. Maybe I’ll have changed my view by then :)
2021-11-03 21:59:44 +0100 <boxscape_> reading a commit message in linear-base and wow, what a sentence "Any multiplicity involving multiplicity multiplication will hit the limitations of the type checker currently"
2021-11-03 22:00:23 +0100 <boxscape_> (I read it in https://github.com/tweag/linear-base/commit/f3aff2f9242d05295294a7999a21bcf183bc5ea9 )
2021-11-03 22:01:31 +0100 <dminuoso> AWizzArd: To me what would be convincing is this: We have a client XYZ and they tasked us to write some software. Because this software handles financial transactions, we want guarantees that the state machine driving this software is correct. So this is the place where I might look at formal methods of any kind.
2021-11-03 22:02:07 +0100 <dminuoso> And that's when you start comparing costs of various formal methods, weighing them against risks of bugs/violations.
2021-11-03 22:02:48 +0100 <AWizzArd> dminuoso: would be an interesting case. I see besides those more mundane examples a potential use in tracking stateful backend services, which give us worse than C manual memory management: distributed memory management.
2021-11-03 22:02:49 +0100 <boxscape_> It does seem neat that you could get some performance benefits from using linear types (since it allows you to mutate instead of copying), though I'm not aware of any GHC-related work on that
2021-11-03 22:02:53 +0100 <maerwald> formal methods ultimately verify your binaries :p
2021-11-03 22:02:59 +0100 <dminuoso> boxscape_: You mean like Clean?
2021-11-03 22:03:04 +0100 <boxscape_> probably
2021-11-03 22:03:07 +0100 <dolio> dminuoso: You're wrong on one account. I still make plenty of mistakes that I know to look for. :þ
2021-11-03 22:03:21 +0100 <dminuoso> dolio: heh! :)
2021-11-03 22:03:21 +0100 <AWizzArd> boxscape_: so far I think LT make the code run slower, unfortunately ;)
2021-11-03 22:03:22 +0100kuribas(~user@ptr-25vy0i9fcjh581tavd9.18120a2.ip6.access.telenet.be) (Quit: ERC (IRC client for Emacs 26.3))
2021-11-03 22:03:41 +0100 <AWizzArd> boxscape_: but maybe in 2-3 years it can take load away from the GC. Sounds at least plausible.
2021-11-03 22:03:49 +0100geekosaurremains unconvinced by LT
2021-11-03 22:03:53 +0100 <boxscape_> AWizzArd compilation, but I imagine it doesn't make code slower at runtime, since the multiplicities are probably erased?
2021-11-03 22:04:02 +0100juri_(~juri@178.63.35.222) (Ping timeout: 265 seconds)
2021-11-03 22:04:10 +0100 <boxscape_> or are there some optimizations it prevents?
2021-11-03 22:04:15 +0100 <dminuoso> boxscape_: The linear types GHC introduces is separate from what Clean does.
2021-11-03 22:04:43 +0100 <AWizzArd> boxscape_: I don't know too much about the implementation details, but their new IO variant possibly needs to do some runtime checking. Not sure.
2021-11-03 22:04:55 +0100 <geekosaur> also taking load away form the GC apparently only applies to a very limited set of vector operations, not to most things that can be garbage collected
2021-11-03 22:04:57 +0100 <boxscape_> dminuoso I vaguely remember reading this article which talks about Haskell's linear types, but also mentions "This is still future work" https://www.tweag.io/blog/2017-03-13-linear-types/
2021-11-03 22:05:12 +0100 <boxscape_> (and it's about performance)
2021-11-03 22:05:25 +0100 <dolio> Yeah, deallocating things as soon as they're not live is not even an optimization all the time.
2021-11-03 22:05:34 +0100alzgh(~alzgh@user/alzgh) (Remote host closed the connection)
2021-11-03 22:05:38 +0100 <AWizzArd> geekosaur: would that require a borrow system as in Rust?
2021-11-03 22:05:46 +0100 <dminuoso> boxscape_: If I remember correctly, they were on about *manual* memory management.
2021-11-03 22:05:54 +0100alzgh(~alzgh@user/alzgh)
2021-11-03 22:06:03 +0100 <dminuoso> boxscape_: What Clean does, is introduce these mutations in the graph reduction transparently
2021-11-03 22:06:08 +0100 <boxscape_> hm okay
2021-11-03 22:06:16 +0100 <AWizzArd> geekosaur: the linear type only says that a value must be consumed exactly once, but it could still be shared, so we still need a GC?
2021-11-03 22:06:53 +0100 <geekosaur> right, lnear types do not change how a value is shared because it may only be linearly used in a few places
2021-11-03 22:07:00 +0100 <dminuoso> boxscape_: So this is the beauty of Clean. You just write code as usual, and if the compiler can prove something is no longer referenceable beyond, then it will introduce mutation operations instead.
2021-11-03 22:07:11 +0100 <boxscape_> I see, that is nice
2021-11-03 22:07:15 +0100lavaman(~lavaman@98.38.249.169)
2021-11-03 22:07:19 +0100 <dolio> Not sure about that. Is it possible for a linear value to end up in two closures, but for there to be a proof that only one of them actually uses it?
2021-11-03 22:07:21 +0100 <geekosaur> (linearity would have to be part of the type and not the fuunction arrow otherwise)
2021-11-03 22:07:59 +0100 <AWizzArd> geekosaur: what I had in mind was: if it is known that a value is not shared and we know it is used exactly once then the compiler could add our malloc/free calls and this value stays completly out of gc.
2021-11-03 22:08:09 +0100 <dminuoso> There's some really cool optimizations out there. A personal favourite is speculative optimizations in HotSpot
2021-11-03 22:08:16 +0100 <dminuoso> Especially how they are implemented
2021-11-03 22:08:26 +0100 <geekosaur> ghc really doesn't know hhow to deal with that currently, AWizzArd
2021-11-03 22:08:53 +0100 <geekosaur> except in the case where memory is directly allocated with malloc or alloca
2021-11-03 22:08:59 +0100 <dminuoso> AWizzArd: Yes, and you couldnt do that with linear types in Haskell. Clean does this by the way.
2021-11-03 22:09:05 +0100 <awpr> malloc and free are probably slower than allocating a GC'd value and immediately letting it become garbage
2021-11-03 22:09:10 +0100 <geekosaur> but then you're subscribing to entirely manual memory management
2021-11-03 22:09:32 +0100 <awpr> long-lived values are where the cost comes from in Haskell's GC
2021-11-03 22:09:38 +0100acidjnk_new(~acidjnk@p200300d0c726702918431f3aede9e057.dip0.t-ipconnect.de)
2021-11-03 22:10:19 +0100 <dminuoso> Arguably, short-lived objects can be cheaper in our GC.
2021-11-03 22:10:22 +0100 <geekosaur> right, values allocated and immediately freed never leave the nursery and deallocation is basically a pointer adjustment. if's when they get moved to a igher level of the heap that things become expensive
2021-11-03 22:10:26 +0100 <dminuoso> Since they dont need to be freed
2021-11-03 22:10:42 +0100 <awpr> right, that's what I was trying to say
2021-11-03 22:11:45 +0100 <dsamperi> Linear types sound very interesting and related to crypto (can only spend once). Lambda Man (Wadler) suggests this is studied at IOHK.
2021-11-03 22:11:53 +0100 <dminuoso> And even long lived is not that big of a problem if you have a generational garbage collector
2021-11-03 22:11:59 +0100 <dminuoso> So you can dampen the impact of it
2021-11-03 22:12:23 +0100 <maerwald> dsamperi: yet, IOHK doesn't employ formal methods on *binaries* (the things that actually run the blockchain) :p
2021-11-03 22:13:25 +0100lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2021-11-03 22:13:42 +0100lavaman(~lavaman@98.38.249.169)
2021-11-03 22:13:48 +0100lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2021-11-03 22:14:07 +0100lavaman(~lavaman@98.38.249.169)
2021-11-03 22:14:14 +0100lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2021-11-03 22:14:30 +0100lavaman(~lavaman@98.38.249.169)
2021-11-03 22:14:37 +0100lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2021-11-03 22:14:51 +0100lavaman(~lavaman@98.38.249.169)
2021-11-03 22:14:59 +0100lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2021-11-03 22:15:15 +0100lavaman(~lavaman@98.38.249.169)
2021-11-03 22:15:22 +0100lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2021-11-03 22:15:59 +0100 <AWizzArd> geekosaur: is this so far mostly a suspicion that LT could add complexity that is not worth the benefits? Or are there already concrete examples where this can be demonstrated?
2021-11-03 22:17:01 +0100 <maerwald> AWizzArd: all of the existing type level hackery in current haskell? :D
2021-11-03 22:17:21 +0100 <geekosaur> currently LT slows things down noticeably even when it's not in use (because it might be used) while adding relatively little (because nothing really tries to take advantage of it)
2021-11-03 22:18:21 +0100ec(~ec@gateway/tor-sasl/ec) (Ping timeout: 276 seconds)
2021-11-03 22:18:23 +0100 <boxscape_> % data R a where R :: a %1 -> R a deriving Show
2021-11-03 22:18:23 +0100 <yahb> boxscape_:
2021-11-03 22:18:25 +0100 <boxscape_> % :t R
2021-11-03 22:18:25 +0100 <yahb> boxscape_: a -> R a
2021-11-03 22:18:30 +0100 <boxscape_> do linearity annotations get ignored in constructors?
2021-11-03 22:18:38 +0100 <monochrom> I think we already know that the LinearType extension specifically is not delivering on any of the theoretical safety promises right now, and unlikely to within the next 5 years, hell probably never will.
2021-11-03 22:18:59 +0100 <monochrom> This is due to "what if you're in IO and you throw an IO exception".
2021-11-03 22:19:21 +0100 <maerwald> hide under the table
2021-11-03 22:20:10 +0100 <monochrom> So my bet is that the only hopeful bet is on LinearType opening opportunities for code optimization. And note that even this one is in the future.
2021-11-03 22:21:03 +0100 <monochrom> I mean, I am not even talking about using unsafePerformIO to violate purity, or unsafeCoerce to lie about types. I'm just throwing an honest-to-God-legal exception.
2021-11-03 22:21:56 +0100 <monochrom> If no one has even written a GHC proposal to fix this, then all your "linear types express an invariant" talks are vapourware.
2021-11-03 22:21:58 +0100 <tomjaguarpaw> geekosaur: Why does "might be used" mean it has to slow things down?
2021-11-03 22:22:16 +0100 <awpr> hmm, that's a tough issue. seems to me a monad that can throw exceptions is just not a linear monad (i.e. does not have a multiplicity of 1 on its >>=)
2021-11-03 22:22:26 +0100safinaskar(~safinaska@109-252-90-153.nat.spd-mgts.ru)
2021-11-03 22:22:26 +0100 <awpr> which... is a bit of an issue for IO
2021-11-03 22:22:34 +0100 <safinaskar> > 2 + 2
2021-11-03 22:22:35 +0100 <lambdabot> 4
2021-11-03 22:23:34 +0100 <dsamperi> > sqrt 2
2021-11-03 22:23:35 +0100 <lambdabot> 1.4142135623730951
2021-11-03 22:23:37 +0100 <geekosaur> tomjaguarpaw, the way ghc deals with extensions, they're actually always active. so you have all this machinery that is being invoked to at least some extent, to no point. if only as "is this active?" checks in the hot path (function application)
2021-11-03 22:23:48 +0100 <safinaskar> jackdk: thanks for answer! (on curl)
2021-11-03 22:24:36 +0100 <geekosaur> and they *are* active during parsing, they just throw an exception if actually used. which may slow parsing
2021-11-03 22:24:53 +0100zincy(~zincy@2a00:23c8:970c:4801:8d15:54ac:ed5f:296c) (Remote host closed the connection)
2021-11-03 22:24:58 +0100fendor_(~fendor@178.115.63.67.wireless.dyn.drei.com) (Remote host closed the connection)
2021-11-03 22:25:26 +0100 <boxscape_> this should be quantifiable, ghc has performance tests in CI IIRC
2021-11-03 22:26:12 +0100 <geekosaur> right, and last I heard (not that I have heard recently, nor can I test this myself on underpowered hardware that can't even build ghc) the slowdown is noticeable
2021-11-03 22:26:58 +0100 <geekosaur> alos quantifying it would require finding and removing the linear types patches without disturbing anything else, but they're quite invasive
2021-11-03 22:27:43 +0100 <boxscape_> you think looking at the LT merge request isn't enough?
2021-11-03 22:28:14 +0100 <geekosaur> it might be
2021-11-03 22:28:26 +0100 <geekosaur> hm, presumably there are perf notes on the commit
2021-11-03 22:28:39 +0100 <geekosaur> wonder if it can be brougt up on the perf dashboard
2021-11-03 22:29:12 +0100ec(~ec@gateway/tor-sasl/ec)
2021-11-03 22:29:16 +0100 <geekosaur> sadly I don't even remember the url of the perf dashboard
2021-11-03 22:29:19 +0100 <boxscape_> https://gitlab.haskell.org/ghc/ghc/-/merge_requests/852/pipelines this is the CI pipelines in the MR, but I'm not well versed enough to have found if the data we're interested in exists so far
2021-11-03 22:32:09 +0100safinaskar(~safinaska@109-252-90-153.nat.spd-mgts.ru) ()
2021-11-03 22:32:22 +0100 <boxscape_> geekosaur ah, there's a comment on the MR. "~1% more allocation; ~5% slowdown (though, with time measurement, a large pinch of salt should be taken. I've sometimes had better results, @AndreasK also reported worse times to us)"
2021-11-03 22:32:34 +0100 <boxscape_> ( https://gitlab.haskell.org/ghc/ghc/-/merge_requests/852#note_280407 )
2021-11-03 22:32:35 +0100safinaskar(~safinaska@109-252-90-153.nat.spd-mgts.ru)
2021-11-03 22:33:02 +0100safinaskar(~safinaska@109-252-90-153.nat.spd-mgts.ru) ()
2021-11-03 22:34:07 +0100 <boxscape_> "Our estimate, based on old benchmarks, is that overall the time slowdown should be half that of [this test], but we haven't been able to confirm at all."
2021-11-03 22:34:27 +0100vicfred(~vicfred@user/vicfred) (Quit: Leaving)
2021-11-03 22:38:21 +0100zincy(~zincy@2a00:23c8:970c:4801:8d15:54ac:ed5f:296c)
2021-11-03 22:42:01 +0100dsamperi(~dsamperi@2603-7000-3b42-5400-ad06-78d6-67f9-46d9.res6.spectrum.com) (Quit: Konversation terminated!)
2021-11-03 22:42:51 +0100jumper149(~jumper149@80.240.31.34) (Quit: WeeChat 3.3)
2021-11-03 22:43:35 +0100chomwitt(~chomwitt@ppp-2-85-245-90.home.otenet.gr) (Remote host closed the connection)
2021-11-03 22:45:54 +0100lavaman(~lavaman@98.38.249.169)
2021-11-03 22:47:33 +0100pop3(~pop3@user/pop3) (Remote host closed the connection)
2021-11-03 22:48:10 +0100pop3(~pop3@user/pop3)
2021-11-03 22:48:15 +0100ec(~ec@gateway/tor-sasl/ec) (Ping timeout: 276 seconds)
2021-11-03 22:50:57 +0100lavaman(~lavaman@98.38.249.169) (Ping timeout: 268 seconds)
2021-11-03 22:53:49 +0100ec(~ec@gateway/tor-sasl/ec)
2021-11-03 22:54:00 +0100desantra(~skykanin@user/skykanin) (Quit: WeeChat 3.3)
2021-11-03 23:02:00 +0100cosimone(~user@2001:b07:ae5:db26:c24a:d20:4d91:1e20) (Remote host closed the connection)
2021-11-03 23:04:05 +0100FinnElija(~finn_elij@user/finn-elija/x-0085643) (Remote host closed the connection)
2021-11-03 23:05:13 +0100cosimone`(~user@93-34-133-207.ip49.fastwebnet.it)
2021-11-03 23:07:32 +0100epolanski(uid312403@id-312403.helmsley.irccloud.com)
2021-11-03 23:08:04 +0100FinnElija(~finn_elij@user/finn-elija/x-0085643)
2021-11-03 23:12:22 +0100takuan(~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection)
2021-11-03 23:14:48 +0100favonia(~favonia@user/favonia)
2021-11-03 23:15:12 +0100michalz(~michalz@185.246.204.109) (Remote host closed the connection)
2021-11-03 23:15:26 +0100doyougnu(~doyougnu@c-73-25-202-122.hsd1.or.comcast.net) (Ping timeout: 260 seconds)
2021-11-03 23:16:59 +0100zincy(~zincy@2a00:23c8:970c:4801:8d15:54ac:ed5f:296c) (Remote host closed the connection)
2021-11-03 23:18:09 +0100ec(~ec@gateway/tor-sasl/ec) (Ping timeout: 276 seconds)
2021-11-03 23:19:22 +0100bitdex(~bitdex@gateway/tor-sasl/bitdex)
2021-11-03 23:20:32 +0100lavaman(~lavaman@98.38.249.169)
2021-11-03 23:20:36 +0100Codaraxis(~Codaraxis@user/codaraxis)
2021-11-03 23:22:50 +0100gehmehgeh(~user@user/gehmehgeh) (Quit: Leaving)
2021-11-03 23:25:30 +0100lavaman(~lavaman@98.38.249.169) (Ping timeout: 268 seconds)
2021-11-03 23:28:29 +0100ec(~ec@gateway/tor-sasl/ec)
2021-11-03 23:29:26 +0100mei(~mei@user/mei) (Ping timeout: 260 seconds)
2021-11-03 23:34:00 +0100soft-warm(~soft-warm@ip70-179-31-26.sd.sd.cox.net)
2021-11-03 23:35:54 +0100soft-warm(~soft-warm@ip70-179-31-26.sd.sd.cox.net) (Client Quit)
2021-11-03 23:43:34 +0100 <mjrosenb> Is there a shorthand for do {expr; return Nothing}
2021-11-03 23:43:54 +0100dumptruckman(~dumptruck@45-79-175-133.ip.linodeusercontent.com)
2021-11-03 23:44:03 +0100 <dumptruckman> Yay, I found it
2021-11-03 23:44:08 +0100 <monochrom> expr *> return Nothing
2021-11-03 23:44:15 +0100 <mjrosenb> like, I could clearly use >>=, and a lambda (or const, I guess) but those seem ugly
2021-11-03 23:44:19 +0100 <mjrosenb> monochrom: danke.
2021-11-03 23:44:42 +0100 <mjrosenb> Is that in Control.Monad, or someplace fancier?
2021-11-03 23:44:44 +0100 <hpc> expr *> pure Nothing
2021-11-03 23:44:50 +0100 <monochrom> Control.Applicative
2021-11-03 23:45:05 +0100 <monochrom> You can also use >>, it's already in Prelude
2021-11-03 23:45:13 +0100acidjnk_new(~acidjnk@p200300d0c726702918431f3aede9e057.dip0.t-ipconnect.de) (Ping timeout: 268 seconds)
2021-11-03 23:45:15 +0100 <Axman6> expr $> Nothing
2021-11-03 23:45:25 +0100 <Axman6> @hoogle ($>)
2021-11-03 23:45:26 +0100 <lambdabot> Data.Functor ($>) :: Functor f => f a -> b -> f b
2021-11-03 23:45:26 +0100 <lambdabot> Data.Functor.Compat ($>) :: Functor f => f a -> b -> f b
2021-11-03 23:45:26 +0100 <lambdabot> Data.Functor.Apply ($>) :: Functor f => f a -> b -> f b
2021-11-03 23:45:37 +0100 <Axman6> there's also...
2021-11-03 23:45:43 +0100 <Axman6> @hoogle (<$)
2021-11-03 23:45:43 +0100 <lambdabot> Prelude (<$) :: Functor f => a -> f b -> f a
2021-11-03 23:45:43 +0100 <lambdabot> Control.Monad (<$) :: Functor f => a -> f b -> f a
2021-11-03 23:45:43 +0100 <lambdabot> Control.Applicative (<$) :: Functor f => a -> f b -> f a
2021-11-03 23:45:58 +0100 <Axman6> > "Hello!" <$ Just True
2021-11-03 23:45:59 +0100 <lambdabot> Just "Hello!"
2021-11-03 23:46:02 +0100 <[exa]> fmap to the left!
2021-11-03 23:46:05 +0100 <[exa]> fmap to the right!
2021-11-03 23:46:06 +0100rekahsoft(~rekahsoft@cpe0008a20f982f-cm64777d666260.cpe.net.cable.rogers.com)
2021-11-03 23:46:07 +0100 <[exa]> party!
2021-11-03 23:46:13 +0100 <Axman6> \o\
2021-11-03 23:46:29 +0100 <Axman6> \/o/
2021-11-03 23:46:45 +0100ec(~ec@gateway/tor-sasl/ec) (Ping timeout: 276 seconds)
2021-11-03 23:46:51 +0100 <[exa]> <$ <* $> *> bottom top!
2021-11-03 23:46:51 +0100 <Axman6> glguy: how do I escape / at the beginning of a line D:
2021-11-03 23:47:03 +0100 <hpc> / /like this
2021-11-03 23:47:12 +0100 <Axman6> I tried that
2021-11-03 23:47:14 +0100 <[exa]> Axman6: I just put a space there
2021-11-03 23:47:17 +0100 <[exa]> no one notices
2021-11-03 23:47:20 +0100 <hpc> / /o/
2021-11-03 23:47:21 +0100 <dsal> @pl . undo do { expr ; return Nothing }
2021-11-03 23:47:21 +0100 <lambdabot> (line 1, column 1):
2021-11-03 23:47:21 +0100 <lambdabot> unexpected "."
2021-11-03 23:47:21 +0100 <lambdabot> expecting white space, "()", natural, identifier, lambda abstraction or expression
2021-11-03 23:47:23 +0100 <hpc> /o/
2021-11-03 23:47:24 +0100 <mjrosenb> \say / with say
2021-11-03 23:47:32 +0100 <Axman6> /o/
2021-11-03 23:47:39 +0100 <monochrom> I think lambdabot's . is @
2021-11-03 23:47:41 +0100 <mjrosenb> / with /say?
2021-11-03 23:47:42 +0100 <Axman6> /say ftw
2021-11-03 23:47:59 +0100 <mjrosenb> wrong slash. I may have written too much tex recently
2021-11-03 23:48:10 +0100 <dsal> I thought . worked...
2021-11-03 23:48:35 +0100Cajun(~Cajun@user/cajun) (Quit: Client closed)
2021-11-03 23:48:36 +0100 <geekosaur> @. pl undo do { expr ; return Nothing }
2021-11-03 23:48:38 +0100 <Axman6> @. undo pl f g h x = (f x) (g x)
2021-11-03 23:48:38 +0100 <lambdabot> expr >> return Nothing
2021-11-03 23:48:40 +0100 <lambdabot> f = fix ((const .) . ap)
2021-11-03 23:48:52 +0100 <Axman6> thanks for the better example
2021-11-03 23:48:57 +0100 <dsal> pl doesn't do anything fancy anyway.
2021-11-03 23:49:19 +0100 <hpc> pl is anti-fancy - if you give it a poorly typed expression it still comes up with an answer
2021-11-03 23:49:23 +0100 <geekosaur> and doesn't know the Applicative-basee combinators
2021-11-03 23:49:36 +0100 <hpc> @pl \x -> x x
2021-11-03 23:49:36 +0100 <lambdabot> join id
2021-11-03 23:49:54 +0100 <[exa]> -.-
2021-11-03 23:50:06 +0100 <boxscape_> @pl (\x -> x x) (\x -> x x)
2021-11-03 23:50:09 +0100 <lambdabot> ap id id (ap id id)
2021-11-03 23:50:09 +0100 <lambdabot> optimization suspended, use @pl-resume to continue.
2021-11-03 23:50:20 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-11-03 23:50:24 +0100 <hpc> @pl-resume
2021-11-03 23:50:29 +0100 <boxscape_> @pl
2021-11-03 23:50:30 +0100 <lambdabot> ap id id (ap id id)
2021-11-03 23:50:30 +0100 <lambdabot> optimization suspended, use @pl-resume to continue.
2021-11-03 23:50:30 +0100 <lambdabot> (line 1, column 1):
2021-11-03 23:50:30 +0100 <lambdabot> unexpected end of input
2021-11-03 23:50:30 +0100 <lambdabot> expecting white space, "()", natural, identifier, lambda abstraction or expression
2021-11-03 23:50:34 +0100 <boxscape_> whoops
2021-11-03 23:50:39 +0100 <hpc> hahaha
2021-11-03 23:50:49 +0100 <hpc> it can't figure out that's the shortest representation
2021-11-03 23:50:55 +0100 <hpc> someone needs to teach it SK
2021-11-03 23:50:55 +0100 <monochrom> Ugh that's a very deep infinite loop :)
2021-11-03 23:50:58 +0100 <Axman6> keep optimising, lambdabot!
2021-11-03 23:51:09 +0100 <Axman6> nah it'll figure it out eventually
2021-11-03 23:51:32 +0100 <hpc> i was really hoping for it to optimize to something longer
2021-11-03 23:51:41 +0100ec(~ec@gateway/tor-sasl/ec)
2021-11-03 23:51:43 +0100 <boxscape_> @unpl ap id id (ap id id)
2021-11-03 23:51:44 +0100 <lambdabot> (\ b0 -> return (b0 b0) b0) (\ b0 -> return (b0 b0) b0)
2021-11-03 23:52:08 +0100Cajun(~Cajun@user/cajun)
2021-11-03 23:52:28 +0100 <monochrom> I'm surprised this one doesn't say "pessimization suspended" :)
2021-11-03 23:52:35 +0100 <boxscape_> haha
2021-11-03 23:52:39 +0100burnsidesLlama(~burnsides@dhcp168-012.wadham.ox.ac.uk) (Remote host closed the connection)
2021-11-03 23:53:12 +0100burnsidesLlama(~burnsides@dhcp168-012.wadham.ox.ac.uk)
2021-11-03 23:53:22 +0100 <hpc> there's always more to pessimize
2021-11-03 23:53:32 +0100eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
2021-11-03 23:53:47 +0100 <boxscape_> applying @pl and @unpl repeatedly seems to make this ever longer, so that's nice
2021-11-03 23:54:06 +0100 <hpc> on april 1, @pl should instead translate its input into perl
2021-11-03 23:54:15 +0100 <monochrom> haha
2021-11-03 23:54:21 +0100 <dsal> See if anyone notices.
2021-11-03 23:54:28 +0100 <monochrom> hahaha
2021-11-03 23:54:32 +0100 <hpc> bahahaha
2021-11-03 23:54:35 +0100thblt(~thblt@user/thblt)
2021-11-03 23:54:38 +0100 <Axman6> @. pl unpl ap id id (ap id id)
2021-11-03 23:54:41 +0100 <lambdabot> ap (return . ap id id) id (ap (return . ap id id) id)
2021-11-03 23:54:41 +0100 <lambdabot> optimization suspended, use @pl-resume to continue.
2021-11-03 23:54:53 +0100 <Axman6> @. pl unpl ap (return . ap id id) id (ap (return . ap id id) id)
2021-11-03 23:54:56 +0100 <lambdabot> ap (return . ap (return . ap (return . ap id id) id) id) id (ap (return . ap (return . ap (return . ap id id) id) id) id)
2021-11-03 23:54:56 +0100 <lambdabot> optimization suspended, use @pl-resume to continue.
2021-11-03 23:55:00 +0100 <Axman6> :o
2021-11-03 23:55:04 +0100 <hpc> that's amazing
2021-11-03 23:55:07 +0100 <Axman6> need a @iterate
2021-11-03 23:55:15 +0100 <Axman6> Dare I do it again?
2021-11-03 23:55:35 +0100 <Axman6> @.pl unpl ap (return . ap (return . ap (return . ap id id) id) id) id (ap (return . ap (return . ap (return . ap id id) id) id) id) -- I dare
2021-11-03 23:55:35 +0100 <lambdabot> unpl ap (return . join id) id (join id)
2021-11-03 23:55:42 +0100 <Axman6> @. pl unpl ap (return . ap (return . ap (return . ap id id) id) id) id (ap (return . ap (return . ap (return . ap id id) id) id) id) -- I dare
2021-11-03 23:55:45 +0100 <lambdabot> ap (return . ap (return . ap (return . ap (return . ap (return . ap (return . ap (return . ap id id) id) id) id) id) id) id) id (ap (return . ap (return . ap (return . ap (return . ap (return . ap (
2021-11-03 23:55:45 +0100 <lambdabot> return . ap (return . ap id id) id) id) id) id) id) id) id)
2021-11-03 23:55:45 +0100 <lambdabot> optimization suspended, use @pl-resume to continue.
2021-11-03 23:55:52 +0100 <Axman6> oh my
2021-11-03 23:56:08 +0100 <Axman6> you know you're having fun when lambdabot splits responses over multiple lines
2021-11-03 23:56:20 +0100 <hpc> you're not having real fun until it tells you to @more
2021-11-03 23:56:46 +0100 <hpc> @pl \a s d f -> a s f d s f a s d f a f a s d f d s a
2021-11-03 23:56:49 +0100 <lambdabot> ap (flip . (flip .) . ((flip .) .) . flip ap id . (flip .) . ((flip .) .) . flip flip id . (ap .) . ((flip .) .) . flip flip id . (flip .) . ((ap .) .) . flip flip id . (ap .) . ((flip .) .) . flip
2021-11-03 23:56:49 +0100 <lambdabot> ap id . (flip .) . ((flip .) .) . ap (flip . (flip .) . ((flip .) .) . flip flip id . (flip .) . ((ap .) .) . ap (flip . (flip .) . ((flip .) .) . flip flip id . (flip .) . ((ap .) .) . flip flip id
2021-11-03 23:56:49 +0100 <lambdabot> . (ap .) . ((flip .) .) . flip ap id . (flip .) . ((flip .) .) . ap (flip . (flip .) . ((flip .) .) . flip flip id . (flip .) . ((ap .) .) . flip ap id . (flip .) . ((flip .) .) . (flip .)) id) id)
2021-11-03 23:56:49 +0100 <lambdabot> id) id
2021-11-03 23:56:49 +0100 <lambdabot> optimization suspended, use @pl-resume to continue.
2021-11-03 23:57:11 +0100 <Axman6> flip!
2021-11-03 23:57:15 +0100 <[exa]> now that's a program!
2021-11-03 23:57:17 +0100 <hpc> huh, that wasn't supposed to be so spammy
2021-11-03 23:57:18 +0100 <boxscape_> I
2021-11-03 23:57:25 +0100 <boxscape_> accidentally pressed my enter key
2021-11-03 23:57:50 +0100burnsidesLlama(~burnsides@dhcp168-012.wadham.ox.ac.uk) (Ping timeout: 260 seconds)
2021-11-03 23:58:01 +0100 <hpc> i wonder what the cutoff actually is now for @more
2021-11-03 23:58:44 +0100 <boxscape_> > let f = _ in f
2021-11-03 23:58:47 +0100 <lambdabot> error:
2021-11-03 23:58:48 +0100 <lambdabot> • Found hole: _ :: t1
2021-11-03 23:58:48 +0100 <lambdabot> Where: ‘t1’ is a rigid type variable bound by
2021-11-03 23:58:54 +0100 <boxscape_> oh
2021-11-03 23:58:59 +0100 <boxscape_> it says @more for this in a private message
2021-11-03 23:59:19 +0100 <Axman6> :t let f x=(x,x,x,x) in f.f.f.f.f
2021-11-03 23:59:20 +0100 <lambdabot> d -> (((((d, d, d, d), (d, d, d, d), (d, d, d, d), (d, d, d, d)), ((d, d, d, d), (d, d, d, d), (d, d, d, d), (d, d, d, d)), ((d, d, d, d), (d, d, d, d), (d, d, d, d), (d, d, d, d)), ((d, d, d, d), (
2021-11-03 23:59:20 +0100 <lambdabot> d, d, d, d), (d, d, d, d), (d, d, d, d))), (((d, d, d, d), (d, d, d, d), (d, d, d, d), (d, d, d, d)), ((d, d, d, d), (d, d, d, d), (d, d, d, d), (d, d, d, d)), ((d, d, d, d), (d, d, d, d), (d, d, d,
2021-11-03 23:59:20 +0100 <lambdabot> d), (d, d, d, d)), ((d, d, d, d), (d, d, d, d), (d, d, d, d), (d, d, d, d))), (((d, d, d, d), (d, d, d, d), (d, d, d, d), (d, d, d, d)), ((d, d, d, d), (d, d, d, d), (d, d, d, d), (d, d, d, d)), ((d,
2021-11-03 23:59:20 +0100 <lambdabot> d, d, d), (d, d, d, d), (d, d, d, d), (d, d, d, d)), ((d, d, d, d), (d, d, d, d), (d, d, d, d), (d, d, d, d))), (((d, d, d, d), (d, d, d, d), (d, d, d, d), (d, d, d, d)), ((d, d, d, d), (d, d, d, d)
2021-11-03 23:59:20 +0100 <lambdabot> , (d, d, d, d), (d, d, d, d)), ((d, d, d, d), (d, d, d, d), (d, d, d, d), (d, d, d, d)), ((d, d, d, d), (d, d, d, d), (d, d, d, d), (d, d, d, d)))), ((((d, d, d, d), (d, d, d, d), (d, d, d, d), (d,
2021-11-03 23:59:22 +0100 <lambdabot> [14 @more lines]
2021-11-03 23:59:29 +0100 <boxscape_> I use that function everyday!
2021-11-03 23:59:34 +0100 <Axman6> 14! jesus, sorry