Logs: liberachat/#haskell
| 2021-08-19 00:01:05 | × | charukiewicz quits (~quassel@irouteince04.i.subnet.rcn.com) (Ping timeout: 248 seconds) |
| 2021-08-19 00:01:14 | → | charukiewicz joins (~quassel@irouteince04.i.subnet.rcn.com) |
| 2021-08-19 00:04:40 | × | raehik quits (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 240 seconds) |
| 2021-08-19 00:07:20 | × | machinedgod quits (~machinedg@24.105.81.50) (Read error: Connection reset by peer) |
| 2021-08-19 00:12:33 | → | machinedgod joins (~machinedg@24.105.81.50) |
| 2021-08-19 00:15:27 | × | lavaman quits (~lavaman@98.38.249.169) (Remote host closed the connection) |
| 2021-08-19 00:15:44 | → | lavaman joins (~lavaman@98.38.249.169) |
| 2021-08-19 00:20:06 | → | sleblanc joins (~sleblanc@user/sleblanc) |
| 2021-08-19 00:26:05 | × | lavaman quits (~lavaman@98.38.249.169) (Remote host closed the connection) |
| 2021-08-19 00:27:19 | × | wroathe quits (~wroathe@96-88-30-181-static.hfc.comcastbusiness.net) (Read error: Connection reset by peer) |
| 2021-08-19 00:27:26 | → | wroathe joins (~wroathe@96-88-30-181-static.hfc.comcastbusiness.net) |
| 2021-08-19 00:33:38 | × | doyougnu quits (~user@c-73-25-202-122.hsd1.or.comcast.net) (Remote host closed the connection) |
| 2021-08-19 00:38:11 | → | lavaman joins (~lavaman@98.38.249.169) |
| 2021-08-19 00:38:15 | × | sqrt2 quits (~ben@80-108-18-7.cable.dynamic.surfer.at) (Ping timeout: 268 seconds) |
| 2021-08-19 00:40:24 | → | vysn joins (~vysn@user/vysn) |
| 2021-08-19 00:40:50 | × | lbseale quits (~lbseale@user/ep1ctetus) (Read error: Connection reset by peer) |
| 2021-08-19 00:42:25 | → | sqrt2 joins (~ben@80-108-18-7.cable.dynamic.surfer.at) |
| 2021-08-19 00:43:29 | × | lavaman quits (~lavaman@98.38.249.169) (Remote host closed the connection) |
| 2021-08-19 00:46:40 | × | t0zy quits (~t0zy@49.207.220.61) (Ping timeout: 240 seconds) |
| 2021-08-19 00:47:51 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 2021-08-19 00:49:09 | → | t0zy joins (~t0zy@2402:3a80:d12:8770::2c65:2fe3) |
| 2021-08-19 00:52:01 | × | wroathe quits (~wroathe@96-88-30-181-static.hfc.comcastbusiness.net) (Ping timeout: 252 seconds) |
| 2021-08-19 00:55:40 | × | t0zy quits (~t0zy@2402:3a80:d12:8770::2c65:2fe3) (Ping timeout: 240 seconds) |
| 2021-08-19 00:56:06 | → | t0zy joins (~t0zy@49.207.220.61) |
| 2021-08-19 00:59:35 | → | slack1256 joins (~slack1256@191.126.227.64) |
| 2021-08-19 01:02:24 | → | bitmapper joins (uid464869@id-464869.tooting.irccloud.com) |
| 2021-08-19 01:14:14 | → | lavaman joins (~lavaman@98.38.249.169) |
| 2021-08-19 01:14:37 | × | Gurkenglas quits (~Gurkengla@dslb-002-203-144-156.002.203.pools.vodafone-ip.de) (Ping timeout: 268 seconds) |
| 2021-08-19 01:18:40 | × | lavaman quits (~lavaman@98.38.249.169) (Ping timeout: 240 seconds) |
| 2021-08-19 01:19:41 | × | Atum_ quits (~IRC@user/atum/x-2392232) (Quit: Atum_) |
| 2021-08-19 01:22:16 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 252 seconds) |
| 2021-08-19 01:22:59 | → | mmalter joins (~mmalter@88.171.43.194) |
| 2021-08-19 01:23:21 | → | wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
| 2021-08-19 01:23:54 | × | mmalter quits (~mmalter@88.171.43.194) (Client Quit) |
| 2021-08-19 01:25:06 | → | mmalter joins (~mmalter@88.171.43.194) |
| 2021-08-19 01:26:06 | × | mmalter quits (~mmalter@88.171.43.194) (Client Quit) |
| 2021-08-19 01:26:12 | → | justsomeguy joins (~justsomeg@user/justsomeguy) |
| 2021-08-19 01:26:49 | → | blankhart joins (~blankhart@pool-72-88-174-206.nwrknj.fios.verizon.net) |
| 2021-08-19 01:26:57 | × | Erutuon quits (~Erutuon@user/erutuon) (Ping timeout: 248 seconds) |
| 2021-08-19 01:27:16 | → | mmalter joins (~mmalter@88.171.43.194) |
| 2021-08-19 01:36:01 | × | machinedgod quits (~machinedg@24.105.81.50) (Ping timeout: 252 seconds) |
| 2021-08-19 01:43:36 | × | slack1256 quits (~slack1256@191.126.227.64) (Ping timeout: 268 seconds) |
| 2021-08-19 01:46:42 | × | xff0x quits (~xff0x@2001:1a81:5394:ea00:e22:1073:dc28:9e41) (Ping timeout: 245 seconds) |
| 2021-08-19 01:48:42 | → | xff0x joins (~xff0x@2001:1a81:53ce:4000:6528:22c2:50dd:57c1) |
| 2021-08-19 01:56:10 | × | derelict quits (~derelict@user/derelict) (Ping timeout: 240 seconds) |
| 2021-08-19 01:56:40 | × | ChanServ quits (ChanServ@services.libera.chat) (*.net *.split) |
| 2021-08-19 02:00:40 | → | Erutuon joins (~Erutuon@71-34-3-64.mpls.qwest.net) |
| 2021-08-19 02:05:30 | → | ChanServ joins (ChanServ@services.libera.chat) |
| 2021-08-19 02:05:30 | erbium.libera.chat | sets mode +o ChanServ |
| 2021-08-19 02:10:40 | × | td_ quits (~td@94.134.91.158) (Ping timeout: 240 seconds) |
| 2021-08-19 02:11:35 | × | mnrmnaugh quits (~mnrmnaugh@68.162.206.56) (Remote host closed the connection) |
| 2021-08-19 02:12:53 | → | mnrmnaugh joins (~mnrmnaugh@68.162.206.56) |
| 2021-08-19 02:12:54 | → | td_ joins (~td@94.134.91.25) |
| 2021-08-19 02:12:59 | → | derelict joins (~derelict@user/derelict) |
| 2021-08-19 02:20:13 | → | meinside_ joins (uid24933@id-24933.brockwell.irccloud.com) |
| 2021-08-19 02:21:25 | FinnElija | is now known as Guest603 |
| 2021-08-19 02:21:25 | → | finn_elija joins (~finn_elij@user/finn-elija/x-0085643) |
| 2021-08-19 02:21:25 | × | Guest603 quits (~finn_elij@user/finn-elija/x-0085643) (Killed (silver.libera.chat (Nickname regained by services))) |
| 2021-08-19 02:21:25 | finn_elija | is now known as FinnElija |
| 2021-08-19 02:22:07 | → | dzdcnfzd joins (~anthonygr@104.132.34.65) |
| 2021-08-19 02:22:40 | <dzdcnfzd> | I don't know if this question makes sense but I am trying to figure out what the name for a concept I'm sure exists is. |
| 2021-08-19 02:23:40 | <dzdcnfzd> | Imagine I wanted to write something like the bind operator but I wanted the first argument to be either an `a` or an `m a` |
| 2021-08-19 02:24:03 | <dzdcnfzd> | But I didn't want to have to wrap my value in an Either |
| 2021-08-19 02:25:17 | <dzdcnfzd> | Obviously there's overloading, but the thing about overloading is it doesn't necessarily generalize |
| 2021-08-19 02:26:28 | <dzdcnfzd> | If I have a function with 5 arguments, each of which can be either `m a` or `a`, that would imply 2^5 overloads (plus I don't think overloading would even work in haskell) |
| 2021-08-19 02:26:57 | <dzdcnfzd> | Is there a name for the language feature I'm trying to get at? |
| 2021-08-19 02:29:48 | <arahael> | dzdcnfzd: Define Functor or something for it, then. |
| 2021-08-19 02:29:58 | <arahael> | dzdcnfzd: Ie, an instance of Functor a. |
| 2021-08-19 02:30:12 | <monochrom> | Sorry, I am a very strong-and-static typing person, I cannot take that feature seriously, I would call it Telepathy, or at best The-Mess-Known-As-C++. |
| 2021-08-19 02:31:06 | <monochrom> | My solution is that I only need the standard bind, and I can always hand-write "return x >>= k" if x::X rather than x::M X. |
| 2021-08-19 02:31:55 | <dzdcnfzd> | monochrom: What is the benefit? |
| 2021-08-19 02:32:38 | <monochrom> | It does not need a high level of C++ telepathy? |
| 2021-08-19 02:32:46 | <monochrom> | KISS? |
| 2021-08-19 02:33:10 | <dzdcnfzd> | I have never heard the term C++ telepathy before |
| 2021-08-19 02:34:08 | <monochrom> | I gather that the mass would call it magic. |
| 2021-08-19 02:35:45 | <dzdcnfzd> | what I don't get is that it seems like you could do this very simply using a union type, but then you'd have to explicitly wrap everything in a union type |
| 2021-08-19 02:36:16 | <dzdcnfzd> | Which seems like a lot of boilerplate |
| 2021-08-19 02:36:33 | <dzdcnfzd> | arahael: I'm trying to come up with the code for it |
| 2021-08-19 02:37:18 | <arahael> | instance Functor a where fmap ... (something like that?) |
| 2021-08-19 02:37:46 | <dzdcnfzd> | No, I mean for the overloaded function |
| 2021-08-19 02:38:21 | <dzdcnfzd> | We have class Liftable m |
| 2021-08-19 02:38:31 | <dzdcnfzd> | where lift :: a -> m a↓ |
| 2021-08-19 02:40:02 | <monochrom> | "return :: Monad a => a -> m a" already exists. |
| 2021-08-19 02:41:11 | <dzdcnfzd> | Yeah, but that's sort of my point. If you want to write `overloader :: (a or m a) -> (b or m b) -> m c` I don't know what the type signature is |
| 2021-08-19 02:42:54 | <shachaf> | This is like when people in dynamically-typed languages have a function that takes either a thing or a list of things, based on type dispatch. |
| 2021-08-19 02:44:25 | × | justsomeguy quits (~justsomeg@user/justsomeguy) (Quit: WeeChat 3.2) |
| 2021-08-19 02:44:42 | <shachaf> | It mostly just makes worse APIs in that situation, and this sounds like the same sort of thing. |
| 2021-08-19 02:46:10 | × | zebrag quits (~chris@user/zebrag) (Quit: Konversation terminated!) |
| 2021-08-19 02:46:15 | <dzdcnfzd> | shachaf: I don't immediately see why it would make a worse API for a bind-like operator |
| 2021-08-19 02:46:59 | <Cale> | dzdcnfzd: There's a bit of a problem in that it can be ambiguous whether you meant to use ordinary (>>=), or you meant to apply return to the argument, in the case that it *does* have a type like m t, since that could still just be the a |
| 2021-08-19 02:47:35 | × | derelict quits (~derelict@user/derelict) (Quit: WeeChat 3.2) |
| 2021-08-19 02:47:36 | <Cale> | It's possible (and sometimes desirable) to have types like m (m a) |
| 2021-08-19 02:48:01 | <dzdcnfzd> | Cale: Agree. I can't figure out if that's a fatal objection though. There are lots of times where the compiler can't figure out the types without explicit typing, so maybe sometimes you just have to specify? |
| 2021-08-19 02:48:38 | <Cale> | Well, you could make this kind of thing happen with overlapping instances, but I wouldn't recommend it. |
| 2021-08-19 02:50:43 | <dzdcnfzd> | Cale: Interesting. Reading. |
| 2021-08-19 02:51:25 | <dzdcnfzd> | I should note I'm not trying to do this right now. I was just wondering about it because it seems like an interesting idea that could cut down on boilerplate |
| 2021-08-19 02:51:48 | <Cale> | When do you ever write return v >>= (\k -> ...) anyway? |
| 2021-08-19 02:51:57 | <dzdcnfzd> | Lots! |
| 2021-08-19 02:51:59 | <Cale> | You could always just have written let k = v in ... |
| 2021-08-19 02:52:31 | <Cale> | That's one of the monad laws, so it's guaranteed to be a valid simplification |
All times are in UTC.