2025/02/12

Newest at the top

2025-02-12 22:22:57 +0100 <tomsmeding> but `cabal build` doesn't accept it
2025-02-12 22:22:38 +0100 <tomsmeding> merijn: --repl-options is also a thing on Setup.hs, I see
2025-02-12 22:21:55 +0100 <tomsmeding> :3
2025-02-12 22:21:20 +0100 <merijn> welp, my session if figuring out where the arguments are processed has ended, due to cat blocking my laptop xD
2025-02-12 22:21:19 +0100 <EvanR> inner fmap is the Maybe functor
2025-02-12 22:20:51 +0100 <EvanR> er
2025-02-12 22:20:36 +0100 <EvanR> two different instances
2025-02-12 22:20:29 +0100 <EvanR> outer fmap is function functor
2025-02-12 22:20:22 +0100 <EvanR> the inner fmap is using the list functor
2025-02-12 22:20:05 +0100 <merijn> Because I manually audited a "known-safe to toss" subset of flags and anything not there is kept
2025-02-12 22:20:03 +0100 <justsomeguy> tomsmeding: Why does the outer fmap get rewritten to (.) instead of the inner fmap?
2025-02-12 22:19:22 +0100 <merijn> tomsmeding: yeah, GHC only
2025-02-12 22:19:13 +0100 <merijn> tomsmeding: Maybe? I dunno :p
2025-02-12 22:19:08 +0100 <tomsmeding> for "ghc" specifically, right?
2025-02-12 22:19:04 +0100 <merijn> euouae: yeah .local is just a bunch of overrides merged into cabal.project
2025-02-12 22:19:03 +0100 <EvanR> justsomeguy, what fmap does depends on the particular instance of Functor, it may not be obvious in isolation which one you're dealing with. In this case "function" Functor
2025-02-12 22:19:02 +0100 <tomsmeding> merijn: and it should say that with --PROG-option(s)?
2025-02-12 22:18:42 +0100 <tomsmeding> the same goes for cabal.project.freeze, actually
2025-02-12 22:18:39 +0100 <merijn> tomsmeding: tbh it should probably just mentioned the tossed flags are the set of flags not affecting build artifacts, most notably warnings
2025-02-12 22:18:29 +0100 <euouae> right okay
2025-02-12 22:18:25 +0100 <tomsmeding> _conventionally_, it's your local configuration that you don't push
2025-02-12 22:18:15 +0100 <tomsmeding> euouae: cabal.project.local is just the same thing as cabal.project, but with a different name
2025-02-12 22:18:12 +0100 <euouae> It's not project versus dependencies -- it's programmer versus upstream
2025-02-12 22:17:58 +0100 <euouae> tomsmeding: the .local is a different thing isn't it? I'm going by what I know from CMake
2025-02-12 22:17:52 +0100 <tomsmeding> https://tomsmeding.com/vang/Qk3nO7/.psub.kWMobRelu5
2025-02-12 22:17:50 +0100 <tomsmeding> the only thing I changed is change "no longer" to "not", and change the "you should use" instruction to "--repl-options bypasses this tossing" :p
2025-02-12 22:17:41 +0100 <merijn> xD
2025-02-12 22:17:39 +0100 <merijn> tomsmeding: I think I closed that already
2025-02-12 22:17:12 +0100 <tomsmeding> merijn: the thing I edited in my diff?
2025-02-12 22:17:09 +0100 <euouae> justsomeguy: look up the Functor instances of Maybe and (->)
2025-02-12 22:16:51 +0100 <merijn> tomsmeding: But not very well
2025-02-12 22:16:46 +0100 <tomsmeding> justsomeguy: that outer fmap is (.), so it's `(fmap sum . Just) [1,2,3]`
2025-02-12 22:16:45 +0100 <merijn> tomsmeding: It is mentioned here: https://cabal.readthedocs.io/en/stable/cabal-commands.html#cmdoption-repl-options
2025-02-12 22:16:14 +0100 <tomsmeding> that solution is cabal.project.local, probably
2025-02-12 22:16:13 +0100 <justsomeguy> How does fmap (fmap sum) Just [1,2,3] turn into fmap sum (Just [1,2,3])? What happens to the inner fmap?
2025-02-12 22:15:59 +0100 <merijn> Is it very pretty? No, but I didn't (and still don't :p) know a better solution beyond "redesign the way every --PROG-opts work to correctly scope it to project or transitively)
2025-02-12 22:15:57 +0100 <tomsmeding> merijn: is that tossing documented somewhere
2025-02-12 22:15:51 +0100remedan(~remedan@ip-62-245-108-153.bb.vodafone.cz) remedan
2025-02-12 22:15:20 +0100ljdarj1ljdarj
2025-02-12 22:15:20 +0100ljdarj(~Thunderbi@user/ljdarj) (Ping timeout: 244 seconds)
2025-02-12 22:15:16 +0100tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
2025-02-12 22:15:04 +0100 <merijn> (instead of globally transitive)
2025-02-12 22:14:55 +0100 <merijn> euouae: Hence --repl-options bypass the flag tossing "for this project ONLY"
2025-02-12 22:14:46 +0100justsomeguy(~justsomeg@user/justsomeguy) justsomeguy
2025-02-12 22:14:38 +0100 <merijn> euouae: Then I quickly hit your problem "whoops, now I can't use warnings via cabal repl"
2025-02-12 22:14:23 +0100 <merijn> euouae: So the compromise was: any *commandline* ghc-option that does *not* affect the resulting binary gets tossed (so no rebuilding the transitive dependencies)
2025-02-12 22:14:01 +0100 <euouae> right, I'm following
2025-02-12 22:13:47 +0100 <merijn> euouae: It has one, but not on the commandline
2025-02-12 22:13:47 +0100 <tomsmeding> not on the command line; the `ghc-options` field in the .cabal file works fine
2025-02-12 22:13:36 +0100 <merijn> euouae: Dependencies are tagged with a hash of their version, source *and flags*