2025-02-26 00:00:53 +0100 | <tomsmeding> | hololeap: sepBy ((,) <$> manyTill (char ':') <*> manyTill (lookAhead (oneOf ":," <|> eof))) (char ',') ? |
2025-02-26 00:01:24 +0100 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn |
2025-02-26 00:01:26 +0100 | ljdarj1 | (~Thunderbi@user/ljdarj) ljdarj |
2025-02-26 00:02:18 +0100 | <hololeap> | hm, you would think with Parsec being a monad, it could be done with: sepBy anyChar (char ',') >>= mapM (...) |
2025-02-26 00:02:28 +0100 | <tomsmeding> | anyChar parses _one_ character |
2025-02-26 00:02:55 +0100 | <hololeap> | right, s/anyChar/(many anyChar)/ |
2025-02-26 00:03:04 +0100 | <tomsmeding> | also, while you can process the result of parsing later using (>>=), parsec always parses _from_ the input string |
2025-02-26 00:03:13 +0100 | ljdarj | (~Thunderbi@user/ljdarj) (Ping timeout: 248 seconds) |
2025-02-26 00:03:13 +0100 | ljdarj1 | ljdarj |
2025-02-26 00:03:56 +0100 | <tomsmeding> | you can't "re-inject" some arbitrary string into the source to be parsed |
2025-02-26 00:04:22 +0100 | <hololeap> | I see |
2025-02-26 00:05:03 +0100 | <tomsmeding> | of course you technically can just start a new parser for that string, and you can also `setInput`, but typically both are a bad idea |
2025-02-26 00:05:52 +0100 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds) |
2025-02-26 00:06:24 +0100 | <tomsmeding> | hololeap: also, that "sepBy (many anyChar) (char ',')" wouldn't even work: the `many anyChar` would consume the entire input from here, and because it consumed input, it would count as "succeeded" which means it doesn't backtrack |
2025-02-26 00:07:16 +0100 | <tomsmeding> | % import Text.Parsec |
2025-02-26 00:07:16 +0100 | <yahb2> | <no output> |
2025-02-26 00:07:24 +0100 | <tomsmeding> | % parse (sepBy (many anyChar) (char ',')) "<stdin>" "abc,def,ghi" |
2025-02-26 00:07:24 +0100 | <yahb2> | Right ["abc,def,ghi"] |
2025-02-26 00:07:41 +0100 | <tomsmeding> | hm, let's see if I can whiteboard code |
2025-02-26 00:07:56 +0100 | <tomsmeding> | % parse (sepBy ((,) <$> manyTill (char ':') <*> manyTill (lookAhead (oneOf ":," <|> eof))) (char ',')) "<stdin>" "this:that,black:white" |
2025-02-26 00:07:56 +0100 | <yahb2> | <interactive>:287:23: error: [GHC-83865] ; • Couldn't match expected type: ParsecT ; String () GHC.Internal.Data.Functor.Identity.Identity a1 ; ... |
2025-02-26 00:08:07 +0100 | <tomsmeding> | evidently not! |
2025-02-26 00:08:23 +0100 | <tomsmeding> | % parse (sepBy ((,) <$> manyTill anyChar (char ':') <*> manyTill anyChar (lookAhead (oneOf ":," <|> eof))) (char ',')) "<stdin>" "this:that,black:white" |
2025-02-26 00:08:23 +0100 | <yahb2> | <interactive>:289:99: error: [GHC-83865] ; • Couldn't match type ‘()’ with ‘Char’ ; Expected: ParsecT ; String () GHC.Internal.Data.Functor.Identity.Identity Char ; ... |
2025-02-26 00:08:26 +0100 | <monochrom> | Yikes, abuse of lookAhead again. |
2025-02-26 00:08:50 +0100 | <monochrom> | many (satisfy (/= ',')) pretty please |
2025-02-26 00:08:59 +0100 | <tomsmeding> | I guess |
2025-02-26 00:09:49 +0100 | <monochrom> | What you should really lament, if you like, is that parsec is not regex, so whereas in regex you just have to say ".*,.*", you simply can't do that in parsec. |
2025-02-26 00:10:09 +0100 | <tomsmeding> | % parse (sepBy ((,) <$> (many (satisfy (/= ':')) <* char ':') <*> many (satisfy (`notElem` ":,"))) (char ',')) "<stdin>" "this:that,black:white" |
2025-02-26 00:10:09 +0100 | <yahb2> | Right [("this","that"),("black","white")] |
2025-02-26 00:10:20 +0100 | <tomsmeding> | hololeap: there |
2025-02-26 00:10:29 +0100 | foul_owl | (~kerry@174-21-138-88.tukw.qwest.net) foul_owl |
2025-02-26 00:10:32 +0100 | <hololeap> | cool, thanks :) |
2025-02-26 00:10:43 +0100 | <tomsmeding> | monochrom: thanks, it's been too long since I parsec'd, this is also nicer to write |
2025-02-26 00:10:44 +0100 | <monochrom> | BTW the "convenience" of regex allowing that is avenged by the fact that such high non-determinism causes exp-time or exp-space. |
2025-02-26 00:10:57 +0100 | <hololeap> | although I wonder if it would be more readable to just do this with span from Data.List |
2025-02-26 00:11:37 +0100 | <tomsmeding> | if you write out that <$> <*> sequence as a do-block, it gets much more readable |
2025-02-26 00:11:39 +0100 | <monochrom> | Oh, the split package has tools for that too. |
2025-02-26 00:12:12 +0100 | <monochrom> | You can write your own recursion over span. But the split package does that for you. |
2025-02-26 00:12:40 +0100 | <tomsmeding> | hololeap: https://paste.tomsmeding.com/QHaiHEVF |
2025-02-26 00:12:43 +0100 | <monochrom> | Although, I confess that I want 0 dependencies so I wrote my own recursion :) |
2025-02-26 00:12:53 +0100 | <tomsmeding> | but yes, a splitting function is perhaps nicer here |
2025-02-26 00:16:46 +0100 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn |
2025-02-26 00:20:18 +0100 | rvalue | (~rvalue@user/rvalue) (Quit: ZNC - https://znc.in) |
2025-02-26 00:21:03 +0100 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 244 seconds) |
2025-02-26 00:23:46 +0100 | alfiee | (~alfiee@user/alfiee) alfiee |
2025-02-26 00:28:14 +0100 | alfiee | (~alfiee@user/alfiee) (Ping timeout: 252 seconds) |
2025-02-26 00:32:08 +0100 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn |
2025-02-26 00:36:46 +0100 | __monty__ | (~toonn@user/toonn) (Quit: leaving) |
2025-02-26 00:37:49 +0100 | rvalue | (~rvalue@user/rvalue) rvalue |
2025-02-26 00:38:43 +0100 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 245 seconds) |
2025-02-26 00:50:12 +0100 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn |
2025-02-26 00:51:13 +0100 | src | (~src@user/src) src |
2025-02-26 00:55:05 +0100 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 268 seconds) |
2025-02-26 00:58:51 +0100 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn |
2025-02-26 00:59:26 +0100 | <EvanR> | is parsec more or less powerful than regex |
2025-02-26 00:59:41 +0100 | <EvanR> | does it hinge on whether unlimited lookahead is regex |
2025-02-26 01:00:25 +0100 | <geekosaur> | if regex is extended with "functions", see raku |
2025-02-26 01:00:36 +0100 | <mauke> | parsec can nest |
2025-02-26 01:00:57 +0100 | <geekosaur> | but there's some question as to whether that's actually "regex" (I think the "actually should be regular" ship sailed years ago) |
2025-02-26 01:03:28 +0100 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 265 seconds) |
2025-02-26 01:07:40 +0100 | <EvanR> | I guess irregular expressions isn't particularly marketable |
2025-02-26 01:10:48 +0100 | mange | (~user@user/mange) mange |
2025-02-26 01:11:03 +0100 | alfiee | (~alfiee@user/alfiee) alfiee |
2025-02-26 01:12:50 +0100 | <jackdk> | Don't we call those "perl compatible"? |
2025-02-26 01:13:47 +0100 | <mauke> | I think "perl compatible" is mostly about syntax (ok, and some features as well) |
2025-02-26 01:14:08 +0100 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn |
2025-02-26 01:14:16 +0100 | <mauke> | backreferences existed long before perl |
2025-02-26 01:15:31 +0100 | alfiee | (~alfiee@user/alfiee) (Ping timeout: 244 seconds) |
2025-02-26 01:16:44 +0100 | Googulator78 | (~Googulato@2a01-036d-0106-0c81-ad7c-ac56-196b-c9a2.pool6.digikabel.hu) |
2025-02-26 01:16:45 +0100 | <EvanR> | now I have to pull out the history to figure out what "long before perl" means |
2025-02-26 01:17:04 +0100 | <geekosaur> | egrep |
2025-02-26 01:18:28 +0100 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds) |
2025-02-26 01:19:42 +0100 | <mauke> | https://unix.stackexchange.com/questions/623521/why-does-ed-support-backreferences-but-not-alterna… |
2025-02-26 01:20:10 +0100 | Googulator | (~Googulato@2a01-036d-0106-0c81-ad7c-ac56-196b-c9a2.pool6.digikabel.hu) (Ping timeout: 240 seconds) |
2025-02-26 01:21:54 +0100 | Smiles | (uid551636@id-551636.lymington.irccloud.com) Smiles |
2025-02-26 01:26:59 +0100 | <geekosaur> | mm, right, forgot ed went back even further |
2025-02-26 01:29:31 +0100 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn |
2025-02-26 01:29:38 +0100 | <ski> | geekosaur : "IrRegular Expressions" by foof at <https://synthcode.com/scheme/irregex/> |
2025-02-26 01:32:29 +0100 | krei-se- | (~krei-se@p3ee0f060.dip0.t-ipconnect.de) krei-se |
2025-02-26 01:32:35 +0100 | <mauke> | the bell labs regex code wasn't freely available, so perl 2.0 incorporated henry spencer's implementation, which used backtracking |
2025-02-26 01:33:36 +0100 | krei-se | (~krei-se@p3ee0fb6e.dip0.t-ipconnect.de) (Ping timeout: 252 seconds) |
2025-02-26 01:33:52 +0100 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds) |
2025-02-26 01:34:49 +0100 | ski | . o O ( "Regular Expression Matching Can Be Simple And Fast (but is slow in Java, Perl, PHP, Python, Ruby, ...)" by Russ Cox in 2007-01 at <https://swtch.com/~rsc/regexp/regexp1.html> ) |
2025-02-26 01:36:02 +0100 | <mauke> | "With the exception of backreferences, the features provided by the slow backtracking implementations can be provided by the automata-based implementations at dramatically faster, more consistent speeds." is of course wrong |
2025-02-26 01:36:26 +0100 | misterfish | (~misterfis@84.53.85.146) (Ping timeout: 252 seconds) |
2025-02-26 01:40:22 +0100 | JuanDaugherty | (~juan@user/JuanDaugherty) JuanDaugherty |
2025-02-26 01:44:53 +0100 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn |
2025-02-26 01:45:24 +0100 | <geekosaur> | yeh, I think pretty much everyone was using Spencer's code back then |
2025-02-26 01:49:25 +0100 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 248 seconds) |
2025-02-26 01:51:03 +0100 | sprotte24 | (~sprotte24@p200300d16f33ea00547a79769710f53f.dip0.t-ipconnect.de) (Quit: Leaving) |
2025-02-26 01:53:34 +0100 | peterbecich | (~Thunderbi@syn-047-229-123-186.res.spectrum.com) peterbecich |
2025-02-26 01:56:13 +0100 | xff0x | (~xff0x@2405:6580:b080:900:3152:bac6:3fc:3eb6) (Ping timeout: 252 seconds) |
2025-02-26 01:56:47 +0100 | alfiee | (~alfiee@user/alfiee) alfiee |
2025-02-26 02:00:15 +0100 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn |
2025-02-26 02:01:00 +0100 | alfiee | (~alfiee@user/alfiee) (Ping timeout: 252 seconds) |
2025-02-26 02:02:13 +0100 | zungi | (~tory@user/andrewchawk) (Remote host closed the connection) |
2025-02-26 02:04:40 +0100 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds) |
2025-02-26 02:06:47 +0100 | zungi | (~tory@user/andrewchawk) andrewchawk |
2025-02-26 02:07:36 +0100 | JuanDaugherty | (~juan@user/JuanDaugherty) (Quit: praxis.meansofproduction.biz (juan@acm.org)) |
2025-02-26 02:08:19 +0100 | takuan | (~takuan@d8D86B601.access.telenet.be) (Ping timeout: 252 seconds) |
2025-02-26 02:15:39 +0100 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn |
2025-02-26 02:16:05 +0100 | machinedgod | (~machinedg@d108-173-18-100.abhsia.telus.net) (Ping timeout: 248 seconds) |
2025-02-26 02:17:25 +0100 | <cheater> | i'm still dismayed that no one extended regex to include negative matches |
2025-02-26 02:17:41 +0100 | <cheater> | since they can always be compiled down to a finite amount of positive matches |
2025-02-26 02:18:01 +0100 | <cheater> | just that negative matches are human readable and the positive version isn't |
2025-02-26 02:18:37 +0100 | <geekosaur> | actual perl REs have negative matches |
2025-02-26 02:18:52 +0100 | <cheater> | as in, "matching this rejects the match"? |
2025-02-26 02:18:57 +0100 | <geekosaur> | or at least negative lookahead |
2025-02-26 02:19:01 +0100 | <geekosaur> | yes |
2025-02-26 02:19:11 +0100 | <cheater> | how would you match for hat, but not within the word what? |
2025-02-26 02:19:28 +0100 | yegorc | (~yegorc@user/yegorc) yegorc |
2025-02-26 02:19:42 +0100 | peterbecich | (~Thunderbi@syn-047-229-123-186.res.spectrum.com) (Ping timeout: 252 seconds) |
2025-02-26 02:19:53 +0100 | <Square> | If I have a project that contains .cabal files it seems newer versions of cabal tries to use all these files to resolve dependencies. Is there a way to neglect other .cabal files in a project? |
2025-02-26 02:20:07 +0100 | <Square> | s/contains/contains several/ |
2025-02-26 02:20:38 +0100 | <cheater> | idk but maybe cabal.project |
2025-02-26 02:20:44 +0100 | <geekosaur> | --ignore-project |
2025-02-26 02:21:24 +0100 | <geekosaur> | this isn't usually what you actually want, though, as it can lead to mutually incompatible project components |
2025-02-26 02:21:48 +0100 | <geekosaur> | which is why cabal solves for the whole project |
2025-02-26 02:22:16 +0100 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds) |
2025-02-26 02:23:07 +0100 | <Square> | thanks. I'm migrating a project - sub-project by sub-project. |
2025-02-26 02:23:32 +0100 | <Square> | ...so during that phase it might help me to work on them individually first |
2025-02-26 02:27:01 +0100 | alp | (~alp@2001:861:8ca0:4940:d9b2:488b:3c7b:5f95) (Ping timeout: 252 seconds) |
2025-02-26 02:33:42 +0100 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn |
2025-02-26 02:38:41 +0100 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 268 seconds) |
2025-02-26 02:42:30 +0100 | alfiee | (~alfiee@user/alfiee) alfiee |
2025-02-26 02:42:55 +0100 | <geekosaur> | you might do better making a temporary project file containing only the parts you need, because eventually you'll hit dependencies within the project and will need them to be visible |
2025-02-26 02:43:48 +0100 | yegorc | (~yegorc@user/yegorc) (Leaving) |
2025-02-26 02:44:18 +0100 | <Square> | gotcha. I'll keep that in mind if I run into problems |
2025-02-26 02:44:25 +0100 | bitdex | (~bitdex@gateway/tor-sasl/bitdex) bitdex |
2025-02-26 02:45:23 +0100 | Tuplanolla | (~Tuplanoll@91-159-69-59.elisa-laajakaista.fi) (Ping timeout: 245 seconds) |
2025-02-26 02:47:12 +0100 | alfiee | (~alfiee@user/alfiee) (Ping timeout: 272 seconds) |
2025-02-26 02:47:26 +0100 | messewix | (~jmc@user/messewix) messewix |
2025-02-26 02:47:57 +0100 | <mauke> | cheater: (?<!w)hat |
2025-02-26 02:48:42 +0100 | <cheater> | nice |
2025-02-26 02:48:46 +0100 | <cheater> | does this work in any greps? |
2025-02-26 02:48:57 +0100 | <mauke> | the positive version is (?:^|[^w])hat |
2025-02-26 02:49:04 +0100 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn |
2025-02-26 02:49:56 +0100 | <mauke> | should work in GNU grep -P |
2025-02-26 02:50:04 +0100 | <mauke> | and ack, if you count that as a grep |
2025-02-26 02:50:12 +0100 | xff0x | (~xff0x@fsb6a9491c.tkyc517.ap.nuro.jp) |
2025-02-26 02:53:25 +0100 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds) |
2025-02-26 02:54:49 +0100 | acidjnk_new | (~acidjnk@p200300d6e7283f3800c9913f6d25b0a5.dip0.t-ipconnect.de) (Ping timeout: 260 seconds) |
2025-02-26 03:04:27 +0100 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn |
2025-02-26 03:04:31 +0100 | olivial_ | (~benjaminl@2601:1c0:847f:9c70:223:24ff:fe66:4370) (Read error: Connection reset by peer) |
2025-02-26 03:04:45 +0100 | olivial | (~benjaminl@user/benjaminl) benjaminl |
2025-02-26 03:08:53 +0100 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 248 seconds) |
2025-02-26 03:12:04 +0100 | vanishingideal | (~vanishing@user/vanishingideal) (Ping timeout: 244 seconds) |
2025-02-26 03:13:59 +0100 | vanishingideal | (~vanishing@user/vanishingideal) vanishingideal |
2025-02-26 03:19:51 +0100 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn |
2025-02-26 03:20:22 +0100 | <cheater> | mauke: fantastic |
2025-02-26 03:20:29 +0100 | <cheater> | i guess rg doesn't do it though? |
2025-02-26 03:20:42 +0100 | <cheater> | rg... sigh... |
2025-02-26 03:21:51 +0100 | <mauke> | needs --pcre2, apparently |
2025-02-26 03:24:02 +0100 | weary-traveler | (~user@user/user363627) user363627 |
2025-02-26 03:24:14 +0100 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds) |
2025-02-26 03:28:55 +0100 | alfiee | (~alfiee@user/alfiee) alfiee |
2025-02-26 03:31:00 +0100 | Smiles | (uid551636@id-551636.lymington.irccloud.com) (Quit: Connection closed for inactivity) |
2025-02-26 03:31:09 +0100 | <haskellbridge> | <Bowuigi> cheater both structural regular expressions (Bell Labs, some time ago) and PEG have negative matches IIRC |
2025-02-26 03:31:32 +0100 | <cheater> | hmmmm |
2025-02-26 03:31:33 +0100 | <cheater> | thank you |
2025-02-26 03:31:34 +0100 | <haskellbridge> | <Bowuigi> Structural regex seems to be more powerful. It's definitely more practical for interactive usage |
2025-02-26 03:31:46 +0100 | <cheater> | what's structural |
2025-02-26 03:33:02 +0100 | alfiee | (~alfiee@user/alfiee) (Ping timeout: 252 seconds) |
2025-02-26 03:35:15 +0100 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn |
2025-02-26 03:39:40 +0100 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 244 seconds) |
2025-02-26 03:40:07 +0100 | <haskellbridge> | <Bowuigi> Instead of operating in lines, it operates in selections. It can do things like "select all strings matching this pattern, even if spread across multiple lines", "replace using this pattern on these selections", "invert selected" and more |
2025-02-26 03:41:37 +0100 | <haskellbridge> | <Bowuigi> So SRE is for interactive usage (that was what it was designed for, based on Bell Labs' documentation), and PEG is like CFG but more language parsing oriented |
2025-02-26 03:44:02 +0100 | pointlessslippe1 | (~pointless@62.106.85.17) (Read error: Connection reset by peer) |
2025-02-26 03:44:34 +0100 | <mauke> | not very structured if it doesn't handle nesting |
2025-02-26 03:45:06 +0100 | <mauke> | e.g. you can't easily say "select the current block of code" |
2025-02-26 03:50:31 +0100 | bitdex | (~bitdex@gateway/tor-sasl/bitdex) (Remote host closed the connection) |
2025-02-26 03:50:37 +0100 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn |
2025-02-26 03:51:17 +0100 | bilegeek | (~bilegeek@2600:1008:b06e:701b:8c92:bcff:3789:c22c) bilegeek |
2025-02-26 03:51:37 +0100 | pointlessslippe1 | (~pointless@62.106.85.17) pointlessslippe1 |
2025-02-26 03:51:50 +0100 | peterbecich | (~Thunderbi@syn-047-229-123-186.res.spectrum.com) peterbecich |
2025-02-26 03:52:14 +0100 | lol_ | jcarpenter2 |
2025-02-26 03:52:53 +0100 | L29Ah | (~L29Ah@wikipedia/L29Ah) (Ping timeout: 244 seconds) |
2025-02-26 03:57:14 +0100 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds) |
2025-02-26 04:08:39 +0100 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn |
2025-02-26 04:12:53 +0100 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 248 seconds) |
2025-02-26 04:14:59 +0100 | alfiee | (~alfiee@user/alfiee) alfiee |
2025-02-26 04:19:14 +0100 | alfiee | (~alfiee@user/alfiee) (Ping timeout: 252 seconds) |
2025-02-26 04:24:02 +0100 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn |
2025-02-26 04:27:59 +0100 | tromp | (~textual@2a02:a210:cba:8500:b949:287e:6bbd:873b) |
2025-02-26 04:28:36 +0100 | tromp | (~textual@2a02:a210:cba:8500:b949:287e:6bbd:873b) (Client Quit) |
2025-02-26 04:29:03 +0100 | <Square> | Template haskell has changed a bit between GHC 8.6 and 9.6. I cant wrap my head on the new signature for DataInstD |
2025-02-26 04:29:04 +0100 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 268 seconds) |
2025-02-26 04:29:17 +0100 | <Square> | Was: DataInstD Cxt Name [Type] (Maybe Kind) [Con] [DerivClause] |
2025-02-26 04:29:33 +0100 | <Square> | Now: DataInstD Cxt (Maybe [TyVarBndr ()]) Type (Maybe Kind) [Con] [DerivClause] |
2025-02-26 04:31:18 +0100 | <Square> | so for "class MyClass a b where ; data MyData a b" I declared an instance with... |
2025-02-26 04:32:09 +0100 | <Square> | DataInstD [] (mkName "MyData") [aType,bType] (Nothing) constructors [deriveClause] |
2025-02-26 04:32:48 +0100 | <Square> | I'm not sure how to migrate that to 9.6 |
2025-02-26 04:35:39 +0100 | peterbecich | (~Thunderbi@syn-047-229-123-186.res.spectrum.com) (Ping timeout: 252 seconds) |
2025-02-26 04:36:21 +0100 | plitter | (~plitter@user/plitter) (Ping timeout: 248 seconds) |
2025-02-26 04:39:23 +0100 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn |
2025-02-26 04:40:58 +0100 | ljdarj | (~Thunderbi@user/ljdarj) (Ping timeout: 265 seconds) |
2025-02-26 04:43:54 +0100 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 260 seconds) |
2025-02-26 04:51:45 +0100 | bitdex | (~bitdex@gateway/tor-sasl/bitdex) bitdex |
2025-02-26 04:53:54 +0100 | PHO` | (~pho@akari.cielonegro.org) (Ping timeout: 248 seconds) |
2025-02-26 04:54:03 +0100 | PHO` | (~pho@akari.cielonegro.org) PHO` |
2025-02-26 04:54:46 +0100 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn |
2025-02-26 04:59:12 +0100 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds) |
2025-02-26 05:00:20 +0100 | sp1ff | (~user@c-67-160-173-55.hsd1.wa.comcast.net) (Remote host closed the connection) |
2025-02-26 05:01:43 +0100 | alfiee | (~alfiee@user/alfiee) alfiee |
2025-02-26 05:03:36 +0100 | vanishingideal | (~vanishing@user/vanishingideal) (Ping timeout: 252 seconds) |
2025-02-26 05:06:01 +0100 | pointlessslippe1 | (~pointless@62.106.85.17) (Read error: Connection reset by peer) |
2025-02-26 05:06:10 +0100 | alfiee | (~alfiee@user/alfiee) (Ping timeout: 252 seconds) |
2025-02-26 05:07:10 +0100 | kaskal | (~kaskal@2a02:8388:15bf:c200:69b8:13b6:b9c5:a489) (Ping timeout: 272 seconds) |
2025-02-26 05:09:46 +0100 | pointlessslippe1 | (~pointless@62.106.85.17) pointlessslippe1 |
2025-02-26 05:10:07 +0100 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn |
2025-02-26 05:14:31 +0100 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 244 seconds) |
2025-02-26 05:24:11 +0100 | ensyde | (~ensyde@2601:5c6:c200:6dc0::46e1) ensyde |
2025-02-26 05:25:35 +0100 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn |
2025-02-26 05:30:01 +0100 | foul_owl | (~kerry@174-21-138-88.tukw.qwest.net) (Ping timeout: 244 seconds) |
2025-02-26 05:31:49 +0100 | Square | (~Square4@user/square) (Ping timeout: 248 seconds) |
2025-02-26 05:32:12 +0100 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds) |
2025-02-26 05:41:45 +0100 | kyoshiblood | (~kyoshiblo@45.236.190.129) |
2025-02-26 05:42:44 +0100 | kyoshiblood | (~kyoshiblo@45.236.190.129) (Client Quit) |
2025-02-26 05:42:53 +0100 | foul_owl | (~kerry@94.156.149.97) foul_owl |
2025-02-26 05:43:38 +0100 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn |
2025-02-26 05:47:48 +0100 | alfiee | (~alfiee@user/alfiee) alfiee |
2025-02-26 05:48:21 +0100 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 248 seconds) |
2025-02-26 05:48:45 +0100 | michalz | (~michalz@185.246.207.203) |
2025-02-26 05:49:42 +0100 | hgolden | (~hgolden@2603:8000:9d00:3ed1:6ff3:8389:b901:6363) (Remote host closed the connection) |
2025-02-26 05:52:01 +0100 | alfiee | (~alfiee@user/alfiee) (Ping timeout: 248 seconds) |
2025-02-26 05:54:13 +0100 | euphores | (~SASL_euph@user/euphores) (Quit: Leaving.) |
2025-02-26 05:58:15 +0100 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn |
2025-02-26 06:01:06 +0100 | peterbecich | (~Thunderbi@syn-047-229-123-186.res.spectrum.com) peterbecich |
2025-02-26 06:02:41 +0100 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 248 seconds) |
2025-02-26 06:07:25 +0100 | robobub | (uid248673@id-248673.uxbridge.irccloud.com) robobub |
2025-02-26 06:13:40 +0100 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn |
2025-02-26 06:15:12 +0100 | euphores | (~SASL_euph@user/euphores) euphores |
2025-02-26 06:17:41 +0100 | messewix | (~jmc@user/messewix) (Quit: Konversation terminated!) |
2025-02-26 06:18:02 +0100 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds) |
2025-02-26 06:24:12 +0100 | kaskal | (~kaskal@84-115-238-56.cable.dynamic.surfer.at) kaskal |
2025-02-26 06:29:31 +0100 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn |
2025-02-26 06:33:51 +0100 | alfiee | (~alfiee@user/alfiee) alfiee |
2025-02-26 06:34:10 +0100 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds) |
2025-02-26 06:37:53 +0100 | peterbecich | (~Thunderbi@syn-047-229-123-186.res.spectrum.com) (Ping timeout: 248 seconds) |
2025-02-26 06:38:12 +0100 | alfiee | (~alfiee@user/alfiee) (Ping timeout: 252 seconds) |
2025-02-26 06:39:48 +0100 | bitdex | (~bitdex@gateway/tor-sasl/bitdex) (Ping timeout: 264 seconds) |
2025-02-26 06:41:32 +0100 | bitdex | (~bitdex@gateway/tor-sasl/bitdex) bitdex |
2025-02-26 06:42:05 +0100 | peterbecich | (~Thunderbi@syn-047-229-123-186.res.spectrum.com) peterbecich |
2025-02-26 06:44:52 +0100 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn |
2025-02-26 06:45:27 +0100 | kaskal | (~kaskal@84-115-238-56.cable.dynamic.surfer.at) (Ping timeout: 244 seconds) |
2025-02-26 06:47:04 +0100 | Unicorn_Princess | (~Unicorn_P@user/Unicorn-Princess/x-3540542) Unicorn_Princess |
2025-02-26 06:49:19 +0100 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 260 seconds) |
2025-02-26 07:00:16 +0100 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn |
2025-02-26 07:07:10 +0100 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds) |
2025-02-26 07:16:44 +0100 | peterbecich | (~Thunderbi@syn-047-229-123-186.res.spectrum.com) (Ping timeout: 260 seconds) |
2025-02-26 07:18:19 +0100 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn |
2025-02-26 07:18:31 +0100 | takuan | (~takuan@d8D86B601.access.telenet.be) |
2025-02-26 07:19:35 +0100 | alfiee | (~alfiee@user/alfiee) alfiee |
2025-02-26 07:20:14 +0100 | jle` | (~jle`@2603:8001:3b00:11:8847:ede:a8ef:d8cd) jle` |
2025-02-26 07:22:52 +0100 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 244 seconds) |
2025-02-26 07:23:43 +0100 | alfiee | (~alfiee@user/alfiee) (Ping timeout: 245 seconds) |
2025-02-26 07:33:39 +0100 | fp | (~Thunderbi@130.233.70.89) fp |
2025-02-26 07:33:41 +0100 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn |
2025-02-26 07:38:13 +0100 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 248 seconds) |
2025-02-26 07:40:21 +0100 | jle` | (~jle`@2603:8001:3b00:11:8847:ede:a8ef:d8cd) (Ping timeout: 248 seconds) |
2025-02-26 07:41:28 +0100 | jle` | (~jle`@2603:8001:3b00:11:240e:f2a:571:e822) jle` |
2025-02-26 07:43:16 +0100 | tabaqui1 | (~root@87.200.129.102) tabaqui |
2025-02-26 07:48:25 +0100 | jongkook90 | (~jongkook9@user/jongkook90) (Remote host closed the connection) |
2025-02-26 07:49:05 +0100 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn |
2025-02-26 07:49:47 +0100 | ensyde | (~ensyde@2601:5c6:c200:6dc0::46e1) (Quit: WeeChat 4.5.1) |
2025-02-26 07:54:19 +0100 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 265 seconds) |
2025-02-26 07:59:15 +0100 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn |
2025-02-26 08:03:36 +0100 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 246 seconds) |
2025-02-26 08:05:19 +0100 | alfiee | (~alfiee@user/alfiee) alfiee |
2025-02-26 08:09:08 +0100 | j1n37- | (~j1n37@user/j1n37) (Ping timeout: 252 seconds) |
2025-02-26 08:09:08 +0100 | Lord_of_Life | (~Lord@user/lord-of-life/x-2819915) (Ping timeout: 245 seconds) |
2025-02-26 08:09:33 +0100 | alfiee | (~alfiee@user/alfiee) (Ping timeout: 245 seconds) |
2025-02-26 08:09:59 +0100 | Lord_of_Life | (~Lord@user/lord-of-life/x-2819915) Lord_of_Life |
2025-02-26 08:12:28 +0100 | j1n37 | (~j1n37@user/j1n37) j1n37 |
2025-02-26 08:14:38 +0100 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn |
2025-02-26 08:15:16 +0100 | tromp | (~textual@2a02:a210:cba:8500:b949:287e:6bbd:873b) |
2025-02-26 08:18:07 +0100 | ash3en | (~Thunderbi@2a03:7846:b6eb:101:93ac:a90a:da67:f207) ash3en |
2025-02-26 08:19:42 +0100 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 276 seconds) |
2025-02-26 08:21:42 +0100 | weary-traveler | (~user@user/user363627) (Remote host closed the connection) |
2025-02-26 08:27:25 +0100 | misterfish | (~misterfis@84.53.85.146) misterfish |
2025-02-26 08:29:06 +0100 | zungi | (~tory@user/andrewchawk) (Remote host closed the connection) |
2025-02-26 08:29:36 +0100 | zungi | (~tory@user/andrewchawk) andrewchawk |
2025-02-26 08:30:02 +0100 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn |
2025-02-26 08:31:29 +0100 | machinedgod | (~machinedg@d108-173-18-100.abhsia.telus.net) machinedgod |
2025-02-26 08:34:41 +0100 | GdeVolpiano | (~GdeVolpia@user/GdeVolpiano) (Ping timeout: 244 seconds) |
2025-02-26 08:34:42 +0100 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 248 seconds) |
2025-02-26 08:39:52 +0100 | vanishingideal | (~vanishing@user/vanishingideal) vanishingideal |
2025-02-26 08:41:33 +0100 | GdeVolpiano | (~GdeVolpia@user/GdeVolpiano) GdeVolpiano |
2025-02-26 08:45:24 +0100 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn |
2025-02-26 08:45:50 +0100 | euleritian | (~euleritia@ip4d17fae8.dynamic.kabel-deutschland.de) (Remote host closed the connection) |
2025-02-26 08:49:49 +0100 | jle` | (~jle`@2603:8001:3b00:11:240e:f2a:571:e822) (Ping timeout: 252 seconds) |
2025-02-26 08:51:24 +0100 | alfiee | (~alfiee@user/alfiee) alfiee |
2025-02-26 08:51:48 +0100 | jle` | (~jle`@2603:8001:3b00:11:8ed8:2d9f:d44c:86d1) jle` |
2025-02-26 08:52:10 +0100 | euleritian | (~euleritia@ip4d17fae8.dynamic.kabel-deutschland.de) |
2025-02-26 08:52:15 +0100 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 244 seconds) |
2025-02-26 08:52:40 +0100 | jle` | (~jle`@2603:8001:3b00:11:8ed8:2d9f:d44c:86d1) (Client Quit) |
2025-02-26 08:52:51 +0100 | ft | (~ft@p3e9bc68d.dip0.t-ipconnect.de) (Quit: leaving) |
2025-02-26 08:53:03 +0100 | jle` | (~jle`@2603:8001:3b00:11:8ed8:2d9f:d44c:86d1) jle` |
2025-02-26 08:53:42 +0100 | alp | (~alp@2001:861:8ca0:4940:de90:3201:9e0e:e126) |
2025-02-26 08:55:39 +0100 | alfiee | (~alfiee@user/alfiee) (Ping timeout: 244 seconds) |
2025-02-26 08:58:13 +0100 | jle` | (~jle`@2603:8001:3b00:11:8ed8:2d9f:d44c:86d1) (Ping timeout: 248 seconds) |
2025-02-26 08:59:51 +0100 | sord937 | (~sord937@gateway/tor-sasl/sord937) sord937 |
2025-02-26 09:00:01 +0100 | caconym | (~caconym@user/caconym) (Quit: bye) |
2025-02-26 09:01:02 +0100 | caconym | (~caconym@user/caconym) caconym |
2025-02-26 09:14:33 +0100 | ash3en | (~Thunderbi@2a03:7846:b6eb:101:93ac:a90a:da67:f207) (Ping timeout: 245 seconds) |
2025-02-26 09:14:54 +0100 | ash3en | (~Thunderbi@146.70.124.222) ash3en |
2025-02-26 09:28:34 +0100 | florida | (~florida@2a02:ab88:7200:6a00:762b:62ff:fe83:1a1b) |
2025-02-26 09:30:16 +0100 | Sgeo_ | (~Sgeo@user/sgeo) (Read error: Connection reset by peer) |
2025-02-26 09:30:41 +0100 | acidjnk_new | (~acidjnk@p200300d6e7283f8044b147bcd5cee5e7.dip0.t-ipconnect.de) acidjnk |
2025-02-26 09:33:27 +0100 | ash3en | (~Thunderbi@146.70.124.222) (Ping timeout: 252 seconds) |
2025-02-26 09:34:05 +0100 | <tomsmeding> | @tell Square it seems the `Type [Name]` has moved into the `Type`: instead of `DataInstD _ n [t1,t2]` write `DataInstD _ Nothing (n `AppT` t1 `AppT` t2)` |
2025-02-26 09:34:05 +0100 | <lambdabot> | Consider it noted. |
2025-02-26 09:34:38 +0100 | <tomsmeding> | @tell Square trick: you can evaluate quotes in ghci and see what AST they produce, e.g. [d| data instance T [x] = A x | B (T x) |] |
2025-02-26 09:34:38 +0100 | <lambdabot> | Consider it noted. |
2025-02-26 09:36:44 +0100 | aforemny_ | (~aforemny@2001:9e8:6cc7:1800:f602:cc4c:87fe:731d) aforemny |
2025-02-26 09:37:08 +0100 | aforemny | (~aforemny@i59F4C45F.versanet.de) (Ping timeout: 252 seconds) |
2025-02-26 09:39:14 +0100 | CiaoSen | (~Jura@2a02:8071:64e1:7180:4e50:ddff:fe9b:8922) CiaoSen |
2025-02-26 09:42:01 +0100 | merijn | (~merijn@77.242.116.146) merijn |
2025-02-26 09:43:43 +0100 | tromp | (~textual@2a02:a210:cba:8500:b949:287e:6bbd:873b) (Quit: My iMac has gone to sleep. ZZZzzz…) |
2025-02-26 09:43:48 +0100 | alfiee | (~alfiee@user/alfiee) alfiee |
2025-02-26 09:44:01 +0100 | laxmik | (~laxmik@ip-109-40-48-158.web.vodafone.de) laxmik |
2025-02-26 09:44:35 +0100 | petrichor | (~znc-user@user/petrichor) (Quit: ZNC 1.8.2 - https://znc.in) |
2025-02-26 09:44:50 +0100 | laxmik | (~laxmik@ip-109-40-48-158.web.vodafone.de) (Client Quit) |
2025-02-26 09:45:51 +0100 | petrichor | (~znc-user@user/petrichor) petrichor |
2025-02-26 09:48:24 +0100 | alfiee | (~alfiee@user/alfiee) (Ping timeout: 260 seconds) |
2025-02-26 09:51:24 +0100 | <dminuoso> | Hah, I had exactly the same stuff written into the input buffer, but I believed that this @tell thing surely did not survive the freenode libera crisis. :-) |
2025-02-26 09:55:14 +0100 | <tomsmeding> | lambdabot transcends worlds! |
2025-02-26 10:02:26 +0100 | LainExperiments | (~LainExper@user/LainExperiments) LainExperiments |
2025-02-26 10:06:31 +0100 | __monty__ | (~toonn@user/toonn) toonn |
2025-02-26 10:07:10 +0100 | LainExperiments5 | (~LainExper@user/LainExperiments) LainExperiments |
2025-02-26 10:07:32 +0100 | LainExperiments6 | (~LainExper@user/LainExperiments) LainExperiments |
2025-02-26 10:08:03 +0100 | LainExperiments6 | (~LainExper@user/LainExperiments) (Client Quit) |
2025-02-26 10:09:10 +0100 | LainExperiments8 | (~LainExper@user/LainExperiments) LainExperiments |
2025-02-26 10:09:36 +0100 | LainExperiments8 | (~LainExper@user/LainExperiments) (Write error: Broken pipe) |
2025-02-26 10:10:40 +0100 | LainExperiments | (~LainExper@user/LainExperiments) (Ping timeout: 240 seconds) |
2025-02-26 10:11:09 +0100 | chele | (~chele@user/chele) chele |
2025-02-26 10:17:47 +0100 | <tomsmeding> | How are the components of a GHC version called? E.g. for 9.12.1, how do I call the "9", the "12" and the "1"? |
2025-02-26 10:18:39 +0100 | <tomsmeding> | the GHC user guide ( https://downloads.haskell.org/ghc/latest/docs/users_guide/intro.html#ghc-version-numbering-policy ) seems to call the "1" the "patchlevel number", and uses the word "major release" for any abstract version x.y.z |
2025-02-26 10:19:04 +0100 | <tomsmeding> | the HLS GHC version support page ( https://haskell-language-server.readthedocs.io/en/latest/support/ghc-version-support.html ) seems to use "minor" for "1" and "major" for "9.12", but it's a little bit unclear |
2025-02-26 10:20:32 +0100 | <tomsmeding> | Stackage seems to use the same terminology as HLS ( https://github.com/commercialhaskell/stackage#frequently-asked-questions ) |
2025-02-26 10:20:42 +0100 | <tomsmeding> | (but it's not specified, just implied) |
2025-02-26 10:22:46 +0100 | GdeVolpiano | (~GdeVolpia@user/GdeVolpiano) (Quit: WeeChat 4.4.3) |
2025-02-26 10:24:20 +0100 | GdeVolpiano | (~GdeVolpia@user/GdeVolpiano) GdeVolpiano |
2025-02-26 10:25:30 +0100 | <tomsmeding> | ah, and the GHC wiki calls any N.M.1 a major release, and any N.M.{2,3,...} a minor release! https://gitlab.haskell.org/ghc/ghc/-/wikis/GHC-status#1-release-practices |
2025-02-26 10:26:19 +0100 | bionade24 | (~quassel@2a03:4000:33:45b::1) (Read error: Connection reset by peer) |
2025-02-26 10:26:40 +0100 | bionade24 | (~quassel@2a03:4000:33:45b::1) bionade24 |
2025-02-26 10:26:52 +0100 | Smiles | (uid551636@id-551636.lymington.irccloud.com) Smiles |
2025-02-26 10:29:13 +0100 | alfiee | (~alfiee@user/alfiee) alfiee |
2025-02-26 10:29:23 +0100 | merijn | (~merijn@77.242.116.146) (Ping timeout: 244 seconds) |
2025-02-26 10:29:53 +0100 | rvalue | (~rvalue@user/rvalue) (Ping timeout: 248 seconds) |
2025-02-26 10:31:10 +0100 | LainExperiments5 | (~LainExper@user/LainExperiments) (Ping timeout: 240 seconds) |
2025-02-26 10:32:12 +0100 | LainExperiments | (~LainExper@user/LainExperiments) LainExperiments |
2025-02-26 10:33:18 +0100 | alfiee | (~alfiee@user/alfiee) (Ping timeout: 244 seconds) |
2025-02-26 10:34:35 +0100 | tzh | (~tzh@c-76-115-131-146.hsd1.or.comcast.net) (Quit: zzz) |
2025-02-26 10:35:30 +0100 | rvalue | (~rvalue@user/rvalue) rvalue |
2025-02-26 10:35:34 +0100 | merijn | (~merijn@77.242.116.146) merijn |
2025-02-26 10:35:35 +0100 | <cheater> | what do you call a pair of functions in mathematics f, g, f: X -> Y and g: Y -> X such that \A x \in X \E f(x) and \A y \in Y \E g(y)? |
2025-02-26 10:36:04 +0100 | <tomsmeding> | what do you mean with "\E f(x)"? |
2025-02-26 10:36:59 +0100 | lxsameer | (~lxsameer@Serene/lxsameer) lxsameer |
2025-02-26 10:37:13 +0100 | <tomsmeding> | perhaps you meant "\A x \in X \E y (f(x) = y)"? |
2025-02-26 10:37:22 +0100 | <tomsmeding> | or something |
2025-02-26 10:39:43 +0100 | <Leary> | tomsmeding: In line with HLS: 9.12 ~ major (version (numbers)); 1 ~ minor (version (number)). At least that's the language I would use; I doubt there's an official decree. |
2025-02-26 10:40:25 +0100 | <tomsmeding> | Leary: Well, then the GHC user guide disagrees, and the GHC wiki contests the nuance. :P |
2025-02-26 10:40:32 +0100 | merijn | (~merijn@77.242.116.146) (Ping timeout: 244 seconds) |
2025-02-26 10:41:16 +0100 | <tomsmeding> | though actually the GHC wiki terminology is rather close to this |
2025-02-26 10:41:56 +0100 | <cheater> | tomsmeding: yes. that's a shorthand. |
2025-02-26 10:42:07 +0100 | <Leary> | Multiple terminologies can coexist. I also don't consider the language around /releases/ to conflict with the language for the version components. |
2025-02-26 10:42:32 +0100 | <tomsmeding> | cheater: so then that first formula says that f is total? I.e. it returns a result for every x? |
2025-02-26 10:42:37 +0100 | <cheater> | yes |
2025-02-26 10:42:40 +0100 | swamp_ | (~zmt00@user/zmt00) zmt00 |
2025-02-26 10:42:55 +0100 | <cheater> | a pair of total functions between two sets going in opposite directions |
2025-02-26 10:42:56 +0100 | <tomsmeding> | I don't see any connection between f and g here |
2025-02-26 10:43:04 +0100 | <tomsmeding> | those are just a pair of functions |
2025-02-26 10:43:10 +0100 | <tomsmeding> | functions are total by default in mathematics |
2025-02-26 10:43:31 +0100 | <tomsmeding> | it's the concept of a "partial function" that needs explicit note |
2025-02-26 10:43:38 +0100 | kaskal | (~kaskal@84-115-238-111.cable.dynamic.surfer.at) kaskal |
2025-02-26 10:43:42 +0100 | <cheater> | they are total on their domains, but their domains don't have to line up like they do in my hypothesis |
2025-02-26 10:43:42 +0100 | <tomsmeding> | (and that's usually modelled as a total function to Y + 1) |
2025-02-26 10:44:02 +0100 | <tomsmeding> | Leary: That's fair |
2025-02-26 10:44:34 +0100 | <cheater> | f and g are connected by the property i listed above: they are total on sets that contain each other's codomains |
2025-02-26 10:45:02 +0100 | <tomsmeding> | cheater: if the functions have some equation relating them, then there may be appropriate terminology, but without any equation relating them, I don't think there's a word for this |
2025-02-26 10:45:44 +0100 | <cheater> | the only property is that if you start in one set, you can infinitely go between the two sets using f and g. possibly ending at some limit element or not. |
2025-02-26 10:45:48 +0100 | zmt01 | (~zmt00@user/zmt00) (Ping timeout: 252 seconds) |
2025-02-26 10:45:51 +0100 | <tomsmeding> | if f and g are continuous and bijective, then they are homeomorphisms, for example |
2025-02-26 10:45:55 +0100 | <cheater> | i think that's interesting enough. |
2025-02-26 10:46:18 +0100 | <cheater> | no, they have no such property as stated |
2025-02-26 10:47:02 +0100 | tromp | (~textual@2a02:a210:cba:8500:b949:287e:6bbd:873b) |
2025-02-26 10:48:39 +0100 | <cheater> | if no such thing is described then i shall coin that as a speculative function pair (or tuple for a more complex graph) |
2025-02-26 10:49:13 +0100 | <tomsmeding> | you can call it a "back-and-forth" |
2025-02-26 10:51:04 +0100 | xff0x | (~xff0x@fsb6a9491c.tkyc517.ap.nuro.jp) (Ping timeout: 272 seconds) |
2025-02-26 10:51:20 +0100 | merijn | (~merijn@77.242.116.146) merijn |
2025-02-26 10:52:11 +0100 | <cheater> | that sounds like something out of control theory. |
2025-02-26 10:54:20 +0100 | <[exa]> | cheater: you can just say that compositions of f and g are total |
2025-02-26 10:54:37 +0100 | <cheater> | i don't like puzzle definitions |
2025-02-26 10:54:41 +0100 | <tomsmeding> | that's not quite the same statement, is it? |
2025-02-26 10:55:40 +0100 | <[exa]> | the totality of the composition implies exactly the domain-is-a-superset property that was requested, and I just run it in both directions |
2025-02-26 10:55:55 +0100 | <[exa]> | so I'd say it's the same |
2025-02-26 10:55:59 +0100 | <tomsmeding> | depends on what compositions you mean when you say "compositions of f and g" |
2025-02-26 10:56:17 +0100 | <tomsmeding> | if it's just "f . g", then it's weaker; if you also include "f . f", then it's stronger |
2025-02-26 10:57:10 +0100 | <[exa]> | f.f doesn't type |
2025-02-26 10:57:24 +0100 | <tomsmeding> | but if you already have the types of f and g, there's nothing more to specify! |
2025-02-26 10:57:26 +0100 | <[exa]> | ah well okay in math that could cause issues, I see |
2025-02-26 10:58:01 +0100 | <[exa]> | anyway yeah, I'd say the original definiton would need a bit more of a spirit to it to actually spawn a useful name |
2025-02-26 10:59:04 +0100 | <Leary> | I'm still not sure what the original statement is supposed to be. f and g are partial functions with opposite co/domains and the property that each is total on the other's range? |
2025-02-26 10:59:08 +0100 | <tomsmeding> | https://ncatlab.org/nlab/show/concept+with+an+attitude |
2025-02-26 11:00:22 +0100 | bilegeek | (~bilegeek@2600:1008:b06e:701b:8c92:bcff:3789:c22c) (Quit: Leaving) |
2025-02-26 11:01:12 +0100 | acidjnk_new | (~acidjnk@p200300d6e7283f8044b147bcd5cee5e7.dip0.t-ipconnect.de) (Ping timeout: 272 seconds) |
2025-02-26 11:02:38 +0100 | <[exa]> | oh that's a nice site. |
2025-02-26 11:04:00 +0100 | acidsys | (~crameleon@openSUSE/member/crameleon) (Ping timeout: 244 seconds) |
2025-02-26 11:04:44 +0100 | <cheater> | you don't know about ncatlab? |
2025-02-26 11:04:59 +0100 | <cheater> | anyways i think the idea of being able to bounce back and forth an infinite amount of times is pretty interesting |
2025-02-26 11:05:44 +0100 | <cheater> | it can easily create congruences, for example |
2025-02-26 11:05:47 +0100 | <cheater> | and a topology |
2025-02-26 11:06:11 +0100 | <cheater> | and can be continuated |
2025-02-26 11:06:18 +0100 | <cheater> | even smoothly so |
2025-02-26 11:09:10 +0100 | <tomsmeding> | I'd personally expect that as soon as that bouncing has any kind of _property_ (it converges, or you end up where you started, ...) then it _does_ have a name |
2025-02-26 11:09:54 +0100 | <ames> | just don't listen to nlab when it comes to type theory |
2025-02-26 11:10:29 +0100 | ski | (~ski@remote11.chalmers.se) (Ping timeout: 248 seconds) |
2025-02-26 11:10:40 +0100 | <ames> | it ranges from subtly incorrect and extra verbose to complete and utter bullshit |
2025-02-26 11:12:40 +0100 | acidjnk_new | (~acidjnk@p200300d6e7283f8044b147bcd5cee5e7.dip0.t-ipconnect.de) acidjnk |
2025-02-26 11:14:06 +0100 | ski | (~ski@remote11.chalmers.se) |
2025-02-26 11:14:57 +0100 | alfiee | (~alfiee@user/alfiee) alfiee |
2025-02-26 11:19:46 +0100 | alfiee | (~alfiee@user/alfiee) (Ping timeout: 268 seconds) |
2025-02-26 11:20:24 +0100 | acidsys | (~crameleon@openSUSE/member/crameleon) crameleon |
2025-02-26 11:23:28 +0100 | hattckory | (~hattckory@149.102.242.103) |
2025-02-26 11:36:54 +0100 | merijn | (~merijn@77.242.116.146) (Ping timeout: 260 seconds) |
2025-02-26 11:39:03 +0100 | <ncf> | cheater: it's just a pair of functions. all functions are total unless stated otherwise, in mathematics |
2025-02-26 11:40:09 +0100 | merijn | (~merijn@77.242.116.146) merijn |
2025-02-26 11:48:10 +0100 | xff0x | (~xff0x@2405:6580:b080:900:17f4:b7d4:84ba:3a30) |
2025-02-26 11:50:23 +0100 | acidjnk_new | (~acidjnk@p200300d6e7283f8044b147bcd5cee5e7.dip0.t-ipconnect.de) (Ping timeout: 245 seconds) |
2025-02-26 11:57:04 +0100 | <tomsmeding> | @tell Athas You may get better performance with 'ad' if you use Numeric.AD.Double _and_ enable the +ffi flag |
2025-02-26 11:57:04 +0100 | <lambdabot> | Consider it noted. |
2025-02-26 11:57:36 +0100 | <Athas> | tomsmeding: I do use Numeric.AD.Double, but what does +ffi do? |
2025-02-26 11:57:52 +0100 | <tomsmeding> | Athas: it switches to taping in C, instead of in haskell |
2025-02-26 11:58:40 +0100 | <Athas> | Well, that ought to make a difference. Now to see if I remember how to set cabal flags. |
2025-02-26 11:59:21 +0100 | <tomsmeding> | `constraints: ad +ffi` in cabal.project |
2025-02-26 11:59:40 +0100 | <tomsmeding> | I wonder why this flag is not enabled by default |
2025-02-26 12:00:02 +0100 | <Athas> | Flags are the worst part of the Hackage ecosystem. |
2025-02-26 12:00:25 +0100 | <Athas> | Well, let's see. |
2025-02-26 12:01:02 +0100 | alfiee | (~alfiee@user/alfiee) alfiee |
2025-02-26 12:02:07 +0100 | LainExperiments2 | (~LainExper@user/LainExperiments) LainExperiments |
2025-02-26 12:02:56 +0100 | LainExperiments4 | (~LainExper@user/LainExperiments) LainExperiments |
2025-02-26 12:03:28 +0100 | Everything | (~Everythin@46.211.65.235) Everything |
2025-02-26 12:04:40 +0100 | LainExperiments | (~LainExper@user/LainExperiments) (Ping timeout: 240 seconds) |
2025-02-26 12:06:01 +0100 | alfiee | (~alfiee@user/alfiee) (Ping timeout: 268 seconds) |
2025-02-26 12:08:40 +0100 | LainExperiments2 | (~LainExper@user/LainExperiments) (Ping timeout: 240 seconds) |
2025-02-26 12:12:53 +0100 | Digitteknohippie | (~user@user/digit) Digit |
2025-02-26 12:15:23 +0100 | Digit | (~user@user/digit) (Ping timeout: 245 seconds) |
2025-02-26 12:20:17 +0100 | merijn | (~merijn@77.242.116.146) (Ping timeout: 252 seconds) |
2025-02-26 12:20:18 +0100 | LainExperiments | (~LainExper@user/LainExperiments) LainExperiments |
2025-02-26 12:23:10 +0100 | LainExperiments4 | (~LainExper@user/LainExperiments) (Ping timeout: 240 seconds) |
2025-02-26 12:27:28 +0100 | xff0x | (~xff0x@2405:6580:b080:900:17f4:b7d4:84ba:3a30) (Ping timeout: 245 seconds) |
2025-02-26 12:31:01 +0100 | Everything | (~Everythin@46.211.65.235) (Ping timeout: 248 seconds) |
2025-02-26 12:33:00 +0100 | merijn | (~merijn@77.242.116.146) merijn |
2025-02-26 12:33:48 +0100 | plitter | (~plitter@user/plitter) plitter |
2025-02-26 12:41:24 +0100 | LainExperiments3 | (~LainExper@user/LainExperiments) LainExperiments |
2025-02-26 12:43:10 +0100 | merijn | (~merijn@77.242.116.146) (Ping timeout: 272 seconds) |
2025-02-26 12:44:20 +0100 | LainExperiments2 | (~LainExper@user/LainExperiments) LainExperiments |
2025-02-26 12:44:40 +0100 | LainExperiments | (~LainExper@user/LainExperiments) (Ping timeout: 240 seconds) |
2025-02-26 12:46:27 +0100 | <Athas> | tomsmeding: I don't see any difference, but perhaps I am holding it wrong. |
2025-02-26 12:46:39 +0100 | LainExperiments | (~LainExper@user/LainExperiments) LainExperiments |
2025-02-26 12:48:28 +0100 | alfiee | (~alfiee@user/alfiee) alfiee |
2025-02-26 12:49:40 +0100 | LainExperiments3 | (~LainExper@user/LainExperiments) (Ping timeout: 240 seconds) |
2025-02-26 12:50:21 +0100 | <tomsmeding> | Athas: if you `nm` your executable, does it reference `tape_backPropagate`? |
2025-02-26 12:50:53 +0100 | <tomsmeding> | that distinguishes between an ad +ffi and an ad -ffi build for me |
2025-02-26 12:51:19 +0100 | <Athas> | It does not. |
2025-02-26 12:51:42 +0100 | <Athas> | I assume cabal's logic for recompiling dependencies on flag changes is sound, right? |
2025-02-26 12:51:50 +0100 | <tomsmeding> | it worked for me! |
2025-02-26 12:52:10 +0100 | LainExperiments2 | (~LainExper@user/LainExperiments) (Ping timeout: 240 seconds) |
2025-02-26 12:52:29 +0100 | <Athas> | And 'constraints: ad +ffi' in my cabal.project is enough? |
2025-02-26 12:52:30 +0100 | alfiee | (~alfiee@user/alfiee) (Ping timeout: 244 seconds) |
2025-02-26 12:53:45 +0100 | <tomsmeding> | well, I put a newline and an indent after the `:`, but otherwise, yes, that's exactly what I did |
2025-02-26 12:53:53 +0100 | <Athas> | Oh, this is interesting. I don't see tape_backPropagate when I use Numeric.AD.Double in my kmeans implementation, but I do see it when I use it for the dummy 'hello' benchmark. |
2025-02-26 12:54:33 +0100 | <tomsmeding> | Athas: aren't you doing reverse-then-forward in kmeans? i.e. your reverse mode is not actually on Doubles, but on dual numbers? |
2025-02-26 12:54:36 +0100 | Googulator78 | (~Googulato@2a01-036d-0106-0c81-ad7c-ac56-196b-c9a2.pool6.digikabel.hu) (Quit: Client closed) |
2025-02-26 12:54:44 +0100 | merijn | (~merijn@77.242.116.146) merijn |
2025-02-26 12:54:51 +0100 | <Athas> | tomsmeding: yes, but I'm just using a single exported function from Numeric.AD.Double. |
2025-02-26 12:54:58 +0100 | Googulator78 | (~Googulato@2a01-036d-0106-0c81-ad7c-ac56-196b-c9a2.pool6.digikabel.hu) |
2025-02-26 12:54:58 +0100 | <tomsmeding> | the whole point of Numeric.AD.Double is that it optimises the `Reverse s Double` case |
2025-02-26 12:55:02 +0100 | <Athas> | But now I have an interesting result. Do you remember I had a version that "ought" to be faster, but wasn't? |
2025-02-26 12:55:13 +0100 | <tomsmeding> | something something hessian jacobian product? |
2025-02-26 12:55:14 +0100 | <Athas> | When I use that version, I do see significant speedup with +ffi. |
2025-02-26 12:55:28 +0100 | <tomsmeding> | interesting! |
2025-02-26 12:55:42 +0100 | <tomsmeding> | What function from Numeric.AD.Double aer you using in the version that doesn't get vaster? |
2025-02-26 12:55:46 +0100 | <tomsmeding> | *faster |
2025-02-26 12:55:49 +0100 | <Athas> | The commented-out code seems to perform quite OK now: https://github.com/gradbench/gradbench/blob/main/tools/haskell/src/GradBench/KMeans.hs#L78-L95 |
2025-02-26 12:55:56 +0100 | <Athas> | We'll see if the memory issue has also been solved. |
2025-02-26 12:56:26 +0100 | <tomsmeding> | oh I guess `hessian'` |
2025-02-26 12:57:10 +0100 | <tomsmeding> | the FFI code is specifically for ReverseDouble; I guess `Reverse s SparseDouble` only benefits from being specialised to Double in Haskell-land, not fro mthe FFI code |
2025-02-26 12:57:36 +0100 | <tomsmeding> | so this seems consistent, to me |
2025-02-26 12:57:49 +0100 | <Athas> | Memory usage isn't promising. |
2025-02-26 12:57:54 +0100 | <tomsmeding> | except that hessianProduct also doesn't use ReverseDouble! |
2025-02-26 12:58:06 +0100 | <Athas> | Yeah, it OOM'ed again. |
2025-02-26 12:58:16 +0100 | <Athas> | But it's certainly a lot faster. |
2025-02-26 12:58:34 +0100 | <Athas> | A little more than 2x. |
2025-02-26 12:59:57 +0100 | <Athas> | If gradbench handled the OOM a little more gracefully, then I'd prefer this solution. It looks nice. |
2025-02-26 13:05:49 +0100 | <Hecate> | yo |
2025-02-26 13:05:57 +0100 | <Hecate> | can hlint apply rules to type signatures? |
2025-02-26 13:05:58 +0100 | <Hecate> | https://www.reddit.com/r/haskellquestions/comments/1iylzer/is_it_possible_to_make_hlint_rules_for_… |
2025-02-26 13:08:20 +0100 | L29Ah | (~L29Ah@wikipedia/L29Ah) L29Ah |
2025-02-26 13:08:36 +0100 | jespada | (~jespada@2800:a4:2358:c700:f051:395a:5b5:8278) jespada |
2025-02-26 13:11:12 +0100 | zungi | (~tory@user/andrewchawk) (Remote host closed the connection) |
2025-02-26 13:11:38 +0100 | zungi | (~tory@user/andrewchawk) andrewchawk |
2025-02-26 13:13:21 +0100 | L29Ah | (~L29Ah@wikipedia/L29Ah) () |
2025-02-26 13:15:53 +0100 | ash3en | (~Thunderbi@146.70.124.222) ash3en |
2025-02-26 13:17:03 +0100 | L29Ah | (~L29Ah@wikipedia/L29Ah) L29Ah |
2025-02-26 13:17:04 +0100 | xff0x | (~xff0x@2405:6580:b080:900:3aeb:7d91:ba3:21b4) |
2025-02-26 13:26:58 +0100 | L29Ah | (~L29Ah@wikipedia/L29Ah) () |
2025-02-26 13:27:20 +0100 | L29Ah | (~L29Ah@wikipedia/L29Ah) L29Ah |
2025-02-26 13:27:44 +0100 | LainExperiments | (~LainExper@user/LainExperiments) (Quit: Client closed) |
2025-02-26 13:28:32 +0100 | LainExperiments | (~LainExper@user/LainExperiments) LainExperiments |
2025-02-26 13:30:40 +0100 | L29Ah | (~L29Ah@wikipedia/L29Ah) () |
2025-02-26 13:30:56 +0100 | L29Ah | (~L29Ah@wikipedia/L29Ah) L29Ah |
2025-02-26 13:31:42 +0100 | fp1 | (~Thunderbi@2001:708:150:10::1d80) fp |
2025-02-26 13:32:09 +0100 | fp | (~Thunderbi@130.233.70.89) (Quit: fp) |
2025-02-26 13:34:08 +0100 | mange | (~user@user/mange) (Quit: Zzz...) |
2025-02-26 13:34:12 +0100 | alfiee | (~alfiee@user/alfiee) alfiee |
2025-02-26 13:36:22 +0100 | fp1 | (~Thunderbi@2001:708:150:10::1d80) (Ping timeout: 272 seconds) |
2025-02-26 13:36:42 +0100 | fp | (~Thunderbi@2001:708:20:1406::1370) fp |
2025-02-26 13:38:41 +0100 | alfiee | (~alfiee@user/alfiee) (Ping timeout: 248 seconds) |
2025-02-26 13:42:25 +0100 | CiaoSen | (~Jura@2a02:8071:64e1:7180:4e50:ddff:fe9b:8922) (Ping timeout: 248 seconds) |
2025-02-26 13:42:44 +0100 | Digitteknohippie | Digit |
2025-02-26 13:43:50 +0100 | florida | (~florida@2a02:ab88:7200:6a00:762b:62ff:fe83:1a1b) (Remote host closed the connection) |
2025-02-26 13:44:35 +0100 | SlackCoder | (~SlackCode@64-94-63-8.ip.weststar.net.ky) SlackCoder |