Home liberachat/#haskell: Logs Calendar

Logs: liberachat/#haskell

←Prev  Next→ 1,804,105 events total
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.