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<sm> 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<sm> 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<mauke> 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<mauke> (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.