Logs: liberachat/#haskell
| 2025-09-14 12:13:14 | → | haritz joins (~hrtz@user/haritz) |
| 2025-09-14 12:16:40 | → | zzz joins (~zero@user/zero) |
| 2025-09-14 12:17:23 | × | zzz quits (~zero@user/zero) (Remote host closed the connection) |
| 2025-09-14 12:17:40 | → | zzz joins (~zero@user/zero) |
| 2025-09-14 12:18:01 | × | zzz quits (~zero@user/zero) (Remote host closed the connection) |
| 2025-09-14 12:18:17 | → | zzz joins (~zero@user/zero) |
| 2025-09-14 12:19:28 | × | zzz quits (~zero@user/zero) (Remote host closed the connection) |
| 2025-09-14 12:19:43 | → | zzz joins (~zero@user/zero) |
| 2025-09-14 12:34:32 | × | merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 265 seconds) |
| 2025-09-14 12:38:53 | → | merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl) |
| 2025-09-14 12:43:41 | × | merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 250 seconds) |
| 2025-09-14 12:54:40 | → | merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl) |
| 2025-09-14 13:01:33 | × | petrichor quits (~jez@user/petrichor) (Ping timeout: 252 seconds) |
| 2025-09-14 13:30:01 | × | pavonia quits (~user@user/siracusa) (Quit: Bye!) |
| 2025-09-14 13:31:33 | → | tremon joins (~tremon@83.80.159.219) |
| 2025-09-14 13:31:48 | × | mulk quits (~mulk@pd95144c3.dip0.t-ipconnect.de) (Ping timeout: 252 seconds) |
| 2025-09-14 13:32:16 | → | mulk joins (~mulk@pd95144c3.dip0.t-ipconnect.de) |
| 2025-09-14 13:32:32 | × | chromoblob quits (~chromoblo@user/chromob1ot1c) (Read error: Connection reset by peer) |
| 2025-09-14 13:33:00 | → | petrichor joins (~jez@user/petrichor) |
| 2025-09-14 13:33:07 | ← | marinelli parts (~weechat@gateway/tor-sasl/marinelli) () |
| 2025-09-14 13:34:10 | → | chromoblob joins (~chromoblo@user/chromob1ot1c) |
| 2025-09-14 13:42:08 | → | michals joins (~michals@ip-109-40-49-74.web.vodafone.de) |
| 2025-09-14 13:43:29 | × | michals quits (~michals@ip-109-40-49-74.web.vodafone.de) (Client Quit) |
| 2025-09-14 13:45:03 | × | chromoblob quits (~chromoblo@user/chromob1ot1c) (Read error: Connection reset by peer) |
| 2025-09-14 13:45:22 | → | chromoblob joins (~chromoblo@user/chromob1ot1c) |
| 2025-09-14 13:45:47 | → | marinelli joins (~weechat@gateway/tor-sasl/marinelli) |
| 2025-09-14 13:49:35 | → | laxmik joins (~user@ip-109-40-49-74.web.vodafone.de) |
| 2025-09-14 13:54:40 | → | segfaultfizzbuzz joins (~segfaultf@12.172.219.17) |
| 2025-09-14 13:56:10 | → | sajenim joins (~sajenim@user/sajenim) |
| 2025-09-14 13:59:08 | × | segfaultfizzbuzz quits (~segfaultf@12.172.219.17) (Ping timeout: 256 seconds) |
| 2025-09-14 14:00:24 | × | MelodyOwO quits (~MelodyOwO@user/MelodyOwO) (Ping timeout: 252 seconds) |
| 2025-09-14 14:00:24 | × | merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 260 seconds) |
| 2025-09-14 14:07:07 | → | karenw_ joins (~karenw@user/karenw) |
| 2025-09-14 14:12:01 | → | merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl) |
| 2025-09-14 14:17:32 | × | merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 256 seconds) |
| 2025-09-14 14:24:54 | × | karenw_ quits (~karenw@user/karenw) (Quit: Deep into that darkness peering...) |
| 2025-09-14 14:25:28 | × | laxmik quits (~user@ip-109-40-49-74.web.vodafone.de) (Ping timeout: 248 seconds) |
| 2025-09-14 14:28:02 | → | merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl) |
| 2025-09-14 14:45:07 | → | tzh joins (~tzh@c-76-115-131-146.hsd1.or.comcast.net) |
| 2025-09-14 14:51:45 | → | tbahne joins (~tbahne@user/tbahne) |
| 2025-09-14 15:10:49 | × | wootehfoot quits (~wootehfoo@user/wootehfoot) (Quit: Leaving) |
| 2025-09-14 15:19:53 | ← | tbahne parts (~tbahne@user/tbahne) () |
| 2025-09-14 15:20:36 | × | trickard quits (~trickard@cpe-56-98-47-163.wireline.com.au) (Read error: Connection reset by peer) |
| 2025-09-14 15:20:49 | → | trickard_ joins (~trickard@cpe-56-98-47-163.wireline.com.au) |
| 2025-09-14 15:24:59 | → | tbahne joins (~tbahne@user/tbahne) |
| 2025-09-14 15:25:33 | × | tbahne quits (~tbahne@user/tbahne) (Client Quit) |
| 2025-09-14 15:33:26 | × | qqe quits (~qqq@185.54.23.100) (Remote host closed the connection) |
| 2025-09-14 15:33:40 | × | merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 245 seconds) |
| 2025-09-14 15:34:39 | → | lisbeths joins (uid135845@id-135845.lymington.irccloud.com) |
| 2025-09-14 15:35:54 | × | lisbeths quits (uid135845@id-135845.lymington.irccloud.com) (Client Quit) |
| 2025-09-14 15:39:18 | → | segfaultfizzbuzz joins (~segfaultf@12.172.219.17) |
| 2025-09-14 15:39:54 | → | merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl) |
| 2025-09-14 15:44:49 | × | merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 248 seconds) |
| 2025-09-14 15:49:30 | → | lxsameer joins (~lxsameer@Serene/lxsameer) |
| 2025-09-14 15:51:08 | → | mreh joins (~matthew@host86-146-25-35.range86-146.btcentralplus.com) |
| 2025-09-14 15:53:11 | <mreh> | data B' = forall a. B' (B a) |
| 2025-09-14 15:53:19 | <mreh> | instance Eq B' where (B' a) == (B' b) = ??? |
| 2025-09-14 15:53:34 | <mreh> | ^ can I do this legitimately with unsafeCoerce? |
| 2025-09-14 15:55:28 | <mreh> | that type parameter `a` in `B a` is just a phantom type |
| 2025-09-14 15:55:41 | → | merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl) |
| 2025-09-14 15:57:41 | <geekosaur> | doesn't look like one to me? although I'd have to see the definition of B to know for certain |
| 2025-09-14 15:57:58 | <geekosaur> | if it is phantom, then unsafeCoerce is fine |
| 2025-09-14 15:58:18 | <Leary> | mreh: If you control `B`, expose `sameB :: B a -> B b -> Bool` and use that. Otherwise, `unsafeCoerce` may be the only choice. |
| 2025-09-14 15:58:47 | <mreh> | Yeah, I've defined B, and it is a true phantom type |
| 2025-09-14 15:59:15 | <mreh> | Leary, I could define sameB, but I want to derive the definition where possible |
| 2025-09-14 16:00:03 | <Leary> | If `type role B phantom`, you can also just use regular safe `coerce`. |
| 2025-09-14 16:00:46 | <mreh> | really... |
| 2025-09-14 16:02:57 | <mreh> | is that some GHC magic? |
| 2025-09-14 16:03:47 | <geekosaur> | just the rules for implicit `Coercible` constraints. Phantom types are automatically compatible |
| 2025-09-14 16:05:16 | <c_wraith> | technically, Coercible is magic |
| 2025-09-14 16:05:23 | <c_wraith> | it doesn't have real instances |
| 2025-09-14 16:05:40 | <mreh> | well, it works |
| 2025-09-14 16:06:16 | <mreh> | (type checks) |
| 2025-09-14 16:06:38 | <c_wraith> | the nice thing about Coercible is that it's conservative. If coerce works, it's safe. |
| 2025-09-14 16:08:06 | <c_wraith> | ... at least from the type system POV. It may break internal invariants. |
| 2025-09-14 16:08:39 | <monochrom> | The type system is also very conservative. :) |
| 2025-09-14 16:09:31 | <monochrom> | OK, coerce is also conservative dynamically: in-memory representations are guaranteed to be identical. |
| 2025-09-14 16:09:55 | <mreh> | neat |
| 2025-09-14 16:13:47 | × | segfaultfizzbuzz quits (~segfaultf@12.172.219.17) (Ping timeout: 248 seconds) |
| 2025-09-14 16:21:40 | × | trickard_ quits (~trickard@cpe-56-98-47-163.wireline.com.au) (Read error: Connection reset by peer) |
| 2025-09-14 16:21:53 | → | trickard_ joins (~trickard@cpe-56-98-47-163.wireline.com.au) |
| 2025-09-14 16:27:50 | × | lxsameer quits (~lxsameer@Serene/lxsameer) (Ping timeout: 245 seconds) |
| 2025-09-14 16:30:06 | × | petrichor quits (~jez@user/petrichor) (Ping timeout: 244 seconds) |
| 2025-09-14 16:35:49 | → | sprotte24 joins (~sprotte24@p200300d16f0fa90034a8f8dc2eadcbb1.dip0.t-ipconnect.de) |
| 2025-09-14 16:57:56 | × | EvanR quits (~EvanR@user/evanr) (Quit: Leaving) |
| 2025-09-14 17:07:52 | × | merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 260 seconds) |
| 2025-09-14 17:10:12 | → | AndreiDuma joins (~AndreiDum@user/AndreiDuma) |
| 2025-09-14 17:18:49 | → | merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl) |
| 2025-09-14 17:30:30 | × | trickard_ quits (~trickard@cpe-56-98-47-163.wireline.com.au) (Ping timeout: 256 seconds) |
| 2025-09-14 17:32:55 | → | trickard_ joins (~trickard@cpe-56-98-47-163.wireline.com.au) |
| 2025-09-14 17:47:23 | × | zzz quits (~zero@user/zero) (Remote host closed the connection) |
| 2025-09-14 17:47:39 | → | zzz joins (~zero@user/zero) |
| 2025-09-14 17:48:19 | trickard_ | is now known as trickard |
| 2025-09-14 17:48:38 | <tomsmeding> | c_wraith: which means that if coerce can break your internal invariants, one should assign stricter roles with explicit role signatures :) |
| 2025-09-14 17:49:35 | <tomsmeding> | the tricky thing being that many people don't know about this so they don't do it so you can't really rely on being able to `coerce` safely |
| 2025-09-14 17:52:55 | → | humasect joins (~humasect@dyn-192-249-132-90.nexicom.net) |
| 2025-09-14 17:56:41 | × | AndreiDuma quits (~AndreiDum@user/AndreiDuma) (Quit: My Mac has gone to sleep. ZZZzzz…) |
| 2025-09-14 17:57:39 | → | AndreiDuma joins (~AndreiDum@user/AndreiDuma) |
| 2025-09-14 18:03:49 | zzz | is now known as yin |
| 2025-09-14 18:10:51 | → | petrichor joins (~jez@user/petrichor) |
All times are in UTC.