2024/07/04

2024-07-04 00:03:15 +0200emm(~emm@user/edmeme) (Ping timeout: 264 seconds)
2024-07-04 00:03:40 +0200machinedgod(~machinedg@d173-183-246-216.abhsia.telus.net)
2024-07-04 00:06:29 +0200acidjnk_new3(~acidjnk@p200300d6e72cfb75b55b5e6c7fe4efd7.dip0.t-ipconnect.de) (Ping timeout: 240 seconds)
2024-07-04 00:10:30 +0200Joao[3](~Joao003@190.108.99.178) (Quit: Bye!)
2024-07-04 00:12:41 +0200cpressey(~weechat@33b62f0c.skybroadband.com)
2024-07-04 00:13:55 +0200target_i(~target_i@user/target-i/x-6023099) (Quit: leaving)
2024-07-04 00:14:04 +0200tomku|two(~tomku@syn-141-126-184-057.res.spectrum.com)
2024-07-04 00:16:03 +0200tomku(~tomku@syn-141-126-184-057.res.spectrum.com) (Ping timeout: 252 seconds)
2024-07-04 00:31:38 +0200Deide_(~Deide@2a02:8012:9a16:0:4c08:821b:77ed:ba2f)
2024-07-04 00:31:49 +0200bilegeek(~bilegeek@2600:1008:b046:1f36:33d1:a30b:fb6a:feac)
2024-07-04 00:34:24 +0200Deide(d0130db69a@user/deide) (Killed (NickServ (GHOST command used by Deide_!~Deide@2a02:8012:9a16:0:4c08:821b:77ed:ba2f)))
2024-07-04 00:34:28 +0200Deide_Deide
2024-07-04 00:34:34 +0200Deide(~Deide@2a02:8012:9a16:0:4c08:821b:77ed:ba2f) (Changing host)
2024-07-04 00:34:34 +0200Deide(~Deide@user/deide)
2024-07-04 00:38:34 +0200 <jle`> it's not a valid kind but it's not a super useful one
2024-07-04 00:38:57 +0200 <jle`> compared to kinds that are purely ADT's and Nat/Symbol
2024-07-04 00:39:12 +0200 <jle`> oh they left
2024-07-04 00:46:21 +0200cpressey(~weechat@33b62f0c.skybroadband.com) (Quit: WeeChat 4.3.0)
2024-07-04 00:49:23 +0200mreh(~matthew@host86-160-168-12.range86-160.btcentralplus.com) (Ping timeout: 260 seconds)
2024-07-04 01:04:57 +0200gmg(~user@user/gehmehgeh) (Quit: Leaving)
2024-07-04 01:08:49 +0200sawilagar(~sawilagar@user/sawilagar) (Ping timeout: 268 seconds)
2024-07-04 01:13:03 +0200pavonia(~user@user/siracusa)
2024-07-04 01:36:49 +0200Deide(~Deide@user/deide) (Quit: Seeee yaaaa)
2024-07-04 02:25:53 +0200dysthesis(~dysthesis@user/dysthesis)
2024-07-04 02:31:27 +0200machinedgod(~machinedg@d173-183-246-216.abhsia.telus.net) (Ping timeout: 268 seconds)
2024-07-04 02:33:13 +0200oo_miguel(~Thunderbi@78.10.207.46) (Quit: oo_miguel)
2024-07-04 02:33:29 +0200oo_miguel(~Thunderbi@78.10.207.46)
2024-07-04 02:41:34 +0200waleee(~waleee@h-176-10-144-38.NA.cust.bahnhof.se) (Ping timeout: 246 seconds)
2024-07-04 02:44:26 +0200Tuplanolla(~Tuplanoll@91-159-69-59.elisa-laajakaista.fi) (Quit: Leaving.)
2024-07-04 02:46:30 +0200 <Pozyomka> Since Haskell has a type class for representable functors... Is there a way to talk about representable natural transformations as well? (A natural transformation “p : F -> G” between Set-valued functors is representable if, given another natural transformation “q : H -> G” whose source H is representable, the pullback “F x_G H” is again representable. Shouldn't work too differently if
2024-07-04 02:46:31 +0200 <Pozyomka> we replace Set with Hask, right?)
2024-07-04 02:53:01 +0200xff0x(~xff0x@2405:6580:b080:900:2e:65df:725b:2a62) (Ping timeout: 272 seconds)
2024-07-04 03:08:27 +0200codaraxis__(~codaraxis@user/codaraxis)
2024-07-04 03:11:43 +0200codaraxis(~codaraxis@user/codaraxis) (Ping timeout: 260 seconds)
2024-07-04 03:18:59 +0200ryanbooker(uid4340@id-4340.hampstead.irccloud.com)
2024-07-04 03:29:26 +0200dolio(~dolio@130.44.134.54) (Quit: ZNC 1.8.2 - https://znc.in)
2024-07-04 03:30:54 +0200dolio(~dolio@130.44.134.54)
2024-07-04 03:33:55 +0200dolio(~dolio@130.44.134.54) (Client Quit)
2024-07-04 03:39:05 +0200dolio(~dolio@130.44.134.54)
2024-07-04 03:53:09 +0200joeyadams(~joeyadams@2603:6010:5100:2ed:68bb:1b5c:be42:a832)
2024-07-04 04:12:07 +0200dysthesi1(~dysthesis@user/dysthesis)
2024-07-04 04:12:33 +0200dysthesis(~dysthesis@user/dysthesis) (Remote host closed the connection)
2024-07-04 04:26:06 +0200xff0x(~xff0x@125x103x176x34.ap125.ftth.ucom.ne.jp)
2024-07-04 04:28:01 +0200ystael(~ystael@user/ystael) (Ping timeout: 272 seconds)
2024-07-04 04:39:09 +0200codaraxis___(~codaraxis@user/codaraxis)
2024-07-04 04:40:20 +0200td_(~td@i5387092B.versanet.de) (Ping timeout: 268 seconds)
2024-07-04 04:41:46 +0200td_(~td@i5387093F.versanet.de)
2024-07-04 04:42:19 +0200codaraxis__(~codaraxis@user/codaraxis) (Ping timeout: 246 seconds)
2024-07-04 04:44:39 +0200xff0x(~xff0x@125x103x176x34.ap125.ftth.ucom.ne.jp) (Ping timeout: 268 seconds)
2024-07-04 04:46:25 +0200xff0x(~xff0x@125x103x176x34.ap125.ftth.ucom.ne.jp)
2024-07-04 04:51:50 +0200dysthesi1(~dysthesis@user/dysthesis) (Remote host closed the connection)
2024-07-04 04:55:14 +0200bitdex(~bitdex@gateway/tor-sasl/bitdex)
2024-07-04 05:10:52 +0200tomku|two(~tomku@syn-141-126-184-057.res.spectrum.com) (Ping timeout: 268 seconds)
2024-07-04 05:12:03 +0200tomku(~tomku@syn-141-126-184-057.res.spectrum.com)
2024-07-04 05:12:30 +0200Square(~Square@user/square) (Ping timeout: 252 seconds)
2024-07-04 05:16:16 +0200aforemny_(~aforemny@2001:9e8:6cfd:8900:ac01:bda6:fe69:cd4b) (Ping timeout: 246 seconds)
2024-07-04 05:16:56 +0200aforemny(~aforemny@i59F516FF.versanet.de)
2024-07-04 05:50:15 +0200Sgeo_(~Sgeo@user/sgeo)
2024-07-04 05:54:09 +0200Sgeo(~Sgeo@user/sgeo) (Ping timeout: 272 seconds)
2024-07-04 05:55:47 +0200joeyadams(~joeyadams@2603:6010:5100:2ed:68bb:1b5c:be42:a832) (Quit: Leaving)
2024-07-04 05:56:19 +0200 <lain`> i'm writing a turn-based game where i'm modeling status effects like `GameState -> GameState`, but I'm realizing that some of these effects may need to add custom state into the GameState that they can access. And I would like to keep it modular, e.g. no writing out every possible thing into a sum type somewhere. Is there really no way to do this other than using dynamic types?
2024-07-04 06:01:26 +0200 <byorgey> I can't think of any other way to do it. I like the way xmonad handles this, by keeping an internal map of custom state values keyed by (a runtime representation of) their type. Other than that module none of the rest of your code has to deal with dynamic types at all.
2024-07-04 06:01:50 +0200 <byorgey> https://hackage.haskell.org/package/xmonad-contrib-0.18.0/docs/XMonad-Util-ExtensibleState.html
2024-07-04 06:03:03 +0200 <geekosaur> would TTG be an option?
2024-07-04 06:03:32 +0200 <geekosaur> https://www.microsoft.com/en-us/research/uploads/prod/2016/11/trees-that-grow.pdf
2024-07-04 06:03:52 +0200 <Leary> lain`: There should be various ways, but what's appropriate will depend on how your program is structured. One way could be something like: `data GameState xs = GameState{ extensions :: HList xs, ... }; class x <: xs where project :: HList xs -> x; fooEffect :: Foo <: xs => GameState xs -> GameState xs`.
2024-07-04 06:06:27 +0200ryanbooker(uid4340@id-4340.hampstead.irccloud.com) (Quit: Connection closed for inactivity)
2024-07-04 06:12:21 +0200 <lain`> Leary: i think this would work with how i'm structuring things. ty! i didn't think about doing it like that.
2024-07-04 06:13:04 +0200 <Leary> NP. Though, `project` isn't really enough. Perhaps something lensy like `update :: Functor f => (x -> f x) -> HList xs -> f (HList xs)`