Newest at the top
2025-04-22 12:12:22 +0200 | euleritian | (~euleritia@77.23.248.47) |
2025-04-22 12:11:30 +0200 | euleritian | (~euleritia@dynamic-176-000-001-244.176.0.pool.telefonica.de) (Ping timeout: 268 seconds) |
2025-04-22 12:07:17 +0200 | <davean> | Liamzee: I'd say they're things to make it behave more expectedly, not safeguards. Its about surprise, not safety |
2025-04-22 12:05:27 +0200 | <davean> | Liamzee: I wouldn't say safeguards persay ... |
2025-04-22 12:03:46 +0200 | <haskellbridge> | <Liamzee> and accursed, that's in the bytestring lib, which disables a ton of safeguards around the normal unsafePerformIO |
2025-04-22 12:03:25 +0200 | L29Ah | (~L29Ah@wikipedia/L29Ah) () |
2025-04-22 12:03:19 +0200 | <haskellbridge> | <Liamzee> unsafePerformIO is supposed to mean that the onus of confirming that the action is safe is up to the developer |
2025-04-22 12:03:02 +0200 | <haskellbridge> | <Liamzee> if you were on the wechat, you'd know the user named accursedUnutterablePerformIO |
2025-04-22 12:00:41 +0200 | <haskellbridge> | <hellwolf> https://hackage.haskell.org/package/rec-def-0.2.2 |
2025-04-22 12:00:15 +0200 | <haskellbridge> | I remember in the RSet package, it "smuggles" a unsafePerformanceIO, but the interface and ergonomics of the library outweighs that little dirty secret |
2025-04-22 12:00:15 +0200 | <haskellbridge> | <hellwolf> if you can make it typesafe, I see a case for a library user to use it. |
2025-04-22 11:57:57 +0200 | <haskellbridge> | <Liamzee> better off doing it via proper IO, sequence, etc |
2025-04-22 11:57:49 +0200 | <haskellbridge> | <Liamzee> UnsafeImpure |
2025-04-22 11:56:29 +0200 | dhil | (~dhil@5.151.29.137) dhil |
2025-04-22 11:56:17 +0200 | <haskellbridge> | <Liamzee> it's just a way to smuggle unsafePerformIo, because that's what it basically is |
2025-04-22 11:56:08 +0200 | <haskellbridge> | <Liamzee> sorry, i'm just full of it |
2025-04-22 11:38:38 +0200 | inca | (~inca@pool-96-255-212-224.washdc.fios.verizon.net) (Ping timeout: 272 seconds) |
2025-04-22 11:33:27 +0200 | madjestic | (~madjestic@37.109.146.154) |
2025-04-22 11:32:55 +0200 | inca | (~inca@pool-96-255-212-224.washdc.fios.verizon.net) |
2025-04-22 11:22:22 +0200 | danso | (~danso@user/danso) danso |
2025-04-22 11:22:13 +0200 | inca | (~inca@pool-96-255-212-224.washdc.fios.verizon.net) (Ping timeout: 252 seconds) |
2025-04-22 11:17:39 +0200 | inca | (~inca@pool-96-255-212-224.washdc.fios.verizon.net) |
2025-04-22 11:17:29 +0200 | danso | (~danso@user/danso) (Quit: quittin time) |
2025-04-22 11:15:28 +0200 | <haskellbridge> | <hellwolf> it's interesting in some other context. You might want to checkout this thread: https://discourse.haskell.org/t/using-unsafeperformio-safely/4146 |
2025-04-22 11:14:57 +0200 | amadaluzia | (~amadaluzi@user/amadaluzia) (Remote host closed the connection) |
2025-04-22 11:12:33 +0200 | <haskellbridge> | <Liamzee> i'm just wondering if this degenerate haskell is at all useful or interesting |
2025-04-22 11:12:25 +0200 | <haskellbridge> | <Liamzee> i'm joking, this is just degenerate haskell |
2025-04-22 11:12:06 +0200 | jacopovalanzano | (~jacopoval@cpc151911-cove17-2-0-cust105.3-1.cable.virginm.net) (Ping timeout: 240 seconds) |
2025-04-22 11:11:47 +0200 | <tomsmeding> | that sounds counterproductive |
2025-04-22 11:11:44 +0200 | <tomsmeding> | ... which will throw an exception upon evaluation? |
2025-04-22 11:11:29 +0200 | <haskellbridge> | <Liamzee> I'll just return a bottom ;) |
2025-04-22 11:11:14 +0200 | <tomsmeding> | and then do my solution? :p |
2025-04-22 11:11:11 +0200 | <tomsmeding> | make sure the effect returns the field in question |
2025-04-22 11:11:03 +0200 | <haskellbridge> | <Liamzee> by evaluating the field |
2025-04-22 11:10:53 +0200 | <tomsmeding> | ew |
2025-04-22 11:10:51 +0200 | <tomsmeding> | and you want to trigger it by reading a particular field |
2025-04-22 11:10:50 +0200 | <haskellbridge> | <Liamzee> yeah |
2025-04-22 11:10:43 +0200 | <tomsmeding> | so the effect doesn't actually compute something, it is there _just_ for the side-effect? |
2025-04-22 11:10:23 +0200 | <tomsmeding> | ah |
2025-04-22 11:10:13 +0200 | <haskellbridge> | <Liamzee> that's intended to be a partially applied function |
2025-04-22 11:09:47 +0200 | <tomsmeding> | seq takes two arguments |
2025-04-22 11:09:47 +0200 | <haskellbridge> | <Liamzee> or rather pseq |
2025-04-22 11:09:42 +0200 | <tomsmeding> | without the seq |
2025-04-22 11:09:36 +0200 | <haskellbridge> | <Liamzee> theoretically you can embed seq (unsafePerformIO foo) into any type |
2025-04-22 11:09:28 +0200 | <tomsmeding> | if you make sure the `a` is not in a strict field, then the effect will only be run when you actually demand the result |
2025-04-22 11:09:26 +0200 | <haskellbridge> | <Liamzee> otherwise it doesn't have a warning that you're using unsafePerformIO |
2025-04-22 11:09:16 +0200 | <haskellbridge> | <Liamzee> but the impure wrapper is equivalent to unsafe |
2025-04-22 11:09:06 +0200 | <tomsmeding> | an impure `a` is just an `a` that happens to be created using unsafePerformIO |
2025-04-22 11:08:47 +0200 | <tomsmeding> | and then honestly you don't even need the Impure wrwapper |
2025-04-22 11:08:29 +0200 | <tomsmeding> | that's what my last suggestion does |