Logs: liberachat/#haskell
| 2025-11-21 14:49:34 | → | YoungFrog joins (~youngfrog@39.129-180-91.adsl-dyn.isp.belgacom.be) |
| 2025-11-21 14:54:22 | × | ljdarj quits (~Thunderbi@user/ljdarj) (Quit: ljdarj) |
| 2025-11-21 14:56:44 | → | ljdarj joins (~Thunderbi@user/ljdarj) |
| 2025-11-21 14:58:50 | → | jmcantrell joins (~weechat@user/jmcantrell) |
| 2025-11-21 15:01:02 | → | Googulator5 joins (~Googulato@team.broadbit.hu) |
| 2025-11-21 15:04:03 | × | Googulator83 quits (~Googulato@team.broadbit.hu) (Ping timeout: 250 seconds) |
| 2025-11-21 15:08:43 | → | Lycurgus joins (~juan@user/Lycurgus) |
| 2025-11-21 15:10:35 | <kuribas> | existentials are like dynamic types, but with dependent types I can compute on the unknown type part, without breaking static garantees, and without the need for a second language for type computations. |
| 2025-11-21 15:15:33 | <merijn> | how are existentials like dynamic types? |
| 2025-11-21 15:15:39 | <haskellbridge> | <loonycyborg> If you add Typeable constraint to your existentials you can query exact type at runtime too. |
| 2025-11-21 15:15:53 | <merijn> | You can kinda fake dynamic types with existentials, but they are far more principled |
| 2025-11-21 15:16:02 | <haskellbridge> | <loonycyborg> https://hackage.haskell.org/package/base-4.21.0.0/docs/Type-Reflection.html |
| 2025-11-21 15:16:20 | <haskellbridge> | <loonycyborg> you can do things like with C++ rtti then |
| 2025-11-21 15:16:32 | <kuribas> | merijn: yeah, it's the other way. |
| 2025-11-21 15:16:52 | <kuribas> | merijn: dynamic types are existentials, but not all existentials are like dynamic types. |
| 2025-11-21 15:17:11 | <merijn> | loonycyborg: You don't have to do that yourself, Dynamic exists already :) |
| 2025-11-21 15:17:13 | × | yin quits (~zero@user/zero) (Ping timeout: 246 seconds) |
| 2025-11-21 15:17:35 | → | yin joins (~zero@user/zero) |
| 2025-11-21 15:17:41 | <haskellbridge> | <Zemyla> Thinking about the free monoid now. |
| 2025-11-21 15:17:55 | <haskellbridge> | <loonycyborg> If you don't use type.reflection then typeclass entirely determines what can you do with existential |
| 2025-11-21 15:18:19 | <haskellbridge> | <loonycyborg> that way they're not dynamic types but more like C++ virtual functions and abstract classes |
| 2025-11-21 15:18:24 | <kuribas> | merijn: A dynamic language just means every value is (Tag t ** t), Where Tag :: Type -> Type |
| 2025-11-21 15:18:28 | <haskellbridge> | <Zemyla> newtype FreeMonoid a = FreeMonoid { runFreeMonoid :: forall r. Monoid r => (a -> r) -> r } |
| 2025-11-21 15:18:35 | × | sam113101 quits (~sam@modemcable200.189-202-24.mc.videotron.ca) (Read error: Connection reset by peer) |
| 2025-11-21 15:18:45 | → | machinedgod joins (~machinedg@d75-159-126-101.abhsia.telus.net) |
| 2025-11-21 15:19:08 | <kuribas> | merijn: but you hide the tag, and make primitive functions partial. |
| 2025-11-21 15:19:33 | <__monty__> | What can existentials express that dynamic types restrict? |
| 2025-11-21 15:20:16 | <haskellbridge> | <loonycyborg> It's the other way around |
| 2025-11-21 15:20:29 | <haskellbridge> | <loonycyborg> existentials can restric more than dynamic types |
| 2025-11-21 15:20:34 | <__monty__> | That's what I assumed. |
| 2025-11-21 15:20:38 | × | FragByte quits (~christian@user/fragbyte) (Quit: Quit) |
| 2025-11-21 15:21:25 | <__monty__> | But kuribas' comment of "dynamic types are existentials, but not all existentials are dynamic types" is the other way around, no? |
| 2025-11-21 15:21:29 | <haskellbridge> | <loonycyborg> but with Typeable/Dynamic they're equivalent |
| 2025-11-21 15:21:42 | <kuribas> | __monty__: the existential can carry more information and guarantees. Restrict is a funny word for "guarantee". |
| 2025-11-21 15:22:13 | <kuribas> | Like "Hashable t => t ** t" |
| 2025-11-21 15:22:27 | <kuribas> | It restrict t to a hashable, but it's also a guarantee that the type is hashable. |
| 2025-11-21 15:22:37 | → | FragByte joins (~christian@user/fragbyte) |
| 2025-11-21 15:23:21 | → | sam113101 joins (~sam@modemcable200.189-202-24.mc.videotron.ca) |
| 2025-11-21 15:26:04 | × | srazkvt quits (~sarah@user/srazkvt) (Quit: Konversation terminated!) |
| 2025-11-21 15:26:09 | × | sam113101 quits (~sam@modemcable200.189-202-24.mc.videotron.ca) (Read error: Connection reset by peer) |
| 2025-11-21 15:26:16 | <haskellbridge> | <loonycyborg> And if it's "(Hashable t, Dynamic t)" you can both use Hashable instance and reflect its exact type. |
| 2025-11-21 15:27:12 | <haskellbridge> | <loonycyborg> But obviously it can get less maintainable because compiler won't warn you if you change types in the origin but forget to update uses of Typeable. |
| 2025-11-21 15:30:04 | <haskellbridge> | <loonycyborg> And if it's "(Hashable t, Typeable t)" you can both use Hashable instance and reflect its exact type. |
| 2025-11-21 15:30:42 | × | tromp quits (~textual@2001:1c00:3487:1b00:697a:bc7a:f580:408c) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 2025-11-21 15:30:46 | → | Googulator75 joins (~Googulato@team.broadbit.hu) |
| 2025-11-21 15:31:15 | → | Sgeo joins (~Sgeo@user/sgeo) |
| 2025-11-21 15:31:16 | <haskellbridge> | <loonycyborg> btw does the matrix bridge support showing edits to IRC? |
| 2025-11-21 15:31:30 | <__monty__> | Basically repeats the entire message. |
| 2025-11-21 15:32:11 | → | sindu joins (~sindu@2.148.32.207.tmi.telenormobil.no) |
| 2025-11-21 15:32:38 | <haskellbridge> | <loonycyborg> It's better than losing them |
| 2025-11-21 15:33:00 | <lucabtz> | well losing them isnt really possible through IRC |
| 2025-11-21 15:33:08 | <lucabtz> | once sent it is sen |
| 2025-11-21 15:33:17 | <lucabtz> | s/sen/sent |
| 2025-11-21 15:33:46 | <haskellbridge> | <loonycyborg> I mean not showing in the first place :P |
| 2025-11-21 15:33:57 | × | Googulator5 quits (~Googulato@team.broadbit.hu) (Ping timeout: 250 seconds) |
| 2025-11-21 15:34:20 | × | timide quits (~timide@user/timide) (Remote host closed the connection) |
| 2025-11-21 15:35:00 | <lucabtz> | like not showing the edit? |
| 2025-11-21 15:35:16 | <lucabtz> | it would be cool if it only sent a diff with the edit |
| 2025-11-21 15:36:13 | <haskellbridge> | <loonycyborg> Indeed |
| 2025-11-21 15:36:21 | <haskellbridge> | <loonycyborg> but it's a hard ask honestly |
| 2025-11-21 15:36:40 | <__monty__> | As long as the diff is shorter that is. |
| 2025-11-21 15:36:55 | × | Googulator75 quits (~Googulato@team.broadbit.hu) (Quit: Client closed) |
| 2025-11-21 15:37:12 | → | Googulator75 joins (~Googulato@81.183.235.203) |
| 2025-11-21 15:37:31 | <haskellbridge> | <loonycyborg> But if things aren't context aware then it could be worse than showing it entirely |
| 2025-11-21 15:38:07 | × | Vajb quits (~Vajb@n4bl3ovzcj023yptes7-1.v6.elisa-mobile.fi) (Ping timeout: 264 seconds) |
| 2025-11-21 15:38:34 | <haskellbridge> | <loonycyborg> Like if you edit some message you made month ago in a busy channel :P |
| 2025-11-21 15:38:38 | × | FragByte quits (~christian@user/fragbyte) (Quit: Quit) |
| 2025-11-21 15:40:01 | <__monty__> | Maybe we should move to off-topic? What context could you provide other than a timestamp? And if just a timestamp, most people don't have theirs in UTC. |
| 2025-11-21 15:40:44 | → | FragByte joins (~christian@user/fragbyte) |
| 2025-11-21 15:41:58 | <haskellbridge> | <loonycyborg> I mean sometimes in IRC people correct themselves with conventions such as *something to correct a single word |
| 2025-11-21 15:42:01 | × | Frostillicus quits (~Frostilli@pool-71-174-119-69.bstnma.fios.verizon.net) (Ping timeout: 264 seconds) |
| 2025-11-21 15:42:15 | <haskellbridge> | <loonycyborg> and it requires context to understand |
| 2025-11-21 15:42:22 | <haskellbridge> | <loonycyborg> I don't think it can be replicated in general without human understanding |
| 2025-11-21 15:42:30 | → | polykernel_ joins (~polykerne@user/polykernel) |
| 2025-11-21 15:42:50 | <haskellbridge> | <loonycyborg> As in AI-complete problem |
| 2025-11-21 15:44:01 | × | weary-traveler quits (~user@user/user363627) (Remote host closed the connection) |
| 2025-11-21 15:44:07 | × | sindu quits (~sindu@2.148.32.207.tmi.telenormobil.no) (Ping timeout: 240 seconds) |
| 2025-11-21 15:44:55 | <lucabtz> | i think s/old/new would look cool, if the edit is of an old message it would be better to not send it to IRC instead because it would make little sense to see the edit here |
| 2025-11-21 15:45:13 | × | polykernel quits (~polykerne@user/polykernel) (Ping timeout: 246 seconds) |
| 2025-11-21 15:45:14 | polykernel_ | is now known as polykernel |
| 2025-11-21 15:45:18 | → | Vajb joins (~Vajb@n4bleudhyon0g5ws745-1.v6.elisa-mobile.fi) |
| 2025-11-21 15:45:39 | <lucabtz> | __monty__ is offtopic bridged to matrix too? |
| 2025-11-21 15:45:55 | <__monty__> | I assumed it was, but I don't *know*. |
| 2025-11-21 15:47:18 | × | raoul quits (~raoul@95.179.203.88) (Quit: Ping timeout (120 seconds)) |
| 2025-11-21 15:48:19 | <haskellbridge> | <Morj> I don't think it is, or at least it doesn't show up in the lobby |
| 2025-11-21 15:48:59 | → | corecaps joins (~igloo@user/corecaps) |
| 2025-11-21 15:49:13 | <geekosaur> | the bridge will show an edit with * if it's short enough and it's editing themost recent message the user sent; otherwise it resends the whole message |
| 2025-11-21 15:49:20 | × | fp quits (~Thunderbi@2001:708:20:1406::1370) (Ping timeout: 256 seconds) |
| 2025-11-21 15:49:25 | <geekosaur> | offtopic isn't bridged |
| 2025-11-21 15:49:40 | → | fp joins (~Thunderbi@2001:708:150:10::7e06) |
| 2025-11-21 15:49:53 | → | raoul joins (~raoul@95.179.203.88) |
| 2025-11-21 15:50:03 | <lucabtz> | geekosaur okay that's cool |
| 2025-11-21 15:50:26 | <chromoblob> | it should resend whole message with a * |
| 2025-11-21 15:51:01 | <geekosaur> | you can file a bug report for heisenbridge… |
| 2025-11-21 15:51:32 | EvanR_ | is now known as EvanR |
| 2025-11-21 15:52:08 | → | Frostillicus joins (~Frostilli@pool-71-174-119-69.bstnma.fios.verizon.net) |
| 2025-11-21 15:52:17 | → | tromp joins (~textual@2001:1c00:3487:1b00:697a:bc7a:f580:408c) |
| 2025-11-21 15:52:46 | → | sam113101 joins (~sam@modemcable200.189-202-24.mc.videotron.ca) |
| 2025-11-21 15:53:09 | <haskellbridge> | <Morj> I fear resending the whole message would lead to a lot of accidental spam |
| 2025-11-21 15:53:34 | <haskellbridge> | <Morj> Maybe would be nice to buffer a message for five seconds and apply edits to the buffer if you're fast enough |
All times are in UTC.