2022/11/01

2022-11-01 00:01:23 +0100redmp(~redmp@mobile-166-170-43-64.mycingular.net) (Ping timeout: 246 seconds)
2022-11-01 00:01:45 +0100 <geekosaur> I'm not great at free <whatever>, sadly
2022-11-01 00:01:56 +0100 <koz> Yeah, me neither, which is why I'm asking.
2022-11-01 00:02:14 +0100 <koz> Because I never quite got how stuff like 'local' works here.
2022-11-01 00:02:33 +0100 <koz> I get operations like 'ask' or 'get' or 'put', since those don't modify computations.
2022-11-01 00:02:44 +0100 <koz> (or rather, they don't take a computation as an argument)
2022-11-01 00:03:29 +0100redmp(~redmp@mobile-166-170-43-64.mycingular.net)
2022-11-01 00:03:36 +0100 <geekosaur> unwrap the computation, apply the passed function to the environment, evaluate the passed action, produce its result
2022-11-01 00:04:10 +0100 <koz> Wouldn't this require `local` to be given an interpreter function?
2022-11-01 00:04:26 +0100 <koz> That kind of defeats the entire purpose.
2022-11-01 00:04:46 +0100 <geekosaur> no, because you're modifying the computation itself, it being free
2022-11-01 00:05:02 +0100 <koz> Maybe I'm just slow, but I don't get it at all.
2022-11-01 00:05:37 +0100 <geekosaur> mm, I'm sort of seeing it but I'd need to see some types to be certain
2022-11-01 00:05:43 +0100 <koz> OK, let me sketch.
2022-11-01 00:08:34 +0100 <koz> https://gist.github.com/kozross/7bcc45d37347d8c7c253713937e55771
2022-11-01 00:16:37 +0100 <ski> (remind me how `Ap' is defined ?)
2022-11-01 00:18:41 +0100 <koz> ski: https://hackage.haskell.org/package/free-5.1.9/docs/Control-Applicative-Free.html
2022-11-01 00:18:56 +0100 <ski> data Ap f a = Pure a | forall b. Ap (f b) (Ap f (b -> a))', ok
2022-11-01 00:23:51 +0100 <[Leary]> koz: I'm not well read or practised in this area, but the issue could be that `local` is not an "algebraic effect". I've seen an extension to free monads that allows "scoped effects" and could support it, but I don't know of an equivalent for free applicative.
2022-11-01 00:23:59 +0100ajb_(~ajb@mimas.whatbox.ca) (Quit: bye)
2022-11-01 00:24:03 +0100 <[Leary]> This is the blind leading the blind, but perhaps I've given you some new search terms.
2022-11-01 00:25:42 +0100 <koz> [Leary]: I mean... that seems _awfully_ strange, considering that Reader is about as algebraic as it gets, and `local` is a capability every single algebraic effect library built on _monads_ offers AFAICT.
2022-11-01 00:25:54 +0100 <koz> It might be true, but it'd be very odd to me if it were.
2022-11-01 00:26:45 +0100ajb(~ajb@mimas.whatbox.ca)
2022-11-01 00:27:00 +0100 <ski> local f (Reader ia) = Reader (loop ia)
2022-11-01 00:27:03 +0100 <ski> where
2022-11-01 00:27:13 +0100 <ski> loop (Pure a) = Pure a
2022-11-01 00:27:17 +0100 <ski> loop (Ap Ask ira) = Ap Ask ((. f) <$> loop ira)
2022-11-01 00:27:21 +0100 <ski> something like this, possibly ?
2022-11-01 00:28:03 +0100 <ski> (may need an explicit signature on `loop', for polymorphic recursion .. and then would need `ScopedTypeVariables' for `local', as well)
2022-11-01 00:29:00 +0100 <ski> .. there's probably also a way to avoid the repeated `(<$>)'s
2022-11-01 00:29:14 +0100 <koz> Ah so that's how.
2022-11-01 00:29:34 +0100 <koz> So you'd have to disassemble the actual representation.
2022-11-01 00:29:39 +0100ajb(~ajb@mimas.whatbox.ca) (Client Quit)
2022-11-01 00:29:53 +0100ajb(~ajb@mimas.whatbox.ca)
2022-11-01 00:30:22 +0100 <ski> perhaps if you `Codensity' that, you may be able to batch the traversals or something ... hm
2022-11-01 00:31:36 +0100 <ski> (i guess in some sense, `local' is admissible, but not derivable ? is that a sensible thing to say ?)
2022-11-01 00:32:50 +0100ajb(~ajb@mimas.whatbox.ca) (Client Quit)
2022-11-01 00:34:50 +0100Guest71(~Guest71@78-68-106-126-no2000.tbcn.telia.com) (Ping timeout: 244 seconds)
2022-11-01 00:34:55 +0100ec(~ec@gateway/tor-sasl/ec) (Remote host closed the connection)
2022-11-01 00:35:05 +0100ajb(~ajb@mimas.whatbox.ca)
2022-11-01 00:35:30 +0100ec(~ec@gateway/tor-sasl/ec)
2022-11-01 00:36:26 +0100 <koz> ski: If you use the final encoding you probably can.
2022-11-01 00:36:39 +0100 <koz> Since that is https://hackage.haskell.org/package/free-5.1.9/docs/Control-Applicative-Free-Final.html
2022-11-01 00:36:45 +0100 <koz> And your method should translate.
2022-11-01 00:37:59 +0100ajb(~ajb@mimas.whatbox.ca) (Client Quit)
2022-11-01 00:39:50 +0100ajb(~ajb@mimas.whatbox.ca)
2022-11-01 00:42:44 +0100ajb(~ajb@mimas.whatbox.ca) (Client Quit)
2022-11-01 00:42:55 +0100ajb(~ajb@mimas.whatbox.ca)
2022-11-01 00:45:06 +0100 <monochrom> Oh ha, I am finally experiencing GHC 9.2 reminding me "don't define return". :)
2022-11-01 00:45:53 +0100Guest71(~Guest71@94.234.103.245)
2022-11-01 00:46:03 +0100 <monochrom> Ah, "return = pure" is the preferred way.
2022-11-01 00:47:34 +0100ajb(~ajb@mimas.whatbox.ca) (Client Quit)
2022-11-01 00:49:07 +0100adanwan(~adanwan@gateway/tor-sasl/adanwan) (Remote host closed the connection)
2022-11-01 00:49:25 +0100adanwan(~adanwan@gateway/tor-sasl/adanwan)
2022-11-01 00:50:54 +0100 <jackdk> monochrom: `return = pure` is the default definition in recent base, btw
2022-11-01 00:51:57 +0100mvk(~mvk@2607:fea8:5ce3:8500::f30b)
2022-11-01 00:52:11 +0100caryhartline(~caryhartl@2600:1700:2d0:8d30:8d35:fb39:2b22:5607) (Quit: caryhartline)
2022-11-01 00:55:34 +0100freeside(~mengwong@bb115-66-48-84.singnet.com.sg) (Ping timeout: 252 seconds)
2022-11-01 00:59:28 +0100mmhat(~mmh@p200300f1c7307603ee086bfffe095315.dip0.t-ipconnect.de) (Quit: WeeChat 3.7.1)
2022-11-01 01:05:11 +0100ajb(~ajb@mimas.whatbox.ca)
2022-11-01 01:08:06 +0100ajb(~ajb@mimas.whatbox.ca) (Client Quit)
2022-11-01 01:08:15 +0100ajb(~ajb@mimas.whatbox.ca)
2022-11-01 01:17:24 +0100talismanick(~talismani@c-73-41-86-39.hsd1.ca.comcast.net) (Ping timeout: 248 seconds)
2022-11-01 01:19:41 +0100merijn(~merijn@86-86-29-250.fixed.kpn.net)
2022-11-01 01:24:20 +0100redmp(~redmp@mobile-166-170-43-64.mycingular.net) (Ping timeout: 246 seconds)
2022-11-01 01:26:20 +0100freeside(~mengwong@bb115-66-48-84.singnet.com.sg)
2022-11-01 01:30:46 +0100freeside(~mengwong@bb115-66-48-84.singnet.com.sg) (Ping timeout: 252 seconds)
2022-11-01 01:36:45 +0100freeside(~mengwong@bb115-66-48-84.singnet.com.sg)
2022-11-01 01:40:20 +0100gurkenglas(~gurkengla@p548ac72e.dip0.t-ipconnect.de) (Ping timeout: 248 seconds)
2022-11-01 01:46:44 +0100Kaiepi(~Kaiepi@108.175.84.104) (Ping timeout: 248 seconds)
2022-11-01 01:46:54 +0100machinedgod(~machinedg@d198-53-218-113.abhsia.telus.net)
2022-11-01 01:49:24 +0100Tuplanolla(~Tuplanoll@91-159-69-11.elisa-laajakaista.fi) (Quit: Leaving.)
2022-11-01 01:50:39 +0100 <yin> is there a WordMap equivalent of IntMap?
2022-11-01 01:52:13 +0100gabriel_sevecek(~gabriel@188-167-229-200.dynamic.chello.sk) (Ping timeout: 252 seconds)
2022-11-01 01:52:21 +0100motherfsck(~motherfsc@user/motherfsck) (Ping timeout: 246 seconds)
2022-11-01 01:53:44 +0100merijn(~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 246 seconds)
2022-11-01 01:54:17 +0100gabriel_sevecek(~gabriel@188-167-229-200.dynamic.chello.sk)
2022-11-01 01:55:41 +0100jinsun(~jinsun@user/jinsun) (Read error: Connection reset by peer)
2022-11-01 01:55:47 +0100 <Axman6> given Int and Word are isomorphic, then yes
2022-11-01 01:55:51 +0100jao(~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net) (Ping timeout: 246 seconds)
2022-11-01 01:57:02 +0100darkstarx(~darkstard@50.126.124.156) (Read error: Connection reset by peer)
2022-11-01 01:57:23 +0100 <yin> i just want to avoid the possibility of havint negative indexes
2022-11-01 01:57:37 +0100 <yin> s/havint/having
2022-11-01 01:57:43 +0100 <Axman6> a lobste.rs thread that a few people here might have some useful contributions: Do you use Nix or equivalent to manage projects and/or systems? https://lobste.rs/s/j2b4z2/do_you_use_nix_equivalent_manage_projects
2022-11-01 02:06:44 +0100waleee(~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340) (Ping timeout: 276 seconds)
2022-11-01 02:07:36 +0100darkstardevx(~darkstard@50.126.124.156)
2022-11-01 02:08:17 +0100causal(~user@50.35.83.177) (Quit: WeeChat 3.7.1)
2022-11-01 02:08:31 +0100darkstardevx(~darkstard@50.126.124.156) (Remote host closed the connection)
2022-11-01 02:08:36 +0100beteigeuze(~Thunderbi@bl14-81-220.dsl.telepac.pt) (Ping timeout: 248 seconds)
2022-11-01 02:08:56 +0100darkstardevx(~darkstard@50.126.124.156)
2022-11-01 02:11:46 +0100albet70(~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection)
2022-11-01 02:17:54 +0100albet70(~xxx@2400:8902::f03c:92ff:fe60:98d8)
2022-11-01 02:21:44 +0100xff0x(~xff0x@2405:6580:b080:900:80ef:56a6:a93d:a045) (Ping timeout: 250 seconds)
2022-11-01 02:23:37 +0100 <maerwald[m]> Axman6: no, I don't
2022-11-01 02:24:59 +0100 <cheater> what's everyone's favourite test harness that'll be able to run both normal and property tests?
2022-11-01 02:33:02 +0100 <Axman6> tasty?
2022-11-01 02:33:08 +0100freeside(~mengwong@bb115-66-48-84.singnet.com.sg) (Ping timeout: 248 seconds)
2022-11-01 02:34:37 +0100 <sm> unscientific estimate: tasty seems most popular, hspec second
2022-11-01 02:35:19 +0100 <Axman6> tasty supports hspec no?
2022-11-01 02:35:43 +0100 <sm> yes I believe so
2022-11-01 02:37:51 +0100 <cheater> what does it mean that two things that do the same thing support each other?
2022-11-01 02:40:38 +0100freeside(~mengwong@bb115-66-48-84.singnet.com.sg)
2022-11-01 02:40:42 +0100thyriaen(~thyriaen@2a01:aea0:dd4:470d:6245:cbff:fe9f:48b1) (Remote host closed the connection)
2022-11-01 02:41:11 +0100 <Axman6> you can use tasty to run hspec tests, alongside quickcheck, smallcheck, unit tests, etc.
2022-11-01 02:45:11 +0100freeside(~mengwong@bb115-66-48-84.singnet.com.sg) (Ping timeout: 246 seconds)
2022-11-01 02:45:24 +0100Lord_of_Life(~Lord@user/lord-of-life/x-2819915) (Ping timeout: 248 seconds)
2022-11-01 02:45:32 +0100Lord_of_Life_(~Lord@user/lord-of-life/x-2819915)
2022-11-01 02:46:48 +0100Lord_of_Life_Lord_of_Life
2022-11-01 02:48:41 +0100 <sm> both of them have multiple parts: test detectors, test runner(s), a native API/DSL for writing tests, an ecosystem of extensions and adapters to the other test frameworks
2022-11-01 02:53:56 +0100 <cheater> ok, but why would you run hspec tests under tasty?
2022-11-01 02:54:05 +0100 <cheater> or the other way around idk
2022-11-01 02:59:07 +0100 <dsal> tasty is a nice runner and is helpful for discovery.
2022-11-01 03:00:38 +0100freeside(~mengwong@bb115-66-48-84.singnet.com.sg)
2022-11-01 03:00:41 +0100 <yin> cheater: https://www.joelonsoftware.com/2000/05/24/strategy-letter-ii-chicken-and-egg-problems/
2022-11-01 03:00:48 +0100 <sm> cheater: you might like the runner of one and the DSL of another, or you might be merging software with a bunch of tests written with different frameworks
2022-11-01 03:01:41 +0100 <sm> or migrating to another framework, but in steps
2022-11-01 03:02:11 +0100 <dsal> I don't really like the cucumber-esque BDD language people seem to use without understanding.
2022-11-01 03:02:28 +0100 <dsal> I do like tasty-discover and various property test things with an occasional dumb hunit.
2022-11-01 03:03:03 +0100 <sm> none of them handle doctest well yet IIRC
2022-11-01 03:07:00 +0100xff0x(~xff0x@125x103x176x34.ap125.ftth.ucom.ne.jp)
2022-11-01 03:07:33 +0100tgi(~thegeekin@189.180.115.115)
2022-11-01 03:07:35 +0100Guest61(~Guest61@pool-100-36-83-121.washdc.fios.verizon.net)
2022-11-01 03:09:06 +0100thegeekinside(~thegeekin@189.180.115.115) (Ping timeout: 255 seconds)
2022-11-01 03:09:46 +0100 <yin> is there any advantage to doing n.2 here: https://paste.jrvieira.com/1667268547751 ?
2022-11-01 03:10:54 +0100 <yin> or does ghc trivially optimize it?
2022-11-01 03:11:35 +0100 <sm> yin: I'd say the main one avoiding code duplication, so you won't change one and forget the other. There's probably a possibility of avoiding double evaluation as well
2022-11-01 03:12:15 +0100mvk(~mvk@2607:fea8:5ce3:8500::f30b) (Ping timeout: 255 seconds)
2022-11-01 03:17:23 +0100machinedgod(~machinedg@d198-53-218-113.abhsia.telus.net) (Ping timeout: 246 seconds)
2022-11-01 03:20:57 +0100 <yin> that's my question. will ghc evaluate it multiple times? this seems like a fairly trivial optimization
2022-11-01 03:21:07 +0100 <yin> is there anything i'm not considering?
2022-11-01 03:22:37 +0100eggplantade(~Eggplanta@104-55-37-220.lightspeed.sntcca.sbcglobal.net)
2022-11-01 03:23:20 +0100 <sm> I don't think you can be certain, if it's non-trivial I'd extract it
2022-11-01 03:23:21 +0100 <dolio> In general you don't always want to do that sort of thing, but I wouldn't be surprised if it's done for pattern guards.
2022-11-01 03:23:40 +0100 <dolio> You should probably check by looking at core stuff, though.
2022-11-01 03:25:38 +0100 <yin> dolio: i'm not very comfortable with core still. by "that sort of thing" do you mean n.1 or n.2 ?
2022-11-01 03:25:56 +0100 <dolio> I mean in general you don't want the compiler to do common subexpression elimination.
2022-11-01 03:26:03 +0100 <yin> s/not very comfortable/not comfortable at all
2022-11-01 03:26:05 +0100 <dolio> It's not always an optimization.
2022-11-01 03:26:56 +0100 <yin> oh ok. so i should be explicit when i can
2022-11-01 03:28:11 +0100 <dolio> Like, if you have a big list that is consumed twice in sequence, it's probably better to not share it, because the first time forces it all into memory, and it can't be collected until the second pass is done with it.
2022-11-01 03:28:43 +0100Guest61(~Guest61@pool-100-36-83-121.washdc.fios.verizon.net) (Quit: Guest61)
2022-11-01 03:29:55 +0100 <dolio> However, if you're using pattern guards to match different cases of the same thing, that's not really the same situation. It can just turn into different branches of a single case statement.
2022-11-01 03:30:46 +0100 <dolio> Well, probably it can.
2022-11-01 03:33:43 +0100bilegeek(~bilegeek@2600:1008:b052:54d3:6bf4:905f:d9e2:8084)
2022-11-01 03:34:00 +0100 <dolio> I think that is an example where GHC will do CSE. That is, situations like: case expr of { ... case expr of { ... } }
2022-11-01 03:34:43 +0100 <yin> i'm kind of lost i admit
2022-11-01 03:35:24 +0100 <dolio> Which part? :)
2022-11-01 03:37:36 +0100 <dolio> If you want an example of why not to do the optimization, try: length ([1..] ++ [1..]) vs. let xs = [1..] in length (xs ++ xs). But be ready to kill ghci in the second case. :)
2022-11-01 03:39:23 +0100 <sm> the practical take-away is try to express in the code what you want, and don't make ghc guess (or yourself guess what it is doing). Ie if you want the expression evaluated once, extract it to one place
2022-11-01 03:39:27 +0100 <yin> ah! i get it now
2022-11-01 03:39:28 +0100 <yin> thanks
2022-11-01 03:40:54 +0100 <yin> that was a great example
2022-11-01 03:44:58 +0100Guest71(~Guest71@94.234.103.245) (Ping timeout: 244 seconds)
2022-11-01 03:50:12 +0100merijn(~merijn@86-86-29-250.fixed.kpn.net)
2022-11-01 03:57:53 +0100segfaultfizzbuzz(~segfaultf@12.172.217.142)
2022-11-01 03:58:05 +0100 <segfaultfizzbuzz> MkTrickOrTreat
2022-11-01 04:03:39 +0100 <yin> newtype TrickOrTreat a = MkTrickOrTreat { runTrickOrTreat :: a -> Either Trick Treat }
2022-11-01 04:04:04 +0100 <segfaultfizzbuzz> haha ;^D
2022-11-01 04:06:02 +0100freeside(~mengwong@bb115-66-48-84.singnet.com.sg) (Ping timeout: 246 seconds)
2022-11-01 04:08:26 +0100 <dsal> `data demand = Trick | Treat`
2022-11-01 04:08:31 +0100 <dsal> I just had my first in years.
2022-11-01 04:09:11 +0100dsalnot sure how that got lowercased. Distracted by first trick-or-treater in years.
2022-11-01 04:09:14 +0100 <segfaultfizzbuzz> what is the type of Trick | Treat
2022-11-01 04:09:31 +0100 <segfaultfizzbuzz> ok so the type is Demand? isn't that too broad though?
2022-11-01 04:09:34 +0100 <dsal> Yeah, definitely shouldn't write any code right now. heh.
2022-11-01 04:10:00 +0100 <segfaultfizzbuzz> data HalloweenUninvitedGuestDemand = Trick | Treat ?
2022-11-01 04:10:30 +0100 <dsal> Ha, yeah. I like shorter names, though. The module can store a lot of that information.
2022-11-01 04:10:33 +0100darkstarx(~darkstard@50.126.124.156)
2022-11-01 04:10:34 +0100 <yin> data Trick = ToiletPaper | PaintWindows | EggHouse | ...
2022-11-01 04:10:38 +0100darkstardevx(~darkstard@50.126.124.156) (Remote host closed the connection)
2022-11-01 04:11:00 +0100 <segfaultfizzbuzz> or ask haskellers write this stuff: data HUGD = Trk | Trt
2022-11-01 04:11:11 +0100 <segfaultfizzbuzz> yin: haha
2022-11-01 04:11:13 +0100 <dsal> Ah, then you get `Either Trick Treat` which makes sense.
2022-11-01 04:11:20 +0100 <yin> ^
2022-11-01 04:11:45 +0100segfaultfizzbuzzhalloween monad *ducks*
2022-11-01 04:11:50 +0100 <dsal> Which… you said above. I'm slow today.
2022-11-01 04:12:20 +0100 <yin> dsal: well... did you choose trick or did you choose treat?
2022-11-01 04:13:41 +0100 <dsal> I don't really choose. I have to cover both cases in order to be total.
2022-11-01 04:17:29 +0100motherfsck(~motherfsc@user/motherfsck)
2022-11-01 04:17:57 +0100 <yin> "Trick or treat?" - dsal: "Yes."
2022-11-01 04:18:28 +0100yinwonders if "trick or treat" is a question or a statement
2022-11-01 04:19:05 +0100 <dsal> It's a colloquialism that's just a demand for candy.
2022-11-01 04:19:21 +0100 <[Leary]> It's a threat.
2022-11-01 04:19:40 +0100 <yin> threats can be questions
2022-11-01 04:20:57 +0100 <yin> an threat in the form of an exclamation would be better stated as "treat or trick!"
2022-11-01 04:22:11 +0100 <yin> as in `treat || trick`
2022-11-01 04:22:25 +0100 <yin> not `trick || treat`
2022-11-01 04:22:45 +0100 <yin> completely different statements
2022-11-01 04:24:34 +0100merijn(~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 252 seconds)
2022-11-01 04:25:05 +0100 <yin> > let trick = True ; treat = undefined in trick || treat
2022-11-01 04:25:06 +0100 <lambdabot> True
2022-11-01 04:25:17 +0100 <monochrom> Trk | Trt = track or tract? >:)
2022-11-01 04:26:44 +0100td_(~td@83.135.9.57) (Ping timeout: 248 seconds)
2022-11-01 04:26:50 +0100 <dsal> `fromMaybe trick treat` won't evaluate `trick` unless you got `Nothing`
2022-11-01 04:27:32 +0100 <yin> nice
2022-11-01 04:28:41 +0100td_(~td@83.135.9.15)
2022-11-01 04:28:43 +0100 <yin> wait, i'm not sure how it works. is the person giving the candy the same doing the trick?
2022-11-01 04:29:03 +0100 <dsal> This is in the threat scenario.
2022-11-01 04:29:12 +0100 <yin> or is the trick a revenge from the kids to those who don't give them candy?
2022-11-01 04:29:25 +0100 <dsal> Yeah.
2022-11-01 04:30:15 +0100 <yin> people don't go trick or treating over here and i'm getting mixed signals from the internet
2022-11-01 04:30:18 +0100 <dsal> received <- maybe (fail "you get egged") pure =<< trickOrTreat
2022-11-01 04:30:42 +0100 <dsal> I think historically, I can give you a treat or a bran muffin.
2022-11-01 04:30:54 +0100 <dsal> (with fentanyl and a razor blade in either)
2022-11-01 04:31:05 +0100freeside(~mengwong@bb115-66-48-84.singnet.com.sg)
2022-11-01 04:33:46 +0100 <segfaultfizzbuzz> so a kid shows up to a haskeller's house and says "trick or treat"
2022-11-01 04:33:53 +0100 <segfaultfizzbuzz> the haskeller says "..." and just stands there
2022-11-01 04:34:02 +0100 <segfaultfizzbuzz> the kid says "trick or treat!"
2022-11-01 04:34:06 +0100 <segfaultfizzbuzz> and then gets a candy
2022-11-01 04:37:03 +0100AlexNoo(~AlexNoo@178.34.163.109) (Read error: Connection reset by peer)
2022-11-01 04:37:27 +0100AlexNoo(~AlexNoo@178.34.163.109)
2022-11-01 04:39:23 +0100 <yin> so a kid shows up to a haskeller's house and says "trick or treat"
2022-11-01 04:39:41 +0100 <yin> the haskeller says "Variable not in scope: trick :: (t0 Bool -> Bool) -> t1 -> t"
2022-11-01 04:40:10 +0100 <dsal> skol'em
2022-11-01 04:43:52 +0100 <segfaultfizzbuzz> yin: lol lol lol lol
2022-11-01 04:54:12 +0100finn_elija(~finn_elij@user/finn-elija/x-0085643)
2022-11-01 04:54:12 +0100FinnElija(~finn_elij@user/finn-elija/x-0085643) (Killed (NickServ (Forcing logout FinnElija -> finn_elija)))
2022-11-01 04:54:12 +0100finn_elijaFinnElija
2022-11-01 04:56:34 +0100 <EvanR> treat = ()
2022-11-01 04:56:37 +0100 <EvanR> trick = trick
2022-11-01 04:59:45 +0100 <monochrom> A haskeller wears a Halloween costume and walks into a bar. The people in the bar say: "That's a phantom type."
2022-11-01 05:02:49 +0100 <Axman6> data Operator here a = Op String a a -- The Phantom of the Operator is here
2022-11-01 05:03:00 +0100segfaultfizzbuzz(~segfaultf@12.172.217.142) (Ping timeout: 248 seconds)
2022-11-01 05:03:24 +0100 <monochrom> haha
2022-11-01 05:03:50 +0100 <Axman6> =)
2022-11-01 05:05:12 +0100thonkpod_(~thonkpod@user/thonkpod) (Ping timeout: 255 seconds)
2022-11-01 05:05:37 +0100thonkpod_(~thonkpod@user/thonkpod)
2022-11-01 05:11:09 +0100tomsmeding(~tomsmedin@2a01:4f8:c0c:5e5e::2) (Quit: ZNC 1.8.2 - https://znc.in)
2022-11-01 05:11:10 +0100bookshelfdave(sid28102@id-28102.ilkley.irccloud.com) (Read error: Connection reset by peer)
2022-11-01 05:11:10 +0100ghoulpinevulpine
2022-11-01 05:11:10 +0100dy(sid3438@user/dy) (Read error: Connection reset by peer)
2022-11-01 05:11:19 +0100bookshelfdave(sid28102@id-28102.ilkley.irccloud.com)
2022-11-01 05:11:19 +0100dy(sid3438@user/dy)
2022-11-01 05:11:22 +0100tomsmeding(~tomsmedin@2a01:4f8:c0c:5e5e::2)
2022-11-01 05:11:23 +0100lexi-lambda(sid92601@id-92601.hampstead.irccloud.com) (Read error: Connection reset by peer)
2022-11-01 05:11:23 +0100gregberns__(sid315709@id-315709.helmsley.irccloud.com) (Read error: Connection reset by peer)
2022-11-01 05:11:23 +0100lightandlight(sid135476@id-135476.helmsley.irccloud.com) (Read error: Connection reset by peer)
2022-11-01 05:11:23 +0100bbhoss(sid18216@id-18216.tinside.irccloud.com) (Read error: Connection reset by peer)
2022-11-01 05:11:31 +0100gregberns__(sid315709@id-315709.helmsley.irccloud.com)
2022-11-01 05:11:32 +0100lexi-lambda(sid92601@id-92601.hampstead.irccloud.com)
2022-11-01 05:11:33 +0100bbhoss(sid18216@id-18216.tinside.irccloud.com)
2022-11-01 05:11:34 +0100lightandlight(sid135476@id-135476.helmsley.irccloud.com)
2022-11-01 05:11:38 +0100glowcoil(sid3405@id-3405.tinside.irccloud.com) (Read error: Connection reset by peer)
2022-11-01 05:11:44 +0100sajith(~sajith@user/sajith) (Remote host closed the connection)
2022-11-01 05:11:46 +0100glowcoil(sid3405@id-3405.tinside.irccloud.com)
2022-11-01 05:11:46 +0100teehemkay_(sid14792@id-14792.lymington.irccloud.com) (Read error: Connection reset by peer)
2022-11-01 05:11:53 +0100feliix42(~felix@gibbs.uberspace.de) (Quit: ZNC 1.8.2 - https://znc.in)
2022-11-01 05:11:55 +0100teehemkay_(sid14792@id-14792.lymington.irccloud.com)
2022-11-01 05:12:00 +0100bjs(sid190364@user/bjs) (Write error: Connection reset by peer)
2022-11-01 05:12:02 +0100sajith_(~sajith@user/sajith)
2022-11-01 05:12:08 +0100feliix42(~felix@gibbs.uberspace.de)
2022-11-01 05:12:08 +0100segfaultfizzbuzz(~segfaultf@12.172.217.142)
2022-11-01 05:12:11 +0100bjs(sid190364@user/bjs)
2022-11-01 05:12:38 +0100FinnElija(~finn_elij@user/finn-elija/x-0085643) (Remote host closed the connection)
2022-11-01 05:13:16 +0100psydroid(~psydroid@user/psydroid) (Ping timeout: 246 seconds)
2022-11-01 05:13:16 +0100kronicmage(user1639@neotame.csclub.uwaterloo.ca) (Ping timeout: 246 seconds)
2022-11-01 05:13:37 +0100mimi1vx[m](~osukupmat@2001:470:69fc:105::2:418d) (Ping timeout: 246 seconds)
2022-11-01 05:13:37 +0100sektor[m](~sektor@2001:470:69fc:105::2:3f60) (Ping timeout: 246 seconds)
2022-11-01 05:13:37 +0100VarikValefor[m](~varikvale@2001:470:69fc:105::a5d) (Ping timeout: 246 seconds)
2022-11-01 05:13:37 +0100mesaoptimizer2(~mesaoptim@user/PapuaHardyNet) (Ping timeout: 246 seconds)
2022-11-01 05:13:37 +0100maralorn(~maralorn@2001:470:69fc:105::251) (Ping timeout: 246 seconds)
2022-11-01 05:13:37 +0100mekeor[m](~mekeormat@2001:470:69fc:105::17e4) (Ping timeout: 246 seconds)
2022-11-01 05:13:37 +0100ncf(~n@monade.li) (Ping timeout: 246 seconds)
2022-11-01 05:13:40 +0100wagle(~wagle@quassel.wagle.io) (Ping timeout: 248 seconds)
2022-11-01 05:13:58 +0100jean-paul[m](~jean-paul@2001:470:69fc:105::d1ab) (Ping timeout: 246 seconds)
2022-11-01 05:13:58 +0100Morrow[m](~morrowmma@2001:470:69fc:105::1d0) (Ping timeout: 246 seconds)
2022-11-01 05:13:58 +0100lawt(~lawtonmat@2001:470:69fc:105::2:97b8) (Ping timeout: 246 seconds)
2022-11-01 05:13:58 +0100fr33domlover[m](~fr33domlo@2001:470:69fc:105::1:3bb6) (Ping timeout: 246 seconds)
2022-11-01 05:13:58 +0100fgaz(~fgaz@2001:470:69fc:105::842) (Ping timeout: 246 seconds)
2022-11-01 05:13:58 +0100bwe(~bwe@2a01:4f8:1c1c:4878::2) (Ping timeout: 246 seconds)
2022-11-01 05:14:19 +0100JonathanWatson[m(~jjwmatrix@2001:470:69fc:105::2:a544) (Ping timeout: 246 seconds)
2022-11-01 05:14:19 +0100cafkafk[m](~cafkafkma@2001:470:69fc:105::1:cea8) (Ping timeout: 246 seconds)
2022-11-01 05:14:19 +0100loosh[m](~looshchat@2001:470:69fc:105::2:5ddd) (Ping timeout: 246 seconds)
2022-11-01 05:14:19 +0100vladan[m](~vladanmat@2001:470:69fc:105::2:24df) (Ping timeout: 246 seconds)
2022-11-01 05:14:21 +0100kronicmage(user93427@neotame.csclub.uwaterloo.ca)
2022-11-01 05:14:44 +0100ncf(~n@monade.li)
2022-11-01 05:14:49 +0100bwe(~bwe@2a01:4f8:1c1c:4878::2)
2022-11-01 05:16:11 +0100FinnElija(~finn_elij@user/finn-elija/x-0085643)
2022-11-01 05:16:36 +0100 <segfaultfizzbuzz> monochrom: haha
2022-11-01 05:23:48 +0100king_gs(~Thunderbi@187.201.83.115)
2022-11-01 05:25:19 +0100Kaiepi(~Kaiepi@108.175.84.104)
2022-11-01 05:25:38 +0100VarikValefor[m](~varikvale@2001:470:69fc:105::a5d)
2022-11-01 05:27:11 +0100mekeor[m](~mekeormat@2001:470:69fc:105::17e4)
2022-11-01 05:27:56 +0100maralorn(~maralorn@2001:470:69fc:105::251)
2022-11-01 05:28:05 +0100psydroid(~psydroid@user/psydroid)
2022-11-01 05:29:15 +0100sektor[m](~sektor@2001:470:69fc:105::2:3f60)
2022-11-01 05:29:23 +0100mesaoptimizer2(~mesaoptim@user/PapuaHardyNet)
2022-11-01 05:30:23 +0100mimi1vx[m](~osukupmat@2001:470:69fc:105::2:418d)
2022-11-01 05:30:55 +0100lawt(~lawtonmat@2001:470:69fc:105::2:97b8)
2022-11-01 05:30:58 +0100jean-paul[m](~jean-paul@2001:470:69fc:105::d1ab)
2022-11-01 05:31:17 +0100fr33domlover[m](~fr33domlo@2001:470:69fc:105::1:3bb6)
2022-11-01 05:33:19 +0100segfaultfizzbuzz(~segfaultf@12.172.217.142) (Ping timeout: 252 seconds)
2022-11-01 05:33:29 +0100fgaz(~fgaz@2001:470:69fc:105::842)
2022-11-01 05:33:35 +0100wagle(~wagle@quassel.wagle.io)
2022-11-01 05:33:41 +0100Morrow[m](~morrowmma@2001:470:69fc:105::1d0)
2022-11-01 05:34:31 +0100vladan[m](~vladanmat@2001:470:69fc:105::2:24df)
2022-11-01 05:34:50 +0100loosh[m](~looshchat@2001:470:69fc:105::2:5ddd)
2022-11-01 05:35:32 +0100freeside(~mengwong@bb115-66-48-84.singnet.com.sg) (Ping timeout: 248 seconds)
2022-11-01 05:35:36 +0100cafkafk[m](~cafkafkma@2001:470:69fc:105::1:cea8)
2022-11-01 05:36:06 +0100JonathanWatson[m(~jjwmatrix@2001:470:69fc:105::2:a544)
2022-11-01 05:36:07 +0100Vajb(~Vajb@2001:999:504:1841:9e47:1ec7:a52e:1d57) (Read error: Connection reset by peer)
2022-11-01 05:36:51 +0100Vajb(~Vajb@hag-jnsbng11-58c3a5-27.dhcp.inet.fi)
2022-11-01 05:37:08 +0100ystael(~ystael@user/ystael) (Ping timeout: 248 seconds)
2022-11-01 05:42:15 +0100biberu(~biberu@user/biberu) (Read error: Connection reset by peer)
2022-11-01 05:42:38 +0100biberu(~biberu@user/biberu)
2022-11-01 05:47:29 +0100Guest75(~Guest75@178.141.197.193)
2022-11-01 05:48:11 +0100mbuf(~Shakthi@49.204.137.137)
2022-11-01 05:51:32 +0100king_gs(~Thunderbi@187.201.83.115) (Ping timeout: 248 seconds)
2022-11-01 05:53:35 +0100Guest75(~Guest75@178.141.197.193) (Quit: Client closed)
2022-11-01 05:56:49 +0100segfaultfizzbuzz(~segfaultf@12.172.217.142)
2022-11-01 05:58:23 +0100freeside(~mengwong@bb115-66-48-84.singnet.com.sg)
2022-11-01 06:02:44 +0100freeside(~mengwong@bb115-66-48-84.singnet.com.sg) (Ping timeout: 248 seconds)
2022-11-01 06:03:00 +0100lucerne(~lucerne@5.113.197.120) (Read error: Connection reset by peer)
2022-11-01 06:03:17 +0100motherfsck(~motherfsc@user/motherfsck) (Ping timeout: 246 seconds)
2022-11-01 06:04:52 +0100segfaultfizzbuzz(~segfaultf@12.172.217.142) (Ping timeout: 248 seconds)
2022-11-01 06:12:05 +0100darkstardev13(~darkstard@50.126.124.156)
2022-11-01 06:14:10 +0100freeside(~mengwong@bb115-66-48-84.singnet.com.sg)
2022-11-01 06:14:34 +0100darkstarx(~darkstard@50.126.124.156) (Ping timeout: 252 seconds)
2022-11-01 06:18:27 +0100motherfsck(~motherfsc@user/motherfsck)
2022-11-01 06:20:45 +0100merijn(~merijn@86-86-29-250.fixed.kpn.net)
2022-11-01 06:23:26 +0100tolt(~weechat-h@li219-154.members.linode.com) (Quit: WeeChat 2.9)
2022-11-01 06:23:42 +0100tolt(~weechat-h@li219-154.members.linode.com)
2022-11-01 06:30:17 +0100Vajb(~Vajb@hag-jnsbng11-58c3a5-27.dhcp.inet.fi) (Read error: Connection reset by peer)
2022-11-01 06:30:43 +0100Guest2944(~Guest29@185.216.186.110) (Quit: Client closed)
2022-11-01 06:30:58 +0100Vajb(~Vajb@2001:999:504:1841:9e47:1ec7:a52e:1d57)
2022-11-01 06:32:13 +0100bilegeek(~bilegeek@2600:1008:b052:54d3:6bf4:905f:d9e2:8084) (Quit: Leaving)
2022-11-01 06:55:00 +0100merijn(~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 248 seconds)
2022-11-01 06:58:22 +0100zaquest(~notzaques@5.130.79.72) (Remote host closed the connection)
2022-11-01 07:06:12 +0100troydm(~troydm@host-176-37-124-197.b025.la.net.ua) (Ping timeout: 248 seconds)
2022-11-01 07:07:55 +0100talismanick(~talismani@2601:200:c100:c9e0::1b0b)
2022-11-01 07:08:20 +0100xff0x(~xff0x@125x103x176x34.ap125.ftth.ucom.ne.jp) (Ping timeout: 248 seconds)
2022-11-01 07:09:32 +0100zaquest(~notzaques@5.130.79.72)
2022-11-01 07:10:18 +0100freeside(~mengwong@bb115-66-48-84.singnet.com.sg) (Ping timeout: 255 seconds)
2022-11-01 07:16:17 +0100xff0x(~xff0x@125x103x176x34.ap125.ftth.ucom.ne.jp)
2022-11-01 07:22:18 +0100aliosablack(~chomwitt@2a02:587:dc18:4a00:1ac0:4dff:fedb:a3f1)
2022-11-01 07:28:04 +0100tgi(~thegeekin@189.180.115.115) (Ping timeout: 248 seconds)
2022-11-01 07:39:18 +0100takuan(~takuan@178-116-218-225.access.telenet.be)
2022-11-01 07:40:52 +0100wagle(~wagle@quassel.wagle.io) (Ping timeout: 248 seconds)
2022-11-01 07:42:55 +0100biberu\(~biberu@user/biberu)
2022-11-01 07:46:25 +0100biberu(~biberu@user/biberu) (Ping timeout: 252 seconds)
2022-11-01 07:46:25 +0100biberu\biberu
2022-11-01 07:47:12 +0100albet70(~xxx@2400:8902::f03c:92ff:fe60:98d8) (Ping timeout: 255 seconds)
2022-11-01 07:49:46 +0100mbuf(~Shakthi@49.204.137.137) (Read error: Connection reset by peer)
2022-11-01 07:49:54 +0100thonkpod_(~thonkpod@user/thonkpod) (Ping timeout: 255 seconds)
2022-11-01 07:50:20 +0100thonkpod_(~thonkpod@user/thonkpod)
2022-11-01 07:50:38 +0100mbuf(~Shakthi@49.204.137.137)
2022-11-01 07:50:38 +0100wagle(~wagle@quassel.wagle.io)
2022-11-01 07:57:25 +0100wagle(~wagle@quassel.wagle.io) (Ping timeout: 252 seconds)
2022-11-01 07:58:59 +0100dsrt^(~dsrt@76.145.185.103)
2022-11-01 08:03:38 +0100wagle(~wagle@quassel.wagle.io)
2022-11-01 08:04:36 +0100darkstardev13(~darkstard@50.126.124.156) (Read error: Connection reset by peer)
2022-11-01 08:11:55 +0100albet70(~xxx@2400:8902::f03c:92ff:fe60:98d8)
2022-11-01 08:14:20 +0100mmhat(~mmh@p200300f1c7307603ee086bfffe095315.dip0.t-ipconnect.de)
2022-11-01 08:14:57 +0100kmein(~weechat@user/kmein) (Quit: ciao kakao)
2022-11-01 08:15:26 +0100king_gs(~Thunderbi@187.201.83.115)
2022-11-01 08:16:59 +0100kmein(~weechat@user/kmein)
2022-11-01 08:18:24 +0100lucerne(~lucerne@5.112.48.17)
2022-11-01 08:18:58 +0100gurkenglas(~gurkengla@p548ac72e.dip0.t-ipconnect.de)
2022-11-01 08:21:05 +0100coot(~coot@213.134.171.3)
2022-11-01 08:21:37 +0100motherfsck(~motherfsc@user/motherfsck) (Ping timeout: 252 seconds)
2022-11-01 08:22:03 +0100coot(~coot@213.134.171.3) (Client Quit)
2022-11-01 08:23:21 +0100lortabac(~lortabac@2a01:e0a:541:b8f0:7d68:5b7c:dcd9:213)
2022-11-01 08:24:04 +0100coot(~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba)
2022-11-01 08:24:04 +0100gurkenglas(~gurkengla@p548ac72e.dip0.t-ipconnect.de) (Ping timeout: 248 seconds)
2022-11-01 08:25:51 +0100Sgeo(~Sgeo@user/sgeo) (Read error: Connection reset by peer)
2022-11-01 08:26:09 +0100jakalx(~jakalx@base.jakalx.net) ()
2022-11-01 08:27:07 +0100tolt(~weechat-h@li219-154.members.linode.com) (Ping timeout: 252 seconds)
2022-11-01 08:27:37 +0100tolt(~weechat-h@li219-154.members.linode.com)
2022-11-01 08:30:01 +0100darkstardevx(~darkstard@50.126.124.156)
2022-11-01 08:31:10 +0100darkstardevx(~darkstard@50.126.124.156) (Remote host closed the connection)
2022-11-01 08:31:18 +0100jakalx(~jakalx@base.jakalx.net)
2022-11-01 08:31:34 +0100darkstardevx(~darkstard@50.126.124.156)
2022-11-01 08:34:32 +0100motherfsck(~motherfsc@user/motherfsck)
2022-11-01 08:34:33 +0100king_gs(~Thunderbi@187.201.83.115) (Read error: Connection reset by peer)
2022-11-01 08:34:54 +0100king_gs(~Thunderbi@2806:103e:29:47b9:f34b:ffff:4cfc:90a6)
2022-11-01 08:35:25 +0100freeside(~mengwong@122.11.214.163)
2022-11-01 08:35:42 +0100kenran(~user@user/kenran)
2022-11-01 08:36:01 +0100kenran(~user@user/kenran) (Remote host closed the connection)
2022-11-01 08:36:25 +0100darkstardevx(~darkstard@50.126.124.156) (Remote host closed the connection)
2022-11-01 08:36:42 +0100lucerne(~lucerne@5.112.48.17) (Ping timeout: 255 seconds)
2022-11-01 08:36:51 +0100darkstardevx(~darkstard@50.126.124.156)
2022-11-01 08:37:14 +0100azimut(~azimut@gateway/tor-sasl/azimut) (Ping timeout: 258 seconds)
2022-11-01 08:44:37 +0100acidjnk(~acidjnk@p200300d6e7137a36f0ab6f680c2cefbd.dip0.t-ipconnect.de)
2022-11-01 08:46:08 +0100dcoutts(~duncan@host86-163-164-210.range86-163.btcentralplus.com)
2022-11-01 08:50:45 +0100python476(~user@88.160.31.174)
2022-11-01 08:51:06 +0100albet70(~xxx@2400:8902::f03c:92ff:fe60:98d8) (Ping timeout: 255 seconds)
2022-11-01 08:51:19 +0100ccapndave(~ccapndave@xcpe-62-167-164-99.cgn.res.adslplus.ch)
2022-11-01 08:54:15 +0100talismanick(~talismani@2601:200:c100:c9e0::1b0b) (Ping timeout: 255 seconds)
2022-11-01 09:03:54 +0100aliosablack(~chomwitt@2a02:587:dc18:4a00:1ac0:4dff:fedb:a3f1) (Ping timeout: 268 seconds)
2022-11-01 09:06:49 +0100eggplantade(~Eggplanta@104-55-37-220.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
2022-11-01 09:07:08 +0100eggplantade(~Eggplanta@2600:1700:38c5:d800:c9d:1a05:4084:603c)
2022-11-01 09:09:33 +0100dcoutts(~duncan@host86-163-164-210.range86-163.btcentralplus.com) (Ping timeout: 255 seconds)
2022-11-01 09:13:38 +0100dcoutts(~duncan@host86-163-164-210.range86-163.btcentralplus.com)
2022-11-01 09:13:56 +0100albet70(~xxx@2400:8902::f03c:92ff:fe60:98d8)
2022-11-01 09:20:14 +0100merijn(~merijn@86-86-29-250.fixed.kpn.net)
2022-11-01 09:20:22 +0100cfricke(~cfricke@user/cfricke)
2022-11-01 09:21:52 +0100gmg(~user@user/gehmehgeh)
2022-11-01 09:28:02 +0100zeenk(~zeenk@2a02:2f04:a105:5d00:c862:f190:2ea:d494)
2022-11-01 09:28:38 +0100`2jt(~jtomas@191.red-88-17-199.dynamicip.rima-tde.net)
2022-11-01 09:28:38 +0100tzh_(~tzh@c-24-21-73-154.hsd1.wa.comcast.net) (Quit: zzz)
2022-11-01 09:29:40 +0100freeside(~mengwong@122.11.214.163) (Read error: Connection reset by peer)
2022-11-01 09:31:10 +0100ccapndave(~ccapndave@xcpe-62-167-164-99.cgn.res.adslplus.ch) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2022-11-01 09:32:01 +0100vglfr(~vglfr@145.224.100.22) (Remote host closed the connection)
2022-11-01 09:32:09 +0100ccapndave(~ccapndave@xcpe-62-167-164-99.cgn.res.adslplus.ch)
2022-11-01 09:32:16 +0100vglfr(~vglfr@145.224.100.22)
2022-11-01 09:32:25 +0100vglfr(~vglfr@145.224.100.22) (Remote host closed the connection)
2022-11-01 09:33:36 +0100vglfr(~vglfr@145.224.100.22)
2022-11-01 09:34:29 +0100ubert(~Thunderbi@77.119.195.127.wireless.dyn.drei.com)
2022-11-01 09:38:53 +0100cheater(~Username@user/cheater) (Quit: BitchX: the IRC client with hair on its balls)
2022-11-01 09:39:43 +0100gmg(~user@user/gehmehgeh) (Ping timeout: 258 seconds)
2022-11-01 09:41:49 +0100gmg(~user@user/gehmehgeh)
2022-11-01 09:42:06 +0100ccapndave(~ccapndave@xcpe-62-167-164-99.cgn.res.adslplus.ch) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2022-11-01 09:42:28 +0100takuan(~takuan@178-116-218-225.access.telenet.be) (Ping timeout: 252 seconds)
2022-11-01 09:42:42 +0100takuan(~takuan@178-116-218-225.access.telenet.be)
2022-11-01 09:46:07 +0100king_gs(~Thunderbi@2806:103e:29:47b9:f34b:ffff:4cfc:90a6) (Quit: king_gs)
2022-11-01 09:48:14 +0100cheater(~Username@user/cheater)
2022-11-01 09:48:38 +0100shriekingnoise(~shrieking@186.137.167.202) (Quit: Quit)
2022-11-01 09:54:01 +0100mbuf(~Shakthi@49.204.137.137) (Ping timeout: 252 seconds)
2022-11-01 09:54:34 +0100wagle(~wagle@quassel.wagle.io) (Ping timeout: 252 seconds)
2022-11-01 09:54:44 +0100dsrt^(~dsrt@76.145.185.103) (Ping timeout: 248 seconds)
2022-11-01 09:55:06 +0100mbuf(~Shakthi@49.204.137.137)
2022-11-01 09:55:18 +0100wagle(~wagle@quassel.wagle.io)
2022-11-01 10:01:45 +0100Kaiepi(~Kaiepi@108.175.84.104) (Ping timeout: 255 seconds)
2022-11-01 10:02:08 +0100michalz(~michalz@185.246.207.221)
2022-11-01 10:05:04 +0100freeside(~mengwong@bb115-66-48-84.singnet.com.sg)
2022-11-01 10:09:24 +0100freeside(~mengwong@bb115-66-48-84.singnet.com.sg) (Ping timeout: 255 seconds)
2022-11-01 10:10:18 +0100darkstardevx(~darkstard@50.126.124.156) (Remote host closed the connection)
2022-11-01 10:11:03 +0100chomwitt(~chomwitt@athe730-c-multi-217.home.otenet.gr)
2022-11-01 10:13:39 +0100jeffbezosnckx
2022-11-01 10:15:50 +0100darkstardevx(~darkstard@50.126.124.156)
2022-11-01 10:16:11 +0100vglfr(~vglfr@145.224.100.22) (Remote host closed the connection)
2022-11-01 10:16:50 +0100vglfr(~vglfr@145.224.100.22)
2022-11-01 10:17:47 +0100darkstardevx(~darkstard@50.126.124.156) (Remote host closed the connection)
2022-11-01 10:18:45 +0100darkstardevx(~darkstard@50.126.124.156)
2022-11-01 10:24:01 +0100darkstardevx(~darkstard@50.126.124.156) (Remote host closed the connection)
2022-11-01 10:25:14 +0100darkstardevx(~darkstard@50.126.124.156)
2022-11-01 10:25:28 +0100mc47(~mc47@xmonad/TheMC47)
2022-11-01 10:28:03 +0100gmg(~user@user/gehmehgeh) (Quit: Leaving)
2022-11-01 10:28:28 +0100eggplantade(~Eggplanta@2600:1700:38c5:d800:c9d:1a05:4084:603c) (Remote host closed the connection)
2022-11-01 10:32:46 +0100titibandit(~titibandi@xdsl-87-79-250-160.nc.de)
2022-11-01 10:35:49 +0100darkstardevx(~darkstard@50.126.124.156) (Remote host closed the connection)
2022-11-01 10:36:59 +0100szkl(uid110435@id-110435.uxbridge.irccloud.com) (Quit: Connection closed for inactivity)
2022-11-01 10:37:07 +0100darkstardevx(~darkstard@50.126.124.156)
2022-11-01 10:41:07 +0100emmanuelux(~emmanuelu@user/emmanuelux)
2022-11-01 10:44:07 +0100chele(~chele@user/chele)
2022-11-01 10:44:41 +0100acidjnk(~acidjnk@p200300d6e7137a36f0ab6f680c2cefbd.dip0.t-ipconnect.de) (Ping timeout: 246 seconds)
2022-11-01 10:47:49 +0100freeside(~mengwong@bb115-66-48-84.singnet.com.sg)
2022-11-01 10:48:01 +0100darkstardevx(~darkstard@50.126.124.156) (Remote host closed the connection)
2022-11-01 10:49:00 +0100lucerne(~lucerne@5.116.23.112)
2022-11-01 10:50:24 +0100darkstardevx(~darkstard@50.126.124.156)
2022-11-01 10:50:57 +0100Spukgespenst(~user@user/siracusa) (Quit: Bye!)
2022-11-01 10:51:40 +0100darkstardevx(~darkstard@50.126.124.156) (Remote host closed the connection)
2022-11-01 10:52:05 +0100darkstardevx(~darkstard@50.126.124.156)
2022-11-01 10:53:24 +0100freeside(~mengwong@bb115-66-48-84.singnet.com.sg) (Ping timeout: 248 seconds)
2022-11-01 10:53:31 +0100king_gs(~Thunderbi@2806:103e:29:47b9:f34b:ffff:4cfc:90a6)
2022-11-01 10:54:37 +0100__monty__(~toonn@user/toonn)
2022-11-01 10:58:11 +0100freeside(~mengwong@bb115-66-48-84.singnet.com.sg)
2022-11-01 10:59:24 +0100jmdaemon(~jmdaemon@user/jmdaemon) (Ping timeout: 246 seconds)
2022-11-01 11:00:54 +0100econo(uid147250@user/econo) (Quit: Connection closed for inactivity)
2022-11-01 11:03:14 +0100danza(~francesco@22.red-79-153-42.dynamicip.rima-tde.net) (Ping timeout: 246 seconds)
2022-11-01 11:03:51 +0100acidjnk(~acidjnk@p200300d6e7137a36d04e220ec440ab2b.dip0.t-ipconnect.de)
2022-11-01 11:04:33 +0100Kaiepi(~Kaiepi@108.175.84.104)
2022-11-01 11:05:41 +0100kenran(~user@user/kenran)
2022-11-01 11:06:35 +0100darkstardevx(~darkstard@50.126.124.156) (Remote host closed the connection)
2022-11-01 11:06:46 +0100img(~img@user/img) (Quit: ZNC 1.8.2 - https://znc.in)
2022-11-01 11:07:34 +0100kenran(~user@user/kenran) (Remote host closed the connection)
2022-11-01 11:09:10 +0100darkstardevx(~darkstard@50.126.124.156)
2022-11-01 11:09:31 +0100vglfr(~vglfr@145.224.100.22) (Ping timeout: 272 seconds)
2022-11-01 11:09:43 +0100img(~img@user/img)
2022-11-01 11:09:55 +0100vglfr(~vglfr@145.224.100.22)
2022-11-01 11:10:10 +0100darkstardevx(~darkstard@50.126.124.156) (Remote host closed the connection)
2022-11-01 11:10:35 +0100darkstardevx(~darkstard@50.126.124.156)
2022-11-01 11:10:46 +0100darkstardevx(~darkstard@50.126.124.156) (Client Quit)
2022-11-01 11:11:34 +0100lucerne(~lucerne@5.116.23.112) (Ping timeout: 252 seconds)
2022-11-01 11:12:52 +0100frost77(~frost@user/frost)
2022-11-01 11:15:09 +0100dcoutts_(~duncan@host86-163-164-210.range86-163.btcentralplus.com)
2022-11-01 11:15:13 +0100xff0x(~xff0x@125x103x176x34.ap125.ftth.ucom.ne.jp) (Ping timeout: 272 seconds)
2022-11-01 11:15:35 +0100dcoutts(~duncan@host86-163-164-210.range86-163.btcentralplus.com) (Read error: Connection reset by peer)
2022-11-01 11:22:18 +0100zaquest(~notzaques@5.130.79.72) (Ping timeout: 255 seconds)
2022-11-01 11:24:17 +0100RobertKrook(~RobertKro@ext-1-087.eduroam.chalmers.se)
2022-11-01 11:27:22 +0100 <RobertKrook> Hi! I have a question. Can I create an IORef <something>, give that to a FFI call that stuffs it away in a global variable in C, and rely on the GC to not nuke that value?
2022-11-01 11:27:41 +0100 <RobertKrook> Don't ask me why I am doing this...
2022-11-01 11:28:34 +0100AkechiShiro(~licht@user/akechishiro)
2022-11-01 11:28:43 +0100 <merijn> RobertKrook: Yes, with a bit of effort
2022-11-01 11:29:15 +0100 <RobertKrook> Effort is okay, I will carry this cross so that others won't have to~
2022-11-01 11:29:17 +0100 <merijn> RobertKrook: You want StablePtr
2022-11-01 11:29:23 +0100 <merijn> RobertKrook: https://hackage.haskell.org/package/base-4.17.0.0/docs/GHC-Stable.html#t:StablePtr
2022-11-01 11:29:41 +0100 <merijn> RobertKrook: Which turns any Haskell value into an opaque void* for C to hold on to and pass back to the RTS later
2022-11-01 11:30:13 +0100 <merijn> (and guarantees no GC/moving/whatever until manually freed)
2022-11-01 11:33:34 +0100RobertKrook(~RobertKro@ext-1-087.eduroam.chalmers.se) (Ping timeout: 252 seconds)
2022-11-01 11:36:19 +0100vglfr(~vglfr@145.224.100.22) (Ping timeout: 252 seconds)
2022-11-01 11:36:38 +0100vglfr(~vglfr@145.224.100.22)
2022-11-01 11:37:06 +0100ubert1(~Thunderbi@77.119.195.127.wireless.dyn.drei.com)
2022-11-01 11:37:19 +0100RobertKrook(~RobertKro@ext-1-087.eduroam.chalmers.se)
2022-11-01 11:37:25 +0100ubert(~Thunderbi@77.119.195.127.wireless.dyn.drei.com) (Ping timeout: 252 seconds)
2022-11-01 11:37:25 +0100ubert1ubert
2022-11-01 11:39:52 +0100danza(~francesco@93.176.137.22)
2022-11-01 11:48:18 +0100beteigeuze(~Thunderbi@bl14-81-220.dsl.telepac.pt)
2022-11-01 11:48:36 +0100causal(~user@2001:470:ea0f:3:329c:23ff:fe3f:1e0d)
2022-11-01 11:49:34 +0100titibandit(~titibandi@xdsl-87-79-250-160.nc.de) (Quit: Leaving.)
2022-11-01 11:51:10 +0100cheater(~Username@user/cheater) (Ping timeout: 252 seconds)
2022-11-01 11:51:33 +0100cheater(~Username@user/cheater)
2022-11-01 11:52:23 +0100Katarushisu(~Katarushi@cpc147790-finc20-2-0-cust502.4-2.cable.virginm.net) (Quit: The Lounge - https://thelounge.chat)
2022-11-01 11:53:25 +0100Katarushisu(~Katarushi@cpc147790-finc20-2-0-cust502.4-2.cable.virginm.net)
2022-11-01 11:53:36 +0100mbuf(~Shakthi@49.204.137.137) (Read error: Connection reset by peer)
2022-11-01 11:53:47 +0100mbuf(~Shakthi@49.204.137.137)
2022-11-01 11:59:25 +0100wagle(~wagle@quassel.wagle.io) (Ping timeout: 252 seconds)
2022-11-01 11:59:59 +0100wagle(~wagle@quassel.wagle.io)
2022-11-01 12:00:33 +0100Katarushisu(~Katarushi@cpc147790-finc20-2-0-cust502.4-2.cable.virginm.net) (Quit: The Lounge - https://thelounge.chat)
2022-11-01 12:00:52 +0100Katarushisu(~Katarushi@cpc147790-finc20-2-0-cust502.4-2.cable.virginm.net)
2022-11-01 12:01:01 +0100dcoutts_(~duncan@host86-163-164-210.range86-163.btcentralplus.com) (Remote host closed the connection)
2022-11-01 12:01:24 +0100dcoutts_(~duncan@host86-163-164-210.range86-163.btcentralplus.com)
2022-11-01 12:06:41 +0100acidjnk(~acidjnk@p200300d6e7137a36d04e220ec440ab2b.dip0.t-ipconnect.de) (Ping timeout: 276 seconds)
2022-11-01 12:08:15 +0100xff0x(~xff0x@2405:6580:b080:900:4f74:df9f:ea35:9157)
2022-11-01 12:09:19 +0100dcoutts_(~duncan@host86-163-164-210.range86-163.btcentralplus.com) (Ping timeout: 252 seconds)
2022-11-01 12:12:23 +0100mesaoptimizer(apotheosis@user/PapuaHardyNet) (Quit: mesaoptimizer)
2022-11-01 12:12:32 +0100mesaoptimizer(apotheosis@user/PapuaHardyNet)
2022-11-01 12:18:48 +0100bitdex(~bitdex@gateway/tor-sasl/bitdex) (Ping timeout: 258 seconds)
2022-11-01 12:20:31 +0100bitdex(~bitdex@gateway/tor-sasl/bitdex)
2022-11-01 12:26:40 +0100themc47(~mc47@xmonad/TheMC47)
2022-11-01 12:27:35 +0100mjs2600(~mjs2600@c-24-91-3-49.hsd1.vt.comcast.net) (Quit: ZNC 1.8.2 - https://znc.in)
2022-11-01 12:29:07 +0100mjs2600(~mjs2600@c-24-91-3-49.hsd1.vt.comcast.net)
2022-11-01 12:29:07 +0100mc47(~mc47@xmonad/TheMC47) (Ping timeout: 252 seconds)
2022-11-01 12:30:43 +0100freeside_(~mengwong@103.252.202.193)
2022-11-01 12:32:04 +0100freeside(~mengwong@bb115-66-48-84.singnet.com.sg) (Ping timeout: 248 seconds)
2022-11-01 12:36:31 +0100 <tomsmeding> RobertKrook: https://ircbrowse.tomsmeding.com/browse/lchaskell?id=756670#trid756670
2022-11-01 12:39:35 +0100dunj3_dunj3
2022-11-01 12:42:34 +0100 <cheater> if i define a top level function like foo a = a ++ a, and then write a type for it, when exactly do i need to use forall?
2022-11-01 12:45:21 +0100chele_(~chele@user/chele)
2022-11-01 12:47:49 +0100chele(~chele@user/chele) (Ping timeout: 252 seconds)
2022-11-01 12:51:58 +0100 <merijn> cheater: Never, because there is an implicit forall in Haskell signatures
2022-11-01 12:52:08 +0100 <merijn> forall is really something from the underlying theory used by GHC
2022-11-01 12:52:24 +0100 <merijn> So "id :: a -> a" is interpreted by GHC as "id :: forall a . a -> a"
2022-11-01 12:52:32 +0100 <cheater> ok.
2022-11-01 12:52:45 +0100 <cheater> thanks
2022-11-01 12:52:47 +0100 <cheater> :)
2022-11-01 12:54:26 +0100 <cheater> merijn: hmm...
2022-11-01 12:54:35 +0100 <cheater> "A confusing point: you may hear that when you omit the forall from a type it is actually still implicitly there. (from Norman's answer: "normally these languages omit the forall from polymorphic types"). This claim is correct, but it refers to the other uses of forall, and not to the ScopedTypeVariables use."
2022-11-01 12:57:18 +0100 <merijn> cheater: My statement is about "no extensions" haskell, there's several extensions that make the foralls explicit or hijack them for other things
2022-11-01 12:57:30 +0100 <cheater> k
2022-11-01 12:58:04 +0100 <merijn> cheater: ScopedTypeVariables is defined in such a way that it "does nothing" unless you opt specific functions into using it (so enabling the extension doesn't break half a module)
2022-11-01 12:58:16 +0100__monty__(~toonn@user/toonn) (Ping timeout: 252 seconds)
2022-11-01 12:58:17 +0100 <merijn> You opt in by explicitly using forall in the signature
2022-11-01 12:58:46 +0100 <merijn> i.e. if you write "foo :: forall a . a -> a" signals to GHC "I want ScopedTypeVariables before for the local bindings within 'foo'"
2022-11-01 12:59:00 +0100 <merijn> s/before/behaviour
2022-11-01 13:00:07 +0100__monty__(~toonn@user/toonn)
2022-11-01 13:05:26 +0100Kaipei(~Kaiepi@108.175.84.104)
2022-11-01 13:05:33 +0100frost77(~frost@user/frost) (Ping timeout: 244 seconds)
2022-11-01 13:08:43 +0100Kaiepi(~Kaiepi@108.175.84.104) (Ping timeout: 252 seconds)
2022-11-01 13:12:38 +0100raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
2022-11-01 13:18:25 +0100tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
2022-11-01 13:21:48 +0100acidjnk(~acidjnk@p200300d6e7137a36d04e220ec440ab2b.dip0.t-ipconnect.de)
2022-11-01 13:25:51 +0100bitdex(~bitdex@gateway/tor-sasl/bitdex) (Quit: = "")
2022-11-01 13:27:13 +0100lucerne(~lucerne@5.114.187.176)
2022-11-01 13:28:16 +0100szkl(uid110435@id-110435.uxbridge.irccloud.com)
2022-11-01 13:30:57 +0100causal(~user@2001:470:ea0f:3:329c:23ff:fe3f:1e0d) (Ping timeout: 246 seconds)
2022-11-01 13:33:18 +0100Profpatsch(~Profpatsc@static.88-198-193-255.clients.your-server.de) (Quit: WeeChat 3.7)
2022-11-01 13:33:28 +0100Kaipei(~Kaiepi@108.175.84.104) (Ping timeout: 252 seconds)
2022-11-01 13:43:55 +0100danza(~francesco@93.176.137.22) (Ping timeout: 252 seconds)
2022-11-01 13:44:19 +0100danza(~francesco@93.176.137.22)
2022-11-01 13:45:06 +0100causal(~user@50.35.83.177)
2022-11-01 13:46:30 +0100Kaipei(~Kaiepi@108.175.84.104)
2022-11-01 13:51:30 +0100tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2022-11-01 13:54:55 +0100RobertKrook(~RobertKro@ext-1-087.eduroam.chalmers.se) (Ping timeout: 252 seconds)
2022-11-01 13:55:02 +0100irrgit_(~irrgit@89.47.234.74)
2022-11-01 13:57:40 +0100mbuf(~Shakthi@49.204.137.137) (Ping timeout: 252 seconds)
2022-11-01 13:58:03 +0100mbuf(~Shakthi@49.204.137.137)
2022-11-01 13:59:34 +0100chele_(~chele@user/chele) (Remote host closed the connection)
2022-11-01 13:59:48 +0100chele_(~chele@user/chele)
2022-11-01 14:00:00 +0100Kaipei(~Kaiepi@108.175.84.104) (Ping timeout: 246 seconds)
2022-11-01 14:20:18 +0100ystael(~ystael@user/ystael)
2022-11-01 14:21:40 +0100coot(~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba) (Quit: coot)
2022-11-01 14:32:25 +0100 <cheater> merijn: ahh ok
2022-11-01 14:35:59 +0100motherfsck(~motherfsc@user/motherfsck) (Ping timeout: 272 seconds)
2022-11-01 14:37:35 +0100Guest16(~Guest16@219-100-30-111.osa.wi-gate.net)
2022-11-01 14:40:29 +0100Guest16(~Guest16@219-100-30-111.osa.wi-gate.net) (Client Quit)
2022-11-01 14:41:33 +0100elevenkb(~elevenkb`@105.184.125.168)
2022-11-01 14:43:32 +0100tired(~tired@user/tired) (Quit: /)
2022-11-01 14:44:10 +0100tired(~tired@user/tired)
2022-11-01 14:50:40 +0100motherfsck(~motherfsc@user/motherfsck)
2022-11-01 14:53:25 +0100Kaipei(~Kaiepi@108.175.84.104)
2022-11-01 14:55:39 +0100jero98772(~jero98772@2800:484:1d80:d8ce:efcc:cbb3:7f2a:6dff)
2022-11-01 14:57:06 +0100elevenkb(~elevenkb`@105.184.125.168) (Quit: Client closed)
2022-11-01 14:57:51 +0100`2jt(~jtomas@191.red-88-17-199.dynamicip.rima-tde.net) (Ping timeout: 255 seconds)
2022-11-01 14:58:05 +0100Maeda(~Maeda@91-161-10-149.subs.proxad.net)
2022-11-01 15:05:24 +0100tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
2022-11-01 15:11:12 +0100elevenkb(~elevenkb@105.184.125.168)
2022-11-01 15:11:41 +0100thegeekinside(~thegeekin@189.180.115.115)
2022-11-01 15:15:46 +0100raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 252 seconds)
2022-11-01 15:16:11 +0100raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
2022-11-01 15:18:05 +0100johnw(~johnw@2600:1700:cf00:db0:c1b5:8725:73d7:1ac)
2022-11-01 15:19:59 +0100waleee(~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340)
2022-11-01 15:20:08 +0100 <dminuoso> Arguably, it might be nicer if a forall was always demanded when quantification occured.
2022-11-01 15:23:40 +0100 <dminuoso> However, the scoping is an interesting thing. Originally I held the opinion that `forall` in a type signature bringing a type variable into scope in a subbinding would be a good thing.
2022-11-01 15:24:01 +0100lucerne(~lucerne@5.114.187.176) (Ping timeout: 252 seconds)
2022-11-01 15:24:22 +0100zaquest(~notzaques@5.130.79.72)
2022-11-01 15:24:57 +0100 <dminuoso> Until ski pointed out that there's some disconnect between the type signature and the definition, which could be apart - one could have the definition at the top of the module and the type signature at the bottom. And in that, the ScopedTypeVariables behavior seems strange and confusing.
2022-11-01 15:25:40 +0100kenran(~user@user/kenran)
2022-11-01 15:25:46 +0100 <dminuoso> An explicit type variable binder `f @a x = ...` seems more logically, because then there's a clear binding sight
2022-11-01 15:26:42 +0100kenran(~user@user/kenran) (Remote host closed the connection)
2022-11-01 15:30:15 +0100vglfr(~vglfr@145.224.100.22) (Read error: Connection reset by peer)
2022-11-01 15:30:29 +0100vglfr(~vglfr@145.224.100.22)
2022-11-01 15:31:26 +0100 <tomsmeding> that introduces a dependency on the ordering of forall-quantified type parameters though
2022-11-01 15:31:44 +0100 <tomsmeding> you already have that with type applications, but it's always iffy
2022-11-01 15:31:49 +0100elevenkb(~elevenkb@105.184.125.168) (Quit: Ping timeout (120 seconds))
2022-11-01 15:31:56 +0100 <tomsmeding> needing to remember the order of value arguments is bad enough
2022-11-01 15:32:47 +0100Sgeo(~Sgeo@user/sgeo)
2022-11-01 15:33:39 +0100 <dminuoso> It seems worse to have a type annotation magically beam variables into scope half a module away.
2022-11-01 15:34:07 +0100 <dminuoso> If Einstein was still alive, he would call them spooky type variables.
2022-11-01 15:34:09 +0100jonathanx_(~jonathan@h-178-174-176-109.A357.priv.bahnhof.se) (Remote host closed the connection)
2022-11-01 15:34:43 +0100 <int-e> surely you can use template haskell staging to disconnect them
2022-11-01 15:34:49 +0100int-eruns
2022-11-01 15:36:20 +0100 <tomsmeding> dminuoso: sure :p
2022-11-01 15:36:34 +0100 <tomsmeding> dminuoso: though, you get the same disconnect w.r.t. ordering
2022-11-01 15:36:49 +0100 <tomsmeding> because the ordering is defined by the type signature, and the ordering is used in the function definition
2022-11-01 15:42:10 +0100merijngets out his "TypeApplications is stupid and will break your shit" drum
2022-11-01 15:42:22 +0100 <c_wraith> ScopedTypeVariables *does* also allow binding type variables in a lambda - for types of arguments
2022-11-01 15:43:19 +0100 <c_wraith> For all the complaints I've heard about TypeApplications breaking things, I've never actually seen it happen in code where I'd want to use it.
2022-11-01 15:45:53 +0100jonathanx(~jonathan@h-178-174-176-109.A357.priv.bahnhof.se)
2022-11-01 15:53:59 +0100 <merijn> c_wraith: It already happened, GHC 9 had release notes mentioning at least 2 (I think?) package breaking because the order in which GHC inferred the foralls was changed
2022-11-01 15:54:23 +0100shriekingnoise(~shrieking@186.137.167.202)
2022-11-01 15:56:01 +0100 <c_wraith> Why did they let the foralls be inferred?
2022-11-01 15:56:20 +0100bjourne(~bjourne@2001:6b0:1:1140:42bf:ff4:f8fa:50e5)
2022-11-01 15:56:30 +0100titibandit(~titibandi@xdsl-87-79-250-160.nc.de)
2022-11-01 15:57:04 +0100 <merijn> c_wraith: Because it was just normal haskell?
2022-11-01 15:57:31 +0100 <merijn> And some packages used TypeApplications on code that had no explicit forall (and thus no fixed order on type arguments)
2022-11-01 15:57:46 +0100 <merijn> And when GHC changed it's internal inference algorithm that order changed (and thus broke)
2022-11-01 15:58:15 +0100zeenk(~zeenk@2a02:2f04:a105:5d00:c862:f190:2ea:d494) (Quit: Konversation terminated!)
2022-11-01 15:59:27 +0100zeenk(~zeenk@2a02:2f04:a105:5d00:c862:f190:2ea:d494)
2022-11-01 16:00:30 +0100segfaultfizzbuzz(~segfaultf@12.172.217.142)
2022-11-01 16:01:00 +0100 <fendor[m]> Heyo, I want to mess around with some type level programming, is it possible to have some kind of type instance rewrite rules for type families? E.g., I am thinking of having something like `forall a p . Last (Append a p) ~ p`. first-class-families is capable of referring the other way around, e.g. `forall a p . Tail (Cons a p) ~ p`.
2022-11-01 16:01:22 +0100chele__(~chele@user/chele)
2022-11-01 16:01:23 +0100 <fendor[m]> *Init (Append a p) + p
2022-11-01 16:04:10 +0100chele_(~chele@user/chele) (Ping timeout: 252 seconds)
2022-11-01 16:04:20 +0100`2jt(~jtomas@191.red-88-17-199.dynamicip.rima-tde.net)
2022-11-01 16:04:52 +0100segfaultfizzbuzz(~segfaultf@12.172.217.142) (Ping timeout: 248 seconds)
2022-11-01 16:09:07 +0100 <heath> til archive.org is around 100petabytes
2022-11-01 16:09:14 +0100 <heath> sorry, wrong chan :)
2022-11-01 16:12:06 +0100zeenk(~zeenk@2a02:2f04:a105:5d00:c862:f190:2ea:d494) (Ping timeout: 255 seconds)
2022-11-01 16:16:57 +0100zeenk(~zeenk@5.12.219.147)
2022-11-01 16:20:34 +0100 <bjourne> im annoyed that "stack build" takes over a second to run even when there is nothing to (re)build
2022-11-01 16:22:14 +0100 <fendor[m]> last time I used stack, it was pretty quick
2022-11-01 16:23:58 +0100ystael(~ystael@user/ystael) (Ping timeout: 252 seconds)
2022-11-01 16:24:11 +0100 <fendor[m]> bjourne, you don't happen to use nixos, right?
2022-11-01 16:24:13 +0100ystael(~ystael@user/ystael)
2022-11-01 16:25:29 +0100jakalx(~jakalx@base.jakalx.net) (Error from remote client)
2022-11-01 16:26:59 +0100acidjnk(~acidjnk@p200300d6e7137a36d04e220ec440ab2b.dip0.t-ipconnect.de) (Ping timeout: 246 seconds)
2022-11-01 16:27:21 +0100machinedgod(~machinedg@d198-53-218-113.abhsia.telus.net)
2022-11-01 16:30:34 +0100zeenk(~zeenk@5.12.219.147) (Ping timeout: 252 seconds)
2022-11-01 16:31:58 +0100zeenk(~zeenk@5.12.219.147)
2022-11-01 16:33:54 +0100segfaultfizzbuzz(~segfaultf@12.172.217.142)
2022-11-01 16:34:20 +0100zeenk(~zeenk@5.12.219.147) (Remote host closed the connection)
2022-11-01 16:34:28 +0100acidjnk(~acidjnk@p200300d6e7137a4494984508834583e9.dip0.t-ipconnect.de)
2022-11-01 16:35:23 +0100zeenk(~zeenk@2a02:2f04:a105:5d00:c862:f190:2ea:d494)
2022-11-01 16:37:02 +0100jakalx(~jakalx@base.jakalx.net)
2022-11-01 16:38:16 +0100segfaultfizzbuzz(~segfaultf@12.172.217.142) (Ping timeout: 252 seconds)
2022-11-01 16:41:38 +0100coot(~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba)
2022-11-01 16:42:45 +0100bdrewery[m](~bdrewerym@2001:470:69fc:105::1:684a)
2022-11-01 16:44:08 +0100king_gs(~Thunderbi@2806:103e:29:47b9:f34b:ffff:4cfc:90a6) (Remote host closed the connection)
2022-11-01 16:44:15 +0100eggplantade(~Eggplanta@2600:1700:38c5:d800:c9d:1a05:4084:603c)
2022-11-01 16:44:27 +0100king_gs(~Thunderbi@2806:103e:29:47b9:f34b:ffff:4cfc:90a6)
2022-11-01 16:45:54 +0100AkechiShiro(~licht@user/akechishiro) (Quit: WeeChat 3.7.1)
2022-11-01 16:48:57 +0100cfricke(~cfricke@user/cfricke) (Quit: WeeChat 3.7.1)
2022-11-01 16:52:39 +0100 <bjourne> fendor[m]: no arch
2022-11-01 16:55:22 +0100 <fendor[m]> hm, maybe I misremember then
2022-11-01 16:55:25 +0100ec(~ec@gateway/tor-sasl/ec) (Remote host closed the connection)
2022-11-01 16:58:37 +0100Maeda(~Maeda@91-161-10-149.subs.proxad.net) (Quit: leaving)
2022-11-01 17:01:29 +0100zeenk(~zeenk@2a02:2f04:a105:5d00:c862:f190:2ea:d494) (Quit: Konversation terminated!)
2022-11-01 17:01:57 +0100Maeda(~Maeda@91-161-10-149.subs.proxad.net)
2022-11-01 17:02:55 +0100Maeda(~Maeda@91-161-10-149.subs.proxad.net) (Client Quit)
2022-11-01 17:03:50 +0100Maeda(~Maeda@91-161-10-149.subs.proxad.net)
2022-11-01 17:04:51 +0100lortabac(~lortabac@2a01:e0a:541:b8f0:7d68:5b7c:dcd9:213) (Quit: WeeChat 2.8)
2022-11-01 17:06:58 +0100ec(~ec@gateway/tor-sasl/ec)
2022-11-01 17:08:53 +0100justachejustPardoned
2022-11-01 17:09:08 +0100 <tomsmeding> fendor[m]: a very well-placed pattern match on (Refl :: (Last (Append a p)) p) might work, but it'll be flaky and difficult to get right
2022-11-01 17:09:26 +0100 <tomsmeding> s/Refl/unsafeCoerce Refl/
2022-11-01 17:09:56 +0100Maeda(~Maeda@91-161-10-149.subs.proxad.net) (Quit: leaving)
2022-11-01 17:10:02 +0100eggplantade(~Eggplanta@2600:1700:38c5:d800:c9d:1a05:4084:603c) (Remote host closed the connection)
2022-11-01 17:10:27 +0100 <fendor[m]> >_< new typechecker plugins have a new field tcPluginRewrite, according to the docs
2022-11-01 17:10:28 +0100 <fendor[m]> > Rewrite saturated type family applications.
2022-11-01 17:10:29 +0100 <lambdabot> <hint>:1:19: error: parse error on input ‘type’
2022-11-01 17:11:35 +0100 <fendor[m]> maybe that'd be helpful for this in particular
2022-11-01 17:11:38 +0100 <fendor[m]> but not very extensible
2022-11-01 17:19:27 +0100econo(uid147250@user/econo)
2022-11-01 17:25:58 +0100dsrt^(~dsrt@76.145.185.103)
2022-11-01 17:28:36 +0100 <sm> bjourne: there is some
2022-11-01 17:28:36 +0100 <sm> no zero overhead for sure.. is it a big project ?
2022-11-01 17:28:52 +0100zaquest(~notzaques@5.130.79.72) (Ping timeout: 252 seconds)
2022-11-01 17:30:31 +0100sajith_sajith
2022-11-01 17:30:35 +0100eggplantade(~Eggplanta@2600:1700:38c5:d800:c9d:1a05:4084:603c)
2022-11-01 17:31:06 +0100jakalx(~jakalx@base.jakalx.net) (Error from remote client)
2022-11-01 17:32:01 +0100troydm(~troydm@host-176-37-124-197.b025.la.net.ua)
2022-11-01 17:32:10 +0100jakalx(~jakalx@base.jakalx.net)
2022-11-01 17:33:44 +0100Sgeo_(~Sgeo@user/sgeo)
2022-11-01 17:37:07 +0100Sgeo(~Sgeo@user/sgeo) (Ping timeout: 252 seconds)
2022-11-01 17:38:42 +0100lucerne(~lucerne@5.114.187.176)
2022-11-01 17:41:53 +0100zaquest(~notzaques@5.130.79.72)
2022-11-01 17:43:52 +0100dsrt^(~dsrt@76.145.185.103) (Remote host closed the connection)
2022-11-01 17:45:22 +0100themc47(~mc47@xmonad/TheMC47) (Remote host closed the connection)
2022-11-01 17:49:45 +0100merijn(~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 255 seconds)
2022-11-01 17:57:34 +0100shriekingnoise_(~shrieking@186.137.167.202)
2022-11-01 17:58:01 +0100shriekingnoise(~shrieking@186.137.167.202) (Ping timeout: 252 seconds)
2022-11-01 17:59:10 +0100eggplantade(~Eggplanta@2600:1700:38c5:d800:c9d:1a05:4084:603c) (Remote host closed the connection)
2022-11-01 18:00:17 +0100eggplantade(~Eggplanta@2600:1700:38c5:d800:c9d:1a05:4084:603c)
2022-11-01 18:00:46 +0100titibandit(~titibandi@xdsl-87-79-250-160.nc.de) (Ping timeout: 252 seconds)
2022-11-01 18:01:24 +0100titibandit(~titibandi@xdsl-87-79-250-160.nc.de)
2022-11-01 18:06:14 +0100pi42(~baruchel@70.25.7.93.rev.sfr.net)
2022-11-01 18:11:53 +0100 <pi42> Is it possible to build an infinite list by starting from an initial seed (element of index 0) and then building new chunks whose lengths are increasing powers of 2 by copying/modifying the previous chunk?
2022-11-01 18:11:55 +0100 <pi42> Let's take the Thue-Morse sequence (please, this is a toy example; I am not interested here in more efficient ways of building that sequence).
2022-11-01 18:11:57 +0100 <pi42> One way of bulding it is by starting from [0] and then concatenating the list with itself by applying the mapping \x -> 1-x; yielding [0, 1] then [0, 1, 1, 0], [0, 1, 1, 0, 1, 0, 0, 1@, etc.
2022-11-01 18:11:58 +0100 <pi42> Of course, I am interested in lazy evaluation, but it would be OK if each new chunk is generated all at once.
2022-11-01 18:12:06 +0100redmp(~redmp@lib-02-subnet-194.rdns.cenic.net)
2022-11-01 18:12:11 +0100Vq(~vq@90-227-195-41-no77.tbcn.telia.com) (Quit: Server maintenance)
2022-11-01 18:12:18 +0100Maeda(~Maeda@91-161-10-149.subs.proxad.net)
2022-11-01 18:16:19 +0100merijn(~merijn@86-86-29-250.fixed.kpn.net)
2022-11-01 18:16:35 +0100Maeda(~Maeda@91-161-10-149.subs.proxad.net) (Client Quit)
2022-11-01 18:16:59 +0100azimut(~azimut@gateway/tor-sasl/azimut)
2022-11-01 18:17:35 +0100Vq(~vq@90-227-195-41-no77.tbcn.telia.com)
2022-11-01 18:17:51 +0100 <ski> > fix (\pos -> 1 : [n | m <- pos,n <- [2*m,2*m + 1]])
2022-11-01 18:17:52 +0100 <lambdabot> [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,...
2022-11-01 18:18:02 +0100Maeda(~Maeda@91-161-10-149.subs.proxad.net)
2022-11-01 18:19:15 +0100 <ski> pi42 : you could use an accumulator, of course ..
2022-11-01 18:19:39 +0100 <ski> are there any constraints on how you build each new chunk from the previous one ?
2022-11-01 18:21:21 +0100Hercules(~Hercules@ti0018a400-8077.bb.online.no)
2022-11-01 18:24:57 +0100 <int-e> > concat $ iterate (\chunk -> chunk >>= \n -> [2*n, 2*n+1]) [1]
2022-11-01 18:24:58 +0100 <lambdabot> [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,...
2022-11-01 18:25:14 +0100 <int-e> > iterate (\chunk -> chunk >>= \n -> [2*n, 2*n+1]) [1]
2022-11-01 18:25:15 +0100 <lambdabot> [[1],[2,3],[4,5,6,7],[8,9,10,11,12,13,14,15],[16,17,18,19,20,21,22,23,24,25,...
2022-11-01 18:25:20 +0100int-eshrugs
2022-11-01 18:25:28 +0100 <int-e> I'd prefer ski's version.
2022-11-01 18:25:50 +0100 <ski> @let (/\/) :: [a] -> [a] -> [a]; [ ] /\/ ys = ys; (x:xs) /\/ ys = x : ys /\/ xs
2022-11-01 18:25:51 +0100 <lambdabot> Defined.
2022-11-01 18:25:53 +0100 <pi42> ski and int-e: thank you for your solutions; I will study them carefully.
2022-11-01 18:26:17 +0100 <ski> > fix (\abacaba -> repeat 0 /\/ map (1 +) abacaba)
2022-11-01 18:26:19 +0100 <lambdabot> [0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,5,0,1,0,2,0,1...
2022-11-01 18:27:32 +0100 <int-e> Hmm, is xs /\/ ys = concat (transpose [xs,ys]) ?
2022-11-01 18:27:43 +0100ystael(~ystael@user/ystael) (Ping timeout: 252 seconds)
2022-11-01 18:28:20 +0100troydm(~troydm@host-176-37-124-197.b025.la.net.ua) (Ping timeout: 248 seconds)
2022-11-01 18:28:21 +0100 <ski> > map (fst . until (odd . snd) ((1 +) *** (`div` 2)) . (0,)) [1 ..]
2022-11-01 18:28:23 +0100 <lambdabot> [0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,5,0,1,0,2,0,1...
2022-11-01 18:28:47 +0100 <ski> int-e : yes. it's "interleave"
2022-11-01 18:29:04 +0100 <int-e> > map countTrailingZeros [1..]
2022-11-01 18:29:06 +0100 <lambdabot> error:
2022-11-01 18:29:06 +0100 <lambdabot> • Ambiguous type variable ‘b0’ arising from a use of ‘countTrailingZeros’
2022-11-01 18:29:06 +0100 <lambdabot> prevents the constraint ‘(FiniteBits b0)’ from being solved.
2022-11-01 18:29:09 +0100 <ski> (well, there might be some discrepancy if one or both lists are finite)
2022-11-01 18:29:15 +0100 <int-e> > map Data.Bits.countTrailingZeros [1..]
2022-11-01 18:29:17 +0100 <lambdabot> error:
2022-11-01 18:29:17 +0100 <lambdabot> • Ambiguous type variable ‘b0’ arising from a use of ‘countTrailingZeros’
2022-11-01 18:29:17 +0100 <lambdabot> prevents the constraint ‘(FiniteBits b0)’ from being solved.
2022-11-01 18:29:20 +0100 <int-e> huh
2022-11-01 18:29:31 +0100 <int-e> Oh FiniteBits... awkward
2022-11-01 18:29:40 +0100ystael(~ystael@user/ystael)
2022-11-01 18:30:30 +0100 <ski> > fix (\abbcbccd -> 0 : tail (abbcbccd /\/ map (1 +) abbcbccd))
2022-11-01 18:30:33 +0100 <lambdabot> [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,1,2,2,3,2,3,3,4,2,3,3,4,3,4,4,5,1,2,2,3,2,3...
2022-11-01 18:30:42 +0100 <int-e> > map countTrailingZeros [(1 :: Word)..] -- fails after a while
2022-11-01 18:30:43 +0100 <lambdabot> [0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,5,0,1,0,2,0,1...
2022-11-01 18:30:51 +0100 <ski> map popCount [0 ..]
2022-11-01 18:30:55 +0100 <ski> > map popCount [0 ..]
2022-11-01 18:30:57 +0100 <lambdabot> [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,1,2,2,3,2,3,3,4,2,3,3,4,3,4,4,5,1,2,2,3,2,3...
2022-11-01 18:31:44 +0100 <int-e> > map (\x -> popCount x - popCount (x-1) - 1) [1..] -- like this then?
2022-11-01 18:31:46 +0100 <lambdabot> [0,-1,0,-2,0,-1,0,-3,0,-1,0,-2,0,-1,0,-4,0,-1,0,-2,0,-1,0,-3,0,-1,0,-2,0,-1,...
2022-11-01 18:31:52 +0100 <int-e> well, close.
2022-11-01 18:32:05 +0100 <int-e> > popCount (-1)
2022-11-01 18:32:07 +0100 <lambdabot> -1
2022-11-01 18:32:17 +0100 <pi42> ski: trying to understand; could you provide an example for the Thue-Morse sequence (start from [0] and then copy the whole list with the mapping \x -> 1-x as described above?
2022-11-01 18:32:28 +0100 <pi42> One way of bulding it is by starting from [0] and then concatenating the list with itself by applying the mapping \x -> 1-x; yielding [0, 1] then [0, 1, 1, 0], [0, 1, 1, 0, 1, 0, 0, 1@, etc.
2022-11-01 18:32:48 +0100 <ski> pi42 : `abbcbccd' is basically Thue-Morse, except not modulo `2'
2022-11-01 18:33:16 +0100 <ski> (but it's not really formulated in terms of chunks)
2022-11-01 18:34:14 +0100 <pi42> Yes, I need to compute new chunks from the previously computed left part of the list.
2022-11-01 18:35:11 +0100 <ski> initially, i thought you were talking about something along the lines of `foo = loop [initVal] where loop xs = xs ++ loop (doubleChunk xs)', with `initVal = 0' and `doubleChunk xs = xs ++ map (1 -) xs' forThue-Morse .. except after looking that up, i realized you wanted the chunks to be overlapping, previous ones be prefices of latter ones
2022-11-01 18:36:06 +0100 <ski> btw, the `pos' example basically traverses an (infinite) binary tree, breadth-first .. the same method works for any (finitely branching) tree, as long as it has at least one infinite branch
2022-11-01 18:37:46 +0100 <pi42> ski: yes indeed ("you wanted the chunks to be overlapping, previous ones be prefices of
2022-11-01 18:37:48 +0100 <pi42> latter ones")
2022-11-01 18:38:20 +0100 <ski> (btw, `abacaba' is how you solve the Tower of Hanoi, iteratively .. i figured that out as a kid)
2022-11-01 18:41:04 +0100 <ski> (the `(0 :) . tail' pattern in `abbcbccd' is also interesting .. same pattern turns up, if you define `primes' and `composites' recursively. `composites' are `primes' (pointwise) times `[2 ..]'. `primes are `[2 ..]' minus `composites')
2022-11-01 18:41:59 +0100 <ski> (i guess one could use `unamb' or `lub' instead ..)
2022-11-01 18:43:50 +0100_________(~nobody@user/noodly) (Quit: leaving)
2022-11-01 18:44:30 +0100 <ski> pi42 : can you express your chunk generation as levels in a binary tree, where each node is only (directly) influenced by its parent ? or do you also need to see the siblings of your parent (your aunts and uncles ?) ?
2022-11-01 18:45:13 +0100Tuplanolla(~Tuplanoll@91-159-69-11.elisa-laajakaista.fi)
2022-11-01 18:45:40 +0100_________(~nobody@user/noodly)
2022-11-01 18:45:46 +0100 <pi42> No, I don't think I need the aunts and uncles. I only need: copy the previous chunk twice; leave the first part unchanged (of course), and apply a mapping on the second part
2022-11-01 18:47:32 +0100freeside_(~mengwong@103.252.202.193) (Ping timeout: 248 seconds)
2022-11-01 18:49:02 +0100 <pi42> I tried something like a = 0:( (tail a) ++ (map (\x -> 1-x) a)) but it doesn't work
2022-11-01 18:49:14 +0100 <ski> seems like you're saying `foo = initVal : loop [initVal] where loop xs = ys ++ loop (xs ++ ys) where ys = transformChunk xs', with `initVal = 0; transformChunk = map (1 -)' for Thue-Morse
2022-11-01 18:50:04 +0100 <ski> > let loop xs = ys ++ loop (xs ++ ys) where ys = map (1 -) xs in 0 : loop [0]
2022-11-01 18:50:05 +0100 <lambdabot> [0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,1,0,0,1,0,1...
2022-11-01 18:50:10 +0100 <ski> > let loop xs = ys ++ loop (xs ++ ys) where ys = map (1 +) xs in 0 : loop [0]
2022-11-01 18:50:11 +0100 <lambdabot> [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,1,2,2,3,2,3,3,4,2,3,3,4,3,4,4,5,1,2,2,3,2,3...
2022-11-01 18:50:58 +0100 <ski> is `transformChunk' always `map f' for some `f' ?
2022-11-01 18:51:13 +0100merijn(~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 272 seconds)
2022-11-01 18:51:24 +0100 <pi42> Yes, I think it is it!
2022-11-01 18:51:39 +0100 <ski> we'd prefer not having those `++'s
2022-11-01 18:51:40 +0100wootehfoot(~wootehfoo@user/wootehfoot)
2022-11-01 18:52:26 +0100 <ski> (well, at least not the `xs ++ ys'. the `ys ++' is not that bad)
2022-11-01 18:52:32 +0100tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2022-11-01 18:53:12 +0100Trattue(~Trattue@152.70.182.158) (Ping timeout: 255 seconds)
2022-11-01 18:54:02 +0100 <ski> pi42 : ah, and in your `a' example, `++' won't work there since presumably `a' is meant to be infinite. note i used `/\/' in my cyclic definitions of infinite lists, above
2022-11-01 18:54:11 +0100king_gs(~Thunderbi@2806:103e:29:47b9:f34b:ffff:4cfc:90a6) (Remote host closed the connection)
2022-11-01 18:54:31 +0100king_gs(~Thunderbi@2806:103e:29:47b9:f34b:ffff:4cfc:90a6)
2022-11-01 18:54:32 +0100 <EvanR> isn't compute new "chunks" of a list from the list so far basically the same as fib
2022-11-01 18:54:46 +0100freeside(~mengwong@103.252.202.193)
2022-11-01 18:54:53 +0100 <pi42> Now what about the complexity of your solution? If I want n initial elements (n being a power of 2), can I expect O(n)?
2022-11-01 18:55:03 +0100 <ski> sortof .. it's restarting from the beginning, every power of `2' elements
2022-11-01 18:55:56 +0100 <ski> pi42 : you'll get at least a quadratic factor, with the `xs ++ ys' being the value of the next `xs', i think
2022-11-01 18:58:06 +0100 <ski> (btw, this also reminds me of bottom-up generation of solutions to a query, in deductive databases. e.g. imagine enumerating finite trees (e.g. `data T = L | B T T'). you get batches/chunks which can be lazily generated, using semi-naïve evaluation, which gives you the "shared prefix of chunks" effect)
2022-11-01 18:58:13 +0100 <pi42> Hmmm... I don't know much about Haskell; computer science theorist here. I am planning to write a paper about an algorithm; the "lazy" part made me think about Haskell and I thought I could have a sequence of short lines of code, but maybe it is not the right way... I can stick to some OO-pseudocode
2022-11-01 18:58:40 +0100 <pi42> I can't afford losing the O(n)
2022-11-01 18:59:31 +0100 <ski> anyway, it's hard to think of better ways of doing it, without knowing more about what you're doing (which isn't Thue-Morse, as you said)
2022-11-01 19:01:05 +0100 <pi42> Nothing too secret; I need to build an infinite list of polynomials, generated by some thue-morse-like process.
2022-11-01 19:01:16 +0100freeside(~mengwong@103.252.202.193) (Ping timeout: 252 seconds)
2022-11-01 19:01:34 +0100nate3(~nate@98.45.169.16)
2022-11-01 19:02:57 +0100 <pi42> Would it be easier to go the Gray-code way: copy the chunk twice but the rightmost one being reversed (and some mapping being applied to the second chunk)?
2022-11-01 19:03:18 +0100 <pi42> My algorithm can work with both variants
2022-11-01 19:03:45 +0100 <pi42> (either copying the chunk twice or copying it mirrored)
2022-11-01 19:04:50 +0100 <ski> (btw, the breadth-first traversal of tree has been done with generators as well, e.g. in Python, &c.)
2022-11-01 19:05:19 +0100troydm(~troydm@host-176-37-124-197.b025.la.net.ua)
2022-11-01 19:05:30 +0100 <pi42> Yes, I could do it in Python, but if I go this way, I would like rather sticking to pseudocode
2022-11-01 19:06:09 +0100merijn(~merijn@86-86-29-250.fixed.kpn.net)
2022-11-01 19:06:19 +0100 <int-e> there's nothing quadratic here, I think
2022-11-01 19:07:46 +0100 <ski> hmm
2022-11-01 19:07:51 +0100 <int-e> I mean, pretend for a moment that Haskell is strict. Then assuming we can product ys from xs in linear time, evaluating loop xs = ys ++ loop (xs ++ ys) up to the recursive call takes linear time in the length of xs, so a constant amount per element. And we also progress by an amount linear in the length of xs.
2022-11-01 19:08:12 +0100 <int-e> lazy evaluation doesn't change that cost, the evaluation just happens later.
2022-11-01 19:08:39 +0100 <ski> hm, right. for the next `n' elements, you traverse `n' cells for `ys ++', and `n' cells for `xs ++'
2022-11-01 19:08:43 +0100 <int-e> I'm also assuming that ys has the same length as xs
2022-11-01 19:08:51 +0100 <ski> yes
2022-11-01 19:09:56 +0100irrgit_(~irrgit@89.47.234.74) (Read error: Connection reset by peer)
2022-11-01 19:10:05 +0100 <ski> (it still would be nice to do away at least with the `xs ++', and preferably the accumulator, defining the list itself recursively, rather than having a recursive function generating the list)
2022-11-01 19:10:20 +0100 <pi42> Would the "mirrored" variant be possible in linear time? (with ys being a mapping of the reversed xs)
2022-11-01 19:10:51 +0100jao(~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net)
2022-11-01 19:10:54 +0100 <ski> could you spell out a little bit more what you meant by the mirrored variant ?
2022-11-01 19:10:54 +0100 <int-e> I don't see the reversal making any difference
2022-11-01 19:10:59 +0100mbuf(~Shakthi@49.204.137.137) (Quit: Leaving)
2022-11-01 19:11:10 +0100merijn(~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 252 seconds)
2022-11-01 19:11:24 +0100 <EvanR> reversing a list of length n takes n work
2022-11-01 19:11:27 +0100Guest71(~Guest71@217-209-157-8-no2000.tbcn.telia.com)
2022-11-01 19:11:43 +0100 <int-e> pi42: I also suspect the pattern doesn't quite capture what you want... unless you want many repeated elements in the generated list
2022-11-01 19:12:03 +0100 <ski> yes, but if you only do it every `n' elements (with `n' doubling each time), you're still (amorticized) linear
2022-11-01 19:15:05 +0100 <int-e> (amortized)
2022-11-01 19:17:05 +0100 <ski> (ty)
2022-11-01 19:17:06 +0100 <ski> > let gray = 0 : loop 0 [0] where loop i xs = ys ++ loop (i+1) (xs ++ ys) where ys = reverse (map (2^i +) xs) in take gray
2022-11-01 19:17:08 +0100 <lambdabot> error:
2022-11-01 19:17:08 +0100 <lambdabot> • Couldn't match expected type ‘Int’ with actual type ‘[a0]’
2022-11-01 19:17:08 +0100 <lambdabot> • In the first argument of ‘take’, namely ‘gray’
2022-11-01 19:17:10 +0100 <ski> > let gray = 0 : loop 0 [0] where loop i xs = ys ++ loop (i+1) (xs ++ ys) where ys = reverse (map (2^i +) xs) in gray
2022-11-01 19:17:12 +0100 <lambdabot> [0,1,3,2,6,7,5,4,12,13,15,14,10,11,9,8,24,25,27,26,30,31,29,28,20,21,23,22,1...
2022-11-01 19:17:18 +0100 <ski> i guess this
2022-11-01 19:19:35 +0100 <pi42> Thank you
2022-11-01 19:21:17 +0100danza(~francesco@93.176.137.22) (Ping timeout: 246 seconds)
2022-11-01 19:21:30 +0100beteigeuze(~Thunderbi@bl14-81-220.dsl.telepac.pt) (Read error: Connection reset by peer)
2022-11-01 19:22:23 +0100 <ski> > let loop xs = ys ++ loop (xs ++ ys) where ys = map (1 +) xs in 0 : loop [0]
2022-11-01 19:22:25 +0100 <lambdabot> [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,1,2,2,3,2,3,3,4,2,3,3,4,3,4,4,5,1,2,2,3,2,3...
2022-11-01 19:22:32 +0100 <ski> > 0 : fix (\bbcbccd -> 1 : [n | m <- bbcbccd,n <- [m,m+1]])
2022-11-01 19:22:33 +0100 <lambdabot> [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,1,2,2,3,2,3,3,4,2,3,3,4,3,4,4,5,1,2,2,3,2,3...
2022-11-01 19:22:58 +0100 <ski> pi42 : ^ a breadth-first tree traversal for it
2022-11-01 19:23:26 +0100 <ski> so there might be a way to do that with your polynomials as well, possibly
2022-11-01 19:23:58 +0100freeside(~mengwong@103.252.202.193)
2022-11-01 19:24:33 +0100Spukgespenst(~user@user/siracusa)
2022-11-01 19:24:35 +0100 <EvanR> one one hand you can compute cost by saying laziness "just" moves the time of evaluation, so pretend it's eager. On the other hand laziness causes some programs to jump way ahead by short circuiting and sometimes avoid an infinite regression freeze. A drastic upgrade. So maybe pretending it's eager gives you a "worst case" estimate?
2022-11-01 19:25:07 +0100 <ski> or an upper bound
2022-11-01 19:25:14 +0100sadmax(~user@209.205.174.253)
2022-11-01 19:25:43 +0100beteigeuze(~Thunderbi@bl14-81-220.dsl.telepac.pt)
2022-11-01 19:25:47 +0100 <ski> Chris Okasaki mentions "banker's balancing method" and "physicist potential method" in PFDS, iirc
2022-11-01 19:25:51 +0100 <ski> @where PFDS
2022-11-01 19:25:51 +0100 <lambdabot> http://www.amazon.com/Purely-Functional-Structures-Chris-Okasaki/dp/0521663504
2022-11-01 19:25:55 +0100irrgit_(~irrgit@176.113.74.74)
2022-11-01 19:25:56 +0100king_gs(~Thunderbi@2806:103e:29:47b9:f34b:ffff:4cfc:90a6) (Remote host closed the connection)
2022-11-01 19:26:15 +0100king_gs(~Thunderbi@2806:103e:29:47b9:f34b:ffff:4cfc:90a6)
2022-11-01 19:26:28 +0100Kaipei(~Kaiepi@108.175.84.104) (Ping timeout: 248 seconds)
2022-11-01 19:26:58 +0100 <EvanR> ok upper bound
2022-11-01 19:27:18 +0100 <monochrom> Yeah pretended eagerness gives an upper bound. But not a useful upper bound when it's "infinite".
2022-11-01 19:27:29 +0100 <ski> :)
2022-11-01 19:27:44 +0100 <monochrom> "const () (an infinite loop here)" is an extreme example.
2022-11-01 19:27:57 +0100Alex_test(~al_test@178.34.163.109) (Ping timeout: 272 seconds)
2022-11-01 19:28:08 +0100 <monochrom> "take 0 (repeat ())" is closer to real examples.
2022-11-01 19:28:36 +0100freeside(~mengwong@103.252.202.193) (Ping timeout: 248 seconds)
2022-11-01 19:28:41 +0100AlexZenon(~alzenon@178.34.163.109) (Ping timeout: 276 seconds)
2022-11-01 19:29:08 +0100 <_xor> Newbie to ghc/cabal, quick question: Does `cabal new-build --offline ...` invoke `git fetch` as part of its process or would that be something external (e.g. project-specific build script)?
2022-11-01 19:29:14 +0100 <monochrom> OTOH when the pretended eagerness time is finite, that's when it is a pretty useful upper bound, usually the lazy time is not far behind. Although, just usually.
2022-11-01 19:29:22 +0100tzh(~tzh@c-24-21-73-154.hsd1.wa.comcast.net)
2022-11-01 19:29:37 +0100titibandit(~titibandi@xdsl-87-79-250-160.nc.de) (Quit: Leaving.)
2022-11-01 19:30:03 +0100 <EvanR> eagerness time
2022-11-01 19:30:06 +0100beteigeuze(~Thunderbi@bl14-81-220.dsl.telepac.pt) (Ping timeout: 255 seconds)
2022-11-01 19:30:14 +0100 <_xor> It looks like it's trying to update the dependencies before building the project, but that's not necessary here as I've already vendored them.
2022-11-01 19:30:57 +0100 <monochrom> There is also always empirical benchmarking. Ask for 10 elements. Ask for 20 elements. Etc. Plot the graph and see what trend you get.
2022-11-01 19:31:34 +0100 <_xor> It doesn't build from a git repo either, it's a snapshot of the source tree fetched from a github release. So as it stands right now, `cabal new-build ...` is failing pretty early when it tries to do a `git fetch` in dist-newstyle/...
2022-11-01 19:32:49 +0100 <sclv> check if there’s a git repo in the cabal.project file?
2022-11-01 19:33:32 +0100Alex_test(~al_test@178.34.163.109)
2022-11-01 19:34:18 +0100 <_xor> Yeah, looking now. Just saw a suggestion for that.
2022-11-01 19:36:16 +0100 <_xor> sclv: Looks like that's the issue. Is there a cabal cli flag to disable updating those or will I have to comment those lines out?
2022-11-01 19:36:50 +0100 <ski> @. hoogle type (concat .) . iterate
2022-11-01 19:36:52 +0100 <lambdabot> MathObj.RootSet liftPowerSum1 :: (C a, C a) => ([a] -> [a]) -> [a] -> [a]
2022-11-01 19:36:52 +0100 <lambdabot> Boltzmann.Species emap :: Embed f m => (m a -> m b) -> f a -> f b
2022-11-01 19:36:52 +0100 <lambdabot> Blanks.ScopeW scopeWMapAnno :: ScopeC t u n f g => (t a -> t b) -> g a -> g b
2022-11-01 19:36:54 +0100 <sclv> i think for now you need to remove em
2022-11-01 19:37:28 +0100 <sclv> a ticket suggesting how — offline flag should interact would be welcome in the tracker
2022-11-01 19:38:54 +0100 <ski> @hoogle (a -> [a]) -> (a -> [a])
2022-11-01 19:38:55 +0100 <lambdabot> Data.Generics.SYB mkM :: Monad m => (a -> m a) -> a -> m a
2022-11-01 19:38:55 +0100 <lambdabot> Control.Monad.Loops iterateM_ :: Monad m => (a -> m a) -> a -> m b
2022-11-01 19:38:55 +0100 <lambdabot> Control.Monad.Prospect given :: Alternative f => (a -> f b) -> a -> f b
2022-11-01 19:39:23 +0100 <_xor> sclv: https://github.com/haskell/cabal/issues/5783
2022-11-01 19:39:33 +0100 <_xor> sclv: That's actually what I was looking at when you mentioned cabal.project.
2022-11-01 19:40:48 +0100freeside(~mengwong@103.252.202.193)
2022-11-01 19:41:19 +0100 <sclv> hrm. the specific issue gets a small mention in 5346
2022-11-01 19:41:45 +0100 <ski> @type (concat .) . iterate . concatMap
2022-11-01 19:41:46 +0100 <lambdabot> (a -> [a]) -> [a] -> [a]
2022-11-01 19:43:06 +0100ec(~ec@gateway/tor-sasl/ec) (Remote host closed the connection)
2022-11-01 19:43:34 +0100ec(~ec@gateway/tor-sasl/ec)
2022-11-01 19:44:03 +0100Alex_test(~al_test@178.34.163.109) (Ping timeout: 255 seconds)
2022-11-01 19:45:32 +0100 <EvanR> monochrom, what is eagerness time
2022-11-01 19:45:53 +0100 <EvanR> some kind of time limit
2022-11-01 19:46:13 +0100Alex_test(~al_test@178.34.163.109)
2022-11-01 19:46:16 +0100eggplantade(~Eggplanta@2600:1700:38c5:d800:c9d:1a05:4084:603c) (Remote host closed the connection)
2022-11-01 19:46:18 +0100king_gs(~Thunderbi@2806:103e:29:47b9:f34b:ffff:4cfc:90a6) (Ping timeout: 255 seconds)
2022-11-01 19:46:22 +0100zaquest(~notzaques@5.130.79.72) (Ping timeout: 252 seconds)
2022-11-01 19:46:26 +0100beteigeuze(~Thunderbi@a79-169-109-107.cpe.netcabo.pt)
2022-11-01 19:46:52 +0100 <ski> @type let subst :: Monad m => (var0 -> m var0) -> (m var0 -> m var1); subst env = (fix (<=< env) =<<) in subst -- reminds me a bit of this
2022-11-01 19:46:53 +0100 <lambdabot> Monad m => (var0 -> m var0) -> m var0 -> m var1
2022-11-01 19:48:44 +0100darkstardevx(~darkstard@50.126.124.156)
2022-11-01 19:49:36 +0100tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
2022-11-01 19:49:56 +0100darkstardevx(~darkstard@50.126.124.156) (Remote host closed the connection)
2022-11-01 19:50:20 +0100darkstardevx(~darkstard@50.126.124.156)
2022-11-01 19:50:32 +0100 <monochrom> I am a lazy person, so I have an upper bound on how much time I'm eager. :)
2022-11-01 19:52:01 +0100 <monochrom> Onoes, Boltzmann species. Combinatorial species keep coming back to haunt me.
2022-11-01 19:53:35 +0100ski. o O ( speculative eagerness )
2022-11-01 19:55:56 +0100 <ski> @hackage boltzmann-samplers
2022-11-01 19:55:56 +0100 <lambdabot> https://hackage.haskell.org/package/boltzmann-samplers
2022-11-01 19:56:00 +0100 <ski> apparently "Uniform random generators"
2022-11-01 19:56:23 +0100 <ski> @let itercalate :: (a -> [a]) -> ([a] -> [a]); itercalate _ [] = []; itercalate f (x:xs) = x : itercalate f (xs ++ f x)
2022-11-01 19:56:25 +0100 <lambdabot> Defined.
2022-11-01 19:56:29 +0100AlexZenon(~alzenon@178.34.163.109)
2022-11-01 19:56:37 +0100 <ski> > itercalate (\n -> [2*n,2*n + 1]) [1]
2022-11-01 19:56:39 +0100 <lambdabot> [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,...
2022-11-01 19:56:46 +0100 <ski> > itercalate (\n -> if n > 10 then [] else [2*n,2*n + 1]) [1]
2022-11-01 19:56:48 +0100 <lambdabot> [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21]
2022-11-01 19:57:27 +0100 <EvanR> what topic is ski on
2022-11-01 19:57:43 +0100 <ski> > concat (iterate (>>= \n -> if n > 10 then [] else [2*n,2*n + 1]) [1])
2022-11-01 19:57:49 +0100 <lambdabot> mueval-core: Time limit exceeded
2022-11-01 19:57:50 +0100 <EvanR> still thue-morse?
2022-11-01 19:58:37 +0100 <ski> tangentially
2022-11-01 19:59:33 +0100zaquest(~notzaques@5.130.79.72)
2022-11-01 19:59:34 +0100shriekingnoise_(~shrieking@186.137.167.202) (Ping timeout: 252 seconds)
2022-11-01 19:59:54 +0100shriekingnoise(~shrieking@186.137.167.202)
2022-11-01 19:59:54 +0100tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2022-11-01 20:01:29 +0100eggplantade(~Eggplanta@2600:1700:38c5:d800:756c:6d4e:8007:23ff)
2022-11-01 20:03:48 +0100nate3(~nate@98.45.169.16) (Ping timeout: 248 seconds)
2022-11-01 20:04:54 +0100 <ski> > let itercalate :: (a -> [a]) -> ([a] -> [a]); itercalate f xs = fix (\ys -> xs ++ concatMap f ys) in itercalate (\n -> [2*n,2*n + 1]) [1]
2022-11-01 20:04:56 +0100 <lambdabot> [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,...
2022-11-01 20:05:03 +0100 <ski> > let itercalate :: (a -> [a]) -> ([a] -> [a]); itercalate f xs = fix (\ys -> xs ++ concatMap f ys) in itercalate (\n -> if n > 10 then [] else [2*m,2*n + 1]) [1]
2022-11-01 20:05:06 +0100 <lambdabot> [1,2 * m,2 * 1 + 1,2 * m,2 * (2 * 1 + 1) + 1,2 * m,2 * (2 * (2 * 1 + 1) + 1)...
2022-11-01 20:05:19 +0100 <ski> > let itercalate :: (a -> [a]) -> ([a] -> [a]); itercalate f xs = fix (\ys -> xs ++ concatMap f ys) in itercalate (\n -> if n > 10 then [] else [2*n,2*n + 1]) [1]
2022-11-01 20:05:21 +0100 <lambdabot> [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21*Exception: <<loop>>
2022-11-01 20:07:38 +0100 <ski> is there a better way of avoiding the loop (terminating the list), than keeping the current "wavefront length" in an accumulator ?
2022-11-01 20:07:48 +0100gmg(~user@user/gehmehgeh)
2022-11-01 20:09:06 +0100stackdroid18(14094@user/stackdroid)
2022-11-01 20:09:28 +0100 <bjourne> why does ghc put .o and .hi files relative to the source dir and not the build dir? that's really weird
2022-11-01 20:11:54 +0100python476(~user@88.160.31.174) (Remote host closed the connection)
2022-11-01 20:12:12 +0100Hercules1(~Hercules@ti0018a400-8077.bb.online.no)
2022-11-01 20:15:12 +0100eggplantade(~Eggplanta@2600:1700:38c5:d800:756c:6d4e:8007:23ff) (Remote host closed the connection)
2022-11-01 20:15:31 +0100Hercules(~Hercules@ti0018a400-8077.bb.online.no) (Ping timeout: 252 seconds)
2022-11-01 20:17:10 +0100bjourne(~bjourne@2001:6b0:1:1140:42bf:ff4:f8fa:50e5) (Quit: Konversation terminated!)
2022-11-01 20:22:38 +0100ub(~Thunderbi@77.119.195.127.wireless.dyn.drei.com)
2022-11-01 20:23:20 +0100gentauro(~gentauro@user/gentauro) (Ping timeout: 250 seconds)
2022-11-01 20:24:38 +0100Vajb(~Vajb@2001:999:504:1841:9e47:1ec7:a52e:1d57) (Ping timeout: 246 seconds)
2022-11-01 20:29:46 +0100tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
2022-11-01 20:35:23 +0100gentauro(~gentauro@user/gentauro)
2022-11-01 20:35:52 +0100 <monochrom> No reason. KISS defaults. But there are options for customizing those. See the user's guide.
2022-11-01 20:36:20 +0100sadmax(~user@209.205.174.253) (Ping timeout: 248 seconds)
2022-11-01 20:36:34 +0100 <monochrom> Hell, s/No reason/No reason either way/
2022-11-01 20:39:31 +0100 <monochrom> The beauty of the ideology of "build directory" is that everyone wants a different name for it. A compiler therefore dares not take sides.
2022-11-01 20:40:05 +0100merijn(~merijn@86-86-29-250.fixed.kpn.net)
2022-11-01 20:44:35 +0100freeside(~mengwong@103.252.202.193) (Ping timeout: 272 seconds)
2022-11-01 20:45:17 +0100stackdroid18(14094@user/stackdroid) (Quit: hasta la vista... tchau!)
2022-11-01 20:45:47 +0100 <ski> % map (ceiling . logBase 2 . fromIntegral . (1 +)) [0 ..]
2022-11-01 20:45:47 +0100 <yahb2> [0,1,2,2,3,3,3,3,4,4,4,4,4,4,4,4,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,...
2022-11-01 20:46:07 +0100 <ski> % ((0 :) . map ((1 +) . integerLog2)) [1 ..]
2022-11-01 20:46:07 +0100 <yahb2> [0,1,2,2,3,3,3,3,4,4,4,4,4,4,4,4,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,...
2022-11-01 20:46:25 +0100 <ski> .. wasn't there some `integerSqrt' ?
2022-11-01 20:47:03 +0100tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2022-11-01 20:49:04 +0100Tuplanolla(~Tuplanoll@91-159-69-11.elisa-laajakaista.fi) (Ping timeout: 252 seconds)
2022-11-01 20:52:06 +0100muesli4(~noname@2a02:8071:2188:2540:3ea6:1486:61ae:9be6)
2022-11-01 20:52:39 +0100 <muesli4> Hi, I have a module in my export list. Is there some way to expand this in the documentation?
2022-11-01 20:54:03 +0100 <ski> (i tend to assume the above operation (number of bits required to represent a natural) to be in `Data.Bits', and then be surprised when it isn't ..)
2022-11-01 20:54:15 +0100elevenkb(~elevenkb@105.184.125.168)
2022-11-01 20:55:31 +0100abhiroop(~abhiroop@217-209-157-8-no2000.tbcn.telia.com)
2022-11-01 20:56:35 +0100freeside(~mengwong@103.252.202.193)
2022-11-01 20:57:44 +0100 <tomsmeding> > let f n = (n:) . h [0..n-1] ; h = foldr ((.) . f) id in h [0..] []
2022-11-01 20:57:46 +0100 <lambdabot> [0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,5,0,1,0,2,0,1...
2022-11-01 20:59:37 +0100irrgit_(~irrgit@176.113.74.74) (Read error: Connection reset by peer)
2022-11-01 21:00:00 +0100 <tomsmeding> muesli4: try putting {-# OPTIONS_HADDOCK not-home #-} at the top of the re-exported module
2022-11-01 21:00:02 +0100 <monochrom> muesli4: I think https://haskell-haddock.readthedocs.io/en/latest/markup.html#re-exporting-an-entire-module helps. You go "module Mine(module X, module Y) where import X (x, xx, xxx); import Y hiding (yyy)"
2022-11-01 21:00:13 +0100 <tomsmeding> as in, if you have 'module A (module B, ...) where' then put it at the top of B
2022-11-01 21:00:24 +0100 <tomsmeding> https://haskell-haddock.readthedocs.io/en/latest/markup.html#module-attributes
2022-11-01 21:00:27 +0100pi42(~baruchel@70.25.7.93.rev.sfr.net) (Quit: EPIC5-2.0.1[1869] - amnesiac : Bye!)
2022-11-01 21:01:10 +0100freeside(~mengwong@103.252.202.193) (Ping timeout: 252 seconds)
2022-11-01 21:01:50 +0100tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
2022-11-01 21:02:18 +0100 <tomsmeding> monochrom: see footnote [2] at your link :p
2022-11-01 21:02:50 +0100Tuplanolla(~Tuplanoll@91-159-69-11.elisa-laajakaista.fi)
2022-11-01 21:03:39 +0100 <monochrom> I have to go but someone should empirically test it. We can't rule out the possibility that the footnote is outdated.
2022-11-01 21:04:27 +0100 <muesli4> tomsmeding, monochrom: Thanks a lot.
2022-11-01 21:05:21 +0100freeside(~mengwong@103.252.202.193)
2022-11-01 21:05:56 +0100zebrag(~chris@user/zebrag) (Ping timeout: 246 seconds)
2022-11-01 21:07:03 +0100zebrag(~chris@user/zebrag)
2022-11-01 21:08:42 +0100Heyting(~Heyting@193.198.16.217)
2022-11-01 21:08:52 +0100troydm(~troydm@host-176-37-124-197.b025.la.net.ua) (Ping timeout: 252 seconds)
2022-11-01 21:09:31 +0100 <tomsmeding> > let f x ~(y:ys) = x : y : f x ys in foldr f [] [0..]
2022-11-01 21:09:32 +0100 <lambdabot> [0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,5,0,1,0,2,0,1...
2022-11-01 21:10:33 +0100 <tomsmeding> > foldr (\x ~(y:ys) -> x : y : f x ys) [] [0..]
2022-11-01 21:10:34 +0100 <lambdabot> error:
2022-11-01 21:10:34 +0100 <lambdabot> • No instance for (FromExpr [Integer]) arising from a use of ‘e_10’
2022-11-01 21:10:34 +0100 <lambdabot> • In the expression: e_10
2022-11-01 21:10:42 +0100 <tomsmeding> > foldr (fix $ \f x ~(y:ys) -> x : y : f x ys) [] [0..]
2022-11-01 21:10:44 +0100 <lambdabot> [0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,5,0,1,0,2,0,1...
2022-11-01 21:10:55 +0100 <tomsmeding> hm the one with 'let' is shorter
2022-11-01 21:11:00 +0100freeside(~mengwong@103.252.202.193) (Ping timeout: 248 seconds)
2022-11-01 21:13:17 +0100stefan-_(~cri@42dots.de) (Quit: ZNC 1.8.2+deb2build5 - https://znc.in)
2022-11-01 21:13:33 +0100stefan-_(~cri@42dots.de)
2022-11-01 21:14:21 +0100merijn(~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 246 seconds)
2022-11-01 21:14:55 +0100jao(~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net) (Ping timeout: 252 seconds)
2022-11-01 21:15:02 +0100freeside(~mengwong@103.252.202.193)
2022-11-01 21:15:23 +0100beteigeuze(~Thunderbi@a79-169-109-107.cpe.netcabo.pt) (Quit: beteigeuze)
2022-11-01 21:15:42 +0100eggplantade(~Eggplanta@2600:1700:38c5:d800:756c:6d4e:8007:23ff)
2022-11-01 21:16:47 +0100jao(~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net)
2022-11-01 21:20:02 +0100Heyting(~Heyting@193.198.16.217) (Remote host closed the connection)
2022-11-01 21:20:18 +0100Heyting(~Heyting@193.198.16.217)
2022-11-01 21:20:21 +0100eggplantade(~Eggplanta@2600:1700:38c5:d800:756c:6d4e:8007:23ff) (Ping timeout: 255 seconds)
2022-11-01 21:20:38 +0100abhiroop(~abhiroop@217-209-157-8-no2000.tbcn.telia.com) (Ping timeout: 246 seconds)
2022-11-01 21:21:27 +0100abhiroop(~abhiroop@217-209-157-8-no2000.tbcn.telia.com)
2022-11-01 21:21:33 +0100Guest71(~Guest71@217-209-157-8-no2000.tbcn.telia.com) (Ping timeout: 244 seconds)
2022-11-01 21:21:50 +0100troydm(~troydm@host-176-37-124-197.b025.la.net.ua)
2022-11-01 21:21:53 +0100bilegeek(~bilegeek@2600:1008:b060:717e:e323:280c:5827:a128)
2022-11-01 21:22:17 +0100Guest71(~Guest71@217-209-157-8-no2000.tbcn.telia.com)
2022-11-01 21:26:14 +0100Spukgespenst_(~user@user/siracusa)
2022-11-01 21:28:07 +0100Spukgespenst(~user@user/siracusa) (Ping timeout: 252 seconds)
2022-11-01 21:28:12 +0100Spukgespenst_Spukgespenst
2022-11-01 21:29:05 +0100Heyting(~Heyting@193.198.16.217) ()
2022-11-01 21:32:40 +0100caryhartline(~caryhartl@2600:1700:2d0:8d30:9d7c:5e2:4131:9c2b)
2022-11-01 21:36:23 +0100mmhat(~mmh@p200300f1c7307603ee086bfffe095315.dip0.t-ipconnect.de) (Ping timeout: 246 seconds)
2022-11-01 21:37:06 +0100elevenkb(~elevenkb@105.184.125.168) (Quit: Client closed)
2022-11-01 21:38:37 +0100Sinbad(~Sinbad@user/sinbad)
2022-11-01 21:43:45 +0100michalz(~michalz@185.246.207.221) (Remote host closed the connection)
2022-11-01 21:44:33 +0100AlexNoo(~AlexNoo@178.34.163.109) (Read error: Connection reset by peer)
2022-11-01 21:44:55 +0100AlexNoo(~AlexNoo@178.34.163.109)
2022-11-01 21:47:54 +0100Guest71(~Guest71@217-209-157-8-no2000.tbcn.telia.com) (Ping timeout: 244 seconds)
2022-11-01 21:47:55 +0100abhiroop(~abhiroop@217-209-157-8-no2000.tbcn.telia.com) (Ping timeout: 252 seconds)
2022-11-01 21:49:23 +0100Hercules1(~Hercules@ti0018a400-8077.bb.online.no) (Quit: Leaving)
2022-11-01 21:50:07 +0100Alex_test(~al_test@178.34.163.109) (Ping timeout: 252 seconds)
2022-11-01 21:50:20 +0100mmhat(~mmh@p200300f1c73076cfee086bfffe095315.dip0.t-ipconnect.de)
2022-11-01 21:50:23 +0100Alex_test(~al_test@178.34.163.109)
2022-11-01 21:50:56 +0100elevenkb(~elevenkb@105.184.125.168)
2022-11-01 21:52:00 +0100darkstarx(~darkstard@50.126.124.156)
2022-11-01 21:54:31 +0100darkstardevx(~darkstard@50.126.124.156) (Ping timeout: 252 seconds)
2022-11-01 21:56:32 +0100zeenk(~zeenk@2a02:2f04:a105:5d00:c862:f190:2ea:d494)
2022-11-01 21:57:11 +0100dfg(dfg@user/dfg) (Quit: I hate quit messages.)
2022-11-01 21:58:21 +0100dfg(dfg@dfg.rocks)
2022-11-01 21:58:21 +0100dfg(dfg@dfg.rocks) (Changing host)
2022-11-01 21:58:21 +0100dfg(dfg@user/dfg)
2022-11-01 21:58:33 +0100Sciencentistguy(~sciencent@hacksoc/ordinary-member)
2022-11-01 22:01:13 +0100FinnElija(~finn_elij@user/finn-elija/x-0085643) (Remote host closed the connection)
2022-11-01 22:01:48 +0100FinnElija(~finn_elij@user/finn-elija/x-0085643)
2022-11-01 22:01:51 +0100redmp(~redmp@lib-02-subnet-194.rdns.cenic.net) (Ping timeout: 272 seconds)
2022-11-01 22:03:19 +0100shriekingnoise(~shrieking@186.137.167.202) (Ping timeout: 252 seconds)
2022-11-01 22:03:27 +0100shriekingnoise_(~shrieking@186.137.167.202)
2022-11-01 22:03:52 +0100zaquest(~notzaques@5.130.79.72) (Ping timeout: 252 seconds)
2022-11-01 22:05:32 +0100wootehfoot(~wootehfoo@user/wootehfoot) (Read error: Connection reset by peer)
2022-11-01 22:06:36 +0100elevenkb(~elevenkb@105.184.125.168) (Quit: Client closed)
2022-11-01 22:09:53 +0100 <monochrom> tomsmeding: Verified: The footnote is outdated, the main text works.
2022-11-01 22:14:19 +0100gmg(~user@user/gehmehgeh) (Remote host closed the connection)
2022-11-01 22:15:02 +0100gmg(~user@user/gehmehgeh)
2022-11-01 22:16:59 +0100zaquest(~notzaques@5.130.79.72)
2022-11-01 22:17:08 +0100freeside(~mengwong@103.252.202.193) (Ping timeout: 248 seconds)
2022-11-01 22:17:16 +0100 <monochrom> Although, "import X hiding ()" is not enough, heh.
2022-11-01 22:20:22 +0100sweater(~sweater@206.81.18.26)
2022-11-01 22:21:34 +0100boxscape_(~boxscape_@81.191.27.107)
2022-11-01 22:22:00 +0100 <tomsmeding> ah!
2022-11-01 22:24:46 +0100redmp(~redmp@mobile-166-170-43-0.mycingular.net)
2022-11-01 22:24:49 +0100moneypolo
2022-11-01 22:28:25 +0100 <tomsmeding> ooh
2022-11-01 22:28:44 +0100 <tomsmeding> actually 'import X () ; import X' seems to work
2022-11-01 22:29:22 +0100 <ski> > let f n = (n:) . h [0..n-1] ; h = foldr ((.) . f) id in h [0 .. 3] []
2022-11-01 22:29:24 +0100 <monochrom> Haha that's a cool hack.
2022-11-01 22:29:24 +0100 <lambdabot> [0,1,0,2,0,1,0,3,0,1,0,2,0,1,0]
2022-11-01 22:29:49 +0100bitdex(~bitdex@gateway/tor-sasl/bitdex)
2022-11-01 22:29:52 +0100 <ski> > let h [] ys = ys; h (x:xs) ys = f x (h xs ys); f n ys = n : h [0 .. n-1] ys in h [0 .. 3] []
2022-11-01 22:29:53 +0100 <lambdabot> [0,1,0,2,0,1,0,3,0,1,0,2,0,1,0]
2022-11-01 22:30:07 +0100 <ski> > let h [] ys = ys; h (x:xs) ys = x : h [0 .. x-1] (h xs ys) in h [0 .. 3] []
2022-11-01 22:30:08 +0100 <lambdabot> [0,1,0,2,0,1,0,3,0,1,0,2,0,1,0]
2022-11-01 22:30:15 +0100 <ski> > let h [] k = k []; h (x:xs) k = x : h [0 .. x-1] (\ys -> h xs ((ys ++) . k)) in h [0 .. 3] id
2022-11-01 22:30:16 +0100 <lambdabot> [0,1,0,2,0,1,0,3,0,1,0,2,0,1,0]
2022-11-01 22:31:06 +0100Batzy(~quassel@user/batzy) (Read error: Connection reset by peer)
2022-11-01 22:31:24 +0100Batzy(~quassel@user/batzy)
2022-11-01 22:31:55 +0100Sinbad(~Sinbad@user/sinbad) (Ping timeout: 252 seconds)
2022-11-01 22:32:14 +0100merijn(~merijn@86-86-29-250.fixed.kpn.net)
2022-11-01 22:36:23 +0100tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2022-11-01 22:36:41 +0100 <tomsmeding> monochrom: https://github.com/haskell/haddock/pull/1534
2022-11-01 22:37:46 +0100 <monochrom> Nice, thanks.
2022-11-01 22:38:12 +0100ubert(~Thunderbi@77.119.195.127.wireless.dyn.drei.com) (Ping timeout: 255 seconds)
2022-11-01 22:38:12 +0100ububert
2022-11-01 22:38:31 +0100 <tomsmeding> I was going to ping H.ecate (avoiding a ping there) but then I thought, I can just as well PR it myself :)
2022-11-01 22:38:39 +0100 <ski> > let g [] k = k []; g (x:xs) k = x : g xs (\ys -> x : k (x : ys)) in g [0 .. 3] id
2022-11-01 22:38:40 +0100 <lambdabot> [0,1,2,3,3,2,1,0,0,1,2,3]
2022-11-01 22:38:52 +0100 <tomsmeding> ski: interesting variation
2022-11-01 22:39:08 +0100 <monochrom> Well, ping anyway so that the commit is accepted faster. :)
2022-11-01 22:39:19 +0100 <monochrom> or the PR.
2022-11-01 22:39:21 +0100 <ski> that's one that i did, years ago. i thought yours was somewhat reminiscent
2022-11-01 22:39:37 +0100 <tomsmeding> Hecate: ^ with a hint from monochrom I fixed something in the haddock docs
2022-11-01 22:40:01 +0100freeside(~mengwong@103.252.202.193)
2022-11-01 22:40:03 +0100 <boxscape_> If I want to install a program (via cabal) because I need it as preprocessor for a cabal project, is Setup.hs the thing to look at? (Also, does setup.hs work if people use stack instead?)
2022-11-01 22:41:23 +0100 <geekosaur> I think you put it in build-tool-depends? and it should work with stack because at that level it's Cabal-the-library, not stack or cabal-install
2022-11-01 22:41:30 +0100 <boxscape_> ah, okay, thanks
2022-11-01 22:41:40 +0100`2jt(~jtomas@191.red-88-17-199.dynamicip.rima-tde.net) (Ping timeout: 248 seconds)
2022-11-01 22:41:47 +0100johnw(~johnw@2600:1700:cf00:db0:c1b5:8725:73d7:1ac) (Quit: ZNC - http://znc.in)
2022-11-01 22:42:05 +0100boxscape_(~boxscape_@81.191.27.107) (Quit: Client closed)
2022-11-01 22:42:32 +0100boxscape_(~boxscape_@81.191.27.107)
2022-11-01 22:42:39 +0100 <tomsmeding> welcome back
2022-11-01 22:42:42 +0100beteigeuze(~Thunderbi@89.187.168.37)
2022-11-01 22:42:46 +0100 <boxscape_> thanks :)
2022-11-01 22:45:19 +0100Sinbad(~Sinbad@user/sinbad)
2022-11-01 22:47:52 +0100titibandit(~titibandi@xdsl-87-79-250-160.nc.de)
2022-11-01 22:49:55 +0100tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
2022-11-01 22:51:55 +0100titibandit(~titibandi@xdsl-87-79-250-160.nc.de) (Remote host closed the connection)
2022-11-01 22:56:33 +0100polomoney
2022-11-01 22:58:10 +0100freeside_(~mengwong@103.252.202.193)
2022-11-01 22:58:39 +0100Sinbad(~Sinbad@user/sinbad) (Ping timeout: 246 seconds)
2022-11-01 23:00:23 +0100coot(~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba) (Quit: coot)
2022-11-01 23:00:31 +0100freeside(~mengwong@103.252.202.193) (Ping timeout: 252 seconds)
2022-11-01 23:06:34 +0100merijn(~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 252 seconds)
2022-11-01 23:09:40 +0100statusbot(~statusbot@ec2-34-198-122-184.compute-1.amazonaws.com) (Remote host closed the connection)
2022-11-01 23:09:44 +0100takuan(~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection)
2022-11-01 23:09:52 +0100zebrag(~chris@user/zebrag) (Ping timeout: 252 seconds)
2022-11-01 23:09:56 +0100statusbot(~statusbot@ec2-34-198-122-184.compute-1.amazonaws.com)
2022-11-01 23:10:05 +0100Guest71(~Guest71@217-209-157-8-no2000.tbcn.telia.com)
2022-11-01 23:10:15 +0100raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 272 seconds)
2022-11-01 23:10:33 +0100zebrag(~chris@user/zebrag)
2022-11-01 23:10:47 +0100bilegeek(~bilegeek@2600:1008:b060:717e:e323:280c:5827:a128) (Quit: Leaving)
2022-11-01 23:13:24 +0100abhiroop(~abhiroop@217-209-157-8-no2000.tbcn.telia.com)
2022-11-01 23:16:41 +0100stefan-__(~cri@42dots.de)
2022-11-01 23:17:34 +0100stefan-_(~cri@42dots.de) (Ping timeout: 252 seconds)
2022-11-01 23:18:37 +0100merijn(~merijn@86-86-29-250.fixed.kpn.net)
2022-11-01 23:18:40 +0100jao(~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net) (Ping timeout: 252 seconds)
2022-11-01 23:19:10 +0100jao(~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net)
2022-11-01 23:20:08 +0100danza(~francesco@22.red-79-153-42.dynamicip.rima-tde.net)
2022-11-01 23:20:22 +0100Kaipei(~Kaiepi@108.175.84.104)
2022-11-01 23:21:07 +0100tessier(~treed@98.171.210.130) (Quit: leaving)
2022-11-01 23:21:08 +0100beteigeuze(~Thunderbi@89.187.168.37) (Ping timeout: 248 seconds)
2022-11-01 23:21:13 +0100mixfix41(~sdeny9ee@user/mixfix41)
2022-11-01 23:21:40 +0100beteigeuze(~Thunderbi@a79-169-109-107.cpe.netcabo.pt)
2022-11-01 23:23:16 +0100merijn(~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 248 seconds)
2022-11-01 23:25:16 +0100troydm(~troydm@host-176-37-124-197.b025.la.net.ua) (Ping timeout: 252 seconds)
2022-11-01 23:25:39 +0100troydm(~troydm@host-176-37-124-197.b025.la.net.ua)
2022-11-01 23:26:00 +0100tessier(~treed@98.171.210.130)
2022-11-01 23:28:46 +0100 <cheater> what's the current best way to handle exceptions that arise from reading a file, but not other exceptions, and turn those that we catch into a Left?
2022-11-01 23:43:07 +0100lucerne(~lucerne@5.114.187.176) (Read error: Connection reset by peer)
2022-11-01 23:45:03 +0100 <dmj`> could use `tryIOError` and case on `ioGetErrorType`
2022-11-01 23:45:44 +0100tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2022-11-01 23:49:31 +0100freeside_(~mengwong@103.252.202.193) (Ping timeout: 272 seconds)
2022-11-01 23:52:15 +0100Alex_test_(~al_test@178.34.163.109)
2022-11-01 23:53:01 +0100ec(~ec@gateway/tor-sasl/ec) (Ping timeout: 258 seconds)
2022-11-01 23:53:52 +0100Alex_test(~al_test@178.34.163.109) (Ping timeout: 252 seconds)
2022-11-01 23:54:43 +0100ec(~ec@gateway/tor-sasl/ec)
2022-11-01 23:57:37 +0100chele__(~chele@user/chele) (Remote host closed the connection)
2022-11-01 23:57:55 +0100 <Axman6> lans has some nice stuff for dealing with exceptions, allowing you to be as specific as a Getter will let you
2022-11-01 23:57:59 +0100 <Axman6> lens*
2022-11-01 23:58:13 +0100 <Axman6> @hoogle handling
2022-11-01 23:58:13 +0100 <lambdabot> Control.Exception.Lens handling :: MonadCatch m => Getting (First a) SomeException a -> (a -> m r) -> m r -> m r
2022-11-01 23:58:13 +0100 <lambdabot> Control.Monad.Error.Lens handling :: MonadError e m => Getting (First a) e a -> (a -> m r) -> m r -> m r
2022-11-01 23:58:13 +0100 <lambdabot> LiveCoding handling :: (Typeable h, Monad m) => Handle m h -> Cell (HandlingStateT m) arbitrary h
2022-11-01 23:58:30 +0100 <Axman6> @hoogle handles
2022-11-01 23:58:30 +0100 <lambdabot> Control.Foldl handles :: Handler a b -> Fold b r -> Fold a r
2022-11-01 23:58:30 +0100 <lambdabot> Control.Spoon type Handles a = [Handler (Maybe a)]
2022-11-01 23:58:30 +0100 <lambdabot> Network.StreamSocket handleSocketError :: Socket -> IOException -> IO (Result a)