Logs on 2021-11-25 (liberachat/#haskell)
| 00:02:00 | → | nautical joins (~nautical@2601:602:900:1630::396f) |
| 00:05:21 | × | gioyik quits (~gioyik@gateway/tor-sasl/gioyik) (Ping timeout: 276 seconds) |
| 00:08:05 | <arahael> | Hmm, still having difficulty overriding a hackage package using cabal. Is my only option to run a local hackage server? |
| 00:08:31 | <arahael> | I've tried specifying both packages, and optional-packages, in my cabal.project file. |
| 00:09:26 | <sclv> | the cabal.project route should work |
| 00:09:37 | → | gioyik joins (~gioyik@gateway/tor-sasl/gioyik) |
| 00:10:12 | <arahael> | Yeah, trouble is, it's not. I'm not sure why. I mean, I've literally just created a cabal.project file that has "packages: ../foundation/basement/*.cabal" in it, it doesn't make any difference... |
| 00:10:13 | <sclv> | just unpack the repo in the same tarball as the project and add its cabal in the packages stanza |
| 00:10:32 | <sclv> | arahael: i suspect its the relative path causing the issue |
| 00:10:47 | <geekosaur> | relative paths work for me? |
| 00:10:55 | <sclv> | ok then nevermind? |
| 00:10:56 | <arahael> | sclv: Really? The docs use relative paths as an exmaple. |
| 00:11:06 | <sclv> | it was a shot in the dark |
| 00:11:08 | <sclv> | lmao |
| 00:11:13 | <arahael> | Ah, fair enough. :) |
| 00:11:14 | × | curiousgay quits (~curiousga@77-120-141-90.kha.volia.net) (Remote host closed the connection) |
| 00:11:18 | → | pfurla joins (~pfurla@2804:14d:5c81:4104:d22:12b7:6d7c:fb3c) |
| 00:11:27 | <geekosaur> | packages: ./ X11/ xmonad/ xmonad-contrib/ |
| 00:11:33 | <sclv> | i do know there's some corners of cabal where we don't always have them working right |
| 00:11:35 | → | curiousgay joins (~curiousga@77-120-141-90.kha.volia.net) |
| 00:11:41 | <geekosaur> | overriding all three from hackage because I use local checkouts |
| 00:11:55 | <sclv> | er by relative i meant with .. |
| 00:11:56 | <geekosaur> | (will need to add at least one more soonish) |
| 00:12:00 | <geekosaur> | ah |
| 00:12:21 | → | lbseale joins (~ep1ctetus@user/ep1ctetus) |
| 00:12:26 | <sclv> | the default directory functions don't resolve that properly without some extra calls iirc |
| 00:12:52 | <arahael> | sclv: The provided example in the docs is literally: packages: */*.cabal ../{foo,bar}/ |
| 00:13:19 | → | yauhsien joins (~yauhsien@61-231-30-221.dynamic-ip.hinet.net) |
| 00:13:21 | <sclv> | the other shot in the dark is to delete the *.cabal bit |
| 00:13:28 | <sclv> | all i can tell you is that its worked for me just fine |
| 00:13:49 | <sclv> | assuming A) a new enough cabal and B) using v2- commands, just to be clear |
| 00:14:25 | <arahael> | sclv: When I do that, "cabal build" stops working at all because the current project I'm in doesn't exist anymore. |
| 00:14:49 | <sclv> | arahael: did you add also _your project_ explicitly to the packages file? |
| 00:14:56 | <sclv> | or er stanza, you know what i mean |
| 00:15:09 | <arahael> | sclv: What does "explicit" mean in this case? |
| 00:15:27 | <sclv> | like geekosaur posted: you need a "./" in there or the like |
| 00:15:50 | <arahael> | sclv: It's picking up the local .cabal file just fine, though? |
| 00:16:08 | <sclv> | ok then what did you mean "the current project I'm in doesn't exist anymore" |
| 00:16:41 | <arahael> | Working: packages: *.cabal ../foundation/basement/*.cabal |
| 00:16:55 | <arahael> | Not working: packages: ../foundation/basement/*.cabal |
| 00:16:59 | <sclv> | right |
| 00:17:02 | <sclv> | that's as designed |
| 00:17:03 | <arahael> | Unfortunately, it's failing to prioritise the basement *over* the hackage. |
| 00:17:12 | <arahael> | basement also exists in hackage. |
| 00:17:22 | <sclv> | right, it should always prefer local |
| 00:17:27 | <sclv> | unless you have version bounds that prevent it |
| 00:17:41 | <sclv> | calling -v might give a hint |
| 00:17:51 | × | yauhsien quits (~yauhsien@61-231-30-221.dynamic-ip.hinet.net) (Ping timeout: 260 seconds) |
| 00:18:38 | <arahael> | It's creating dist-newstyle/build/aarch64-osx/ghc-9.2.1/basement-0.0.12/build |
| 00:18:57 | × | mreh quits (~mreh@2a00:23c7:2803:ef00:841c:a322:61f5:4ad9) (Ping timeout: 256 seconds) |
| 00:19:00 | <sclv> | ok, so it _is_ building it? |
| 00:19:11 | <arahael> | Yeah, but again, I'm 99.9999% certain it's creating it from hackage. |
| 00:19:28 | <sclv> | why |
| 00:19:36 | → | Tuplanolla joins (~Tuplanoll@91-159-69-50.elisa-laajakaista.fi) |
| 00:20:25 | <arahael> | sclv: Because the specific bug I'm trying to avoid is still there. |
| 00:20:37 | <arahael> | (And the version I've checked out is supposed to fix it) |
| 00:20:39 | <sclv> | i suggest you change the local one in an incredibly obvious way |
| 00:20:44 | <sclv> | like make it build wrongly |
| 00:20:49 | <sclv> | or print some debug spew |
| 00:21:23 | <arahael> | I'll delete the function outright that causes the bug, then... |
| 00:22:07 | <sclv> | oh also if you're not using basement directly, but its some dep of a dep, i don't think the local one will get picked up by all your deps |
| 00:22:34 | <sclv> | like you can't just "patch in" a single package at the root of your dep tree with this approach |
| 00:22:37 | × | geekosaur quits (~geekosaur@xmonad/geekosaur) (Remote host closed the connection) |
| 00:23:13 | → | bitdex joins (~bitdex@gateway/tor-sasl/bitdex) |
| 00:23:16 | <arahael> | Yeah, it's a dep of a dep, but interestingly, deleting that function outright produced a warning that a function does not have an accompanying binding, which makes sense as I just deleted that binding. |
| 00:23:37 | <sclv> | so i think what'll happen is it'll still try to build it as part of your project |
| 00:23:38 | <arahael> | But it's a dep of a dep, why do you think that wouldn't be expected to work? |
| 00:23:41 | <sclv> | it just won't use it |
| 00:23:41 | × | Moyst_ quits (~moyst@user/moyst) (Ping timeout: 245 seconds) |
| 00:23:45 | sm2n_ | is now known as sm2n |
| 00:23:49 | <sclv> | just my understanding of how cabal innards work |
| 00:23:59 | <arahael> | Blegh. So how do I tell cabal to just replace the darn thing? |
| 00:24:26 | <sclv> | you need to pull in everything in the transitive dep tree as well, or use a local repo to override |
| 00:24:34 | <sclv> | which is not necc a hackage server in full |
| 00:24:38 | → | geekosaur joins (~geekosaur@xmonad/geekosaur) |
| 00:24:43 | <sclv> | you can do a "filesystem repo" which is much simpler to setup |
| 00:24:47 | → | Moyst_ joins (~moyst@user/moyst) |
| 00:24:52 | <arahael> | I've literally cloned that basement repo. |
| 00:24:59 | <arahael> | "git clone", even. |
| 00:25:02 | <sclv> | right |
| 00:25:07 | <sclv> | i mean instead of a "local hackage server" |
| 00:25:15 | <sclv> | you can do a "filesystem package repository" |
| 00:25:31 | <sclv> | its still a pita to set up, but a bit less completely so |
| 00:25:38 | <arahael> | That sounds like quite a bit of work, yeah. |
| 00:25:41 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 00:26:02 | <arahael> | Especially for one package which, in all likelihood, is only temporarily broken. |
| 00:26:32 | <sclv> | also if this is the patch for 9.2.1 then you can add the head.hackage repo which should have it fixed already |
| 00:26:56 | <arahael> | This is that patch! How do I add the head.hackage repo? |
| 00:27:01 | <sclv> | https://ghc.gitlab.haskell.org/head.hackage/ |
| 00:27:25 | <arahael> | Doesn't that replace all the other packages I happen to have as well, though? |
| 00:27:38 | <arahael> | Because I really only want that one package to be replaced... |
| 00:27:40 | <sclv> | it only replaces the other ones with head.hackage packates |
| 00:27:42 | <sclv> | er patches |
| 00:27:50 | <sclv> | but all those packages are for 9.2.1 compat as well |
| 00:28:15 | → | Feuermagier_ joins (~Feuermagi@213.178.26.41) |
| 00:30:46 | × | Feuermagier quits (~Feuermagi@user/feuermagier) (Ping timeout: 245 seconds) |
| 00:31:42 | → | lavaman joins (~lavaman@98.38.249.169) |
| 00:32:12 | × | kupi quits (uid212005@id-212005.hampstead.irccloud.com) (Quit: Connection closed for inactivity) |
| 00:33:00 | → | econo joins (uid147250@user/econo) |
| 00:33:39 | <arahael> | That does seem to work, so it sounds like cabal.project (alone) won't do what I want, I _have_ to use a different hackage instance, and I can either set up a local hackage, or use head.hackage since it has the changes I need? |
| 00:34:58 | × | Lord_of_Life quits (~Lord@user/lord-of-life/x-2819915) (Ping timeout: 260 seconds) |
| 00:35:10 | → | Lord_of_Life_ joins (~Lord@user/lord-of-life/x-2819915) |
| 00:35:59 | × | lavaman quits (~lavaman@98.38.249.169) (Ping timeout: 256 seconds) |
| 00:36:30 | Lord_of_Life_ | is now known as Lord_of_Life |
| 00:36:41 | → | drdo joins (~drdo@roach0.drdo.eu) |
| 00:36:49 | → | hiredman joins (~hiredman@frontier1.downey.family) |
| 00:39:14 | <arahael> | Yeah, now I have this bug: https://github.com/haskell/network/issues/497#issuecomment-840641725 |
| 00:39:36 | <arahael> | I really only want that one package, so I think my last and only remaining option is to start a local hackage? |
| 00:39:55 | <sclv> | or vendor the full dep tree |
| 00:40:46 | <arahael> | Doesn't cabal flatten the package name namespace though? It feels a bit odd I have to vendor the whole tree. |
| 00:41:44 | <arahael> | I suppose if I'm vendoring the whole tree, I'm probably back to the point where I might as well have a local hackage. :( |
| 00:41:46 | × | DNH quits (~DNH@2a02:8108:1100:16d8:a418:17da:6b4f:5fc3) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
| 00:42:17 | → | zebrag joins (~chris@user/zebrag) |
| 00:42:34 | × | zebrag quits (~chris@user/zebrag) (Remote host closed the connection) |
| 00:44:54 | <monochrom> | https://cabal.readthedocs.io/en/3.6/installing-packages.html#local-no-index-repositories |
| 00:45:30 | <arahael> | monochrom: I'd prefer to use .git repos instead of tarballs, how am I supposed to patch a tarball? |
| 00:46:08 | → | zebrag joins (~chris@user/zebrag) |
| 00:46:42 | <monochrom> | I don't know. But I unpacked, patched, repacked. |
| 00:50:22 | → | EvanR_ joins (~evan@2600:1700:ba69:10:5c7c:46a9:5e48:ea) |
| 00:51:27 | × | TranquilEcho quits (~grom@user/tranquilecho) (Quit: WeeChat 2.8) |
| 00:53:22 | <arahael> | How do you keep track of your patches? I'm not using haskell every day. |
| 00:53:44 | <arahael> | (My day-to-day job is in Swift, so when I'm doing this, I'm like: Ok, how do I build this thing again, this one's a cabal build, right...) |
| 00:54:02 | × | EvanR quits (~evan@user/evanr) (Ping timeout: 240 seconds) |
| 00:54:45 | × | gioyik quits (~gioyik@gateway/tor-sasl/gioyik) (Ping timeout: 276 seconds) |
| 00:55:03 | <monochrom> | I have only patched once. But I keep the patched source tree somewhere else. |
| 00:55:34 | <arahael> | Do you check out every git repo, and convert each of those to the corresonding .tar.gz? |
| 00:56:19 | → | mvk joins (~mvk@2607:fea8:5cc1:fa00::4702) |
| 00:56:25 | <monochrom> | I downloaded once from hackage. It's just "cabal sdist" when I'm ready. |
| 00:56:41 | × | atwm quits (~andrew@19-193-28-81.ftth.cust.kwaoo.net) (Ping timeout: 268 seconds) |
| 00:56:44 | <Axman6> | :t \f -> f <&> putStr |
| 00:56:45 | <lambdabot> | Functor f => f String -> f (IO ()) |
| 00:56:56 | <arahael> | monochrom: Hmm? I've never looked at 'cabal sdist'. |
| 00:57:10 | <arahael> | monochrom: Don't you have to download every single package that is touched by the project? |
| 00:57:30 | <monochrom> | I have only done one package. |
| 00:58:03 | <arahael> | monochrom: But as sclv was poitning out, I'd need to vendor the entire tree? |
| 00:58:17 | <arahael> | And if I'm using a local hackage, I'd need to have every package my project touches, right? |
| 00:58:45 | <arahael> | A hackage server is a repository of *all* packages you'd want to pull from hackage, right? |
| 00:58:47 | <monochrom> | "local no-index repo" ≠ "packages: foo.cabal etc" stanza |
| 00:59:13 | × | drdo quits (~drdo@roach0.drdo.eu) (Ping timeout: 256 seconds) |
| 00:59:20 | <sclv> | a local repo can override only a single package |
| 00:59:42 | → | iteratee_ joins (~kyle@162.218.222.107) |
| 00:59:43 | <sclv> | vendoring the whole tree is only for the packages stanza |
| 00:59:45 | <monochrom> | I am not setting up any "server". |
| 01:00:10 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 260 seconds) |
| 01:01:04 | <arahael> | monochrom: Oh, interesting, so you really only have the one .tar.gz (at least, you would in my scenario). That's feasible. |
| 01:01:21 | <arahael> | How do I ensure that this "local no-index repo" gets prioritised over any other hackage server I might have? |
| 01:01:39 | <monochrom> | I don't imagine that s/1/10/ would make a big deal. |
| 01:02:02 | <arahael> | monochrom: I was worried it was more like 100 or 500 packages. |
| 01:02:33 | <monochrom> | I did this to tf-random. |
| 01:02:38 | × | iteratee quits (~kyle@162.218.222.107) (Ping timeout: 256 seconds) |
| 01:03:02 | <monochrom> | And nothing needs to be done to things that tf-random depends on, or things that depend on tf-random. |
| 01:03:09 | <monochrom> | NOTHING. |
| 01:03:25 | <arahael> | That's exactly what I want! So I think I indeed need to do that "local no-index repo" thing. |
| 01:03:50 | × | tromp quits (~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 01:07:00 | <arahael> | Needing an absolute path sucks slightly, but it's OK. |
| 01:08:53 | ← | RobotMicrowave parts (~user@2804:d41:c2b2:be00:2926:cba1:14b8:da8b) (ERC 5.4.1 (IRC client for GNU Emacs 27.2)) |
| 01:09:31 | × | jgeerds quits (~jgeerds@55d45b75.access.ecotel.net) (Ping timeout: 245 seconds) |
| 01:09:34 | × | zebrag quits (~chris@user/zebrag) (Quit: Konversation terminated!) |
| 01:09:55 | <arahael> | (I've assumed a cabal.project must be in the project's root) |
| 01:10:33 | × | albet70 quits (~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection) |
| 01:12:51 | × | acidjnk_new quits (~acidjnk@p200300d0c7271e17949910e638228d35.dip0.t-ipconnect.de) (Ping timeout: 250 seconds) |
| 01:16:13 | <arahael> | On reflection, that's probably even better because whatever bugs we want to fix should be upstreamed... So once upstream has a new version, then depending on the version bounds I'd then automatically end up using that. |
| 01:16:33 | → | gioyik joins (~gioyik@gateway/tor-sasl/gioyik) |
| 01:16:39 | → | albet70 joins (~xxx@2400:8902::f03c:92ff:fe60:98d8) |
| 01:16:54 | × | wroathe quits (~wroathe@user/wroathe) (Ping timeout: 260 seconds) |
| 01:22:03 | × | gioyik quits (~gioyik@gateway/tor-sasl/gioyik) (Ping timeout: 276 seconds) |
| 01:22:15 | <arahael> | I think I'll generate the cabal.project file as part of my monorepo build script, so that it matches the current system filesystem, and to have it generate that .tar.gz file as well. |
| 01:24:26 | → | machinedgod joins (~machinedg@24.105.81.50) |
| 01:24:52 | × | Tuplanolla quits (~Tuplanoll@91-159-69-50.elisa-laajakaista.fi) (Quit: Leaving.) |
| 01:31:31 | × | Moyst_ quits (~moyst@user/moyst) (Ping timeout: 256 seconds) |
| 01:33:02 | → | Moyst_ joins (~moyst@user/moyst) |
| 01:44:23 | → | gioyik joins (~gioyik@gateway/tor-sasl/gioyik) |
| 01:50:00 | × | gioyik quits (~gioyik@gateway/tor-sasl/gioyik) (Ping timeout: 276 seconds) |
| 01:55:23 | × | dsrt^ quits (~dsrt@68.101.63.101) (Ping timeout: 260 seconds) |
| 01:57:23 | → | Guest75 joins (~Guest75@host-176-37-53-221.b025.la.net.ua) |
| 01:58:07 | × | geekosaur quits (~geekosaur@xmonad/geekosaur) (Remote host closed the connection) |
| 01:58:57 | × | lechner quits (~lechner@debian/lechner) (Ping timeout: 268 seconds) |
| 01:59:37 | × | mmhat quits (~mmh@55d43159.access.ecotel.net) (Quit: WeeChat 3.3) |
| 01:59:53 | → | lechner joins (~lechner@debian/lechner) |
| 01:59:58 | → | geekosaur joins (~geekosaur@xmonad/geekosaur) |
| 02:00:15 | × | Guest75 quits (~Guest75@host-176-37-53-221.b025.la.net.ua) (Client Quit) |
| 02:00:48 | <arahael> | Hmm, so, I have: basement-0.0.12.tar.gz in my local packages dir, and I've modified this so that there's an extra space in the specific line that fails to build. |
| 02:01:11 | <arahael> | But when I build my project, even after explicitly running 'cabal update', and after ensuring that the local cabal.project exists and refers to the local packages dir, |
| 02:01:31 | <arahael> | it still has the _original_ line failing in the error message, so it's still not actually using my particular basement. |
| 02:02:58 | <arahael> | Yep, just unpacked the locally packaged file, it absolutely does have that space in it, yet that space is missing. |
| 02:03:15 | <arahael> | This means that my build is still, somehow, pulling in hackage's basement. (Not using that head.hackage thing anymore, though) |
| 02:04:41 | × | pretty_dumm_guy quits (trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) (Quit: WeeChat 3.3) |
| 02:05:21 | × | lbseale quits (~ep1ctetus@user/ep1ctetus) (Ping timeout: 245 seconds) |
| 02:05:52 | <arahael> | monochrom: So how did that work for you, with tf-random? |
| 02:07:53 | × | lechner quits (~lechner@debian/lechner) (Ping timeout: 250 seconds) |
| 02:09:07 | → | lechner joins (~lechner@debian/lechner) |
| 02:12:26 | × | mvk quits (~mvk@2607:fea8:5cc1:fa00::4702) (Ping timeout: 260 seconds) |
| 02:13:23 | → | zebrag joins (~chris@user/zebrag) |
| 02:13:32 | <arahael> | Why is it "extracting" basement not from my local packages, but from .cabal/packages/hackage.haskell.org/basement/0.0.12/basement-0.0.12.tar.gz ? |
| 02:14:50 | → | yauhsien joins (~yauhsien@61-231-30-221.dynamic-ip.hinet.net) |
| 02:16:38 | × | bollu quits (uid233390@id-233390.helmsley.irccloud.com) (Quit: Connection closed for inactivity) |
| 02:17:25 | <hololeap> | /usr/lib64/x86_64-linux-ghc-9.2.1/libHSscientific-0.3.7.0-LT8myiDeJKLLdLSFvANXhn-ghc9.2.1.so |
| 02:17:38 | <hololeap> | what does this string signify? LT8myiDeJKLLdLSFvANXhn |
| 02:18:17 | × | burnsidesLlama quits (~burnsides@dhcp168-032.wadham.ox.ac.uk) (Remote host closed the connection) |
| 02:18:49 | → | burnsidesLlama joins (~burnsides@client-8-72.eduroam.oxuni.org.uk) |
| 02:19:06 | × | yauhsien quits (~yauhsien@61-231-30-221.dynamic-ip.hinet.net) (Ping timeout: 245 seconds) |
| 02:19:42 | <arahael> | What if I were to delete my cached package directly, manually? How should I do this "properly"? |
| 02:20:21 | <arahael> | hololeap: I assume that's a hash of some sort - not sure what the hash is of, though. |
| 02:22:51 | × | burnsidesLlama quits (~burnsides@client-8-72.eduroam.oxuni.org.uk) (Ping timeout: 245 seconds) |
| 02:26:18 | arahael | can't find it specified anywhere, how cabal chooses a package where multiple repos have the same version. |
| 02:26:40 | <arahael> | I think I have two options: Manually delete the package from my cache of hackage.org, or bump the version in my local directory. |
| 02:27:00 | <arahael> | (And then specify: --allow-newer=basement in my build) |
| 02:27:24 | → | pfurla_ joins (~pfurla@2804:14d:5c81:4104:65d6:5a05:6048:8ed9) |
| 02:27:49 | <sclv> | there’s a setting to order package repos. But if you have it built already i think it won’t kick in |
| 02:28:22 | × | machinedgod quits (~machinedg@24.105.81.50) (Ping timeout: 260 seconds) |
| 02:28:25 | <monochrom> | I put my "repository my-local-repository \n url: file+noindex:///..." in my $HOME/.cabal/config. I have not tried putting it in cabal.project. |
| 02:28:28 | <arahael> | Hmm, so if I'm adding or changing my repos, I should delete ~/.cabal and repeat 'cabal update'? |
| 02:28:41 | <arahael> | monochrom: Oh! So that's the global cabal.project? |
| 02:29:00 | <monochrom> | There is no global cabal.project. |
| 02:29:08 | <monochrom> | Since there is no global "project". |
| 02:29:10 | <arahael> | But this setting's only for cabal.projecct? |
| 02:29:11 | × | Skyfire quits (~pyon@user/pyon) (Ping timeout: 268 seconds) |
| 02:29:37 | <arahael> | Ah, I see the docs not mentioning that, not sure where I made that mistake. |
| 02:29:44 | <hololeap> | geekosaur: do you know what that string I mentioned signifies? |
| 02:29:50 | <monochrom> | Obsession with "project"s? |
| 02:30:21 | × | Moyst_ quits (~moyst@user/moyst) (Ping timeout: 245 seconds) |
| 02:30:21 | × | pfurla quits (~pfurla@2804:14d:5c81:4104:d22:12b7:6d7c:fb3c) (Ping timeout: 245 seconds) |
| 02:30:30 | <monochrom> | I do notice that everyone is obsessed with "project"s when, really, the cabal user guide states very explicitly that the basic unit on hackage is package. |
| 02:30:49 | <sclv> | active-repositories is the stanza to order repo lookup https://cabal.readthedocs.io/en/3.4/cabal-project.html#cfg-field-active-repositories |
| 02:32:04 | <arahael> | monochrom: Well, it's now grabbing the correct package! |
| 02:32:38 | <arahael> | monochrom: I think it was because I was previously in https://cabal.readthedocs.io/en/3.6/cabal-project.html#specifying-the-local-packages |
| 02:33:00 | <arahael> | monochrom: And when I was shown the direct link to local no-index packages, I didn't scroll up to see that it was a different file. |
| 02:33:06 | → | Moyst_ joins (~moyst@user/moyst) |
| 02:33:13 | <arahael> | (So my fault, really, but wow. Confusing.) |
| 02:33:50 | × | pfurla_ quits (~pfurla@2804:14d:5c81:4104:65d6:5a05:6048:8ed9) (Quit: Textual IRC Client: www.textualapp.com) |
| 02:35:22 | → | pfurla joins (~pfurla@2804:14d:5c81:4104:2061:ecca:f442:134c) |
| 02:39:15 | × | xff0x quits (~xff0x@2001:1a81:5337:5300:b447:8c77:1877:d5ca) (Ping timeout: 260 seconds) |
| 02:39:43 | × | neurocyte0132889 quits (~neurocyte@user/neurocyte) (Ping timeout: 260 seconds) |
| 02:41:04 | → | xff0x joins (~xff0x@2001:1a81:5377:a800:360f:89df:3dda:3328) |
| 02:45:53 | × | pfurla quits (~pfurla@2804:14d:5c81:4104:2061:ecca:f442:134c) (Quit: Textual IRC Client: www.textualapp.com) |
| 02:47:31 | → | pfurla joins (~pfurla@2804:14d:5c81:4104:155f:731:f6ca:82cf) |
| 02:48:54 | × | viluon quits (uid453725@id-453725.helmsley.irccloud.com) (Quit: Connection closed for inactivity) |
| 02:50:52 | → | wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
| 02:50:52 | × | wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Changing host) |
| 02:50:52 | → | wroathe joins (~wroathe@user/wroathe) |
| 02:51:20 | × | econo quits (uid147250@user/econo) (Quit: Connection closed for inactivity) |
| 02:56:30 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 03:01:11 | × | hiruji quits (~hiruji@user/hiruji) (Ping timeout: 250 seconds) |
| 03:04:28 | → | yauhsien joins (~yauhsien@61-231-30-221.dynamic-ip.hinet.net) |
| 03:07:26 | × | wroathe quits (~wroathe@user/wroathe) (Ping timeout: 245 seconds) |
| 03:08:01 | × | emf quits (~emf@2620:10d:c090:400::5:2b81) (Ping timeout: 268 seconds) |
| 03:08:22 | → | emf joins (~emf@c-73-97-137-43.hsd1.wa.comcast.net) |
| 03:10:42 | × | emf quits (~emf@c-73-97-137-43.hsd1.wa.comcast.net) (Client Quit) |
| 03:17:10 | → | lavaman joins (~lavaman@98.38.249.169) |
| 03:18:10 | → | gioyik joins (~gioyik@gateway/tor-sasl/gioyik) |
| 03:22:13 | × | alzgh quits (~alzgh@user/alzgh) (Remote host closed the connection) |
| 03:23:36 | × | gioyik quits (~gioyik@gateway/tor-sasl/gioyik) (Ping timeout: 276 seconds) |
| 03:24:26 | → | wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
| 03:24:26 | × | wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Changing host) |
| 03:24:26 | → | wroathe joins (~wroathe@user/wroathe) |
| 03:25:21 | × | td_ quits (~td@muedsl-82-207-238-097.citykom.de) (Ping timeout: 245 seconds) |
| 03:27:27 | → | td_ joins (~td@94.134.91.22) |
| 03:29:23 | × | wroathe quits (~wroathe@user/wroathe) (Ping timeout: 256 seconds) |
| 03:30:32 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds) |
| 03:30:54 | × | Moyst_ quits (~moyst@user/moyst) (Ping timeout: 260 seconds) |
| 03:33:10 | → | Moyst_ joins (~moyst@user/moyst) |
| 03:33:50 | × | dtman34 quits (~dtman34@c-73-62-246-247.hsd1.mn.comcast.net) (Ping timeout: 265 seconds) |
| 03:38:31 | × | zaquest quits (~notzaques@5.130.79.72) (Remote host closed the connection) |
| 03:41:31 | → | gaff joins (~gaff@49.207.202.59) |
| 03:41:37 | × | gaff quits (~gaff@49.207.202.59) (Client Quit) |
| 03:42:41 | → | dtman34 joins (~dtman34@c-73-62-246-247.hsd1.mn.comcast.net) |
| 03:45:39 | → | benin2 joins (~benin@183.82.179.164) |
| 03:47:10 | × | benin quits (~benin@183.82.179.164) (Ping timeout: 260 seconds) |
| 03:47:10 | benin2 | is now known as benin |
| 03:48:10 | × | terrorjack quits (~terrorjac@2a01:4f8:1c1e:509a::1) (Quit: The Lounge - https://thelounge.chat) |
| 03:49:22 | → | terrorjack joins (~terrorjac@2a01:4f8:1c1e:509a::1) |
| 03:51:29 | → | econo joins (uid147250@user/econo) |
| 03:54:58 | → | gioyik joins (~gioyik@gateway/tor-sasl/gioyik) |
| 04:02:20 | → | wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
| 04:02:20 | × | wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Changing host) |
| 04:02:20 | → | wroathe joins (~wroathe@user/wroathe) |
| 04:03:15 | × | gioyik quits (~gioyik@gateway/tor-sasl/gioyik) (Ping timeout: 276 seconds) |
| 04:03:47 | × | yauhsien quits (~yauhsien@61-231-30-221.dynamic-ip.hinet.net) (Ping timeout: 250 seconds) |
| 04:09:18 | × | vito quits (sid1962@user/vito) (Read error: Connection reset by peer) |
| 04:09:27 | → | vito joins (sid1962@user/vito) |
| 04:16:38 | → | gioyik joins (~gioyik@gateway/tor-sasl/gioyik) |
| 04:19:58 | → | Lycurgus joins (~juan@98.4.112.204) |
| 04:21:14 | × | wroathe quits (~wroathe@user/wroathe) (Ping timeout: 260 seconds) |
| 04:23:19 | × | pfurla quits (~pfurla@2804:14d:5c81:4104:155f:731:f6ca:82cf) (Quit: gone to sleep. ZZZzzz…) |
| 04:26:49 | × | waleee quits (~waleee@h-82-196-111-63.NA.cust.bahnhof.se) (Quit: WeeChat 3.3) |
| 04:30:40 | → | deadmarshal joins (~deadmarsh@95.38.117.164) |
| 04:32:17 | × | Moyst_ quits (~moyst@user/moyst) (Ping timeout: 256 seconds) |
| 04:32:33 | → | mbuf joins (~Shakthi@122.174.170.222) |
| 04:33:18 | → | Moyst_ joins (~moyst@user/moyst) |
| 04:35:58 | × | Lycurgus quits (~juan@98.4.112.204) (Quit: Exeunt) |
| 04:37:23 | × | deadmarshal quits (~deadmarsh@95.38.117.164) (Ping timeout: 250 seconds) |
| 04:42:49 | → | pfurla joins (~pfurla@2804:14d:5c81:4104:155f:731:f6ca:82cf) |
| 04:50:57 | × | slowButP1esent quits (~slowButPr@user/slowbutpresent) (Quit: leaving) |
| 04:53:03 | → | deadmarshal joins (~deadmarsh@95.38.117.164) |
| 04:54:31 | × | pfurla quits (~pfurla@2804:14d:5c81:4104:155f:731:f6ca:82cf) (Quit: gone to sleep. ZZZzzz…) |
| 04:59:07 | <arahael> | #haskell has been very quiet. is it holidays somewhere? |
| 04:59:29 | <dolio> | Yeah, major holiday tomorrow in the US. |
| 04:59:33 | <arahael> | sclv: forgot to respond - thanks for that! |
| 04:59:40 | <arahael> | dolio: oh? which one? |
| 04:59:48 | <dolio> | Thanksgiving. |
| 05:00:32 | <arahael> | ah, interesting - harvest day. |
| 05:05:06 | <dsal> | It's the day we celebrate our white ancestors coming to the US by spreading plague to our families. |
| 05:05:31 | → | octeep[m] joins (~octeepoct@2001:470:69fc:105::1:3dbf) |
| 05:06:26 | × | mbuf quits (~Shakthi@122.174.170.222) (Quit: Leaving) |
| 05:07:30 | × | eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:d837:dc58:2ea7:10e8) (Remote host closed the connection) |
| 05:11:30 | × | gioyik quits (~gioyik@gateway/tor-sasl/gioyik) (Ping timeout: 276 seconds) |
| 05:12:02 | <arahael> | oh? wikipedia seemed to suggest it was related to the harvest? i only read the intro paragraphs though. |
| 05:13:44 | × | [itchyjunk] quits (~itchyjunk@user/itchyjunk/x-7353470) (Read error: Connection reset by peer) |
| 05:16:27 | × | johnw quits (~johnw@2607:f6f0:3004:1:c8b4:50ff:fef8:6bf0) (Quit: ZNC - http://znc.in) |
| 05:19:09 | × | curiousgay quits (~curiousga@77-120-141-90.kha.volia.net) (Quit: Leaving) |
| 05:22:22 | → | zaquest joins (~notzaques@5.130.79.72) |
| 05:25:01 | × | statusbot quits (~statusbot@ec2-34-198-122-184.compute-1.amazonaws.com) (Remote host closed the connection) |
| 05:25:16 | → | statusbot joins (~statusbot@ec2-34-198-122-184.compute-1.amazonaws.com) |
| 05:26:56 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 05:31:05 | × | fr33domlover_ quits (~fr33@2.55.143.230) (Ping timeout: 268 seconds) |
| 05:32:11 | × | Moyst_ quits (~moyst@user/moyst) (Ping timeout: 250 seconds) |
| 05:33:08 | → | Moyst_ joins (~moyst@user/moyst) |
| 05:33:20 | → | reumeth joins (~reumeth@user/reumeth) |
| 05:38:55 | × | lavaman quits (~lavaman@98.38.249.169) (Remote host closed the connection) |
| 05:39:06 | × | reumeth quits (~reumeth@user/reumeth) (Ping timeout: 245 seconds) |
| 05:42:47 | → | Skyfire joins (~pyon@user/pyon) |
| 05:45:42 | → | abraham joins (~abraham@143.244.185.86) |
| 05:53:46 | Guest3953 | is now known as spider |
| 05:54:16 | spider | is now known as Guest42 |
| 05:54:20 | Guest42 | is now known as spider__ |
| 06:00:18 | → | mbuf joins (~Shakthi@122.174.170.222) |
| 06:00:46 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 245 seconds) |
| 06:03:09 | × | JimL quits (~quassel@89-162-2-132.fiber.signal.no) (Ping timeout: 268 seconds) |
| 06:06:18 | → | dschrempf joins (~dominik@070-207.dynamic.dsl.fonira.net) |
| 06:08:02 | → | eggplantade joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) |
| 06:09:35 | → | JimL joins (~quassel@89-162-2-132.fiber.signal.no) |
| 06:13:46 | × | eggplantade quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 260 seconds) |
| 06:14:56 | × | monochrom quits (trebla@216.138.220.146) (Ping timeout: 245 seconds) |
| 06:17:31 | → | monochrom joins (trebla@216.138.220.146) |
| 06:18:28 | × | Moyst_ quits (~moyst@user/moyst) (Remote host closed the connection) |
| 06:19:03 | <mjrosenb> | Does ghcjs support HasCallStack? |
| 06:19:22 | <mjrosenb> | I added that into a function which should definitely be on the call stack when an error is thrown |
| 06:19:34 | <mjrosenb> | but the error message makes no mention of said function. |
| 06:24:55 | → | Moyst joins (~moyst@user/moyst) |
| 06:26:44 | → | takuan joins (~takuan@178-116-218-225.access.telenet.be) |
| 06:29:57 | × | zebrag quits (~chris@user/zebrag) (Remote host closed the connection) |
| 06:32:13 | × | Moyst quits (~moyst@user/moyst) (Ping timeout: 250 seconds) |
| 06:33:26 | → | chomwitt joins (~chomwitt@2a02:587:dc14:4600:12c3:7bff:fe6d:d374) |
| 06:33:39 | → | Moyst joins (~moyst@user/moyst) |
| 06:34:46 | × | jzsinatra quits (~jzsinatra@88-114-238-31.elisa-laajakaista.fi) (Ping timeout: 260 seconds) |
| 06:35:00 | → | jzsinatra joins (~jzsinatra@88-114-238-31.elisa-laajakaista.fi) |
| 06:47:27 | → | michalz joins (~michalz@185.246.204.58) |
| 06:54:44 | → | dhouthoo joins (~dhouthoo@178-117-36-167.access.telenet.be) |
| 07:02:20 | × | theproffesor quits (~theproffe@user/theproffesor) (Quit: Leaving) |
| 07:03:16 | <arahael> | I assume it does. |
| 07:07:26 | arahael | regrets using amazonka. |
| 07:07:34 | <jackdk> | hm? |
| 07:07:34 | → | theproffesor joins (~theproffe@user/theproffesor) |
| 07:08:19 | → | gioyik joins (~gioyik@gateway/tor-sasl/gioyik) |
| 07:09:08 | <arahael> | jackdk: Yeah - I'm in conflict hell, it has a pretty narrow set of versions it likes for aeson, and does not work at all with aeson 2.x |
| 07:11:16 | <jackdk> | arahael: are you using the version from hackage? github master at least has a 1.6.2 upper bound. I haven't tried doing an allow-newer: on aeson to see if it works with 2.0 yet |
| 07:11:59 | <arahael> | jackdk: There's active tickets that show aeson 2.x isn't even on amazonka's radar. |
| 07:12:13 | <arahael> | jackdk: They'll get to 2.x once amazonka gets to 2.0 |
| 07:12:59 | <jackdk> | arahael: I know. I've been driving it. If you want to test it with aeson-2.0 I can at least promise a prompt PR review |
| 07:13:36 | <jackdk> | but my first priority is helping get the past ~three years of service updates etc out the door |
| 07:13:51 | <arahael> | jackdk: Unfortunately I can't isolate it just yet. I'm still just trying to get it to satisfy version bounds again. I'm currently seeing messages like: |
| 07:13:58 | <arahael> | > Failed to build network-3.1.2.5 because it depends on network-3.1.2.5 which itself failed to build. |
| 07:13:59 | <lambdabot> | <hint>:1:100: error: |
| 07:13:59 | <lambdabot> | parse error (possibly incorrect indentation or mismatched brackets) |
| 07:14:21 | × | gioyik quits (~gioyik@gateway/tor-sasl/gioyik) (Ping timeout: 276 seconds) |
| 07:14:46 | arahael | keeps forgetting that lambdabot uses the email-form of quoting. |
| 07:14:52 | <jackdk> | @botsnack |
| 07:14:52 | <lambdabot> | :) |
| 07:15:05 | <jackdk> | can you constrain aeson < 1.6 for now or is that unacceptable? |
| 07:15:49 | → | lortabac joins (~lortabac@2a01:e0a:541:b8f0:bdf3:903c:8a82:6328) |
| 07:17:21 | → | lavaman joins (~lavaman@98.38.249.169) |
| 07:18:01 | → | tromp joins (~textual@dhcp-077-249-230-040.chello.nl) |
| 07:19:15 | × | mikoto-chan quits (~mikoto-ch@esm-84-240-99-143.netplaza.fi) (Quit: mikoto-chan) |
| 07:19:43 | <arahael> | That may well be working. Now for a failure in Attoparsec... |
| 07:20:01 | × | deadmarshal quits (~deadmarsh@95.38.117.164) (Ping timeout: 256 seconds) |
| 07:22:08 | <arahael> | I guess this is what I get for being on a bleeding edge haskell! :) (Well, not really bleeding edge, but it seems 9.2.1 made quite some breaking changes.) |
| 07:22:15 | × | gdown quits (~gavin@h69-11-248-109.kndrid.broadband.dynamic.tds.net) (Remote host closed the connection) |
| 07:22:33 | <arahael> | Finally I have it failing on aeson itself. But it seems to be using aeson-1.2.1.0 |
| 07:22:50 | <arahael> | Not sure why it's settled on such an old version - how do I find out why it selected that version? |
| 07:23:35 | × | tzh quits (~tzh@c-24-21-73-154.hsd1.or.comcast.net) (Quit: zzz) |
| 07:26:12 | <jackdk> | you could set a newer version in cabal.project.freeze and see why and how it fails to solve? |
| 07:26:29 | <jackdk> | is this a public project? |
| 07:26:42 | × | Jing quits (~hedgehog@2604:a840:3::105f) (Remote host closed the connection) |
| 07:27:37 | → | Jing joins (~hedgehog@115.207.50.95) |
| 07:27:49 | <arahael> | I can make it public, let me just check if I've put in any passwords... ;) |
| 07:27:57 | → | yauhsien joins (~yauhsien@61-231-30-221.dynamic-ip.hinet.net) |
| 07:28:21 | × | tromp quits (~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 07:29:05 | × | yauhsien quits (~yauhsien@61-231-30-221.dynamic-ip.hinet.net) (Remote host closed the connection) |
| 07:29:32 | <arahael> | It's already public: https://github.com/arafangion/auslansocial |
| 07:29:38 | → | yauhsien joins (~yauhsien@61-231-30-221.dynamic-ip.hinet.net) |
| 07:30:12 | <arahael> | I'm attempting to randomly try a whole pile of --allow-newer stuff along with a few packages in a local hackage to apply patches manually. |
| 07:30:35 | <arahael> | Local package has 9.2.1 patches applied for: basement-0.0.12.tar.gz cryptonite-0.29.tar.gz memory-0.16.0.tar.gz |
| 07:31:29 | × | yauhsien quits (~yauhsien@61-231-30-221.dynamic-ip.hinet.net) (Remote host closed the connection) |
| 07:32:07 | → | yauhsien joins (~yauhsien@61-231-30-221.dynamic-ip.hinet.net) |
| 07:33:21 | → | deadmarshal joins (~deadmarsh@95.38.117.164) |
| 07:33:45 | <arahael> | It previously worked fine, but I was using an x86_64 build of haskell, and an older ghc, at that. But now I've switched to an arm64 version of ghc and all that - and sometime in the past 5 months I must've updated my local LLVM (part of xcode) so that it's version 13 - which is too new for the current haskell and makes me need to use 9.2.1 |
| 07:35:09 | <arahael> | As you've probably surmised, I don't really know what I'm doing at the moment :) |
| 07:35:14 | <jackdk> | okay, so you're forced to use 9.2.1 because you're on aarch64 because you're on an M1 mac and your new xcode updated llvm? |
| 07:36:10 | <arahael> | Yes. :) |
| 07:37:13 | × | yauhsien quits (~yauhsien@61-231-30-221.dynamic-ip.hinet.net) (Ping timeout: 250 seconds) |
| 07:37:17 | <arahael> | If this was a production build or if I was on a deadline, I'd have just grabbed an older xcode, I guess, and then xcode-select'ed that version. |
| 07:37:22 | <jackdk> | okay. I'm on x86_64-linux and I've got a couple of things I need to wrap up before I clock off work. Let me see if I can get a GHC 9.2.1 and have a play. |
| 07:37:29 | → | fr33domlover joins (~fr33@2.55.21.191) |
| 07:37:29 | <arahael> | But I'm taking this as an opportunity to learn... Everything... |
| 07:38:00 | <jackdk> | complete with cross-architectural detours! |
| 07:38:03 | <arahael> | jackdk: Please don't make me make you be late for work! :) |
| 07:38:23 | <jackdk> | she'll be right mate |
| 07:39:07 | <arahael> | And yeah, indeed! Oh! And on top of all that, I'm learning Shake, which seeems to be a pretty nifty build system, I like it. I was thinking that maybe I should make it so that I can build all my various unmaintained private crap in teh same way, consistently... |
| 07:40:10 | × | xkuru quits (~xkuru@user/xkuru) (Read error: Connection reset by peer) |
| 07:42:43 | <arahael> | I suspect there's no way I can build this with all these packages until Amazonka updates to aeson 2.x |
| 07:43:04 | → | Pickchea joins (~private@user/pickchea) |
| 07:43:15 | <tomsmeding> | more forks :) |
| 07:43:22 | <jackdk> | pls no |
| 07:44:19 | <arahael> | Heh, actually if I urgently needed to get this building, I'd probably more likely strip amazonka out, and maybe shell in aws-cli instead. |
| 07:44:53 | <jackdk> | I've done that too, in places >_> |
| 07:45:07 | <arahael> | I've never liked the various amazon SDK's :( |
| 07:45:15 | <arahael> | third party or otherwise. |
| 07:45:23 | → | tromp joins (~textual@dhcp-077-249-230-040.chello.nl) |
| 07:45:23 | <arahael> | They're just too freaking huge. |
| 07:45:41 | <jackdk> | someone (probably me) is going to have to write proper sts:AssumeRole at some point |
| 07:46:36 | <arahael> | I don't think I've needed that. In the past actually I just wrote my own binding to the specific AWS services I needed. |
| 07:46:43 | <jackdk> | like you can do it, but you have to do it manually. I'd love for it to be supported by the default env stuff |
| 07:47:27 | <jackdk> | and by manually I mean going through amazonka-sts, pulling the key/sessionid/etc from teh response and then constructing a new Env |
| 07:47:47 | <arahael> | THat's over my head a bit, I'm just doing dead simple S3. ;) |
| 07:48:34 | → | yauhsien joins (~yauhsien@61-231-30-221.dynamic-ip.hinet.net) |
| 07:48:38 | <arahael> | Well, plus cloudflare invalidations. |
| 07:53:10 | × | yauhsien quits (~yauhsien@61-231-30-221.dynamic-ip.hinet.net) (Ping timeout: 260 seconds) |
| 07:57:28 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 07:58:54 | → | eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:d837:dc58:2ea7:10e8) |
| 08:03:28 | × | Pickchea quits (~private@user/pickchea) (Quit: Leaving) |
| 08:07:15 | → | mvk joins (~mvk@2607:fea8:5cc1:fa00::4702) |
| 08:14:00 | <arahael> | Hmm, just opened a new ticket on an unrelated project: https://github.com/erikd/language-javascript/issues/132 |
| 08:14:50 | → | yauhsien joins (~yauhsien@61-231-30-221.dynamic-ip.hinet.net) |
| 08:15:52 | × | nautical quits (~nautical@2601:602:900:1630::396f) (Quit: WeeChat 3.3) |
| 08:17:46 | × | eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:d837:dc58:2ea7:10e8) (Remote host closed the connection) |
| 08:18:24 | <arahael> | How do I find out why I'm pulling in a particular dependency? |
| 08:18:25 | <tomsmeding> | arahael: there is a ∉ in that file |
| 08:18:34 | <tomsmeding> | only non-ascii character I think |
| 08:18:45 | <arahael> | tomsmeding: Why don't they just fix it? |
| 08:18:50 | <tomsmeding> | ¯\_(ツ)_/¯ |
| 08:19:11 | <tomsmeding> | shouldn't break though, looks like a normal utf8 encoded thing |
| 08:19:32 | <arahael> | Yeah, I'm not sure what's happening, I mean, I've set the locale. That fixed it for everyone else. |
| 08:19:48 | <arahael> | And it's why I explictly showed how I used the locale there. |
| 08:20:19 | × | yauhsien quits (~yauhsien@61-231-30-221.dynamic-ip.hinet.net) (Remote host closed the connection) |
| 08:20:33 | × | deadmarshal quits (~deadmarsh@95.38.117.164) (Ping timeout: 250 seconds) |
| 08:20:39 | <arahael> | I'm not even sure why this other project is using language-javascript in the first place, though. |
| 08:21:07 | → | chele joins (~chele@user/chele) |
| 08:21:07 | <tomsmeding> | they thought their library was too stable |
| 08:22:05 | <arahael> | The last commit to that project is 2 years ago. |
| 08:23:02 | <tomsmeding> | see? they didn't have the manpower to actually change the code and thereby make it unstable, so they just used javascript instead |
| 08:23:10 | <tomsmeding> | /s obviously |
| 08:23:21 | <arahael> | Heh. :) |
| 08:23:31 | → | pfurla joins (~pfurla@2804:14d:5c81:4104:8d6b:77ca:adc:64ea) |
| 08:23:49 | <arahael> | Clearly the answer is to get rid of it - I think I might play some nethack for a while first, though. Been pretty flat out with meetings and Swift code. |
| 08:23:55 | → | Unhammer joins (~Unhammer@user/unhammer) |
| 08:24:15 | <arahael> | Then I should find out how to figure out why the project's pulling it in in the first place! |
| 08:24:38 | × | pfurla quits (~pfurla@2804:14d:5c81:4104:8d6b:77ca:adc:64ea) (Client Quit) |
| 08:24:44 | <jackdk> | there is a way to get cabal to cough up a plan.json, I can't remember what it is |
| 08:24:53 | <tomsmeding> | dist-newstyle/cache/plan.json |
| 08:25:41 | <tomsmeding> | lists configured dependencies of each package in your dependency tree; no nice graph but should at least show where language-javascript is coming from |
| 08:25:42 | <dminuoso> | jackdk: You can call cabal-lib I guess? |
| 08:26:03 | <tomsmeding> | also `cabal-plan dot` |
| 08:26:35 | <dminuoso> | Im not sure whether cabal-exe allows to do nothing but produce a build plan |
| 08:26:56 | <arahael> | Uhh? Nothing depends on it! |
| 08:27:02 | <tomsmeding> | :D |
| 08:27:41 | <arahael> | There's only one mention of 'language-javascript' in that entire file, which means nothing depends on it. |
| 08:28:01 | <tomsmeding> | lol |
| 08:28:12 | <arahael> | Weird. |
| 08:28:32 | → | mc47 joins (~mc47@xmonad/TheMC47) |
| 08:28:38 | <tomsmeding> | also no hits of lngg-jvscrpt? |
| 08:28:55 | arahael | looks at tomsmeding weirdly. |
| 08:28:55 | <tomsmeding> | no idea why that would happen, but I saw it in your issue |
| 08:29:14 | <arahael> | There's several hits... |
| 08:29:25 | <tomsmeding> | but relevant ones? |
| 08:29:33 | <arahael> | That makes no sense, I thought you were being sarcastic, I mean, "of course javascript would chop off the vowels". |
| 08:29:40 | <tomsmeding> | :') |
| 08:30:16 | → | deadmarshal joins (~deadmarsh@95.38.117.164) |
| 08:31:24 | <arahael> | Why do so many of these chop off the vowels!? |
| 08:31:31 | <tomsmeding> | I have absolutely no idea |
| 08:31:46 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 268 seconds) |
| 08:31:56 | <tomsmeding> | also, ‽ |
| 08:32:18 | <arahael> | It's being pulled in via yesod-static -> hjsmn -> lngg-jvscrpt |
| 08:32:31 | <arahael> | I guess that makes sense. |
| 08:32:41 | <arahael> | Another reason to chop off yesod, too! |
| 08:32:46 | <arahael> | (But not today) |
| 08:33:06 | <tomsmeding> | right |
| 08:34:42 | × | deadmarshal quits (~deadmarsh@95.38.117.164) (Ping timeout: 260 seconds) |
| 08:35:26 | → | jmorris joins (uid433911@id-433911.hampstead.irccloud.com) |
| 08:37:49 | arahael | hopes jackdk has gone to work. |
| 08:38:13 | <jackdk> | oh no I finished work for the day, I'm LARPing the cabal constraint solver |
| 08:38:20 | → | max22- joins (~maxime@2a01cb0883359800d4d6b02a2c3bac5a.ipv6.abo.wanadoo.fr) |
| 08:39:01 | <jackdk> | I'm hitting packages that say "build-depends: base > 4.x && < 5", but then break on GHC9 :( |
| 08:39:43 | <tomsmeding> | send thanks to stack |
| 08:41:00 | <arahael> | Yeah, looking at all this has been *eyeopening* to me. |
| 08:41:29 | <jackdk> | I think it's really rude to build LTS snapshots based on a claim of "these packages build together", informed by dependency information on hackage, and then write tooling that defaults to generating crap dependency information |
| 08:42:42 | <arahael> | Maybe this is part of the reason I'm having so much trouble with GHC9. |
| 08:43:23 | <arahael> | Basically not one of my personal, unmaintained, bitrotten projects has survived the transition to GHC9. :( |
| 08:43:51 | <arahael> | (And most of them were originally stack projects, but... I'm very tired of stack, and am basically trying to pretend I never used it) |
| 08:44:04 | <jackdk> | I use `cabal gen-bounds` and advance them carefully. But yeah GHC9 seems to be rough for a bunch of people |
| 08:44:39 | × | Vajb quits (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi) (Read error: Connection reset by peer) |
| 08:44:48 | → | Vajb joins (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi) |
| 08:44:51 | <arahael> | I also have an ffi bug as well, but I'm working around that by explicitly passing an -I include flag for a random libffi on the system. |
| 08:45:10 | <arahael> | I hope that'll be fixed in 9.2.2, or something. |
| 08:45:38 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 08:47:15 | → | acidjnk_new joins (~acidjnk@p200300d0c7271e17949910e638228d35.dip0.t-ipconnect.de) |
| 08:49:17 | <arahael> | So I've been starting using Shake in a monorepo, hope that doesn't bite me. |
| 08:51:03 | → | deadmarshal joins (~deadmarsh@95.38.117.164) |
| 08:52:10 | → | yauhsien joins (~yauhsien@61-231-30-221.dynamic-ip.hinet.net) |
| 08:55:06 | → | mcgroin joins (~mcgroin@roc37-h01-176-170-197-243.dsl.sta.abo.bbox.fr) |
| 08:57:41 | × | fr33domlover quits (~fr33@2.55.21.191) (Ping timeout: 268 seconds) |
| 08:58:44 | → | machinedgod joins (~machinedg@24.105.81.50) |
| 09:01:37 | <jackdk> | arahael: I regret to say that you'll be genuinely stuck until amazonka support aeson-2.0: aeson-1.5.6 tries to declare an instance for Data.Semigroup.Option, which went away in base-4.16 |
| 09:02:22 | <arahael> | jackdk: I'm had a hunch that was going to be the case, but I had no idea why. How on earth did you find that out? |
| 09:03:18 | <jackdk> | I gave up on aeson-1.5.6.0 for some reason that I forget, and tried to allow aeson ^>= 2.0 using allow-newer in cabal.project. Then I saw the aeson build failure |
| 09:03:37 | <arahael> | Ah, so you used painful experience. |
| 09:04:09 | <arahael> | i think in the next couple of months by which I'll probably need this, I'll either be lucky and amazonka then supports it - and hopefully that's not the only issue - or I strip out amazonka. |
| 09:05:04 | <jackdk> | I have a cabal.project file that I'll pastebin to you because it'll show you some tricks for pinning/working around people being sloppy with bounds |
| 09:05:04 | <Hecate> | we can petition amazonka and offer our help |
| 09:05:34 | <arahael> | jackdk: Thanks! |
| 09:05:44 | → | rkrishnan joins (~user@122.172.141.170) |
| 09:06:01 | <jackdk> | arahael: why ghc 9.2.1? I know it's good to follow the latest to keep up to date, but is there anything you particularly need? |
| 09:06:19 | <arahael> | jackdk: It needs to support both aarch64 and llvm 13+. |
| 09:06:26 | <jackdk> | oh yeah that's right |
| 09:06:29 | <Hecate> | https://github.com/brendanhay/amazonka/issues/680 |
| 09:06:48 | <jackdk> | Hecate: I wrote that issue. |
| 09:07:03 | <Hecate> | oh you are endgame! |
| 09:08:23 | × | jonathanx quits (~jonathan@h-178-174-176-109.A357.priv.bahnhof.se) (Remote host closed the connection) |
| 09:08:42 | → | jonathanx joins (~jonathan@h-178-174-176-109.A357.priv.bahnhof.se) |
| 09:08:52 | <arahael> | Oh, btw, I really enjoyed using amazonka when I first discovered it. I just don't today, but when I found it, I liked it. I just wish AWS's SDK's weren't generally huge. |
| 09:09:12 | <jackdk> | tell jeff to stop releasing a zillion services every week |
| 09:09:23 | → | cosimone joins (~user@2001:b07:ae5:db26:a7aa:8027:6b4e:2fb3) |
| 09:09:25 | <arahael> | Right, and with subtle wacky variations. |
| 09:09:44 | <arahael> | Just make it so that we can feasibly write our own bindings or support *consistent* conventions or something! |
| 09:11:09 | → | martin02 joins (~silas@141.84.69.76) |
| 09:12:12 | <arahael> | They shouldn't basically require a unique authentication system. Even if it was slapping a Swagger interface on everything that'd be an improvement. |
| 09:12:34 | <jackdk> | cloud control api is an improvement in that regard, at least for CRUDL |
| 09:13:11 | × | mei quits (~mei@user/mei) (Read error: Connection reset by peer) |
| 09:13:16 | <arahael> | I'm not familiar with that! |
| 09:13:54 | <jackdk> | only came out this year -- https://aws.amazon.com/blogs/aws/announcing-aws-cloud-control-api/ |
| 09:15:17 | <arahael> | At a glance, that looks pretty good. |
| 09:15:56 | <arahael> | Any drawbacks that you forsee? |
| 09:16:04 | <arahael> | I notice they don't seem to have complete coverage. |
| 09:16:26 | <jackdk> | I haven't looked at it in depth but at a glance it seemed pretty close to CloudFormation property specifications, which are occasionally pretty frustrating to write |
| 09:16:54 | × | geekosaur quits (~geekosaur@xmonad/geekosaur) (Read error: Connection reset by peer) |
| 09:17:04 | <arahael> | There's a lot of that across the stack, though. |
| 09:17:27 | → | geekosaur joins (~geekosaur@xmonad/geekosaur) |
| 09:18:14 | → | eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:d837:dc58:2ea7:10e8) |
| 09:19:31 | <arahael> | jackdk: Did I miss your cabal.project suggestions? I can't find them. |
| 09:20:01 | → | CiaoSen joins (~Jura@p200300c9570204002a3a4dfffe84dbd5.dip0.t-ipconnect.de) |
| 09:20:03 | <jackdk> | no you didn't. I thought I'd have one more crack before giving up |
| 09:20:27 | <jackdk> | arahel: Drop this in teh root of your repo: https://www.irccloud.com/pastebin/gDUSgcxb/cabal.project |
| 09:20:43 | <jackdk> | Ignore the --sha256 comments -those are because I was using haskell.nix |
| 09:21:44 | → | mmhat joins (~mmh@55d42d28.access.ecotel.net) |
| 09:21:45 | <arahael> | Ah, I also use nix, though not for this at the moment. I'm in very much a love/hate situation with nix, and this week more on the hate side as you may have noticed. |
| 09:22:07 | <jackdk> | it can do that to you, yeah |
| 09:22:16 | <arahael> | This looks simpler, thanks for this. I was using a local no-index hackage repo to override... Three of these. |
| 09:22:31 | × | eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:d837:dc58:2ea7:10e8) (Ping timeout: 250 seconds) |
| 09:22:36 | <jackdk> | yeah don't do that. source-repository-package stanzas are waaayyy easier |
| 09:23:23 | <arahael> | For sure - and more isolated to the specific project. |
| 09:23:29 | <arahael> | I like this, thanks heaps for that! |
| 09:24:07 | → | gehmehgeh joins (~user@user/gehmehgeh) |
| 09:24:26 | <arahael> | Incidentially, those sha256 lines... Is there a particular way you generate those? Usually I'd just invent a sha256. ("aaa" - yep, that's a sha256. Lets try that), wait for nix to complain, "aaa is not sha256-r/fFlrgF3KbD/yaFKNW2ORJepUB2/UDEegYnV/WPodQ", then I copy that in and it's all good. |
| 09:25:04 | <jackdk> | that's exactly what I did. `M-: (dotimes (i 52) (insert ?0))` in emacs |
| 09:26:02 | <arahael> | Nice. |
| 09:26:09 | <arahael> | I'll stick with "aaa". :) |
| 09:26:23 | <jackdk> | because it makes you want to scream? |
| 09:26:34 | arahael | reminds jackdk of his love-hate relationship with nix. |
| 09:31:24 | <jackdk> | mostly love, tbh. |
| 09:32:01 | × | yauhsien quits (~yauhsien@61-231-30-221.dynamic-ip.hinet.net) (Remote host closed the connection) |
| 09:33:21 | <arahael> | Do you use it at work? |
| 09:33:35 | <jackdk> | yes |
| 09:33:40 | <arahael> | I think that might be why. |
| 09:33:55 | × | Sgeo quits (~Sgeo@user/sgeo) (Read error: Connection reset by peer) |
| 09:33:59 | <arahael> | I basically fight with nix once every other week or so, and only ever on my home system, an hour after I should've gone to bed. |
| 09:34:27 | <arahael> | My big rant here the other day was basically 1-2 hours after I should've been in bed. :( |
| 09:34:44 | → | eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:d837:dc58:2ea7:10e8) |
| 09:35:06 | <arahael> | (At work, we're always in xcode, so there's relatively little need for nix. We've got a whole bunch of dependency problems, but nix won't solve those.) |
| 09:39:23 | → | yauhsien joins (~yauhsien@61-231-30-221.dynamic-ip.hinet.net) |
| 09:43:24 | → | jgeerds joins (~jgeerds@55d45b75.access.ecotel.net) |
| 09:44:02 | × | yauhsien quits (~yauhsien@61-231-30-221.dynamic-ip.hinet.net) (Ping timeout: 240 seconds) |
| 09:44:31 | × | mvk quits (~mvk@2607:fea8:5cc1:fa00::4702) (Ping timeout: 245 seconds) |
| 09:47:14 | → | cfricke joins (~cfricke@user/cfricke) |
| 09:48:51 | → | kuribas joins (~user@ip-188-118-57-242.reverse.destiny.be) |
| 09:49:06 | → | fr33domlover joins (~fr33@2.55.21.191) |
| 09:56:23 | → | pfurla joins (~pfurla@2804:14d:5c81:4104:8d6b:77ca:adc:64ea) |
| 09:56:48 | × | pfurla quits (~pfurla@2804:14d:5c81:4104:8d6b:77ca:adc:64ea) (Client Quit) |
| 09:59:13 | → | pfurla joins (~pfurla@2804:14d:5c81:4104:8d6b:77ca:adc:64ea) |
| 09:59:41 | → | ubert joins (~Thunderbi@p200300ecdf0ba227e6b318fffe838f33.dip0.t-ipconnect.de) |
| 10:04:02 | <dminuoso> | The main problem with nix is gaining the level of expertise that you dont mind the rough edges anymore. |
| 10:04:06 | × | notzmv quits (~zmv@user/notzmv) (Ping timeout: 245 seconds) |
| 10:04:15 | <dminuoso> | It has a relatively deep initial investment cost |
| 10:04:18 | × | fr33domlover quits (~fr33@2.55.21.191) (Ping timeout: 260 seconds) |
| 10:04:52 | <dminuoso> | If you intend to use nix at your job, you better have one or two experts that can deal with all the bizarre nonsense you might encounter. |
| 10:09:19 | <arahael> | That, too, yeah. |
| 10:09:42 | <arahael> | I'm super wary of introducing it for that reason. |
| 10:09:55 | <arahael> | (And besides, again, it wouldn't work for us, because we use macos) |
| 10:10:16 | × | eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:d837:dc58:2ea7:10e8) (Remote host closed the connection) |
| 10:10:40 | <arahael> | I should probably be more specific: We use xcode there, I don't think we can viably nixify the various xcode and dependencies for iOS projects. |
| 10:14:01 | → | yauhsien joins (~yauhsien@61-231-30-221.dynamic-ip.hinet.net) |
| 10:20:47 | × | deadmarshal quits (~deadmarsh@95.38.117.164) (Ping timeout: 260 seconds) |
| 10:25:12 | → | acidjnk joins (~acidjnk@p200300d0c7271e17fcc20a5d4f804d59.dip0.t-ipconnect.de) |
| 10:25:50 | <dminuoso> | You probably can *shrugs* |
| 10:27:16 | <Franciman> | dminuoso: have you had a chance to review guix too? |
| 10:28:28 | <dminuoso> | No. |
| 10:28:43 | × | acidjnk_new quits (~acidjnk@p200300d0c7271e17949910e638228d35.dip0.t-ipconnect.de) (Ping timeout: 260 seconds) |
| 10:28:57 | <Franciman> | I am no expert, but to me it seems it has a better UX |
| 10:29:00 | <Franciman> | and saner defaults |
| 10:29:21 | → | acidjnk_new joins (~acidjnk@p200300d0c7271e1739bc3d1dda3deba6.dip0.t-ipconnect.de) |
| 10:29:27 | <Franciman> | and it encourages free software |
| 10:29:27 | × | acidjnk quits (~acidjnk@p200300d0c7271e17fcc20a5d4f804d59.dip0.t-ipconnect.de) (Ping timeout: 250 seconds) |
| 10:29:59 | → | DNH joins (~DNH@2a02:8108:1100:16d8:a418:17da:6b4f:5fc3) |
| 10:29:59 | × | econo quits (uid147250@user/econo) (Quit: Connection closed for inactivity) |
| 10:30:40 | <dminuoso> | Not sure how NixOS does not encourage free software *shrug* |
| 10:30:56 | <dminuoso> | I havent heard many positive things from other NixOS users so far |
| 10:31:54 | <dminuoso> | Plus nix/nixos has matured really well in terms of integration, package availability and maintainership |
| 10:32:12 | <dminuoso> | Think nixpkgs is the most active repository on all of github right now? |
| 10:33:54 | <Franciman> | dminuoso: NixOS officially packages software that is non free |
| 10:33:58 | <Franciman> | that's encouraging its use |
| 10:34:08 | × | yauhsien quits (~yauhsien@61-231-30-221.dynamic-ip.hinet.net) (Remote host closed the connection) |
| 10:34:36 | <dminuoso> | Im not sure about encouragement, to be honest. |
| 10:34:42 | <dminuoso> | This seems to be a religious topic for some I guess. |
| 10:35:00 | <dminuoso> | Absolutely nothing in all of nixos nudges you towards using it. In fact, you cant even install non-free software without explicitly enabling it. |
| 10:35:26 | <Franciman> | you are right |
| 10:35:36 | <Franciman> | I would have been best sayin: it does not discourage it |
| 10:35:39 | <Franciman> | that's a fact |
| 10:35:50 | <Franciman> | while guix actively discourages non free software |
| 10:35:52 | × | whatsupdoc quits (uid509081@id-509081.hampstead.irccloud.com) (Quit: Connection closed for inactivity) |
| 10:35:53 | <dminuoso> | It discourages it by fact of not allowing you install it out of the box? |
| 10:35:58 | <dminuoso> | So its not a fact. |
| 10:36:08 | <Franciman> | and not allowing to talk about it in its mailing list, irc |
| 10:36:09 | <Franciman> | etc |
| 10:36:13 | <Franciman> | so you get no support for it |
| 10:36:26 | → | raehik1 joins (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) |
| 10:36:30 | <Franciman> | they don't give support if you have problems with non free software |
| 10:36:38 | → | yauhsien joins (~yauhsien@61-231-30-221.dynamic-ip.hinet.net) |
| 10:36:45 | <dminuoso> | not allowing to talk about proprietary software is getting quite religious now. :) |
| 10:37:32 | <dminuoso> | I think you're conflating "discouraging" with "making it as hard as possible" |
| 10:37:34 | <Franciman> | I don't care |
| 10:37:46 | <Franciman> | why? |
| 10:37:50 | <dminuoso> | NixOS discourages proprietary software by fact of not allowing you to install any unless you explicitly set an option. |
| 10:38:23 | <Franciman> | I see |
| 10:38:44 | <Franciman> | so, Guix works harder to make you use free software |
| 10:38:48 | <Franciman> | also |
| 10:38:52 | <dminuoso> | That sounds reasonable |
| 10:38:53 | <Franciman> | non free software is not propertary |
| 10:39:02 | <dminuoso> | Or rather not reasonable, but sounds more correct |
| 10:39:32 | <dminuoso> | Not sure what the distinction there is |
| 10:39:59 | <dminuoso> | I always believed proprietary and non-free to be synonyms *shrugs* |
| 10:40:00 | <Franciman> | it's better discovered on your own |
| 10:40:13 | <Franciman> | when you sign for vscode things |
| 10:40:46 | <dminuoso> | If VSCode wants to attach special meaning to those words fine |
| 10:40:57 | <dminuoso> | But they're not the authority on the meaning of words |
| 10:41:11 | × | yauhsien quits (~yauhsien@61-231-30-221.dynamic-ip.hinet.net) (Ping timeout: 245 seconds) |
| 10:42:39 | <Franciman> | I wouldn't say firefox is propertary |
| 10:42:46 | <Franciman> | yet it is not free software |
| 10:43:11 | <dminuoso> | What is the distinction you are trying to make? |
| 10:43:42 | <dminuoso> | What is non-free about firefox? |
| 10:43:53 | <Franciman> | I don't do the distinction |
| 10:44:15 | <dminuoso> | You just did |
| 10:44:21 | <dminuoso> | 11:42:47 Franciman | yet it is not free software |
| 10:44:21 | <Franciman> | it's the Free Software Foundation definition |
| 10:44:24 | <Franciman> | *shrugs* |
| 10:44:54 | <Hecate> | free software or open governance? |
| 10:44:57 | <Hecate> | two very different things |
| 10:45:36 | <dminuoso> | You're just leaving bits for me to guess |
| 10:45:41 | <dminuoso> | So Im not sure what you are referring to |
| 10:45:47 | <Franciman> | I thought it was a common knowledge |
| 10:45:50 | → | deadmarshal joins (~deadmarsh@95.38.117.164) |
| 10:45:50 | <Franciman> | ok |
| 10:45:52 | <Franciman> | one second |
| 10:46:32 | <Franciman> | https://www.gnu.org/philosophy/free-sw.html.en |
| 10:46:55 | <merijn> | How is Firefox non-free according to that definition? |
| 10:46:59 | <Franciman> | the users have the freedom to run, copy, distribute, study, change and improve the software. |
| 10:47:09 | <Franciman> | roughly this is the meaning |
| 10:47:15 | <Franciman> | and firefox doesn't allow you to distribute firefox |
| 10:47:20 | <merijn> | Franciman: It does |
| 10:47:24 | <Franciman> | one second |
| 10:47:26 | <Franciman> | holy hell |
| 10:47:29 | <Franciman> | so fast |
| 10:47:29 | <merijn> | It doesn't allow you to use the *name* firefox |
| 10:47:35 | <Franciman> | indeed |
| 10:47:42 | <Franciman> | that's a violation |
| 10:47:48 | <dminuoso> | No its not. |
| 10:47:49 | <merijn> | No |
| 10:47:52 | <Franciman> | holy hell |
| 10:47:54 | <Franciman> | one second |
| 10:48:00 | <dminuoso> | Its about distributing the *software*, not the trademark. |
| 10:48:06 | <merijn> | The *software* can be distributed just fine |
| 10:48:25 | <merijn> | You cannot randomly take a trademark of someone else and use that. |
| 10:48:37 | <merijn> | That is, however, not a restriction on the software |
| 10:48:41 | <dminuoso> | While I agree that the mozilla foundation has a lot of highly questionable practices, and they're not the moral pillar of the software community by far, firefox is by all accounts free software. |
| 10:48:44 | <Franciman> | Mozilla has found a clever way to take away freedom 2 ("The freedom to redistribute copies so you can help your neighbor") using trademark law instead of using copyright law. |
| 10:48:55 | <merijn> | Franciman: Untruee |
| 10:48:55 | <Franciman> | so you can't redistribute copies |
| 10:49:05 | <merijn> | Franciman: You *can* distribute copies, just not using the name firefox |
| 10:49:11 | <Franciman> | that's not firefox then |
| 10:49:21 | <dminuoso> | You're being silly now. |
| 10:49:27 | <Franciman> | honstly |
| 10:49:29 | <Franciman> | I don't care |
| 10:49:35 | <Franciman> | I am explaing some others point of view |
| 10:49:48 | <Franciman> | it's free software foundation that is arguing this |
| 10:49:50 | <Franciman> | not me |
| 10:50:00 | <dminuoso> | Where does the FSF argue that firefox is not free software based on this? |
| 10:50:09 | <merijn> | Mozilla's doing *exactly* what trademark law was created for: Preventing user confusion by ensuring you know *who* is behind a product |
| 10:50:20 | <merijn> | Franciman: Citation of FSF arguing against firefox being free please |
| 10:50:40 | <Franciman> | I quoted you |
| 10:50:45 | <dminuoso> | Where is that quote from? |
| 10:50:52 | <merijn> | Franciman: You didn't? |
| 10:50:54 | <Franciman> | https://libreplanet.org/wiki/Libre_Browsers_Libre_Formats |
| 10:50:57 | <Franciman> | it's from here |
| 10:51:01 | <dminuoso> | That is not the FSF |
| 10:51:09 | <dminuoso> | That's some random authors opinion |
| 10:51:11 | <Franciman> | https://libreplanet.org/wiki/Libre_Browsers_Libre_Formats#Browsers_that_might_or_might_not_be_free |
| 10:51:25 | <Franciman> | lol dminuoso can you stop being ridiculous and watch the bottom of the website? |
| 10:51:27 | <dminuoso> | Or maybe |
| 10:51:29 | <merijn> | Franciman: That's not an FSF site |
| 10:51:30 | <dminuoso> | Mm |
| 10:51:34 | <Franciman> | same merijn |
| 10:51:50 | <Franciman> | if you want to attack me |
| 10:51:52 | <Franciman> | please say so |
| 10:52:05 | <Franciman> | you don't even seem to want to look at what I link |
| 10:52:15 | <dminuoso> | It's certainly an FSF funded project |
| 10:52:21 | <dminuoso> | But its not the same as being the FSF itself |
| 10:52:26 | <Franciman> | you just keep saying it's not true |
| 10:53:36 | <jackdk> | That page links to a statement by Brett Smith, who at time of posting was a "License Compliance Engineer" at the FSF, if his signature is to be believed: https://lists.nongnu.org/archive/html/gnu-linux-libre/2011-08/msg00014.html |
| 10:55:06 | <dminuoso> | Thanks, jackdk |
| 10:55:17 | <Franciman> | it's not trueee |
| 10:55:20 | <Franciman> | it's not trueee |
| 10:55:22 | <Franciman> | it's not trueee |
| 10:55:26 | <Franciman> | screw that |
| 10:55:29 | <Franciman> | bye |
| 10:55:37 | <Franciman> | thanks jackdk |
| 10:56:41 | <Franciman> | where is merijn now? |
| 10:56:57 | <Franciman> | what do you think about this? |
| 10:57:32 | <Hecate> | I hope merijn is doing something more fulfilling |
| 10:57:32 | <dminuoso> | It's an interesting proposition, and I can see where they are coming from. |
| 10:57:54 | × | chomwitt quits (~chomwitt@2a02:587:dc14:4600:12c3:7bff:fe6d:d374) (Ping timeout: 260 seconds) |
| 10:58:31 | <merijn> | merijn is back in his video conference meeting for work, which probably doesn't quote as more fulfilling than arguing on the internet :p |
| 10:59:01 | <Hecate> | hahaha |
| 10:59:27 | <Franciman> | this explains why you didn't open the links |
| 10:59:34 | <Franciman> | and kept saying it's not fsf |
| 10:59:53 | <dminuoso> | No, the issue is just that you expected us to prove your point for you |
| 11:00:07 | <Franciman> | that's what you assumed, tbf |
| 11:00:15 | <Franciman> | I linked a website by fsf and you said, this is not fsf |
| 11:00:18 | <dminuoso> | If you had just started out with the link jackdk had shown, all would have been simpler. |
| 11:00:21 | <dminuoso> | It was not FSF |
| 11:00:25 | <Franciman> | yeah sure |
| 11:00:25 | <merijn> | I somehwat agree with Brett that re-distributing unmodified Firefox using the name could be fine, but I disagree with him that's sufficient to violate the free rights |
| 11:00:28 | <Franciman> | *shrugs* |
| 11:00:29 | <dminuoso> | It was a website of a project *funded* by FSF |
| 11:00:58 | <merijn> | I opened libreplanet, read the firefox part, but I can't be arsed to go over the entire page and see if they are or aren't funded by the FSF |
| 11:01:19 | <Franciman> | but you can be arsed to say it's not fsf |
| 11:01:22 | <dminuoso> | And even if they are funded, their opinion might not necessarily match the FSFs opinion |
| 11:01:27 | <dminuoso> | It's not FSF. |
| 11:01:30 | <Franciman> | it is |
| 11:01:32 | <dminuoso> | No its not. |
| 11:01:40 | <Franciman> | *shrugs* *shrugs* |
| 11:01:47 | <Franciman> | ok |
| 11:02:07 | <dminuoso> | If the FSF funds a project, that project is not automagically part of the FSF. |
| 11:02:16 | <dminuoso> | either way |
| 11:02:30 | <dminuoso> | Not interested in continuing here |
| 11:02:45 | <merijn> | Franciman: Yes, because saying that takes 5 seconds. Anyway, this discussion seems mostly pointless. Brett says "unmodified firefox should be allowed to be distributed under the Firefox name, but requiring a name change on modification is fine" |
| 11:03:01 | <Franciman> | it's not |
| 11:03:14 | <Franciman> | I mean |
| 11:03:17 | <Franciman> | it's not the FSF |
| 11:03:19 | <Franciman> | its libreplanet |
| 11:03:20 | × | shriekingnoise quits (~shrieking@186.137.144.80) (Quit: Quit) |
| 11:03:20 | <merijn> | Franciman: Well, Brett's email linked by jackdk literally says it is |
| 11:03:24 | <Franciman> | one second |
| 11:03:32 | <Franciman> | I was saying something different |
| 11:03:42 | <Franciman> | I was saying it is not the FSF they are just funded by them |
| 11:03:45 | <merijn> | So restricting name usage on modified versions is fine with the FSF |
| 11:03:45 | <Franciman> | i.e. dminuoso is right |
| 11:04:06 | <jackdk> | please stop beeping me about this |
| 11:04:22 | <merijn> | My view: Restricting name usage on unmodified versions is a reasonable compromise, because it's hard to track down and check whether copies are modified or not |
| 11:04:34 | <Franciman> | sorry jackd.k |
| 11:04:41 | <jackdk> | thanks |
| 11:04:50 | <Franciman> | also time for offtopic |
| 11:05:00 | <Franciman> | or for merijn their conference |
| 11:06:05 | × | CiaoSen quits (~Jura@p200300c9570204002a3a4dfffe84dbd5.dip0.t-ipconnect.de) (Ping timeout: 250 seconds) |
| 11:07:26 | × | deadmarshal quits (~deadmarsh@95.38.117.164) (Quit: ZNC 1.8.2 - https://znc.in) |
| 11:07:53 | → | deadmarshal joins (~deadmarsh@95.38.117.164) |
| 11:10:41 | → | eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:d837:dc58:2ea7:10e8) |
| 11:15:11 | × | eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:d837:dc58:2ea7:10e8) (Ping timeout: 250 seconds) |
| 11:19:53 | → | [itchyjunk] joins (~itchyjunk@user/itchyjunk/x-7353470) |
| 11:28:11 | × | deadmarshal quits (~deadmarsh@95.38.117.164) (Ping timeout: 250 seconds) |
| 11:31:19 | → | __monty__ joins (~toonn@user/toonn) |
| 11:34:31 | → | neurocyte0132889 joins (~neurocyte@94.46.68.97) |
| 11:34:31 | × | neurocyte0132889 quits (~neurocyte@94.46.68.97) (Changing host) |
| 11:34:31 | → | neurocyte0132889 joins (~neurocyte@user/neurocyte) |
| 11:36:37 | → | pretty_dumm_guy joins (trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) |
| 11:41:58 | → | fr33domlover joins (~fr33@2.55.42.98) |
| 11:42:16 | ← | royo parts (~royo@user/royo) () |
| 11:43:28 | × | Vajb quits (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi) (Read error: Connection reset by peer) |
| 11:43:29 | × | Cajun quits (~Cajun@user/cajun) (Ping timeout: 256 seconds) |
| 11:43:36 | → | Vajb joins (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi) |
| 11:45:24 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 268 seconds) |
| 11:45:31 | → | CiaoSen joins (~Jura@p200300c9570204002a3a4dfffe84dbd5.dip0.t-ipconnect.de) |
| 11:45:31 | × | lavaman quits (~lavaman@98.38.249.169) (Remote host closed the connection) |
| 11:46:39 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 11:46:49 | → | wootehfoot joins (~wootehfoo@user/wootehfoot) |
| 11:52:02 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 260 seconds) |
| 11:52:19 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 11:52:42 | <gentauro> | are there only 3 employees at `well-typed`? https://www.dnb.com/business-directory/company-profiles.well-typed_llp.d4bf168abe3b4181d776efa2ad7dc49f.html |
| 11:53:27 | <Hecate> | gentauro: the rest are consultants |
| 11:53:38 | <gentauro> | Hecate: aha |
| 11:53:43 | <Hecate> | gentauro: it's not a joke :') |
| 11:54:01 | <gentauro> | Hecate: so like `external freelancers` right? |
| 11:54:07 | <Hecate> | yeah |
| 11:54:10 | <gentauro> | just `body-shopped` for customers |
| 11:54:11 | <gentauro> | got it |
| 11:54:12 | <gentauro> | :) |
| 11:54:38 | <Hecate> | not necessarily body-shopped for customers, the consultants are long-term hires |
| 11:55:18 | <gentauro> | Hecate: but they are `sold` to `some company` right? Otherwise, how can WT pay the `freealnce` fee? |
| 11:55:44 | <gentauro> | I understood from Simon Marlow that FB + MS Research paid for two to work on GHC |
| 11:55:47 | <gentauro> | iirc |
| 11:56:11 | × | phma quits (phma@2001:5b0:212a:8778:d128:5f0e:1eb9:3baa) (Read error: Connection reset by peer) |
| 11:57:05 | → | phma joins (phma@2001:5b0:2144:5518:1989:d92a:fa65:167d) |
| 11:57:42 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 260 seconds) |
| 11:58:00 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 11:59:39 | → | curiousgay joins (~curiousga@77-120-141-90.kha.volia.net) |
| 11:59:51 | → | mreh joins (~mreh@2a00:23c7:2803:ef00:841c:a322:61f5:4ad9) |
| 12:03:16 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 245 seconds) |
| 12:03:43 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 12:11:30 | → | enoq joins (~enoq@2a05:1141:1f5:5600:b9c9:721a:599:bfe7) |
| 12:12:44 | ← | enoq parts (~enoq@2a05:1141:1f5:5600:b9c9:721a:599:bfe7) () |
| 12:14:23 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 268 seconds) |
| 12:14:36 | → | burnsidesLlama joins (~burnsides@dhcp168-032.wadham.ox.ac.uk) |
| 12:14:42 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 12:16:33 | → | dsrt^ joins (~dsrt@68.101.63.101) |
| 12:17:26 | → | notzmv joins (~zmv@user/notzmv) |
| 12:17:26 | × | max22- quits (~maxime@2a01cb0883359800d4d6b02a2c3bac5a.ipv6.abo.wanadoo.fr) (Ping timeout: 245 seconds) |
| 12:20:47 | → | deadmarshal joins (~deadmarsh@95.38.117.164) |
| 12:24:53 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 268 seconds) |
| 12:25:12 | × | jmorris quits (uid433911@id-433911.hampstead.irccloud.com) (Quit: Connection closed for inactivity) |
| 12:25:51 | → | chomwitt joins (~chomwitt@94.69.34.153) |
| 12:26:19 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 12:26:45 | → | sunarch joins (uid526836@user/sunarch) |
| 12:31:42 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds) |
| 12:32:29 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 12:37:13 | × | michalz quits (~michalz@185.246.204.58) (Ping timeout: 268 seconds) |
| 12:37:55 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds) |
| 12:38:26 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 12:43:35 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds) |
| 12:44:24 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 12:45:21 | × | deadmarshal quits (~deadmarsh@95.38.117.164) (Ping timeout: 245 seconds) |
| 12:45:40 | <jackdk> | arahael: https://github.com/brendanhay/amazonka/pull/713 |
| 12:46:59 | → | deadmarshal joins (~deadmarsh@95.38.117.164) |
| 12:48:17 | <arahael> | woohoo! thanks jackdk! i'll check it out later in the week :) (midnight here now) |
| 12:49:49 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds) |
| 12:50:12 | <dminuoso> | Oh whats new in aeson 2.0? |
| 12:50:19 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 12:50:25 | <dminuoso> | Anything exciting? |
| 13:06:33 | × | deadmarshal quits (~deadmarsh@95.38.117.164) (Ping timeout: 250 seconds) |
| 13:07:38 | × | bliminse quits (~bliminse@host86-188-36-178.range86-188.btcentralplus.com) (Quit: leaving) |
| 13:10:30 | Nrmncr | is now known as Neuromancer |
| 13:11:57 | → | bliminse joins (~bliminse@host86-188-36-178.range86-188.btcentralplus.com) |
| 13:12:41 | → | mikoto-chan joins (~mikoto-ch@esm-84-240-99-143.netplaza.fi) |
| 13:12:50 | × | dschrempf quits (~dominik@070-207.dynamic.dsl.fonira.net) (Ping timeout: 260 seconds) |
| 13:13:25 | → | deadmarshal joins (~deadmarsh@95.38.117.164) |
| 13:24:48 | <arahael> | dminuoso: works with ghc 9.2.1 |
| 13:25:00 | arahael | cant sleep |
| 13:25:47 | × | mmhat quits (~mmh@55d42d28.access.ecotel.net) (Quit: WeeChat 3.3) |
| 13:36:32 | → | Lycurgus joins (~juan@98.4.112.204) |
| 13:37:59 | → | slack1256 joins (~slack1256@181.42.50.148) |
| 13:38:16 | → | jumper149 joins (~jumper149@static.6.71.203.116.clients.your-server.de) |
| 13:38:29 | <jumper149> | Should I ever use `ReadP` or always stick to `ReadPrec`? I want to write a custom `Read` instance. |
| 13:41:11 | <merijn> | jumper149: honestly, neither if you wanna remain sane :p |
| 13:41:27 | <merijn> | Would also highly recommend not doing custom Read instances, tbh |
| 13:45:48 | × | burnsidesLlama quits (~burnsides@dhcp168-032.wadham.ox.ac.uk) (Remote host closed the connection) |
| 13:47:18 | → | slowButPresent joins (~slowButPr@user/slowbutpresent) |
| 13:50:24 | → | kupi joins (uid212005@id-212005.hampstead.irccloud.com) |
| 13:52:26 | × | deadmarshal quits (~deadmarsh@95.38.117.164) (Ping timeout: 268 seconds) |
| 13:54:22 | × | gentauro quits (~gentauro@user/gentauro) (Ping timeout: 260 seconds) |
| 13:56:24 | → | hiruji joins (~hiruji@user/hiruji) |
| 13:56:32 | → | gentauro joins (~gentauro@185.107.12.141) |
| 13:56:32 | × | gentauro quits (~gentauro@185.107.12.141) (Changing host) |
| 13:56:32 | → | gentauro joins (~gentauro@user/gentauro) |
| 13:58:41 | → | _bo joins (~bo@217.18.216.247) |
| 13:59:56 | → | michalz joins (~michalz@185.246.204.33) |
| 14:01:42 | → | Pickchea joins (~private@user/pickchea) |
| 14:02:18 | → | bo_ joins (~bo@217.18.216.247) |
| 14:02:27 | × | _bo quits (~bo@217.18.216.247) (Client Quit) |
| 14:02:30 | × | bo_ quits (~bo@217.18.216.247) (Client Quit) |
| 14:02:42 | → | _bo joins (~bo@217.18.216.247) |
| 14:04:25 | → | deadmarshal joins (~deadmarsh@95.38.117.164) |
| 14:04:57 | → | gioyik joins (~gioyik@gateway/tor-sasl/gioyik) |
| 14:06:20 | Lycurgus | thinks about what kind of of epistemic ops would attach to an attestation under "tbh" |
| 14:07:18 | Lycurgus | a defeasor of some sort prolly |
| 14:08:18 | → | max22- joins (~maxime@2a01cb088335980085c825298679dd8e.ipv6.abo.wanadoo.fr) |
| 14:10:15 | <Unhammer> | wow, perfecthash memory use is quite amazing |
| 14:10:42 | → | reumeth joins (~reumeth@user/reumeth) |
| 14:10:52 | <Unhammer> | Weigh says "Live 8M" where hashmap.strict is 97M (1 million bytestrings) |
| 14:12:14 | <[exa]> | how long are the bytestrings? smashing 1M bytestrings into 8M memory sounds fishy. |
| 14:13:58 | <[exa]> | (also does the memory allocated by CMPH count into this?) |
| 14:14:18 | <Unhammer> | https://github.com/unhammer/dictionaries/blob/perfecthash/Space.hs#L75-L76 |
| 14:14:23 | <Unhammer> | Hm, maybe not? |
| 14:15:17 | <Unhammer> | I should make an executable and look at RES |
| 14:18:32 | → | Guest17 joins (~Guest17@68.171.185.81.rev.sfr.net) |
| 14:21:26 | → | burnsidesLlama joins (~burnsides@dhcp168-032.wadham.ox.ac.uk) |
| 14:24:00 | × | ec quits (~ec@gateway/tor-sasl/ec) (Ping timeout: 276 seconds) |
| 14:24:24 | → | rewq joins (~pc@102.184.117.46) |
| 14:25:48 | × | pretty_dumm_guy quits (trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) (Quit: WeeChat 3.3) |
| 14:26:15 | × | burnsidesLlama quits (~burnsides@dhcp168-032.wadham.ox.ac.uk) (Ping timeout: 260 seconds) |
| 14:26:28 | ← | rewq parts (~pc@102.184.117.46) () |
| 14:31:28 | <Unhammer> | Heh, I end up with exactly the same 304M RES if I read /usr/share/dict/nynorsk into either PerfectHash or HashMap.Strict, performGC and interact |
| 14:31:56 | <Unhammer> | no wait now perfecthash sunk to 225M :O |
| 14:33:00 | × | Guest17 quits (~Guest17@68.171.185.81.rev.sfr.net) (Quit: Client closed) |
| 14:34:44 | <Unhammer> | … 95M |
| 14:35:01 | <Unhammer> | is there something a bit more reliable than System.Mem.performGC? |
| 14:38:13 | <[exa]> | no |
| 14:38:43 | <[exa]> | like, you can have a look at the implementation and relatively easily compute how much actual memory gets occupied, or spend half a century trying to invent a good method to measure RAM usage |
| 14:40:41 | <Unhammer> | hm, tough choices |
| 14:40:58 | → | jippiedoe joins (~david@2a02-a44c-e14e-1-b210-1839-c8ac-8b46.fixed6.kpn.net) |
| 14:42:07 | <[exa]> | honestly If you're after data efficiency and matching power, just make a perfect trie and store it in an array |
| 14:42:38 | <[exa]> | I wouldn't say there's much to be gained by really having a perfect hash here |
| 14:44:09 | <Unhammer> | I would say 1/3 RES memory usage by simply switching from hashmap.strict to perfecthash is quite a bit to be gained |
| 14:46:34 | × | Lycurgus quits (~juan@98.4.112.204) (Quit: Exeunt) |
| 14:46:39 | → | jkaye joins (~jkaye@2601:281:8300:7530:1dd5:12e8:f7a8:958d) |
| 14:47:15 | × | jgeerds quits (~jgeerds@55d45b75.access.ecotel.net) (Ping timeout: 260 seconds) |
| 14:47:23 | <[exa]> | yeah if that helps your usecase |
| 14:47:57 | <[exa]> | I'm generally trying to avoid this kind of optimization because there's still 1000s of other things that may just explode the memory usage |
| 14:48:09 | <[exa]> | unless you know, you're sure that you can fit into 1000x less memory :D |
| 14:52:04 | <Unhammer> | I have a server that on startup reads a bunch of words into memory. It never adds/removes/changes anything after startup. It needs to be able to look them up fast and preferably not take too much memory. The word list is the main memory user, which I know because if I read less words I use less memory =P |
| 14:53:04 | × | pavonia quits (~user@user/siracusa) (Quit: Bye!) |
| 14:53:08 | <Unhammer> | so for me, less memory usage (while having good lookup speed) is the one optimization that would be worthwhile |
| 14:56:53 | → | lbseale joins (~ep1ctetus@user/ep1ctetus) |
| 14:59:39 | <Unhammer> | https://github.com/unhammer/dictionaries/commit/b2f0e866d3f8d97d92df6215c8da79e9c5f89424 |
| 15:00:10 | <Unhammer> | https://hackage.haskell.org/packages/search?terms=perfect%20trie :( |
| 15:00:32 | <Unhammer> | though maybe the 3.0 branch of bytestring-trie has less memory usage, haven't found time to try that yet |
| 15:00:41 | <Unhammer> | apparently it's a complete rewrite of internals |
| 15:01:27 | <merijn> | Unhammer: If your lookup thing-y is of considerable size you might also wanna look into compact regions to get a nice GC speed up |
| 15:02:02 | <merijn> | (this doesn't help reduce the overall memory usage, but still...) |
| 15:03:33 | <merijn> | Unhammer: Also, are you aware of "+RTS -sstderr"? |
| 15:06:16 | → | dschrempf joins (~dominik@070-207.dynamic.dsl.fonira.net) |
| 15:11:32 | × | dsrt^ quits (~dsrt@68.101.63.101) (Remote host closed the connection) |
| 15:11:50 | × | dschrempf quits (~dominik@070-207.dynamic.dsl.fonira.net) (Ping timeout: 260 seconds) |
| 15:16:40 | → | yauhsien joins (~yauhsien@61-231-30-221.dynamic-ip.hinet.net) |
| 15:18:26 | → | wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
| 15:18:26 | × | wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Changing host) |
| 15:18:26 | → | wroathe joins (~wroathe@user/wroathe) |
| 15:18:31 | × | lbseale quits (~ep1ctetus@user/ep1ctetus) (Ping timeout: 260 seconds) |
| 15:20:46 | × | acidjnk_new quits (~acidjnk@p200300d0c7271e1739bc3d1dda3deba6.dip0.t-ipconnect.de) (Ping timeout: 245 seconds) |
| 15:21:08 | × | yauhsien quits (~yauhsien@61-231-30-221.dynamic-ip.hinet.net) (Ping timeout: 256 seconds) |
| 15:21:48 | → | jjw joins (~user@2600:1700:53b0:3d1f:8c2d:4169:3092:35c1) |
| 15:24:22 | × | jjw quits (~user@2600:1700:53b0:3d1f:8c2d:4169:3092:35c1) (Quit: ERC (IRC client for Emacs 28.0.50)) |
| 15:25:06 | × | jippiedoe quits (~david@2a02-a44c-e14e-1-b210-1839-c8ac-8b46.fixed6.kpn.net) (Quit: Leaving) |
| 15:26:40 | → | atwm joins (~atwm@19-193-28-81.ftth.cust.kwaoo.net) |
| 15:28:07 | × | srk quits (~sorki@user/srk) (Quit: ZNC 1.8.1 - https://znc.in) |
| 15:28:26 | → | srk joins (~sorki@user/srk) |
| 15:28:27 | × | atwm quits (~atwm@19-193-28-81.ftth.cust.kwaoo.net) (Client Quit) |
| 15:28:38 | <lortabac> | speaking of which... is it normal that the time spent in the mutator increases when using compact regions? (the overall time goes down thanks to the reduced GC time) |
| 15:28:42 | → | atwm joins (~atwm@19-193-28-81.ftth.cust.kwaoo.net) |
| 15:29:05 | → | ec joins (~ec@gateway/tor-sasl/ec) |
| 15:29:12 | <lortabac> | or am I hitting some pathological case? |
| 15:29:18 | <merijn> | lortabac: I mean, if you spend less time on GC then obviously the fraction spent in the mutator seems obvious? |
| 15:29:24 | × | atwm quits (~atwm@19-193-28-81.ftth.cust.kwaoo.net) (Client Quit) |
| 15:29:26 | <merijn> | +increases |
| 15:29:28 | <lortabac> | merijn: :) |
| 15:29:40 | → | atwm joins (~atwm@19-193-28-81.ftth.cust.kwaoo.net) |
| 15:29:41 | <lortabac> | merijn: the absolute time increases |
| 15:29:59 | <merijn> | lortabac: "It Depends" |
| 15:30:06 | <merijn> | Creating the compact region takes mutator time |
| 15:30:33 | <merijn> | So if your measurement is short enough, that might increase the overall time |
| 15:33:00 | <merijn> | So I can certainly think of some cases where that might happen. But it depends on tons of factors like the size of the region you're creating, how long the rest of the workload is, etc. |
| 15:34:14 | × | cheater quits (~Username@user/cheater) (Ping timeout: 260 seconds) |
| 15:37:11 | <lortabac> | merijn: the increase in mutator time seems to be proportional to the total time, so it's probably not the creation alone |
| 15:37:49 | <tomsmeding> | is the size of the compact region also proportional to that? |
| 15:37:54 | <lortabac> | tomsmeding: no |
| 15:37:58 | <lortabac> | the size is fixed |
| 15:38:00 | <tomsmeding> | if so, creation might be linear in the size of the compact region |
| 15:38:00 | <tomsmeding> | ah |
| 15:40:56 | → | cheater joins (~Username@user/cheater) |
| 15:44:32 | × | Feuermagier_ quits (~Feuermagi@213.178.26.41) (Quit: Leaving) |
| 15:44:43 | → | Feuermagier joins (~Feuermagi@user/feuermagier) |
| 15:46:37 | → | dschrempf joins (~dominik@070-207.dynamic.dsl.fonira.net) |
| 15:52:33 | → | zava joins (~zava@ip5f5bdf0f.dynamic.kabel-deutschland.de) |
| 15:52:41 | × | jkaye quits (~jkaye@2601:281:8300:7530:1dd5:12e8:f7a8:958d) (Ping timeout: 268 seconds) |
| 15:54:56 | <merijn> | lortabac: I'd be interested in seeing the GC summary and/or profiling data :) |
| 15:56:34 | × | albet70 quits (~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection) |
| 15:57:38 | × | Pickchea quits (~private@user/pickchea) (Ping timeout: 268 seconds) |
| 15:58:21 | × | pfurla quits (~pfurla@2804:14d:5c81:4104:8d6b:77ca:adc:64ea) (Quit: gone to sleep. ZZZzzz…) |
| 15:59:41 | × | tromp quits (~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 15:59:46 | <lortabac> | merijn: it's for an open-source project, if you are really curious I can push the two branches (with and without compact regions) to Github |
| 16:00:02 | × | kupi quits (uid212005@id-212005.hampstead.irccloud.com) (Quit: Connection closed for inactivity) |
| 16:00:37 | <lortabac> | however I don't think I'll have time today, maybe tomorrow |
| 16:02:03 | EvanR_ | is now known as EvanR |
| 16:02:15 | × | EvanR quits (~evan@2600:1700:ba69:10:5c7c:46a9:5e48:ea) (Changing host) |
| 16:02:15 | → | EvanR joins (~evan@user/evanr) |
| 16:02:41 | → | albet70 joins (~xxx@2400:8902::f03c:92ff:fe60:98d8) |
| 16:03:05 | → | burnsidesLlama joins (~burnsides@dhcp168-032.wadham.ox.ac.uk) |
| 16:03:17 | → | pfurla joins (~pfurla@2804:14d:5c81:4104:8d6b:77ca:adc:64ea) |
| 16:06:04 | × | pfurla quits (~pfurla@2804:14d:5c81:4104:8d6b:77ca:adc:64ea) (Client Quit) |
| 16:06:08 | <merijn> | lortabac: tbh, I'm not curious enough to generate them myself :p But if you make them, feel free to ping me and I'll have a look :) |
| 16:06:43 | <lortabac> | merijn: is +RTS -t enough or do you want something else? |
| 16:06:48 | → | Midjak joins (~Midjak@may53-1-78-226-116-92.fbx.proxad.net) |
| 16:07:04 | → | waleee joins (~waleee@2001:9b0:216:8200:d457:9189:7843:1dbd) |
| 16:07:13 | <merijn> | lortabac: +RTS -sstderr reports GC statistics |
| 16:07:20 | <lortabac> | ok |
| 16:07:23 | <merijn> | Not sure what -t does :p |
| 16:07:29 | × | TMA quits (tma@twin.jikos.cz) (Ping timeout: 268 seconds) |
| 16:08:10 | <merijn> | Ah |
| 16:08:19 | <merijn> | -s is just the human readable version of -t :) |
| 16:08:39 | × | gioyik quits (~gioyik@gateway/tor-sasl/gioyik) (Ping timeout: 276 seconds) |
| 16:09:18 | <merijn> | lortabac: Essentially this is the difference: https://paste.tomsmeding.com/w5NxWtcc |
| 16:10:31 | → | tromp joins (~textual@dhcp-077-249-230-040.chello.nl) |
| 16:11:09 | <EvanR> | compact regions are useful as like, a ROM sort of thing, right xD |
| 16:11:23 | <EvanR> | once forged you carry it around for a while and don't change it |
| 16:11:47 | <lortabac> | merijn: https://pastebin.com/Lp1gG0Cj |
| 16:12:09 | <EvanR> | so discussion about mutator sounds fnuny xD |
| 16:14:18 | <lortabac> | maybe there is some implementation detail that makes the mutator slightly slower |
| 16:17:01 | <Unhammer> | merijn, yeah i've been meaning to try compact regions, it looks like a great fit for my use case (lots of reading on startup, then just lookup and minor processing) |
| 16:19:37 | <Unhammer> | EvanR, yeah |
| 16:19:46 | × | cfricke quits (~cfricke@user/cfricke) (Quit: WeeChat 3.3) |
| 16:20:20 | → | gioyik joins (~gioyik@gateway/tor-sasl/gioyik) |
| 16:24:38 | × | deadmarshal quits (~deadmarsh@95.38.117.164) (Ping timeout: 260 seconds) |
| 16:30:35 | × | lortabac quits (~lortabac@2a01:e0a:541:b8f0:bdf3:903c:8a82:6328) (Quit: WeeChat 2.8) |
| 16:31:17 | × | gioyik quits (~gioyik@gateway/tor-sasl/gioyik) (Remote host closed the connection) |
| 16:32:39 | <dsal> | I'm feeling extra dumb today. Why can't something like this work: `f :: (a -> [a]) -> Int ; f g = length (g 'x')` |
| 16:33:35 | <merijn> | dsal: 'x' is not a list? |
| 16:33:43 | <dsal> | (I know *how* to make it work, I just don't quite understand why it doesn't) |
| 16:33:58 | <dsal> | g is the function (a -> [a]) |
| 16:34:03 | → | deadmarshal joins (~deadmarsh@95.38.117.164) |
| 16:34:08 | <merijn> | oh, right |
| 16:34:09 | <dsal> | It doesn't like that 'x' isn't `a` |
| 16:34:17 | <merijn> | dsal: The 2nd bit is that the *caller* decides 'a' |
| 16:34:31 | <merijn> | dsal: I can call 'f' with (Int -> [Int]) |
| 16:34:32 | <dsal> | The caller of `f`? |
| 16:34:38 | <merijn> | Which obviously doesn't work with your code |
| 16:34:42 | <merijn> | dsal: Yes |
| 16:34:48 | <dsal> | OK. That makes sense. Thanks. |
| 16:35:05 | <merijn> | dsal: The Rank2 version explicitly says the caller of 'f' *must* give a polymorphic function |
| 16:35:30 | <merijn> | dsal: So passing 'Int -> [Int]' becomes an error |
| 16:35:33 | <dsal> | Right, that makes sense. I was just getting a bit confused as to how `a` was resolved in the default case. |
| 16:36:01 | → | yauhsien joins (~yauhsien@61-231-30-221.dynamic-ip.hinet.net) |
| 16:36:16 | → | Guest17 joins (~Guest17@eth-west-pareq2-46-193-4-100.wb.wifirst.net) |
| 16:37:03 | → | gioyik joins (~gioyik@gateway/tor-sasl/gioyik) |
| 16:38:10 | × | dschrempf quits (~dominik@070-207.dynamic.dsl.fonira.net) (Ping timeout: 260 seconds) |
| 16:38:20 | <dsal> | Thanks for the clarity. :) |
| 16:38:53 | <EvanR> | does a compact region improve performance of a big IntMap or Map you think? |
| 16:38:56 | <dsal> | I'm slightly confused as to how something like `f :: (a -> [a]) -> Int` could be useful. I guess it's useful if there's another `a` |
| 16:38:57 | <EvanR> | due to being... compact |
| 16:39:19 | → | random-jellyfish joins (~random-je@user/random-jellyfish) |
| 16:39:31 | <EvanR> | I heard about this L1 L2 cache thing |
| 16:40:21 | × | yauhsien quits (~yauhsien@61-231-30-221.dynamic-ip.hinet.net) (Ping timeout: 245 seconds) |
| 16:41:12 | <EvanR> | does improved locality make a measurable difference in lookups |
| 16:42:15 | <dsal> | This is pretty neat because I did a thing that was obvious to me how to do, but then someone else wanted me to explain it and I couldn't. heh. |
| 16:42:32 | × | zava quits (~zava@ip5f5bdf0f.dynamic.kabel-deutschland.de) (Ping timeout: 240 seconds) |
| 16:44:26 | <EvanR> | forall . a -> [a] doesn't have too many possibilities |
| 16:44:29 | × | gdd quits (~gdd@129.199.146.230) (Ping timeout: 268 seconds) |
| 16:45:02 | <EvanR> | and the Int can't really make use of it, whatever it is |
| 16:46:00 | → | _ht joins (~quassel@82-169-194-8.biz.kpn.net) |
| 16:46:23 | → | gdd joins (~gdd@129.199.146.230) |
| 16:47:01 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 245 seconds) |
| 16:47:13 | × | mreh quits (~mreh@2a00:23c7:2803:ef00:841c:a322:61f5:4ad9) (Ping timeout: 256 seconds) |
| 16:47:37 | × | cosimone quits (~user@2001:b07:ae5:db26:a7aa:8027:6b4e:2fb3) (Remote host closed the connection) |
| 16:47:44 | → | tzh joins (~tzh@c-24-21-73-154.hsd1.wa.comcast.net) |
| 16:48:02 | → | cosimone joins (~user@2001:b07:ae5:db26:c24a:d20:4d91:1e20) |
| 16:49:32 | × | wroathe quits (~wroathe@user/wroathe) (Ping timeout: 256 seconds) |
| 16:49:59 | <dsal> | Yeah, this is the remaining bit of scoping that's not intuitive to me. That just looks like `(:[])` to me. |
| 16:50:32 | <EvanR> | you could also do like \x -> [x,x] |
| 16:50:32 | × | mbuf quits (~Shakthi@122.174.170.222) (Quit: Leaving) |
| 16:50:42 | <EvanR> | don't forget \x -> [] |
| 16:52:19 | × | reumeth quits (~reumeth@user/reumeth) (Ping timeout: 260 seconds) |
| 16:52:21 | <EvanR> | I reread what you did. f :: (forall a . a -> [a]) -> Int does work xD |
| 16:52:52 | <EvanR> | forall a . (a -> [a]) -> Int doesn't |
| 16:56:45 | <EvanR> | inCompact :: Compact b -> a -> IO Bool -- wait a minute... |
| 16:57:04 | <EvanR> | check if second argument "is inside the" compact region |
| 16:57:20 | <EvanR> | referential transparency sense tingling |
| 16:58:03 | <EvanR> | so if you pass two different second arguments with the "same value" it may give two answers? I'm not even sure how IO can excuse this |
| 16:58:10 | <monochrom> | The IO saves you from referential obligations. |
| 16:58:15 | <hpc> | IO excuses everything |
| 16:58:25 | <hpc> | except for unsafeInterleaveIO :D |
| 16:58:33 | <EvanR> | should we believe that for any type a, we have pointer to heap objects to play with |
| 16:58:34 | → | justsomeguy joins (~justsomeg@user/justsomeguy) |
| 16:58:53 | <monochrom> | https://ro-che.info/ccc/9 |
| 16:59:26 | <monochrom> | Yes, a::* and * is boxed. |
| 17:00:01 | <monochrom> | Or rather, * requires/guarantees boxing. |
| 17:00:47 | <EvanR> | that's... I was just thinking how if you have an unknown a you don't have anything. Not even "ah ha, ObjectId" |
| 17:00:54 | <EvanR> | from OOP languages |
| 17:01:23 | <EvanR> | and how in haskell you can claim that there are no excepts to the rules xD |
| 17:01:38 | <monochrom> | OK, did you know that boxed Int and unboxed Int# have different kinds? |
| 17:01:44 | <EvanR> | yeah |
| 17:02:02 | <EvanR> | and e.g. StableNames only works on boxed? |
| 17:02:05 | <monochrom> | Did you know that so-called "a -> b" is implicitly a::* and b::* ? |
| 17:02:16 | <monochrom> | Did you know that * is the boxed kind? |
| 17:02:28 | <EvanR> | a -> b really being about *, I will have to digest |
| 17:02:42 | <monochrom> | "you don't have anything" is false. I have something, I know that there is a boxing constraint. |
| 17:02:59 | <hpc> | boxing is what gets you undefined as well, fwiw |
| 17:03:00 | <EvanR> | is that it? xD |
| 17:03:07 | <monochrom> | Yes. |
| 17:03:29 | <EvanR> | If I find something else, more hair on this black hole, I will be back |
| 17:03:47 | <monochrom> | Like you said yesterday. Physicis is full of stories. So is Haskell, or at least GHC's Haskell. |
| 17:03:48 | <dsal> | EvanR: Yeah, I understand how to make it work. I'm just a bit confused about the outer scope case. It feels like it should be resolvable because my brain still needs some rewiring to understand that. I should perhaps make some more obviously incorrect proposals to the compiler. |
| 17:04:19 | × | gioyik quits (~gioyik@gateway/tor-sasl/gioyik) (Quit: WeeChat 3.1) |
| 17:04:32 | → | yauhsien joins (~yauhsien@61-231-30-221.dynamic-ip.hinet.net) |
| 17:05:21 | × | deadmarshal quits (~deadmarsh@95.38.117.164) (Ping timeout: 245 seconds) |
| 17:05:31 | → | wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
| 17:05:31 | × | wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Changing host) |
| 17:05:31 | → | wroathe joins (~wroathe@user/wroathe) |
| 17:05:42 | → | zer0bitz joins (~zer0bitz@dsl-hkibng31-54fabc-15.dhcp.inet.fi) |
| 17:06:16 | → | reumeth joins (~reumeth@user/reumeth) |
| 17:09:47 | <EvanR> | dang only 29 total closed cartesian comics |
| 17:10:23 | × | wroathe quits (~wroathe@user/wroathe) (Ping timeout: 268 seconds) |
| 17:12:21 | × | kuribas quits (~user@ip-188-118-57-242.reverse.destiny.be) (Remote host closed the connection) |
| 17:13:51 | → | pfurla joins (~pfurla@201.17.118.230) |
| 17:14:56 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 17:15:33 | × | Guest17 quits (~Guest17@eth-west-pareq2-46-193-4-100.wb.wifirst.net) (Ping timeout: 256 seconds) |
| 17:15:55 | × | CiaoSen quits (~Jura@p200300c9570204002a3a4dfffe84dbd5.dip0.t-ipconnect.de) (Ping timeout: 250 seconds) |
| 17:19:32 | × | fr33domlover quits (~fr33@2.55.42.98) (Ping timeout: 240 seconds) |
| 17:20:08 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds) |
| 17:23:50 | × | justsomeguy quits (~justsomeg@user/justsomeguy) (Quit: WeeChat 3.3) |
| 17:31:16 | × | cheater quits (~Username@user/cheater) (Quit: (BitchX) The birds kept calling his name, thought Caw) |
| 17:31:36 | × | ezzieyguywuf quits (~Unknown@user/ezzieyguywuf) (Ping timeout: 245 seconds) |
| 17:33:51 | × | pfurla quits (~pfurla@201.17.118.230) (Quit: gone to sleep. ZZZzzz…) |
| 17:34:13 | → | deadmarshal joins (~deadmarsh@95.38.117.164) |
| 17:35:32 | × | DNH quits (~DNH@2a02:8108:1100:16d8:a418:17da:6b4f:5fc3) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
| 17:36:18 | <[itchyjunk]> | Hmm |
| 17:37:26 | × | rkrishnan quits (~user@122.172.141.170) (Ping timeout: 260 seconds) |
| 17:37:40 | <[itchyjunk]> | How come i can 2:[] but not []:2 ? |
| 17:38:08 | <EvanR> | well what is the type of : |
| 17:38:11 | <yushyin> | :t (:) |
| 17:38:12 | <lambdabot> | a -> [a] -> [a] |
| 17:38:38 | <[itchyjunk]> | ah |
| 17:39:49 | × | yauhsien quits (~yauhsien@61-231-30-221.dynamic-ip.hinet.net) (Remote host closed the connection) |
| 17:41:52 | <EvanR> | :k 2 |
| 17:41:53 | <lambdabot> | GHC.Types.Nat |
| 17:42:28 | <[itchyjunk]> | https://bpa.st/IQWQ |
| 17:42:31 | <[itchyjunk]> | behold! |
| 17:42:45 | <[itchyjunk]> | though it seems pointless now |
| 17:43:28 | <EvanR> | it takes a lot of effort to put something at the end of a list |
| 17:43:38 | <EvanR> | not very lazy |
| 17:43:58 | <dsal> | Nah, pointless is |
| 17:43:58 | <dsal> | :t flip (:) [] |
| 17:43:59 | <lambdabot> | a -> [a] |
| 17:44:36 | <dsal> | Need to flip harder. |
| 17:44:44 | <[itchyjunk]> | Hey, my thing works. Any feed back? |
| 17:44:44 | <[itchyjunk]> | https://bpa.st/GP6Q |
| 17:45:03 | <[itchyjunk]> | I wasn't sure i needed to handle [] and [x] or not |
| 17:45:16 | <[itchyjunk]> | but that was my mental process so i put it in anyways |
| 17:45:27 | <dsal> | > pure 3 :: [Int] |
| 17:45:28 | <lambdabot> | [3] |
| 17:45:33 | <EvanR> | if you remove the [] case, then it crashes on [] |
| 17:45:37 | <EvanR> | so yeah |
| 17:46:25 | <[itchyjunk]> | ahh the [x] case was redundent |
| 17:46:31 | <dsal> | @src reverse |
| 17:46:31 | <lambdabot> | reverse = foldl (flip (:)) [] |
| 17:46:39 | <[itchyjunk]> | ahh the [] case handles it |
| 17:46:42 | <dsal> | Well there's a "why don't you just" |
| 17:47:15 | <[itchyjunk]> | Right, i'll have to relearn all the inbuilt ways to do this at some point. but these are the simplest exercise i could think of |
| 17:47:24 | → | yauhsien joins (~yauhsien@61-231-30-221.dynamic-ip.hinet.net) |
| 17:47:43 | <EvanR> | try to understand how intensive your algorithm is by doing an example on like, a list of length 5 |
| 17:47:51 | <dsal> | Sure. The one thing that you might note is that this function doesn't care about `Int` at all. |
| 17:48:16 | <[itchyjunk]> | oh yeah it should take any type of list |
| 17:48:17 | <EvanR> | evaluate the steps of the algorithm (lazily) |
| 17:48:25 | → | ezzieyguywuf joins (~Unknown@user/ezzieyguywuf) |
| 17:48:26 | <EvanR> | see it explode xD |
| 17:48:27 | <[itchyjunk]> | overloading aka ad hoc polymorphism thing |
| 17:48:47 | <EvanR> | s/ad hoc/parametric/ |
| 17:49:00 | → | mreh joins (~mreh@2a00:23c7:2803:ef00:841c:a322:61f5:4ad9) |
| 17:49:06 | <[itchyjunk]> | is this parametric? |
| 17:49:13 | <EvanR> | yeah, ad hoc is type classes |
| 17:49:13 | × | tromp quits (~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 17:49:40 | <[itchyjunk]> | "In programming languages, ad hoc polymorphism[1] is a kind of polymorphism in which polymorphic functions can be applied to arguments of different types, because a polymorphic function can denote a number of distinct and potentially heterogeneous implementations depending on the type of argument(s) to which it is applied." |
| 17:50:04 | <[itchyjunk]> | seems to fit the bill here no? |
| 17:50:12 | <EvanR> | note the heterogeneous part |
| 17:50:27 | <EvanR> | your reverse algorithm treats the payload of the list the same regardless of what it is |
| 17:50:35 | <EvanR> | not hetero |
| 17:50:55 | <[itchyjunk]> | hmm |
| 17:51:28 | <EvanR> | example of ad hoc is sorting :: Ord a => [a] -> [a] |
| 17:51:49 | <EvanR> | the a 1. has to come with comparison operation and 2. can be different for different a |
| 17:52:01 | × | yauhsien quits (~yauhsien@61-231-30-221.dynamic-ip.hinet.net) (Ping timeout: 245 seconds) |
| 17:52:23 | <[itchyjunk]> | oh i think i kinda get it |
| 17:52:43 | <[itchyjunk]> | going back to my reverse funcction, how do i change my signature such that it doesn't care what's in the list? |
| 17:53:02 | <EvanR> | replace Int with a |
| 17:53:05 | <[itchyjunk]> | i tried f :: [a] -> [a] but getitng a not in scope error |
| 17:53:07 | <[itchyjunk]> | oh |
| 17:53:18 | <monochrom> | IMO that paragraphs used a lot of unnecessary long words to describe a very simple thing. |
| 17:53:40 | <monochrom> | Ad hoc means behaviour varies by type. Done. |
| 17:54:06 | <[itchyjunk]> | ah and parametric means behavior is the same regardless of type? |
| 17:54:16 | <monochrom> | The opposite of ad hoc is parametric. It means uniform over types. Done. |
| 17:54:30 | <EvanR> | reverse does the same thing regardless of a |
| 17:54:35 | <[itchyjunk]> | something weird happened, f ['a','b'] returns a `ba` instead of [ |
| 17:54:38 | <monochrom> | And IMO a very simple example would complete it. |
| 17:54:44 | <[itchyjunk]> | ['b','a'] |
| 17:55:04 | <EvanR> | > ['a', 'b', 'c', 'd'] |
| 17:55:05 | <lambdabot> | "abcd" |
| 17:55:14 | <EvanR> | syntactic sugar for list of Char |
| 17:55:15 | <[itchyjunk]> | hmm |
| 17:55:18 | → | Tuplanolla joins (~Tuplanoll@91-159-69-50.elisa-laajakaista.fi) |
| 17:55:22 | <[itchyjunk]> | ah |
| 17:55:30 | <monochrom> | You are asked to write "f :: a -> a". Can you write this? "f x = if x is an int then x+1 else if x is a string then ..." |
| 17:55:38 | <monochrom> | If yes, ad hoc. If no, parametric. |
| 17:56:25 | <[itchyjunk]> | hmm i guess i could write that if i figure out how to know what the type of a is |
| 17:56:40 | <monochrom> | No, you can't do it in Haskell. |
| 17:56:49 | <monochrom> | But you can do it in Java. Use instanceOf. |
| 17:57:18 | <[itchyjunk]> | Ah.. i am supposed to use instanceOf for my next hw set.. funny it came up here |
| 17:57:32 | <[itchyjunk]> | There is no way to ask haskell about the type of a ? |
| 17:57:38 | <monochrom> | No. |
| 17:57:46 | <[itchyjunk]> | hmmmmm |
| 17:57:53 | <EvanR> | that would violate parametricity |
| 17:58:01 | <monochrom> | If I relax the type sig to "f :: Typeable a => a -> a" then you can. But I didn't. |
| 17:58:31 | × | benin quits (~benin@183.82.179.164) (Quit: The Lounge - https://thelounge.chat) |
| 17:58:49 | <[itchyjunk]> | take a, get it's ascii value and if it's in the range to to numbers, add 1 else something else? |
| 17:58:56 | <[itchyjunk]> | to be* |
| 17:59:05 | → | cheater joins (~Username@user/cheater) |
| 17:59:18 | <monochrom> | "get its ascii value" requires Show a. But I didn't allow Show a. |
| 17:59:39 | <[itchyjunk]> | hmmmm |
| 17:59:57 | <EvanR> | if someone gives you a parametric type, you immediately know stuff about what it can and can't do |
| 18:00:07 | <dsal> | `a` by itself means "any type at all is relevant here" and all possible types is greater than "all types that can show themselves" |
| 18:00:10 | <[itchyjunk]> | Is this the monad stuff? try to add 1 and if it fails do nothing |
| 18:00:17 | <[itchyjunk]> | if it works, great, move on? |
| 18:00:23 | <dsal> | constraints reduce the types you can pass, but give you a bit of wiggle room for doing things with the values. |
| 18:00:54 | <EvanR> | if they say, never mind the parametric part isn't always honored, now you don't know things anymore |
| 18:01:03 | <monochrom> | Monad is irrelevant. |
| 18:01:05 | <[itchyjunk]> | Oh there are types that can show themselves and that can't show themsleves? @_@ |
| 18:01:23 | <dsal> | No type can show itself unless granted that power. |
| 18:01:25 | <dsal> | :t show |
| 18:01:26 | <lambdabot> | Show a => a -> String |
| 18:01:38 | <dsal> | (well, show values of the type) |
| 18:01:41 | <EvanR> | yeah you can't print out of a function |
| 18:01:49 | × | jumper149 quits (~jumper149@static.6.71.203.116.clients.your-server.de) (Quit: WeeChat 3.3) |
| 18:01:57 | <EvanR> | show (+1) ... doesn't work |
| 18:02:10 | <[itchyjunk]> | hmmm |
| 18:03:40 | <EvanR> | it would be nice to get debug info for any value whatever, but here we are xD |
| 18:03:55 | <[itchyjunk]> | Given `f :: a -> a` is it possible to write "f x = if x is an int then x+1 else if x is a string then ..." at all? |
| 18:04:03 | <monochrom> | No. |
| 18:04:06 | <[itchyjunk]> | ah |
| 18:04:44 | <EvanR> | but can write a f :: a -> a, it just can't do that |
| 18:05:10 | <monochrom> | But you can in Java generics. <T> T f(T a) { if (a instanceOf Integer) { ... |
| 18:05:26 | <monochrom> | This shows that Java generics is still not parametric polymorphism. |
| 18:05:56 | <monochrom> | Or vice versa, Haskell parametric polymorphism is not Java generics. |
| 18:06:20 | <[itchyjunk]> | interesting! |
| 18:06:37 | <[itchyjunk]> | I know almost nothing about java generics though, but makes sense i think |
| 18:07:04 | <monochrom> | You don't hear that very often because in practice, people don't actually abuse Java generics that way, they use it as parametric polymorphism, so no one notices the difference. |
| 18:07:49 | → | myShoggoth joins (~myShoggot@97-120-85-195.ptld.qwest.net) |
| 18:08:22 | <[itchyjunk]> | couldn't i overload it? f(int a) { return a + 1;} f( char a) { do char stuff} |
| 18:08:27 | → | chisui joins (~chisui@2001:16b8:6636:e400:16e3:5e8c:67f1:d219) |
| 18:08:49 | <monochrom> | So we are in this Pareto/Nash equilibrium in which the older programmers don't abuse it, therefore the newer programmers don't know that they can abuse it. By induction it is a lost dark art. |
| 18:08:58 | <hpc> | that's not polymorphism |
| 18:09:10 | × | deadmarshal quits (~deadmarsh@95.38.117.164) (Ping timeout: 260 seconds) |
| 18:09:23 | <[itchyjunk]> | hmm i thought overloading was polymorphism :s |
| 18:09:33 | <EvanR> | that's C++ style ad hoc polymorphism |
| 18:09:33 | <hpc> | it's type-directed name resolution, those fs are two different functions and it picks between them based on how you call it |
| 18:09:41 | <monochrom> | Haskell uses ad hoc polymorphism for overloading. |
| 18:09:54 | <monochrom> | But nothing says a language must. |
| 18:09:56 | × | _bo quits (~bo@217.18.216.247) (Ping timeout: 245 seconds) |
| 18:10:12 | <[itchyjunk]> | in java, that's overloading aka ad hoc polymorphism no? using f with different signatures? |
| 18:10:18 | <hpc> | it's not the same f |
| 18:10:42 | <monochrom> | In Java, the point is exactly overloading is orthogonal to polymorphism. |
| 18:10:42 | <hpc> | it's two different functions with the same name |
| 18:10:47 | <EvanR> | go to a different language, get different conflicting terminology xD |
| 18:11:14 | <[itchyjunk]> | so overloading in haskell uses the same f somehow? huh interesting |
| 18:11:23 | <[itchyjunk]> | guess i shouldn't take things i learn in java too seriously then |
| 18:11:33 | <[itchyjunk]> | thought i understood polymorphism :D |
| 18:11:35 | <monochrom> | It's OK to take Java seriously. |
| 18:11:49 | <monochrom> | What's wrong is assuming that everyone solves problems the same way. |
| 18:12:16 | <monochrom> | or assuming that there is only one way. |
| 18:12:18 | <hpc> | iirc, if you wrote f(Object a) and f(SomethingElse a), g(Object a) {f(a)} is going to use the Object f, even if you do g(somethingElseValue) |
| 18:13:15 | <monochrom> | Terminology is a lost cause. Every echo chamber has its terminology. |
| 18:13:31 | <monochrom> | Echo chamber is human nature. |
| 18:13:54 | <[itchyjunk]> | Are polymorphisms implemented differently in different FP as well? |
| 18:13:56 | → | shriekingnoise joins (~shrieking@186.137.144.80) |
| 18:14:07 | <[itchyjunk]> | or is it more or less consistent in FPs at least? |
| 18:14:34 | × | chisui quits (~chisui@2001:16b8:6636:e400:16e3:5e8c:67f1:d219) (Quit: Client closed) |
| 18:15:05 | <hpc> | in the ML family it's more or less always parametric polymorphism |
| 18:15:23 | <hpc> | clojure is lisp on the jvm, so it takes after java even though it's functional |
| 18:15:36 | → | chisui joins (~chisui@2001:16b8:6636:e400:16e3:5e8c:67f1:d219) |
| 18:15:37 | × | random-jellyfish quits (~random-je@user/random-jellyfish) (Ping timeout: 256 seconds) |
| 18:15:50 | <hpc> | other lisps are completely untyped, lambda calculus comes in every typed and untyped variant you can think of |
| 18:15:55 | <[itchyjunk]> | ohh didn't know cloure was fp |
| 18:17:02 | <EvanR> | yeah it is |
| 18:17:12 | <EvanR> | despite itself xD |
| 18:17:31 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 18:17:48 | <sshine> | [itchyjunk], ML modules also encourage ad-hoc polymorphism, e.g. https://stackoverflow.com/questions/37694313/make-ocaml-function-polymorphic-for-int-lists-and-float-lists/37710287#37710287 |
| 18:19:41 | <monochrom> | At that point, you are translating ad hoc polymorphism to parametric polymorphism and then you wonder why there is a line. |
| 18:20:03 | <monochrom> | sort :: Ord a => [a] -> [a] involves a bit of ad hoc polymorphism, yes. |
| 18:20:34 | <monochrom> | But in a language without Haskell type class, you could have gone sortBy :: (a -> a -> Bool) -> [a] -> [a]. |
| 18:20:49 | <monochrom> | which is a low-tech version of the module approach. |
| 18:21:17 | <monochrom> | But then, technically, "(a -> a -> Bool) -> [a] -> [a]" is parametric polymorphism. |
| 18:21:29 | <EvanR> | seeing C++ overloading as type directed name resolution and not polymorphism is cool xD |
| 18:21:42 | <EvanR> | now I wonder what polymorphism even is |
| 18:22:15 | <EvanR> | using the same function for different types |
| 18:22:18 | <sshine> | yea, so you could have parametric polymorphism at the bottom. but you could also parameterise your higher-order modules, making it parametrically polymorphic at the module level, and at the value level it'd be ad-hoc. |
| 18:22:54 | <sshine> | I guess the difference comes down to book-keeping. :) |
| 18:23:17 | → | wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
| 18:23:17 | × | wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Changing host) |
| 18:23:17 | → | wroathe joins (~wroathe@user/wroathe) |
| 18:24:44 | <sshine> | there was one talk about functional design patterns that had a comparison table between OO and FP, where the FP column just listed "functions" as the equivalent abstraction to most OO patterns. ;-P |
| 18:25:42 | <[itchyjunk]> | How come : isn't ad hoc then? so you could x:xs or xs:x ? |
| 18:25:50 | <monochrom> | https://www.slideshare.net/ScottWlaschin/fp-patterns-buildstufflt slide 13 |
| 18:26:07 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 250 seconds) |
| 18:26:37 | × | geekosaur quits (~geekosaur@xmonad/geekosaur) (Remote host closed the connection) |
| 18:27:01 | <EvanR> | youre thinking : means ++ and should be symmetric |
| 18:27:02 | <sshine> | [itchyjunk], because lists are defined with a type parameter. |
| 18:27:02 | <[itchyjunk]> | maybe the answer to my question is also secretly functions |
| 18:27:09 | <monochrom> | a -> [a] -> [a] is clearly parametric |
| 18:27:17 | <sshine> | :t (:) |
| 18:27:18 | <lambdabot> | a -> [a] -> [a] |
| 18:27:30 | <EvanR> | but cons and snoc are not symmetric |
| 18:27:39 | <EvanR> | : is cons |
| 18:27:58 | <monochrom> | Also, [False, True] : False is clearly illegal. |
| 18:28:05 | × | chisui quits (~chisui@2001:16b8:6636:e400:16e3:5e8c:67f1:d219) (Ping timeout: 256 seconds) |
| 18:28:08 | <[itchyjunk]> | hmm symmetric over mirror |
| 18:28:51 | → | DNH joins (~DNH@2a02:8108:1100:16d8:a418:17da:6b4f:5fc3) |
| 18:29:12 | → | geekosaur joins (~geekosaur@xmonad/geekosaur) |
| 18:29:19 | × | myShoggoth quits (~myShoggot@97-120-85-195.ptld.qwest.net) (Ping timeout: 268 seconds) |
| 18:29:50 | × | wroathe quits (~wroathe@user/wroathe) (Ping timeout: 256 seconds) |
| 18:31:23 | <EvanR> | yeah the (singly) linked list is essentially asymmetric |
| 18:31:52 | <EvanR> | that's reflected in the type of (:) |
| 18:32:37 | × | mreh quits (~mreh@2a00:23c7:2803:ef00:841c:a322:61f5:4ad9) (Ping timeout: 256 seconds) |
| 18:32:50 | <hololeap> | how would a doubly linked list be expressed in haskell? |
| 18:33:12 | → | dsrt^ joins (~dsrt@68.101.58.90) |
| 18:33:32 | <EvanR> | a zipper! xD |
| 18:33:59 | <hololeap> | yeah that sort of makes sense actually |
| 18:34:00 | <monochrom> | ADT and GADT cannot say doubly-linked list per se. But you can have two fields and, during term construction, tie the knot. |
| 18:35:03 | → | Guest|66 joins (~Guest|66@bl5-47-230.dsl.telepac.pt) |
| 18:35:33 | <hololeap> | I can never get over an uneasy feeling that "tying the knot" won't work the way I expect it to. I end up doing things explicitly with e.g. TVars just to be damn sure everything is talking about the same value |
| 18:38:05 | → | pretty_dumm_guy joins (trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) |
| 18:39:06 | → | yauhsien joins (~yauhsien@61-231-30-221.dynamic-ip.hinet.net) |
| 18:39:46 | <monochrom> | Yeah, tying the knot is a very cute skill that although I get it, I don't want to inflict it on everyone. |
| 18:39:57 | <monochrom> | It's too mean. |
| 18:41:20 | → | econo joins (uid147250@user/econo) |
| 18:41:52 | × | chele quits (~chele@user/chele) (Remote host closed the connection) |
| 18:43:11 | <monochrom> | The unreasonable universal relevance of https://ro-che.info/ccc/9 >:) |
| 18:44:33 | × | yauhsien quits (~yauhsien@61-231-30-221.dynamic-ip.hinet.net) (Ping timeout: 250 seconds) |
| 18:46:08 | → | wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
| 18:46:08 | × | wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Changing host) |
| 18:46:08 | → | wroathe joins (~wroathe@user/wroathe) |
| 18:47:41 | → | tromp joins (~textual@dhcp-077-249-230-040.chello.nl) |
| 18:49:09 | → | chisui joins (~chisui@2001:16b8:6636:e400:e560:82ac:8599:d8d0) |
| 18:49:17 | × | chisui quits (~chisui@2001:16b8:6636:e400:e560:82ac:8599:d8d0) (Client Quit) |
| 18:50:32 | × | wroathe quits (~wroathe@user/wroathe) (Ping timeout: 240 seconds) |
| 18:51:27 | <EvanR> | the mystery remains though |
| 18:51:57 | × | dhouthoo quits (~dhouthoo@178-117-36-167.access.telenet.be) (Quit: WeeChat 3.3) |
| 18:51:58 | <EvanR> | how that wise monk lost his moustache half way through the story |
| 18:52:13 | → | xkuru joins (~xkuru@user/xkuru) |
| 18:53:09 | <monochrom> | I don't think it was moustache in the first place. |
| 18:54:05 | <monochrom> | Just his beard pushed up but since it's projected on a 2D viewport the z depth is lost. |
| 18:55:57 | × | Guest|66 quits (~Guest|66@bl5-47-230.dsl.telepac.pt) (Quit: Connection closed) |
| 18:56:11 | × | sunarch quits (uid526836@user/sunarch) (Quit: Connection closed for inactivity) |
| 18:56:13 | × | __monty__ quits (~toonn@user/toonn) (Quit: leaving) |
| 19:00:02 | → | ees joins (~user@pool-108-18-30-46.washdc.fios.verizon.net) |
| 19:00:16 | <[itchyjunk]> | I am trying to test something but i forget how to use the thingy. say i have a list `[1]` and i wanted to do `(x:y:xs)` on this list and see what x and y and xs would be |
| 19:00:26 | <[itchyjunk]> | I can't figure out how to run this test :x |
| 19:01:37 | <monochrom> | case [1] of {x:y:xs -> (x, y, xs) ; _ -> error "not this droid" } |
| 19:02:19 | <[itchyjunk]> | hmm |
| 19:04:10 | × | ees quits (~user@pool-108-18-30-46.washdc.fios.verizon.net) (Remote host closed the connection) |
| 19:04:47 | → | ees joins (~user@pool-108-18-30-46.washdc.fios.verizon.net) |
| 19:08:13 | <[itchyjunk]> | oh ohh, infinite recursion |
| 19:09:23 | ← | ees parts (~user@pool-108-18-30-46.washdc.fios.verizon.net) () |
| 19:09:44 | → | ees joins (~user@pool-108-18-30-46.washdc.fios.verizon.net) |
| 19:10:35 | × | [itchyjunk] quits (~itchyjunk@user/itchyjunk/x-7353470) (Remote host closed the connection) |
| 19:12:13 | → | [itchyjunk] joins (~itchyjunk@user/itchyjunk/x-7353470) |
| 19:17:21 | → | dschrempf joins (~dominik@070-207.dynamic.dsl.fonira.net) |
| 19:18:41 | × | [itchyjunk] quits (~itchyjunk@user/itchyjunk/x-7353470) (Remote host closed the connection) |
| 19:26:09 | <EvanR> | I guess in this case "pattern matching" is a misnomer xD |
| 19:26:34 | <EvanR> | pattern discriminating |
| 19:27:14 | → | [itchyjunk] joins (~itchyjunk@user/itchyjunk/x-7353470) |
| 19:27:16 | <EvanR> | more like |
| 19:28:49 | → | yauhsien joins (~yauhsien@61-231-30-221.dynamic-ip.hinet.net) |
| 19:29:31 | <[itchyjunk]> | you know, i knew it was gonna be infinite regression |
| 19:29:34 | → | _bo joins (~bo@217.18.216.247) |
| 19:29:35 | <[itchyjunk]> | but i wanted to run it anyways |
| 19:29:40 | <[itchyjunk]> | ended up force shutting down |
| 19:33:38 | × | yauhsien quits (~yauhsien@61-231-30-221.dynamic-ip.hinet.net) (Ping timeout: 260 seconds) |
| 19:35:28 | → | deadmarshal joins (~deadmarsh@95.38.117.164) |
| 19:37:04 | → | wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
| 19:37:04 | × | wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Changing host) |
| 19:37:04 | → | wroathe joins (~wroathe@user/wroathe) |
| 19:37:15 | × | tromp quits (~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 19:39:42 | × | _bo quits (~bo@217.18.216.247) (Read error: Connection reset by peer) |
| 19:40:06 | × | deadmarshal quits (~deadmarsh@95.38.117.164) (Ping timeout: 256 seconds) |
| 19:40:34 | <[itchyjunk]> | oh.. |
| 19:40:40 | <[itchyjunk]> | i think it works.. i can't believe it |
| 19:41:01 | <[itchyjunk]> | https://bpa.st/ICOA |
| 19:41:02 | <[itchyjunk]> | Right? |
| 19:42:06 | → | tromp joins (~textual@dhcp-077-249-230-040.chello.nl) |
| 19:42:10 | → | pfurla joins (~pfurla@2804:14d:5c81:4104:8d6b:77ca:adc:64ea) |
| 19:44:31 | × | dschrempf quits (~dominik@070-207.dynamic.dsl.fonira.net) (Ping timeout: 245 seconds) |
| 19:48:33 | × | Codaraxis_ quits (~Codaraxis@user/codaraxis) (Remote host closed the connection) |
| 19:49:29 | → | Codaraxis_ joins (~Codaraxis@user/codaraxis) |
| 19:52:51 | <dsal> | [itchyjunk]: bumping those parens up against functions looks really funny to me. heh |
| 19:53:15 | <[itchyjunk]> | f( g) ? |
| 19:53:26 | <[itchyjunk]> | f (g n) then? |
| 19:53:37 | <dsal> | yeah. |
| 19:53:41 | <[itchyjunk]> | f (g (h n)) |
| 19:53:42 | <[itchyjunk]> | okay |
| 19:54:14 | <dsal> | What is g for here? |
| 19:54:23 | <dsal> | It looks expensive. :) |
| 19:54:39 | <[itchyjunk]> | my f was only sorting either the smallest or largest to the end of the list |
| 19:54:46 | <dsal> | Oh, that's your reverse? |
| 19:54:52 | <[itchyjunk]> | so i had to remove the last element and apply it again |
| 19:54:54 | <[itchyjunk]> | no |
| 19:55:12 | <[itchyjunk]> | [2,1,4,5] -> [2,4,5,1] by f |
| 19:55:39 | <dsal> | > let g n = last( f n) : g( init( f n)) in g [1..10] |
| 19:55:40 | <lambdabot> | error: |
| 19:55:40 | <lambdabot> | • Could not deduce (FromExpr [Integer]) arising from a use of ‘g’ |
| 19:55:40 | <lambdabot> | from the context: FromExpr [a] |
| 19:55:43 | <[itchyjunk]> | and g take [2,4,5] and applys f again to get [4,5,2] then [4,5] etc |
| 19:56:01 | <[itchyjunk]> | i tried doing it with only f but wasn't sure so tried this and it worked out |
| 19:56:24 | → | Guest17 joins (~Guest17@eth-west-pareq2-46-193-4-100.wb.wifirst.net) |
| 19:56:49 | <[itchyjunk]> | what about the x: f (y:xs), how would you format that? |
| 19:56:59 | <[itchyjunk]> | x:f (y:xs) maybe? |
| 19:57:22 | <dsal> | That one doesn't look as weird either way. |
| 19:57:28 | <[itchyjunk]> | ah |
| 19:58:50 | <dsal> | OK. I see what you're doing here. You're doing a lot of sorting, though. g runs through the whole sort once to find the last thing and again to find the things that aren't the last thing. |
| 20:00:36 | <[itchyjunk]> | Right, i can kinda guess that this is all horribly inefficient |
| 20:00:50 | <dsal> | Sure, if you wanted something better, you'd just use `sort` :) |
| 20:00:52 | <[itchyjunk]> | but i figured if it works, i'll worry about optimization later |
| 20:01:00 | <[itchyjunk]> | ah |
| 20:01:13 | <dsal> | Just toss a `where` in there and capture the sort once. |
| 20:01:39 | <[itchyjunk]> | hmmmmmm |
| 20:01:45 | <[itchyjunk]> | i'll read up on where next then |
| 20:01:47 | <dsal> | g n = last sorted : g (init sorted) where sorted = f n |
| 20:02:09 | <[itchyjunk]> | oh |
| 20:02:22 | <[itchyjunk]> | i see! |
| 20:02:25 | <dsal> | "sorted" is probably not the right word. |
| 20:02:32 | <dsal> | bubbled |
| 20:02:37 | <dsal> | percolated |
| 20:03:01 | <[itchyjunk]> | neat! |
| 20:03:08 | <[itchyjunk]> | I'll file this under "works" |
| 20:03:35 | → | dschrempf joins (~dominik@070-207.dynamic.dsl.fonira.net) |
| 20:04:51 | <dsal> | Yeah, exercises like this are good. |
| 20:05:18 | × | juhp quits (~juhp@128.106.188.82) (Ping timeout: 260 seconds) |
| 20:05:20 | <dsal> | It's fun to do these without explicit recursion as well. |
| 20:06:41 | → | juhp joins (~juhp@128.106.188.82) |
| 20:10:35 | × | albet70 quits (~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection) |
| 20:13:48 | Franciman | is now known as {Franciman} |
| 20:14:51 | × | dschrempf quits (~dominik@070-207.dynamic.dsl.fonira.net) (Ping timeout: 260 seconds) |
| 20:16:42 | → | albet70 joins (~xxx@2400:8902::f03c:92ff:fe60:98d8) |
| 20:19:05 | × | remedan quits (~remedan@balak.me) (Quit: Bye!) |
| 20:19:52 | × | pooryorick quits (~pooryoric@87-119-174-173.tll.elisa.ee) (Quit: leaving) |
| 20:20:28 | → | Sgeo joins (~Sgeo@user/sgeo) |
| 20:22:29 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 20:24:36 | <[itchyjunk]> | Yes, comming up with them off the top of my head |
| 20:25:00 | <[itchyjunk]> | for some reason, googling for haskell exercise leads to much harder problem sets than expected :< |
| 20:25:19 | → | remedan joins (~remedan@balak.me) |
| 20:25:37 | <dsal> | I rather like AoC. It starts out pretty easy. |
| 20:25:47 | <dsal> | Then gets stupid hard sometimes, but by that point you're committed. |
| 20:26:11 | <[itchyjunk]> | Ah, advent of code? yeah i should skim through some of those problem sets |
| 20:26:14 | × | remedan quits (~remedan@balak.me) (Client Quit) |
| 20:29:17 | → | remedan joins (~remedan@balak.me) |
| 20:29:18 | → | bollu joins (uid233390@id-233390.helmsley.irccloud.com) |
| 20:29:38 | × | wroathe quits (~wroathe@user/wroathe) (Ping timeout: 260 seconds) |
| 20:29:44 | [exa] | looks at the calendar |
| 20:29:49 | → | myShoggoth joins (~myShoggot@97-120-85-195.ptld.qwest.net) |
| 20:29:50 | <[exa]> | ah it's not december yet, phew |
| 20:30:03 | <dsal> | I'm not remotely ready. |
| 20:30:30 | <[exa]> | you said "starts out pretty easy", got totally scared I missed it. :D |
| 20:31:39 | <dsal> | Oh, the first part is always like, "What's 1?" And then you're all like... wait, I know this one. Then a couple days later, "Solve this maze of arbitrary dimensions using only IO mechanisms in this program written for this VM you had write." |
| 20:32:01 | <dsal> | Damnit, I left out the word "two" "two IO mechanisms" |
| 20:32:05 | <monochrom> | Ugh, "what's 1?" is a deep question. >:) |
| 20:32:18 | <dsal> | Yeah, what page of the book is 1+1 on? |
| 20:32:48 | monochrom | teaches monads by beginning with "what are numbers? see, that's an unhelpful question. don't ask what are monads either." |
| 20:33:24 | <[exa]> | wow cool |
| 20:33:26 | <dsal> | People are *super* blind to all the context they carry along with them. |
| 20:34:06 | <int-e> | dsal: obviously *ducks* |
| 20:34:55 | <dsal> | Someone was in my discussion about why I think "where" is actually a good thing was talking about how it works in various spoken languages using arrangements of "I'll have a cup of coffee when it's ready." So I wrote that function out and got lost in dependencies about washing cups and getting gas before going to the store to buy a bean grinder... |
| 20:35:44 | <monochrom> | Ugh, that's one more data point for Wadler's law. |
| 20:36:11 | <dsal> | I think I just need to do more pairing. I tend to write functions like `mything x = theAnswer` then I define `theAnswer = keysFrom . buildMapOf x` etc... until it stops not compiling. |
| 20:36:39 | <monochrom> | Some big shot thought up this syntax and now we're all stuck with it for better or worse. Why would anyone waste time rationalizing or derationalizing it post mortem. |
| 20:37:01 | <dsal> | Heh. I've not seen Wadler's Law. It looks like a specialization of bike shedding. |
| 20:37:10 | <monochrom> | Yeah! |
| 20:37:52 | <dsal> | The argument is that you should list every requirement before you do a thing. You know, like you're writing assembler and can't jump backwards or something. |
| 20:38:06 | <monochrom> | Just be aware that human history has come up with all sorts of grammars and orders, so different permutations make sense to different people. Deal with it. |
| 20:38:38 | <dsal> | Yeah, I can understand that. But in a declarative language, requiring everything you see to have occurred higher up in the file is just kind of silly. |
| 20:38:52 | <dsal> | s/occurred/been defined/ |
| 20:39:03 | → | dschrempf joins (~dominik@070-207.dynamic.dsl.fonira.net) |
| 20:39:45 | <monochrom> | That one is easily understood as "at the time of inventing Algol and C, they wanted the compiler to be more streaming". |
| 20:40:39 | <dsal> | The guy who's a proponent for that is also into really long identifier names. And like, having lots of identifier names. I introduced confusing by changing `theThingWeGotFromGetTheThing <- getTheThing; case theThing of` with `getTheThing >>= \case` woah, that name was super helpful. |
| 20:43:12 | × | cosimone quits (~user@2001:b07:ae5:db26:c24a:d20:4d91:1e20) (Read error: Connection reset by peer) |
| 20:43:17 | → | cosimone` joins (~user@2001:b07:ae5:db26:c24a:d20:4d91:1e20) |
| 20:44:47 | → | deadmarshal joins (~deadmarsh@95.38.117.164) |
| 20:46:13 | → | wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
| 20:46:13 | × | wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Changing host) |
| 20:46:13 | → | wroathe joins (~wroathe@user/wroathe) |
| 20:46:29 | × | deadmarshal quits (~deadmarsh@95.38.117.164) (Client Quit) |
| 20:46:52 | → | pavonia joins (~user@user/siracusa) |
| 20:47:16 | → | CiaoSen joins (~Jura@p200300c9570204002a3a4dfffe84dbd5.dip0.t-ipconnect.de) |
| 20:47:33 | → | deadmarshal joins (~deadmarsh@95.38.117.164) |
| 20:50:25 | × | wroathe quits (~wroathe@user/wroathe) (Ping timeout: 250 seconds) |
| 20:51:23 | × | tromp quits (~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 20:54:54 | × | remedan quits (~remedan@balak.me) (Quit: Bye!) |
| 20:55:57 | × | Midjak quits (~Midjak@may53-1-78-226-116-92.fbx.proxad.net) (Quit: This computer has gone to sleep) |
| 20:56:43 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 268 seconds) |
| 20:58:28 | → | eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:d837:dc58:2ea7:10e8) |
| 21:01:26 | × | _ht quits (~quassel@82-169-194-8.biz.kpn.net) (Remote host closed the connection) |
| 21:02:02 | → | remedan joins (~remedan@balak.me) |
| 21:07:58 | → | yauhsien joins (~yauhsien@61-231-63-167.dynamic-ip.hinet.net) |
| 21:10:42 | × | dschrempf quits (~dominik@070-207.dynamic.dsl.fonira.net) (Ping timeout: 260 seconds) |
| 21:13:02 | × | yauhsien quits (~yauhsien@61-231-63-167.dynamic-ip.hinet.net) (Ping timeout: 256 seconds) |
| 21:15:34 | <dsal> | Wrote tests for obviously correct code and spent a while trying to figure out how I broke it. Obviously correct code wasn't. |
| 21:16:42 | <dsal> | Turns out about 4/9 of these value parsers were incorrect and couldn't parse things like their own examples. Can't wait until I get the complaints about how I wrote tests for these for not being copy and pasted swaths of code. heh |
| 21:18:11 | <arahael> | dsal: my pet irritation is working with devs who, when they review my code, keep asking me "whats weg? what's fyi?", i have a personal convention of calling my locals using acronyms of the thing they just came from. i've given up saying "look 3 lines above. it's always 3 lines. and it's never used again anywhere else". |
| 21:18:54 | <peutri> | what *is* weg tho |
| 21:20:09 | <arahael> | let weg = WorldEngineeringGlobalists(); let wog = WorldOwnersGlobalists(); return weg.code + wog.code; |
| 21:20:57 | <dsal> | arahael: I did go readability at Google for like, 6 years. That was a huge thing. And it was always that. Name something. Use it only once on like, the next line. But name it like you're hoping to get it published. |
| 21:22:00 | <arahael> | dsal: blegh. frustrating. i have bigger things to worry about, such as whether 'weg.code + wog.code' is correct. |
| 21:22:19 | <dsal> | These folks have a really bad forest-for-the-trees problem and the solutions always seem to be "make bigger trees" |
| 21:22:26 | <arahael> | dsal: i argue shorter names make it much easier for pattern matching. |
| 21:22:37 | <dsal> | So very much. |
| 21:23:02 | <dsal> | I had an example where there were two variable names that were ~7 words long, around 50 chars or so with just two or three chars *in the middle* different. |
| 21:23:03 | <arahael> | the mathematicians got one thing right. |
| 21:23:50 | <dsal> | I understand why people don't like seeing just piles of µ • ß everywhere or something, but also like, I can tell those apart without much thinking. |
| 21:25:00 | <arahael> | it's always a few short lines above. always obvious from context. |
| 21:25:15 | <dsal> | Random statement I woke up to in a group chat from senior guy: "there is *no point* in abbreviating variable names" Gave examples like yours where the context is obvious. |
| 21:25:31 | × | waleee quits (~waleee@2001:9b0:216:8200:d457:9189:7843:1dbd) (Ping timeout: 250 seconds) |
| 21:26:04 | <dsal> | Though some of this is making more sense. I was arguing with someone else who said he wanted to do things in a "standard" way and I'm starting to figure out that "standard" is just whatever the other dude says. |
| 21:26:17 | → | waleee joins (~waleee@2001:9b0:216:8200:d457:9189:7843:1dbd) |
| 21:26:30 | <dsal> | Doesn't have to look like anything else anyone might see in the wild. Ironically the link to the "standard" document says very specifically it's not free to use. |
| 21:27:13 | <arahael> | dsal: it strikes me that this is exactly the same sort of conversation i had about 8 years ago when people were grappling with "var" in C#. some people hated it. |
| 21:27:13 | <dsal> | If these guys want to argue about how to spell their bugs, that's cool, I guess. I'm still somewhat enjoying myself. :) |
| 21:27:22 | → | benin joins (~benin@183.82.179.164) |
| 21:27:39 | <arahael> | dsal: as in, name your types, otherwise how do you know what it is? |
| 21:28:13 | <arahael> | i am so tired of typing types three times on the same line. |
| 21:28:19 | → | acidjnk_new joins (~acidjnk@p200300d0c7271e128015eb8f81d9ba9d.dip0.t-ipconnect.de) |
| 21:28:30 | <dsal> | No, like, the specific example was: do not write `uat :: UserAccessToken` -- write `userAccessToken :: UserAccessToken` |
| 21:28:39 | <arahael> | WorldEngineeringGlobalists worldEngineeringGlobalists = WorldEngineeringGlobalists() |
| 21:28:48 | → | Pickchea joins (~private@user/pickchea) |
| 21:29:00 | <arahael> | dsal: yeah, that also annoys me. |
| 21:29:09 | <dsal> | I mostly just ignore them otherwise I'd never get anything done. |
| 21:29:16 | <arahael> | yep. |
| 21:29:21 | <dsal> | And I get so much more done than anyone else, that I'm completely OK with them firing me. |
| 21:30:00 | <arahael> | yeah i have started getting that attitude as well, way i see it, if it's so difficult to get pay rises, stop sucking up :) |
| 21:30:29 | <dsal> | I can't even get a pay raise at this place because I started at the top of the scale, so I can only go out. heh |
| 21:30:42 | × | reumeth quits (~reumeth@user/reumeth) (Ping timeout: 260 seconds) |
| 21:31:20 | <arahael> | dsal: i hate the "scale" thing, but i've been told i am at the top myself. yet... i know someone who recently quit got even more so yeah it's never true. |
| 21:31:42 | <arahael> | dsal: back to the type names topic! another extreme is almosr as bad. |
| 21:31:54 | × | ees quits (~user@pool-108-18-30-46.washdc.fios.verizon.net) (Remote host closed the connection) |
| 21:31:54 | <dsal> | Heh, sure. I took a pretty big pay cut to work here just because the job itself seems more interesting. I don't even care that much. |
| 21:32:00 | <dsal> | But year, forest vs. trees. |
| 21:32:41 | <arahael> | in swift, which is an apple language where it feels like people are just discovering things us haskell people have known for decades... one thing is that swift lets you infer a *lot* of types. not all, but mosr. |
| 21:33:02 | × | myShoggoth quits (~myShoggot@97-120-85-195.ptld.qwest.net) (Ping timeout: 260 seconds) |
| 21:33:05 | <arahael> | so people in our teams are now saying: never specify types. never, if you can get away with it, then don't. |
| 21:33:10 | <arahael> | *sigh*. |
| 21:33:27 | <dsal> | "complex" and "simple" are strangely subjective. I deleted over a hundred lines of code, made it much harder to get wrong, fixed a few bugs, added tests, etc... and while the reduction of duplication is appreciated, it's "too complex." I'm like... there are fewer types, fewer functions, fewer failure modes, etc... |
| 21:33:30 | <arahael> | so what i do is i add in my types... get it working... then delete them before i send it for review. |
| 21:33:40 | × | mcgroin quits (~mcgroin@roc37-h01-176-170-197-243.dsl.sta.abo.bbox.fr) (Quit: WeeChat 3.3) |
| 21:33:49 | <dsal> | I've never tried swift. I used to do objc back in the day. It started getting super weird. |
| 21:34:09 | → | mreh joins (~matthew@host81-157-195-163.range81-157.btcentralplus.com) |
| 21:34:10 | <dsal> | Half of my app was specified in a binary blob I worked on so infrequently I forgot how to recreate it. |
| 21:34:10 | <arahael> | swift is a huge improvement over objc, not even in the same ballpark. |
| 21:34:18 | × | wootehfoot quits (~wootehfoo@user/wootehfoot) (Read error: Connection reset by peer) |
| 21:34:32 | <arahael> | yeah. apple's tooling sucks. |
| 21:35:31 | <dsal> | Starting haskell, it does seem like you should just line Hindley or Milner or whoever do all that type work for you and just write toplevel symbols. |
| 21:35:40 | <dsal> | GHC's like. oookay, but don't make any mistakes. |
| 21:36:01 | → | betelgeuse joins (~betelgeus@94-225-47-8.access.telenet.be) |
| 21:36:07 | <arahael> | yep. trouble is adding an extra type or two, especially in long chains, is helpful for both the human and compiler. |
| 21:36:23 | <mreh> | I cannot get my head round free, is there a good example free monad? |
| 21:36:46 | <dsal> | mreh: does this help? https://chrispenner.ca/posts/asts-with-fix-and-free |
| 21:37:10 | <dsal> | arahael: Yeah, it doesn't seem like something you want when you're starting, but then you learn to love types. Then you get wingman or something and never write code again. |
| 21:37:20 | <mreh> | dsal: may do! |
| 21:37:25 | <arahael> | mreh: free monads evaluate to a graph, a free standing tree of nodes, if you will. so you end up with just an abstract syntax tree, effectively. |
| 21:37:54 | <arahael> | mreh: (approximately, anyway. there may be some lambda's and the like complicating that picture) |
| 21:38:00 | <Rembane_> | Regarding types: Agda is also good, proof by auto. |
| 21:38:23 | <dsal> | I never got to the point of agda where it did anything other than look pretty. |
| 21:38:50 | <arahael> | dsal: yep. the other struggle, which i am having in the current project, is where you have a language that is actually quite decent for functional programming... but they have an OOP mindset. |
| 21:39:14 | <arahael> | dsal: nil's everywhere! protocols everywhere (instead of just defining a struct once). |
| 21:41:08 | <dsal> | There are a few of these styles that people seem to like but have always been horrifying to me. |
| 21:42:32 | <Rembane_> | Walk softly and always check for nils. |
| 21:42:45 | <dsal> | Many languages sometimes let you use nils just fine. |
| 21:42:54 | <dsal> | go, smalltalk, etc.. |
| 21:44:25 | × | pfurla quits (~pfurla@2804:14d:5c81:4104:8d6b:77ca:adc:64ea) (Quit: gone to sleep. ZZZzzz…) |
| 21:45:13 | <mreh> | arahael: I've come accross it in beam, I guess it's being used to represent SQL syntax |
| 21:46:27 | <dsal> | I'm not sure I'm ever going to be a fan of fancy database abstractions if I'm not by now. |
| 21:46:37 | → | pfurla joins (~pfurla@2804:14d:5c81:4104:8d6b:77ca:adc:64ea) |
| 21:47:06 | <mreh> | beam is great |
| 21:47:45 | <mreh> | it helps to know some depended typing to understand what's going on though |
| 21:49:23 | <dsal> | postgresql-simple seems perfect for just about everything I've needed. I made a `Transaction` monad for transactionally composing lower level stuff. You can also compose FromRow and ToRow so you can smash bits together. There's still some dynamic parts that can occasionally lead to confusion, but the confusion is "why does this test fail with this error message that tells me what I did wrong?" |
| 21:50:02 | × | cosimone` quits (~user@2001:b07:ae5:db26:c24a:d20:4d91:1e20) (Remote host closed the connection) |
| 21:50:35 | → | cosimone` joins (~user@2001:b07:ae5:db26:c24a:d20:4d91:1e20) |
| 21:50:49 | × | Codaraxis_ quits (~Codaraxis@user/codaraxis) (Quit: Leaving) |
| 21:53:15 | <mreh> | with type safety you don't need transations :^) |
| 21:54:31 | → | narendraj9 joins (~user@2a02:8109:b63f:ff7c::57b2) |
| 21:55:02 | × | waleee quits (~waleee@2001:9b0:216:8200:d457:9189:7843:1dbd) (Ping timeout: 240 seconds) |
| 21:55:27 | <arahael> | mreh: i'm assuming that is tongue in cheek :) |
| 21:55:50 | <mreh> | of course |
| 21:56:24 | <monochrom> | I had never seen "weg" but I could guess "working example". |
| 21:56:32 | × | eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:d837:dc58:2ea7:10e8) (Remote host closed the connection) |
| 21:56:39 | <monochrom> | Although, IMO "working" is redundant. |
| 21:56:52 | <arahael> | monochrom: i'd call that one 'we' ;) |
| 21:57:15 | <arahael> | dsal: i definitely prefer thin abstractions these days. |
| 21:57:45 | <arahael> | well, nearly 9am. i should probably get ready to walk to the cafe. for my second coffee. |
| 21:59:02 | <arahael> | and to play with jackdk's aeson 2.0 compatible amazonka, he fixed that up whilst i was trying to sleep! |
| 21:59:15 | <arahael> | amazing. |
| 22:00:11 | × | cosimone` quits (~user@2001:b07:ae5:db26:c24a:d20:4d91:1e20) (Ping timeout: 250 seconds) |
| 22:01:12 | <dsal> | arahael: The amazonka 2.0 stuff is a bit disruptive, but nice. |
| 22:01:25 | <dsal> | Probably not related, but it does have a number and name in common with stuff you typed. |
| 22:02:35 | <arahael> | there's no perfect solution w.r.t. AWS :( |
| 22:03:11 | → | epolanski joins (uid312403@id-312403.helmsley.irccloud.com) |
| 22:04:07 | → | tromp joins (~textual@dhcp-077-249-230-040.chello.nl) |
| 22:04:47 | → | drdo joins (~drdo@roach0.drdo.eu) |
| 22:05:17 | × | michalz quits (~michalz@185.246.204.33) (Remote host closed the connection) |
| 22:06:15 | × | alx741 quits (~alx741@186.178.109.248) (Ping timeout: 250 seconds) |
| 22:06:53 | <jackdk> | arahael: I should've been trying to sleep too, but here we are |
| 22:07:09 | <jackdk> | thanks for the nerdsnipe, I guess? It needed to happen at some point. |
| 22:07:30 | → | waleee joins (~waleee@2001:9b0:216:8200:d457:9189:7843:1dbd) |
| 22:08:06 | <arahael> | jackdk: a pleasure - and thanks again! i'll be checking it out soon! |
| 22:08:31 | × | takuan quits (~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection) |
| 22:11:01 | × | narendraj9 quits (~user@2a02:8109:b63f:ff7c::57b2) (Remote host closed the connection) |
| 22:11:28 | × | mc47 quits (~mc47@xmonad/TheMC47) (Remote host closed the connection) |
| 22:13:41 | <Athas> | How do I make haskell-mode in Emacs run a the ghci session for my project within the Nix environment defined by my shell.nix? |
| 22:13:49 | <Athas> | My Emacs does not (and should not) run within that Nix environment. |
| 22:15:40 | <energizer> | Athas: have you looked at emacs-direnv? |
| 22:16:35 | <dsal> | arahael: I don't mind amazonka 2.0. I'm glad I picked it up when I did because I found a pretty big hole in it. But it was fixed up quickly. Now I just need it to get rolled out. |
| 22:16:44 | <Athas> | energizer: I am now. It might solve the problem, depending on how exactly haskell-mode works (although I don't normally use direnv). Have you solved it this way? |
| 22:17:24 | <energizer> | Athas: i haven't tried it with haskell but for other things yes |
| 22:19:22 | → | alx741 joins (~alx741@186.178.108.193) |
| 22:21:42 | → | zava joins (~zava@ip5f5bdf0f.dynamic.kabel-deutschland.de) |
| 22:22:43 | × | waleee quits (~waleee@2001:9b0:216:8200:d457:9189:7843:1dbd) (Ping timeout: 260 seconds) |
| 22:23:19 | → | mmhat joins (~mmh@55d42d28.access.ecotel.net) |
| 22:25:10 | <hololeap> | anyone else go to ruby sometimes, just to use nokogiri? why does that library feel so much more intuitive than anything than any equivalent haskell library? is it that ruby's syntax makes it easier to bang out something that's "good enough" in 15 minutes? |
| 22:25:12 | × | gehmehgeh quits (~user@user/gehmehgeh) (Quit: Leaving) |
| 22:25:40 | <dsal> | What's that? I've not seen a ruby in over 10 years. :) |
| 22:25:47 | <jackdk> | athas: the other option would be to rummage around with something like `apropos-variable` and find how haskell-mode configures the command to run, possibly using a `.dir-locals.el` file to set it for each project |
| 22:25:56 | <jackdk> | s/the other/another/ |
| 22:25:56 | <hololeap> | it's a html/xml parsing library |
| 22:26:07 | × | zer0bitz quits (~zer0bitz@dsl-hkibng31-54fabc-15.dhcp.inet.fi) (Ping timeout: 268 seconds) |
| 22:26:08 | <dsal> | ah, I've probably used it. |
| 22:26:19 | → | myShoggoth joins (~myShoggot@97-120-85-195.ptld.qwest.net) |
| 22:26:36 | <dsal> | I've done some sloppy in html in haskell, I think. Definitely a bit of XML. But only a little bit because I don't go to bad neighborhoods very often. |
| 22:27:07 | <hololeap> | I busted something out that removed all the javascript off a bunch of downloaded html in like 15 minutes. I doubt I could have done it that fast in haskell, and I don't understand why. I hadn't used the library in while, either. |
| 22:27:17 | <jackdk> | no, but that's more because i tend not to have to do that sort of thing. I haven't had much fun with either hxt or xml-conduit, but were I to do it again today I would probably reach for lens |
| 22:27:27 | <Athas> | jackdk: I'm surprised there is not ready machinery to handle this. I'd expect everyone who develops Haskell on NixOS with Emacs to run into this. |
| 22:27:46 | <Athas> | Maybe there are just not that many of those. |
| 22:28:06 | <jackdk> | I use ghcid (though at some point i want to wire lsp support into my emacs) and I use .dir-locals.el to drive this. I can pastebin a snippet, if you'd like? |
| 22:28:06 | <dsal> | hololeap: I had to grab some crap out of html here: https://github.com/dustin/tesla/blob/master/src/Tesla.hs#L122 |
| 22:28:21 | <monochrom> | Unpopular opinion but the arrow-based interface of hxt is pretty intuitive to me. |
| 22:29:27 | <monochrom> | But at the meta level, I reckon that Haskellers no longer care about html and xml, so there hasn't been any improvement or innovation for years. |
| 22:30:04 | <mreh> | monochrom: because SPAs are so popular? |
| 22:30:15 | <monochrom> | I don't know what's SPA. |
| 22:30:21 | <mreh> | single page application |
| 22:30:35 | <dsal> | My hot tub's heat control relay is broken. |
| 22:30:55 | <monochrom> | But all the Haskell webdevs rave about various json solutions instead of html solutions. |
| 22:31:33 | <monochrom> | or s/json/RESTful API/ |
| 22:31:48 | × | deadmarshal quits (~deadmarsh@95.38.117.164) (Ping timeout: 256 seconds) |
| 22:32:10 | <mreh> | does anyone know how to write a beam database backend? |
| 22:32:14 | <monochrom> | A decade ago Haskellers did not have a lot of webdevs but there were a lot of html scrapers. |
| 22:32:29 | <monochrom> | Now there are no html scrapers but a lot of webdevs and "api" people. |
| 22:32:36 | <mreh> | beam-mysql is behind beam-core and I'd really like to get it to compile with a recent snapshot |
| 22:33:03 | × | [itchyjunk] quits (~itchyjunk@user/itchyjunk/x-7353470) (Remote host closed the connection) |
| 22:33:16 | <mreh> | monochrom: I'm actually scraping HTML with haskell right now |
| 22:33:21 | → | tpefreedom joins (~tpefreedo@user/tpefreedom) |
| 22:33:42 | × | jpds quits (~jpds@gateway/tor-sasl/jpds) (Remote host closed the connection) |
| 22:34:07 | → | jpds joins (~jpds@gateway/tor-sasl/jpds) |
| 22:34:10 | <mreh> | what are people using to develop their APIs now? I really like servant |
| 22:34:18 | <monochrom> | On the technical side, although every Arrow instance in hxt is also a Monad instance, the arrow mode of thinking, or rather, the Klesli arrow view of >=>, makes xml scraping code look really like what XPath dreams of. The code reads like a path. That's what makes me like it. |
| 22:34:27 | <hololeap> | hm, now that I look at my ruby script, I wonder if the language's built-in syntactic for PCREs and maps makes it more suitable for expressing HTML parsing, without taking the time to import 20 modules |
| 22:34:44 | → | waleee joins (~waleee@2001:9b0:216:8200:d457:9189:7843:1dbd) |
| 22:35:39 | <dsal> | mreh: I like scotty. I've never intentionally used servant, but this project is. |
| 22:35:51 | <hololeap> | (if anyone is curious, http://sprunge.us/SmPRne) |
| 22:35:52 | <dsal> | "this project" == people at work. |
| 22:36:21 | ← | tpefreedom parts (~tpefreedo@user/tpefreedom) (Leaving) |
| 22:37:24 | <mreh> | actually using haskell at work, I can only dream |
| 22:37:45 | <mreh> | I'll have a look at scotty |
| 22:38:01 | <monochrom> | Stay tuned for the next horror story dsal tells you about coworkers though >:) |
| 22:38:55 | <mreh> | if only they listened |
| 22:38:58 | <hololeap> | ruby really is a fun language, but I will never make anything "serious" with it again |
| 22:39:07 | <dsal> | haha. servant is a funny one because they're all about "simple haskell" but like, good luck finding a definition of that. Many I found suggest not to use servant. |
| 22:39:11 | → | zebrag joins (~chris@user/zebrag) |
| 22:39:15 | <monochrom> | Apparently humans are still humans. Coworkers who have agreed to switch to Haskell still preserve previous idiosyncracies, superstitious ideologies, and cargo culting. |
| 22:39:52 | <dsal> | Yeah. I do generally prefer arguing over mostly good tools vs. just not having any good tools to argue over. |
| 22:39:58 | <hololeap> | what in the world does "cargo culting" mean in this context? |
| 22:40:16 | <dsal> | Generally just doing X because X is the right thing to do.. |
| 22:40:24 | <dsal> | Tautologically speaking. |
| 22:40:39 | <monochrom> | Blindly insisting on long identifier names, for example. |
| 22:40:48 | <jackdk> | "cargo culting" - only using stuff that's been rewritten in rust ;-) |
| 22:40:54 | <dsal> | ha |
| 22:40:54 | <monochrom> | hahaha |
| 22:41:13 | <hololeap> | isn't that also known as a "style guide"? |
| 22:41:30 | <monochrom> | IMO that's orthogonal. |
| 22:41:42 | <dsal> | Eh, sort of. Declaring something is Better from an authority needs an argument. |
| 22:42:13 | <hololeap> | that's fair. although sometimes consistency is what matters and so _something_ has to be the pattern to follow |
| 22:42:25 | <dsal> | Don't use foldMap, don't use sum, don't use either, don't use unless, etc... are closer to cargo culting. |
| 22:42:28 | <monochrom> | Given a style guide, one can still understand why the guide makes sense normally, and when to make exceptions. |
| 22:42:56 | <monochrom> | Without a style guide, there are still a trillion "best practice"s to cargo-cult over. |
| 22:43:02 | × | waleee quits (~waleee@2001:9b0:216:8200:d457:9189:7843:1dbd) (Ping timeout: 260 seconds) |
| 22:43:12 | × | pfurla quits (~pfurla@2804:14d:5c81:4104:8d6b:77ca:adc:64ea) (Quit: gone to sleep. ZZZzzz…) |
| 22:43:15 | <mreh> | "best practice" - makes my skin crawl every time |
| 22:43:25 | <hololeap> | well, I can see how in general it could be a positive but taken too far it could be limiting |
| 22:44:10 | <dsal> | I was suggesting foldr vs. a foldl' of a flipped thing and said foldr is probably a better thing and got linked to that lexi-lambda bug thing about why foldl' is better when you're going to definitely use everything. Big explanation. Also said it often doesn't matter. Like in this case where there were ~5 things. |
| 22:44:26 | <dsal> | I end up rewriting stuff a lot because hlint blocks mycommit. |
| 22:44:42 | <Rembane_> | dsal: I suppose you're not allowed to turn off hlint? |
| 22:44:48 | <hololeap> | yeah that's lame |
| 22:45:19 | <monochrom> | Bloggers die die die. |
| 22:45:27 | <dsal> | Thing I used today that I had to rewrite: either, fromJust, error. In a test. Like, definitely fail if you can't do this setup thing that has to work. But OK, fine, it'll return a Maybe and then use the higher level error message thing to do roughly the same thing error does but I guess throwIO? |
| 22:45:39 | <hololeap> | but, I also see the other side, where writing something in terms of some super-advanced categorical viewpoint might make the code really hard to understand to outsiders |
| 22:45:41 | <dsal> | Turning of hlint will let me commit, but it'll still fail CI |
| 22:46:09 | <dsal> | hololeap: my "that's too fancy" thing right now is a record with a type variable instead of having two ~identical records. |
| 22:46:26 | <hololeap> | haha |
| 22:46:34 | <dsal> | Except the fields have different names and you have to copy all the values over and you have to write a test that makes sure you copied all the values over, etc... |
| 22:47:03 | × | Guest17 quits (~Guest17@eth-west-pareq2-46-193-4-100.wb.wifirst.net) (Ping timeout: 256 seconds) |
| 22:47:19 | <dsal> | But forest for trees. I wrote a test for the actual parser and found that 4/9 of the things being parsed couldn't take the actual input they expect. |
| 22:51:55 | <dsal> | I generally get lectured for writing a function in a test instead of copying data structures over (because good test code and good application code don't look similar). It's kind of funny. OK. But also you didn't write test coverage for this so maybe your principles can be oncall. |
| 22:52:02 | × | myShoggoth quits (~myShoggot@97-120-85-195.ptld.qwest.net) (Ping timeout: 268 seconds) |
| 22:53:09 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 22:53:17 | × | xff0x quits (~xff0x@2001:1a81:5377:a800:360f:89df:3dda:3328) (Ping timeout: 250 seconds) |
| 22:54:02 | → | xff0x joins (~xff0x@2001:1a81:5377:a800:3eaf:ed99:f02b:b5f2) |
| 22:55:21 | × | Tuplanolla quits (~Tuplanoll@91-159-69-50.elisa-laajakaista.fi) (Quit: Leaving.) |
| 22:55:28 | <arahael> | mreh: Isn't scotty unmaintained? |
| 22:56:55 | → | jmorris joins (uid433911@id-433911.hampstead.irccloud.com) |
| 22:57:02 | → | eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:d837:dc58:2ea7:10e8) |
| 23:00:19 | <maerwald> | PVP isn't particularly clear about whether "changing behavior of a function" counts as a breaking change or not... I guess I'm allowed to consider it one though |
| 23:00:41 | × | tromp quits (~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 23:01:11 | × | eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:d837:dc58:2ea7:10e8) (Ping timeout: 245 seconds) |
| 23:02:48 | <dsal> | arahael: unmaintained, or perfect? |
| 23:02:56 | <arahael> | dsal: Let me try and find the ticket. |
| 23:03:01 | <maerwald> | I think scotty blows up with large body sizes? |
| 23:03:25 | × | Skyfire quits (~pyon@user/pyon) (Quit: WeeChat 3.3) |
| 23:04:12 | <arahael> | OOh! As of... May this year, it has new maintainers! https://github.com/scotty-web/scotty/issues/274 |
| 23:04:50 | <arahael> | maerwald: Not too sure of PVP myself, I haven't properly read it... But I'd think we'd err on assuming something's breaking if we're not sure, in terms of versioning? |
| 23:05:51 | × | slack1256 quits (~slack1256@181.42.50.148) (Ping timeout: 250 seconds) |
| 23:06:00 | <arahael> | maerwald: I don't see any tickets against large body sizes. Incidentally, what's your go-to small webserver framework library? |
| 23:06:26 | <hpc> | it depends on what "changing behavior of a function" means |
| 23:06:28 | <arahael> | Since writing my own gemini server (just as a hypothetical test case, really), using Network-simple-tls, I'm suddenly inspired at how easy it is to write the. |
| 23:06:32 | <maerwald> | I avoid web servers like a plague... the only time I write them is if someone throws a lot of money at me |
| 23:06:37 | <hpc> | https://xkcd.com/1172/ |
| 23:06:41 | <maerwald> | and then most of the time servant is already in use |
| 23:06:42 | <monochrom> | "behaviour change" may count as bug fix or count as feature change. We normally say "point release" for bug fixes, even though there is a facetious logic saying that it "breaks" "backward" "compatibility". There is even an xkcd for that. |
| 23:07:14 | <monochrom> | For feature changes, there are also backward compatible ones and incompatible ones. |
| 23:07:23 | <maerwald> | monochrom: well, lets put it this way... if you change behavior of a function in *filepath*, would you rather have a point release or a major bump :p |
| 23:07:39 | <hpc> | it depends |
| 23:07:40 | <monochrom> | Yes hpc has got the xkcd in question :) |
| 23:07:50 | <maerwald> | or do you not mind your haskell program deleting different files now |
| 23:08:02 | <monochrom> | The only correct answer is "it depends". |
| 23:08:23 | <hpc> | haha |
| 23:08:30 | <hpc> | it's like scrollback is backwards today |
| 23:09:14 | × | burnsidesLlama quits (~burnsides@dhcp168-032.wadham.ox.ac.uk) (Remote host closed the connection) |
| 23:10:05 | → | Skyfire joins (~pyon@user/pyon) |
| 23:10:22 | × | Pickchea quits (~private@user/pickchea) (Quit: Leaving) |
| 23:10:27 | <monochrom> | You have to take specifications aka user expectations into account. |
| 23:10:57 | <monochrom> | And you have to judge what's facetious and what's reasonable. |
| 23:11:04 | <hololeap> | maerwald: wouldn't it be considered a breaking change if any input no longer produces the same output? |
| 23:11:38 | <maerwald> | I think it depends whether you truly consider it a bug or simply behavioral change |
| 23:11:42 | <hpc> | let's go full nihilist - any version bump is a breaking change because there might be a sha256 collision in its nix derivation :D |
| 23:11:48 | <monochrom> | If your old version took 10 seconds, your new version takes 1 second, all else being equal. |
| 23:12:28 | <monochrom> | Someone can facetiously say "this breaks my usage of your algorithm to time 10 seconds" but you should just give them the finger. This is not a breaking change. |
| 23:13:58 | <monochrom> | At the meta level: When will programmers understand that technicalities are never the only considerations? |
| 23:14:23 | <maerwald> | I'm thinking more: does major bump make people read changelogs? |
| 23:14:37 | <maerwald> | I don't read changelogs for minor version bumps |
| 23:14:42 | <hpc> | if that's your metric we don't need version numbers at all |
| 23:14:47 | <maerwald> | :D |
| 23:14:48 | <geekosaur> | does anything make people read changelogs? |
| 23:14:53 | <dsal> | I don't read logs until my tests break. |
| 23:15:09 | <monochrom> | Not me. "This is an exciting release!" makes me read changelogs. |
| 23:15:25 | <dsal> | I skip docs and go straight to the excitement. |
| 23:15:58 | <geekosaur> | "This is a release" makes me read changelogs, unless I've been following along with development (only a couple of packages, one non-Haskell) |
| 23:16:11 | <hpc> | i wait for #haskell to talk about it |
| 23:16:17 | <geekosaur> | but then, I'm weird. I also read docs. |
| 23:16:19 | <hpc> | i didn't even know ghc 9 was out until a week ago |
| 23:16:36 | <arahael> | How would I troubleshoot this issue when doing a 'cabal build --verbose'? dist-newstyle/src/amazonka-d53e9f8a972a20ec/amazonka: getDirectoryContents:openDirStream: does not exist (No such file or directory) |
| 23:16:44 | <monochrom> | I read changelogs when I think I need to know. I don't read when I think I don't need to know. |
| 23:16:48 | <dsal> | I would be so bored if I couldn't just roll everything forward and see what the day brings me. |
| 23:17:04 | <dsal> | arahael: Ooh, did the compiler delete the file? |
| 23:17:18 | <arahael> | dsal: How would I find out? :D |
| 23:17:23 | <maerwald> | arahael: did you specify an incorrect subdir? |
| 23:17:25 | <monochrom> | So, once again, you won't be able to find a correlation with any machine-checkable formal technicalities such as "version bump". |
| 23:17:34 | <arahael> | maerwald: That's possible! Let me check... |
| 23:17:41 | × | Skyfire quits (~pyon@user/pyon) (Quit: brb) |
| 23:17:50 | <maerwald> | it's lib/amazonka |
| 23:18:06 | <jackdk> | that repo did get rearranged. amazonka is now under lib/amazonka, amazonka-core is now under lib/amazonka-core, generated service amazonka-foo is under lib/services/amazonka-foo |
| 23:18:33 | <monochrom> | When are you going to learn that I make decisions based on like two dozen variables and most of them are fuzzy social constructs? |
| 23:18:54 | <arahael> | jackdk: Ah, thanks. |
| 23:18:56 | <Axman6> | jackdk's been on a "Get Amazonka 2.0 released" rampage for the last few months, and I am very thankful to him for it <3 |
| 23:18:59 | <monochrom> | This is where even machine learning performs better than human learning. |
| 23:19:10 | <Axman6> | What a top bloke |
| 23:19:56 | → | wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
| 23:19:56 | × | wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Changing host) |
| 23:19:56 | → | wroathe joins (~wroathe@user/wroathe) |
| 23:22:03 | <arahael> | jackdk: With cabal.project, can I specify 'subdir/*' to say, "use all these...", instead of specifying each individual package? |
| 23:22:14 | <maerwald> | I hope not :D |
| 23:22:33 | → | kupi joins (uid212005@id-212005.hampstead.irccloud.com) |
| 23:22:34 | <jackdk> | Axman6: it's frustrating when I say "I think I fixed your bug, can you test?" and people are like "well, er... I don't have the system to test on any more" - this is "the cloud", just stand up your own storage bucket or VM for a few minutes please |
| 23:22:42 | <maerwald> | file globbing is generally a plague in metadata |
| 23:23:32 | <arahael> | I've now got: cabal: sdist of amazonka-core-2.0: filepath wildcard 'README.md' does not |
| 23:23:41 | <jackdk> | arahael: I don't think so but if you're on cabal-install >= 3.2.0.0 you should be able to list multiple subdirs |
| 23:23:51 | <jackdk> | even though the key is still `subdir: ` |
| 23:23:56 | <arahael> | jackdk: Ah, neat! |
| 23:23:57 | <jackdk> | https://github.com/haskell/cabal/blob/8d959d0b17751a235052c05c3ba7eae2b8bb6ddc/cabal-install/changelog#L12-L27 |
| 23:24:30 | <maerwald> | arahael: that looks like a bug in the repo |
| 23:24:39 | <arahael> | maerwald: Mine or jackdk's? |
| 23:24:53 | <maerwald> | https://github.com/brendanhay/amazonka/blob/bc2f5d28def1ecb1d569b265a7a415c28307fd71/lib/amazonka-core/amazonka-core.cabal#L14 |
| 23:25:17 | <dsal> | Is amazonka 2 coming out soon/ |
| 23:25:27 | <dsal> | I updated some of my projects a bit back, but haven't been keeping up. |
| 23:25:38 | <Axman6> | Itis if you help test it dsal |
| 23:25:41 | <arahael> | maerwald: Ah, thanks. :D |
| 23:25:49 | <dsal> | Axman6: I did! Filed a bug and everyting. |
| 23:26:01 | <Axman6> | More test pls |
| 23:26:10 | <dsal> | I only found the one bug. :) |
| 23:26:17 | <jackdk> | I hope I fixed it |
| 23:26:20 | <dsal> | I use S3 a lot, some lambda, SQS. |
| 23:26:24 | <dsal> | Someone fixed it. |
| 23:26:29 | <jackdk> | phew |
| 23:26:30 | × | raehik1 quits (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 260 seconds) |
| 23:26:43 | <dsal> | At work I'm using SES, but that's not going to be updated any time soon. |
| 23:26:50 | × | max22- quits (~maxime@2a01cb088335980085c825298679dd8e.ipv6.abo.wanadoo.fr) (Quit: Leaving) |
| 23:26:55 | <jackdk> | dsal: the last PR for the milestone is aeson-2.0 support, then Brendan needs to regenerate docs, then we tag release and announce RC and give people a chance to catch up and find breakage, then hackage. |
| 23:27:01 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 245 seconds) |
| 23:27:20 | <dsal> | Neeat. So I guess I should test against that. |
| 23:27:49 | <jackdk> | He's been pretty responsive after I went through and triaged all the issues, but he's got some work stuff this week. |
| 23:28:06 | <arahael> | jackdk: I have to get back to work (On Swift, not haskell. *sigh*. But it pays the bills). Hopefully I'll find more time over the weekend to play with this, even if that means cloning your repo, as it looks like I might be able to fix things myself a bit. |
| 23:31:43 | → | burnsidesLlama joins (~burnsides@dhcp168-032.wadham.ox.ac.uk) |
| 23:31:45 | <jackdk> | arahael: https://github.com/brendanhay/amazonka/pull/714 |
| 23:32:30 | <jackdk> | the aeson-2.0 branch is rebased atop latest `main`, so have another crack when you're off work |
| 23:33:32 | → | eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:d837:dc58:2ea7:10e8) |
| 23:33:57 | <arahael> | jackdk: Nice, it gets me past that issue, I'll have to look at this after work later as I have to fiddle with versions and all that crap with my project. :) |
| 23:34:05 | <arahael> | Amazing work, I love IRC. :) |
| 23:34:08 | <arahael> | (And amazonka) |
| 23:35:38 | <Axman6> | If you ever meet jackdk, please buy him a beverage of his choice (i'll be doing this next time I'm in Brisbane... I should go to Brisbane). It's hard to state just how much work he's put into finally getting a release of Amazonka, lots of cat herding, lots of patching. I wish I had as much will |
| 23:38:02 | <jackdk> | thankfully it was a solid project to try and save - Brendan's generator code has either hit all the corner cases already or was built with a tremendous amount of foresight |
| 23:39:23 | → | justsomeguy joins (~justsomeg@user/justsomeguy) |
| 23:41:25 | × | pretty_dumm_guy quits (trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) (Quit: WeeChat 3.3) |
| 23:49:45 | → | zincy_ joins (~zincy@host86-181-60-139.range86-181.btcentralplus.com) |
| 23:54:53 | <arahael> | Woah - jack's aussie? |
| 23:57:29 | → | sunarch joins (uid526836@user/sunarch) |
All times are in UTC on 2021-11-25.