2026/06/17

2026-06-17 00:00:02 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 256 seconds)
2026-06-17 00:01:00 +0000CiaoSen(~Jura@dynamic-046-114-193-162.46.114.pool.telefonica.de) (Ping timeout: 245 seconds)
2026-06-17 00:09:46 +0000xintron(~xintron@user/xintron) (Quit: Ping timeout (120 seconds))
2026-06-17 00:09:59 +0000xintron(~xintron@user/xintron) xintron
2026-06-17 00:10:16 +0000Natch(~natch@c-92-34-15-120.bbcust.telenor.se) (Read error: Connection reset by peer)
2026-06-17 00:10:23 +0000whereiseveryone(206ba86c98@2a03:6000:1812:100::2e4) (Read error: Connection reset by peer)
2026-06-17 00:10:28 +0000rselim(ce261f06ff@user/milesrout) (Read error: Connection reset by peer)
2026-06-17 00:10:30 +0000whereiseveryone(206ba86c98@2a03:6000:1812:100::2e4) jgart
2026-06-17 00:10:31 +0000mra(~mra@172-105-19-44.ip.linodeusercontent.com) (Read error: Connection reset by peer)
2026-06-17 00:10:33 +0000Franciman(~Franciman@mx1.fracta.dev) (Read error: Connection reset by peer)
2026-06-17 00:10:35 +0000cephei8(b8652603d7@user/cephei8) (Read error: Connection reset by peer)
2026-06-17 00:10:35 +0000evanrelf(3addc196af@2a03:6000:1812:100::f0) (Read error: Connection reset by peer)
2026-06-17 00:10:37 +0000rselim(ce261f06ff@user/milesrout) milesrout
2026-06-17 00:10:39 +0000mra(~mra@172-105-19-44.ip.linodeusercontent.com) mra
2026-06-17 00:10:40 +0000sp1ff``(~user@2601:1c2:4080:14c0:5df2:f2f4:8a07:70ec)
2026-06-17 00:10:42 +0000stefan-_(~cri@42dots.de) (Quit: ZNC 1.8.2+deb2ubuntu0.1 - https://znc.in)
2026-06-17 00:10:43 +0000evanrelf(3addc196af@2a03:6000:1812:100::f0) evanrelf
2026-06-17 00:10:43 +0000cephei8(b8652603d7@user/cephei8) cephei8
2026-06-17 00:10:47 +0000Franciman(~Franciman@mx1.fracta.dev) Franciman
2026-06-17 00:10:56 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-06-17 00:10:58 +0000stefan-_(~cri@42dots.de) stefan-_
2026-06-17 00:11:01 +0000arkeet`(arkeet@moriya.ca)
2026-06-17 00:11:05 +0000firesquidwao(~a@put.gay)
2026-06-17 00:11:50 +0000jayanth(~jayanth@static-98-115-128-109.phlapa.fios.verizon.net) (Ping timeout: 245 seconds)
2026-06-17 00:13:00 +0000tuxpaint(~a@2600:3c06::f03c:93ff:fea6:ef0e) (Read error: Connection reset by peer)
2026-06-17 00:13:07 +0000sp1ff`(~user@2601:1c2:4080:14c0:5df2:f2f4:8a07:70ec) (Ping timeout: 276 seconds)
2026-06-17 00:13:07 +0000arkeet(arkeet@moriya.ca) (Ping timeout: 276 seconds)
2026-06-17 00:13:07 +0000arkeet`arkeet
2026-06-17 00:15:11 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 244 seconds)
2026-06-17 00:15:34 +0000Natch(~natch@c-92-34-15-120.bbcust.telenor.se)
2026-06-17 00:26:17 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-06-17 00:33:13 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 248 seconds)
2026-06-17 00:40:59 +0000Axman6(~Axman6@user/axman6) Axman6
2026-06-17 00:43:00 +0000Axma66174(~Axman6@user/axman6) (Ping timeout: 245 seconds)
2026-06-17 00:44:21 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-06-17 00:49:18 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 265 seconds)
2026-06-17 00:56:42 +0000xff0x(~xff0x@2405:6580:b080:900:f9b3:ddf6:f890:9081) (Ping timeout: 246 seconds)
2026-06-17 00:59:43 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-06-17 01:04:28 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 276 seconds)
2026-06-17 01:15:06 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-06-17 01:18:44 +0000weary-traveler(~user@user/user363627) user363627
2026-06-17 01:19:27 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 246 seconds)
2026-06-17 01:23:36 +0000 <raincomplex> i think abstractions are most useful when they're clear and simple (and potentially hide a lot of complexity)
2026-06-17 01:23:42 +0000 <raincomplex> like: a function is a thing that takes some input values and produces an output value
2026-06-17 01:26:16 +0000 <raincomplex> a coroutine is a function that can yield values part way through its execution, and then be resumed
2026-06-17 01:30:18 +0000 <raincomplex> these are soft definitions that help me to understand when to use these things
2026-06-17 01:30:28 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-06-17 01:34:42 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 248 seconds)
2026-06-17 01:40:26 +0000bdkl(~bdkl@user/bdkl) bdkl
2026-06-17 01:43:09 +0000bdkl(~bdkl@user/bdkl) (Quit: bdkl)
2026-06-17 01:44:37 +0000RMSBach(~RMSBach@24.210.2.24) (Quit: ZNC 1.9.1 - https://znc.in)
2026-06-17 01:45:50 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-06-17 01:47:45 +0000RMSBach(~RMSBach@2603:6013:9b40:6f2::1040) RMSBach
2026-06-17 01:49:49 +0000tremon(~tremon@83-80-159-219.cable.dynamic.v4.ziggo.nl) (Remote host closed the connection)
2026-06-17 01:50:37 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 276 seconds)
2026-06-17 01:51:49 +0000xff0x(~xff0x@fsb6a9491c.tkyc517.ap.nuro.jp)
2026-06-17 01:56:55 +0000lisbeths(uid135845@id-135845.lymington.irccloud.com) (Quit: Connection closed for inactivity)
2026-06-17 02:01:11 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-06-17 02:05:34 +0000fgarcia(~lei@user/fgarcia) (Ping timeout: 276 seconds)
2026-06-17 02:06:48 +0000fgarcia(~lei@user/fgarcia) fgarcia
2026-06-17 02:07:45 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 246 seconds)
2026-06-17 02:07:58 +0000 <monochrom> I know how to formalize those too. But perhaps my point is not formalization. I mentioned "falsifiable", that's my real bottom line. It just happens that math is a very good way to do that.
2026-06-17 02:10:01 +0000 <monochrom> Here is an example. You have heard "survival of the fittest". I know how to falsify "this species survives". I don't know how to falsify "fit", unless we just say "it's just a synonym for survival", at which point we don't need it.
2026-06-17 02:10:03 +0000fgarcia(~lei@user/fgarcia) (Max SendQ exceeded)
2026-06-17 02:10:49 +0000 <monochrom> Likewise, I know how to falsify "foo is a monad". I don't know how to falsify "foo is a context", unless we just define "context = monad", at which point we don't need it either.
2026-06-17 02:11:24 +0000 <monochrom> BTW you don't really want "context = monad". Applicatives feel like "context" too.
2026-06-17 02:13:36 +0000wickedjargon(~user@64.114.24.74) wickedjargon
2026-06-17 02:15:26 +0000 <monochrom> I also mentioned "work with". I only know how to work with falsifiable definitions, that's why that's my bottom line. I have to be able to use something, not just "feel" that I "understand".
2026-06-17 02:16:49 +0000fgarcia(~lei@user/fgarcia) fgarcia
2026-06-17 02:19:24 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-06-17 02:19:25 +0000 <monochrom> Here is a true story. I saw https://medium.com/better-programming/monads-are-just-fancy-semicolons-ffe38401fd0e . Then I put it on an exam and the question was "show that it breaks a monad law". An example of being intuitive, makes you feel great, and falsified.
2026-06-17 02:23:26 +0000spew(~spew@user/spew) spew
2026-06-17 02:24:23 +0000 <monochrom> Ironically "semicolon" is a good idea on its own because people already expect associativity and identity of it. That I can work with.
2026-06-17 02:24:25 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 276 seconds)
2026-06-17 02:27:51 +0000 <monochrom> (But Kleisli arrow is the better destination if you want to start with semicolon.)
2026-06-17 02:28:49 +0000emilym(~Thunderbi@user/emilym) emilym
2026-06-17 02:32:49 +0000emilym(~Thunderbi@user/emilym) (Ping timeout: 245 seconds)
2026-06-17 02:34:45 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-06-17 02:38:42 +0000fgarcia(~lei@user/fgarcia) (Ping timeout: 256 seconds)
2026-06-17 02:39:10 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 254 seconds)
2026-06-17 02:40:41 +0000fgarcia(~lei@user/fgarcia) fgarcia
2026-06-17 02:50:07 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-06-17 02:51:44 +0000td_(~td@i53870916.versanet.de) (Ping timeout: 244 seconds)
2026-06-17 02:54:23 +0000wickedjargon(~user@64.114.24.74) (Ping timeout: 268 seconds)
2026-06-17 02:54:42 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 248 seconds)
2026-06-17 02:57:57 +0000jayanth(~jayanth@static-98-115-128-109.phlapa.fios.verizon.net)
2026-06-17 02:58:46 +0000machinedgod(~machinedg@d172-219-48-230.abhsia.telus.net) (Ping timeout: 252 seconds)
2026-06-17 03:01:38 +0000leppard(~noOne@ipservice-092-208-182-236.092.208.pools.vodafone-ip.de) (Ping timeout: 248 seconds)
2026-06-17 03:03:35 +0000Katarushisu6(~Katarushi@finc-20-b2-v4wan-169598-cust1799.vm7.cable.virginm.net) (Quit: Ping timeout (120 seconds))
2026-06-17 03:03:57 +0000Katarushisu6(~Katarushi@finc-20-b2-v4wan-169598-cust1799.vm7.cable.virginm.net)
2026-06-17 03:05:29 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-06-17 03:10:34 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 276 seconds)
2026-06-17 03:13:40 +0000Axman6352(~Axman6@user/axman6) Axman6
2026-06-17 03:15:55 +0000Axman6(~Axman6@user/axman6) (Ping timeout: 245 seconds)
2026-06-17 03:19:22 +0000m2(~travltux@user/travltux) (Quit: WeeChat 4.7.2)
2026-06-17 03:20:51 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-06-17 03:20:51 +0000synchromesh(~john@2406:5a00:247e:1500:a691:b1ff:0:f9d) (Read error: Connection reset by peer)
2026-06-17 03:22:35 +0000m(~travltux@user/travltux) travltux
2026-06-17 03:26:10 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 276 seconds)
2026-06-17 03:26:43 +0000synchromesh(~john@2406:5a00:247e:1500:a691:b1ff:0:f9d) synchromesh
2026-06-17 03:29:32 +0000oats(~oats@user/oats) (Read error: Connection reset by peer)
2026-06-17 03:29:47 +0000oats(~oats@user/oats) oats
2026-06-17 03:36:13 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-06-17 03:40:04 +0000xff0x(~xff0x@fsb6a9491c.tkyc517.ap.nuro.jp) (Ping timeout: 244 seconds)
2026-06-17 03:42:39 +0000xff0x(~xff0x@fsb6a9491c.tkyc517.ap.nuro.jp)
2026-06-17 03:43:43 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 276 seconds)
2026-06-17 03:46:06 +0000jayanth(~jayanth@static-98-115-128-109.phlapa.fios.verizon.net) (Ping timeout: 246 seconds)
2026-06-17 03:54:16 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-06-17 03:59:19 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 276 seconds)
2026-06-17 04:00:33 +0000xal(~xal@2607:9000:3000:11::fb8d:a8a3) (Read error: Connection reset by peer)
2026-06-17 04:01:43 +0000xal(~xal@mx1.xal.systems) xal
2026-06-17 04:02:21 +0000marinelli(~weechat@gateway/tor-sasl/marinelli) (Quit: marinelli)
2026-06-17 04:05:00 +0000Fijxu(~Fijxu@user/fijxu) (Ping timeout: 246 seconds)
2026-06-17 04:09:38 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-06-17 04:18:10 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 276 seconds)
2026-06-17 04:19:17 +0000vms14(~vms14@user/vms14) vms14
2026-06-17 04:19:27 +0000michalz(~michalz@185.246.207.200)
2026-06-17 04:20:33 +0000 <vms14> i'm playing with the state monad to make a stack
2026-06-17 04:20:36 +0000 <vms14> https://gitlab.com/ohmycat/oh/-/blob/main/oh.hs
2026-06-17 04:20:50 +0000 <vms14> although i have no idea of what i'm doing :D
2026-06-17 04:21:55 +0000 <EvanR> you used a lazy list as a stack so you're pretty much an expert now
2026-06-17 04:22:20 +0000 <EvanR> in many situations simply passing a list around works just as well
2026-06-17 04:22:45 +0000 <EvanR> e.g. in cases where you loop by recursing and never return
2026-06-17 04:24:01 +0000 <vms14> i will eventually need to make some sort of union type that allows me to put different types on the stack
2026-06-17 04:24:59 +0000 <vms14> but then i will have to unbox them it seems
2026-06-17 04:25:10 +0000 <EvanR> that there leads to dynamically typed
2026-06-17 04:25:40 +0000 <EvanR> which is in haskell leads to a lot of extraneous error calls when the dynamic type is not what you expect
2026-06-17 04:26:13 +0000 <EvanR> what you eventually need to do is encode your type system into the stack xD
2026-06-17 04:26:20 +0000 <EvanR> so it can never be invalid
2026-06-17 04:26:57 +0000 <vms14> actually i think using a stack and the state monad in general is a failure
2026-06-17 04:27:15 +0000 <EvanR> no?
2026-06-17 04:27:20 +0000 <vms14> and that i should find a way to make a rpn lang that does not need the stack, but it's an illusion made with function composition
2026-06-17 04:27:27 +0000 <vms14> although i have no idea how
2026-06-17 04:28:44 +0000 <vms14> still it's too soon and i need patience to learn the basics and get familiar with the language
2026-06-17 04:30:58 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-06-17 04:31:17 +0000 <monochrom> Someone did that and wrote a paper about it. They also posted on a mailing list to report that it took hours to type-check. One of those times showing that type inference takes exponential time.
2026-06-17 04:32:18 +0000 <monochrom> It was Okasaki IIRC.
2026-06-17 04:32:37 +0000 <monochrom> (the functional data structure guy)
2026-06-17 04:35:19 +0000Nosrep(~jimothy@user/nosrep) Nosrep
2026-06-17 04:35:30 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 265 seconds)
2026-06-17 04:38:59 +0000polykernel_(~polykerne@user/polykernel) polykernel
2026-06-17 04:40:09 +0000polykernel(~polykerne@user/polykernel) (Ping timeout: 248 seconds)
2026-06-17 04:40:10 +0000polykernel_polykernel
2026-06-17 04:42:19 +0000 <Leary> vms14: No need for union/sum/dynamic types: you can obtain a heterogeneous stack by recording the element types in the stack type. E.g. `data Stack xs where { Empty :: Stack '[]; Push :: x -> Stack xs -> Stack (x:xs) }`.
2026-06-17 04:45:07 +0000divlamir_(~divlamir@user/divlamir) divlamir
2026-06-17 04:46:21 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-06-17 04:46:25 +0000divlamir(~divlamir@user/divlamir) (Ping timeout: 245 seconds)
2026-06-17 04:46:25 +0000divlamir_divlamir
2026-06-17 04:50:01 +0000polykernel_(~polykerne@user/polykernel) polykernel
2026-06-17 04:50:33 +0000takuan(~takuan@d8D86B9E9.access.telenet.be)
2026-06-17 04:51:19 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 264 seconds)
2026-06-17 04:52:21 +0000leppard(~noOne@ipservice-092-208-182-236.092.208.pools.vodafone-ip.de) Inline
2026-06-17 04:52:37 +0000polykernel(~polykerne@user/polykernel) (Ping timeout: 276 seconds)
2026-06-17 04:52:37 +0000polykernel_polykernel
2026-06-17 04:57:07 +0000polykernel_(~polykerne@user/polykernel) polykernel
2026-06-17 04:59:43 +0000polykernel(~polykerne@user/polykernel) (Ping timeout: 264 seconds)
2026-06-17 04:59:43 +0000polykernel_polykernel
2026-06-17 05:01:44 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-06-17 05:06:15 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 246 seconds)
2026-06-17 05:08:43 +0000polykernel_(~polykerne@user/polykernel) polykernel
2026-06-17 05:10:10 +0000polykernel(~polykerne@user/polykernel) (Ping timeout: 276 seconds)
2026-06-17 05:10:10 +0000polykernel_polykernel
2026-06-17 05:17:07 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-06-17 05:17:29 +0000GdeVolpiano(~GdeVolpia@user/GdeVolpiano) (Ping timeout: 272 seconds)
2026-06-17 05:20:19 +0000Sgeo(~Sgeo@user/sgeo) (Read error: Connection reset by peer)
2026-06-17 05:23:39 +0000fgarcia(~lei@user/fgarcia) (Ping timeout: 245 seconds)
2026-06-17 05:24:28 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 276 seconds)
2026-06-17 05:25:43 +0000fgarcia(~lei@user/fgarcia) fgarcia
2026-06-17 05:31:37 +0000Nosrep(~jimothy@user/nosrep) (Quit: Konversation terminated!)
2026-06-17 05:32:01 +0000Nosrep(~jimothy@user/nosrep) Nosrep
2026-06-17 05:35:09 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-06-17 05:37:23 +0000polykernel_(~polykerne@user/polykernel) polykernel
2026-06-17 05:38:46 +0000polykernel(~polykerne@user/polykernel) (Ping timeout: 276 seconds)
2026-06-17 05:38:46 +0000polykernel_polykernel
2026-06-17 05:39:29 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 245 seconds)
2026-06-17 05:43:20 +0000 <mauke> type Stack = (,); empty :: Stack () (); empty = ((), ()); push :: a -> Stack b c -> Stack a (Stack b c); push = (,)
2026-06-17 05:46:40 +0000athan(~athan@98.150.216.93) athan
2026-06-17 05:47:59 +0000haritz(~hrtz@user/haritz) (Quit: ZNC 1.8.2+deb3.1+deb12u1 - https://znc.in)
2026-06-17 05:49:43 +0000polykernel_(~polykerne@user/polykernel) polykernel
2026-06-17 05:51:46 +0000polykernel(~polykerne@user/polykernel) (Ping timeout: 276 seconds)
2026-06-17 05:51:46 +0000polykernel_polykernel
2026-06-17 05:53:29 +0000peterbecich(~Thunderbi@71.84.33.135) peterbecich
2026-06-17 05:53:37 +0000athan(~athan@98.150.216.93) (Quit: Konversation terminated!)
2026-06-17 05:55:16 +0000polykernel_(~polykerne@user/polykernel) polykernel
2026-06-17 05:55:28 +0000ft(~ft@p4fc2ab3f.dip0.t-ipconnect.de) (Quit: leaving)
2026-06-17 05:56:58 +0000polykernel(~polykerne@user/polykernel) (Ping timeout: 276 seconds)
2026-06-17 05:56:58 +0000polykernel_polykernel
2026-06-17 06:01:19 +0000Axman6(~Axman6@user/axman6) Axman6
2026-06-17 06:01:20 +0000polykernel_(~polykerne@user/polykernel) polykernel
2026-06-17 06:02:10 +0000polykernel(~polykerne@user/polykernel) (Ping timeout: 276 seconds)
2026-06-17 06:02:10 +0000polykernel_polykernel
2026-06-17 06:04:00 +0000Axman6352(~Axman6@user/axman6) (Ping timeout: 265 seconds)
2026-06-17 06:04:27 +0000ouilemur(~jgmerritt@user/ouilemur) (Ping timeout: 244 seconds)
2026-06-17 06:06:18 +0000athan(~athan@98.150.216.93) athan
2026-06-17 06:07:57 +0000athan(~athan@98.150.216.93) (Client Quit)
2026-06-17 06:09:40 +0000athan(~athan@98.150.216.93) athan
2026-06-17 06:09:52 +0000polykernel_(~polykerne@user/polykernel) polykernel
2026-06-17 06:12:10 +0000peterbecich(~Thunderbi@71.84.33.135) (Ping timeout: 265 seconds)
2026-06-17 06:12:34 +0000polykernel(~polykerne@user/polykernel) (Ping timeout: 276 seconds)
2026-06-17 06:12:34 +0000polykernel_polykernel
2026-06-17 06:13:15 +0000wickedjargon(~user@64.114.24.74) wickedjargon
2026-06-17 06:14:34 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-06-17 06:16:55 +0000sord937(~sord937@gateway/tor-sasl/sord937) sord937
2026-06-17 06:18:23 +0000marinelli(~weechat@gateway/tor-sasl/marinelli) marinelli
2026-06-17 06:19:31 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 264 seconds)
2026-06-17 06:25:22 +0000 <probie> Is there a practical reason why Vector doesn't provide traverse, only mapM?
2026-06-17 06:29:03 +0000 <mauke> what
2026-06-17 06:29:23 +0000 <mauke> https://hackage-content.haskell.org/package/vector-0.13.2.0/docs/src/Data.Vector.html#line-455
2026-06-17 06:29:56 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-06-17 06:31:12 +0000ouilemur(~jgmerritt@user/ouilemur) ouilemur
2026-06-17 06:34:25 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 249 seconds)
2026-06-17 06:35:30 +0000 <probie> mauke: right, that was a half baked thought, I should have clarified that to `Data.Storable.Vector` and that I didn't mean actual `traverse` or `mapM`, I meant something like https://hackage-content.haskell.org/package/vector-0.13.2.0/docs/Data-Vector-Storable.html#v:mapM
2026-06-17 06:39:24 +0000GdeVolpiano(~GdeVolpia@user/GdeVolpiano) GdeVolpiano
2026-06-17 06:39:51 +0000 <mauke> not sure
2026-06-17 06:39:55 +0000 <mauke> maybe just an oversight?
2026-06-17 06:45:18 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-06-17 06:50:16 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 276 seconds)
2026-06-17 06:51:02 +0000acidjnk_new(~acidjnk@p200300d6e700e575892860f69683d6bb.dip0.t-ipconnect.de)
2026-06-17 06:51:21 +0000acidjnk(~acidjnk@p200300d6e700e575892860f69683d6bb.dip0.t-ipconnect.de) acidjnk
2026-06-17 06:51:37 +0000CiaoSen(~Jura@2a02:3038:2ea:f5a6:4e50:ddff:fe9b:8922) CiaoSen
2026-06-17 06:53:39 +0000 <probie> It's slightly annoying though, because I need it. Well, for now I've just used `foldr` and `fromList`
2026-06-17 06:56:55 +0000ThePenguin(~ThePengui@cust-95-80-28-221.csbnet.se) (Remote host closed the connection)
2026-06-17 07:00:40 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-06-17 07:01:19 +0000CiaoSen(~Jura@2a02:3038:2ea:f5a6:4e50:ddff:fe9b:8922) (Ping timeout: 276 seconds)
2026-06-17 07:02:36 +0000 <mauke> could define your own instance
2026-06-17 07:04:54 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 246 seconds)
2026-06-17 07:13:04 +0000 <probie> I don't need an instance (and one is impossible), just `Applicative f => (a -> f a) -> Data.Vector.Storable a -> f (Data.Vector.Storable a)`
2026-06-17 07:13:40 +0000 <probie> Well `(Storable a, Applicative f) => ...` but close enough
2026-06-17 07:17:18 +0000dtman34_(~dtman34@c-73-242-68-179.hsd1.mn.comcast.net) (Ping timeout: 244 seconds)
2026-06-17 07:17:46 +0000 <Axman6> I feel like that'll do weird things for f ~ []
2026-06-17 07:18:12 +0000peterbecich(~Thunderbi@71.84.33.135) peterbecich
2026-06-17 07:18:39 +0000 <Axman6> straverse (\x -> [x,x]) is going to allocate a lot of vectors
2026-06-17 07:21:57 +0000danza(~danza@user/danza) danza
2026-06-17 07:22:24 +0000dtman34(~dtman34@c-73-242-68-179.hsd1.mn.comcast.net) dtman34
2026-06-17 07:22:37 +0000 <probie> Sure, but it's not like we can't already do that with `Data.Vector.Storable.mapM (\x -> [x,x])`
2026-06-17 07:23:57 +0000 <probie> The context for this is really just that I want it play nicely with lenses
2026-06-17 07:27:29 +0000 <probie> So `f` is generally going to be something like `Identity` or `Const`
2026-06-17 07:32:23 +0000 <Leary> probie: <https://github.com/haskell/vector/issues/477>; <https://github.com/haskell/vector/blob/master/vector/src/Data/Vector/Storable.hs#L1819>.
2026-06-17 07:32:43 +0000leppard(~noOne@ipservice-092-208-182-236.092.208.pools.vodafone-ip.de) (Ping timeout: 264 seconds)
2026-06-17 07:37:07 +0000CiaoSen(~Jura@2a02:3038:2ea:f5a6:4e50:ddff:fe9b:8922) CiaoSen
2026-06-17 07:38:03 +0000 <mauke> oh, right. element constraints
2026-06-17 07:40:17 +0000tzh(~tzh@c-76-115-131-146.hsd1.or.comcast.net) (Quit: zzz)
2026-06-17 07:48:34 +0000GdeVolpiano(~GdeVolpia@user/GdeVolpiano) (Quit: WeeChat 4.7.2)
2026-06-17 07:51:19 +0000tabaqui(~tabaqui@167.71.80.236) (Ping timeout: 264 seconds)
2026-06-17 07:53:40 +0000merijn(~merijn@77.242.116.146) merijn
2026-06-17 07:53:51 +0000GdeVolpiano(~GdeVolpia@user/GdeVolpiano) GdeVolpiano
2026-06-17 07:55:17 +0000tabaqui(~tabaqui@167.71.80.236) tabaqui
2026-06-17 07:57:16 +0000Fijxu(~Fijxu@user/fijxu) fijxu
2026-06-17 08:10:26 +0000GdeVolpiano(~GdeVolpia@user/GdeVolpiano) (Ping timeout: 248 seconds)
2026-06-17 08:11:13 +0000GdeVolpiano(~GdeVolpia@user/GdeVolpiano) GdeVolpiano
2026-06-17 08:13:46 +0000__monty__(~toonn@user/toonn) toonn
2026-06-17 08:20:44 +0000peterbecich(~Thunderbi@71.84.33.135) (Ping timeout: 245 seconds)
2026-06-17 08:21:49 +0000nyc(~nyc@user/nyc) (Remote host closed the connection)
2026-06-17 08:22:34 +0000acidjnk_new3(~acidjnk@p200300d6e700e562d35fa9de45f72808.dip0.t-ipconnect.de)
2026-06-17 08:23:38 +0000emmanuelux(~em@user/emmanuelux) (Quit: bye)
2026-06-17 08:25:49 +0000acidjnk_new(~acidjnk@p200300d6e700e575892860f69683d6bb.dip0.t-ipconnect.de) (Ping timeout: 276 seconds)
2026-06-17 08:26:13 +0000acidjnk_new(~acidjnk@p200300d6e700e562d35fa9de45f72808.dip0.t-ipconnect.de)
2026-06-17 08:26:28 +0000acidjnk(~acidjnk@p200300d6e700e575892860f69683d6bb.dip0.t-ipconnect.de) (Ping timeout: 276 seconds)
2026-06-17 08:40:00 +0000Axma49636(~Axman6@user/axman6) Axman6
2026-06-17 08:42:26 +0000Axman6(~Axman6@user/axman6) (Ping timeout: 257 seconds)
2026-06-17 08:52:54 +0000 <jaror> If m is not IO or ST, then mapM and similar functions on vectors just convert to lists, apply mapM there and convert back to vectors.
2026-06-17 08:53:33 +0000 <jaror> It's pretty ugly imo
2026-06-17 08:54:57 +0000Raito_Bezarius(~Raito@libera/contributor/wireguard.tunneler.raito-bezarius) (Ping timeout: 244 seconds)
2026-06-17 09:02:09 +0000chele(~chele@user/chele) chele
2026-06-17 09:08:34 +0000Raito_Bezarius(~Raito@libera/contributor/wireguard.tunneler.raito-bezarius) Raito_Bezarius
2026-06-17 09:13:10 +0000Enrico63(~Enrico63@host-82-59-98-253.retail.telecomitalia.it) Enrico63
2026-06-17 09:17:10 +0000CiaoSen(~Jura@2a02:3038:2ea:f5a6:4e50:ddff:fe9b:8922) (Ping timeout: 244 seconds)
2026-06-17 09:24:48 +0000 <probie> jaror: So I guess that means I should just go with `fromList . traverse f . toList`
2026-06-17 09:25:10 +0000 <probie> uh, that should be `fmap fromList`
2026-06-17 09:28:15 +0000fun-safe-math(~fun-safe-@97-120-35-225.ptld.qwest.net) (Ping timeout: 252 seconds)
2026-06-17 09:28:52 +0000ski(~ski@90-224-14-130-no600.tbcn.telia.com) (Read error: Connection reset by peer)
2026-06-17 09:28:52 +0000fun-safe-math(~fun-safe-@97-120-35-225.ptld.qwest.net) fun-safe-math
2026-06-17 09:30:49 +0000ouilemur(~jgmerritt@user/ouilemur) (Ping timeout: 272 seconds)
2026-06-17 09:37:34 +0000ouilemur(~jgmerritt@user/ouilemur) ouilemur
2026-06-17 09:39:38 +0000ski(~ski@90-224-14-130-no600.tbcn.telia.com) ski
2026-06-17 09:51:40 +0000CiaoSen(~Jura@2a02:3038:2ea:f5a6:4e50:ddff:fe9b:8922) CiaoSen
2026-06-17 09:53:18 +0000wickedjargon(~user@64.114.24.74) (Remote host closed the connection)
2026-06-17 10:04:37 +0000xff0x(~xff0x@fsb6a9491c.tkyc517.ap.nuro.jp) (Ping timeout: 276 seconds)
2026-06-17 10:16:25 +0000chromoblob(~chromoblo@user/chromob1ot1c) (Ping timeout: 272 seconds)
2026-06-17 10:17:11 +0000chromoblob(~chromoblo@user/chromob1ot1c) chromoblob\0
2026-06-17 10:29:16 +0000hsw(~hsw@112-104-29-204.adsl.dynamic.seed.net.tw) (Remote host closed the connection)
2026-06-17 10:29:35 +0000hsw(~hsw@112-104-29-204.adsl.dynamic.seed.net.tw) hsw
2026-06-17 10:30:42 +0000ouilemur(~jgmerritt@user/ouilemur) (Ping timeout: 248 seconds)
2026-06-17 10:33:12 +0000ouilemur(~jgmerritt@user/ouilemur) ouilemur
2026-06-17 10:37:24 +0000ski(~ski@90-224-14-130-no600.tbcn.telia.com) (Ping timeout: 260 seconds)
2026-06-17 10:40:13 +0000emilym(~Thunderbi@user/emilym) emilym
2026-06-17 10:44:49 +0000emilym(~Thunderbi@user/emilym) (Ping timeout: 252 seconds)
2026-06-17 10:47:37 +0000ski(~ski@90-224-14-130-no600.tbcn.telia.com) ski
2026-06-17 10:55:19 +0000CiaoSen(~Jura@2a02:3038:2ea:f5a6:4e50:ddff:fe9b:8922) (Ping timeout: 276 seconds)
2026-06-17 11:03:12 +0000xff0x(~xff0x@2405:6580:b080:900:cd58:b179:e216:1b68)
2026-06-17 11:03:25 +0000Googulator55(~Googulato@team.broadbit.hu) (Quit: Client closed)
2026-06-17 11:03:56 +0000Googulator55(~Googulato@team.broadbit.hu)
2026-06-17 11:22:38 +0000danz66186(~danza@user/danza) danza
2026-06-17 11:24:55 +0000danza(~danza@user/danza) (Ping timeout: 264 seconds)
2026-06-17 11:25:37 +0000Enrico63(~Enrico63@host-82-59-98-253.retail.telecomitalia.it) (Quit: Client closed)
2026-06-17 11:29:07 +0000Lord_of_Life_(~Lord@user/lord-of-life/x-2819915) Lord_of_Life
2026-06-17 11:29:22 +0000Lord_of_Life(~Lord@user/lord-of-life/x-2819915) (Ping timeout: 248 seconds)
2026-06-17 11:29:38 +0000weary-traveler(~user@user/user363627) (Remote host closed the connection)
2026-06-17 11:31:58 +0000Lord_of_Life_Lord_of_Life
2026-06-17 11:37:40 +0000Axman6(~Axman6@user/axman6) Axman6
2026-06-17 11:39:40 +0000Axma49636(~Axman6@user/axman6) (Ping timeout: 245 seconds)
2026-06-17 11:41:17 +0000comerijn(~merijn@77.242.116.150) merijn
2026-06-17 11:44:13 +0000merijn(~merijn@77.242.116.146) (Ping timeout: 265 seconds)
2026-06-17 11:45:58 +0000weary-traveler(~user@user/user363627) user363627
2026-06-17 11:49:55 +0000fgarcia(~lei@user/fgarcia) (Ping timeout: 276 seconds)
2026-06-17 11:57:20 +0000comerijn(~merijn@77.242.116.150) (Ping timeout: 270 seconds)
2026-06-17 12:01:33 +0000merijn(~merijn@77.242.116.150) merijn
2026-06-17 12:03:32 +0000picnoir(~picnoir@about/aquilenet/vodoo/NinjaTrappeur) (Ping timeout: 244 seconds)
2026-06-17 12:16:06 +0000chexum(~quassel@gateway/tor-sasl/chexum) (Ping timeout: 245 seconds)
2026-06-17 12:16:41 +0000Googulator73(~Googulato@84-236-126-95.pool.digikabel.hu)
2026-06-17 12:18:04 +0000chexum(~quassel@gateway/tor-sasl/chexum) chexum
2026-06-17 12:19:47 +0000Googulator55(~Googulato@team.broadbit.hu) (Ping timeout: 245 seconds)
2026-06-17 12:19:52 +0000euphores(~SASL_euph@user/euphores) (Ping timeout: 268 seconds)
2026-06-17 12:20:12 +0000picnoir(~picnoir@about/aquilenet/vodoo/NinjaTrappeur) NinjaTrappeur
2026-06-17 12:25:50 +0000euphores(~SASL_euph@user/euphores) euphores
2026-06-17 12:40:11 +0000tremon(~tremon@83-80-159-219.cable.dynamic.v4.ziggo.nl) tremon
2026-06-17 12:41:24 +0000xff0x(~xff0x@2405:6580:b080:900:cd58:b179:e216:1b68) (Quit: xff0x)
2026-06-17 12:44:49 +0000xff0x(~xff0x@2405:6580:b080:900:9325:142:ba38:e294)
2026-06-17 12:45:39 +0000haritz(~hrtz@140.228.70.141)
2026-06-17 12:45:39 +0000haritz(~hrtz@140.228.70.141) (Changing host)
2026-06-17 12:45:39 +0000haritz(~hrtz@user/haritz) haritz
2026-06-17 12:50:21 +0000puke(~puke@user/puke) (Quit: puke)
2026-06-17 12:55:20 +0000Axma13884(~Axman6@user/axman6) Axman6
2026-06-17 12:57:10 +0000Axman6(~Axman6@user/axman6) (Ping timeout: 245 seconds)
2026-06-17 13:06:38 +0000rekahsoft(~rekahsoft@70.51.99.119) rekahsoft
2026-06-17 13:18:16 +0000jayanth(~jayanth@static-98-115-128-109.phlapa.fios.verizon.net)
2026-06-17 13:30:55 +0000dtman34(~dtman34@c-73-242-68-179.hsd1.mn.comcast.net) (Ping timeout: 264 seconds)
2026-06-17 13:36:34 +0000spew(~spew@user/spew) (Quit: nyaa~)
2026-06-17 13:41:58 +0000Axman6(~Axman6@user/axman6) Axman6
2026-06-17 13:43:33 +0000nyc(~nyc@user/nyc) nyc
2026-06-17 13:44:03 +0000Axma13884(~Axman6@user/axman6) (Ping timeout: 253 seconds)
2026-06-17 14:15:55 +0000noctux(~noctux@user/noctux) (Ping timeout: 264 seconds)
2026-06-17 14:16:40 +0000noctux(~noctux@user/noctux) noctux
2026-06-17 14:16:43 +0000mauke(~mauke@user/mauke) (Remote host closed the connection)
2026-06-17 14:17:17 +0000 <vms14> Leary: :0 that's awesome, but i do not understand it
2026-06-17 14:17:31 +0000preflex(~preflex@user/mauke/bot/preflex) (Read error: Connection reset by peer)
2026-06-17 14:17:32 +0000 <vms14> seens to be exactly what i wanted though
2026-06-17 14:17:43 +0000 <vms14> sorry i fell asleep yesterday
2026-06-17 14:18:09 +0000 <vms14> where can i read about this? i didn't see that in introductory books
2026-06-17 14:19:45 +0000preflex(~preflex@user/mauke/bot/preflex) preflex
2026-06-17 14:20:11 +0000 <merijn> vms14: Because it's not really introductory level, since you need either GADTs or ExistentialQuantification extension :)
2026-06-17 14:20:17 +0000mauke(~mauke@user/mauke) mauke
2026-06-17 14:21:00 +0000 <vms14> Generalised Algebraic Data Types
2026-06-17 14:21:06 +0000 <vms14> yeah i was asking google ai xd
2026-06-17 14:21:18 +0000jayanth(~jayanth@static-98-115-128-109.phlapa.fios.verizon.net) (#haskell)
2026-06-17 14:21:25 +0000 <vms14> i've read gadts many times but ignored it like "that will come later"
2026-06-17 14:21:37 +0000 <vms14> but seems to be what i want
2026-06-17 14:21:44 +0000jgee242(~jayanth@static-98-115-128-109.phlapa.fios.verizon.net)
2026-06-17 14:21:57 +0000 <vms14> ty
2026-06-17 14:22:09 +0000 <jaror> You also need DataKinds
2026-06-17 14:22:31 +0000 <jaror> To be able to use lists at the type level
2026-06-17 14:23:25 +0000 <jaror> I haven't read it but maybe Sandy Maguire's "thinking with types" covers this?
2026-06-17 14:23:27 +0000 <jaror> https://thinkingwithtypes.com/
2026-06-17 14:25:17 +0000 <vms14> i was considering that book because i thought mastering the type system of haskell would be good, but i am also impatient to start doing things with haskell
2026-06-17 14:25:49 +0000 <vms14> the only think i can do is a hello world xde
2026-06-17 14:25:58 +0000 <vms14> thing*
2026-06-17 14:28:26 +0000 <merijn> vms14: They're neat tricks that (when used with some restraint) can help a lot, but easier to wrap your head around when simpler stuff is more natural
2026-06-17 14:31:22 +0000 <mauke> :t interact $ unlines . words
2026-06-17 14:31:23 +0000 <lambdabot> IO ()
2026-06-17 14:31:35 +0000 <vms14> i thought i would have to rely on template haskell to generate boilerplate code for wrapping and unwrapping
2026-06-17 14:36:51 +0000 <vms14> jaror: there is a section in that book about gadts and right after it heterogeneous lists in page 55
2026-06-17 14:37:37 +0000 <vms14> also the book is relatively short, 200 pages
2026-06-17 14:37:41 +0000 <davean> vms14: why did you think you'd need template haskell and boilerplate wrapping and unwrapping?
2026-06-17 14:40:35 +0000 <vms14> davean: because i did not know of any other options
2026-06-17 14:40:54 +0000 <vms14> btw i get why i didn't keep reading the book, the book itself told em to fuck off
2026-06-17 14:41:03 +0000 <vms14> If you're a beginner Haskell programmer who feels like GHC argues with you too often, who often finds type errors inscrutable, then this book is probably not for you. Not yet
2026-06-17 14:41:07 +0000s00pcan(~s00pcan@71.214.104.207) (Ping timeout: 265 seconds)
2026-06-17 14:41:21 +0000 <vms14> i feel like it argues with me and i don't understand the type errors
2026-06-17 14:41:29 +0000 <merijn> vms14: tbf, that's probably accurate for stuff like GADTs/ExistentialQuantification
2026-06-17 14:41:42 +0000 <merijn> vms14: Those are good ways to get even more confusing type errors
2026-06-17 14:42:32 +0000 <vms14> davean: i thought i had to do something like data StackElement = SInt Int | SChar Char ... xd
2026-06-17 14:46:41 +0000 <davean> Even if you did, I don't see the worry about wrapping and unwrapping. I'm going to stop here though. I don't think I have the time to understand
2026-06-17 14:47:34 +0000 <merijn> vms14: Do you have some examples of type errors that you find confusing?
2026-06-17 14:47:51 +0000s00pcan(~s00pcan@71.214.104.207) s00pcan
2026-06-17 14:48:08 +0000 <merijn> vms14: tbh, you probably *do* have to do something like that in most cases
2026-06-17 14:48:33 +0000 <merijn> But in practice I've rarely found that to come up
2026-06-17 14:49:48 +0000 <davean> They might but I have no idea what they're scared of there.
2026-06-17 14:51:25 +0000 <vms14> merijn: any error in haskell is confusing to me until i get familiar with it
2026-06-17 14:52:27 +0000 <davean> I mean it might be a bit intimidating to consider if you can just coerce to wrap/unwrap, but its well determined if you can.
2026-06-17 14:54:30 +0000 <vms14> davean: i felt like there should be a way so i can just push an integer or a string without having to wrap them, so any other function will work with normal types, i would have made some sort of unpwrap function that extracts the value from the wrapper, but that felt like doing more work because you do not konw enough
2026-06-17 14:54:57 +0000 <davean> and what does your push function look like ...
2026-06-17 14:55:03 +0000 <vms14> Leary example seems to be exactly what i wanted, so i'll try to understand that and see how it works
2026-06-17 14:55:17 +0000 <davean> push :: Stackable a => a -> StackThing ()
2026-06-17 14:55:19 +0000 <davean> or whatever
2026-06-17 14:55:58 +0000 <vms14> i didn't really try that approach, i've only tried to learn how to use the state monad with a list of integers
2026-06-17 14:56:36 +0000 <vms14> that's what i made yesterday, without not really knowing too much what i was doing
2026-06-17 14:56:38 +0000 <vms14> https://gitlab.com/ohmycat/oh/-/blob/main/oh.hs
2026-06-17 14:57:13 +0000 <davean> class Stackable a where stackize :: a -> StackType
2026-06-17 14:57:21 +0000 <vms14> i need a stack that can hold multiple types and a dictionary to store words as functions and then is just read words and evaluate them
2026-06-17 14:57:27 +0000 <davean> If you REALLY want to abstract it
2026-06-17 14:58:44 +0000 <vms14> i still think that i should find a way to provide an illusion where there is no stack and is all function composition behind the scenes, but i have no idea how i would do that, especially for stuff like dup, drop, etc
2026-06-17 14:59:47 +0000 <vms14> for now i have to get familiar with the state monad and others, so it's fine
2026-06-17 15:07:49 +0000machinedgod(~machinedg@d172-219-48-230.abhsia.telus.net) machinedgod
2026-06-17 15:10:06 +0000ft(~ft@p4fc2ab3f.dip0.t-ipconnect.de) ft
2026-06-17 15:15:02 +0000puke(~puke@user/puke) puke
2026-06-17 15:21:10 +0000jgee242(~jayanth@static-98-115-128-109.phlapa.fios.verizon.net) (Ping timeout: 276 seconds)
2026-06-17 15:22:12 +0000lossless(~haze@user/ryou) ryou
2026-06-17 15:23:07 +0000ryou(~haze@user/ryou) (Ping timeout: 264 seconds)
2026-06-17 15:23:14 +0000danz66186(~danza@user/danza) (Read error: Connection reset by peer)
2026-06-17 15:23:18 +0000danza(~danza@user/danza) danza
2026-06-17 15:27:21 +0000polykernel_(~polykerne@user/polykernel) polykernel
2026-06-17 15:28:58 +0000polykernel(~polykerne@user/polykernel) (Ping timeout: 276 seconds)
2026-06-17 15:28:58 +0000polykernel_polykernel
2026-06-17 15:29:58 +0000ystael(~ystael@user/ystael) ystael
2026-06-17 15:32:06 +0000 <danza> cabal build --ghc-options "-Wall"
2026-06-17 15:32:14 +0000 <danza> is that the way to enable all warnings with cabal?
2026-06-17 15:32:28 +0000 <danza> i feel like some warnings are not being shown
2026-06-17 15:33:11 +0000 <merijn> danza: That enables them for all transitive dependencies. The best way is presumably to add it to ghc-options in your cabal project
2026-06-17 15:33:42 +0000 <merijn> Also note that -Wall is "almost all", there's a number of not recommended warnings not included
2026-06-17 15:33:58 +0000 <danza> cheers
2026-06-17 15:34:03 +0000 <danza> yes i just used -Weverything and that's too much
2026-06-17 15:34:40 +0000Axman6(~Axman6@user/axman6) (Ping timeout: 245 seconds)
2026-06-17 15:35:01 +0000 <merijn> Yeah, -Weverything is really not intended for real use :p
2026-06-17 15:35:26 +0000 <merijn> What makes you think some warnings aren't shown?
2026-06-17 15:36:06 +0000 <danza> okay found the problem. That works, but it will not retrigger compilation. I just have to run `cabal clean` before
2026-06-17 15:36:46 +0000 <merijn> Yeah, warnings don't invalidate the compile cache unless -Werror is active (unless someone wrecked my hard work)
2026-06-17 15:38:25 +0000 <merijn> danza: tbh, I basically **always** have -Wall set in my cabal and then set -Werror in cabal.project.local
2026-06-17 15:39:08 +0000 <danza> thanks for the additional info merijn
2026-06-17 15:39:22 +0000chromoblob(~chromoblo@user/chromob1ot1c) (Read error: Connection reset by peer)
2026-06-17 15:39:41 +0000chromoblob(~chromoblo@user/chromob1ot1c) chromoblob\0
2026-06-17 15:51:23 +0000synchromesh(~john@2406:5a00:247e:1500:a691:b1ff:0:f9d) (Read error: Connection reset by peer)
2026-06-17 15:54:54 +0000chele(~chele@user/chele) (Remote host closed the connection)
2026-06-17 15:55:30 +0000merijn(~merijn@77.242.116.150) (Ping timeout: 248 seconds)
2026-06-17 15:57:16 +0000synchromesh(~john@2406:5a00:247e:1500:a691:b1ff:0:f9d) synchromesh
2026-06-17 15:58:55 +0000AlexZenon(~alzenon@85.174.182.219) (Ping timeout: 245 seconds)
2026-06-17 15:58:55 +0000Alex_delenda_est(~al_test@85.174.182.219) (Ping timeout: 245 seconds)
2026-06-17 15:59:29 +0000AlexNoo(~AlexNoo@85.174.182.219) (Ping timeout: 245 seconds)
2026-06-17 15:59:36 +0000AlexNoo(~AlexNoo@178.34.161.132)
2026-06-17 16:03:25 +0000polykernel_(~polykerne@user/polykernel) polykernel
2026-06-17 16:05:22 +0000polykernel(~polykerne@user/polykernel) (Ping timeout: 276 seconds)
2026-06-17 16:05:22 +0000polykernel_polykernel
2026-06-17 16:06:34 +0000pavonia(~user@user/siracusa) (Quit: Bye!)
2026-06-17 16:07:07 +0000danza(~danza@user/danza) (Remote host closed the connection)
2026-06-17 16:15:47 +0000polykernel_(~polykerne@user/polykernel) polykernel
2026-06-17 16:17:49 +0000polykernel(~polykerne@user/polykernel) (Ping timeout: 245 seconds)
2026-06-17 16:17:49 +0000polykernel_polykernel
2026-06-17 16:18:17 +0000Vajb(~Vajb@n4fsyxesh0a4t8vm6z0-1.v6.elisa-mobile.fi) (Ping timeout: 248 seconds)
2026-06-17 16:18:28 +0000CryptLab(~NSA@171.33.191.94) (Read error: Connection reset by peer)
2026-06-17 16:20:09 +0000CryptLab(~NSA@171.33.191.92) CommanderBond007
2026-06-17 16:27:34 +0000Vajb(~Vajb@n722b5iomobz6966sly-1.v6.elisa-mobile.fi)
2026-06-17 16:34:42 +0000sord937(~sord937@gateway/tor-sasl/sord937) (Quit: sord937)
2026-06-17 16:39:35 +0000tzh(~tzh@c-76-115-131-146.hsd1.or.comcast.net)
2026-06-17 16:41:32 +0000puke(~puke@user/puke) (Read error: Connection reset by peer)
2026-06-17 16:41:43 +0000puke(~puke@user/puke) puke
2026-06-17 16:43:34 +0000vanishingideal(~vanishing@user/vanishingideal) vanishingideal
2026-06-17 16:55:38 +0000AlexNoo(~AlexNoo@178.34.161.132) (Quit: Leaving)
2026-06-17 17:00:34 +0000puke(~puke@user/puke) (Remote host closed the connection)
2026-06-17 17:00:48 +0000puke(~puke@user/puke) puke
2026-06-17 17:00:48 +0000machinedgod(~machinedg@d172-219-48-230.abhsia.telus.net) (Ping timeout: 265 seconds)
2026-06-17 17:02:25 +0000machinedgod(~machinedg@d108-173-95-19.abhsia.telus.net) machinedgod
2026-06-17 17:07:28 +0000dtman34(~dtman34@c-73-242-68-179.hsd1.mn.comcast.net) dtman34
2026-06-17 17:08:59 +0000AlexNoo(~AlexNoo@178.34.161.132)
2026-06-17 17:12:17 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-06-17 17:19:18 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 256 seconds)
2026-06-17 17:22:26 +0000AlexZenon(~alzenon@178.34.161.132)
2026-06-17 17:30:20 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-06-17 17:31:37 +0000Nosrep(~jimothy@user/nosrep) (Quit: Konversation terminated!)
2026-06-17 17:32:02 +0000Nosrep(~jimothy@user/nosrep) Nosrep
2026-06-17 17:34:09 +0000ouilemur(~jgmerritt@user/ouilemur) (Ping timeout: 265 seconds)
2026-06-17 17:35:00 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds)
2026-06-17 17:36:13 +0000ouilemur(~jgmerritt@user/ouilemur) ouilemur
2026-06-17 17:45:42 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-06-17 17:49:45 +0000Alex_delenda_est(~al_test@178.34.161.132)
2026-06-17 17:54:11 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 243 seconds)
2026-06-17 17:57:15 +0000finsternis(~X@23.226.237.192) finsternis
2026-06-17 17:57:25 +0000spew(~spew@user/spew) spew
2026-06-17 18:05:12 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-06-17 18:07:30 +0000hakutaku(~textual@user/hakutaku) hakutaku
2026-06-17 18:09:45 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 248 seconds)
2026-06-17 18:20:10 +0000Vajb(~Vajb@n722b5iomobz6966sly-1.v6.elisa-mobile.fi) (Ping timeout: 245 seconds)
2026-06-17 18:20:34 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-06-17 18:20:56 +0000Vajb(~Vajb@n6ls0b8icarshykj82k-1.v6.elisa-mobile.fi)
2026-06-17 18:25:46 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 276 seconds)
2026-06-17 18:26:50 +0000vanishingideal(~vanishing@user/vanishingideal) (Ping timeout: 265 seconds)
2026-06-17 18:28:12 +0000jayanth(~jayanth@static-98-115-128-109.phlapa.fios.verizon.net)
2026-06-17 18:28:53 +0000L29Ah(~L29Ah@wikipedia/L29Ah) (Read error: Connection reset by peer)
2026-06-17 18:35:56 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-06-17 18:40:47 +0000 <vms14> guys what do you use for backend in haskell?
2026-06-17 18:40:49 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 258 seconds)
2026-06-17 18:40:52 +0000 <vms14> i see servant and yesod
2026-06-17 18:41:12 +0000 <vms14> which both seem to use wai and its warp server
2026-06-17 18:41:38 +0000 <vms14> i want something like apache but for haskell
2026-06-17 18:41:59 +0000 <vms14> so i guess just warp
2026-06-17 18:42:11 +0000 <vms14> but warp is not meant to be used alone
2026-06-17 18:42:49 +0000 <monochrom> I wrote only a toy web app once. I just used wai and warp.
2026-06-17 18:43:22 +0000 <EvanR> apache is a huge and feature packed webserver. Warp is low level, add your own features on top
2026-06-17 18:43:56 +0000 <vms14> yeah, sorry what i meant is a local server i can play with
2026-06-17 18:44:49 +0000 <vms14> but i'm also curious whether someone does serious stuff
2026-06-17 18:45:11 +0000 <EvanR> the docs on warp speaks of a benchmark comparison between nginx and mighty, which is built on warp. Instead of comparing warp directly
2026-06-17 18:45:36 +0000 <vms14> EvanR: and warp is faster than nginx? :0
2026-06-17 18:45:50 +0000 <EvanR> you mean mighty?
2026-06-17 18:46:00 +0000 <EvanR> "on par with"
2026-06-17 18:46:08 +0000 <EvanR> https://aosabook.org/en/posa/warp.html
2026-06-17 18:48:02 +0000 <vms14> oh i was reading that lol
2026-06-17 18:48:09 +0000 <vms14> i was going to paste the link
2026-06-17 18:51:02 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-06-17 18:51:31 +0000 <jaror> I think scotty is the most mature simple web server built on warp
2026-06-17 18:55:20 +0000spew(~spew@user/spew) (Read error: Connection reset by peer)
2026-06-17 18:57:36 +0000 <jaror> For a while twain was a more modern alternative that people seemed to like, but it does not seem to be actively developed the last two years
2026-06-17 18:58:16 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 276 seconds)
2026-06-17 18:59:39 +0000 <jaror> There's also mig-server which is a more modern take and it seems to be less imperative
2026-06-17 18:59:55 +0000 <jaror> but it relies more on typeclasses
2026-06-17 19:08:08 +0000 <monochrom> scotty looks nice. Thanks.
2026-06-17 19:08:40 +0000 <monochrom> (for the next time I want to write another toy webapp :) )
2026-06-17 19:09:05 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-06-17 19:12:13 +0000 <[exa]> vms14: +1 for scotty, it's tiny and works just right for almost all cases (think kindof like sqlite-- it's not magically greatest, but "just" covers 98% usecases)
2026-06-17 19:12:29 +0000 <[exa]> also there's spock but I failed to see what's the difference there
2026-06-17 19:13:36 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 246 seconds)
2026-06-17 19:14:08 +0000spew(~spew@user/spew) spew
2026-06-17 19:15:34 +0000 <geekosaur> supposedly it's easier to get working
2026-06-17 19:16:42 +0000 <[exa]> I wonder about the definition of "easier" there
2026-06-17 19:18:35 +0000 <[exa]> oh it's got builtin database pooling support, that kinda helps yeah
2026-06-17 19:21:34 +0000Googulator73(~Googulato@84-236-126-95.pool.digikabel.hu) (Quit: Client closed)
2026-06-17 19:21:53 +0000Googulator73(~Googulato@84-236-126-95.pool.digikabel.hu)
2026-06-17 19:22:00 +0000 <vms14> i was trying to install scotty and run a hello world
2026-06-17 19:22:07 +0000Googulator73(~Googulato@84-236-126-95.pool.digikabel.hu) (Client Quit)
2026-06-17 19:22:24 +0000Googulator73(~Googulato@84-236-126-95.pool.digikabel.hu)
2026-06-17 19:22:39 +0000Xe(~Xe@perl/impostor/xe) (Read error: Connection reset by peer)
2026-06-17 19:22:44 +0000 <[exa]> vms14: did it hello?
2026-06-17 19:22:53 +0000leppard(~noOne@ipservice-092-208-182-236.092.208.pools.vodafone-ip.de) Inline
2026-06-17 19:23:03 +0000 <vms14> [exa]: yes
2026-06-17 19:23:10 +0000 <vms14> indebian is just to apt install libghc-scotty-dev
2026-06-17 19:23:24 +0000 <vms14> then ask ai for a hello world and ghc it
2026-06-17 19:23:32 +0000 <vms14> :D
2026-06-17 19:23:48 +0000 <vms14> i also like how simple the hello world is
2026-06-17 19:23:54 +0000Xe(~Xe@perl/impostor/xe) Xe
2026-06-17 19:23:57 +0000peterbecich(~Thunderbi@71.84.33.135) peterbecich
2026-06-17 19:23:58 +0000 <monochrom> :(
2026-06-17 19:24:28 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-06-17 19:24:46 +0000 <vms14> ty guys for the feedback and recommendations
2026-06-17 19:24:59 +0000 <vms14> i'll try scotty for now and see how it goes
2026-06-17 19:25:11 +0000 <vms14> i should keep an eye on other options too i guess
2026-06-17 19:25:58 +0000 <vms14> servant feels like the one you might want to use for something serious, but i do not know
2026-06-17 19:26:49 +0000 <[exa]> servant is for extremely integrated deployments of distributed softwares
2026-06-17 19:27:02 +0000 <[exa]> which might kinda sound like an oxymoron, right
2026-06-17 19:27:21 +0000 <[exa]> but essentially if your API complexity is insane, servant just does it
2026-06-17 19:28:55 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 245 seconds)
2026-06-17 19:42:31 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-06-17 19:43:23 +0000sam113101(~sam@modemcable200.189-202-24.mc.videotron.ca) (Quit: WeeChat 4.9.0)
2026-06-17 19:44:57 +0000sam113101(~sam@modemcable200.189-202-24.mc.videotron.ca) sam113101
2026-06-17 19:46:59 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 245 seconds)
2026-06-17 19:52:03 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-06-17 19:55:10 +0000peterbecich(~Thunderbi@71.84.33.135) (Ping timeout: 245 seconds)
2026-06-17 19:56:44 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 265 seconds)
2026-06-17 20:02:33 +0000vanishingideal(~vanishing@user/vanishingideal) vanishingideal
2026-06-17 20:07:24 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-06-17 20:11:59 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 245 seconds)
2026-06-17 20:15:23 +0000spew(~spew@user/spew) (Read error: Connection reset by peer)
2026-06-17 20:15:36 +0000notzmv(~umar@user/notzmv) (Ping timeout: 252 seconds)
2026-06-17 20:27:23 +0000target_i(~target_i@user/target-i/x-6023099) target_i
2026-06-17 20:38:08 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-06-17 20:38:15 +0000michalz(~michalz@185.246.207.200) (Quit: ZNC 1.9.1 - https://znc.in)
2026-06-17 20:38:33 +0000michalz(~michalz@185.246.207.222)
2026-06-17 20:39:30 +0000jreicher(~joelr@user/jreicher) (Quit: In transit)
2026-06-17 20:45:00 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 256 seconds)
2026-06-17 20:46:08 +0000jayanth(~jayanth@static-98-115-128-109.phlapa.fios.verizon.net) (Ping timeout: 256 seconds)
2026-06-17 20:55:56 +0000 <probie> I don't think twain is dead per se; it feels more like a finished product
2026-06-17 20:56:26 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-06-17 20:57:29 +0000michalz(~michalz@185.246.207.222) (Remote host closed the connection)
2026-06-17 21:00:46 +0000 <jaror> but does it support GHC 9.14 :P
2026-06-17 21:01:46 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 276 seconds)
2026-06-17 21:03:04 +0000takuan(~takuan@d8D86B9E9.access.telenet.be) (Ping timeout: 276 seconds)
2026-06-17 21:07:40 +0000weary-traveler(~user@user/user363627) (Quit: Konversation terminated!)
2026-06-17 21:07:57 +0000weary-traveler(~user@user/user363627) user363627
2026-06-17 21:11:47 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-06-17 21:16:22 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 268 seconds)
2026-06-17 21:27:10 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-06-17 21:31:32 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 247 seconds)
2026-06-17 21:32:59 +0000Pozyomka(~pyon@user/pyon) (Remote host closed the connection)
2026-06-17 21:33:17 +0000Pozyomka(~pyon@user/pyon) pyon
2026-06-17 21:35:56 +0000pavonia(~user@user/siracusa) siracusa