2025/03/21

Newest at the top

2025-03-21 20:34:15 +0100 <EvanR> sim590, an impure function is a function that's not pure. A pure function is a (something) which only depends on the input and has side effects (that you care about)
2025-03-21 20:34:00 +0100 <mauke> sim590: if you're taking that approach, then IO is pure, too
2025-03-21 20:31:56 +0100 <mauke> <laurapigeon> [...] I'm new to IRC <- no worries, you're doing great so far
2025-03-21 20:31:37 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-03-21 20:31:31 +0100 <sim590> function calls had indeed different arguments. Therefore, am I right to say that only IO is impure and that for example, the State monad or even the Maybe monad are not unpure. They are indeed pure?
2025-03-21 20:31:29 +0100 <sim590> effects" of monads are actually just behind the scene just like with the do operator, it is syntaxic sugar, but in the end, there were no side effects, just some computation abstracted away, but this doesn't mean that in two separate calls of a function that is wrapped in a monad that we supply the same argument because the monad actually hides the abstracted some of the arguments and both
2025-03-21 20:31:27 +0100 <sim590> I read on multiple posts on the Web that we categorize a function as "unpure" if it has side-effects and furturemore that when calling that function twice, if it doesn't produce the "same" ouptput for the both calls, then it is not pure. To me, this can only apply to IO and only IO is unpure. I read some places that people assume Monads are unpure, but to me it is not the case, because "side
2025-03-21 20:29:03 +0100Square(~Square@user/square) Square
2025-03-21 20:24:34 +0100 <laurapigeon> oh a reading issue on my part, good to know this is here
2025-03-21 20:23:37 +0100xeno11(~xeno11@c-69-140-170-168.hsd1.de.comcast.net)
2025-03-21 20:22:30 +0100 <yushyin> laurapigeon: https://wiki.archlinux.org/title/Haskell#Static_linking for more information on the static approach
2025-03-21 20:22:03 +0100 <laurapigeon> getting ghc-static from extra made the original command work too, nice!
2025-03-21 20:20:56 +0100 <laurapigeon> Perfect- that worked, thanks a bunch
2025-03-21 20:20:49 +0100 <yushyin> yeah, ghc-static
2025-03-21 20:20:32 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds)
2025-03-21 20:20:31 +0100 <geekosaur> I think there's a package to get static libs for ghc bootlibs, but not for additional packages
2025-03-21 20:19:32 +0100 <geekosaur> arch and derivatives don't ship static libs, which ghc uses by default. add `-dynamic`
2025-03-21 20:19:06 +0100 <laurapigeon> Sorry if this is the wrong place or way to ask, I'm new to IRC
2025-03-21 20:18:31 +0100 <laurapigeon> terminated by the following: https://paste.tomsmeding.com/akUj6oxa
2025-03-21 20:18:30 +0100 <laurapigeon> Hello! I hope this is the right place to troubleshoot build issues- I'm on a fork of arch linux with the following packages from the arch repos: ghc, cabal-install, stack, haskell-language-server. I can access ghci, import modules and load my own .hs files. But when I try to run `ghc --make helloworld` in a folder with hello world I get the following error. When I try to run ghc-pkg check I get a series of errors like the following,
2025-03-21 20:15:49 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-03-21 20:14:33 +0100alfiee(~alfiee@user/alfiee) (Ping timeout: 245 seconds)
2025-03-21 20:13:30 +0100laurapigeon(~laura@205.124.7.51.dyn.plus.net)
2025-03-21 20:10:14 +0100alfiee(~alfiee@user/alfiee) alfiee
2025-03-21 20:06:30 +0100xeno11(~xeno11@c-69-140-170-168.hsd1.de.comcast.net) (Ping timeout: 240 seconds)
2025-03-21 20:04:46 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds)
2025-03-21 20:01:06 +0100forell(~forell@user/forell) (Ping timeout: 252 seconds)
2025-03-21 20:00:47 +0100caconym(~caconym@user/caconym) caconym
2025-03-21 20:00:03 +0100caconym(~caconym@user/caconym) (Quit: bye)
2025-03-21 20:00:02 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-03-21 19:58:02 +0100zzzyin
2025-03-21 19:57:58 +0100yin(~z@user/zero) (Read error: Connection reset by peer)
2025-03-21 19:56:56 +0100zzz(~z@user/zero) zero
2025-03-21 19:50:07 +0100Pixi`(~Pixi@user/pixi) (Read error: Connection reset by peer)
2025-03-21 19:49:00 +0100 <ski> .., until you at some point decide to use a `promise_equivalent_solutions' pragma (proof obligation) to claim that at this point you'll get the same result regardless of which representation was observed (or else you can let `main' be comitted-choice multi-deterministic, which you could also do for concurrency, with race conditions possibly affecting result)
2025-03-21 19:48:56 +0100Pixi(~Pixi@user/pixi) (Ping timeout: 272 seconds)
2025-03-21 19:48:50 +0100 <ski> .., the implementation arbitrarily choosed one representation) multi-deterministic (could semantically result in any one of one or more possible results), "tainting" the matching operation to be committed-choice multi-deterministic, ..
2025-03-21 19:48:50 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 248 seconds)
2025-03-21 19:48:38 +0100justsomeguy(~justsomeg@user/justsomeguy) (Ping timeout: 252 seconds)
2025-03-21 19:48:17 +0100 <ski> Mercury has (a bit) more explicit support for this, by allowing you to attach a user-defined equality (which is not just "another computable function", but is tied semantically to reasoning laws, and possibly used by some optimizations), causing the data constructor to become non-injective, matching on it is (committed-choice, ..
2025-03-21 19:47:57 +0100 <ski> laws for `Eq' could be `x == y = True => x = y' and `x == y = False => x =/= y', where `=' is semantic equality (an equivalence relation on the representations), and `=/=' is semantic inrquality (an apartness relation on the representations)
2025-03-21 19:47:24 +0100 <ski> e.g. for `Set's and `Map's considering ones which have the same elements/associations, but represented differently internally, asb being "equal". also not including imbalanced representations as valid representations of the semantic values. leading to having an abstract data type that is intended to be a quotient type of a subset type of the representation type
2025-03-21 19:47:16 +0100Pixi`(~Pixi@user/pixi) Pixi
2025-03-21 19:47:12 +0100 <ski> EvanR : "you could attempt to construe haskell's datatypes as presets because not all of them have a way to, at least decidably, know two values are equal" -- it's useful to consider an intended semantic equality, not necessarily decidable, on various Haskell data types
2025-03-21 19:45:22 +0100ash3en(~Thunderbi@89.56.182.235) (Ping timeout: 268 seconds)
2025-03-21 19:44:57 +0100gmg(~user@user/gehmehgeh) (Quit: Leaving)
2025-03-21 19:44:08 +0100peterbecich(~Thunderbi@syn-047-229-123-186.res.spectrum.com) (Ping timeout: 268 seconds)
2025-03-21 19:43:13 +0100target_i(~target_i@user/target-i/x-6023099) target_i
2025-03-21 19:31:56 +0100Clintgolfclaps.
2025-03-21 19:31:36 +0100alp(~alp@2001:861:8ca0:4940:4f32:5e1f:632d:94e1)