2021/12/14

2021-12-14 00:00:55 +0100coot(~coot@89-64-85-93.dynamic.chello.pl)
2021-12-14 00:02:13 +0100kranius_(~kranius@222.186.245.213.rev.sfr.net) (Read error: Connection reset by peer)
2021-12-14 00:02:27 +0100kranius_(~kranius@222.186.245.213.rev.sfr.net)
2021-12-14 00:03:18 +0100alx741(~alx741@181.199.42.79)
2021-12-14 00:03:28 +0100kjak(~kjak@pool-108-45-56-21.washdc.fios.verizon.net) (Ping timeout: 268 seconds)
2021-12-14 00:04:05 +0100slowtyper(~slowtyper@user/slowtyper) (Quit: ZNC 1.8.2 - https://znc.in)
2021-12-14 00:04:21 +0100slowtyper(~slowtyper@user/slowtyper)
2021-12-14 00:04:58 +0100kranius_(~kranius@222.186.245.213.rev.sfr.net) (Read error: Connection reset by peer)
2021-12-14 00:05:15 +0100ChaiTRex(~ChaiTRex@user/chaitrex) (Remote host closed the connection)
2021-12-14 00:05:30 +0100Vajb(~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi) (Read error: Connection reset by peer)
2021-12-14 00:05:46 +0100ChaiTRex(~ChaiTRex@user/chaitrex)
2021-12-14 00:06:11 +0100Vajb(~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi)
2021-12-14 00:06:59 +0100cheater(~Username@user/cheater) (Ping timeout: 250 seconds)
2021-12-14 00:07:27 +0100kranius_(~kranius@222.186.245.213.rev.sfr.net)
2021-12-14 00:10:43 +0100jakalx(~jakalx@base.jakalx.net) ()
2021-12-14 00:11:31 +0100myShoggoth(~myShoggot@97-120-85-195.ptld.qwest.net) (Quit: Leaving)
2021-12-14 00:12:49 +0100 <jackdk> Axman6/dibblego: did you read that big ol' snippet I posted? I'm thinking of giving up mocking and splitting `MonadAmazonka` into `Monad m => MonadAmazonka m => MonadAmazonkaPager m`, where `MonadAmazonkaPager` provides the `paginate`/`paginateEither` operations; this makes `MonadAmazonka` GND-able
2021-12-14 00:14:16 +0100 <jackdk> For practical use, people are gonna need `askEnv` and `localEnv`, which essentially locks the class to implementation details of `AmazonkaT` anyway
2021-12-14 00:14:35 +0100dmenz(~dmenz@2804:14d:5cd4:5e94::1) (Ping timeout: 268 seconds)
2021-12-14 00:15:04 +0100 <geekosaur> @tell BrokenClutch if you're looking for source code, you can start with xmonad and then move on to xmonad-contrib (most modules within being self-contained)
2021-12-14 00:15:04 +0100 <lambdabot> Consider it noted.
2021-12-14 00:15:19 +0100emf(~emf@2600:1700:841:cc20:184c:c9e0:41bd:a50)
2021-12-14 00:16:23 +0100 <dibblego> haven't had a chance sorry mate, will do it
2021-12-14 00:18:12 +0100alx741(~alx741@181.199.42.79) (Read error: Connection reset by peer)
2021-12-14 00:18:17 +0100jakalx(~jakalx@base.jakalx.net)
2021-12-14 00:18:35 +0100 <jackdk> Everyone wants a new release, nobody wants to pick up a shovel and help dig
2021-12-14 00:18:49 +0100alx741(~alx741@157.100.93.160)
2021-12-14 00:18:50 +0100emf_(~emf@2620:10d:c091:480::1:e5d2)
2021-12-14 00:19:00 +0100 <jackdk> (I know you're not in the amazonkaverse, but it's more of a general vent)
2021-12-14 00:19:35 +0100emf(~emf@2600:1700:841:cc20:184c:c9e0:41bd:a50) (Ping timeout: 252 seconds)
2021-12-14 00:20:08 +0100pfurla(~pfurla@177.25.178.222) (Ping timeout: 268 seconds)
2021-12-14 00:20:53 +0100 <geekosaur> isn't that how it usually goes?
2021-12-14 00:21:16 +0100 <jackdk> I guess
2021-12-14 00:22:47 +0100nfd(~nfd@user/nfd) (Ping timeout: 250 seconds)
2021-12-14 00:24:16 +0100psygate(~psygate@user/psygate) (Quit: Leaving)
2021-12-14 00:26:21 +0100nvmd(~nvmd@user/nvmd) (Quit: Later, nerds.)
2021-12-14 00:26:34 +0100nvmd(~nvmd@user/nvmd)
2021-12-14 00:29:58 +0100cheater(~Username@user/cheater)
2021-12-14 00:31:15 +0100machinedgod(~machinedg@24.105.81.50) (Ping timeout: 250 seconds)
2021-12-14 00:31:16 +0100 <zero> > length [0,1,2,undefined,7,8,9]
2021-12-14 00:31:18 +0100 <lambdabot> 7
2021-12-14 00:31:49 +0100 <dibblego> just got an exam on Friday, so that's my spare time atm
2021-12-14 00:32:29 +0100pfurla(~pfurla@177.25.178.222)
2021-12-14 00:32:33 +0100 <zero> > [0,1,2,undefined,7,8,9] !! 4
2021-12-14 00:32:34 +0100 <lambdabot> 7
2021-12-14 00:32:37 +0100 <zero> > [0,1,2,undefined,7,8,9] !! 3
2021-12-14 00:32:39 +0100 <lambdabot> *Exception: Prelude.undefined
2021-12-14 00:33:37 +0100__monty__(~toonn@user/toonn) (Quit: leaving)
2021-12-14 00:33:42 +0100kranius_(~kranius@222.186.245.213.rev.sfr.net) (Ping timeout: 268 seconds)
2021-12-14 00:33:53 +0100cosimone(~user@93-47-228-207.ip115.fastwebnet.it) (Ping timeout: 252 seconds)
2021-12-14 00:34:50 +0100eggplantade(~Eggplanta@2600:1700:bef1:5e10:f458:37c0:1547:7436) (Remote host closed the connection)
2021-12-14 00:34:54 +0100 <zero> is this because Cons is the head in WHNF ?
2021-12-14 00:35:02 +0100eggplantade(~Eggplanta@2600:1700:bef1:5e10:f458:37c0:1547:7436)
2021-12-14 00:35:10 +0100 <zero> (Cons = (:))
2021-12-14 00:35:15 +0100acidsys(~LSD@2.lsd.systems) (Quit: I love you.)
2021-12-14 00:35:36 +0100 <geekosaur> yes, or put otherwise they only access the spine of the list, not the values
2021-12-14 00:35:41 +0100alx741(~alx741@157.100.93.160) (Read error: Connection reset by peer)
2021-12-14 00:35:48 +0100acidsys(~LSD@2.lsd.systems)
2021-12-14 00:35:52 +0100 <zero> all right
2021-12-14 00:36:19 +0100 <geekosaur> in fact !! doesn't touch the value either, it's MuEval's attempt to print it afterward that throws the exception
2021-12-14 00:36:29 +0100 <dibblego> > length [[0,1,2,undefined,7,8,9] !! 3]
2021-12-14 00:36:31 +0100 <lambdabot> 1
2021-12-14 00:36:39 +0100 <c_wraith> put yet another way: evaluating either argument to (:) doesn't cause any evaluation of the other.
2021-12-14 00:36:56 +0100 <EvanR> > [0, 1, 2, let x = x in x, 3, 4] !! 4
2021-12-14 00:36:58 +0100 <lambdabot> 3
2021-12-14 00:37:35 +0100 <EvanR> now we know it's not being touched, as opposed to hiding an exception
2021-12-14 00:37:57 +0100teo(~teo@user/teo) (Ping timeout: 250 seconds)
2021-12-14 00:38:43 +0100 <EvanR> haskell is such a safe language, just by touching values you may explode, freeze
2021-12-14 00:39:54 +0100 <zero> nice
2021-12-14 00:40:53 +0100 <zero> that reminded me of a beautiful poem by Robert Frost
2021-12-14 00:40:53 +0100 <jackdk> dibblego: I am happy with how I've decided to do things (single typeclass with a haddock note for people writing their own instances), so if you don't get to weigh in, that's cool
2021-12-14 00:41:05 +0100 <dibblego> ok
2021-12-14 00:41:11 +0100 <xsperry> is it really better if the freezing happens right away, before the values are even created?
2021-12-14 00:41:19 +0100 <xsperry> as it would in a strict language
2021-12-14 00:41:32 +0100jgeerds(~jgeerds@55d4ac73.access.ecotel.net) (Ping timeout: 240 seconds)
2021-12-14 00:41:58 +0100 <xsperry> the end result is still a crashing of freezing program
2021-12-14 00:42:05 +0100 <zero> xsperry: if you think it is in a specific context, you can force its evaluatioon
2021-12-14 00:42:18 +0100 <xsperry> s/of/or
2021-12-14 00:42:39 +0100earendel(uid498179@user/earendel) (Quit: Connection closed for inactivity)
2021-12-14 00:42:47 +0100 <xsperry> zero, I know, I'm just arguing that this wouldn't make it any better or safer, whether done manually or automatically
2021-12-14 00:43:01 +0100 <EvanR> the beauty is when your program doesn't freeze or crash and produces useful results despite bombs and bottoms
2021-12-14 00:43:24 +0100 <EvanR> unlike a strict language
2021-12-14 00:44:44 +0100mdrake(~bc8147f2@cerf.good1.com)
2021-12-14 00:45:48 +0100Gurkenglas(~Gurkengla@dslb-002-203-144-204.002.203.pools.vodafone-ip.de) (Read error: Connection reset by peer)
2021-12-14 00:46:06 +0100Gurkenglas(~Gurkengla@dslb-002-203-144-204.002.203.pools.vodafone-ip.de)
2021-12-14 00:46:19 +0100d34df00d(~d34df00d@2600:1700:8c60:3a10::48) (Remote host closed the connection)
2021-12-14 00:46:36 +0100bollu(uid233390@id-233390.helmsley.irccloud.com) (Quit: Connection closed for inactivity)
2021-12-14 00:46:43 +0100max22-(~maxime@lfbn-ren-1-762-224.w81-53.abo.wanadoo.fr) (Remote host closed the connection)
2021-12-14 00:47:01 +0100Jing(~hedgehog@2604:a840:3::10c8) (Remote host closed the connection)
2021-12-14 00:47:02 +0100 <int-e> c_wraith: more adventures in dumbo octopus land: there are *long* loops: https://paste.debian.net/1223336/
2021-12-14 00:47:04 +0100 <mdrake> hi. is it ok to upgrade to 9.2.1 if I only care about linux and windows platforms?
2021-12-14 00:47:25 +0100 <mdrake> or is it still too buggy to make the switch
2021-12-14 00:47:27 +0100 <zero> also there's the fact that you can have considerable guarantees that bombs and botoms don't exist
2021-12-14 00:47:33 +0100 <c_wraith> as far as I know, the big issues are only on ARM, yes
2021-12-14 00:47:54 +0100Jing(~hedgehog@2604:a840:3::10c8)
2021-12-14 00:48:14 +0100 <c_wraith> int-e: dang. that's one hell of a long cycle
2021-12-14 00:48:38 +0100 <mdrake> when can we expect stack to upgrade to 9.2.1?
2021-12-14 00:49:01 +0100nvmd(~nvmd@user/nvmd) (Quit: Later, nerds.)
2021-12-14 00:49:02 +0100 <monochrom> Laziness enables more abstractions.
2021-12-14 00:49:18 +0100 <c_wraith> I doubt it will. I suspect stack won't upgrade until 9.2.2
2021-12-14 00:49:33 +0100 <mdrake> :|
2021-12-14 00:49:47 +0100 <c_wraith> because they don't want a stack release labeled "not for use on new MacBooks"
2021-12-14 00:49:53 +0100 <zero> monochrom: i intuitively agree, but may i ask how so?
2021-12-14 00:50:28 +0100 <mdrake> and how far away is 9.2.2, months? half a year?
2021-12-14 00:50:32 +0100 <mdrake> +away
2021-12-14 00:50:54 +0100 <c_wraith> probably not this month, due to the holidays. but I'd hope for January
2021-12-14 00:51:01 +0100 <mdrake> that's not so bad
2021-12-14 00:51:03 +0100 <monochrom> "f x y z = if x>0 then y else z, don't eval z if x>0, don't eval y if x<=0" cannot be user-defined in an eager language.
2021-12-14 00:52:02 +0100 <monochrom> This explains why a lot of control constructs are merely library functions in Haskell, but have to be at the mercy of the language designers in other languages.
2021-12-14 00:52:22 +0100coot(~coot@89-64-85-93.dynamic.chello.pl) (Quit: coot)
2021-12-14 00:52:44 +0100 <jackdk> IIRC there's a mean question in SICP about this exact point
2021-12-14 00:53:36 +0100alx741(~alx741@157.100.93.160)
2021-12-14 00:54:08 +0100 <dibblego> Has anyone ever asked for a strict if/then/else or && [for whatever reason, for whatever language]?
2021-12-14 00:54:42 +0100 <EvanR> your cpu evaluates both sides and cancels the loser when the bool test is ready xD
2021-12-14 00:54:51 +0100 <EvanR> luckily they can't explode (?)
2021-12-14 00:54:55 +0100 <hpc> dibblego: i think people are more likely to ask for "i don't want to care if it is strict or lazy"
2021-12-14 00:55:06 +0100 <monochrom> "cancel explosion"
2021-12-14 00:55:21 +0100 <geekosaur> > zip "abcdefg" [1..] -- try this in a strict language
2021-12-14 00:55:23 +0100 <lambdabot> [('a',1),('b',2),('c',3),('d',4),('e',5),('f',6),('g',7)]
2021-12-14 00:55:26 +0100 <mdrake> strict if isn't even an if, is it? just two blocks of code executed/evaluated
2021-12-14 00:55:49 +0100 <geekosaur> for that matter
2021-12-14 00:55:53 +0100 <geekosaur> > [1..]
2021-12-14 00:55:54 +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,...
2021-12-14 00:56:05 +0100 <dibblego> ...with a value
2021-12-14 00:56:49 +0100 <mdrake> I think this is a nicely written article about all the benefits of laziness. http://augustss.blogspot.com/2011/05/more-points-for-lazy-evaluation-in.html
2021-12-14 00:58:03 +0100jakalx(~jakalx@base.jakalx.net) (Error from remote client)
2021-12-14 00:59:13 +0100 <monochrom> John Hughes's "why FP matters" is also halfly "why laziness matters". Its many examples assume lazy lists.
2021-12-14 01:01:33 +0100jakalx(~jakalx@base.jakalx.net)
2021-12-14 01:04:48 +0100 <monochrom> In eager languages, you can recover half of laziness (the delaying half, but not the memoizing half) by putting the burden on the user.
2021-12-14 01:05:01 +0100bitmapper(uid464869@id-464869.lymington.irccloud.com) (Quit: Connection closed for inactivity)
2021-12-14 01:05:59 +0100 <monochrom> You can define "f' x y z = if x>0 then y() else z()", now the user has to write like "f' r (\_ -> 1/r) (\_ -> r*2)" instead of "f r (1/r) (r*2)"
2021-12-14 01:05:59 +0100 <dsal> promise is the memoizing bit, right?
2021-12-14 01:06:07 +0100 <monochrom> I don't know promise.
2021-12-14 01:06:37 +0100 <dsal> https://srfi.schemers.org/srfi-155/srfi-155.html
2021-12-14 01:06:58 +0100 <dsal> you explicitly "delay" to get a promise which can later be "force"d
2021-12-14 01:06:59 +0100 <monochrom> I tried to do that in anger when teaching a course that taught that in Racket Scheme. It got old and error prone and painful very quickly.
2021-12-14 01:06:59 +0100 <hpc> usually the memoizing bit is "put it in redis and be very careful how you access it" in practice
2021-12-14 01:08:07 +0100 <hpc> dsal: that's more about side effects than memoizing i thought
2021-12-14 01:08:29 +0100alx741(~alx741@157.100.93.160) (Read error: Connection reset by peer)
2021-12-14 01:08:32 +0100 <hpc> so you could reorder IO or potentially not do it at all
2021-12-14 01:08:39 +0100 <hpc> like very manual unsafeInterleaveIO
2021-12-14 01:09:30 +0100 <monochrom> And Lawrence Paulson agrees. In his SML textbook, he also teaches that technique, then finally concedes "this kind of thing is better in Haskell".
2021-12-14 01:12:09 +0100 <snake> besides a tuple and a list are there any other data structures that are like front-line options that aren't like libraries etc
2021-12-14 01:12:36 +0100madjestic(~madjestic@88-159-247-120.fixed.kpn.net) (Ping timeout: 256 seconds)
2021-12-14 01:13:45 +0100 <geekosaur> I think they're the only wired-in ones. And lists wouldn't be wired-in were it not for the [x,y,z] syntax (as opposed to x:y:z:[])
2021-12-14 01:14:13 +0100 <dsal> snake: Is there a reason you're looking for "not in libraries"?
2021-12-14 01:14:26 +0100 <dsal> There are some really common ones you'll see from external libraries.
2021-12-14 01:14:47 +0100 <snake> nah i still have no idea what i'm going ngl
2021-12-14 01:15:03 +0100 <monochrom> x:xs is also wired-in syntax. You cannot do your own "import Prelude hiding ((:)); data F a = Nil | Int : F a"
2021-12-14 01:15:13 +0100 <dsal> snake: you won't write much real world code without https://hackage.haskell.org/package/containers
2021-12-14 01:15:19 +0100 <glguy> number literals, string literals, character literals...
2021-12-14 01:15:28 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-12-14 01:15:28 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Changing host)
2021-12-14 01:15:28 +0100wroathe(~wroathe@user/wroathe)
2021-12-14 01:15:30 +0100 <snake> ooh
2021-12-14 01:15:53 +0100 <snake> thankyou
2021-12-14 01:16:01 +0100 <monochrom> Then again Integer is usually not considered "data structure". :)
2021-12-14 01:16:27 +0100 <dsal> Integer is a fine data structure with a few functions applied.
2021-12-14 01:16:38 +0100 <dsal> I made an Integer-backed BitSet a few days ago.
2021-12-14 01:17:04 +0100 <geekosaur> unordered-containers is also pretty useful
2021-12-14 01:17:28 +0100 <energizer> https://reasonablypolymorphic.com/blog/higher-kinded-data/ where it says `data Person' f = Person`, does that define `Person` to be something?
2021-12-14 01:17:28 +0100 <dsal> I don't use unordered-containers much. Too much chaos.
2021-12-14 01:17:48 +0100 <dsal> energizer: Looks like Person is a data constructor.
2021-12-14 01:18:12 +0100 <geekosaur> with a phantom type parameter
2021-12-14 01:18:16 +0100 <dsal> Oh, it's a record. You have to look at the next lines.
2021-12-14 01:18:26 +0100 <geekosaur> oh
2021-12-14 01:18:44 +0100 <energizer> yeah sorry didnt know how to typeset that nicely in here :)
2021-12-14 01:19:36 +0100 <geekosaur> better to use a pastebin
2021-12-14 01:19:39 +0100 <geekosaur> @where paste
2021-12-14 01:19:39 +0100 <lambdabot> Help us help you: please paste full code, input and/or output at e.g. https://paste.tomsmeding.com
2021-12-14 01:19:57 +0100 <energizer> well i already linked the code i'm talking about
2021-12-14 01:21:42 +0100 <geekosaur> yeh
2021-12-14 01:22:19 +0100Guest19(~Guest19@n110-33-34-202.hum1.act.optusnet.com.au)
2021-12-14 01:22:42 +0100Guest19(~Guest19@n110-33-34-202.hum1.act.optusnet.com.au) (Client Quit)
2021-12-14 01:23:25 +0100Tuplanolla(~Tuplanoll@91-159-69-50.elisa-laajakaista.fi) (Quit: Leaving.)
2021-12-14 01:23:25 +0100 <energizer> does Person have to be defined before that?
2021-12-14 01:24:09 +0100 <dsal> What do you mean? That's where Person is defined.
2021-12-14 01:24:11 +0100 <hpc> Person is the data constructor
2021-12-14 01:24:17 +0100 <hpc> Person' is like Bool, Person is like True
2021-12-14 01:24:24 +0100 <dsal> Heh, I was about to use that example.
2021-12-14 01:24:25 +0100 <geekosaur> I think they're asking about the original definition
2021-12-14 01:24:29 +0100 <hpc> data Bool = False | True -- defines all three of those things
2021-12-14 01:24:33 +0100alx741(~alx741@157.100.93.160)
2021-12-14 01:24:36 +0100 <energizer> i tried https://bpa.st/7ORA and ghc didn't complain
2021-12-14 01:24:45 +0100 <geekosaur> and the answer is no, you need neither Person nor MaybePerson
2021-12-14 01:24:51 +0100 <energizer> but i dont get how it's defining both Person' and Person in the same line
2021-12-14 01:25:01 +0100 <geekosaur> hpc showed you
2021-12-14 01:25:17 +0100 <geekosaur> Person' is a type constructor. Person is the corresponding data constructor
2021-12-14 01:25:42 +0100 <energizer> ok
2021-12-14 01:26:14 +0100 <hpc> maybe it would be easier to see in GADTSyntax?
2021-12-14 01:26:17 +0100 <hpc> data Person' f where
2021-12-14 01:26:22 +0100 <hpc> Person :: Person' f
2021-12-14 01:26:40 +0100 <geekosaur> well, you're missing the record part
2021-12-14 01:26:49 +0100 <hpc> oh, i didn't click the link :P
2021-12-14 01:27:12 +0100 <energizer> `data Colour = Red | Green | Blue` clears it up
2021-12-14 01:27:16 +0100 <hpc> pretend i remember how to write records in GADTSyntax
2021-12-14 01:28:11 +0100BrokenClutch(~pioneer@2804:d41:c2b2:be00:da32:623d:efa3:7121)
2021-12-14 01:28:29 +0100 <mdrake> that is kind of neat how you can have record with partial fields without having the boilerplate of defining two types
2021-12-14 01:29:06 +0100mmhat(~mmh@55d455f3.access.ecotel.net) (Quit: WeeChat 3.3)
2021-12-14 01:29:26 +0100 <dsal> I feel like that's mostly a way to write bugs.
2021-12-14 01:29:54 +0100 <energizer> i thought it was cool too, can you explain dsal
2021-12-14 01:30:24 +0100 <dsal> If you have a sum type with records, what does an accessor do that's defined for only one of the branches?
2021-12-14 01:30:40 +0100d34df00d(~d34df00d@2600:1700:8c60:3a10::48)
2021-12-14 01:30:48 +0100 <d34df00d> Hi!
2021-12-14 01:30:57 +0100 <geekosaur> um? I didn't see it doing that
2021-12-14 01:31:04 +0100 <d34df00d> I just wrote a function of type unsafeShrink :: A.STUArray s Int e -> Int -> A.STUArray s Int e
2021-12-14 01:31:06 +0100 <BrokenClutch> d34df00d hi
2021-12-14 01:31:14 +0100 <mdrake> yeah I'm not sure what you're talking about dsal
2021-12-14 01:31:21 +0100 <dmj`> > do { x@2 <- [1,2,3,2,3]; pure x }
2021-12-14 01:31:21 +0100 <d34df00d> with the implementation unsafeShrink arr@(A.STUArray l _ n marr) cnt = if cnt >= n then arr else A.STUArray l (l + cnt - 1) cnt marr
2021-12-14 01:31:23 +0100 <lambdabot> [2,2]
2021-12-14 01:31:24 +0100 <d34df00d> How bad should I feel?
2021-12-14 01:31:33 +0100 <geekosaur> possibly making an assumption about "partial fields"?
2021-12-14 01:31:45 +0100 <mdrake> good guess
2021-12-14 01:32:06 +0100boxscape_(~boxscape_@p4ff0bb6c.dip0.t-ipconnect.de) (Quit: Connection closed)
2021-12-14 01:32:24 +0100 <dsal> I meant doing things like this: data S = A { someA :: Int } | B { someB :: Int}
2021-12-14 01:32:32 +0100 <mdrake> dsal, I was talking about this: https://reasonablypolymorphic.com/blog/higher-kinded-data/
2021-12-14 01:32:46 +0100 <dsal> Yeah, I guess I didn't understand what you meant by "partial fields"
2021-12-14 01:33:24 +0100 <geekosaur> I thought it was a peculiar way of saying what they intended, since that does normally have the meaning you assumed
2021-12-14 01:33:52 +0100 <mdrake> that's probably true. I just assumed everyone knew the context
2021-12-14 01:35:09 +0100fizbin(~fizbin@c-73-33-197-160.hsd1.nj.comcast.net) (Quit: Leaving...)
2021-12-14 01:35:10 +0100 <mdrake> partial, as in data could be missing (it could be Nothing). not sure what would be the better way of phrasing it
2021-12-14 01:35:33 +0100 <mdrake> s/data/field
2021-12-14 01:35:34 +0100 <geekosaur> (possibly) incomplete?
2021-12-14 01:40:32 +0100mvk(~mvk@2607:fea8:5cdd:f000::9788)
2021-12-14 01:42:10 +0100 <mdrake> yeah that's probably better
2021-12-14 01:43:04 +0100meinside(uid24933@id-24933.helmsley.irccloud.com)
2021-12-14 01:43:19 +0100alx741(~alx741@157.100.93.160) (Read error: Connection reset by peer)
2021-12-14 01:44:47 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-12-14 01:45:18 +0100 <energizer> not sure if this question makes sense. how can you distinguish between instances of the Identity case, which has `= a`, and other instances, which have `= f a`? it's possible that the `a` in the first case could also be an instance of `f _`
2021-12-14 01:46:43 +0100 <geekosaur> do you mean in the definition of HKD?
2021-12-14 01:48:11 +0100 <monochrom> This is a closed type family. If you go to the GHC user's guide and look for "closed type families", it is well explained there.
2021-12-14 01:49:33 +0100 <geekosaur> closed and non-injective, meaning that it can only ever be used in the direction HKD type1 type2 -> type1 type2 or HKD Identity type2 -> type2
2021-12-14 01:49:36 +0100 <energizer> i mean after HKD is applied `HKD (Identity (foo bar))` or `HKD (foo bar)`, how do i know if i have the left case or thr right case
2021-12-14 01:50:00 +0100raehik1(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 256 seconds)
2021-12-14 01:50:16 +0100 <monochrom> That question is answered in the doc I referred to.
2021-12-14 01:50:59 +0100 <energizer> https://ghc.gitlab.haskell.org/ghc/doc/users_guide/exts/type_families.html#closed-type-families
2021-12-14 01:52:08 +0100 <geekosaur> not sure I'd recommend that link as it's for ghc HEAD and sometimes things will be different there. https://downloads.haskell.org/ghc/latest/docs/html/users_guide/index.html
2021-12-14 01:52:22 +0100 <geekosaur> or replace "latest" with the version you want
2021-12-14 01:52:56 +0100 <Axman6> energizer: it would be HKD Identity foo, and would mean all the elements of foo are just their respective types, without being wrapped in Identity
2021-12-14 01:54:08 +0100jpds(~jpds@gateway/tor-sasl/jpds) (Remote host closed the connection)
2021-12-14 01:54:29 +0100jpds(~jpds@gateway/tor-sasl/jpds)
2021-12-14 01:54:38 +0100 <geekosaur> the type family (or type function if you prefer) HKD inspects its first argument and matches it against each specified instance in turn. so HKD Identity … will always match the first case and anything else the second
2021-12-14 01:55:04 +0100 <Axman6> energizer: which library are you using for HKD?
2021-12-14 01:55:06 +0100 <geekosaur> much like case … of at value level
2021-12-14 01:55:24 +0100 <geekosaur> https://downloads.haskell.org/ghc/latest/docs/html/users_guide/index.html
2021-12-14 01:55:37 +0100 <geekosaur> oops
2021-12-14 01:56:17 +0100 <geekosaur> https://reasonablypolymorphic.com/blog/higher-kinded-data/
2021-12-14 01:56:24 +0100Axman6has to go
2021-12-14 01:57:39 +0100lavaman(~lavaman@98.38.249.169)
2021-12-14 01:57:58 +0100 <energizer> i mean /after/ that. when i have either `a` or `f a`. the `a` that comes out of the first case might be similar to the `f a` that comes out of the second case, so i wont know where I came from, right?
2021-12-14 01:58:26 +0100 <energizer> since once case drops a level of wrapping, and the other doesnt
2021-12-14 01:59:04 +0100dysfigureddfg
2021-12-14 01:59:06 +0100 <geekosaur> that never comes up, because HKD is non-injective (meaning, it can't be run "backwards")
2021-12-14 01:59:11 +0100 <monochrom> I'm actually quite disappointed at that article. "You won't need TH!" That would be great if not for "But now you need GHC.Generics." That's just a different yak to shave, really.
2021-12-14 01:59:19 +0100dfg(~dfg@li490-89.members.linode.com) (Changing host)
2021-12-14 01:59:19 +0100dfg(~dfg@user/dfg)
2021-12-14 01:59:24 +0100 <geekosaur> we run it in only one direction and use the result immediately
2021-12-14 01:59:45 +0100 <geekosaur> monochrom, the article says that in not so many words :)
2021-12-14 01:59:49 +0100alx741(~alx741@157.100.93.160)
2021-12-14 01:59:51 +0100 <monochrom> Plus the fact that the closed type family is just an distracting optimization to optimize away Identity.
2021-12-14 02:00:56 +0100 <geekosaur> basically, you can never have Identity a because the HKD function disallows it
2021-12-14 02:01:14 +0100 <geekosaur> *type function
2021-12-14 02:02:01 +0100lavaman(~lavaman@98.38.249.169) (Ping timeout: 250 seconds)
2021-12-14 02:03:25 +0100lavaman(~lavaman@98.38.249.169)
2021-12-14 02:06:10 +0100 <energizer> suppose `HKD Identity a = a` produces `Just 4` (if `a` is `Just 4`) and `HKD f a = f a` produces `Just 4` (if `f` is `Just` and `a` is `4`). that can happen, right?
2021-12-14 02:06:55 +0100 <monochrom> For starters, where did that "4" come from?!
2021-12-14 02:07:13 +0100 <monochrom> Why is it not 5? Why is it not a boolean?
2021-12-14 02:07:17 +0100lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2021-12-14 02:08:26 +0100 <jackdk> I do not like the HKD family, it seems to create a bunch of extra noise. I'd rather eat the boilerplate of explicit `Identity` here and there where I can actually see what's going on
2021-12-14 02:08:28 +0100 <energizer> the value of `a` is data, right? so i can suppose it to be 4
2021-12-14 02:09:16 +0100 <monochrom> So you agree that you, not `HKD Identity a = a`, produced that "4".
2021-12-14 02:10:03 +0100 <energizer> can you ask a more helpful question or something
2021-12-14 02:10:09 +0100nattiestnate(~nate@2001:448a:20a0:4134:25e:715f:d637:5263)
2021-12-14 02:11:02 +0100 <energizer> if it was `Identity 4` when it comes in, it's `4` when it goes out
2021-12-14 02:11:02 +0100alx741(~alx741@157.100.93.160) (Read error: Connection reset by peer)
2021-12-14 02:11:08 +0100 <monochrom> Yes. "What does your question mean?"
2021-12-14 02:11:43 +0100SummerSonw(~The_viole@203.77.49.232)
2021-12-14 02:11:47 +0100 <energizer> what is a plausible value of `a` there?
2021-12-14 02:11:59 +0100 <monochrom> Int, Bool, Char
2021-12-14 02:12:19 +0100 <dsal> Are there any constraints?
2021-12-14 02:12:21 +0100Gurkenglas(~Gurkengla@dslb-002-203-144-204.002.203.pools.vodafone-ip.de) (Ping timeout: 268 seconds)
2021-12-14 02:12:47 +0100 <geekosaur> if I understand your question, you are asking if Just 4 came from HKD Identity (Maybe Int) or from HKD Maybe Int?
2021-12-14 02:13:00 +0100 <geekosaur> and you can't know this
2021-12-14 02:13:11 +0100 <energizer> that is right geekosaur
2021-12-14 02:13:14 +0100 <geekosaur> but then, you can't know it in any other situation either
2021-12-14 02:14:32 +0100 <geekosaur> you know it only if you have just received it from a `Person'` of some variety — but to receive it, you must know whether it was a `Person' Identity` or a `Person' Maybe`, so you must know the answer already
2021-12-14 02:14:57 +0100 <geekosaur> and afterward it is irrelevant
2021-12-14 02:16:10 +0100SummerSonw(~The_viole@203.77.49.232) (Ping timeout: 260 seconds)
2021-12-14 02:18:04 +0100 <geekosaur> in particular, if you are operating on a `Person` a` for unspecified `a`, you cannot inspect the `Person` because you have to know what `a` is to do so
2021-12-14 02:18:06 +0100 <johnw> monochrom: thank you!
2021-12-14 02:18:20 +0100 <geekosaur> it's the same as
2021-12-14 02:18:28 +0100 <geekosaur> % :t length @[]
2021-12-14 02:18:28 +0100 <yahb> geekosaur: [a] -> Int
2021-12-14 02:18:46 +0100 <geekosaur> length cannot inspect the values in the list because it has no idea what `a` is
2021-12-14 02:18:54 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds)
2021-12-14 02:19:43 +0100 <geekosaur> but it can inspect the list nodes themselves because it knows a list is (_ : xs) for some unknown `_`
2021-12-14 02:19:50 +0100slice(~slice@user/slice) (Quit: zzz)
2021-12-14 02:21:47 +0100 <johnw> monochrom: Conal showed me this article a few weeks ago, but hadn't read it yet
2021-12-14 02:22:28 +0100cjb(~cjb@user/cjb) (Read error: Connection reset by peer)
2021-12-14 02:22:30 +0100aplainzetakind(~johndoe@captainludd.powered.by.lunarbnc.net) (Quit: Free ZNC ~ Powered by LunarBNC: https://LunarBNC.net)
2021-12-14 02:22:32 +0100acidjnk(~acidjnk@p200300d0c7271e77ede7a7f9d267d612.dip0.t-ipconnect.de) (Ping timeout: 240 seconds)
2021-12-14 02:23:11 +0100aplainzetakind(~johndoe@captainludd.powered.by.lunarbnc.net)
2021-12-14 02:23:28 +0100 <energizer> that means there's no distinguishing between instances of the types described earlier in the article as MaybePerson and Person, right? whereas they can be distinguished under the other method that doesn't drop the Identity wrapper
2021-12-14 02:23:29 +0100 <monochrom> It's pretty delightful. I have always felt "there are consistent rules behind APL but I can't tell say what". This paper solves it.
2021-12-14 02:23:31 +0100 <geekosaur> now, as it turns out, there is nothing about a `Person'` you can determine without knowing if it is a `Person' Identity` or a `Person' Maybe` or something else, so at the only point where your question has meaning either you know the answer already or it can't come up
2021-12-14 02:23:43 +0100 <jackdk> monochrom: what paper is this?
2021-12-14 02:24:12 +0100 <monochrom> https://link.springer.com/chapter/10.1007/978-3-662-54434-1_21
2021-12-14 02:26:26 +0100SummerSonw(~The_viole@203.77.49.232)
2021-12-14 02:27:30 +0100 <energizer> geekosaur: that means there's no distinguishing between instances of the types described earlier in the article as MaybePerson and Person, right? whereas they can be distinguished under the other method that doesn't drop the Identity wrapper. so if I'm given a Person' I can't tell if it's been cleaned already
2021-12-14 02:27:39 +0100 <geekosaur> uh?
2021-12-14 02:27:43 +0100Kauto(~Kauto@wireless-student-pt10-182-232.lut.ac.uk) (Quit: Client closed)
2021-12-14 02:28:02 +0100alx741(~alx741@157.100.93.160)
2021-12-14 02:28:03 +0100 <geekosaur> you never have a Person'. you have a Person' Identity or a Person' Maybe
2021-12-14 02:28:29 +0100 <geekosaur> and since you have to know which of those you have to do anything with it, you know what a Maybe 4 must mean
2021-12-14 02:28:58 +0100 <geekosaur> the fact that we talk about a Person' Maybe instead of a MaybePerson is not relevant; they're still distinct types
2021-12-14 02:29:18 +0100curiousgay(~curiousga@77-120-141-90.kha.volia.net) (Remote host closed the connection)
2021-12-14 02:30:31 +0100 <geekosaur> if you have a Person' Identity then a Maybe 4 must mean it's a field of type Maybe Int. if you have a Person' Maybe then the field is of type Int. there are no other options and *there is no way to not know which you have*
2021-12-14 02:30:53 +0100 <zero> is there a generalized version of (\\) like a `differenceBy :: (a -> a -> Bool) -> [a] -> [a] -> [a]` ?
2021-12-14 02:31:07 +0100 <geekosaur> your expression will not typecheck unless you know which one you have
2021-12-14 02:31:19 +0100nfd(~nfd@user/nfd)
2021-12-14 02:31:41 +0100 <monochrom> Does Data.List have it?
2021-12-14 02:32:07 +0100 <monochrom> Oh well it doesn't.
2021-12-14 02:32:26 +0100 <geekosaur> "It is a special case of deleteFirstsBy, which allows the programmer to supply their own equality test."
2021-12-14 02:32:29 +0100 <monochrom> Eh it does, but it is called deleteBy
2021-12-14 02:33:19 +0100jiribenes(~jiribenes@rosa.jiribenes.com) (Remote host closed the connection)
2021-12-14 02:34:04 +0100jiribenes(~jiribenes@rosa.jiribenes.com)
2021-12-14 02:34:11 +0100BrokenClutch(~pioneer@2804:d41:c2b2:be00:da32:623d:efa3:7121) ()
2021-12-14 02:35:13 +0100 <monochrom> Then it goes on to give an example that is not even remotely close to any sense of equality test...
2021-12-14 02:35:59 +0100 <monochrom> What's wrong with people...
2021-12-14 02:36:21 +0100emf_(~emf@2620:10d:c091:480::1:e5d2) (Ping timeout: 252 seconds)
2021-12-14 02:37:29 +0100 <jackdk> monochrom: thank you for that link, fun paper.
2021-12-14 02:37:34 +0100 <energizer> ok i'll medidate on that. thank you geekosaur
2021-12-14 02:37:44 +0100pfurla[m](uid345156@id-345156.tinside.irccloud.com) (Quit: Connection closed for inactivity)
2021-12-14 02:37:48 +0100lavaman(~lavaman@98.38.249.169)
2021-12-14 02:37:50 +0100mjacob(~mjacob@adrastea.uberspace.de) (Ping timeout: 265 seconds)
2021-12-14 02:37:51 +0100AWizzArd(~code@gehrels.uberspace.de) (Ping timeout: 245 seconds)
2021-12-14 02:37:58 +0100 <geekosaur> basically Person' is not a thing, like Maybe by itself is not a thing
2021-12-14 02:38:16 +0100 <geekosaur> it's always something like Maybe Int. it's always something like Person' Identity
2021-12-14 02:39:11 +0100 <geekosaur> (this is not always true, as Person' itself demonstrates for Maybe. but that's where "higher kinded" comes in; you are talking about types of kinds other than `Type`)
2021-12-14 02:39:14 +0100 <zero> monochrom: thanks. i should have been more dilligent in my search
2021-12-14 02:40:20 +0100shapr(~user@12.5.211.156)
2021-12-14 02:40:26 +0100 <geekosaur> but there are not *values* of kinds other than `Type`. thus there is never a value of type Person', because Person' has kind `Type -> Type`, not `Type`
2021-12-14 02:40:55 +0100 <geekosaur> (more correctly it's of kind `(Type -> Type) -> Type`)
2021-12-14 02:40:56 +0100alx741(~alx741@157.100.93.160) (Read error: Connection reset by peer)
2021-12-14 02:42:18 +0100lavaman(~lavaman@98.38.249.169) (Ping timeout: 260 seconds)
2021-12-14 02:43:30 +0100mjacob(~mjacob@adrastea.uberspace.de)
2021-12-14 02:45:36 +0100AWizzArd(~code@gehrels.uberspace.de)
2021-12-14 02:45:55 +0100 <EvanR> if values correspond to proofs, and there are no values of anything other than Type, does that mean most things in type level haskell are not true? xD
2021-12-14 02:46:20 +0100shapr(~user@12.5.211.156) (Remote host closed the connection)
2021-12-14 02:48:18 +0100 <monochrom> In fact you could ask that question of all dependently typed languages. You can ask it of Coq and Agda.
2021-12-14 02:48:31 +0100 <zero> dO(n) . The deleteBy function behaves like delete, but takes a user-supplied equality predicate.
2021-12-14 02:48:34 +0100 <zero> >>> deleteBy (<=) 4 [1..10]
2021-12-14 02:48:37 +0100 <zero> [1,2,3,5,6,7,8,9,10]
2021-12-14 02:48:43 +0100 <zero> what am i not getting here?
2021-12-14 02:48:49 +0100 <EvanR> 4 is gone
2021-12-14 02:48:51 +0100 <mniip> <= is not an equality
2021-12-14 02:49:01 +0100machinedgod(~machinedg@24.105.81.50)
2021-12-14 02:49:24 +0100 <EvanR> oh tricky
2021-12-14 02:49:28 +0100 <monochrom> It stops after the first deletion.
2021-12-14 02:49:38 +0100 <zero> why 4 then?
2021-12-14 02:49:41 +0100[itchyjunk](~itchyjunk@user/itchyjunk/x-7353470)
2021-12-14 02:49:51 +0100 <mniip> the docs doesn't specify which side of the equality predicate the four will appear on
2021-12-14 02:49:54 +0100 <monochrom> 4<=1 is false.
2021-12-14 02:49:57 +0100 <mniip> so it's deleting the first x such taht 4<=x
2021-12-14 02:50:08 +0100nattiestnate(~nate@2001:448a:20a0:4134:25e:715f:d637:5263) (Quit: WeeChat 3.3)
2021-12-14 02:50:16 +0100 <zero> oh
2021-12-14 02:50:37 +0100 <geekosaur> which is what you get for specifying a non-equality predicate :)
2021-12-14 02:50:39 +0100aplainzetakind(~johndoe@captainludd.powered.by.lunarbnc.net) (Quit: Free ZNC ~ Powered by LunarBNC: https://LunarBNC.net)
2021-12-14 02:50:55 +0100 <monochrom> But deleteFirstBy is more analogous to (\\) and has a better name.
2021-12-14 02:51:12 +0100g(x@libera/staff/glguy)
2021-12-14 02:51:15 +0100aplainzetakind(~johndoe@captainludd.powered.by.lunarbnc.net)
2021-12-14 02:51:46 +0100 <EvanR> > deleteBy (\x y -> (even x && even y) || (odd x && odd y)) 1 [0..9]
2021-12-14 02:51:48 +0100 <lambdabot> [0,2,3,4,5,6,7,8,9]
2021-12-14 02:52:26 +0100 <EvanR> works
2021-12-14 02:52:31 +0100 <EvanR> > deleteBy (\x y -> (even x && even y) || (odd x && odd y)) 7 [0..9]
2021-12-14 02:52:32 +0100 <lambdabot> [0,2,3,4,5,6,7,8,9]
2021-12-14 02:52:36 +0100 <g> even x == even y
2021-12-14 02:52:51 +0100waleee(~waleee@2001:9b0:21d:fc00:398f:b003:b90d:acf4) (Ping timeout: 252 seconds)
2021-12-14 02:53:48 +0100 <monochrom> Suppose I want to explain factorial to you. I begin with "it maps a natural number n to the product 1*2*...*n".
2021-12-14 02:54:09 +0100 <monochrom> Then I proceed to say "Example: factorial of 3.5 is 11.6317..."
2021-12-14 02:54:23 +0100 <monochrom> What are you missing? Answer: The fact that I'm nuts. :)
2021-12-14 02:56:02 +0100 <monochrom> Did you know: "even x == even y" is a thing, too.
2021-12-14 02:57:01 +0100 <monochrom> Err g beat me to it, heh
2021-12-14 02:58:31 +0100alx741(~alx741@157.100.93.160)
2021-12-14 03:01:53 +0100slice(~slice@user/slice)
2021-12-14 03:02:56 +0100curiousgay(~curiousga@77-120-141-90.kha.volia.net)
2021-12-14 03:03:28 +0100 <g> We have pretty good participation this year so far, but if anyone's doing advent of code in Haskell and hasn't joined the private leaderboard in the topic, there's still room!
2021-12-14 03:04:45 +0100 <g> It's ok if your goal isn't speed; it's also a good way to find solutions to compare with
2021-12-14 03:06:47 +0100xff0x(~xff0x@2001:1a81:5245:500:35c3:4c34:eb85:8494) (Ping timeout: 252 seconds)
2021-12-14 03:06:55 +0100hughjfchen(~hughjfche@vmi556545.contaboserver.net) (Quit: WeeChat 2.8)
2021-12-14 03:08:39 +0100 <mniip> something about setoids
2021-12-14 03:08:47 +0100xff0x(~xff0x@2001:1a81:5283:7b00:4425:b1f0:8a15:3e7c)
2021-12-14 03:11:35 +0100slice(~slice@user/slice) (Quit: zzz)
2021-12-14 03:11:46 +0100vicfred(~vicfred@user/vicfred) (Quit: Leaving)
2021-12-14 03:12:26 +0100aplainzetakind(~johndoe@captainludd.powered.by.lunarbnc.net) (Quit: Free ZNC ~ Powered by LunarBNC: https://LunarBNC.net)
2021-12-14 03:13:19 +0100lavaman(~lavaman@98.38.249.169)
2021-12-14 03:16:32 +0100pretty_dumm_guy(trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) (Ping timeout: 240 seconds)
2021-12-14 03:17:02 +0100machinedgod(~machinedg@24.105.81.50) (Ping timeout: 240 seconds)
2021-12-14 03:17:25 +0100lavaman(~lavaman@98.38.249.169) (Ping timeout: 240 seconds)
2021-12-14 03:17:25 +0100mvk(~mvk@2607:fea8:5cdd:f000::9788) (Ping timeout: 252 seconds)
2021-12-14 03:17:44 +0100Ferdirand(~somebody@2001:4c78:2012:5000::2) (Ping timeout: 268 seconds)
2021-12-14 03:17:50 +0100InternetCitizen(~fuzzypixe@eth-west-pareq2-46-193-4-100.wb.wifirst.net) (Ping timeout: 256 seconds)
2021-12-14 03:17:51 +0100Ferdirand(~somebody@2001:4c78:2012:5000::2)
2021-12-14 03:18:05 +0100pretty_dumm_guy(trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655)
2021-12-14 03:18:16 +0100pretty_dumm_guy(trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) (Client Quit)
2021-12-14 03:18:32 +0100pretty_dumm_guy(trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655)
2021-12-14 03:18:42 +0100pretty_dumm_guy(trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) (Client Quit)
2021-12-14 03:19:43 +0100slice(~slice@user/slice)
2021-12-14 03:23:41 +0100aplainzetakind(~johndoe@captainludd.powered.by.lunarbnc.net)
2021-12-14 03:28:51 +0100Jing(~hedgehog@2604:a840:3::10c8) (Remote host closed the connection)
2021-12-14 03:29:24 +0100slice(~slice@user/slice) (Quit: zzz)
2021-12-14 03:29:38 +0100nosewings(~ngpc@2603-8081-3e05-e2d0-f324-1a41-5d30-c2c5.res6.spectrum.com)
2021-12-14 03:31:43 +0100slice(~slice@user/slice)
2021-12-14 03:32:15 +0100Jing(~hedgehog@2604:a840:3::10c8)
2021-12-14 03:32:31 +0100shapr(~user@12.5.211.156)
2021-12-14 03:36:27 +0100ubert1(~Thunderbi@p200300ecdf1abbee60b6487a781d8af1.dip0.t-ipconnect.de)
2021-12-14 03:37:16 +0100curiousgay(~curiousga@77-120-141-90.kha.volia.net) (Quit: Leaving)
2021-12-14 03:37:35 +0100ubert(~Thunderbi@p200300ecdf1abbd3ca03b07f10ffc657.dip0.t-ipconnect.de) (Ping timeout: 250 seconds)
2021-12-14 03:37:35 +0100ubert1ubert
2021-12-14 03:38:07 +0100alx741(~alx741@157.100.93.160) (Read error: Connection reset by peer)
2021-12-14 03:39:13 +0100 <dsal> Is there anything in megaparsec for parsing quoted strings?
2021-12-14 03:41:40 +0100 <glguy> between and then your own set of escapes?
2021-12-14 03:51:38 +0100nfd(~nfd@user/nfd) (Ping timeout: 268 seconds)
2021-12-14 03:51:45 +0100 <snake> why is insert into a map O(log n)
2021-12-14 03:51:56 +0100 <snake> that is slow
2021-12-14 03:54:44 +0100shapr(~user@12.5.211.156) (Ping timeout: 268 seconds)
2021-12-14 03:55:55 +0100epolanski(uid312403@id-312403.helmsley.irccloud.com) (Quit: Connection closed for inactivity)
2021-12-14 03:56:05 +0100alx741(~alx741@157.100.93.160)
2021-12-14 03:59:00 +0100 <zero> well... it really depends
2021-12-14 04:00:13 +0100 <nosewings> O(log n) is fast
2021-12-14 04:00:46 +0100 <nosewings> Ignoring the constants, log(2^64) ~ 44
2021-12-14 04:02:23 +0100nosewings(~ngpc@2603-8081-3e05-e2d0-f324-1a41-5d30-c2c5.res6.spectrum.com) (Remote host closed the connection)
2021-12-14 04:02:38 +0100 <zero> i would say it's fast for a purely functional data structure
2021-12-14 04:03:40 +0100 <dsal> glguy: Yeah… I've done it a few ways, but it seems like something kind of common.
2021-12-14 04:04:05 +0100 <dsal> snake: how would you do it?
2021-12-14 04:04:29 +0100 <glguy> About every language uses a slightly different escape syntax, so I'm not sure what I'd want megaparsec to provide
2021-12-14 04:04:59 +0100 <dsal> Yeah, I guess. I just end up with some basic "x" type strings.
2021-12-14 04:05:25 +0100deadmarshal(~deadmarsh@95.38.230.166)
2021-12-14 04:05:47 +0100nosewings(~ngpc@2603-8081-3e05-e2d0-f324-1a41-5d30-c2c5.res6.spectrum.com)
2021-12-14 04:05:59 +0100 <snake> dsal, i'd use an array, O(1) time
2021-12-14 04:06:12 +0100 <snake> zero, sure maybe that is true
2021-12-14 04:06:28 +0100 <glguy> updating an array would be O(n) instead of the faster O(log n)
2021-12-14 04:07:00 +0100 <snake> glguy, what do you mean by "array"
2021-12-14 04:07:11 +0100 <snake> the way i have learned about arrays they are O(1) for access and update
2021-12-14 04:07:16 +0100 <glguy> If you're talking about Map, you're talking about an immutable data structure
2021-12-14 04:07:29 +0100 <glguy> so updating an array would mean to copy it to make a new one with the change
2021-12-14 04:07:37 +0100Guest99(~Guest99@pool-100-8-45-127.nwrknj.fios.verizon.net)
2021-12-14 04:07:42 +0100 <snake> no he's asking how i would do it
2021-12-14 04:07:46 +0100 <snake> not how Map would do it
2021-12-14 04:07:59 +0100Guest99(~Guest99@pool-100-8-45-127.nwrknj.fios.verizon.net) (Client Quit)
2021-12-14 04:08:04 +0100 <dsal> Yes, and glguy's response suggests that your way would be *significantly* more expensive.
2021-12-14 04:08:12 +0100Guest99(~Guest99@pool-100-8-45-127.nwrknj.fios.verizon.net)
2021-12-14 04:08:22 +0100 <snake> not in a language where you can update a single entry in an array
2021-12-14 04:08:27 +0100 <snake> without replacing it
2021-12-14 04:08:54 +0100[itchyjunk](~itchyjunk@user/itchyjunk/x-7353470) (Read error: Connection reset by peer)
2021-12-14 04:08:58 +0100 <dsal> OK, this conversation is a bit weird because we're not talking about what we'd try to do, but let's assume you're using mutable arrays. How do you decide which element to update?
2021-12-14 04:09:05 +0100 <dsal> What if you didn't build a large enough array in the first place?
2021-12-14 04:09:05 +0100alx741(~alx741@157.100.93.160) (Read error: Connection reset by peer)
2021-12-14 04:09:51 +0100deadmarshal(~deadmarsh@95.38.230.166) (Ping timeout: 252 seconds)
2021-12-14 04:09:56 +0100 <snake> you use a hash algorithm on the key to get a bucket to insert to, and a probing function to handle collisions
2021-12-14 04:10:21 +0100 <snake> the array would have a certain capacity and would resize after its maybe like 75% full for example
2021-12-14 04:10:22 +0100Guest99(~Guest99@pool-100-8-45-127.nwrknj.fios.verizon.net) (Client Quit)
2021-12-14 04:10:47 +0100 <snake> this is amortized constant time since you have to resize and rehash every 0.75 N elements you insert
2021-12-14 04:10:53 +0100 <snake> since you only*
2021-12-14 04:10:53 +0100 <glguy> snake: If you're interested in talking about mutable datastructures (which Haskell has) then you wouldn't bring up the complexity of inserting into a Map
2021-12-14 04:12:29 +0100 <snake> what advantage does Map have over the faster data structure and algorithm?
2021-12-14 04:12:30 +0100 <glguy> There are also mutable hashtables and mutable arrays available
2021-12-14 04:13:06 +0100 <glguy> snake: Map is faster and more efficient for rolling back to old versions and having multiple versions active at the same time
2021-12-14 04:13:39 +0100 <snake> ah i see
2021-12-14 04:13:50 +0100 <glguy> and not having mutation makes it easier to maintain invariants, avoid side-effect
2021-12-14 04:13:59 +0100 <dsal> And cheaper to pass your map around.
2021-12-14 04:15:25 +0100 <dsal> It's quite possible that if your program is slow, it's not because of Map. Did you profile?
2021-12-14 04:15:32 +0100rekahsoft(~rekahsoft@cpe0008a20f982f-cm64777d666260.cpe.net.cable.rogers.com)
2021-12-14 04:15:32 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-12-14 04:15:59 +0100 <snake> no i didn't use it yet, i was just curious because it was theoretically slower than i expected
2021-12-14 04:16:20 +0100 <snake> i think c++ calls hash table a map, so maybe that's why i expected that
2021-12-14 04:17:00 +0100 <dsal> https://en.cppreference.com/w/cpp/container/map
2021-12-14 04:17:08 +0100 <dsal> std::map is not a hash table.
2021-12-14 04:17:37 +0100raghavgururajan(9fd51d1ea8@user/raghavgururajan)
2021-12-14 04:17:49 +0100 <snake> you are right, thankyou
2021-12-14 04:18:13 +0100 <snake> guess i just assumed maps are hash tables
2021-12-14 04:20:03 +0100 <dsal> You'll learn more about performance issues from the profiler than just guessing. O(log n) isn't a big deal since most data is pretty small. I did find a case where just using lookup in a list was faster (that's O(N)). But it's faster in my program.
2021-12-14 04:20:40 +0100 <zero> aren't Data.Map self-balancing binary search trees?
2021-12-14 04:20:43 +0100 <dsal> There's also the case where the Aeson hash table stuff where badly formed input can do really awful things due to hash collisions.
2021-12-14 04:21:51 +0100 <dsal> zero: https://hackage.haskell.org/package/containers-0.4.0.0/docs/Data-Map.html yeah, the docs suggest it does fancy stuff.
2021-12-14 04:24:29 +0100 <Axman6> snake: it;'s worth mentioning that hash based structures are fundamentally different from ordering based structures like map. an orserding based array implementation would have worse asymtotics than the Map implementation
2021-12-14 04:24:29 +0100Jing(~hedgehog@2604:a840:3::10c8) (Remote host closed the connection)
2021-12-14 04:25:11 +0100 <Axman6> O(log n) is, IIRC, optimal for comparison bsed maps. hash maps are a differtent beast, and we use a different strucutre for thos (HAMTs)
2021-12-14 04:25:27 +0100 <Axman6> based* those*
2021-12-14 04:26:36 +0100 <snake> yeah i had no idea there was a distinction. i thought map was just an ADT that used keys to access values
2021-12-14 04:26:47 +0100td_(~td@94.134.91.178) (Ping timeout: 268 seconds)
2021-12-14 04:27:21 +0100 <Axman6> one of the big benefits of Data.Map is that you can get out the elements in orted order in O(n) time, which you can't do with a hash based structure
2021-12-14 04:27:43 +0100alx741(~alx741@157.100.93.160)
2021-12-14 04:27:58 +0100td_(~td@muedsl-82-207-238-255.citykom.de)
2021-12-14 04:28:12 +0100 <Axman6> Data.HashMap gives you a HAMT, which also has O(log n) operations (though really, you can consider them O(1) because n is bounded to 64 bits)
2021-12-14 04:28:24 +0100 <Axman6> use the right tool for the job
2021-12-14 04:28:24 +0100mbuf(~Shakthi@122.178.176.47)
2021-12-14 04:28:44 +0100Jing(~hedgehog@2604:a840:3::10c8)
2021-12-14 04:29:01 +0100 <zero> Ord is also an arguably better consraint to have than Hashable
2021-12-14 04:32:42 +0100Inst(~Inst@2601:6c4:4080:3f80:1504:5494:6920:c755)
2021-12-14 04:32:51 +0100 <dsal> Ord is certainly easier to get.
2021-12-14 04:33:26 +0100 <glguy> snake: any chance you're doing the advent of code problems this year?
2021-12-14 04:34:03 +0100 <snake> glguy, i was but im also doing final exams this week. i did days 1-5 with java and day 6 with haskell
2021-12-14 04:36:13 +0100BrokenClutch(~pioneer@2804:d41:c2b2:be00:da32:623d:efa3:7121)
2021-12-14 04:36:34 +0100 <snake> glguy, https://dpaste.com/5GFLBLSEJ this is day 6
2021-12-14 04:37:15 +0100nfd(~nfd@user/nfd)
2021-12-14 04:37:27 +0100 <glguy> ah, cool :)
2021-12-14 04:40:18 +0100alx741(~alx741@157.100.93.160) (Read error: Connection reset by peer)
2021-12-14 04:43:34 +0100bitdex(~bitdex@gateway/tor-sasl/bitdex)
2021-12-14 04:44:11 +0100 <glguy> snake: Do you know you can use [x,y,z] list syntax in patterns (instead of needing to write (x:y:z:[])?
2021-12-14 04:46:10 +0100 <snake> no i didnt know that im a bit lost LOL
2021-12-14 04:49:38 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds)
2021-12-14 04:56:00 +0100BrokenClutch(~pioneer@2804:d41:c2b2:be00:da32:623d:efa3:7121) (Quit: Leaving.)
2021-12-14 04:58:14 +0100alx741(~alx741@157.100.93.160)
2021-12-14 04:58:55 +0100abhixec(~abhixec@c-67-169-139-16.hsd1.ca.comcast.net)
2021-12-14 05:10:42 +0100alx741(~alx741@157.100.93.160) (Read error: Connection reset by peer)
2021-12-14 05:24:07 +0100zebrag(~chris@user/zebrag) (Quit: Konversation terminated!)
2021-12-14 05:29:11 +0100alx741(~alx741@157.100.93.160)
2021-12-14 05:35:12 +0100kayvank(~user@52-119-115-185.PUBLIC.monkeybrains.net) (Remote host closed the connection)
2021-12-14 05:38:22 +0100Nolrai2(~Nolrai2@73.240.1.39)
2021-12-14 05:40:03 +0100 <Nolrai2> So if I there is a bug in a library on stackage whats the best way to pull down a local copy of it so I can fix it?
2021-12-14 05:40:52 +0100 <dsal> There's usually a github url
2021-12-14 05:41:14 +0100 <dsal> If you're using stack, you can just clone it and override to your clone in stack.yaml
2021-12-14 05:41:15 +0100alx741(~alx741@157.100.93.160) (Read error: Connection reset by peer)
2021-12-14 05:45:11 +0100wroathe(~wroathe@user/wroathe) (Ping timeout: 250 seconds)
2021-12-14 05:53:49 +0100 <Nolrai2> In the stack.yaml does the path to the clone go in packages or extra-deps?
2021-12-14 05:54:02 +0100 <dsal> extra-deps
2021-12-14 05:54:25 +0100 <dsal> You can either put a path there, or a git URL and commit.
2021-12-14 05:54:51 +0100 <dsal> stack gets pretty confused if change code at a reference without changing the version number, though.
2021-12-14 05:55:52 +0100 <Nolrai2> Thanks. I'll keep that in mind!
2021-12-14 05:59:41 +0100alx741(~alx741@157.100.93.160)
2021-12-14 06:02:36 +0100Nolrai2(~Nolrai2@73.240.1.39) (Quit: Client closed)
2021-12-14 06:04:41 +0100rekahsoft(~rekahsoft@cpe0008a20f982f-cm64777d666260.cpe.net.cable.rogers.com) (Ping timeout: 250 seconds)
2021-12-14 06:06:49 +0100osewingsn(~ngpc@2603-8081-3e05-e2d0-a55f-bbff-7ca5-7d0e.res6.spectrum.com)
2021-12-14 06:06:50 +0100neverwas(jpneverwas@swissbox.unperson.link)
2021-12-14 06:07:32 +0100osewingsn(~ngpc@2603-8081-3e05-e2d0-a55f-bbff-7ca5-7d0e.res6.spectrum.com) (Remote host closed the connection)
2021-12-14 06:08:44 +0100osewingsn(~ngpc@2603-8081-3e05-e2d0-a55f-bbff-7ca5-7d0e.res6.spectrum.com)
2021-12-14 06:25:06 +0100xkuru(~xkuru@user/xkuru) (Read error: Connection reset by peer)
2021-12-14 06:28:04 +0100alx741(~alx741@157.100.93.160) (Read error: Connection reset by peer)
2021-12-14 06:30:14 +0100ubert(~Thunderbi@p200300ecdf1abbee60b6487a781d8af1.dip0.t-ipconnect.de) (Remote host closed the connection)
2021-12-14 06:30:32 +0100ubert(~Thunderbi@p200300ecdf1abbee60b6487a781d8af1.dip0.t-ipconnect.de)
2021-12-14 06:37:28 +0100juhp(~juhp@128.106.188.82) (Quit: juhp)
2021-12-14 06:44:44 +0100alx741(~alx741@181.199.42.79)
2021-12-14 06:46:07 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-12-14 06:47:13 +0100mikoto-chan(~mikoto-ch@esm-84-240-99-143.netplaza.fi) (Quit: mikoto-chan)
2021-12-14 06:54:30 +0100slowButPresent(~slowButPr@user/slowbutpresent) (Quit: leaving)
2021-12-14 06:58:29 +0100alx741(~alx741@181.199.42.79) (Read error: Connection reset by peer)
2021-12-14 06:59:14 +0100alx741(~alx741@157.100.93.160)
2021-12-14 07:07:30 +0100lavaman(~lavaman@98.38.249.169)
2021-12-14 07:08:46 +0100takuan(~takuan@178-116-218-225.access.telenet.be)
2021-12-14 07:10:21 +0100alx741(~alx741@157.100.93.160) (Read error: Connection reset by peer)
2021-12-14 07:10:59 +0100deadmarshal(~deadmarsh@95.38.230.166)
2021-12-14 07:11:52 +0100lavaman(~lavaman@98.38.249.169) (Ping timeout: 256 seconds)
2021-12-14 07:12:33 +0100Jing(~hedgehog@2604:a840:3::10c8) (Remote host closed the connection)
2021-12-14 07:13:17 +0100Jing(~hedgehog@125.106.89.200)
2021-12-14 07:15:50 +0100_ht(~quassel@82-169-194-8.biz.kpn.net)
2021-12-14 07:20:09 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 252 seconds)
2021-12-14 07:25:28 +0100lbseale(~ep1ctetus@user/ep1ctetus) (Ping timeout: 256 seconds)
2021-12-14 07:27:17 +0100alx741(~alx741@181.199.42.79)
2021-12-14 07:28:04 +0100monochrom(trebla@216.138.220.146) (Quit: NO CARRIER)
2021-12-14 07:29:49 +0100monochrom(trebla@216.138.220.146)
2021-12-14 07:33:15 +0100tromp(~textual@dhcp-077-249-230-040.chello.nl)
2021-12-14 07:34:36 +0100osewingsn(~ngpc@2603-8081-3e05-e2d0-a55f-bbff-7ca5-7d0e.res6.spectrum.com) (Remote host closed the connection)
2021-12-14 07:40:02 +0100alx741(~alx741@181.199.42.79) (Read error: Connection reset by peer)
2021-12-14 07:40:34 +0100Akiva(~Akiva@user/Akiva)
2021-12-14 07:40:47 +0100alx741(~alx741@157.100.93.160)
2021-12-14 07:43:44 +0100tromp(~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2021-12-14 07:45:26 +0100 <xerox> cyphase: we are tied for 10 :o
2021-12-14 07:46:09 +0100 <cyphase> hmm, perhaps i need to refocus my efforts
2021-12-14 07:46:26 +0100 <cyphase> (no, not really)
2021-12-14 07:47:17 +0100Inst(~Inst@2601:6c4:4080:3f80:1504:5494:6920:c755) (Ping timeout: 252 seconds)
2021-12-14 07:47:36 +0100 <cyphase> the drop in rank is totally worth the distraction i have to say :)
2021-12-14 07:55:52 +0100alx741(~alx741@157.100.93.160) (Read error: Connection reset by peer)
2021-12-14 07:59:51 +0100Jing(~hedgehog@125.106.89.200) (Read error: Connection reset by peer)
2021-12-14 08:04:31 +0100notzmv(~zmv@user/notzmv) (Ping timeout: 250 seconds)
2021-12-14 08:05:27 +0100Jing(~hedgehog@2604:a840:3::10c8)
2021-12-14 08:05:45 +0100tromp(~textual@dhcp-077-249-230-040.chello.nl)
2021-12-14 08:06:04 +0100remexre(~remexre@user/remexre) (Remote host closed the connection)
2021-12-14 08:06:57 +0100[itchyjunk](~itchyjunk@user/itchyjunk/x-7353470)
2021-12-14 08:07:42 +0100chele(~chele@user/chele)
2021-12-14 08:14:22 +0100alx741(~alx741@157.100.93.160)
2021-12-14 08:17:07 +0100 <int-e> > "AoD" > "AoC" -- 'D' is for 'distractions' of course
2021-12-14 08:17:09 +0100 <lambdabot> True
2021-12-14 08:20:48 +0100remexre(~remexre@user/remexre)
2021-12-14 08:22:21 +0100xff0x(~xff0x@2001:1a81:5283:7b00:4425:b1f0:8a15:3e7c) (Ping timeout: 268 seconds)
2021-12-14 08:22:31 +0100michalz(~michalz@185.246.204.109)
2021-12-14 08:22:59 +0100xff0x(~xff0x@2001:1a81:5283:7b00:6c74:59db:ccc0:34d8)
2021-12-14 08:23:47 +0100bollu(uid233390@id-233390.helmsley.irccloud.com)
2021-12-14 08:25:02 +0100mncheck(~mncheck@193.224.205.254) (Quit: Leaving)
2021-12-14 08:25:35 +0100 <mjrosenb> xerox: cyphase: globally?
2021-12-14 08:26:09 +0100 <cyphase> haha, no. the haskell leaderboard; code in the topic
2021-12-14 08:27:46 +0100mdrake(~bc8147f2@cerf.good1.com) (Quit: CGI:IRC (Session timeout))
2021-12-14 08:28:21 +0100coot(~coot@89-64-85-93.dynamic.chello.pl)
2021-12-14 08:28:32 +0100 <xerox> tie... broken! :D
2021-12-14 08:28:49 +0100 <mjrosenb> you're welcome?
2021-12-14 08:29:27 +0100 <mjrosenb> c.c there are people ahead of me that haven't finished today's yet.
2021-12-14 08:29:40 +0100 <mjrosenb> that's what I get for forgetting about it for a couple of days.
2021-12-14 08:31:37 +0100 <mjrosenb> anyhow, I came in here to ask about emacs and flycheck. I just set up haskell-lsp, and it says that flycheck is enabled in my buffers, but I'm not seeing any evidence of it.
2021-12-14 08:35:04 +0100evocatus(~evocatus@91.211.251.87)
2021-12-14 08:36:34 +0100eggplantade(~Eggplanta@2600:1700:bef1:5e10:f458:37c0:1547:7436) (Remote host closed the connection)
2021-12-14 08:38:40 +0100tromp(~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2021-12-14 08:39:29 +0100phma(phma@2001:5b0:211c:2a58:d0c:f178:6e2:131e) (Read error: Connection reset by peer)
2021-12-14 08:40:15 +0100alx741(~alx741@157.100.93.160) (Read error: Connection reset by peer)
2021-12-14 08:40:25 +0100phma(~phma@host-67-44-208-155.hnremote.net)
2021-12-14 08:41:01 +0100shriekingnoise(~shrieking@186.137.144.80) (Quit: Quit)
2021-12-14 08:47:31 +0100cfricke(~cfricke@user/cfricke)
2021-12-14 08:48:19 +0100fr33domlover(~fr33@2.55.170.123)
2021-12-14 08:51:07 +0100InternetCitizen(~fuzzypixe@eth-west-pareq2-46-193-4-100.wb.wifirst.net)
2021-12-14 08:56:43 +0100alx741(~alx741@157.100.93.160)
2021-12-14 09:00:44 +0100lortabac(~lortabac@2a01:e0a:541:b8f0:2c0a:74d4:9496:54f1)
2021-12-14 09:01:45 +0100dyeplexer(~dyeplexer@user/dyeplexer)
2021-12-14 09:08:55 +0100 <[itchyjunk]> @where paste
2021-12-14 09:08:55 +0100 <lambdabot> Help us help you: please paste full code, input and/or output at e.g. https://paste.tomsmeding.com
2021-12-14 09:09:30 +0100 <[itchyjunk]> Huh, I was expecting this to be harder. does this look correct? https://paste.tomsmeding.com/dzQcCatd
2021-12-14 09:10:18 +0100 <[itchyjunk]> I guess `fib n` should actually generate n terms maybe. but that would just be turning this into a helper and having come other function do the counting and recursion maybe?
2021-12-14 09:10:33 +0100alx741(~alx741@157.100.93.160) (Read error: Connection reset by peer)
2021-12-14 09:11:41 +0100waleee(~waleee@2001:9b0:21d:fc00:398f:b003:b90d:acf4)
2021-12-14 09:16:27 +0100 <[itchyjunk]> Hm, looks like i still have issues with making lists.
2021-12-14 09:16:30 +0100dschrempf(~dominik@070-207.dynamic.dsl.fonira.net)
2021-12-14 09:16:45 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-12-14 09:16:47 +0100tromp(~textual@dhcp-077-249-230-040.chello.nl)
2021-12-14 09:17:00 +0100 <[itchyjunk]> `fib :: Int -> [Int]` I want to take some integer n and produce a list of n integers, so i think the signature is correct
2021-12-14 09:17:56 +0100cosimone(~user@93-47-231-203.ip115.fastwebnet.it)
2021-12-14 09:18:36 +0100phma_(phma@2001:5b0:2144:24c8:3448:3cec:586:a41)
2021-12-14 09:19:20 +0100iteratee_(~kyle@162.218.222.107)
2021-12-14 09:19:32 +0100pyook(~puke@user/puke)
2021-12-14 09:19:33 +0100puke(~puke@user/puke) (Killed (iridium.libera.chat (Nickname regained by services)))
2021-12-14 09:19:33 +0100pyookpuke
2021-12-14 09:20:25 +0100 <mjrosenb> is there a reason to have fib :: Int -> [Int] rather than just fib :: [Int]?
2021-12-14 09:20:34 +0100 <mjrosenb> [itchyjunk]: ^
2021-12-14 09:20:41 +0100 <[itchyjunk]> hmmmmmmmmm
2021-12-14 09:21:13 +0100 <[itchyjunk]> I would just produce infinite list of fibbonaci lazyly evaluated?
2021-12-14 09:21:32 +0100 <[itchyjunk]> Didn't realize that was an option. but is this harder?
2021-12-14 09:21:52 +0100iteratee(~kyle@162.218.222.107) (Read error: Connection reset by peer)
2021-12-14 09:22:15 +0100phma(~phma@host-67-44-208-155.hnremote.net) (Ping timeout: 252 seconds)
2021-12-14 09:23:32 +0100 <mjrosenb> the lazy list of infinite fibonacci numbers is definitely one of the "wait, haskell can do /that/?!" examples
2021-12-14 09:26:50 +0100 <[itchyjunk]> Hm, idk how a function that take no parameter but produces a list would go
2021-12-14 09:26:58 +0100alx741(~alx741@157.100.93.160)
2021-12-14 09:28:25 +0100chexum_(~quassel@gateway/tor-sasl/chexum)
2021-12-14 09:28:41 +0100lbseale(~ep1ctetus@user/ep1ctetus)
2021-12-14 09:28:42 +0100 <mjrosenb> You can start simple, how about a list that contains only the number 1, an infinite number of times?
2021-12-14 09:28:50 +0100chexum(~quassel@gateway/tor-sasl/chexum) (Remote host closed the connection)
2021-12-14 09:30:53 +0100max22-(~maxime@lfbn-ren-1-762-224.w81-53.abo.wanadoo.fr)
2021-12-14 09:31:37 +0100 <[itchyjunk]> this does something but running this turned into an infinite loop
2021-12-14 09:31:38 +0100 <[itchyjunk]> https://paste.tomsmeding.com/RfymL3yt
2021-12-14 09:32:06 +0100 <[itchyjunk]> guess this isn't what i want though
2021-12-14 09:32:22 +0100 <[itchyjunk]> But does compile and run @_@
2021-12-14 09:32:38 +0100slice(~slice@user/slice) (Quit: cya)
2021-12-14 09:33:13 +0100 <mjrosenb> that looks correct.
2021-12-14 09:33:26 +0100 <mjrosenb> it'll turn into an infinite loop if you try to look at all of ut
2021-12-14 09:33:52 +0100 <mjrosenb> but e.g. `take 300 simple` or `simple !! 9000` should both be fine.
2021-12-14 09:33:53 +0100dhouthoo(~dhouthoo@178-117-36-167.access.telenet.be)
2021-12-14 09:35:13 +0100 <[itchyjunk]> hmm, `take 30 simple` produces a list of 30 1's but `simple !! 30` just outputs 1
2021-12-14 09:35:14 +0100LiaoTao(~LiaoTao@gateway/tor-sasl/liaotao) (Remote host closed the connection)
2021-12-14 09:35:36 +0100LiaoTao(~LiaoTao@gateway/tor-sasl/liaotao)
2021-12-14 09:36:02 +0100Sgeo(~Sgeo@user/sgeo) (Read error: Connection reset by peer)
2021-12-14 09:36:02 +0100 <mjrosenb> yes. (!!) is the index operator, it asks for the 30th element in the list, which is 1
2021-12-14 09:36:07 +0100 <mjrosenb> since every element in the list is 1.
2021-12-14 09:36:12 +0100 <[itchyjunk]> ah
2021-12-14 09:36:34 +0100 <mjrosenb> ok, next step: how about a list that has the natural numbers?
2021-12-14 09:36:57 +0100eggplantade(~Eggplanta@2600:1700:bef1:5e10:158b:cfc1:e7b3:d4ac)
2021-12-14 09:37:57 +0100mncheck(~mncheck@193.224.205.254)
2021-12-14 09:38:54 +0100evocatus_(~evocatus@213.193.2.105)
2021-12-14 09:39:30 +0100evocatus_(~evocatus@213.193.2.105) (Remote host closed the connection)
2021-12-14 09:41:19 +0100eggplantade(~Eggplanta@2600:1700:bef1:5e10:158b:cfc1:e7b3:d4ac) (Ping timeout: 252 seconds)
2021-12-14 09:41:54 +0100evocatus(~evocatus@91.211.251.87) (Ping timeout: 268 seconds)
2021-12-14 09:43:40 +0100jgeerds(~jgeerds@55d4ac73.access.ecotel.net)
2021-12-14 09:44:31 +0100 <[itchyjunk]> Do i wanna take the last element, add one to it and add it back to the list?
2021-12-14 09:44:49 +0100 <[itchyjunk]> natList = n+1 : natList where n = 0 was the closest idea i had lol
2021-12-14 09:46:27 +0100 <mjrosenb> that will produce the same thing as simple, since n is always the same.
2021-12-14 09:48:02 +0100 <[itchyjunk]> right
2021-12-14 09:48:02 +0100tzh(~tzh@c-24-21-73-154.hsd1.or.comcast.net) (Quit: zzz)
2021-12-14 09:48:02 +0100kuribas(~user@ptr-25vy0i8khbpxjegyagx.18120a2.ip6.access.telenet.be)
2021-12-14 09:48:02 +0100 <[itchyjunk]> but i might be able to say where n is last thing in natList though.. I think
2021-12-14 09:48:24 +0100 <mjrosenb> so starting with `natList = 1 : natList`, the second element is wrong, since it is 1 rather than 2
2021-12-14 09:48:35 +0100 <mjrosenb> and you want to affect *every* element after the first
2021-12-14 09:48:43 +0100 <mjrosenb> how do you affect every element in a list?
2021-12-14 09:48:55 +0100machinedgod(~machinedg@24.105.81.50)
2021-12-14 09:49:21 +0100CiaoSen(~Jura@p200300c957347b002a3a4dfffe84dbd5.dip0.t-ipconnect.de)
2021-12-14 09:49:38 +0100 <[itchyjunk]> Hm, apply a function to each element of list? maybe with map
2021-12-14 09:50:01 +0100 <mjrosenb> sounds right.
2021-12-14 09:50:43 +0100 <[itchyjunk]> This seems to somehow compile and do something weird btw : natList = n+1 : natList where n = last natList
2021-12-14 09:51:05 +0100Inst(~Inst@2601:6c4:4080:3f80:7939:82b5:8236:6c32)
2021-12-14 09:51:10 +0100 <[itchyjunk]> When i run it, all I see is a `[`
2021-12-14 09:52:26 +0100 <mjrosenb> hah, yeah. taking the last element of an infinite list will take a while.
2021-12-14 09:52:35 +0100 <[itchyjunk]> ah
2021-12-14 09:54:22 +0100 <mjrosenb> so
2021-12-14 09:54:44 +0100 <mjrosenb> `natlist = 1 : ` is definitely correct. You have your base case; the first natural number is 1.
2021-12-14 09:55:12 +0100 <mjrosenb> and you want to continue from there, with something that will evaluate to [2,3,4,5...]
2021-12-14 09:55:43 +0100 <[itchyjunk]> yeah i was testing out how map works `map (+ 1) [1 .. 10] seems to do what i wanted
2021-12-14 09:56:09 +0100 <mjrosenb> but using a range is cheating :-p
2021-12-14 09:56:22 +0100 <mjrosenb> anyhow...
2021-12-14 09:56:28 +0100 <[itchyjunk]> that was for testing
2021-12-14 09:56:30 +0100 <[itchyjunk]> natList = 1 : map (+ 1) natList
2021-12-14 09:56:45 +0100CiaoSen(~Jura@p200300c957347b002a3a4dfffe84dbd5.dip0.t-ipconnect.de) (Ping timeout: 250 seconds)
2021-12-14 09:56:47 +0100 <mjrosenb> yup, that looks right.
2021-12-14 09:57:12 +0100 <[itchyjunk]> Hmm, I need to think this one through though. Does work
2021-12-14 09:58:37 +0100acidjnk(~acidjnk@p200300d0c7271e77ede7a7f9d267d612.dip0.t-ipconnect.de)
2021-12-14 09:58:37 +0100alx741(~alx741@157.100.93.160) (Read error: Connection reset by peer)
2021-12-14 09:59:24 +0100 <[itchyjunk]> Oh i think it makes sense.. just barely
2021-12-14 09:59:40 +0100 <[itchyjunk]> it hard to mentally follow along what is happening
2021-12-14 09:59:53 +0100 <mjrosenb> it... takes some getting used to
2021-12-14 10:00:04 +0100 <mjrosenb> but it is *very* illustrative
2021-12-14 10:00:17 +0100 <[itchyjunk]> ah, good to know there is a future where i will be used to it
2021-12-14 10:00:53 +0100 <mjrosenb> so, this is the natural numbers; nats 1 = 1; nats n = 1 + nats (n-1)
2021-12-14 10:01:17 +0100 <mjrosenb> we want the fibonacci numbers; fib 1 = 1; fib 2 = 1; fib n = fib (n-1) + fib (n-2)
2021-12-14 10:02:02 +0100 <mjrosenb> just by cargo culting, you can get something like `fibList = 1:1:...`
2021-12-14 10:02:15 +0100 <[itchyjunk]> lol tat's what i had
2021-12-14 10:02:35 +0100 <mjrosenb> but map isn't going to work, since the thing that is being applied isn't a constant, but instead varies depending on where you are in the list
2021-12-14 10:02:49 +0100 <mjrosenb> but, a quirk of this method is... you can't really tell where you are in the list.
2021-12-14 10:03:37 +0100abhixec(~abhixec@c-67-169-139-16.hsd1.ca.comcast.net) (Quit: leaving)
2021-12-14 10:04:01 +0100 <mjrosenb> so, I guess as another intermediate step, rather than the natural numbers, you can do the powers of two
2021-12-14 10:04:12 +0100 <mjrosenb> which comes in a simple flavor
2021-12-14 10:04:33 +0100 <mjrosenb> powTwoList = 1 : map (2*) powTwoList
2021-12-14 10:04:58 +0100 <mjrosenb> and, knowing that 2*x == x+x, a slightly stranger form
2021-12-14 10:05:18 +0100 <mjrosenb> powTwoList = 1 : zip (+) powTwoList powTwoList
2021-12-14 10:06:42 +0100 <[itchyjunk]> hmm
2021-12-14 10:10:17 +0100 <mjrosenb> err
2021-12-14 10:10:28 +0100 <mjrosenb> powTwoList = 1 : zipWith (+) powTwoList powTwoList
2021-12-14 10:10:30 +0100 <mjrosenb> sorry about that.
2021-12-14 10:12:39 +0100mikail(~mikail@2a02:c7f:bc1f:4a00:fc9:3da5:3e1e:8303)
2021-12-14 10:12:46 +0100 <int-e> > fix (scanl (+) 1)
2021-12-14 10:12:47 +0100 <lambdabot> [1,2,4,8,16,32,64,128,256,512,1024,2048,4096,8192,16384,32768,65536,131072,2...
2021-12-14 10:13:13 +0100 <[itchyjunk]> looks cheaty
2021-12-14 10:13:42 +0100 <int-e> > fix ((0:) . scanl (+) 1) -- this is the more famous twin
2021-12-14 10:13:44 +0100 <lambdabot> [0,1,1,2,3,5,8,13,21,34,55,89,144,233,377,610,987,1597,2584,4181,6765,10946,...
2021-12-14 10:13:52 +0100notzmv(~zmv@user/notzmv)
2021-12-14 10:14:23 +0100 <xerox> who wears a cool hat
2021-12-14 10:14:59 +0100alx741(~alx741@157.100.93.160)
2021-12-14 10:15:11 +0100 <mjrosenb> int-e: well, I guess that doesn't take away from the solution I was working towards at all :-p
2021-12-14 10:16:03 +0100 <int-e> mjrosenb: I hope you're aiming for the zip-based one
2021-12-14 10:16:41 +0100 <int-e> I would always start at F_0 = 0 though.
2021-12-14 10:16:47 +0100 <mjrosenb> well, I did have zipWith in the last definition I gave :-)
2021-12-14 10:17:18 +0100 <mjrosenb> any reason?
2021-12-14 10:17:36 +0100 <mjrosenb> I know why I don't like it, but it is a dumb reason.
2021-12-14 10:18:29 +0100 <mjrosenb> actually, technically, I don't even like starting with two ones; 1:2:3:5:8...
2021-12-14 10:18:42 +0100 <mjrosenb> but that seems to upset people too much.
2021-12-14 10:18:50 +0100 <int-e> mjrosenb: yes, there is a reason: F_0 = 0 ensures that F_n | F_m when n | m
2021-12-14 10:19:14 +0100cosimone`(~user@2001:b07:ae5:db26:a7aa:8027:6b4e:2fb3)
2021-12-14 10:20:34 +0100cosimone(~user@93-47-231-203.ip115.fastwebnet.it) (Ping timeout: 256 seconds)
2021-12-14 10:21:39 +0100 <mjrosenb> is that n divides evenly into m?
2021-12-14 10:21:45 +0100 <int-e> yes
2021-12-14 10:22:23 +0100 <mjrosenb> that makes sense.
2021-12-14 10:22:35 +0100madjestic(~madjestic@88-159-247-120.fixed.kpn.net)
2021-12-14 10:23:29 +0100 <mjrosenb> I like [1,2,3,5...] because every integer can be uniquely represented as a sum of non-consecutive fibonacci numbers
2021-12-14 10:23:41 +0100 <mjrosenb> but including a second 1 and a 0 breaks that.
2021-12-14 10:24:49 +0100 <int-e> Oh the Zeckendorf thing.
2021-12-14 10:27:34 +0100 <mjrosenb> is F_0 = 0 required for gcd(F_n, F_m) = F_gcd(n,m)?
2021-12-14 10:28:40 +0100 <int-e> Yes. (If you take n = 0 then this becomes gcd(F_0, F_m) = F_m)
2021-12-14 10:29:34 +0100alx741(~alx741@157.100.93.160) (Read error: Connection reset by peer)
2021-12-14 10:31:26 +0100gehmehgeh(~user@user/gehmehgeh)
2021-12-14 10:32:04 +0100mikail(~mikail@2a02:c7f:bc1f:4a00:fc9:3da5:3e1e:8303) (Remote host closed the connection)
2021-12-14 10:32:28 +0100mikail(~mikail@2a02:c7f:bc1f:4a00:fc9:3da5:3e1e:8303)
2021-12-14 10:32:29 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 250 seconds)
2021-12-14 10:32:41 +0100[itchyjunk](~itchyjunk@user/itchyjunk/x-7353470) (Read error: Connection reset by peer)
2021-12-14 10:36:06 +0100statusbot4(~statusbot@ec2-34-198-122-184.compute-1.amazonaws.com)
2021-12-14 10:36:59 +0100SquidDev9(~SquidDev@autoclave.squiddev.cc)
2021-12-14 10:37:24 +0100darkstarx(~darkstard@50.39.115.145)
2021-12-14 10:37:44 +0100remedan_(~remedan@balak.me)
2021-12-14 10:37:55 +0100tubogram4(~tubogram@user/tubogram)
2021-12-14 10:38:03 +0100feliix42_(~felix@gibbs.uberspace.de)
2021-12-14 10:38:15 +0100SquidDev(~SquidDev@autoclave.squiddev.cc) (Killed (NickServ (GHOST command used by SquidDev9)))
2021-12-14 10:38:17 +0100eL_Bart0(eL_Bart0@dietunichtguten.org)
2021-12-14 10:38:21 +0100SquidDev9SquidDev
2021-12-14 10:38:44 +0100derelict(derelict@user/derelict)
2021-12-14 10:38:44 +0100Athas_(athas@2a01:7c8:aaac:1cf:fd6:8489:d8da:43d)
2021-12-14 10:38:55 +0100greyrat(~greyrat@ip202.ip-51-178-215.eu)
2021-12-14 10:39:48 +0100 <mjrosenb> hrm, so far, I'm unimpressed with lsp-mode
2021-12-14 10:39:55 +0100Logio_(em@kapsi.fi)
2021-12-14 10:39:58 +0100jzsinatr2(~jzsinatra@88-114-238-31.elisa-laajakaista.fi)
2021-12-14 10:39:59 +0100madjestic(~madjestic@88-159-247-120.fixed.kpn.net) (Ping timeout: 252 seconds)
2021-12-14 10:40:05 +0100haveo_(~haveo@sl35.iuwt.fr)
2021-12-14 10:40:05 +0100 <mjrosenb> I kind of suspect I don't have it set up correctly.
2021-12-14 10:40:12 +0100td__(~td@muedsl-82-207-238-255.citykom.de)
2021-12-14 10:40:14 +0100hltk_(~hltk@hltk.fi)
2021-12-14 10:40:15 +0100_ht_(~quassel@82-169-194-8.biz.kpn.net)
2021-12-14 10:40:20 +0100kritzefitz_(~kritzefit@debian/kritzefitz)
2021-12-14 10:40:20 +0100Techcable_(~Techcable@168.235.93.147)
2021-12-14 10:40:25 +0100mjacob_(~mjacob@adrastea.uberspace.de)
2021-12-14 10:40:26 +0100bens_(~bens@www.typius.com)
2021-12-14 10:40:44 +0100ft_(~ft@shell.chaostreff-dortmund.de)
2021-12-14 10:40:55 +0100Megant_(megant@user/megant)
2021-12-14 10:41:01 +0100mstksg(~jle`@cpe-23-240-75-236.socal.res.rr.com)
2021-12-14 10:41:03 +0100gentauro_(~gentauro@185.107.12.141)
2021-12-14 10:41:05 +0100dfordvm(~dfordivam@tk2-219-19469.vs.sakura.ne.jp)
2021-12-14 10:41:07 +0100jjhoo_(~jahakala@user/jjhoo)
2021-12-14 10:41:11 +0100peutri_(~peutri@ns317027.ip-94-23-46.eu)
2021-12-14 10:41:13 +0100[exa]_(exa@srv3.blesmrt.net)
2021-12-14 10:41:22 +0100gdd1(~gdd@129.199.146.230)
2021-12-14 10:41:23 +0100takuan_dozo(~takuan@178-116-218-225.access.telenet.be)
2021-12-14 10:41:23 +0100jlamothe_(~jlamothe@198.251.61.229)
2021-12-14 10:41:25 +0100sweater1(~sweater@206.81.18.26)
2021-12-14 10:41:28 +0100pie_(~pie_bnc@user/pie/x-2818909)
2021-12-14 10:41:43 +0100finstern1s(~X@23.226.237.192)
2021-12-14 10:41:49 +0100aweinsto1k(~aweinstoc@cpe-67-248-65-250.nycap.res.rr.com)
2021-12-14 10:41:55 +0100kritzefitz_unaut(~kritzefit@fw-front.credativ.com)
2021-12-14 10:42:08 +0100kritzefitz_unaut(~kritzefit@fw-front.credativ.com) ()
2021-12-14 10:43:06 +0100kritzefitz(~kritzefit@debian/kritzefitz) (Killed (lithium.libera.chat (Nickname regained by services)))
2021-12-14 10:43:06 +0100kritzefitz_kritzefitz
2021-12-14 10:43:13 +0100pavonia(~user@user/siracusa) (Read error: Connection reset by peer)
2021-12-14 10:44:36 +0100adamCS_(~adamCS@ec2-34-207-160-255.compute-1.amazonaws.com)
2021-12-14 10:44:45 +0100dka_(~code-is-a@ns3059207.ip-193-70-33.eu)
2021-12-14 10:44:52 +0100cyphase_eviltwin(~cyphase@user/cyphase)
2021-12-14 10:45:56 +0100alx741(~alx741@157.100.93.160)
2021-12-14 10:46:22 +0100[exa]_(exa@srv3.blesmrt.net) (Changing host)
2021-12-14 10:46:22 +0100[exa]_(exa@user/exa/x-3587197)
2021-12-14 10:46:40 +0100[exa](~exa@user/exa/x-3587197) (Killed (calcium.libera.chat (Nickname regained by services)))
2021-12-14 10:46:40 +0100[exa]_[exa]
2021-12-14 10:46:44 +0100InternetCitizen(~fuzzypixe@eth-west-pareq2-46-193-4-100.wb.wifirst.net) (*.net *.split)
2021-12-14 10:46:44 +0100cfricke(~cfricke@user/cfricke) (*.net *.split)
2021-12-14 10:46:44 +0100_ht(~quassel@82-169-194-8.biz.kpn.net) (*.net *.split)
2021-12-14 10:46:44 +0100deadmarshal(~deadmarsh@95.38.230.166) (*.net *.split)
2021-12-14 10:46:44 +0100takuan(~takuan@178-116-218-225.access.telenet.be) (*.net *.split)
2021-12-14 10:46:44 +0100td_(~td@muedsl-82-207-238-255.citykom.de) (*.net *.split)
2021-12-14 10:46:44 +0100mjacob(~mjacob@adrastea.uberspace.de) (*.net *.split)
2021-12-14 10:46:44 +0100cheater(~Username@user/cheater) (*.net *.split)
2021-12-14 10:46:44 +0100dsrt^(~dsrt@wsip-98-188-240-142.mc.at.cox.net) (*.net *.split)
2021-12-14 10:46:44 +0100paddymahoney(~paddymaho@cpe9050ca207f83-cm9050ca207f80.cpe.net.cable.rogers.com) (*.net *.split)
2021-12-14 10:46:44 +0100kmein(~weechat@user/kmein) (*.net *.split)
2021-12-14 10:46:44 +0100gdd(~gdd@129.199.146.230) (*.net *.split)
2021-12-14 10:46:44 +0100Alex_test(~al_test@178.34.163.33) (*.net *.split)
2021-12-14 10:46:44 +0100AlexZenon(~alzenon@178.34.163.33) (*.net *.split)
2021-12-14 10:46:44 +0100Techcable(~Techcable@168.235.93.147) (*.net *.split)
2021-12-14 10:46:44 +0100tubogram(~tubogram@user/tubogram) (*.net *.split)
2021-12-14 10:46:44 +0100darkstardevx(~darkstard@50.39.115.145) (*.net *.split)
2021-12-14 10:46:44 +0100danso(~danso@23-233-111-52.cpe.pppoe.ca) (*.net *.split)
2021-12-14 10:46:44 +0100joo-_(~joo-_@fsf/member/joo--) (*.net *.split)
2021-12-14 10:46:44 +0100Digit(~user@user/digit) (*.net *.split)
2021-12-14 10:46:44 +0100jle`(~jle`@cpe-23-240-75-236.socal.res.rr.com) (*.net *.split)
2021-12-14 10:46:44 +0100nek0(~nek0@nek0.eu) (*.net *.split)
2021-12-14 10:46:44 +0100Megant(megant@user/megant) (*.net *.split)
2021-12-14 10:46:44 +0100sweater(~sweater@206.81.18.26) (*.net *.split)
2021-12-14 10:46:44 +0100dwt_(~dwt_@c-98-198-103-176.hsd1.tx.comcast.net) (*.net *.split)
2021-12-14 10:46:44 +0100Flonk(~Flonk@vps-zap441517-1.zap-srv.com) (*.net *.split)
2021-12-14 10:46:44 +0100noctux(~noctux@user/noctux) (*.net *.split)
2021-12-14 10:46:44 +0100feliix42(~felix@gibbs.uberspace.de) (*.net *.split)
2021-12-14 10:46:44 +0100cyphase(~cyphase@user/cyphase) (*.net *.split)
2021-12-14 10:46:44 +0100ezzieyguywuf(~Unknown@user/ezzieyguywuf) (*.net *.split)
2021-12-14 10:46:44 +0100Hecate(~mariposa@user/hecate) (*.net *.split)
2021-12-14 10:46:44 +0100remedan(~remedan@balak.me) (*.net *.split)
2021-12-14 10:46:45 +0100ft(~ft@shell.chaostreff-dortmund.de) (*.net *.split)
2021-12-14 10:46:45 +0100drewolson(~drewolson@user/drewolson) (*.net *.split)
2021-12-14 10:46:45 +0100PigDude(~PigDude@159.203.16.199) (*.net *.split)
2021-12-14 10:46:45 +0100aweinstock(~aweinstoc@cpe-67-248-65-250.nycap.res.rr.com) (*.net *.split)
2021-12-14 10:46:45 +0100hrdl(~hrdl@mail.hrdl.eu) (*.net *.split)
2021-12-14 10:46:45 +0100jlamothe(~jlamothe@198.251.61.229) (*.net *.split)
2021-12-14 10:46:45 +0100lambdabot(~lambdabot@haskell/bot/lambdabot) (*.net *.split)
2021-12-14 10:46:45 +0100gentauro(~gentauro@user/gentauro) (*.net *.split)
2021-12-14 10:46:45 +0100Logio(em@kapsi.fi) (*.net *.split)
2021-12-14 10:46:45 +0100niko(~niko@libera/staff/niko) (*.net *.split)
2021-12-14 10:46:45 +0100nisstyre(~wes@user/nisstyre) (*.net *.split)
2021-12-14 10:46:45 +0100pragma-(~chaos@user/pragmatic-chaos) (*.net *.split)
2021-12-14 10:46:45 +0100dka(~code-is-a@ns3059207.ip-193-70-33.eu) (*.net *.split)
2021-12-14 10:46:45 +0100hltk(~hltk@hltk.fi) (*.net *.split)
2021-12-14 10:46:45 +0100pie__(~pie_bnc@user/pie/x-2818909) (*.net *.split)
2021-12-14 10:46:45 +0100dfordivam1(~dfordivam@tk2-219-19469.vs.sakura.ne.jp) (*.net *.split)
2021-12-14 10:46:45 +0100greyrat_(~greyrat@ip202.ip-51-178-215.eu) (*.net *.split)
2021-12-14 10:46:45 +0100eL_Bart0-(eL_Bart0@dietunichtguten.org) (*.net *.split)
2021-12-14 10:46:45 +0100jzsinatra(~jzsinatra@88-114-238-31.elisa-laajakaista.fi) (*.net *.split)
2021-12-14 10:46:45 +0100statusbot(~statusbot@ec2-34-198-122-184.compute-1.amazonaws.com) (*.net *.split)
2021-12-14 10:46:45 +0100peutri(~peutri@ns317027.ip-94-23-46.eu) (*.net *.split)
2021-12-14 10:46:45 +0100ikke(~kevin@alpine/developer/ikke) (*.net *.split)
2021-12-14 10:46:45 +0100Athas(athas@sigkill.dk) (*.net *.split)
2021-12-14 10:46:45 +0100haveo(~haveo@sl35.iuwt.fr) (*.net *.split)
2021-12-14 10:46:45 +0100bens(~bens@www.typius.com) (*.net *.split)
2021-12-14 10:46:45 +0100jjhoo(~jahakala@user/jjhoo) (*.net *.split)
2021-12-14 10:46:45 +0100finsternis(~X@23.226.237.192) (*.net *.split)
2021-12-14 10:46:45 +0100yahb(xsbot@user/mniip/bot/yahb) (*.net *.split)
2021-12-14 10:46:45 +0100tetrahedron(~derelict@user/derelict) (*.net *.split)
2021-12-14 10:46:46 +0100asm(~alexander@user/asm) (*.net *.split)
2021-12-14 10:46:46 +0100adamCS(~adamCS@ec2-34-207-160-255.compute-1.amazonaws.com) (*.net *.split)
2021-12-14 10:46:46 +0100tubogram4tubogram
2021-12-14 10:46:46 +0100ft_ft
2021-12-14 10:46:46 +0100adamCS_adamCS
2021-12-14 10:46:56 +0100dsrt^(~dsrt@wsip-98-188-240-142.mc.at.cox.net)
2021-12-14 10:47:27 +0100yahb(xsbot@user/mniip/bot/yahb)
2021-12-14 10:48:05 +0100max22-(~maxime@lfbn-ren-1-762-224.w81-53.abo.wanadoo.fr) (Ping timeout: 250 seconds)
2021-12-14 10:48:29 +0100pavonia(~user@user/siracusa)
2021-12-14 10:51:51 +0100AlexZenon(~alzenon@178.34.163.33)
2021-12-14 10:51:51 +0100Alex_test(~al_test@178.34.163.33)
2021-12-14 10:51:51 +0100InternetCitizen(~fuzzypixe@eth-west-pareq2-46-193-4-100.wb.wifirst.net)
2021-12-14 10:51:51 +0100deadmarshal(~deadmarsh@95.38.230.166)
2021-12-14 10:51:51 +0100cheater(~Username@user/cheater)
2021-12-14 10:51:51 +0100kmein(~weechat@user/kmein)
2021-12-14 10:51:51 +0100joo-_(~joo-_@fsf/member/joo--)
2021-12-14 10:51:51 +0100Digit(~user@user/digit)
2021-12-14 10:51:51 +0100nek0(~nek0@nek0.eu)
2021-12-14 10:51:51 +0100dwt_(~dwt_@c-98-198-103-176.hsd1.tx.comcast.net)
2021-12-14 10:51:51 +0100Flonk(~Flonk@vps-zap441517-1.zap-srv.com)
2021-12-14 10:51:51 +0100drewolson(~drewolson@user/drewolson)
2021-12-14 10:51:51 +0100PigDude(~PigDude@159.203.16.199)
2021-12-14 10:51:51 +0100hrdl(~hrdl@mail.hrdl.eu)
2021-12-14 10:51:51 +0100lambdabot(~lambdabot@haskell/bot/lambdabot)
2021-12-14 10:51:51 +0100niko(~niko@libera/staff/niko)
2021-12-14 10:51:51 +0100nisstyre(~wes@user/nisstyre)
2021-12-14 10:52:25 +0100noctux(~noctux@user/noctux)
2021-12-14 10:53:06 +0100asm(~alexander@burner.asm89.io)
2021-12-14 10:53:36 +0100pragma-(~chaos@user/pragmatic-chaos)
2021-12-14 10:53:38 +0100paddymahoney(~paddymaho@cpe9050ca207f83-cm9050ca207f80.cpe.net.cable.rogers.com)
2021-12-14 10:53:39 +0100cfricke(~cfricke@user/cfricke)
2021-12-14 10:53:39 +0100teo(~teo@user/teo)
2021-12-14 10:53:40 +0100danso(~danso@23-233-111-52.cpe.pppoe.ca)
2021-12-14 10:53:53 +0100ikke(~kevin@alpine/developer/ikke)
2021-12-14 10:53:55 +0100nfd(~nfd@user/nfd) (Ping timeout: 252 seconds)
2021-12-14 10:59:43 +0100alx741(~alx741@157.100.93.160) (Read error: Connection reset by peer)
2021-12-14 11:00:14 +0100joo-_(~joo-_@fsf/member/joo--) (Ping timeout: 256 seconds)
2021-12-14 11:02:08 +0100joo-_(~joo-_@87-49-45-77-mobile.dk.customer.tdc.net)
2021-12-14 11:02:08 +0100joo-_(~joo-_@87-49-45-77-mobile.dk.customer.tdc.net) (Changing host)
2021-12-14 11:02:08 +0100joo-_(~joo-_@fsf/member/joo--)
2021-12-14 11:08:57 +0100lortabac(~lortabac@2a01:e0a:541:b8f0:2c0a:74d4:9496:54f1) (Ping timeout: 252 seconds)
2021-12-14 11:09:09 +0100kjak(~kjak@pool-108-45-56-21.washdc.fios.verizon.net)
2021-12-14 11:15:02 +0100Lord_of_Life(~Lord@user/lord-of-life/x-2819915) (Ping timeout: 240 seconds)
2021-12-14 11:15:06 +0100Lord_of_Life_(~Lord@user/lord-of-life/x-2819915)
2021-12-14 11:15:51 +0100Whatever009(~fuzzypixe@tchebychev.ensimag.fr)
2021-12-14 11:15:58 +0100alx741(~alx741@157.100.93.160)
2021-12-14 11:16:07 +0100InternetCitizen(~fuzzypixe@eth-west-pareq2-46-193-4-100.wb.wifirst.net) (Ping timeout: 256 seconds)
2021-12-14 11:16:20 +0100lortabac(~lortabac@2a01:e0a:541:b8f0:2a7d:20d:33d5:1d47)
2021-12-14 11:17:00 +0100mc47(~mc47@xmonad/TheMC47)
2021-12-14 11:17:56 +0100Lord_of_Life_Lord_of_Life
2021-12-14 11:24:42 +0100CiaoSen(~Jura@p200300c957347b002a3a4dfffe84dbd5.dip0.t-ipconnect.de)
2021-12-14 11:25:09 +0100cfricke(~cfricke@user/cfricke) (Ping timeout: 265 seconds)
2021-12-14 11:28:01 +0100jjhoo_jjhoo
2021-12-14 11:30:25 +0100alx741(~alx741@157.100.93.160) (Read error: Connection reset by peer)
2021-12-14 11:33:38 +0100mmhat(~mmh@55d46318.access.ecotel.net)
2021-12-14 11:36:50 +0100Gurkenglas(~Gurkengla@dslb-002-203-144-204.002.203.pools.vodafone-ip.de)
2021-12-14 11:43:37 +0100mikail(~mikail@2a02:c7f:bc1f:4a00:fc9:3da5:3e1e:8303) (Quit: Leaving)
2021-12-14 11:44:00 +0100Inst(~Inst@2601:6c4:4080:3f80:7939:82b5:8236:6c32) (Remote host closed the connection)
2021-12-14 11:44:11 +0100mikail(~mikail@2a02:c7f:bc1f:4a00:fc9:3da5:3e1e:8303)
2021-12-14 11:44:18 +0100Inst(~Inst@2601:6c4:4080:3f80:7939:82b5:8236:6c32)
2021-12-14 11:45:42 +0100mikail(~mikail@2a02:c7f:bc1f:4a00:fc9:3da5:3e1e:8303) (Client Quit)
2021-12-14 11:46:29 +0100mikail(~mikail@2a02:c7f:bc1f:4a00:fc9:3da5:3e1e:8303)
2021-12-14 11:46:43 +0100Unhammer(~Unhammer@user/unhammer) (Ping timeout: 252 seconds)
2021-12-14 11:46:55 +0100alx741(~alx741@157.100.93.160)
2021-12-14 11:54:30 +0100Erutuon(~Erutuon@user/erutuon) (Ping timeout: 268 seconds)
2021-12-14 11:54:53 +0100pretty_dumm_guy(trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655)
2021-12-14 11:55:16 +0100mikail(~mikail@2a02:c7f:bc1f:4a00:fc9:3da5:3e1e:8303) (Quit: Leaving)
2021-12-14 11:55:43 +0100SummerSonw(~The_viole@203.77.49.232) (Ping timeout: 268 seconds)
2021-12-14 11:55:43 +0100alx741(~alx741@157.100.93.160) (Read error: Connection reset by peer)
2021-12-14 11:56:17 +0100DNH(~DNH@2a02:8108:1100:16d8:f5a3:3a61:fbe9:f021)
2021-12-14 11:57:00 +0100dschrempf(~dominik@070-207.dynamic.dsl.fonira.net) (Quit: WeeChat 3.3)
2021-12-14 11:57:51 +0100SummerSonw(~The_viole@203.77.49.232)
2021-12-14 12:00:03 +0100zincy_(~zincy@2a00:23c8:970c:4801:4508:9275:13c9:2a0)
2021-12-14 12:00:46 +0100Unhammer(~Unhammer@user/unhammer)
2021-12-14 12:05:11 +0100max22-(~maxime@2a01cb08833598008d643fe4ea2e3b05.ipv6.abo.wanadoo.fr)
2021-12-14 12:07:04 +0100cfricke(~cfricke@user/cfricke)
2021-12-14 12:07:18 +0100zincy_(~zincy@2a00:23c8:970c:4801:4508:9275:13c9:2a0) (Remote host closed the connection)
2021-12-14 12:07:20 +0100__monty__(~toonn@user/toonn)
2021-12-14 12:07:21 +0100lavaman(~lavaman@98.38.249.169)
2021-12-14 12:07:45 +0100Athas_Athas
2021-12-14 12:11:32 +0100lavaman(~lavaman@98.38.249.169) (Ping timeout: 240 seconds)
2021-12-14 12:11:57 +0100alx741(~alx741@157.100.93.160)
2021-12-14 12:12:49 +0100CiaoSen(~Jura@p200300c957347b002a3a4dfffe84dbd5.dip0.t-ipconnect.de) (Ping timeout: 250 seconds)
2021-12-14 12:17:19 +0100madjestic(~madjestic@88-159-247-120.fixed.kpn.net)
2021-12-14 12:19:46 +0100Vajb(~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi) (Read error: Connection reset by peer)
2021-12-14 12:21:14 +0100Vajb(~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi)
2021-12-14 12:22:41 +0100alx741(~alx741@157.100.93.160) (Read error: Connection reset by peer)
2021-12-14 12:29:02 +0100Whatever009(~fuzzypixe@tchebychev.ensimag.fr) (Ping timeout: 240 seconds)
2021-12-14 12:29:17 +0100jgeerds(~jgeerds@55d4ac73.access.ecotel.net) (Ping timeout: 250 seconds)
2021-12-14 12:29:26 +0100fr33domlover(~fr33@2.55.170.123) (Ping timeout: 265 seconds)
2021-12-14 12:29:35 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-12-14 12:30:05 +0100Whatever009(~fuzzypixe@eth-west-pareq2-46-193-4-100.wb.wifirst.net)
2021-12-14 12:31:00 +0100fr33domlover(~fr33@2.55.142.29)
2021-12-14 12:36:38 +0100xkuru(~xkuru@user/xkuru)
2021-12-14 12:36:47 +0100Hecate(~mariposa@163.172.211.189)
2021-12-14 12:37:30 +0100lbseale_(~ep1ctetus@user/ep1ctetus)
2021-12-14 12:38:02 +0100lbseale(~ep1ctetus@user/ep1ctetus) (Ping timeout: 240 seconds)
2021-12-14 12:39:06 +0100cfricke(~cfricke@user/cfricke) (Quit: WeeChat 3.3)
2021-12-14 12:39:16 +0100cfricke(~cfricke@user/cfricke)
2021-12-14 12:40:37 +0100alx741(~alx741@157.100.93.160)
2021-12-14 12:40:48 +0100johnw(~johnw@2607:f6f0:3004:1:c8b4:50ff:fef8:6bf0) (Read error: Connection reset by peer)
2021-12-14 12:41:04 +0100ThC27(ThC27@gateway/vpn/protonvpn/thc27)
2021-12-14 12:41:43 +0100Akiva(~Akiva@user/Akiva) (Ping timeout: 252 seconds)
2021-12-14 12:42:30 +0100johnw(~johnw@76-234-69-149.lightspeed.frokca.sbcglobal.net)
2021-12-14 12:46:17 +0100joo-_(~joo-_@fsf/member/joo--) (Quit: leaving)
2021-12-14 12:46:34 +0100joo-_(~joo-_@87-49-45-77-mobile.dk.customer.tdc.net)
2021-12-14 12:46:34 +0100joo-_(~joo-_@87-49-45-77-mobile.dk.customer.tdc.net) (Changing host)
2021-12-14 12:46:34 +0100joo-_(~joo-_@fsf/member/joo--)
2021-12-14 12:49:47 +0100Whatever009(~fuzzypixe@eth-west-pareq2-46-193-4-100.wb.wifirst.net) (Ping timeout: 252 seconds)
2021-12-14 12:53:46 +0100pfurla_(~pfurla@177.79.122.168)
2021-12-14 12:57:07 +0100pfurla(~pfurla@177.25.178.222) (Ping timeout: 252 seconds)
2021-12-14 12:58:10 +0100raehik(~raehik@cpc144538-stap14-2-0-cust361.12-2.cable.virginm.net)
2021-12-14 13:00:36 +0100aweinsto1kaweinstock
2021-12-14 13:03:46 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds)
2021-12-14 13:04:53 +0100asm(~alexander@burner.asm89.io) (Changing host)
2021-12-14 13:04:53 +0100asm(~alexander@user/asm)
2021-12-14 13:06:36 +0100SummerSonw(~The_viole@203.77.49.232) (Ping timeout: 256 seconds)
2021-12-14 13:08:55 +0100alx741(~alx741@157.100.93.160) (Read error: Connection reset by peer)
2021-12-14 13:10:15 +0100canta(~canta@user/canta) (Quit: WeeChat 2.8)
2021-12-14 13:13:14 +0100curiousgay(~curiousga@77-120-141-90.kha.volia.net)
2021-12-14 13:25:54 +0100alx741(~alx741@157.100.93.160)
2021-12-14 13:26:43 +0100jgeerds(~jgeerds@55d4ac73.access.ecotel.net)
2021-12-14 13:35:15 +0100bitdex(~bitdex@gateway/tor-sasl/bitdex) (Quit: = "")
2021-12-14 13:38:23 +0100 <dminuoso> Is there a way to protect myself against a cabal package on hackage being replaced?
2021-12-14 13:38:34 +0100alx741(~alx741@157.100.93.160) (Read error: Connection reset by peer)
2021-12-14 13:38:59 +0100Dansk31(~Dansk31@147.114.141.88.rev.sfr.net)
2021-12-14 13:39:14 +0100Dansk31(~Dansk31@147.114.141.88.rev.sfr.net) (Client Quit)
2021-12-14 13:39:40 +0100 <dminuoso> If memory serves right, hackage in principle allows some people to replace a package
2021-12-14 13:41:18 +0100ThC27(ThC27@gateway/vpn/protonvpn/thc27) (Quit: ThC27)
2021-12-14 13:44:44 +0100 <hpc> i think the best protection is to keep the package actively maintained
2021-12-14 13:45:49 +0100 <hpc> it will never be "impossible" to replace a hackage package, as long as the reason is good enough
2021-12-14 13:52:49 +0100Hecate(~mariposa@163.172.211.189) (Changing host)
2021-12-14 13:52:49 +0100Hecate(~mariposa@user/hecate)
2021-12-14 13:55:02 +0100alx741(~alx741@157.100.93.160)
2021-12-14 13:58:40 +0100econo(uid147250@user/econo) (Quit: Connection closed for inactivity)
2021-12-14 13:59:29 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-12-14 14:03:38 +0100max22-(~maxime@2a01cb08833598008d643fe4ea2e3b05.ipv6.abo.wanadoo.fr) (Ping timeout: 260 seconds)
2021-12-14 14:05:53 +0100alx741(~alx741@157.100.93.160) (Read error: Connection reset by peer)
2021-12-14 14:08:00 +0100 <dminuoso> Sure, I dont mind that part as much
2021-12-14 14:08:10 +0100 <dminuoso> But cabal has no way of pinning the hash, right?
2021-12-14 14:08:17 +0100chomwitt(~chomwitt@2a02:587:dc0d:3700:12c3:7bff:fe6d:d374)
2021-12-14 14:08:21 +0100 <dminuoso> It seems the best way would be to vendor all dependencies
2021-12-14 14:08:38 +0100altern(~Sergii@altern.corbina.com.ua)
2021-12-14 14:08:52 +0100 <dminuoso> Incidentally, if you vendor them, you get to actually observe and use `git diff` each time a package is updated. Makes auditing changes in your transitive dependency graph easier. :)
2021-12-14 14:09:52 +0100 <dminuoso> And it keeps my build really deterministic, irrespective of whether a compromised or evil hackage admin decides to hijack `containers`
2021-12-14 14:09:56 +0100 <merijn> dminuoso: If you use source-repositories you can pin to specific git commits
2021-12-14 14:10:20 +0100 <dminuoso> merijn: I felt this feature has quite poor UX
2021-12-14 14:10:28 +0100 <dminuoso> I still have a bad taste in my mouth of it.
2021-12-14 14:10:31 +0100 <merijn> dminuoso: tbh, freeze files pinning a specific version should have the same effect, since versions do have hashes in the cabal index
2021-12-14 14:10:38 +0100deadmarshal(~deadmarsh@95.38.230.166) (Ping timeout: 256 seconds)
2021-12-14 14:10:39 +0100 <merijn> dminuoso: How so?
2021-12-14 14:11:03 +0100 <dminuoso> So first, it relies on the git repository still being available. Every now and then I find packages whose upstream git/mercurial repo has just vanished
2021-12-14 14:11:35 +0100 <merijn> dminuoso: Well, pin to repos you control (which can just be mirrors of upstream)
2021-12-14 14:11:53 +0100 <merijn> That doesn't sound like a UX issue
2021-12-14 14:12:03 +0100 <dminuoso> merijn: I think it might be much easier to instrument cabal to vendor all libraries, rather than to fork all repositories
2021-12-14 14:12:34 +0100 <dminuoso> merijn: I found it interefered with caching in strange ways.
2021-12-14 14:13:00 +0100 <dminuoso> There are bugs I still cant reliably reproduce that would leave me with stale dist-newstyle/ in very odd scenarios, and they always occured when I used source-repositories
2021-12-14 14:13:09 +0100 <dminuoso> s/always/only/
2021-12-14 14:13:41 +0100SIben(~SIben@ns3106586.ip-5-135-191.eu) (Ping timeout: 245 seconds)
2021-12-14 14:22:07 +0100alx741(~alx741@157.100.93.160)
2021-12-14 14:22:07 +0100slowButPresent(~slowButPr@user/slowbutpresent)
2021-12-14 14:23:38 +0100coot(~coot@89-64-85-93.dynamic.chello.pl) (Quit: coot)
2021-12-14 14:24:04 +0100coot(~coot@89-64-85-93.dynamic.chello.pl)
2021-12-14 14:26:11 +0100son0p(~ff@2800:484:1d81:b700::4) (Ping timeout: 268 seconds)
2021-12-14 14:36:30 +0100max22-(~maxime@2a01cb08833598001d6a33d2fe2bc13e.ipv6.abo.wanadoo.fr)
2021-12-14 14:39:24 +0100alx741(~alx741@157.100.93.160) (Read error: Connection reset by peer)
2021-12-14 14:39:43 +0100jgeerds(~jgeerds@55d4ac73.access.ecotel.net) (Ping timeout: 250 seconds)
2021-12-14 14:41:47 +0100eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
2021-12-14 14:41:52 +0100CiaoSen(~Jura@p200300c957347b002a3a4dfffe84dbd5.dip0.t-ipconnect.de)
2021-12-14 14:42:38 +0100 <neverwas> mjrosenb, what problems were you seeing with lsp? I tried setting it up recently as well and ran into a few sore spots. for example, it gets in an inconsistent state where the snippet sent for diagnosis will be elided
2021-12-14 14:43:00 +0100 <neverwas> as in corrupted by virtue of being sent too early (i think).
2021-12-14 14:43:13 +0100 <neverwas> so what the server sees is somehow "stale" while the live text in the buffer may be fine but gets underlined as being faulty anyway.
2021-12-14 14:43:58 +0100 <neverwas> To be clear, this is lsp-mode (not eglot), and the version I'm running is likely a few weeks old (or more)
2021-12-14 14:45:46 +0100ezzieyguywuf(~Unknown@user/ezzieyguywuf)
2021-12-14 14:46:02 +0100eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 240 seconds)
2021-12-14 14:56:15 +0100alx741(~alx741@157.100.93.160)
2021-12-14 14:56:41 +0100ian`(~user@ool-45779fe5.dyn.optonline.net)
2021-12-14 14:56:44 +0100ian`Guest999
2021-12-14 14:57:01 +0100Guest999bontaq
2021-12-14 15:04:59 +0100shriekingnoise(~shrieking@186.137.144.80)
2021-12-14 15:05:08 +0100SIben(~SIben@ns3106586.ip-5-135-191.eu)
2021-12-14 15:05:43 +0100max22-(~maxime@2a01cb08833598001d6a33d2fe2bc13e.ipv6.abo.wanadoo.fr) (Ping timeout: 250 seconds)
2021-12-14 15:07:01 +0100xff0x(~xff0x@2001:1a81:5283:7b00:6c74:59db:ccc0:34d8) (Ping timeout: 240 seconds)
2021-12-14 15:07:19 +0100[itchyjunk](~itchyjunk@user/itchyjunk/x-7353470)
2021-12-14 15:08:10 +0100xff0x(~xff0x@2001:1a81:5283:7b00:180c:adc:91b3:927a)
2021-12-14 15:14:11 +0100deadmarshal(~deadmarsh@95.38.230.166)
2021-12-14 15:16:36 +0100ub(~Thunderbi@p200300ecdf1abbee153a2c4097e8e97e.dip0.t-ipconnect.de)
2021-12-14 15:21:57 +0100CiaoSen(~Jura@p200300c957347b002a3a4dfffe84dbd5.dip0.t-ipconnect.de) (Ping timeout: 250 seconds)
2021-12-14 15:23:20 +0100chexum_(~quassel@gateway/tor-sasl/chexum) (Remote host closed the connection)
2021-12-14 15:23:32 +0100chexum(~quassel@gateway/tor-sasl/chexum)
2021-12-14 15:23:32 +0100alx741(~alx741@157.100.93.160) (Read error: Connection reset by peer)
2021-12-14 15:31:11 +0100CiaoSen(~Jura@p200300c957347b002a3a4dfffe84dbd5.dip0.t-ipconnect.de)
2021-12-14 15:39:57 +0100burnsidesLlama(~burnsides@dhcp168-019.wadham.ox.ac.uk)
2021-12-14 15:40:07 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-12-14 15:40:07 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Changing host)
2021-12-14 15:40:07 +0100wroathe(~wroathe@user/wroathe)
2021-12-14 15:40:13 +0100gehmehgeh(~user@user/gehmehgeh) (Quit: Leaving)
2021-12-14 15:40:24 +0100alx741(~alx741@157.100.93.160)
2021-12-14 15:40:38 +0100tromp(~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2021-12-14 15:43:17 +0100waleee(~waleee@2001:9b0:21d:fc00:398f:b003:b90d:acf4) (Ping timeout: 268 seconds)
2021-12-14 15:43:50 +0100thevishy(~Nishant@2405:201:f005:c007:d93e:9746:14f0:2f69)
2021-12-14 15:43:52 +0100ChaiTRex(~ChaiTRex@user/chaitrex) (Remote host closed the connection)
2021-12-14 15:44:16 +0100ChaiTRex(~ChaiTRex@user/chaitrex)
2021-12-14 15:48:23 +0100xff0x(~xff0x@2001:1a81:5283:7b00:180c:adc:91b3:927a) (Ping timeout: 250 seconds)
2021-12-14 15:48:39 +0100tromp(~textual@dhcp-077-249-230-040.chello.nl)
2021-12-14 15:50:16 +0100pfurla(~pfurla@177.79.125.203)
2021-12-14 15:50:28 +0100 <dminuoso> Is there some windows/linux/macOS portable mechanism for asking whether a given path is a regular file or a regular direcotry?
2021-12-14 15:50:37 +0100 <dminuoso> I dont care about anything else, really.
2021-12-14 15:50:55 +0100alx741(~alx741@157.100.93.160) (Read error: Connection reset by peer)
2021-12-14 15:51:47 +0100pfurla_(~pfurla@177.79.122.168) (Read error: Connection reset by peer)
2021-12-14 15:54:01 +0100wagle(~wagle@quassel.wagle.io) (Quit: http://quassel-irc.org - Chat comfortably. Anywhere.)
2021-12-14 15:54:32 +0100 <merijn> dminuoso: One of the stat() system calls?
2021-12-14 15:54:33 +0100wagle(~wagle@quassel.wagle.io)
2021-12-14 15:55:38 +0100 <dminuoso> merijn: And Windows?
2021-12-14 15:55:48 +0100 <dminuoso> Or do you suggest I just ifdef my way out of this?
2021-12-14 15:55:52 +0100 <geekosaur> do you care about symlinks?
2021-12-14 15:56:07 +0100 <merijn> dminuoso: Good luck getting a single cross platform API
2021-12-14 15:56:26 +0100 <geekosaur> that said, ifdefs may be your only solution (what merijn said, basically)
2021-12-14 15:56:32 +0100 <dminuoso> My requirements are really simple. I want to naively traverse all files, under the assumption the administrator has not set up loops.
2021-12-14 15:56:41 +0100 <dminuoso> And I want to read these files.
2021-12-14 15:57:01 +0100 <dminuoso> But for sanity I want to skip all these special files like fifos or chararacter devices
2021-12-14 15:57:06 +0100 <merijn> dminuoso: Try changing directory to it and see if it works :p
2021-12-14 15:57:17 +0100deadmarshal(~deadmarsh@95.38.230.166) (Ping timeout: 250 seconds)
2021-12-14 15:57:20 +0100 <merijn> dminuoso: stat and friend can tell you if something is a special file or not
2021-12-14 15:57:26 +0100 <dminuoso> merijn: Sure, on linux.
2021-12-14 15:58:18 +0100 <geekosaur> https://downloads.haskell.org/ghc/latest/docs/html/libraries/directory-1.3.6.2/System-Directory.ht… may be the best you'll do, assuming you don't care about symlinks or something that is neither file nor directory
2021-12-14 15:58:59 +0100 <geekosaur> on POSIX you need {,l}stat to do any better; on Windows you need to check for reparse points and possibly verify that a reparse point represents a symlink
2021-12-14 15:59:24 +0100 <geekosaur> basically, doing this portably is Hard
2021-12-14 16:02:21 +0100 <dminuoso> reparse points?
2021-12-14 16:02:29 +0100 <dminuoso> What black magic does Win32 have here?
2021-12-14 16:03:06 +0100 <geekosaur> reparse points are how windows implements symlinks, but also how it does other things like network directories (roughly equivalent to a unix mount point)
2021-12-14 16:05:06 +0100 <geekosaur> https://downloads.haskell.org/ghc/latest/docs/html/libraries/directory-1.3.6.2/System-Directory.ht… note reference to junction points, which are not symlinks
2021-12-14 16:05:32 +0100Sgeo(~Sgeo@user/sgeo)
2021-12-14 16:05:35 +0100 <geekosaur> also file and directory "symlinks" are distinct entities / reparse points on windows
2021-12-14 16:06:49 +0100wroathe(~wroathe@user/wroathe) (Ping timeout: 256 seconds)
2021-12-14 16:07:43 +0100alx741(~alx741@157.100.93.160)
2021-12-14 16:08:09 +0100Feuermagier(~Feuermagi@user/feuermagier) (Remote host closed the connection)
2021-12-14 16:10:45 +0100xff0x(~xff0x@2001:1a81:5283:7b00:180c:adc:91b3:927a)
2021-12-14 16:15:56 +0100max22-(~maxime@2a01cb0883359800604ddf259a1a7168.ipv6.abo.wanadoo.fr)
2021-12-14 16:15:57 +0100dolio(~dolio@130.44.130.54) (Ping timeout: 268 seconds)
2021-12-14 16:15:59 +0100 <sprout> https://github.com/egel-lang/aoc-2021/blob/main/day14/task2.eg <- Advent of Code, day 14, task 2, solution in Egel. though dicts are overkill on this problem
2021-12-14 16:16:08 +0100 <sprout> https://pasteboard.co/6fErCUImZtkF.png <- 'pretty' colors
2021-12-14 16:18:34 +0100 <janus> what is the connection between haskell and egel?
2021-12-14 16:19:11 +0100 <janus> is it that they both have purely functional parts?
2021-12-14 16:19:11 +0100alx741(~alx741@157.100.93.160) (Read error: Connection reset by peer)
2021-12-14 16:20:03 +0100_xor(~xor@dsl-50-5-233-169.fuse.net) (Read error: Connection reset by peer)
2021-12-14 16:21:23 +0100zebrag(~chris@user/zebrag)
2021-12-14 16:21:35 +0100Athas(athas@2a01:7c8:aaac:1cf:fd6:8489:d8da:43d) (Quit: ZNC 1.8.2 - https://znc.in)
2021-12-14 16:21:46 +0100Athas(athas@2a01:7c8:aaac:1cf:fd6:8489:d8da:43d)
2021-12-14 16:22:11 +0100xff0x(~xff0x@2001:1a81:5283:7b00:180c:adc:91b3:927a) (Ping timeout: 250 seconds)
2021-12-14 16:22:56 +0100xff0x(~xff0x@2001:1a81:5283:7b00:9491:73c8:4b2b:b7f3)
2021-12-14 16:23:10 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-12-14 16:23:10 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Changing host)
2021-12-14 16:23:10 +0100wroathe(~wroathe@user/wroathe)
2021-12-14 16:24:18 +0100 <sprout> both functional. but because how egel developed it is on a number of things diametrically opposite. eager impure untyped and with reflection (under development)
2021-12-14 16:25:51 +0100_xor(~xor@dsl-50-5-233-169.fuse.net)
2021-12-14 16:26:21 +0100 <sprout> still slow though. beta/proof of concept code. at some point I'll change the back-end which should give an order and be some factor slower than ghci hopefully
2021-12-14 16:27:50 +0100wroathe(~wroathe@user/wroathe) (Ping timeout: 260 seconds)
2021-12-14 16:27:51 +0100juhp(~juhp@128.106.188.82)
2021-12-14 16:29:10 +0100acidjnk(~acidjnk@p200300d0c7271e77ede7a7f9d267d612.dip0.t-ipconnect.de) (Ping timeout: 265 seconds)
2021-12-14 16:33:04 +0100canta(~canta@user/canta)
2021-12-14 16:35:31 +0100doyougnu(~doyougnu@c-73-25-202-122.hsd1.or.comcast.net)
2021-12-14 16:37:17 +0100alx741(~alx741@157.100.93.160)
2021-12-14 16:39:41 +0100pretty_dumm_guy(trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) (Ping timeout: 252 seconds)
2021-12-14 16:41:00 +0100nvmd(~nvmd@user/nvmd)
2021-12-14 16:43:22 +0100son0p(~ff@2800:484:1d81:b700:d40b:900:b387:320)
2021-12-14 16:43:32 +0100hololeap_(~hololeap@user/hololeap)
2021-12-14 16:43:45 +0100hololeap(~hololeap@user/hololeap) (Ping timeout: 276 seconds)
2021-12-14 16:45:07 +0100alx741(~alx741@157.100.93.160) (Read error: Connection reset by peer)
2021-12-14 16:45:19 +0100pretty_dumm_guy(trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655)
2021-12-14 16:48:11 +0100raehik(~raehik@cpc144538-stap14-2-0-cust361.12-2.cable.virginm.net) (Ping timeout: 256 seconds)
2021-12-14 16:49:41 +0100zaquest(~notzaques@5.130.79.72) (Remote host closed the connection)
2021-12-14 16:59:51 +0100chele(~chele@user/chele) (Ping timeout: 252 seconds)
2021-12-14 17:02:47 +0100alx741(~alx741@157.100.93.160)
2021-12-14 17:02:51 +0100josemotanet(~jose@2001:8a0:ee85:a00:d4ef:b473:6a8a:ba2e)
2021-12-14 17:02:56 +0100pavonia(~user@user/siracusa) (Quit: Bye!)
2021-12-14 17:03:29 +0100pretty_dumm_guy(trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) (Ping timeout: 256 seconds)
2021-12-14 17:07:40 +0100zaquest(~notzaques@5.130.79.72)
2021-12-14 17:07:53 +0100Whatever009(~fuzzypixe@ensi-libre-service-019.ensimag.fr)
2021-12-14 17:13:33 +0100Guest19(~Guest19@n110-33-34-202.hum1.act.optusnet.com.au)
2021-12-14 17:14:23 +0100bliminse(~bliminse@host86-162-147-196.range86-162.btcentralplus.com) (Quit: leaving)
2021-12-14 17:17:03 +0100lbseale_(~ep1ctetus@user/ep1ctetus) (Read error: Connection reset by peer)
2021-12-14 17:17:33 +0100lortabac(~lortabac@2a01:e0a:541:b8f0:2a7d:20d:33d5:1d47) (Quit: WeeChat 2.8)
2021-12-14 17:20:11 +0100 <snake> is there a doc or something that demonstrates all the places where i can use curly braces and semicolons in haskell?
2021-12-14 17:21:42 +0100 <merijn> snake: Well, there's mostly documentation that explains on how to use indentation instead of braces, but that should also mostly explain the reverse :)
2021-12-14 17:21:48 +0100 <merijn> snake: https://en.wikibooks.org/wiki/Haskell/Indentation
2021-12-14 17:22:08 +0100 <merijn> And of course the (more formal) version in the report: https://www.haskell.org/onlinereport/haskell2010/haskellch10.html#x17-17800010.3
2021-12-14 17:23:07 +0100alx741(~alx741@157.100.93.160) (Read error: Connection reset by peer)
2021-12-14 17:23:19 +0100MoC(~moc@user/moc)
2021-12-14 17:24:37 +0100mncheck(~mncheck@193.224.205.254) (Remote host closed the connection)
2021-12-14 17:26:36 +0100pretty_dumm_guy(trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655)
2021-12-14 17:26:57 +0100bliminse(~bliminse@host86-162-147-196.range86-162.btcentralplus.com)
2021-12-14 17:27:37 +0100Gurkenglas(~Gurkengla@dslb-002-203-144-204.002.203.pools.vodafone-ip.de) (Ping timeout: 250 seconds)
2021-12-14 17:30:46 +0100eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
2021-12-14 17:33:56 +0100coot(~coot@89-64-85-93.dynamic.chello.pl) (Quit: coot)
2021-12-14 17:34:25 +0100coot(~coot@89-64-85-93.dynamic.chello.pl)
2021-12-14 17:34:28 +0100coot(~coot@89-64-85-93.dynamic.chello.pl) (Remote host closed the connection)
2021-12-14 17:35:20 +0100nek0(~nek0@nek0.eu) (Quit: The Lounge - https://thelounge.chat)
2021-12-14 17:35:34 +0100 <snake> merijn, what is wrong with my main function? i'm getting "parse error on print" https://dpaste.com/9FEUGP7QS
2021-12-14 17:36:43 +0100cosimone`(~user@2001:b07:ae5:db26:a7aa:8027:6b4e:2fb3) (Ping timeout: 250 seconds)
2021-12-14 17:37:16 +0100 <merijn> snake: You have no braces on let
2021-12-14 17:37:22 +0100 <c_wraith> snake: that's what happens when you use braces and semicolons instead of layout - if you don't use all of them, you get parse errors
2021-12-14 17:37:31 +0100 <merijn> let { nums = toList myLines }
2021-12-14 17:37:32 +0100 <snake> oh i see
2021-12-14 17:37:37 +0100 <snake> sad lol
2021-12-14 17:37:58 +0100cosimone(~user@93-47-231-203.ip115.fastwebnet.it)
2021-12-14 17:38:33 +0100 <snake> why am i addicted to writing in a new lang i dislike
2021-12-14 17:41:01 +0100alx741(~alx741@157.100.93.160)
2021-12-14 17:41:38 +0100 <snake> maybe i'm a workaholic LOL
2021-12-14 17:42:27 +0100lbseale(~ep1ctetus@user/ep1ctetus)
2021-12-14 17:43:51 +0100dschrempf(~dominik@070-207.dynamic.dsl.fonira.net)
2021-12-14 17:44:42 +0100nek0(~nek0@nek0.eu)
2021-12-14 17:48:42 +0100alx741(~alx741@157.100.93.160) (Read error: Connection reset by peer)
2021-12-14 17:53:16 +0100 <merijn> bah
2021-12-14 17:53:22 +0100 <merijn> My solution for today seems insufficiently lazy
2021-12-14 17:54:32 +0100fr33domlover(~fr33@2.55.142.29) (Ping timeout: 240 seconds)
2021-12-14 17:54:58 +0100emf(~emf@cpe-174-109-36-85.nc.res.rr.com)
2021-12-14 17:57:40 +0100 <c_wraith> What laziness goal do you have for it?
2021-12-14 17:57:41 +0100Gurkenglas(~Gurkengla@dslb-002-203-144-204.002.203.pools.vodafone-ip.de)
2021-12-14 17:58:00 +0100 <merijn> c_wraith: Not materialising several GB of state :p
2021-12-14 17:58:16 +0100 <merijn> but I think more details is probably a spoiler?
2021-12-14 17:58:32 +0100 <merijn> I seem to have gotten it lazy enough no, albeit still slow
2021-12-14 17:58:58 +0100emf_(~emf@2620:10d:c091:480::1:3f40)
2021-12-14 17:59:49 +0100 <c_wraith> It's exponential growth. It's gonna be slow.
2021-12-14 18:00:10 +0100emf(~emf@cpe-174-109-36-85.nc.res.rr.com) (Ping timeout: 268 seconds)
2021-12-14 18:00:57 +0100 <merijn> Yeah, but it's, like, a solid minute now, generally AOC solutions aren't *that* slow
2021-12-14 18:01:25 +0100 <c_wraith> well, you don't *have* to do it the slow way.
2021-12-14 18:01:38 +0100snake(~snake@user/snake) (Leaving)
2021-12-14 18:02:14 +0100 <c_wraith> I saw someone stick with the slow approach and use a kind of meet-in-the-middle approach to cut the exponent in half.
2021-12-14 18:02:25 +0100altern(~Sergii@altern.corbina.com.ua) (Ping timeout: 256 seconds)
2021-12-14 18:03:30 +0100 <c_wraith> that was very clever for still needing exponential allocation
2021-12-14 18:03:56 +0100DNH(~DNH@2a02:8108:1100:16d8:f5a3:3a61:fbe9:f021) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2021-12-14 18:04:04 +0100Guest19(~Guest19@n110-33-34-202.hum1.act.optusnet.com.au) (Quit: Client closed)
2021-12-14 18:06:43 +0100alx741(~alx741@181.199.42.79)
2021-12-14 18:07:31 +0100DNH(~DNH@2a02:8108:1100:16d8:f5a3:3a61:fbe9:f021)
2021-12-14 18:09:33 +0100lavaman(~lavaman@98.38.249.169)
2021-12-14 18:11:02 +0100 <sprout> it's less than .5 sec in egel which is a slow... language... you could use maps instead of lists
2021-12-14 18:11:02 +0100tzh(~tzh@c-24-21-73-154.hsd1.or.comcast.net)
2021-12-14 18:11:19 +0100 <sprout> though I think that's overkill on this problem
2021-12-14 18:12:37 +0100alx741(~alx741@181.199.42.79) (Read error: Connection reset by peer)
2021-12-14 18:13:12 +0100alx741(~alx741@181.199.42.79)
2021-12-14 18:14:19 +0100lavaman(~lavaman@98.38.249.169) (Ping timeout: 256 seconds)
2021-12-14 18:15:46 +0100eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
2021-12-14 18:20:50 +0100gdown(~gavin@94.140.8.38)
2021-12-14 18:22:39 +0100alx741(~alx741@181.199.42.79) (Read error: Connection reset by peer)
2021-12-14 18:23:46 +0100xkuru(~xkuru@user/xkuru) (Read error: Connection reset by peer)
2021-12-14 18:24:06 +0100DNH(~DNH@2a02:8108:1100:16d8:f5a3:3a61:fbe9:f021) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2021-12-14 18:24:58 +0100notabled1(~notabledu@ares.dbalan.in)
2021-12-14 18:26:19 +0100xkuru(~xkuru@user/xkuru)
2021-12-14 18:26:54 +0100deadmarshal(~deadmarsh@95.38.230.166)
2021-12-14 18:33:32 +0100CiaoSen(~Jura@p200300c957347b002a3a4dfffe84dbd5.dip0.t-ipconnect.de) (Ping timeout: 240 seconds)
2021-12-14 18:37:37 +0100josemotanet(~jose@2001:8a0:ee85:a00:d4ef:b473:6a8a:ba2e) (Quit: WeeChat 3.3)
2021-12-14 18:37:52 +0100DNH(~DNH@2a02:8108:1100:16d8:f5a3:3a61:fbe9:f021)
2021-12-14 18:39:29 +0100alx741(~alx741@157.100.93.160)
2021-12-14 18:41:55 +0100eggplantade(~Eggplanta@2600:1700:bef1:5e10:158b:cfc1:e7b3:d4ac)
2021-12-14 18:46:41 +0100tromp(~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2021-12-14 18:53:50 +0100Akiva(~Akiva@user/Akiva)
2021-12-14 18:58:22 +0100dolio(~dolio@130.44.130.54)
2021-12-14 19:02:58 +0100peutri_peutri
2021-12-14 19:07:27 +0100econo(uid147250@user/econo)
2021-12-14 19:07:41 +0100tromp(~textual@dhcp-077-249-230-040.chello.nl)
2021-12-14 19:07:41 +0100alx741(~alx741@157.100.93.160) (Read error: Connection reset by peer)
2021-12-14 19:08:40 +0100briandaed(~root@185.234.208.208.r.toneticgroup.pl)
2021-12-14 19:08:41 +0100tromp(~textual@dhcp-077-249-230-040.chello.nl) (Client Quit)
2021-12-14 19:10:25 +0100dschrempf(~dominik@070-207.dynamic.dsl.fonira.net) (Quit: WeeChat 3.3)
2021-12-14 19:10:35 +0100tromp(~textual@dhcp-077-249-230-040.chello.nl)
2021-12-14 19:10:52 +0100nfd(~nfd@user/nfd)
2021-12-14 19:11:13 +0100 <merijn> bah, I thought I had an ingenious solution, but clearly not >.>
2021-12-14 19:12:48 +0100 <dsal> @tell snake You might not dislike it so much if you didn't work against how we do things. Try doing things the way we do things and see where that takes you.
2021-12-14 19:12:48 +0100 <lambdabot> Consider it noted.
2021-12-14 19:15:47 +0100 <EvanR> had to get some sleep before getting day 14 part 2
2021-12-14 19:15:51 +0100coot(~coot@89-64-85-93.dynamic.chello.pl)
2021-12-14 19:15:53 +0100 <EvanR> my poor rankings
2021-12-14 19:17:14 +0100 <dsal> I had a tiny power glitch which took out my ailing UPS running my networking equipment right as I was submitting my part 2 answer.
2021-12-14 19:17:25 +0100 <dsal> The good news is that the part 2 answer I was submitting was wrong.
2021-12-14 19:18:06 +0100 <merijn> EvanR: I'm still fighting it >.>
2021-12-14 19:18:48 +0100 <EvanR> I have an ingenious solution but the margin of the power failure is too small to fit it
2021-12-14 19:19:13 +0100 <dsal> I got the right answer and submitted it via phone hot spot.
2021-12-14 19:19:27 +0100 <dsal> Power's still out here, but I almost wouldn't've noticed if it weren't for that stupid UPS.
2021-12-14 19:19:33 +0100 <EvanR> how did you solve it without power
2021-12-14 19:20:53 +0100 <EvanR> phone haskell? xD
2021-12-14 19:21:38 +0100 <dsal> I have a Powerwall, but was working my laptop anyway. The thing that *didn't* have power was my networking equipment / Starlink.
2021-12-14 19:23:21 +0100bollu(uid233390@id-233390.helmsley.irccloud.com) (Quit: Connection closed for inactivity)
2021-12-14 19:23:34 +0100earendel(uid498179@user/earendel)
2021-12-14 19:25:55 +0100alx741(~alx741@157.100.93.160)
2021-12-14 19:29:44 +0100Midjak(~Midjak@may53-1-78-226-116-92.fbx.proxad.net)
2021-12-14 19:30:33 +0100briandaed(~root@185.234.208.208.r.toneticgroup.pl) (Quit: Lost terminal)
2021-12-14 19:31:15 +0100waleee(~waleee@2001:9b0:21d:fc00:398f:b003:b90d:acf4)
2021-12-14 19:36:04 +0100alx741(~alx741@157.100.93.160) (Read error: Connection reset by peer)
2021-12-14 19:39:16 +0100eggplantade(~Eggplanta@2600:1700:bef1:5e10:158b:cfc1:e7b3:d4ac) (Remote host closed the connection)
2021-12-14 19:40:08 +0100 <oats> Optics By Example is an excellent book
2021-12-14 19:40:45 +0100dyeplexer(~dyeplexer@user/dyeplexer) (Remote host closed the connection)
2021-12-14 19:43:29 +0100 <dsal> ++
2021-12-14 19:44:10 +0100 <dsal> I was looking at propagators yesterday and the author also wrote this library:
2021-12-14 19:44:13 +0100 <dsal> @package mad-props
2021-12-14 19:44:14 +0100 <lambdabot> https://hackage.haskell.org/package/mad-props
2021-12-14 19:45:19 +0100eggplantade(~Eggplanta@2600:1700:bef1:5e10:158b:cfc1:e7b3:d4ac)
2021-12-14 19:48:25 +0100tromp(~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2021-12-14 19:48:28 +0100 <EvanR> I went to order this book and found it's E only
2021-12-14 19:50:48 +0100 <dsal> LOL at the guy who doesn't have a printer.
2021-12-14 19:51:50 +0100jgeerds(~jgeerds@55d4ac73.access.ecotel.net)
2021-12-14 19:52:10 +0100tromp(~textual@dhcp-077-249-230-040.chello.nl)
2021-12-14 19:52:37 +0100 <EvanR> it literally has 420 pages
2021-12-14 19:53:38 +0100mbuf(~Shakthi@122.178.176.47) (Quit: Leaving)
2021-12-14 19:54:49 +0100alx741(~alx741@157.100.93.160)
2021-12-14 20:00:09 +0100xff0x(~xff0x@2001:1a81:5283:7b00:9491:73c8:4b2b:b7f3) (Ping timeout: 250 seconds)
2021-12-14 20:01:09 +0100xff0x(~xff0x@2001:1a81:5283:7b00:fc6:4766:ca7:9337)
2021-12-14 20:04:29 +0100tromp(~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2021-12-14 20:04:31 +0100justsomeguy(~justsomeg@user/justsomeguy)
2021-12-14 20:06:04 +0100 <earendel> you are still misusing the word literaly *rolleyes
2021-12-14 20:07:04 +0100 <earendel> the damn printer mafia ink is expensive.
2021-12-14 20:07:38 +0100max22-(~maxime@2a01cb0883359800604ddf259a1a7168.ipv6.abo.wanadoo.fr) (Ping timeout: 265 seconds)
2021-12-14 20:07:38 +0100alx741(~alx741@157.100.93.160) (Read error: Connection reset by peer)
2021-12-14 20:08:13 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds)
2021-12-14 20:08:23 +0100 <dsal> It's a book. How much more literal can it be?
2021-12-14 20:08:50 +0100 <EvanR> I literally saw a stat on the page for it that literally says 420 pages
2021-12-14 20:10:00 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-12-14 20:10:48 +0100 <monochrom> It is literally not a physics book. :)
2021-12-14 20:11:31 +0100 <dsal> It's a great coffee table photography book.
2021-12-14 20:11:37 +0100madjestic(~madjestic@88-159-247-120.fixed.kpn.net) (Ping timeout: 256 seconds)
2021-12-14 20:13:58 +0100 <earendel> literally is the opposite of figuratively. so if you don't use a metaphor, but want to express you mean it literally not figuratively it is a superfluos adverb
2021-12-14 20:14:50 +0100 <EvanR> the number of ways to use literally seems open ended
2021-12-14 20:14:58 +0100 <EvanR> to use literally wrong*
2021-12-14 20:15:18 +0100 <EvanR> that has become it's defining characteristic
2021-12-14 20:15:25 +0100 <earendel> this guy is literally melting down.. would mean he is changing his aggregate-state from solid to liquid.
2021-12-14 20:15:35 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds)
2021-12-14 20:15:35 +0100jakalx(~jakalx@base.jakalx.net) (Error from remote client)
2021-12-14 20:15:37 +0100 <monochrom> It is figuratively an optics book. Are you happy now?
2021-12-14 20:15:53 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-12-14 20:16:23 +0100 <earendel> it just defines your inability to properly express yourself.
2021-12-14 20:16:47 +0100 <[exa]> is literature allowed to be literal?
2021-12-14 20:17:09 +0100 <earendel> monochom: i don't get it. ^^ maybe i'm not familiar with that figure.
2021-12-14 20:17:43 +0100 <monochrom> I want to say yes, but seeing that all the literature people are deeply into allegories, I think in practice no, they insist to be figurative.
2021-12-14 20:17:48 +0100 <EvanR> earendel you're like a canary in a coal mine
2021-12-14 20:18:05 +0100 <[exa]> I'll separate the figures from my literals later today
2021-12-14 20:18:36 +0100 <EvanR> non-literally
2021-12-14 20:19:18 +0100 <earendel> great. another satisfied customer
2021-12-14 20:19:39 +0100 <monochrom> class Applicative f => Figurative f where burrito :: a -> f a; unwrap :: f (f a) -> f a -- >:)
2021-12-14 20:20:14 +0100 <EvanR> i though roll was f (f a) -> f a and unroll was f a -> f (f a)
2021-12-14 20:20:22 +0100tromp(~textual@dhcp-077-249-230-040.chello.nl)
2021-12-14 20:20:25 +0100 <monochrom> Figurative burrito unwrapping law: unwrap . burrito = id
2021-12-14 20:20:34 +0100 <[exa]> there was some coliteral damage to the semantics
2021-12-14 20:20:44 +0100 <Clint> now i want a littoral burrito
2021-12-14 20:20:47 +0100 <monochrom> Oh, "roll" is probably better, I didn't think of it!
2021-12-14 20:21:15 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds)
2021-12-14 20:21:16 +0100 <geekosaur> my literals have figures
2021-12-14 20:21:28 +0100 <Clint> significant ones?
2021-12-14 20:21:47 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-12-14 20:21:54 +0100 <monochrom> In a graphical programming language, you have figure literals >:)
2021-12-14 20:23:57 +0100alx741(~alx741@157.100.93.160)
2021-12-14 20:24:07 +0100jakalx(~jakalx@base.jakalx.net)
2021-12-14 20:24:42 +0100 <earendel> it also is a sign of inflationary superlatives in language. so, sometimes just leaving them out can make the break gaining the relvance of your expression (in the eye of the beholder)
2021-12-14 20:25:28 +0100 <earendel> you can say really. it really has 420 pages? yes, there's no joke coming whatsoever.
2021-12-14 20:25:43 +0100 <monochrom> What's your problem?
2021-12-14 20:26:29 +0100madjestic(~madjestic@88-159-247-120.fixed.kpn.net)
2021-12-14 20:27:01 +0100 <earendel> hm? just talking.
2021-12-14 20:27:15 +0100 <geekosaur> english is all about the unmarked metaphor
2021-12-14 20:27:48 +0100 <monochrom> Please stop over-analyzing what was just having fun making bad jokes and bad puns.
2021-12-14 20:28:22 +0100 <monochrom> All of us already know how "really" and "literally" are abused, you're preaching to the choir, thanks but no thanks.
2021-12-14 20:28:24 +0100 <earendel> i see.
2021-12-14 20:29:56 +0100 <earendel> i did analyze a joke?
2021-12-14 20:31:44 +0100 <earendel> maybe your analysis of my character is a bit premature, giving the fact i just joined this channel and we never spoke before.
2021-12-14 20:32:05 +0100 <monochrom> Are you done?
2021-12-14 20:32:50 +0100 <geekosaur> you, uh, filled up most of the channel and possibly derailed a discussion over it
2021-12-14 20:32:52 +0100 <earendel> lol.
2021-12-14 20:33:13 +0100 <Clint> yes, but he only did that for 40 minutes
2021-12-14 20:33:29 +0100 <earendel> was it me?
2021-12-14 20:33:44 +0100 <earendel> oops.
2021-12-14 20:34:00 +0100dhouthoo(~dhouthoo@178-117-36-167.access.telenet.be) (Quit: WeeChat 3.3)
2021-12-14 20:34:14 +0100 <EvanR> I prefer paper books even though I don't have a bookshelf
2021-12-14 20:34:43 +0100 <EvanR> I don't really have a convenient way to read 420 pages electronically :(
2021-12-14 20:35:26 +0100 <Clint> i gave up on paper books and ereaders ages ago
2021-12-14 20:35:32 +0100 <monochrom> I am paradoxical about paper books vs electronic books. Paper books feel better in hand. Electronic books are more mobile, seachable, copy-paste-able.
2021-12-14 20:36:20 +0100 <monochrom> Eventually I broke the tie by "I have run out of room for paper books".
2021-12-14 20:36:36 +0100 <systemfault> I usually buy the book... and steal the electronic version :/ They should really give you the electronic version when you buy the paper book.
2021-12-14 20:36:49 +0100 <EvanR> really, I've camera-ed a page and screenshotted a pdf, but copying text out of a pdf is hit or miss
2021-12-14 20:37:08 +0100 <EvanR> and searching paper books mainly involves accessing my photographic memory xD
2021-12-14 20:37:08 +0100alx741(~alx741@157.100.93.160) (Read error: Connection reset by peer)
2021-12-14 20:37:28 +0100 <Clint> you might have to read the book first for that to work
2021-12-14 20:37:30 +0100 <monochrom> Big volumes like CLRS make me feel guilty when I teach a course and say "the textbook is CLRS" and if the students go the the paper one it means they have like an extra 1kg to carry in their backpacks.
2021-12-14 20:37:35 +0100 <EvanR> true
2021-12-14 20:37:39 +0100kayvan(~kayvan@52-119-115-185.PUBLIC.monkeybrains.net)
2021-12-14 20:38:06 +0100 <monochrom> (And if I also declare "the exam is open book", you can be sure I am indirectly incentivizing the students to go for the paper book.)
2021-12-14 20:38:26 +0100 <EvanR> which optics library does the book Optics By Example use?
2021-12-14 20:38:35 +0100 <monochrom> (This is part of the reason why I now declare "you can bring 2 aid sheets to the exam".)
2021-12-14 20:38:41 +0100kayvan(~kayvan@52-119-115-185.PUBLIC.monkeybrains.net) (Remote host closed the connection)
2021-12-14 20:39:03 +0100 <monochrom> systemfault: Yeah, I agree too.
2021-12-14 20:39:13 +0100nolrai(~nolrai@73.240.1.39)
2021-12-14 20:39:56 +0100 <earendel> in my exams you would be allowed to use internet.
2021-12-14 20:40:31 +0100 <EvanR> I'd end up distracted on IRC or something
2021-12-14 20:40:48 +0100 <nolrai> Hey so when building with stack I see this "ghc-pkg.exe: C:\Users\XXXX\haskell\Shades\.stack-work\install\791f0cf9\pkgdb\package.cache.lock: openBinaryFile: resource busy (file is locked)" or equivalent a lot, anyone know whats up with it and if I should do something about it?
2021-12-14 20:42:33 +0100burnsidesLlama(~burnsides@dhcp168-019.wadham.ox.ac.uk) (Remote host closed the connection)
2021-12-14 20:43:44 +0100max22-(~maxime@2a01cb088335980077ae04132abb6848.ipv6.abo.wanadoo.fr)
2021-12-14 20:44:49 +0100ChaiTRex(~ChaiTRex@user/chaitrex) (Remote host closed the connection)
2021-12-14 20:45:11 +0100ChaiTRex(~ChaiTRex@user/chaitrex)
2021-12-14 20:55:49 +0100alx741(~alx741@157.100.93.160)
2021-12-14 20:56:12 +0100neurocyte0132889(~neurocyte@user/neurocyte)
2021-12-14 20:57:34 +0100nunggu(~q@gateway/tor-sasl/nunggu) (Remote host closed the connection)
2021-12-14 20:57:46 +0100justsomeguy(~justsomeg@user/justsomeguy) (Quit: WeeChat 3.3)
2021-12-14 21:01:59 +0100eggplantade(~Eggplanta@2600:1700:bef1:5e10:158b:cfc1:e7b3:d4ac) (Remote host closed the connection)
2021-12-14 21:04:57 +0100eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
2021-12-14 21:05:27 +0100juhp(~juhp@128.106.188.82) (Ping timeout: 256 seconds)
2021-12-14 21:06:42 +0100juhp(~juhp@128.106.188.82)
2021-12-14 21:08:02 +0100 <merijn> bleh, solved part 2, but not happy with the result. Takes about 40s to complete
2021-12-14 21:08:02 +0100alx741(~alx741@157.100.93.160) (Read error: Connection reset by peer)
2021-12-14 21:08:38 +0100alx741(~alx741@157.100.93.160)
2021-12-14 21:09:04 +0100 <EvanR> dang
2021-12-14 21:09:23 +0100 <merijn> I feel it should be possible to go much faster
2021-12-14 21:09:30 +0100 <EvanR> better than my approach last night which might have taken days or months to finish xD
2021-12-14 21:10:01 +0100 <merijn> ah
2021-12-14 21:10:14 +0100 <merijn> I have an idea that might make it faster, but I can't be arsed atm >.>
2021-12-14 21:12:01 +0100nolrai(~nolrai@73.240.1.39) (Remote host closed the connection)
2021-12-14 21:15:03 +0100 <EvanR> I'm curious how you got 40s
2021-12-14 21:15:11 +0100 <EvanR> but it might be spoilery for here
2021-12-14 21:17:24 +0100glebg(~user@85-192-130-19.dsl.esoo.ru)
2021-12-14 21:17:38 +0100raghavgururajan(9fd51d1ea8@user/raghavgururajan) (Ping timeout: 260 seconds)
2021-12-14 21:18:01 +0100 <merijn> EvanR: https://github.com/merijn/AdventOfCode/blob/master/Day14.hs
2021-12-14 21:18:45 +0100singpolyma(8a1e37e5a6@tilde.team/user/singpolyma) (Ping timeout: 268 seconds)
2021-12-14 21:20:06 +0100 <EvanR> impressive
2021-12-14 21:20:26 +0100 <EvanR> you did 20 rounds, not 40?
2021-12-14 21:20:45 +0100alx741(~alx741@157.100.93.160) (Read error: Connection reset by peer)
2021-12-14 21:20:49 +0100 <merijn> I'll answer in PM to avoid spoilers :p
2021-12-14 21:22:31 +0100coot(~coot@89-64-85-93.dynamic.chello.pl) (Quit: coot)
2021-12-14 21:24:15 +0100nunggu(~q@gateway/tor-sasl/nunggu)
2021-12-14 21:29:56 +0100gdown(~gavin@94.140.8.38) (Remote host closed the connection)
2021-12-14 21:33:46 +0100Erutuon(~Erutuon@user/erutuon)
2021-12-14 21:36:16 +0100puke(~puke@user/puke) (Remote host closed the connection)
2021-12-14 21:36:31 +0100puke(~puke@user/puke)
2021-12-14 21:38:46 +0100justsomeguy(~justsomeg@user/justsomeguy)
2021-12-14 21:39:02 +0100thevishy(~Nishant@2405:201:f005:c007:d93e:9746:14f0:2f69) (Read error: Connection reset by peer)
2021-12-14 21:39:16 +0100alx741(~alx741@157.100.93.160)
2021-12-14 21:39:46 +0100y04nn(~y04nn@92.223.89.196)
2021-12-14 21:39:50 +0100thevishy(~Nishant@2405:201:f005:c007:49c7:f8b1:7727:93e)
2021-12-14 21:40:41 +0100Athas(athas@2a01:7c8:aaac:1cf:fd6:8489:d8da:43d) (Quit: ZNC 1.8.2 - https://znc.in)
2021-12-14 21:40:44 +0100lavaman(~lavaman@98.38.249.169)
2021-12-14 21:40:50 +0100Athas(athas@sigkill.dk)
2021-12-14 21:41:54 +0100ft(~ft@shell.chaostreff-dortmund.de) (Quit: leaving)
2021-12-14 21:42:07 +0100ft(~ft@shell.chaostreff-dortmund.de)
2021-12-14 21:44:41 +0100gentauro(~gentauro@user/gentauro)
2021-12-14 21:45:07 +0100lavaman(~lavaman@98.38.249.169) (Ping timeout: 252 seconds)
2021-12-14 21:48:02 +0100Whatever009(~fuzzypixe@ensi-libre-service-019.ensimag.fr) (Ping timeout: 240 seconds)
2021-12-14 21:48:17 +0100burnsidesLlama(~burnsides@dhcp168-019.wadham.ox.ac.uk)
2021-12-14 21:50:16 +0100eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
2021-12-14 21:51:53 +0100alx741(~alx741@157.100.93.160) (Read error: Connection reset by peer)
2021-12-14 21:53:00 +0100tromp(~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2021-12-14 21:56:24 +0100 <energizer> (fmap (*3) (+100)) 1 gives 303. is there a function that i can replace fmap with to get 103?
2021-12-14 21:58:09 +0100 <EvanR> (+103)
2021-12-14 21:58:24 +0100 <EvanR> (+302)
2021-12-14 21:58:43 +0100 <merijn> (.)? :p
2021-12-14 21:58:49 +0100 <merijn> oh, wait, no
2021-12-14 21:58:53 +0100 <merijn> flip (.) :p
2021-12-14 21:58:54 +0100 <EvanR> (*303)
2021-12-14 22:02:13 +0100 <sprout> merijn: https://github.com/egel-lang/aoc-2021/blob/main/day14/task2.eg <- just adapt this? if it runs fast in egel it is certainly bound to run fast in haskell
2021-12-14 22:02:22 +0100MoC(~moc@user/moc) (Quit: Konversation terminated!)
2021-12-14 22:02:41 +0100_ht_(~quassel@82-169-194-8.biz.kpn.net) (Remote host closed the connection)
2021-12-14 22:03:03 +0100 <sprout> but I get the sentiment. I don't look at spoilers, fix a solution, throw it over the hedge. cannot be buggered to rewrite either
2021-12-14 22:04:07 +0100andreas303(andreas303@ip227.orange.bnc4free.com) (Ping timeout: 265 seconds)
2021-12-14 22:04:11 +0100xacktm(xacktm@user/xacktm) (Ping timeout: 252 seconds)
2021-12-14 22:04:12 +0100cfricke(~cfricke@user/cfricke) (Quit: WeeChat 3.3)
2021-12-14 22:04:29 +0100 <sprout> happened to me yesterday, some posted a really nice solution in haskell
2021-12-14 22:04:53 +0100 <EvanR> on some days you get your star and move on, on others you get nerd sniped
2021-12-14 22:05:31 +0100 <geekosaur> energizer: flip fmap
2021-12-14 22:05:34 +0100 <geekosaur> ?
2021-12-14 22:07:29 +0100 <energizer> not sure if that's what i mean. i'm reading a blog post that says "This gives us the intuition that fmap over functions is just composition." so i'm guessing there's some opposite of functor that has an opposite of fmap?
2021-12-14 22:08:13 +0100kjak(~kjak@pool-108-45-56-21.washdc.fios.verizon.net) (Ping timeout: 250 seconds)
2021-12-14 22:08:23 +0100alx741(~alx741@157.100.93.160)
2021-12-14 22:09:14 +0100 <dibblego> @type (<&>)
2021-12-14 22:09:15 +0100 <lambdabot> Functor f => f a -> (a -> b) -> f b
2021-12-14 22:09:16 +0100 <energizer> the blog post in question https://blog.ssanj.net/posts/2018-03-05-functor-applicative-and-monad-instances-for-reader.html
2021-12-14 22:09:31 +0100 <EvanR> gotta love law of trichotomy using floats https://paste.tomsmeding.com/ZSsda7Zn
2021-12-14 22:09:39 +0100 <dibblego> @type contramap
2021-12-14 22:09:40 +0100 <lambdabot> Contravariant f => (a -> b) -> f b -> f a
2021-12-14 22:10:19 +0100pfurla_(~pfurla@172.58.160.35)
2021-12-14 22:10:31 +0100 <EvanR> I hate it when people say don't use == on floats xD
2021-12-14 22:11:11 +0100doyougnu(~doyougnu@c-73-25-202-122.hsd1.or.comcast.net) (Ping timeout: 256 seconds)
2021-12-14 22:13:01 +0100MrNobody_0000000(~MrNobody@user/mrnobody-0000000/x-9129771)
2021-12-14 22:13:02 +0100pfurla(~pfurla@177.79.125.203) (Ping timeout: 240 seconds)
2021-12-14 22:13:29 +0100prrxddq[m](~prrxddqma@2001:470:69fc:105::1:4f72)
2021-12-14 22:13:33 +0100kjak(~kjak@pool-108-45-56-21.washdc.fios.verizon.net)
2021-12-14 22:14:08 +0100kjak_(~kjak@pool-108-45-56-21.washdc.fios.verizon.net)
2021-12-14 22:14:09 +0100justsomeguy(~justsomeg@user/justsomeguy) (Quit: WeeChat 3.3)
2021-12-14 22:14:17 +0100kjak_(~kjak@pool-108-45-56-21.washdc.fios.verizon.net) (Client Quit)
2021-12-14 22:14:17 +0100kjak(~kjak@pool-108-45-56-21.washdc.fios.verizon.net) (Client Quit)
2021-12-14 22:14:38 +0100kjak(~kjak@pool-108-45-56-21.washdc.fios.verizon.net)
2021-12-14 22:17:20 +0100tromp(~textual@dhcp-077-249-230-040.chello.nl)
2021-12-14 22:21:25 +0100acidjnk(~acidjnk@p200300d0c7271e736483cc3bf5018c54.dip0.t-ipconnect.de)
2021-12-14 22:23:01 +0100alx741(~alx741@157.100.93.160) (Read error: Connection reset by peer)
2021-12-14 22:23:23 +0100euandreh(~euandreh@2804:14c:33:9fe5:f0cf:5664:8ee5:8e87) (Ping timeout: 250 seconds)
2021-12-14 22:26:49 +0100epolanski(uid312403@id-312403.helmsley.irccloud.com)
2021-12-14 22:27:35 +0100 <energizer> isn't it a bad idea to use == on floats?
2021-12-14 22:29:48 +0100raghavgururajan(9fd51d1ea8@user/raghavgururajan)
2021-12-14 22:30:19 +0100 <dolio> Yeah.
2021-12-14 22:31:01 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds)
2021-12-14 22:31:04 +0100xacktm(xacktm@user/xacktm)
2021-12-14 22:33:15 +0100 <EvanR> lol
2021-12-14 22:33:28 +0100yuyua32(~yuyua32@wireless-student-pt3-247-143.lut.ac.uk)
2021-12-14 22:33:46 +0100MrNobody_0000000(~MrNobody@user/mrnobody-0000000/x-9129771) (Quit: MrNobody_0000000)
2021-12-14 22:34:24 +0100 <yuyua32> how do haskell functions resemble mathmetical functions? I was reading about Haskell and read that its good for abstract algebra/mathemeticians could someone explain this
2021-12-14 22:34:35 +0100 <EvanR> I'll just ship a game that says if x < y do this, x > y do that, that's all xD
2021-12-14 22:34:42 +0100 <EvanR> should work most of the time
2021-12-14 22:34:52 +0100 <janus> EvanR: just write that snippet with "case comparing a b of` instead, then the compiler will make sure you won't have to write the 'otherwise' case ;)
2021-12-14 22:35:01 +0100 <EvanR> lol
2021-12-14 22:35:17 +0100 <EvanR> wth happens when you compare ...
2021-12-14 22:35:32 +0100 <dolio> Covering x<y and x>y isn't actually all the cases, right?
2021-12-14 22:35:44 +0100 <janus> > compare (0/0) (0/0)
2021-12-14 22:35:45 +0100 <lambdabot> GT
2021-12-14 22:35:48 +0100 <EvanR> yeah they can be equal
2021-12-14 22:35:51 +0100 <EvanR> hence the == test
2021-12-14 22:35:54 +0100 <janus> (0/0) > (0/0)
2021-12-14 22:35:56 +0100 <janus> > (0/0) > (0/0)
2021-12-14 22:35:57 +0100 <dolio> Even that isn't all of them.
2021-12-14 22:35:58 +0100 <lambdabot> False
2021-12-14 22:36:32 +0100 <EvanR> why do I even bother pasting anything lol
2021-12-14 22:36:51 +0100 <EvanR> I posted a "law of trichotomy" with 4 cases
2021-12-14 22:37:25 +0100 <EvanR> one of which is supposedly "a bad idea"
2021-12-14 22:37:39 +0100 <dolio> Yeah, it is a bad idea.
2021-12-14 22:37:43 +0100 <EvanR> k, removed xD
2021-12-14 22:39:45 +0100 <zero> > 0/0
2021-12-14 22:39:47 +0100 <lambdabot> NaN
2021-12-14 22:39:48 +0100alx741(~alx741@157.100.93.160)
2021-12-14 22:40:05 +0100 <zero> > compare NaN NaN
2021-12-14 22:40:07 +0100 <lambdabot> error: Data constructor not in scope: NaNerror: Data constructor not in scop...
2021-12-14 22:40:13 +0100 <EvanR> GT
2021-12-14 22:40:16 +0100 <EvanR> apparently
2021-12-14 22:40:43 +0100 <zero> > flip compare (0/0) (0/0)
2021-12-14 22:40:44 +0100 <lambdabot> GT
2021-12-14 22:40:49 +0100 <zero> :/
2021-12-14 22:40:52 +0100 <EvanR> it's GT itself
2021-12-14 22:41:05 +0100 <dolio> The reason that people give that advice is that some of the cases where x<y and x>y return True should actually be considered x==y cases, because they might arise from calculating x and y with different associativities and such.
2021-12-14 22:41:32 +0100 <tomsmeding> background: https://hackage.haskell.org/package/ghc-prim-0.6.1/docs/src/GHC.Classes.html#line-458
2021-12-14 22:41:32 +0100 <zero> and rounding errors
2021-12-14 22:41:36 +0100 <EvanR> yes it seems people think all equality tests should be closeness tests
2021-12-14 22:41:51 +0100 <tomsmeding> _usually_ they should be, not always
2021-12-14 22:42:09 +0100 <EvanR> still have never run into a case where that would be correct
2021-12-14 22:42:14 +0100 <tomsmeding> closeness?
2021-12-14 22:42:38 +0100 <EvanR> like, it would move the weird test case over by delta, ime
2021-12-14 22:42:47 +0100 <zero> ?
2021-12-14 22:42:47 +0100 <tomsmeding> quite true
2021-12-14 22:42:48 +0100andreas303(andreas303@ip227.orange.bnc4free.com)
2021-12-14 22:43:25 +0100cosimone(~user@93-47-231-203.ip115.fastwebnet.it) (Quit: ERC (IRC client for Emacs 27.1))
2021-12-14 22:44:35 +0100 <tomsmeding> most of those "don't use X" rules are more accurately written as "if you use X, be sure to have argument why it is better than the alternatives, because this may be non-intuitive"
2021-12-14 22:45:02 +0100alx741(~alx741@157.100.93.160) (Ping timeout: 240 seconds)
2021-12-14 22:45:44 +0100 <janus> yeah. if you use Ord you better remember to write which instances your algorithm won't work with. ;)
2021-12-14 22:46:33 +0100zyzzyxdonta(~zyzzyxdon@2a02:3036:7:5279:ff4:1db4:c08b:ca7d)
2021-12-14 22:47:00 +0100zyzzyxdonta(~zyzzyxdon@2a02:3036:7:5279:ff4:1db4:c08b:ca7d) (Client Quit)
2021-12-14 22:47:07 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-12-14 22:47:07 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Changing host)
2021-12-14 22:47:07 +0100wroathe(~wroathe@user/wroathe)
2021-12-14 22:47:42 +0100Tuplanolla(~Tuplanoll@91-159-68-169.elisa-laajakaista.fi)
2021-12-14 22:49:00 +0100eggplantade(~Eggplanta@2600:1700:bef1:5e10:158b:cfc1:e7b3:d4ac)
2021-12-14 22:50:34 +0100 <energizer> `data ITree a = Leaf (Int -> a) | Node [ITree a]` is this a data structure i might recognize as having some name?
2021-12-14 22:57:46 +0100alx741(~alx741@181.199.42.79)
2021-12-14 22:57:59 +0100 <energizer> am i right in thinking "functor" means something different in haskell than in math? fmap seems like a functor, not the "Functor" `f` that implements `fmap`. what is the reason for this naming convention?
2021-12-14 22:58:35 +0100 <monochrom> Yes and no.
2021-12-14 22:58:48 +0100 <nosewings> The term "Functor" in Haskell comes from math, but it basically just means "anything that has a map function"
2021-12-14 22:59:33 +0100 <energizer> yeah seems confusing
2021-12-14 22:59:54 +0100 <dsal> Functor means "that datastructure functs"
2021-12-14 23:00:04 +0100 <nosewings> I honestly have no idea where the use of "functor" to mean "first-class function" comes from
2021-12-14 23:00:25 +0100 <janus> dsal: functs is german for 'works' right?
2021-12-14 23:00:27 +0100 <monochrom> The standard library type class Functor is better known in math as endofunctor. Moreover, the notation is a bit different: Whereas the object map is still called Maybe or [] for example, the morphism map is called "fmap" regardless of whether it's Maybe or [] or other examples.
2021-12-14 23:01:28 +0100 <monochrom> Moreover you can further argue that the Functor type class is only for endofunctors on one single hardcoded category: the objects are Haskell types, the morphisms are Haskell functions.
2021-12-14 23:02:17 +0100 <monochrom> OTOH you can counter-argue that since that's an example of functor, the name is not wrong either.
2021-12-14 23:02:34 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-12-14 23:03:12 +0100 <monochrom> At the end you just have to meditate on the wisdom behind "Tuesday: it's like Monday, but different"
2021-12-14 23:03:26 +0100 <monochrom> http://www.vex.net/~trebla/humour/tautologies.html
2021-12-14 23:03:59 +0100ph88(~ph88@2a02:8109:9e00:71d0:943d:5b05:e9f7:79b5)
2021-12-14 23:04:06 +0100mc47(~mc47@xmonad/TheMC47) (Remote host closed the connection)
2021-12-14 23:04:17 +0100 <ph88> I want to keep tracked of which pieces of data have been synced with a server. Would it be better to put a sync field into the item record or better to use a type like data Sync a = Unsynced a | Synced a ?
2021-12-14 23:07:17 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds)
2021-12-14 23:07:17 +0100lavaman(~lavaman@98.38.249.169)
2021-12-14 23:11:06 +0100codolio(~dolio@130.44.130.54)
2021-12-14 23:12:16 +0100dolio(~dolio@130.44.130.54) (Read error: Connection reset by peer)
2021-12-14 23:12:24 +0100codoliodolio
2021-12-14 23:14:54 +0100zincy_(~zincy@host86-151-99-97.range86-151.btcentralplus.com)
2021-12-14 23:17:43 +0100 <dsal> ph88: too many depends. Just do one and then later realize the other was better. :)
2021-12-14 23:18:05 +0100 <monochrom> hehe, the other pasture is always greener
2021-12-14 23:18:23 +0100 <monochrom> I was also thinking "do both".
2021-12-14 23:18:38 +0100CiaoSen(~Jura@p200300c957347b002a3a4dfffe84dbd5.dip0.t-ipconnect.de)
2021-12-14 23:18:59 +0100emf_(~emf@2620:10d:c091:480::1:3f40) (Ping timeout: 252 seconds)
2021-12-14 23:19:03 +0100wroathe(~wroathe@user/wroathe) (Ping timeout: 250 seconds)
2021-12-14 23:19:37 +0100 <monochrom> Do you want to know a 3rd way that is more painful?
2021-12-14 23:19:46 +0100zincy_(~zincy@host86-151-99-97.range86-151.btcentralplus.com) (Remote host closed the connection)
2021-12-14 23:20:01 +0100yuyua32(~yuyua32@wireless-student-pt3-247-143.lut.ac.uk) (Quit: Client closed)
2021-12-14 23:21:00 +0100 <monochrom> Consider turning on DataKinds and define "data Sync = Unsynced | Synced" but use it as a kind so define your actual data type as "data D (s :: Sync) = Ctor ..." so "x :: D Synced" is synced and "y :: D Unsynced" is unsynced.
2021-12-14 23:23:28 +0100michalz(~michalz@185.246.204.109) (Remote host closed the connection)
2021-12-14 23:24:29 +0100emf(~emf@2603-6080-9403-11bf-0000-0000-0000-0009.res6.spectrum.com)
2021-12-14 23:25:07 +0100pfurla_(~pfurla@172.58.160.35) (Quit: gone to sleep. ZZZzzz…)
2021-12-14 23:26:18 +0100takuan_dozo(~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection)
2021-12-14 23:28:25 +0100emf_(~emf@2620:10d:c091:480::1:9cd9)
2021-12-14 23:28:53 +0100emf(~emf@2603-6080-9403-11bf-0000-0000-0000-0009.res6.spectrum.com) (Ping timeout: 252 seconds)
2021-12-14 23:30:32 +0100eggplantade(~Eggplanta@2600:1700:bef1:5e10:158b:cfc1:e7b3:d4ac) (Remote host closed the connection)
2021-12-14 23:33:49 +0100 <ph88> Cool idea =)
2021-12-14 23:36:32 +0100 <dsal> I've never used DataKinds. It's one of those things i try to use now and then and then realize it's not actually helping.
2021-12-14 23:37:02 +0100tripa[m](~tripamatr@2001:470:69fc:105::1:4f7e)
2021-12-14 23:41:03 +0100 <janus> dsal: you don't like servant?
2021-12-14 23:41:32 +0100pfurla(~pfurla@172.58.176.86)
2021-12-14 23:41:53 +0100 <dsal> janus: I've never used it on purpose.
2021-12-14 23:42:37 +0100 <dsal> I do most little web stuff with Scotty.
2021-12-14 23:42:49 +0100 <dsal> It seems like a lot less work.
2021-12-14 23:43:25 +0100 <janus> it doesn't give you the same level of safety though
2021-12-14 23:44:05 +0100 <janus> the 'less work' depends on what you're doing
2021-12-14 23:44:17 +0100arahael(~arahael@27-32-144-20.tpgi.com.au) (Ping timeout: 252 seconds)
2021-12-14 23:45:10 +0100 <monochrom> The most advanced (least elementary) type-level technique I have ever used is phantom-typed GADTs, e.g., "data Expr a where IntLit :: Int -> Expr Int; GT :: Expr a -> Expr a -> Expr Bool"
2021-12-14 23:46:41 +0100 <monochrom> But yeah, this is more about reflecting what I use Haskell for.
2021-12-14 23:47:11 +0100 <monochrom> Or what safety I care about in my Haskell code.
2021-12-14 23:48:12 +0100 <janus> i know of a cryptographic multi-signature protocol where there is an intermediate nonce which can't be used twice, or the private key is inferrable
2021-12-14 23:48:27 +0100 <janus> i thought this would be a nice application of linearTypes but Cale once said that it should be doable with ST also
2021-12-14 23:48:36 +0100 <janus> what would you use in a situation like that?
2021-12-14 23:49:34 +0100 <monochrom> This one I think linear typing is more direct.
2021-12-14 23:50:06 +0100 <monochrom> I don't think ST can express it, but I may be wrong, but if I'm wrong, I still think the solution is indirect.
2021-12-14 23:50:54 +0100 <janus> well the ST-like context could keep track of whether operations that could potentially leak the nonce are executed more than once
2021-12-14 23:51:01 +0100 <monochrom> Right? Linear typing has "%1" staring right into your face. :)
2021-12-14 23:51:46 +0100eggplantade(~Eggplanta@2600:1700:bef1:5e10:158b:cfc1:e7b3:d4ac)
2021-12-14 23:51:47 +0100 <janus> if the ST-like context doesn't allow for extracting the nonce out, the API should be safe then
2021-12-14 23:52:01 +0100 <janus> i agree that linear typing seems more direct, but it is also a newer and more unstable feature
2021-12-14 23:52:21 +0100 <janus> you can't have 'let' in a linear do block iirc
2021-12-14 23:53:27 +0100machinedgod(~machinedg@24.105.81.50) (Ping timeout: 252 seconds)
2021-12-14 23:53:38 +0100 <jackdk> but you could use the nonce within an st-like block twice by accident still?
2021-12-14 23:54:22 +0100 <janus> jackdk: no because the 'executor' of this ST-like type would keep track of which operations 'use' the nonce
2021-12-14 23:55:00 +0100 <janus> jackdk: then it could just count, and if it sees more than one use, it crashes and says PC LOAD LETTER :P
2021-12-14 23:55:41 +0100 <janus> don't really know if this i should call it 'ST-like' since it wouldn't really have need the impredicative forall or anything, hmm
2021-12-14 23:55:52 +0100 <jackdk> Right, but unless you're doing typelevel indexed monad-ish stuff you're looking at runtime crashes instead of compile errors?
2021-12-14 23:56:11 +0100 <janus> yeah i guess so, so that is a real disadvantage
2021-12-14 23:56:24 +0100 <jackdk> or if you can get away without a monad, a free applicative would let you inspect the computation before you try to run it
2021-12-14 23:56:43 +0100 <jackdk> still runtime crashes, though
2021-12-14 23:56:58 +0100pfurla_(~pfurla@2804:18:5854:5897:8ac:66e0:c04d:6ee5)
2021-12-14 23:57:32 +0100 <janus> i wonder if it is even doable with linear typing. because presumably you'd need to have it in a monad transformer stack such that the intermediate nonces could be sent across the network. and that shouldn't be part of the cryptographic api itself
2021-12-14 23:58:15 +0100 <janus> i guess it should work since they would just be pure linear functions that could be used in any context