Logs: liberachat/#haskell
| 2021-06-21 13:19:02 | <stevenxl> | dminuoso: :-). I'll set my alarm for 8PM CEST. |
| 2021-06-21 13:19:05 | <merijn> | Starting somewhere around belgium running through the middle of Germany and then heading more north while approaching the baltics |
| 2021-06-21 13:19:40 | <merijn> | I'm not sure if licorice is big in the Baltics |
| 2021-06-21 13:19:58 | <Boomerang> | It is! :D |
| 2021-06-21 13:20:33 | <merijn> | Insert "Esti can into Nordics" joke :p |
| 2021-06-21 13:21:06 | <Boomerang> | Well the baltic states I don't know. But nordic countries/scandinavia definitely |
| 2021-06-21 13:21:34 | <merijn> | Yeah, that I know |
| 2021-06-21 13:23:24 | × | cheater quits (~Username@user/cheater) (Ping timeout: 250 seconds) |
| 2021-06-21 13:23:57 | → | cheater joins (~Username@user/cheater) |
| 2021-06-21 13:25:31 | × | kenran quits (~kenran@b2b-37-24-119-190.unitymedia.biz) (Quit: WeeChat info:version) |
| 2021-06-21 13:26:55 | → | machinedgod joins (~machinedg@135-23-192-217.cpe.pppoe.ca) |
| 2021-06-21 13:31:12 | × | azeem quits (~azeem@176.201.29.233) (Ping timeout: 250 seconds) |
| 2021-06-21 13:31:29 | → | AgentM joins (~agentm@pool-162-83-130-212.nycmny.fios.verizon.net) |
| 2021-06-21 13:32:18 | × | curiousgay quits (~quassel@178.217.208.8) (Read error: Connection reset by peer) |
| 2021-06-21 13:33:00 | → | chomwitt joins (~Pitsikoko@athedsl-351576.home.otenet.gr) |
| 2021-06-21 13:33:09 | → | curiousgay joins (~quassel@178.217.208.8) |
| 2021-06-21 13:34:21 | × | betelgeuse7 quits (~john2gb@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer) |
| 2021-06-21 13:35:06 | × | cheater quits (~Username@user/cheater) (Ping timeout: 250 seconds) |
| 2021-06-21 13:35:28 | → | cheater joins (~Username@user/cheater) |
| 2021-06-21 13:35:53 | → | betelgeuse7 joins (~john2gb@94-225-47-8.access.telenet.be) |
| 2021-06-21 13:37:23 | → | azeem joins (~azeem@176.201.29.233) |
| 2021-06-21 13:37:45 | → | pretty_dumm_guy joins (trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) |
| 2021-06-21 13:38:40 | × | betelgeuse7 quits (~john2gb@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer) |
| 2021-06-21 13:38:43 | → | brandonh joins (~brandonh@151.34.95.83) |
| 2021-06-21 13:40:13 | → | betelgeuse7 joins (~john2gb@94-225-47-8.access.telenet.be) |
| 2021-06-21 13:40:44 | × | curiousgay quits (~quassel@178.217.208.8) (Read error: Connection reset by peer) |
| 2021-06-21 13:43:04 | → | lavaman joins (~lavaman@98.38.249.169) |
| 2021-06-21 13:47:51 | × | lavaman quits (~lavaman@98.38.249.169) (Ping timeout: 265 seconds) |
| 2021-06-21 13:51:34 | × | cheater quits (~Username@user/cheater) (Ping timeout: 250 seconds) |
| 2021-06-21 13:52:05 | → | cheater joins (~Username@user/cheater) |
| 2021-06-21 13:55:33 | × | trcc quits (~trcc@2-104-60-169-cable.dk.customer.tdc.net) (Remote host closed the connection) |
| 2021-06-21 13:56:04 | → | trcc joins (~trcc@2-104-60-169-cable.dk.customer.tdc.net) |
| 2021-06-21 13:56:46 | × | tromp quits (~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 2021-06-21 13:56:46 | × | azeem quits (~azeem@176.201.29.233) (Ping timeout: 250 seconds) |
| 2021-06-21 13:57:11 | → | shimin joins (~liushimin@2001:250:5806:3dad:c501:9418:6d95:abfa) |
| 2021-06-21 13:57:19 | → | azeem joins (~azeem@176.201.29.233) |
| 2021-06-21 13:57:49 | → | xkuru joins (~xkuru@user/xkuru) |
| 2021-06-21 13:58:09 | ← | shimin parts (~liushimin@2001:250:5806:3dad:c501:9418:6d95:abfa) () |
| 2021-06-21 13:59:40 | → | shimin joins (~liushimin@2001:250:5806:3dad:c501:9418:6d95:abfa) |
| 2021-06-21 14:00:08 | → | tromp joins (~textual@dhcp-077-249-230-040.chello.nl) |
| 2021-06-21 14:00:55 | → | fendor_ joins (~fendor@77.119.129.45.wireless.dyn.drei.com) |
| 2021-06-21 14:00:58 | × | trcc quits (~trcc@2-104-60-169-cable.dk.customer.tdc.net) (Ping timeout: 268 seconds) |
| 2021-06-21 14:02:42 | → | is7s joins (~is7s@2a01:4b00:895f:3d00:3d61:e4ff:2003:3c7) |
| 2021-06-21 14:03:32 | → | jao joins (~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net) |
| 2021-06-21 14:05:39 | × | justBull quits (~justache@user/justache) (Remote host closed the connection) |
| 2021-06-21 14:06:36 | → | justBull joins (~justache@user/justache) |
| 2021-06-21 14:08:12 | → | argento joins (~argent0@168-227-97-34.ptr.westnet.com.ar) |
| 2021-06-21 14:08:47 | <kuribas> | Why does MaybeT has: (Functor m, Monad m) => Applicative (MaybeT m) |
| 2021-06-21 14:08:55 | × | albet70 quits (~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection) |
| 2021-06-21 14:08:57 | <kuribas> | instaed of Applicative m => Applicative (MaybeT m) ? |
| 2021-06-21 14:09:45 | <kuribas> | seems perfectly doable with applicative. |
| 2021-06-21 14:09:58 | <kuribas> | unless you want short-circuiting? |
| 2021-06-21 14:10:02 | → | albet70 joins (~xxx@2400:8902::f03c:92ff:fe60:98d8) |
| 2021-06-21 14:10:33 | <kuribas> | (guess I answered my own question) |
| 2021-06-21 14:10:41 | <Taneb> | kuribas: I think the short circuting is a pretty big part of why you'd use it |
| 2021-06-21 14:10:42 | <nshepperd> | it has to short circuit to match the monad instance |
| 2021-06-21 14:10:55 | × | albet70 quits (~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection) |
| 2021-06-21 14:11:07 | <nshepperd> | and also because that's what it's for i guess lol |
| 2021-06-21 14:11:08 | <kuribas> | Taneb: yeah |
| 2021-06-21 14:11:50 | → | fendor__ joins (~fendor@91.141.3.62.wireless.dyn.drei.com) |
| 2021-06-21 14:12:02 | → | albet70 joins (~xxx@2400:8902::f03c:92ff:fe60:98d8) |
| 2021-06-21 14:12:24 | <_73> | what do you guys mean by short-circuiting? |
| 2021-06-21 14:12:30 | ← | shimin parts (~liushimin@2001:250:5806:3dad:c501:9418:6d95:abfa) () |
| 2021-06-21 14:12:50 | <_73> | Just the behavior of the Maybe monad? |
| 2021-06-21 14:12:56 | × | albet70 quits (~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection) |
| 2021-06-21 14:13:37 | <kuribas> | _73: "Foo <$> eff1 <*> eff2" => eff2 is not executed if eff1 returns Nothing. |
| 2021-06-21 14:14:04 | → | albet70 joins (~xxx@2400:8902::f03c:92ff:fe60:98d8) |
| 2021-06-21 14:14:06 | × | waleee quits (~waleee@2001:9b0:216:8200:d457:9189:7843:1dbd) (Ping timeout: 250 seconds) |
| 2021-06-21 14:14:26 | × | fendor quits (~fendor@178.115.131.43.wireless.dyn.drei.com) (Ping timeout: 265 seconds) |
| 2021-06-21 14:14:54 | <_73> | ok I understand |
| 2021-06-21 14:14:56 | × | albet70 quits (~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection) |
| 2021-06-21 14:15:22 | → | fluffyballoon joins (~fluffybal@199.204.58.62) |
| 2021-06-21 14:15:33 | <lortabac> | I have an IO action and a mutable variable update that must be executed atomically. What is the best way to do it? |
| 2021-06-21 14:15:49 | × | chexum quits (~chexum@gateway/tor-sasl/chexum) (Ping timeout: 244 seconds) |
| 2021-06-21 14:16:00 | <lortabac> | I saw that some people use an IORef and unsafeInterleaveIO in this case |
| 2021-06-21 14:16:04 | → | albet70 joins (~xxx@2400:8902::f03c:92ff:fe60:98d8) |
| 2021-06-21 14:16:23 | <lortabac> | or maybe I should use an MVar |
| 2021-06-21 14:16:57 | × | albet70 quits (~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection) |
| 2021-06-21 14:17:20 | → | anon1 joins (~anon@94.140.141.53) |
| 2021-06-21 14:17:33 | <kuribas> | lortabac: you mean update the variable if the IO action didn't throw? |
| 2021-06-21 14:18:01 | <lortabac> | no, I mean that the variable should not be modified during the IO action |
| 2021-06-21 14:18:04 | → | albet70 joins (~xxx@2400:8902::f03c:92ff:fe60:98d8) |
| 2021-06-21 14:18:19 | <kuribas> | lortabac: atomicModifyIORef then? |
| 2021-06-21 14:18:35 | <Hecate> | lortabac: did you check the "Applicability" section here: https://hackage.haskell.org/package/base-4.15.0.0/docs/Control-Concurrent-MVar.html ? |
| 2021-06-21 14:18:55 | jackhill_ | is now known as jackhill |
| 2021-06-21 14:18:57 | × | albet70 quits (~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection) |
| 2021-06-21 14:19:04 | <lortabac> | atomicModifyIORef only works with a pure function, doesn't it? it requires unsafeInterleaveIO AFAIK |
| 2021-06-21 14:20:05 | → | albet70 joins (~xxx@2400:8902::f03c:92ff:fe60:98d8) |
| 2021-06-21 14:20:25 | <kuribas> | lortabac: I am not sure unsafeInterleaveIO will do what you want. |
| 2021-06-21 14:20:53 | <kuribas> | better use an MVar then |
| 2021-06-21 14:20:58 | × | albet70 quits (~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection) |
| 2021-06-21 14:21:49 | <kuribas> | because it doesn't say atomicModifyIORef locks the variable while evaluating the function. |
| 2021-06-21 14:21:49 | <lortabac> | kuribas: unsafeInterleaveIO defers the IO action until the result is used in the function passed to atomicModifyIORef |
| 2021-06-21 14:22:05 | → | albet70 joins (~xxx@2400:8902::f03c:92ff:fe60:98d8) |
| 2021-06-21 14:22:33 | <lortabac> | anyway, the idea is not mine, I just saw this trick a couple of times |
| 2021-06-21 14:22:42 | <kuribas> | lortabac: sounds like a very bad idea. |
| 2021-06-21 14:22:45 | <kuribas> | just use an MVar |
| 2021-06-21 14:23:22 | <lortabac> | you are right, I'll use an MVar |
| 2021-06-21 14:24:05 | <lortabac> | even if it turns out that the trick works reliably, it's still hard to understand for other people who read the code |
| 2021-06-21 14:24:36 | <kuribas> | lortabac: even if it works reliably now, the docs don't say it would work in the future. |
All times are in UTC.