2025/12/16

Newest at the top

2025-12-16 13:08:29 +0100tromp(~textual@2001:1c00:3487:1b00:dc21:3bf3:aa50:6091) (Quit: My iMac has gone to sleep. ZZZzzz…)
2025-12-16 13:07:45 +0100merijn(~merijn@77.242.116.146) merijn
2025-12-16 13:01:10 +0100merijn(~merijn@77.242.116.146) (Ping timeout: 246 seconds)
2025-12-16 13:00:43 +0100somemathguy(~somemathg@user/somemathguy) (Quit: WeeChat 4.1.1)
2025-12-16 12:56:38 +0100merijn(~merijn@77.242.116.146) merijn
2025-12-16 12:54:13 +0100bggd(~bgg@user/bggd) bggd
2025-12-16 12:54:13 +0100bggd(~bgg@2a01:e0a:fd5:f510:fc9f:3e03:d92a:8f6) (Changing host)
2025-12-16 12:54:12 +0100bggd(~bgg@2a01:e0a:fd5:f510:fc9f:3e03:d92a:8f6)
2025-12-16 12:45:37 +0100merijn(~merijn@77.242.116.146) (Ping timeout: 264 seconds)
2025-12-16 12:40:56 +0100Maxdamantus(~Maxdamant@user/maxdamantus) Maxdamantus
2025-12-16 12:40:49 +0100merijn(~merijn@77.242.116.146) merijn
2025-12-16 12:40:11 +0100CiaoSen(~Jura@2a02:8071:64e1:da0:5a47:caff:fe78:33db) CiaoSen
2025-12-16 12:39:40 +0100Maxdamantus(~Maxdamant@user/maxdamantus) (Ping timeout: 255 seconds)
2025-12-16 12:35:23 +0100trickard_trickard
2025-12-16 12:28:27 +0100wootehfoot(~wootehfoo@user/wootehfoot) (Quit: Leaving)
2025-12-16 12:28:13 +0100merijn(~merijn@77.242.116.146) (Ping timeout: 264 seconds)
2025-12-16 12:23:05 +0100wootehfoot(~wootehfoo@user/wootehfoot) wootehfoot
2025-12-16 12:20:03 +0100xff0x(~xff0x@2405:6580:b080:900:4560:111e:4edd:d178)
2025-12-16 12:18:48 +0100ljdarj(~Thunderbi@user/ljdarj) (Read error: Connection reset by peer)
2025-12-16 12:15:57 +0100 <dminuoso> Or is that what you were hinting at?
2025-12-16 12:15:21 +0100 <dminuoso> Its what the whole build/foldr fusion works.
2025-12-16 12:14:31 +0100 <dminuoso> probie: Joke is on you, thats precisely what GHC does behind the scenes for you in a lot of places.
2025-12-16 12:14:11 +0100 <haskellbridge> <magic_rb> Sounds to me like things need to get more generic :)
2025-12-16 12:14:03 +0100 <dminuoso> And those problems are exactly the same as the above vector/list problems.
2025-12-16 12:14:00 +0100 <probie> (to clarify, my above statement is a joke, since that meets even fewer use cases than a list)
2025-12-16 12:13:54 +0100Pixi(~Pixi@user/pixi) Pixi
2025-12-16 12:13:43 +0100 <dminuoso> There's just so much impedance mismatching going on when interfacing with more than one library at a time.
2025-12-16 12:13:24 +0100 <dminuoso> Maybe it depends a bit on your problem domain, but in one of our projects there's quite a bit of `pack/unpack`, `fromStrict/ToString` or even combinations going on.
2025-12-16 12:13:17 +0100 <probie> Let's just cut out the middle man and pass the fold `data List a = forall b . List ((a -> b -> b) -> b -> b)`
2025-12-16 12:12:54 +0100 <haskellbridge> <loonycyborg> There's also Seq, and Set and lots of other containers depending on your needs
2025-12-16 12:11:06 +0100 <merijn> So someone wanting to pass a vector can easily convert to a list on demand
2025-12-16 12:10:51 +0100 <merijn> especially since Vector.toList is super cheap
2025-12-16 12:10:42 +0100 <merijn> dminuoso: A library should use whatever's best for said library
2025-12-16 12:10:15 +0100 <probie> Vector is very good for lots of things, and GHC does some very heavy lifting to make List good for lots of other things :p
2025-12-16 12:10:13 +0100 <haskellbridge> <magic_rb> Generally List is fine if you dont care about performance and arent storing it around or traversing it in any other direction than linearly forward
2025-12-16 12:09:46 +0100 <dminuoso> merijn: For a library thats tought unless you like to duplicate interfaces. And with duplicated things you get the typical `toLazy/fromLazy` nonsense when passing text between library portions.
2025-12-16 12:09:30 +0100 <merijn> Vector is very good for lots of things, and List good for lots of other things
2025-12-16 12:09:07 +0100 <haskellbridge> <loonycyborg> But still it's procedural state, in haskell you'd want a persistent structure in general. Unless you wanna go all out for a hotspot.
2025-12-16 12:09:06 +0100 <merijn> tbh, I'm a big fan of "just thinking about your data type choices" :p
2025-12-16 12:08:50 +0100 <dminuoso> Of course it's completely unreasonable for 2 major reasons.
2025-12-16 12:08:30 +0100 <dminuoso> Yeah if via backpack I could just swap between vector or list for a given package that would be ideal.
2025-12-16 12:08:26 +0100 <merijn> Depending on your usecase
2025-12-16 12:08:17 +0100 <merijn> loonycyborg: Vector has a bunch, there's ST, but also IO
2025-12-16 12:08:03 +0100 <dminuoso> Right backpack.
2025-12-16 12:07:57 +0100 <haskellbridge> <magic_rb> Yeah vector in ST
2025-12-16 12:07:55 +0100 <probie> dminuoso: backpack
2025-12-16 12:07:54 +0100 <merijn> dminuoso: backpack
2025-12-16 12:07:51 +0100 <haskellbridge> <magic_rb> ^
2025-12-16 12:07:51 +0100 <haskellbridge> <loonycyborg> in ST monad?
2025-12-16 12:07:48 +0100 <dminuoso> What was that cabal feature along the lines of OCaml functors called again?