Home liberachat/#haskell: Logs Calendar

Logs on 2024-01-12 (liberachat/#haskell)

00:02:07 × azimut quits (~azimut@gateway/tor-sasl/azimut) (Ping timeout: 240 seconds)
00:04:30 azimut joins (~azimut@gateway/tor-sasl/azimut)
00:05:40 puke joins (~puke@user/puke)
00:09:56 × fansly quits (~fansly@2404:c0:5c10::6601:9777) (Ping timeout: 245 seconds)
00:10:12 fansly joins (~fansly@2001:448a:2010:476e:5d30:627d:73c3:a75f)
00:12:31 [_] joins (~itchyjunk@user/itchyjunk/x-7353470)
00:16:19 × [itchyjunk] quits (~itchyjunk@user/itchyjunk/x-7353470) (Ping timeout: 260 seconds)
00:22:55 × stiell quits (~stiell@gateway/tor-sasl/stiell) (Ping timeout: 240 seconds)
00:42:41 × jmdaemon quits (~jmdaemon@user/jmdaemon) (Ping timeout: 252 seconds)
00:52:33 × flounders quits (~flounders@24.246.176.178) (Quit: WeeChat 4.1.1)
00:56:29 × euleritian quits (~euleritia@77.22.252.56) (Ping timeout: 240 seconds)
00:57:21 euleritian joins (~euleritia@dynamic-046-114-154-050.46.114.pool.telefonica.de)
00:58:31 × barak quits (~barak@2a0d:6fc2:68c1:2600:4270:3360:ac54:f834) (Read error: Connection reset by peer)
01:00:45 <ph88> when i have a function like `forall a. Ord a => Text -> a` it doesn't compile because `a` can be many types. The resulting value then can only be passed to other functions that take `Ord a` but not give back `a`. Why did the designers of haskell choose not to make this possible? Does this feature have a name?
01:02:15 <ncf> what feature?
01:04:59 <ncf> i don't understand what you're saying at all
01:06:26 <geekosaur> actually the resulting value can be passed to other things fine. but only the caller knows what type it is; you as author of the `Ord a => Text -> a` cannot, you only know that it has an `Ord` instance
01:06:46 <geekosaur> but `Ord` doesn't give you enough to do anything useful
01:07:19 × not_reserved quits (~not_reser@185.153.177.185) (Quit: Client closed)
01:07:25 <ph88> https://play.haskell.org/saved/Ih0mrgpK
01:07:50 <ph88> maybe something like this, not sure how to write it in code the best
01:07:57 <haskellbridge> 06<s​m> nice
01:08:14 <ncf> [2, "Text"] ???
01:08:18 <geekosaur> that's not what you described (or if that was what you were trying to describe, you did it poorly)
01:09:03 <haskellbridge> 06<s​m> good step towards making it concrete though
01:09:08 <ph88> i think i described it poorly
01:10:07 <ncf> are you trying to build a heterogeneous list of things that have an Ord instance?
01:10:32 <geekosaur> in the case of a list, all elements must have the same type. that type can be `forall`ed with a newtype or possibly with `ImpredicativeTypes`, but because of runtime type erasure you can't rrecover the original type afterward; all you can know about it is the `Ord` constraint
01:10:35 <ncf> i.e. [exists a. Ord a *> a], not forall a. Ord a => [a]
01:11:53 <ncf> how would you even sort [2, "Text"] though? how do you compare 2 and "Text"?
01:14:12 <EvanR> list can only contain elements of all the same type
01:14:28 <EvanR> oops, duplicated
01:15:14 <EvanR> you would even have a hard time in this case making a list of "sortables", because comparison takes two things of the same type
01:15:33 <EvanR> (by which I mean, making a list of Ord instances)
01:15:39 <ncf> i mean, you could emulate something like that in haskell with a newtype, or some sort of impredicative encoding like forall m. Monoid m => (forall a. Ord a => a -> m) -> m, but i doubt this has any usefulness
01:15:40 <EvanR> (as a record of functions)
01:16:13 <EvanR> is mapping to a monoid equivalent to using binary comparison functions?
01:16:28 <jackdk> Or using something like DSum from dependent-sum and the GCompare class it works with. But heterogenerous lists are often more trouble than they're worth
01:17:47 <ncf> EvanR: what?
01:17:51 <EvanR> to emulate what dynamic language blub does, you can define a sum datatype Value and define Ord for it, then you can make a list of Value. But it's unidiomatic
01:18:20 <EvanR> ncf, is doing what you're doing equivalent to Ord (which is based on a -> a -> Ordering, not a -> m)
01:18:52 <ncf> i am suggesting an encoding of [exists a. Ord a *> a], not an encoding of Ord.
01:19:04 <EvanR> oh
01:19:17 <jackdk> What do you mean by *> in that snippet?
01:19:41 <ncf> *> is to => what (,) is to (->) (blame ski for that notation)
01:20:01 <EvanR> that notation makes complete sense, and is unfortately illegal xD
01:23:36 <ph88> Maybe a bit clearer, but i'm still not sure how to best express it :/ https://play.haskell.org/saved/OT1EjJDF
01:27:14 <ncf> wouldn't you get a [[String]] out of that?
01:27:15 <ph88> this is better https://play.haskell.org/saved/uSEu9pzd
01:27:17 × Lord_of_Life quits (~Lord@user/lord-of-life/x-2819915) (Ping timeout: 240 seconds)
01:27:22 Lord_of_Life_ joins (~Lord@user/lord-of-life/x-2819915)
01:28:44 Lord_of_Life_ is now known as Lord_of_Life
01:29:25 <ph88> i wanted to ask about the two type errors. My question was why the haskell implementers choose to not make this possible. `compare` accepts both Int and String for b, so i think theoretically it would be able to figure it out (if the language was designed differently)
01:29:36 ski glances around nervously
01:30:32 <ncf> ph88: here's what i suggest https://play.haskell.org/saved/P4s0EW5a
01:31:20 <ncf> instead of storing "fields", or "getters" on strings into unknown types, store comparison functions on strings directly
01:31:51 <int-e> ph88: to use `myList`, the caller gets to pick a type `a`. The function has to return a list of elements with type String -> a, a being the type that the caller picked.
01:32:30 <int-e> Which is why this won't even compile if you have only one of those list elements.
01:33:58 <int-e> Now, there are existential types, data HasOrd where HasOrd :: Ord a => a -> HasOrd (I really prefer the GADT syntax for this), but even then you won't be able to compare two such values because they may encapsulate values of different types.
01:35:37 <ph88> Theoretically the caller on line 20 can pick `Int` for `a` in this case
01:35:54 <int-e> (To do such a comparison you'd need compare :: (Ord a, Ord b) => a -> b -> Ordering)
01:35:58 <ph88> if it were (myList !! 1) it can pick `String` instead
01:36:14 <int-e> ph88: if you pick Int for a, the \str -> "hello: " <> str elemnent will be invalid.
01:36:42 <int-e> And if the caller picks () for a then none of the list elements are valid.
01:36:47 <ph88> but we know myFunction does not use \str -> "hello: " <> str .. you can determine this statically
01:37:03 <int-e> It really makes no sense. Haskell is statically typed; the types do not exist at runtime.
01:37:46 <int-e> "we know" - no, type checking is working on open programs, not as a whole program analysis
01:38:04 <ph88> if it were (myList !! (<random number 0 or 1>) then it would break ye
01:38:05 <int-e> So there may be other code that uses myList as just a list of type [String -> ()]
01:38:27 × hgolden quits (~hgolden@2603-8000-9d00-3ed1-a6e3-3ba3-0107-8cff.res6.spectrum.com) (Ping timeout: 260 seconds)
01:38:34 <int-e> Because according to the type you claimed, that is a valid choice (just pick () for a)
01:38:46 <ncf> here's the approach using existential types https://play.haskell.org/saved/Fs9okgN1
01:39:22 <ph88> i know it doesn't work like this, i'm trying to find out what are the cons to allow this kind of code
01:39:27 <ph88> ncf, cool i'll check it
01:40:07 <int-e> ncf: Oh right, existentials are actually applicable in this case, my bad.
01:40:14 <ph88> ncf, wow what's that ? it works now ..
01:40:40 <ncf> int-e: yeah we're not trying to compare things-with-an-ord-instance, we're only using them to compare strings
01:41:41 <ph88> ncf, i will be studying this solution, i never saw this before
01:47:00 <ph88> ncf, can it work with sortWithBy ?
01:47:56 <ncf> how do you mean?
01:48:48 <int-e> :t GHC.Exts.sortWith
01:48:49 <lambdabot> Ord b => (a -> b) -> [a] -> [a]
01:48:49 <ph88> i mean the function i made here https://play.haskell.org/saved/uSEu9pzd
01:49:03 <ncf> what about it
01:49:53 <ph88> hmm not sure why you made a different implementation there, this function sort' which you wrote. Was it necessary to let it work with GADT ?
01:49:59 <int-e> ph88: Where is `comp` supposed to come from?
01:50:53 <ncf> well you do need to pattern match on the GADT to extract a function
01:51:23 <int-e> ph88: You can use a different exitential type that bundles a comparison function rather than an Ord instance, data Foo where Foo :: (String -> a) -> (a -> a -> Ordering) -> Foo
01:51:32 <int-e> And that'll work with sortWithBy
01:52:10 <ncf> and then you're just one yoneda away from data Foo = Foo (String -> String -> Ordering) :)
01:52:15 <ph88> int-e, you can pass in a function for comp, like `compare` function or your own comparison function
01:52:55 <int-e> ncf: But then you can't do Schwartzian transform stuff.
01:53:04 <ncf> true
01:53:19 <int-e> (Which ph88 currently doesn't do, but I imagine that's the plan later on.)
01:53:29 <ph88> how should i do Schwartzian transform ?
01:53:41 <ncf> carefully
01:53:47 <int-e> (If not, I would prefer String -> String -> Ordering myself)
01:53:53 <c_wraith> ph88: I think you're missing a fundamental issue. What does it mean for a definition to have a type like (forall a. [a])? What does it mean for a type variable to exist there?
01:54:21 <int-e> something something existential crisis
01:55:13 <ph88> c_wraith, which paste are you looking at currently ?
01:55:34 <c_wraith> ph88: none of them. I'm simplifying, because I think getting rid of a lot of unnecessary detail will help.
01:55:46 <ncf> (by the way, my last Foo is called Comparison String and it has useful instances: https://hackage.haskell.org/package/base-4.19.0.0/docs/Data-Functor-Contravariant.html#t:Comparison)
01:57:14 <c_wraith> ph88: though the question is inspired by the definition of myList in https://play.haskell.org/saved/uSEu9pzd . That definition can't work, and if you understood why, you'd know the answer to a lot of other questions.
01:58:26 <ph88> i understood why it currently does not work with how haskell works from the beginning
01:59:33 <ncf> but you suggested that haskell could accept that definition somehow, without really proposing an alternative interpretation of that type (unless i've missed it)
02:00:45 <ncf> oh i think i did miss it. <ph88> Theoretically the caller on line 20 can pick `Int` for `a` in this case
02:00:54 <ph88> perhaps if they were to change the language, i wanted to explore if it was theoretically possible. And you surprised me a lot with your paste where you showed it is practically possible with GADT syntax
02:01:01 × machinedgod quits (~machinedg@d173-183-246-216.abhsia.telus.net) (Ping timeout: 264 seconds)
02:01:30 <ncf> the problem is not at the call site, it is at the definition site
02:01:58 <ncf> definitions have to make sense locally given their type signature
02:02:05 <ph88> when i go back to the paste https://play.haskell.org/saved/uSEu9pzd there seemed to be a problem on definition site and also on call site
02:02:38 <ph88> or at least ghc reports two errors
02:02:39 <yushyin> you don't need gadt syntax for existentials
02:02:44 <ncf> the error at the call site can be ignored as long as the definition site doesn't make sense
02:02:56 <ph88> got ya
02:03:08 <ph88> i mean: ah ok i understand
02:04:32 <ph88> does the sortWithBy function not use Schwartzian transform ?
02:04:53 × aforemny_ quits (~aforemny@i59F516DA.versanet.de) (Ping timeout: 240 seconds)
02:05:21 <ncf> no
02:05:48 <ncf> yushyin is right; here's a version that doesn't use GADTs (and generalises over String) https://play.haskell.org/saved/blM0hJiJ
02:06:12 <ncf> (but i think GADT syntax is nicer)
02:07:07 <ph88> how can i make an implementation of sortWithBy that does Schwartzian transform ?
02:07:25 <ph88> ncf, i'll put your paste in my notebook
02:07:55 <ncf> sortOn does Schwartzian transform: https://play.haskell.org/saved/hpMwA6mE
02:11:24 aforemny joins (~aforemny@i59F516FD.versanet.de)
02:11:50 <ph88> ncf, is there something that has schwartzian transform that allows me to pass in my own compare function?
02:14:42 <ncf> you could wrap the compared type in a newtype with its own Ord instance, or you could reimplement sortOn but change comparing fst to comp `on` fst , where comp is an additional argument
02:17:01 <ph88> ncf, thank you
02:19:02 hgolden joins (~hgolden@2603-8000-9d00-3ed1-a6e3-3ba3-0107-8cff.res6.spectrum.com)
02:19:29 × euleritian quits (~euleritia@dynamic-046-114-154-050.46.114.pool.telefonica.de) (Ping timeout: 252 seconds)
02:19:52 × fansly quits (~fansly@2001:448a:2010:476e:5d30:627d:73c3:a75f) (Quit: Quit)
02:20:02 fansly joins (~fansly@2001:448a:2010:476e:5d30:627d:73c3:a75f)
02:21:54 euleritian joins (~euleritia@dynamic-046-114-178-176.46.114.pool.telefonica.de)
02:22:25 × AWizzArd quits (~code@gehrels.uberspace.de) (Changing host)
02:22:25 AWizzArd joins (~code@user/awizzard)
02:26:50 stiell joins (~stiell@gateway/tor-sasl/stiell)
02:39:12 aforemny_ joins (~aforemny@2001:9e8:6cca:d100:b45a:3e0d:4824:990b)
02:39:44 × aforemny quits (~aforemny@i59F516FD.versanet.de) (Ping timeout: 256 seconds)
02:44:21 × Tisoxin quits (~Ikosit@user/ikosit) (Ping timeout: 268 seconds)
02:49:27 × mmhat quits (~mmh@p200300f1c742823fee086bfffe095315.dip0.t-ipconnect.de) (Quit: WeeChat 4.1.2)
02:55:19 × FinnElija quits (~finn_elij@user/finn-elija/x-0085643) (Ping timeout: 240 seconds)
02:56:05 FinnElija joins (~finn_elij@user/finn-elija/x-0085643)
02:59:40 pavonia joins (~user@user/siracusa)
03:01:50 × ystael quits (~ystael@user/ystael) (Ping timeout: 252 seconds)
03:04:20 × fansly quits (~fansly@2001:448a:2010:476e:5d30:627d:73c3:a75f) (Read error: Connection reset by peer)
03:04:22 rosco joins (~rosco@175.136.156.77)
03:06:06 fansly joins (~fansly@2001:448a:2010:476e:5d30:627d:73c3:a75f)
03:11:44 × peterbecich quits (~Thunderbi@047-229-123-186.res.spectrum.com) (Ping timeout: 252 seconds)
03:11:52 jmdaemon joins (~jmdaemon@user/jmdaemon)
03:14:32 × eggplantade quits (~Eggplanta@2600:1700:38c5:d800:acc5:3bfd:1c7c:868d) (Remote host closed the connection)
03:14:48 eggplantade joins (~Eggplanta@2600:1700:38c5:d800:acc5:3bfd:1c7c:868d)
03:31:18 × pounce quits (~pounce@user/cute/pounce) (Ping timeout: 256 seconds)
03:34:21 × fansly quits (~fansly@2001:448a:2010:476e:5d30:627d:73c3:a75f) (Remote host closed the connection)
03:36:11 fansly joins (~fansly@2001:448a:2010:476e:5d30:627d:73c3:a75f)
03:40:30 × puke quits (~puke@user/puke) (Remote host closed the connection)
03:41:39 puke joins (~puke@user/puke)
03:44:39 pounce joins (~pounce@user/cute/pounce)
03:44:58 × td_ quits (~td@i53870918.versanet.de) (Ping timeout: 264 seconds)
03:46:34 td_ joins (~td@i5387092A.versanet.de)
03:47:46 × puke quits (~puke@user/puke) (Remote host closed the connection)
03:48:43 puke joins (~puke@user/puke)
03:54:03 × ph88 quits (~ph88@2a02:8109:9e26:c800:bdfe:539f:caf9:1cba) (Ping timeout: 256 seconds)
03:57:49 × euleritian quits (~euleritia@dynamic-046-114-178-176.46.114.pool.telefonica.de) (Read error: Connection reset by peer)
03:58:07 euleritian joins (~euleritia@77.22.252.56)
04:13:37 × pounce quits (~pounce@user/cute/pounce) (Ping timeout: 264 seconds)
04:15:05 aforemny joins (~aforemny@2001:9e8:6cd5:4e00:6faf:7b3a:ff9f:152b)
04:15:19 × Unicorn_Princess quits (~Unicorn_P@user/Unicorn-Princess/x-3540542) (Quit: Leaving)
04:15:25 × aforemny_ quits (~aforemny@2001:9e8:6cca:d100:b45a:3e0d:4824:990b) (Ping timeout: 260 seconds)
04:16:25 bilegeek joins (~bilegeek@2600:1008:b008:c5b5:46b1:d2ea:c7b3:838c)
04:17:19 × azimut quits (~azimut@gateway/tor-sasl/azimut) (Ping timeout: 240 seconds)
04:17:56 pounce joins (~pounce@user/cute/pounce)
04:19:33 <EvanR> I see your schwartzian transform is as big as mine!
04:25:13 peterbecich joins (~Thunderbi@047-229-123-186.res.spectrum.com)
04:42:05 × pounce quits (~pounce@user/cute/pounce) (Ping timeout: 240 seconds)
04:44:40 Square joins (~Square@user/square)
04:55:01 × fansly quits (~fansly@2001:448a:2010:476e:5d30:627d:73c3:a75f) (Ping timeout: 264 seconds)
04:55:16 fansly joins (~fansly@103.3.220.62)
04:57:08 igemnace joins (~ian@user/igemnace)
05:04:05 × lambdap2371 quits (~lambdap@static.167.190.119.168.clients.your-server.de) (Quit: lambdap2371)
05:04:48 lambdap2371 joins (~lambdap@static.167.190.119.168.clients.your-server.de)
05:05:08 × lambdap2371 quits (~lambdap@static.167.190.119.168.clients.your-server.de) (Remote host closed the connection)
05:05:24 lambdap2371 joins (~lambdap@static.167.190.119.168.clients.your-server.de)
05:05:39 × lambdap2371 quits (~lambdap@static.167.190.119.168.clients.your-server.de) (Read error: Connection reset by peer)
05:06:27 lambdap2371 joins (~lambdap@static.167.190.119.168.clients.your-server.de)
05:07:35 × lambdap2371 quits (~lambdap@static.167.190.119.168.clients.your-server.de) (Remote host closed the connection)
05:07:52 lambdap2371 joins (~lambdap@static.167.190.119.168.clients.your-server.de)
05:08:15 michalz joins (~michalz@185.246.207.205)
05:21:03 trev joins (~trev@user/trev)
05:22:46 causal joins (~eric@50.35.85.7)
05:28:40 × justache quits (~justache@user/justache) (Quit: ZNC 1.8.2 - https://znc.in)
05:32:21 justache joins (~justache@user/justache)
05:35:00 × michalz quits (~michalz@185.246.207.205) (Quit: ZNC 1.8.2 - https://znc.in)
05:37:04 ursa-major joins (~ursa-majo@37.19.210.26)
05:37:50 michalz joins (~michalz@185.246.207.217)
05:39:25 × peterbecich quits (~Thunderbi@047-229-123-186.res.spectrum.com) (Ping timeout: 264 seconds)
05:43:49 × xff0x quits (~xff0x@2405:6580:b080:900:a4be:751a:2735:9c5f) (Ping timeout: 255 seconds)
05:45:44 xff0x joins (~xff0x@178.255.149.135)
05:46:03 × igemnace quits (~ian@user/igemnace) (Quit: WeeChat 4.1.2)
05:55:37 × xff0x quits (~xff0x@178.255.149.135) (Ping timeout: 276 seconds)
05:55:37 × euleritian quits (~euleritia@77.22.252.56) (Ping timeout: 264 seconds)
05:55:47 × justache quits (~justache@user/justache) (Quit: ZNC 1.8.2 - https://znc.in)
05:56:14 euleritian joins (~euleritia@dynamic-046-114-178-176.46.114.pool.telefonica.de)
05:56:57 xff0x joins (~xff0x@2405:6580:b080:900:791d:2159:1f07:cdf2)
05:58:32 justache joins (~justache@user/justache)
05:59:06 × fansly quits (~fansly@103.3.220.62) (Ping timeout: 245 seconds)
05:59:49 fansly joins (~fansly@2404:c0:5c40::2304:f11f)
06:02:13 × euleritian quits (~euleritia@dynamic-046-114-178-176.46.114.pool.telefonica.de) (Read error: Connection reset by peer)
06:03:07 euleritian joins (~euleritia@77.22.252.56)
06:05:58 _ht joins (~Thunderbi@28-52-174-82.ftth.glasoperator.nl)
06:06:34 × bilegeek quits (~bilegeek@2600:1008:b008:c5b5:46b1:d2ea:c7b3:838c) (Quit: Leaving)
06:08:48 bilegeek joins (~bilegeek@2600:1008:b008:c5b5:46b1:d2ea:c7b3:838c)
06:13:05 × pastly quits (~pastly@gateway/tor-sasl/pastly) (Remote host closed the connection)
06:16:30 bilegeek_ joins (~bilegeek@2600:1008:b008:c5b5:46b1:d2ea:c7b3:838c)
06:17:59 takuan joins (~takuan@178-116-218-225.access.telenet.be)
06:18:09 × fansly quits (~fansly@2404:c0:5c40::2304:f11f) (Ping timeout: 260 seconds)
06:18:40 fansly joins (~fansly@2001:448a:2010:476e:5d30:627d:73c3:a75f)
06:20:01 × bilegeek quits (~bilegeek@2600:1008:b008:c5b5:46b1:d2ea:c7b3:838c) (Ping timeout: 260 seconds)
06:20:42 pastly joins (~pastly@gateway/tor-sasl/pastly)
06:21:13 × [_] quits (~itchyjunk@user/itchyjunk/x-7353470) (Remote host closed the connection)
06:24:24 harveypwca joins (~harveypwc@2601:246:c280:7940:585a:99af:3e4c:209b)
06:28:59 × johnw quits (~johnw@69.62.242.138) (Quit: ZNC - http://znc.in)
06:29:21 × euleritian quits (~euleritia@77.22.252.56) (Ping timeout: 260 seconds)
06:29:48 euleritian joins (~euleritia@dynamic-046-114-175-211.46.114.pool.telefonica.de)
06:31:29 johnw joins (~johnw@69.62.242.138)
06:36:03 kubrat joins (~204-NB-00@154.14.244.146)
06:38:09 CiaoSen joins (~Jura@2a05:5800:2c5:6200:ca4b:d6ff:fec1:99da)
06:44:02 × kubrat quits (~204-NB-00@154.14.244.146) (Ping timeout: 252 seconds)
06:48:32 kubrat joins (~204-NB-00@154.14.244.146)
06:52:32 × justache quits (~justache@user/justache) (Read error: Connection reset by peer)
06:52:49 × EsoAlgo81 quits (~EsoAlgo@129.146.136.145) (Ping timeout: 276 seconds)
06:55:46 × chexum quits (~quassel@gateway/tor-sasl/chexum) (Remote host closed the connection)
06:56:03 chexum joins (~quassel@gateway/tor-sasl/chexum)
06:56:14 justache joins (~justache@user/justache)
06:57:48 acidjnk joins (~acidjnk@p200300d6e72b93999cf477e55e9327dd.dip0.t-ipconnect.de)
07:00:48 × justache quits (~justache@user/justache) (Remote host closed the connection)
07:03:35 justache joins (~justache@user/justache)
07:12:34 oo_miguel joins (~Thunderbi@78-11-179-96.static.ip.netia.com.pl)
07:24:49 sord937 joins (~sord937@gateway/tor-sasl/sord937)
07:28:40 × xdminsy quits (~xdminsy@117.147.71.199) (Ping timeout: 255 seconds)
07:29:43 xdminsy joins (~xdminsy@117.147.71.199)
07:34:17 lisbeths_ joins (uid135845@id-135845.lymington.irccloud.com)
07:34:41 × fansly quits (~fansly@2001:448a:2010:476e:5d30:627d:73c3:a75f) (Remote host closed the connection)
07:40:11 nschoe joins (~nschoe@2a01:e0a:8e:a190:bcb8:703f:d588:6cea)
07:40:17 × dragestil quits (~znc@user/dragestil) (Ping timeout: 260 seconds)
07:40:19 tstat_ joins (~tstat@user/tstat)
07:40:20 dragestil_ joins (~znc@user/dragestil)
07:40:22 sajith_ joins (~sajith@user/sajith)
07:40:33 × bilegeek_ quits (~bilegeek@2600:1008:b008:c5b5:46b1:d2ea:c7b3:838c) (Quit: Leaving)
07:40:51 guygastineau joins (~guygastin@137.184.131.156)
07:41:02 energizer_ joins (~energizer@user/energizer)
07:41:09 × sajith quits (~sajith@user/sajith) (Ping timeout: 256 seconds)
07:41:14 × tstat quits (~tstat@user/tstat) (Ping timeout: 260 seconds)
07:41:17 × energizer quits (~energizer@user/energizer) (Ping timeout: 268 seconds)
07:41:17 × davean quits (~davean@davean.sciesnet.net) (Ping timeout: 268 seconds)
07:41:17 × RMSBach quits (~guygastin@137.184.131.156) (Ping timeout: 268 seconds)
07:42:27 dragestil_ is now known as dragestil
07:43:53 fansly joins (~fansly@2001:448a:2010:476e:5d30:627d:73c3:a75f)
07:46:37 × nschoe quits (~nschoe@2a01:e0a:8e:a190:bcb8:703f:d588:6cea) (Ping timeout: 264 seconds)
07:47:13 × krei-se quits (~krei-se@p508747fd.dip0.t-ipconnect.de) (Ping timeout: 264 seconds)
07:48:38 krei-se joins (~krei-se@p508747fd.dip0.t-ipconnect.de)
07:49:14 machinedgod joins (~machinedg@d173-183-246-216.abhsia.telus.net)
07:50:16 × ft quits (~ft@p4fc2a1d8.dip0.t-ipconnect.de) (Ping timeout: 256 seconds)
07:51:41 vpan joins (~vpan@212.117.1.172)
07:51:42 × FragByte quits (~christian@user/fragbyte) (Read error: Connection reset by peer)
07:51:50 FragByte_ joins (~christian@user/fragbyte)
07:52:14 FragByte_ is now known as FragByte
07:52:17 ft joins (~ft@p4fc2a1d8.dip0.t-ipconnect.de)
07:54:47 davean joins (~davean@davean.sciesnet.net)
07:55:05 lortabac joins (~lortabac@2a01:e0a:541:b8f0:55ab:e185:7f81:54a4)
07:57:32 tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
07:57:56 × mulk quits (~mulk@p5b2dc93f.dip0.t-ipconnect.de) (Ping timeout: 268 seconds)
07:58:02 benkard joins (~mulk@p5b2dc93f.dip0.t-ipconnect.de)
07:58:26 benkard is now known as mulk
07:58:56 × jjhoo_ quits (~jahakala@user/jjhoo) (Remote host closed the connection)
08:07:01 × euleritian quits (~euleritia@dynamic-046-114-175-211.46.114.pool.telefonica.de) (Read error: Connection reset by peer)
08:07:19 euleritian joins (~euleritia@77.22.252.56)
08:08:27 × eggplantade quits (~Eggplanta@2600:1700:38c5:d800:acc5:3bfd:1c7c:868d) (Read error: Connection reset by peer)
08:08:49 × FragByte quits (~christian@user/fragbyte) (Ping timeout: 264 seconds)
08:09:37 FragByte joins (~christian@user/fragbyte)
08:09:44 × acidjnk quits (~acidjnk@p200300d6e72b93999cf477e55e9327dd.dip0.t-ipconnect.de) (Remote host closed the connection)
08:10:03 × ridcully quits (~ridcully@p57b52ac5.dip0.t-ipconnect.de) (Ping timeout: 256 seconds)
08:10:09 acidjnk joins (~acidjnk@p200300d6e72b93999cf477e55e9327dd.dip0.t-ipconnect.de)
08:10:09 igemnace joins (~ian@user/igemnace)
08:10:09 × ft quits (~ft@p4fc2a1d8.dip0.t-ipconnect.de) (Ping timeout: 260 seconds)
08:10:37 × krei-se quits (~krei-se@p508747fd.dip0.t-ipconnect.de) (Ping timeout: 260 seconds)
08:11:48 × mulk quits (~mulk@p5b2dc93f.dip0.t-ipconnect.de) (Ping timeout: 256 seconds)
08:11:56 ft joins (~ft@p4fc2a1d8.dip0.t-ipconnect.de)
08:12:14 × acidjnk quits (~acidjnk@p200300d6e72b93999cf477e55e9327dd.dip0.t-ipconnect.de) (Remote host closed the connection)
08:12:37 acidjnk joins (~acidjnk@p200300d6e72b93999cf477e55e9327dd.dip0.t-ipconnect.de)
08:13:24 mulk joins (~mulk@p5b2dc93f.dip0.t-ipconnect.de)
08:13:44 × acidjnk quits (~acidjnk@p200300d6e72b93999cf477e55e9327dd.dip0.t-ipconnect.de) (Remote host closed the connection)
08:14:24 acidjnk joins (~acidjnk@p200300d6e72b93999cf477e55e9327dd.dip0.t-ipconnect.de)
08:15:14 × acidjnk quits (~acidjnk@p200300d6e72b93999cf477e55e9327dd.dip0.t-ipconnect.de) (Remote host closed the connection)
08:15:36 nschoe joins (~nschoe@2a01:e0a:8e:a190:bcb8:703f:d588:6cea)
08:15:59 × lortabac quits (~lortabac@2a01:e0a:541:b8f0:55ab:e185:7f81:54a4) (Quit: WeeChat 4.1.1)
08:16:05 chele joins (~chele@user/chele)
08:16:30 acidjnk joins (~acidjnk@p200300d6e72b93999cf477e55e9327dd.dip0.t-ipconnect.de)
08:16:44 × acidjnk quits (~acidjnk@p200300d6e72b93999cf477e55e9327dd.dip0.t-ipconnect.de) (Remote host closed the connection)
08:16:57 Lycurgus joins (~georg@user/Lycurgus)
08:17:12 ridcully joins (~ridcully@p57b52ac5.dip0.t-ipconnect.de)
08:18:42 gmg joins (~user@user/gehmehgeh)
08:18:51 × harveypwca quits (~harveypwc@2601:246:c280:7940:585a:99af:3e4c:209b) (Quit: Leaving)
08:19:04 acidjnk joins (~acidjnk@p200300d6e72b93999cf477e55e9327dd.dip0.t-ipconnect.de)
08:19:45 × gmg quits (~user@user/gehmehgeh) (Remote host closed the connection)
08:20:05 × FragByte quits (~christian@user/fragbyte) (Quit: Quit)
08:20:21 FragByte joins (~christian@user/fragbyte)
08:20:29 gmg joins (~user@user/gehmehgeh)
08:21:17 × gmg quits (~user@user/gehmehgeh) (Remote host closed the connection)
08:22:03 gmg joins (~user@user/gehmehgeh)
08:22:13 krei-se joins (~krei-se@p508747fd.dip0.t-ipconnect.de)
08:24:06 lortabac joins (~lortabac@2a01:e0a:541:b8f0:55ab:e185:7f81:54a4)
08:26:51 acidjnk_new joins (~acidjnk@p200300d6e72b93999cf477e55e9327dd.dip0.t-ipconnect.de)
08:27:44 × acidjnk_new quits (~acidjnk@p200300d6e72b93999cf477e55e9327dd.dip0.t-ipconnect.de) (Remote host closed the connection)
08:28:07 acidjnk_new joins (~acidjnk@p200300d6e72b93999cf477e55e9327dd.dip0.t-ipconnect.de)
08:28:29 bilegeek joins (~bilegeek@2600:1008:b008:c5b5:46b1:d2ea:c7b3:838c)
08:29:56 × acidjnk quits (~acidjnk@p200300d6e72b93999cf477e55e9327dd.dip0.t-ipconnect.de) (Ping timeout: 256 seconds)
08:31:08 × bliminse quits (~bliminse@user/bliminse) (Quit: leaving)
08:32:31 × fansly quits (~fansly@2001:448a:2010:476e:5d30:627d:73c3:a75f) (Remote host closed the connection)
08:35:31 × zeka_ quits (~zeka@2600:1700:2121:180:6099:debe:d4d8:d92e) (Read error: Connection reset by peer)
08:44:06 <cheater> https://en.wikipedia.org/wiki/Schwartzian_transform
08:44:19 <cheater> how does $a->[1] get populated?
08:44:57 cfricke joins (~cfricke@user/cfricke)
08:45:12 fansly joins (~fansly@103.3.220.62)
08:46:30 <dminuoso_> By map { [$_, length($_)] }
08:47:00 <cheater> oh right
08:47:05 eggplantade joins (~Eggplanta@2600:1700:38c5:d800:acc5:3bfd:1c7c:868d)
08:47:19 × chexum quits (~quassel@gateway/tor-sasl/chexum) (Ping timeout: 240 seconds)
08:47:20 <cheater> but how does that "not create a temporary array"?
08:47:36 chexum joins (~quassel@gateway/tor-sasl/chexum)
08:47:40 <dminuoso_> cheater: Read carefully, the wikipedia is trying to pull a fast one.
08:47:51 <cheater> i don't know what you're saying
08:47:55 <cheater> later on they say: The same algorithm can be written procedurally to better illustrate how it works, but this requires using temporary arrays, and is not a Schwartzian transform. The following example pseudo-code implements the algorithm in this way:
08:47:58 <cheater> ...
08:47:59 <cheater> etc
08:48:01 <dminuoso_> It's somewhat beyond me how this style deserves a name, let alone a wikipedia article.
08:48:03 <int-e> > map fst . sortBy (comparing snd) . map (\x -> (x, length x)) $ words "to be or not to be, that is the question"
08:48:04 <lambdabot> ["to","be","or","to","is","not","be,","the","that","question"]
08:48:13 <dminuoso_> cheater: It says "does not use *named* temporary arrays.
08:48:19 <dminuoso_> It's a completely silly distinction.
08:48:32 <dminuoso_> It may have some relevance in a particular language implementation for a particular language.
08:48:46 <cheater> the text i pasted does not say "named"
08:48:59 <int-e> (it feels unnatural to me to put the sorting key second, btw)
08:49:02 <dminuoso_> cheater: Yeah, the wikipedia article is poorly written.
08:49:09 <dminuoso_> cheater: In the first mention it says "named"
08:49:10 <cheater> while the code does used an array with a name, the text itself doesn't
08:49:12 <int-e> (but that's what the Perl code does)
08:49:16 <cheater> say it
08:49:52 <cheater> i think maybe the people who coined schwartzian transform, and the people who later wrote this article, are confused and really want to say that the annotation is done in point-free style?
08:50:02 × Square quits (~Square@user/square) (Ping timeout: 268 seconds)
08:50:19 <dminuoso_> cheater: It's really just a silly way of trying to impress someone with either composing functions (and thereby avoiding naming intermediate results) or some weak hint at automatic streaming for a given language.
08:50:26 <dminuoso_> cheater: Maybe yeah.
08:50:40 <dminuoso_> The whole thing does not deserve an article.
08:50:52 <dminuoso_> It's just a particular use case of memoization, thats all.
08:51:23 <int-e> it's a pop culture article :-P
08:51:32 fendor joins (~fendor@2a02:8388:1605:d100:267b:1353:13d7:4f0c)
08:51:44 bliminse joins (~bliminse@user/bliminse)
08:52:33 <dminuoso_> Here's my shortened version of the article: Memoization is useful.
08:52:44 <dminuoso_> Next article!
08:52:57 <Lycurgus> an apparently excellent article
08:53:06 <int-e> Naming things often happens by accident anyway... a lot of obvius things somehow have names attached. What do you make of Bayes Theorem? It's just a manipulation of the definition of conditional probabilities... why is it named? :-P
08:53:25 <int-e> dminuoso_: too abstract
08:53:39 <int-e> dminuoso_: will be deleted because Wikipedia doesn't support original research
08:54:29 <dminuoso_> Okay, here's another attempt: If you do something twice, it's twice as much work as if you had done it once.
08:54:48 <Lycurgus> hs circle jerks are ok off main space, on the talk pages
08:55:08 <dminuoso_> But this lacks references, doesnt it.
08:55:10 <dminuoso_> Huh.
08:55:37 × kubrat quits (~204-NB-00@154.14.244.146) (Ping timeout: 264 seconds)
08:56:38 kubrat joins (~204-NB-00@154.14.244.146)
09:06:25 × fansly quits (~fansly@103.3.220.62) (Ping timeout: 264 seconds)
09:06:49 fansly joins (~fansly@2001:448a:2010:476e:5d30:627d:73c3:a75f)
09:08:24 coot joins (~coot@89-69-206-216.dynamic.chello.pl)
09:15:51 × szkl quits (uid110435@id-110435.uxbridge.irccloud.com) (Quit: Connection closed for inactivity)
09:20:43 × shriekingnoise quits (~shrieking@186.137.175.87) (Ping timeout: 255 seconds)
09:21:53 × tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
09:22:42 × econo_ quits (uid147250@id-147250.tinside.irccloud.com) (Quit: Connection closed for inactivity)
09:22:47 × michalz quits (~michalz@185.246.207.217) (Quit: ZNC 1.8.2 - https://znc.in)
09:23:37 × nschoe quits (~nschoe@2a01:e0a:8e:a190:bcb8:703f:d588:6cea) (Ping timeout: 276 seconds)
09:31:22 nschoe joins (~nschoe@2a01:e0a:8e:a190:bcb8:703f:d588:6cea)
09:37:42 michalz joins (~michalz@185.246.207.205)
09:48:52 × fansly quits (~fansly@2001:448a:2010:476e:5d30:627d:73c3:a75f) (Ping timeout: 246 seconds)
09:51:57 danse-nr3 joins (~danse@151.43.217.212)
09:52:43 × rosco quits (~rosco@175.136.156.77) (Quit: Lost terminal)
10:01:10 × cross quits (~cross@spitfire.i.gajendra.net) (Ping timeout: 256 seconds)
10:01:54 × tzh quits (~tzh@c-71-193-181-0.hsd1.or.comcast.net) (Quit: zzz)
10:04:53 AndreiDuma joins (~textual@95.76.23.32)
10:06:53 × waleee quits (~waleee@h-176-10-144-38.NA.cust.bahnhof.se) (Ping timeout: 240 seconds)
10:10:30 mmhat joins (~mmh@p200300f1c742823fee086bfffe095315.dip0.t-ipconnect.de)
10:25:10 [itchyjunk] joins (~itchyjunk@user/itchyjunk/x-7353470)
10:30:20 famubu_ parts (~julinuser@14.139.174.50) ()
10:31:46 × lortabac quits (~lortabac@2a01:e0a:541:b8f0:55ab:e185:7f81:54a4) (Ping timeout: 256 seconds)
10:33:25 × kubrat quits (~204-NB-00@154.14.244.146) (Ping timeout: 264 seconds)
10:36:19 × phma quits (~phma@host-67-44-208-126.hnremote.net) (Read error: Connection reset by peer)
10:37:30 phma joins (~phma@host-67-44-208-164.hnremote.net)
10:38:53 mechap joins (~mechap@user/mechap)
10:42:14 × Vq quits (~vq@90-225-115-195-no122.tbcn.telia.com) (Ping timeout: 260 seconds)
10:44:50 × Sgeo quits (~Sgeo@user/sgeo) (Read error: Connection reset by peer)
10:44:53 tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
10:53:45 Vq joins (~vq@90-225-115-195-no122.tbcn.telia.com)
10:56:54 szkl joins (uid110435@id-110435.uxbridge.irccloud.com)
10:57:04 __monty__ joins (~toonn@user/toonn)
11:00:57 Tisoxin joins (~Ikosit@user/ikosit)
11:05:04 kubrat joins (~204-NB-00@154.14.244.146)
11:05:17 meritamen joins (~meritamen@user/meritamen)
11:11:59 × jmdaemon quits (~jmdaemon@user/jmdaemon) (Ping timeout: 260 seconds)
11:13:52 × lisbeths_ quits (uid135845@id-135845.lymington.irccloud.com) (Quit: Connection closed for inactivity)
11:16:59 lortabac joins (~lortabac@2a01:e0a:541:b8f0:55ab:e185:7f81:54a4)
11:19:11 × sroso quits (~sroso@user/SrOso) (Quit: Leaving :))
11:20:59 <cheater> dminuoso_: how is that a use case of memoization?
11:21:05 × bilegeek quits (~bilegeek@2600:1008:b008:c5b5:46b1:d2ea:c7b3:838c) (Quit: Leaving)
11:21:25 × mechap quits (~mechap@user/mechap) (Ping timeout: 264 seconds)
11:21:28 <cheater> i don't think it's memoization if you precompute all the results ahead of time in one batch
11:21:29 <dminuoso_> cheater: So most implementations have to revisit elements multiple times (that is most sorts are not linear)
11:21:48 <cheater> yes, they do. but in my experience memoization stores upon first access, not before accesses happen.
11:21:53 <dminuoso_> cheater: The whole point is to think that, if you wanted to sort by length, re-taking the length of a string multiple times is wasted work.
11:22:12 <dminuoso_> cheater: Oh that depends on the evaluation model, doesnt it.
11:22:27 <dminuoso_> Since we are in #haskell there would certainly not be any difference.
11:23:13 <cheater> laziness is not assumed in general when talking about compsci ideas, but i agree, in this case, laziness helps
11:23:34 <dminuoso_> cheater: Oh this is *all* about evaluation strategy now.
11:23:48 <dminuoso_> 12:21:48 cheater │ yes, they do. but in my experience memoization stores upon first access, not before accesses happen.
11:24:04 <dminuoso_> Id say that is a mostly meaningless distinction
11:24:27 <dminuoso_> Conceptually, this is about when you commit that memory holding the (say) length values.
11:24:49 <cheater> it's a small distinction only in case of an algorithm that traverses the whole data structure and not a subset of it.
11:25:07 <dminuoso_> cheater: The core isnt about pre-computing the lenght, its about not re-computing.
11:25:20 <dminuoso_> Most languages dont have enough lazyness to do what we do in Haskell
11:25:30 <dminuoso_> Or they might, and its hidden inside some streaming abstraction
11:25:37 <tomsmeding> or you could build it yourself
11:25:55 <tomsmeding> but the point of this special case of memoisation _is_ for cases where you'll need all the values anyway, right?
11:26:06 <tomsmeding> so you can just as well optimise it and compute them in batch instead of on-demand
11:26:48 <dminuoso_> For a sort, arent you forced to look at every element anyway?
11:27:02 <tomsmeding> yes
11:27:07 <tomsmeding> that's the point
11:27:30 <tomsmeding> <cheater> it's a small distinction only in case of an algorithm that traverses the whole data structure and not a subset of it.
11:27:33 <dminuoso_> Ultimately I dont even think there's a sensible performance difference. If anything, pre-computing all could be slightly faster due to locality of reference.
11:27:35 <tomsmeding> we are in that case
11:27:54 <tomsmeding> due to locality of reference and also due to less laziness administration overhead
11:28:44 <dminuoso_> Is there weaker forms of sorting where you can operate on infinite lists and `take` some part of it?
11:29:07 <tomsmeding> depends on what you mean with "weaker" I guess :p
11:29:15 <dminuoso_> I mean something like `min` doesnt necessarily need to access element.
11:29:23 <dminuoso_> If you have some additional knowledge about the data.
11:29:24 <tomsmeding> for normal sorting you must allow for the possibility for the head element to occur arbitrarily late
11:29:27 <tomsmeding> right
11:30:39 × lortabac quits (~lortabac@2a01:e0a:541:b8f0:55ab:e185:7f81:54a4) (Ping timeout: 260 seconds)
11:30:43 <dminuoso_> It might seem like a silly question, but then again compsci students are regularly and falsely taught that linear-time sorting was not possible.
11:31:03 <tomsmeding> true
11:36:24 <danse-nr3> one month ago or so we were chatting about an old version of List.sort that played nice with take, so that take 0 . sort performs as min
11:36:46 <int-e> lol
11:36:51 <int-e> > take 0 undefined
11:36:52 <lambdabot> []
11:40:51 × euleritian quits (~euleritia@77.22.252.56) (Read error: Connection reset by peer)
11:41:01 <int-e> I wouldn't call the linear time sorting thing false. Sure, it's really about comparisons in comparison-based sorting algorithms so you get exceptions like bucket sort or stuff like suffix arrays. But I feel that it's not a statement that will lead you awfully astray.
11:41:29 euleritian joins (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de)
11:41:36 <int-e> "inaccurate", maybe
11:43:54 × igemnace quits (~ian@user/igemnace) (Remote host closed the connection)
11:43:54 <int-e> see also https://en.wikipedia.org/wiki/Lie-to-children
11:43:54 <tomsmeding> even in bucket sort there is _some_ kind of logarithmic-ish effect
11:43:54 <tomsmeding> in the word length
11:43:54 <tomsmeding> like, it's a constant, sure, but you do get a memory-time tradeoff
11:43:54 <tomsmeding> you can split the word length up in any number of pieces you want, and you get different memory-time tradeoffs
11:43:54 <int-e> right, the RAM model has a ton of practical issues :-)
11:43:57 <tomsmeding> also that
11:47:51 × kubrat quits (~204-NB-00@154.14.244.146) (Ping timeout: 245 seconds)
11:53:19 lortabac joins (~lortabac@2a01:e0a:541:b8f0:55ab:e185:7f81:54a4)
12:01:11 × CiaoSen quits (~Jura@2a05:5800:2c5:6200:ca4b:d6ff:fec1:99da) (Ping timeout: 245 seconds)
12:01:31 × dtman34 quits (~dtman34@2601:447:d000:93c9:11cd:3dc8:3c6c:d94e) (Ping timeout: 268 seconds)
12:03:32 dtman34 joins (~dtman34@c-76-156-89-180.hsd1.mn.comcast.net)
12:03:41 × danse-nr3 quits (~danse@151.43.217.212) (Read error: Connection reset by peer)
12:08:37 ph88 joins (~ph88@2a02:8109:9e26:c800:5cfe:23d9:a7ed:ad2)
12:10:37 × cfricke quits (~cfricke@user/cfricke) (Ping timeout: 264 seconds)
12:11:47 × AndreiDuma quits (~textual@95.76.23.32) (Quit: My MacBook has gone to sleep. ZZZzzz…)
12:19:43 × ChaiTRex quits (~ChaiTRex@user/chaitrex) (Ping timeout: 240 seconds)
12:21:05 sawilagar joins (~sawilagar@user/sawilagar)
12:21:19 ChaiTRex joins (~ChaiTRex@user/chaitrex)
12:24:39 AndreiDuma joins (~textual@95.76.23.32)
12:25:10 × euleritian quits (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Ping timeout: 264 seconds)
12:26:06 euleritian joins (~euleritia@dynamic-046-114-169-099.46.114.pool.telefonica.de)
12:26:38 × AndreiDuma quits (~textual@95.76.23.32) (Client Quit)
12:28:13 × nschoe quits (~nschoe@2a01:e0a:8e:a190:bcb8:703f:d588:6cea) (Ping timeout: 276 seconds)
12:29:19 fansly joins (~fansly@2001:448a:2010:476e:5d30:627d:73c3:a75f)
12:33:25 × mikess quits (~mikess@user/mikess) (Ping timeout: 264 seconds)
12:34:10 × fansly quits (~fansly@2001:448a:2010:476e:5d30:627d:73c3:a75f) (Read error: Connection reset by peer)
12:39:45 danse-nr3 joins (~danse@151.57.163.252)
12:42:29 azimut joins (~azimut@gateway/tor-sasl/azimut)
12:42:54 kubrat joins (~204-NB-00@154.14.244.146)
12:50:52 AndreiDuma joins (~textual@95.76.23.32)
12:51:04 × azimut quits (~azimut@gateway/tor-sasl/azimut) (Quit: ZNC - https://znc.in)
12:51:25 × euleritian quits (~euleritia@dynamic-046-114-169-099.46.114.pool.telefonica.de) (Read error: Connection reset by peer)
12:51:43 euleritian joins (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de)
12:51:51 azimut joins (~azimut@gateway/tor-sasl/azimut)
12:56:43 × meritamen quits (~meritamen@user/meritamen) (Quit: My MacBook has gone to sleep. ZZZzzz…)
12:58:46 nschoe joins (~nschoe@2a01:e0a:8e:a190:bcb8:703f:d588:6cea)
12:59:11 × phma quits (~phma@host-67-44-208-164.hnremote.net) (Read error: Connection reset by peer)
12:59:53 phma joins (phma@2001:5b0:215d:bf88:966b:4a18:e3bc:816e)
13:00:52 Zmzi joins (rscastilho@user/Zmzi)
13:01:17 pounce joins (~pounce@user/cute/pounce)
13:05:13 × nschoe quits (~nschoe@2a01:e0a:8e:a190:bcb8:703f:d588:6cea) (Ping timeout: 264 seconds)
13:05:14 × euleritian quits (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Read error: Connection reset by peer)
13:05:39 euleritian joins (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de)
13:09:16 × pounce quits (~pounce@user/cute/pounce) (Remote host closed the connection)
13:11:53 pounce joins (~pounce@user/cute/pounce)
13:18:59 × ph88 quits (~ph88@2a02:8109:9e26:c800:5cfe:23d9:a7ed:ad2) (Remote host closed the connection)
13:19:05 × Szilva quits (~Szilva@91-83-10-47.pool.digikabel.hu) (Ping timeout: 260 seconds)
13:20:09 <haskellbridge> 14<m​auke> dminuoso_: there is a different sort-with-memoization algorithm that is not the Schwartzian transform, so there is still a distinction to be made
13:20:47 <haskellbridge> 14<m​auke> (I mean the orcish maneuver)
13:20:58 meritamen joins (~meritamen@user/meritamen)
13:21:16 × meritamen quits (~meritamen@user/meritamen) (Client Quit)
13:21:20 ph88 joins (~ph88@2a02:8109:9e26:c800:ebe:cfcf:47b5:b54e)
13:21:55 × tv quits (~tv@user/tv) (Ping timeout: 255 seconds)
13:23:42 nschoe joins (~nschoe@2a01:e0a:8e:a190:bcb8:703f:d588:6cea)
13:26:58 × azimut quits (~azimut@gateway/tor-sasl/azimut) (Remote host closed the connection)
13:28:28 azimut joins (~azimut@gateway/tor-sasl/azimut)
13:28:39 × nschoe quits (~nschoe@2a01:e0a:8e:a190:bcb8:703f:d588:6cea) (Ping timeout: 256 seconds)
13:34:56 × Zmzi quits (rscastilho@user/Zmzi) (Ping timeout: 245 seconds)
13:35:11 tv joins (~tv@user/tv)
13:36:01 Zmzi joins (rscastilho@189.61.140.215)
13:36:45 × Zmzi quits (rscastilho@189.61.140.215) (Remote host closed the connection)
13:38:25 <cheater> danse-nr3: why wouldn't take 0 . sort perform as min?
13:39:15 Zmzi joins (rscastilho@user/Zmzi)
13:41:37 <danse-nr3> it does in that (OldList? Not sure) module, not in Data.List
13:41:46 nschoe joins (~nschoe@2a01:e0a:8e:a190:bcb8:703f:d588:6cea)
13:42:43 eron joins (~eron@191.23.127.161)
13:43:03 <danse-nr3> i guess that requires an algorithm that is not ideal in other sorting use cases
13:49:04 <tomsmeding> cheater: 'take 1', for starters
13:49:18 <cheater> yeah i know
13:49:57 <tomsmeding> and it would always be observationally equivalent to minimum, but one might wonder about the complexity
13:49:58 <cheater> danse-nr3: i don't get it. why wouldn't sort, sort a list, from smallest to biggest value?
13:50:24 <tomsmeding> like, minimum is O(n), but if sort is mergesort, then take 1 . sort is likely to be O(n log n)
13:50:29 <cheater> tomsmeding: ok, so are you guys saying it might abort some of the computation if you were only to take 1 element?
13:50:40 × euleritian quits (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Ping timeout: 256 seconds)
13:50:42 <cheater> gotcha.
13:50:56 <tomsmeding> there are sort algorithms that produce the first element in O(n) and gracefully degrade to O(n log n) as you require the whole list
13:50:58 Szilva joins (~Szilva@77-234-80-135.pool.digikabel.hu)
13:51:04 euleritian joins (~euleritia@dynamic-046-114-169-099.46.114.pool.telefonica.de)
13:51:16 <tomsmeding> 'minimum' will still be more efficient than take 1 . sort
13:51:40 <tomsmeding> in terms of constant-factors
13:52:31 × azimut quits (~azimut@gateway/tor-sasl/azimut) (Ping timeout: 240 seconds)
13:53:09 <int-e> tomsmeding: but if your merge sort is evaluated lazily it becomes a heap sort
13:53:47 × mmhat quits (~mmh@p200300f1c742823fee086bfffe095315.dip0.t-ipconnect.de) (Quit: WeeChat 4.1.2)
13:54:43 <int-e> (You actually get a linear time `take 1 . sort` with Data.List.sort, and O(n + k log(n)) for `take k . sort`)
13:56:15 <tomsmeding> sure, but then getting the head is still n log n, right?
13:56:19 × fendor quits (~fendor@2a02:8388:1605:d100:267b:1353:13d7:4f0c) (Remote host closed the connection)
13:56:21 <int-e> (Not the array-based heap sort... but there is a heap-like tree of nested merges being evaluated lazily)
13:56:24 <int-e> tomsmeding: No, it isn't.
13:57:54 <int-e> You have O(n) nested `merge` calls and each `merge` call produces its head in a single comparison, looking just at the head of its arguments.
13:58:17 <int-e> So after O(n) steps you have the head of the outermost merge, which is the head of the nested list.
13:58:28 <int-e> ... s/nested/sorted/
13:58:40 <tomsmeding> the merge sort I know recursively subdivides the list in two, producing an O(log n)-depth tree of merges
13:58:51 <int-e> Yes
13:59:22 <tomsmeding> then you have that 1. you're looking at each element of the input list, however you shake it
13:59:30 <int-e> But if you just want the head, you don't have to fully evaluate most of the merges... you only need the head of every intermediate result
13:59:37 <tomsmeding> and 2. that you're going to have to walk to at least one leaf of that tree
13:59:38 <int-e> Yes, that's O(n)
13:59:41 <tomsmeding> oh
13:59:42 <tomsmeding> right
13:59:46 <tomsmeding> n + log n that is
14:00:01 <tomsmeding> me brain not working
14:00:38 <int-e> It's n-1 comparisons to get the head if you start with n singleton lists.
14:00:51 <tomsmeding> yeah I get it now
14:01:14 <int-e> (But Data.List.sort computes ascending and descending runs, so it's a bit more complicated. Still O(n) though.)
14:14:39 × AndreiDuma quits (~textual@95.76.23.32) (Quit: My MacBook has gone to sleep. ZZZzzz…)
14:18:48 shriekingnoise joins (~shrieking@186.137.175.87)
14:20:50 igemnace joins (~ian@user/igemnace)
14:21:32 thegeekinside joins (~thegeekin@189.217.90.224)
14:27:16 AndreiDuma joins (~textual@95.76.23.32)
14:29:38 × kubrat quits (~204-NB-00@154.14.244.146) (Quit: leaving)
14:39:30 eggplant_ joins (~Eggplanta@2600:1700:38c5:d800:601b:b49a:1e36:7b08)
14:42:27 × eggplantade quits (~Eggplanta@2600:1700:38c5:d800:acc5:3bfd:1c7c:868d) (Ping timeout: 260 seconds)
14:44:06 × eron quits (~eron@191.23.127.161) (Quit: Client closed)
14:47:19 × ChaiTRex quits (~ChaiTRex@user/chaitrex) (Ping timeout: 240 seconds)
14:49:02 ChaiTRex joins (~ChaiTRex@user/chaitrex)
14:54:47 × ph88 quits (~ph88@2a02:8109:9e26:c800:ebe:cfcf:47b5:b54e) (Ping timeout: 256 seconds)
14:59:59 × rvalue quits (~rvalue@user/rvalue) (Quit: ZNC - https://znc.in)
15:00:23 rvalue joins (~rvalue@user/rvalue)
15:03:32 azimut joins (~azimut@gateway/tor-sasl/azimut)
15:03:33 × euleritian quits (~euleritia@dynamic-046-114-169-099.46.114.pool.telefonica.de) (Read error: Connection reset by peer)
15:03:35 ystael joins (~ystael@user/ystael)
15:04:56 euleritian joins (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de)
15:06:31 × azimut quits (~azimut@gateway/tor-sasl/azimut) (Remote host closed the connection)
15:06:59 azimut joins (~azimut@gateway/tor-sasl/azimut)
15:09:59 × euleritian quits (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Read error: Connection reset by peer)
15:10:35 × szkl quits (uid110435@id-110435.uxbridge.irccloud.com) (Quit: Connection closed for inactivity)
15:10:35 euleritian joins (~euleritia@dynamic-046-114-169-099.46.114.pool.telefonica.de)
15:10:59 × euleritian quits (~euleritia@dynamic-046-114-169-099.46.114.pool.telefonica.de) (Read error: Connection reset by peer)
15:11:16 euleritian joins (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de)
15:16:28 × lortabac quits (~lortabac@2a01:e0a:541:b8f0:55ab:e185:7f81:54a4) (Ping timeout: 246 seconds)
15:19:33 not_reserved joins (~not_reser@185.153.177.191)
15:19:44 Sgeo joins (~Sgeo@user/sgeo)
15:30:28 × inedia quits (~irc@2602:2da:0:80:5054:ff:fe3c:8d93) (Ping timeout: 246 seconds)
15:30:48 × ft quits (~ft@p4fc2a1d8.dip0.t-ipconnect.de) (Quit: leaving)
15:31:52 × not_reserved quits (~not_reser@185.153.177.191) (Ping timeout: 250 seconds)
15:32:49 × danse-nr3 quits (~danse@151.57.163.252) (Ping timeout: 264 seconds)
15:40:51 cross joins (~cross@spitfire.i.gajendra.net)
15:43:56 × vpan quits (~vpan@212.117.1.172) (Quit: Leaving.)
15:44:31 × TheCoffeMaker quits (~TheCoffeM@user/thecoffemaker) (Ping timeout: 256 seconds)
15:51:04 Unicorn_Princess joins (~Unicorn_P@user/Unicorn-Princess/x-3540542)
15:55:35 × ystael quits (~ystael@user/ystael) (Quit: Lost terminal)
15:57:00 × Zmzi quits (rscastilho@user/Zmzi) (Remote host closed the connection)
15:57:29 fansly joins (~fansly@2001:448a:2010:476e:5d30:627d:73c3:a75f)
15:58:05 ystael joins (~ystael@user/ystael)
15:58:47 not_reserved joins (~not_reser@185.153.177.191)
16:11:11 × fansly quits (~fansly@2001:448a:2010:476e:5d30:627d:73c3:a75f) (Remote host closed the connection)
16:12:50 × Sciencentistguy quits (~sciencent@hacksoc/ordinary-member) (Remote host closed the connection)
16:12:59 fansly joins (~fansly@2001:448a:2010:476e:5d30:627d:73c3:a75f)
16:13:27 × coot quits (~coot@89-69-206-216.dynamic.chello.pl) (Quit: coot)
16:13:42 coot joins (~coot@89-69-206-216.dynamic.chello.pl)
16:16:23 × AndreiDuma quits (~textual@95.76.23.32) (Quit: My MacBook has gone to sleep. ZZZzzz…)
16:16:47 danza joins (~danza@151.57.163.252)
16:18:49 ph88 joins (~ph88@2a02:8109:9e26:c800:a702:f242:a4c5:2b6e)
16:19:14 × ph88 quits (~ph88@2a02:8109:9e26:c800:a702:f242:a4c5:2b6e) (Client Quit)
16:22:51 EsoAlgo811 joins (~EsoAlgo@129.146.136.145)
16:23:27 ft joins (~ft@p4fc2a1d8.dip0.t-ipconnect.de)
16:24:01 inedia joins (~irc@2602:2da:0:80:5054:ff:fe3c:8d93)
16:25:46 × haskellbridge quits (~haskellbr@069-135-003-034.biz.spectrum.com) (Remote host closed the connection)
16:29:56 haskellbridge joins (~haskellbr@069-135-003-034.biz.spectrum.com)
16:29:56 ChanServ sets mode +v haskellbridge
16:32:53 × euleritian quits (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Ping timeout: 240 seconds)
16:33:31 euleritian joins (~euleritia@dynamic-046-114-169-099.46.114.pool.telefonica.de)
16:35:10 × eggplant_ quits (~Eggplanta@2600:1700:38c5:d800:601b:b49a:1e36:7b08) (Remote host closed the connection)
16:35:25 × euleritian quits (~euleritia@dynamic-046-114-169-099.46.114.pool.telefonica.de) (Read error: Connection reset by peer)
16:35:26 eggplantade joins (~Eggplanta@2600:1700:38c5:d800:601b:b49a:1e36:7b08)
16:35:50 euleritian joins (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de)
16:38:47 econo_ joins (uid147250@id-147250.tinside.irccloud.com)
16:39:48 × danza quits (~danza@151.57.163.252) (Read error: Connection reset by peer)
16:48:21 × coot quits (~coot@89-69-206-216.dynamic.chello.pl) (Quit: coot)
16:55:01 danza joins (~danza@151.43.183.66)
16:56:50 coot joins (~coot@89-69-206-216.dynamic.chello.pl)
16:57:35 AndreiDuma joins (~textual@95.76.23.32)
16:58:44 × AndreiDuma quits (~textual@95.76.23.32) (Client Quit)
16:59:37 AndreiDuma joins (~textual@95.76.23.32)
16:59:49 × machinedgod quits (~machinedg@d173-183-246-216.abhsia.telus.net) (Ping timeout: 260 seconds)
17:00:27 × chele quits (~chele@user/chele) (Remote host closed the connection)
17:00:44 target_i joins (~target_i@217.175.14.39)
17:04:28 × euleritian quits (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Read error: Connection reset by peer)
17:04:35 euleritian joins (~euleritia@dynamic-046-114-169-099.46.114.pool.telefonica.de)
17:04:58 × euleritian quits (~euleritia@dynamic-046-114-169-099.46.114.pool.telefonica.de) (Read error: Connection reset by peer)
17:05:16 euleritian joins (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de)
17:16:06 × Katarushisu1 quits (~Katarushi@cpc147790-finc20-2-0-cust502.4-2.cable.virginm.net) (Ping timeout: 260 seconds)
17:16:46 × not_reserved quits (~not_reser@185.153.177.191) (Quit: Client closed)
17:17:13 × danza quits (~danza@151.43.183.66) (Ping timeout: 264 seconds)
17:20:17 × rvalue quits (~rvalue@user/rvalue) (Ping timeout: 256 seconds)
17:23:45 Katarushisu1 joins (~Katarushi@cpc147790-finc20-2-0-cust502.4-2.cable.virginm.net)
17:29:58 rvalue joins (~rvalue@user/rvalue)
17:32:32 × euleritian quits (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Read error: Connection reset by peer)
17:33:11 euleritian joins (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de)
17:35:05 sajith_ is now known as sajith
17:48:45 × euleritian quits (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Ping timeout: 256 seconds)
17:49:29 euleritian joins (~euleritia@dynamic-046-114-169-099.46.114.pool.telefonica.de)
17:50:50 not_reserved joins (~not_reser@185.153.177.191)
17:53:50 × igemnace quits (~ian@user/igemnace) (Remote host closed the connection)
18:01:05 × AndreiDuma quits (~textual@95.76.23.32) (Ping timeout: 252 seconds)
18:02:32 × qqq quits (~qqq@92.43.167.61) (Quit: Lost terminal)
18:07:09 waleee joins (~waleee@h-176-10-144-38.NA.cust.bahnhof.se)
18:12:40 × ChaiTRex quits (~ChaiTRex@user/chaitrex) (Remote host closed the connection)
18:13:14 ChaiTRex joins (~ChaiTRex@user/chaitrex)
18:17:21 tzh joins (~tzh@c-71-193-181-0.hsd1.or.comcast.net)
18:18:10 × ChaiTRex quits (~ChaiTRex@user/chaitrex) (Remote host closed the connection)
18:18:33 ChaiTRex joins (~ChaiTRex@user/chaitrex)
18:20:36 × a51 quits (a51@gateway/vpn/protonvpn/a51) (Quit: WeeChat 4.1.2)
18:26:29 × tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
18:26:45 × sord937 quits (~sord937@gateway/tor-sasl/sord937) (Quit: sord937)
18:27:56 qqq joins (~qqq@92.43.167.61)
18:32:57 × Katarushisu1 quits (~Katarushi@cpc147790-finc20-2-0-cust502.4-2.cable.virginm.net) (Quit: The Lounge - https://thelounge.chat)
18:32:57 zmt01 joins (~zmt00@user/zmt00)
18:36:16 × swamp_ quits (~zmt00@user/zmt00) (Ping timeout: 256 seconds)
18:36:31 × pavonia quits (~user@user/siracusa) (Quit: Bye!)
18:37:09 Katarushisu1 joins (~Katarushi@cpc147790-finc20-2-0-cust502.4-2.cable.virginm.net)
18:40:12 × czy quits (~user@114.227.205.148) (Remote host closed the connection)
18:40:51 czy joins (~user@114.227.205.148)
18:47:49 × nschoe quits (~nschoe@2a01:e0a:8e:a190:bcb8:703f:d588:6cea) (Ping timeout: 276 seconds)
18:49:39 tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
18:52:22 × trev quits (~trev@user/trev) (Quit: trev)
18:57:44 × __monty__ quits (~toonn@user/toonn) (Ping timeout: 252 seconds)
19:03:07 __monty__ joins (~toonn@user/toonn)
19:06:53 peterbecich joins (~Thunderbi@047-229-123-186.res.spectrum.com)
19:17:13 × peterbecich quits (~Thunderbi@047-229-123-186.res.spectrum.com) (Ping timeout: 264 seconds)
19:20:42 × thegeekinside quits (~thegeekin@189.217.90.224) (Remote host closed the connection)
19:28:07 × sawilagar quits (~sawilagar@user/sawilagar) (Ping timeout: 276 seconds)
19:32:34 average joins (uid473595@user/average)
19:32:39 <average> https://www.youtube.com/shorts/Xh9BfxrXvEk
19:32:46 <average> this is what happens when you Haskell
19:33:56 <sm> lol yup that's me
19:34:28 <average> sm: and many of the commentors feel the same way
19:34:34 <average> coincidence? I think not!!
19:35:51 <yushyin> ah yes the 'gatekeeping' argument by @at-2974
19:36:46 <glguy> ooh, now do the version where someone tries to read the most literal description of a templated anything from C++'s standard library
19:36:51 <glguy> technology is *hard*
19:37:23 <sm> more haskell videos please. We should have waay more!
19:38:38 <sm> did y'all see https://www.youtube.com/watch?v=VJyedDQJUHE ? it's great
19:39:48 <mauke> I only watch https://www.youtube.com/watch?v=H0Ek86IH-3Y
19:40:05 <sm> by the way what's with all the commenters scared by zillion haskell deps being installed .. are those users of arch / build-from-source distros ?
19:40:21 <glguy> They're recovering npm users
19:40:47 <glguy> or ... anything but C?
19:40:49 sm wonders if there's a reliable tag / way to collect haskell-related youtubes
19:42:32 <sm> https://www.youtube.com/watch?v=iSmkqocn0oQ is a nice one
19:46:31 <sm> there's https://www.youtube.com/hashtag/haskell
19:50:30 <cheater> "probably not"
19:51:59 <sm> aha, gold! https://www.youtube.com/hashtag/haskell/shorts
19:55:17 nschoe joins (~nschoe@2a01:e0a:8e:a190:bcb8:703f:d588:6cea)
19:59:37 <sm> #haskell is not a reliable tag for youtube shorts (though the pow-wows are awesome). It seems fine for the longer videos (All tab)
20:04:55 mikess joins (~mikess@user/mikess)
20:06:25 × puke quits (~puke@user/puke) (Ping timeout: 264 seconds)
20:11:52 × nschoe quits (~nschoe@2a01:e0a:8e:a190:bcb8:703f:d588:6cea) (Ping timeout: 255 seconds)
20:16:31 Tuplanolla joins (~Tuplanoll@91-159-69-171.elisa-laajakaista.fi)
20:21:37 nschoe joins (~nschoe@2a01:e0a:8e:a190:bcb8:703f:d588:6cea)
20:24:35 a51 joins (a51@gateway/vpn/protonvpn/a51)
20:25:43 × euleritian quits (~euleritia@dynamic-046-114-169-099.46.114.pool.telefonica.de) (Read error: Connection reset by peer)
20:26:02 euleritian joins (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de)
20:28:31 × azimut quits (~azimut@gateway/tor-sasl/azimut) (Ping timeout: 240 seconds)
20:46:24 × eggplantade quits (~Eggplanta@2600:1700:38c5:d800:601b:b49a:1e36:7b08) (Remote host closed the connection)
20:48:27 × target_i quits (~target_i@217.175.14.39) (Quit: leaving)
20:55:28 danza joins (~danza@151.43.174.128)
20:56:43 × inedia quits (~irc@2602:2da:0:80:5054:ff:fe3c:8d93) (Ping timeout: 260 seconds)
21:00:56 inedia joins (~irc@2602:2da:0:80:5054:ff:fe3c:8d93)
21:08:18 dsrt^ joins (~cd@c-98-242-74-66.hsd1.ga.comcast.net)
21:16:11 × __monty__ quits (~toonn@user/toonn) (Quit: leaving)
21:19:05 × shailangsa_ quits (~shailangs@host109-152-9-157.range109-152.btcentralplus.com) (Remote host closed the connection)
21:23:00 × _ht quits (~Thunderbi@28-52-174-82.ftth.glasoperator.nl) (Quit: _ht)
21:23:02 eggplantade joins (~Eggplanta@2600:1700:38c5:d800:601b:b49a:1e36:7b08)
21:26:01 peterbecich joins (~Thunderbi@047-229-123-186.res.spectrum.com)
21:29:49 × fansly quits (~fansly@2001:448a:2010:476e:5d30:627d:73c3:a75f) (Ping timeout: 264 seconds)
21:33:57 energizer_ is now known as energizer
21:42:46 bilegeek joins (~bilegeek@2600:1008:b00c:d1f1:52d2:9d22:3a6a:a22c)
21:42:57 × takuan quits (~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection)
21:43:17 machinedgod joins (~machinedg@d173-183-246-216.abhsia.telus.net)
21:43:39 × nschoe quits (~nschoe@2a01:e0a:8e:a190:bcb8:703f:d588:6cea) (Ping timeout: 268 seconds)
21:44:56 × peterbecich quits (~Thunderbi@047-229-123-186.res.spectrum.com) (Ping timeout: 245 seconds)
21:51:12 × coot quits (~coot@89-69-206-216.dynamic.chello.pl) (Quit: coot)
21:53:12 puke joins (~puke@user/puke)
22:02:28 × michalz quits (~michalz@185.246.207.205) (Quit: ZNC 1.8.2 - https://znc.in)
22:05:06 fansly joins (~fansly@182.0.175.30)
22:08:48 × fansly quits (~fansly@182.0.175.30) (Client Quit)
22:09:05 fansly joins (~fansly@182.0.145.78)
22:09:16 nschoe joins (~nschoe@2a01:e0a:8e:a190:bcb8:703f:d588:6cea)
22:11:32 × dolio quits (~dolio@130.44.134.54) (Quit: ZNC 1.8.2 - https://znc.in)
22:12:19 azimut joins (~azimut@gateway/tor-sasl/azimut)
22:13:16 dolio joins (~dolio@130.44.134.54)
22:16:27 × dolio quits (~dolio@130.44.134.54) (Client Quit)
22:18:33 × _d0t quits (~{-d0t-}@user/-d0t-/x-7915216) (Ping timeout: 260 seconds)
22:23:15 [_] joins (~itchyjunk@user/itchyjunk/x-7353470)
22:26:49 × [itchyjunk] quits (~itchyjunk@user/itchyjunk/x-7353470) (Ping timeout: 264 seconds)
22:27:05 × tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
22:28:28 _d0t joins (~{-d0t-}@user/-d0t-/x-7915216)
22:32:23 tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
22:36:22 random-jellyfish joins (~developer@user/random-jellyfish)
22:39:08 vi- is now known as phrlk
22:39:16 phrlk is now known as vi-
22:40:34 dolio joins (~dolio@130.44.134.54)
22:40:55 × azimut quits (~azimut@gateway/tor-sasl/azimut) (Ping timeout: 240 seconds)
22:49:12 Kuttenbrunzer joins (~Kuttenbru@2a02:8108:8b80:1d48::8207)
22:50:27 × Kuttenbrunzer quits (~Kuttenbru@2a02:8108:8b80:1d48::8207) (Client Quit)
22:50:52 × danza quits (~danza@151.43.174.128) (Quit: Leaving)
23:01:00 × not_reserved quits (~not_reser@185.153.177.191) (Quit: Client closed)
23:02:11 not_reserved joins (~not_reser@185.153.177.191)
23:04:29 peterbecich joins (~Thunderbi@047-229-123-186.res.spectrum.com)
23:08:53 × Tuplanolla quits (~Tuplanoll@91-159-69-171.elisa-laajakaista.fi) (Quit: Leaving.)
23:11:27 × A_Dragon quits (A_D@libera/staff/dragon) (Killed (Stx (We're slaying Dragons. Blame it on the KindOne)))
23:11:41 A_Dragon joins (A_D@libera/staff/dragon)
23:12:14 × infinity0 quits (~infinity0@pwned.gg) (Ping timeout: 256 seconds)
23:14:48 × not_reserved quits (~not_reser@185.153.177.191) (Quit: Client closed)
23:17:48 × tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
23:28:37 × peterbecich quits (~Thunderbi@047-229-123-186.res.spectrum.com) (Read error: Connection reset by peer)
23:28:54 peterbecich joins (~Thunderbi@047-229-123-186.res.spectrum.com)
23:36:10 × random-jellyfish quits (~developer@user/random-jellyfish) (Ping timeout: 255 seconds)
23:36:19 × tcard quits (~tcard@2400:4051:5801:7500:cf17:befc:ff82:5303) (Remote host closed the connection)
23:36:34 tcard joins (~tcard@2400:4051:5801:7500:cf17:befc:ff82:5303)
23:36:56 × fansly quits (~fansly@182.0.145.78) (Read error: Connection reset by peer)
23:39:11 not_reserved joins (~not_reser@185.153.177.191)
23:39:44 sawilagar joins (~sawilagar@user/sawilagar)
23:40:19 × peterbecich quits (~Thunderbi@047-229-123-186.res.spectrum.com) (Ping timeout: 276 seconds)
23:59:15 × dsrt^ quits (~cd@c-98-242-74-66.hsd1.ga.comcast.net) (Remote host closed the connection)

All times are in UTC on 2024-01-12.