Home liberachat/#haskell: Logs Calendar

Logs: liberachat/#haskell

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