2025/12/08

Newest at the top

2025-12-08 21:08:50 +0100jmcantrell_jmcantrell
2025-12-08 21:08:50 +0100jmcantrell_(~weechat@user/jmcantrell) jmcantrell
2025-12-08 21:04:37 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 246 seconds)
2025-12-08 20:59:44 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-12-08 20:55:18 +0100itaipu(~itaipu@168.121.97.28) itaipu
2025-12-08 20:54:37 +0100 <monochrom> Unboxed sums are available in very new versions of GHC.
2025-12-08 20:54:01 +0100machinedgod(~machinedg@d75-159-126-101.abhsia.telus.net) (Ping timeout: 264 seconds)
2025-12-08 20:51:22 +0100 <haskellbridge> <Morj> Hope my bunch of unstructured advice helped a bit
2025-12-08 20:51:14 +0100itaipu(~itaipu@168.121.97.28) (Ping timeout: 260 seconds)
2025-12-08 20:49:42 +0100 <haskellbridge> <Morj> You won't be able to use structures easily, so all your types will be turned into tuples (tuples can turn into unboxed tuples). And no easy way to get sum types, sadly
2025-12-08 20:49:13 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 264 seconds)
2025-12-08 20:47:51 +0100 <haskellbridge> <Morj> I don't think I ever used 'array' because I don't recognize the api at all. So the simple options is to take https://hackage-content.haskell.org/package/vector-0.13.2.0/docs/Data-Vector-Unboxed-Mutable.html - and use only functions beginning with 'unsafe'. You should also set {-# LANGUAGE Strict #-}, and compile with llvm backend
2025-12-08 20:43:57 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-12-08 20:42:42 +0100michalz(~michalz@185.246.207.201) (Ping timeout: 244 seconds)
2025-12-08 20:41:32 +0100 <haskellbridge> <Morj> I'm hearing ghc 9 made some things better
2025-12-08 20:41:21 +0100michalz_(~michalz@185.246.207.217)
2025-12-08 20:41:17 +0100 <haskellbridge> <Morj> It's been 5 years since I've written any high-perf myself >_>
2025-12-08 20:40:01 +0100 <haskellbridge> <Morj> I don't know any guides, but you can use this blog for inspiration: https://0xd34df00d.me/posts/2024/09/naive-nfas.html#good-ol-st
2025-12-08 20:40:01 +0100 <iqubic> This is my 6th year doing Advent of Code and I've used Haskell for a wide number of other projects too.
2025-12-08 20:39:44 +0100deptype(~deptype@2406:b400:3a:9d2f:9b7c:331e:bc52:4fc0) (Remote host closed the connection)
2025-12-08 20:39:37 +0100 <haskellbridge> <Morj> Good!
2025-12-08 20:39:15 +0100 <iqubic> I know Haskell very well, but I've never learned how to properly work with mutable data in Haskell.
2025-12-08 20:38:34 +0100 <haskellbridge> <Morj> Also, iqubic it just occurred to me, how good is your understanding of haskell? Are you just learning it for AOC or using this AOC to improve your high-perf skills?
2025-12-08 20:38:28 +0100 <monochrom> OK that too.
2025-12-08 20:37:48 +0100 <haskellbridge> <Morj> Or array?
2025-12-08 20:37:39 +0100 <monochrom> Oh, that would be vector.
2025-12-08 20:37:24 +0100 <haskellbridge> <Morj> I wanted to say that there are alternatives using unboxed values, but I was verifying which package it was
2025-12-08 20:36:43 +0100 <haskellbridge> <Morj> Sorry, I'm slow to type it out
2025-12-08 20:35:50 +0100 <iqubic> I'm not sure what you mean there.
2025-12-08 20:35:43 +0100 <haskellbridge> <Morj> Usually the biggest performance problems are laziness and boxed types. STArray only has boxed combinators, so if you're using it, your only chance is to set -XStrict and pray to the optimizer
2025-12-08 20:32:04 +0100 <haskellbridge> <Morj> iqubic "newtype IOArray i e = IOArray (STArray RealWorld i e)" - so there won't be gains to switching at least
2025-12-08 20:32:02 +0100Lord_of_Life_Lord_of_Life
2025-12-08 20:31:49 +0100itaipu(~itaipu@168.121.97.28) itaipu
2025-12-08 20:31:13 +0100itaipu(~itaipu@168.121.97.28) (Ping timeout: 264 seconds)
2025-12-08 20:30:49 +0100Lord_of_Life(~Lord@user/lord-of-life/x-2819915) (Ping timeout: 260 seconds)
2025-12-08 20:30:43 +0100Lord_of_Life_(~Lord@user/lord-of-life/x-2819915) Lord_of_Life
2025-12-08 20:28:23 +0100chele(~chele@user/chele) (Remote host closed the connection)
2025-12-08 20:28:20 +0100ljdarj1ljdarj
2025-12-08 20:28:20 +0100ljdarj(~Thunderbi@user/ljdarj) (Ping timeout: 244 seconds)
2025-12-08 20:28:07 +0100peterbecich(~Thunderbi@172.222.148.214) (Ping timeout: 240 seconds)
2025-12-08 20:27:03 +0100ljdarj1(~Thunderbi@user/ljdarj) ljdarj
2025-12-08 20:21:49 +0100Tuplanolla(~Tuplanoll@91-152-225-194.elisa-laajakaista.fi) Tuplanolla
2025-12-08 20:20:40 +0100 <iqubic> Or would it be better to work with an IOArray?
2025-12-08 20:20:09 +0100 <iqubic> Is there a good guide to working with STArrays and the ST monad. I wrote some code for Advent of Code last night, and it's really slow because I'm making many small changes to a large data structure and recreating the whole thing each time is slow.
2025-12-08 20:18:28 +0100mehbark(~mehbark@user/mehbark) mehbark
2025-12-08 20:18:28 +0100mehbark(~mehbark@joey.luug.ece.vt.edu) (Changing host)
2025-12-08 20:17:35 +0100mehbark(~mehbark@joey.luug.ece.vt.edu)
2025-12-08 20:17:17 +0100mehbark(~mehbark@user/mehbark) (Quit: insert leave message here)
2025-12-08 20:14:53 +0100mulk(~mulk@p5b1127bf.dip0.t-ipconnect.de) mulk
2025-12-08 20:10:50 +0100Googulator95(~Googulato@2a01-036d-0106-479c-a13d-10f6-324f-ace8.pool6.digikabel.hu)