Logs on 2024-07-04 (liberachat/#haskell)
| 00:25:53 | → | dysthesis joins (~dysthesis@user/dysthesis) |
| 00:31:27 | × | machinedgod quits (~machinedg@d173-183-246-216.abhsia.telus.net) (Ping timeout: 268 seconds) |
| 00:33:13 | × | oo_miguel quits (~Thunderbi@78.10.207.46) (Quit: oo_miguel) |
| 00:33:29 | → | oo_miguel joins (~Thunderbi@78.10.207.46) |
| 00:41:34 | × | waleee quits (~waleee@h-176-10-144-38.NA.cust.bahnhof.se) (Ping timeout: 246 seconds) |
| 00:44:26 | × | Tuplanolla quits (~Tuplanoll@91-159-69-59.elisa-laajakaista.fi) (Quit: Leaving.) |
| 00:46:30 | <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 |
| 00:46:31 | <Pozyomka> | we replace Set with Hask, right?) |
| 00:53:01 | × | xff0x quits (~xff0x@2405:6580:b080:900:2e:65df:725b:2a62) (Ping timeout: 272 seconds) |
| 01:08:27 | → | codaraxis__ joins (~codaraxis@user/codaraxis) |
| 01:11:43 | × | codaraxis quits (~codaraxis@user/codaraxis) (Ping timeout: 260 seconds) |
| 01:18:59 | → | ryanbooker joins (uid4340@id-4340.hampstead.irccloud.com) |
| 01:29:26 | × | dolio quits (~dolio@130.44.134.54) (Quit: ZNC 1.8.2 - https://znc.in) |
| 01:30:54 | → | dolio joins (~dolio@130.44.134.54) |
| 01:33:55 | × | dolio quits (~dolio@130.44.134.54) (Client Quit) |
| 01:39:05 | → | dolio joins (~dolio@130.44.134.54) |
| 01:53:09 | → | joeyadams joins (~joeyadams@2603:6010:5100:2ed:68bb:1b5c:be42:a832) |
| 02:12:07 | → | dysthesi1 joins (~dysthesis@user/dysthesis) |
| 02:12:33 | × | dysthesis quits (~dysthesis@user/dysthesis) (Remote host closed the connection) |
| 02:26:06 | → | xff0x joins (~xff0x@125x103x176x34.ap125.ftth.ucom.ne.jp) |
| 02:28:01 | × | ystael quits (~ystael@user/ystael) (Ping timeout: 272 seconds) |
| 02:39:09 | → | codaraxis___ joins (~codaraxis@user/codaraxis) |
| 02:40:20 | × | td_ quits (~td@i5387092B.versanet.de) (Ping timeout: 268 seconds) |
| 02:41:46 | → | td_ joins (~td@i5387093F.versanet.de) |
| 02:42:19 | × | codaraxis__ quits (~codaraxis@user/codaraxis) (Ping timeout: 246 seconds) |
| 02:44:39 | × | xff0x quits (~xff0x@125x103x176x34.ap125.ftth.ucom.ne.jp) (Ping timeout: 268 seconds) |
| 02:46:25 | → | xff0x joins (~xff0x@125x103x176x34.ap125.ftth.ucom.ne.jp) |
| 02:51:50 | × | dysthesi1 quits (~dysthesis@user/dysthesis) (Remote host closed the connection) |
| 02:55:14 | → | bitdex joins (~bitdex@gateway/tor-sasl/bitdex) |
| 03:10:52 | × | tomku|two quits (~tomku@syn-141-126-184-057.res.spectrum.com) (Ping timeout: 268 seconds) |
| 03:12:03 | → | tomku joins (~tomku@syn-141-126-184-057.res.spectrum.com) |
| 03:12:30 | × | Square quits (~Square@user/square) (Ping timeout: 252 seconds) |
| 03:16:16 | × | aforemny_ quits (~aforemny@2001:9e8:6cfd:8900:ac01:bda6:fe69:cd4b) (Ping timeout: 246 seconds) |
| 03:16:56 | → | aforemny joins (~aforemny@i59F516FF.versanet.de) |
| 03:50:15 | → | Sgeo_ joins (~Sgeo@user/sgeo) |
| 03:54:09 | × | Sgeo quits (~Sgeo@user/sgeo) (Ping timeout: 272 seconds) |
| 03:55:47 | × | joeyadams quits (~joeyadams@2603:6010:5100:2ed:68bb:1b5c:be42:a832) (Quit: Leaving) |
| 03:56:19 | <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? |
| 04:01:26 | <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. |
| 04:01:50 | <byorgey> | https://hackage.haskell.org/package/xmonad-contrib-0.18.0/docs/XMonad-Util-ExtensibleState.html |
| 04:03:03 | <geekosaur> | would TTG be an option? |
| 04:03:32 | <geekosaur> | https://www.microsoft.com/en-us/research/uploads/prod/2016/11/trees-that-grow.pdf |
| 04:03:52 | <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`. |
| 04:06:27 | × | ryanbooker quits (uid4340@id-4340.hampstead.irccloud.com) (Quit: Connection closed for inactivity) |
| 04:12:21 | <lain`> | Leary: i think this would work with how i'm structuring things. ty! i didn't think about doing it like that. |
| 04:13:04 | <Leary> | NP. Though, `project` isn't really enough. Perhaps something lensy like `update :: Functor f => (x -> f x) -> HList xs -> f (HList xs)` |
| 04:16:35 | × | motherfsck quits (~motherfsc@user/motherfsck) (Quit: quit) |
| 04:16:40 | <lain`> | okay |
| 04:20:30 | <lain`> | geekosaur: this looks really interesting and i think also could work. ty for showing this |
| 04:20:31 | <lain`> | hmm |
| 04:37:06 | <Axman6> | I'm not sure it would work, if you want to keep the type of update functions GameState -> GameState. You probably want some kind of type indexed map... jackdk has told me about one before but I can't remember what it's called |
| 04:38:05 | <Axman6> | It may have been https://hackage.haskell.org/package/type-map |
| 04:38:23 | <Axman6> | "Supports arbitrary, user-defined mappings between keys and types of values via defunctionalization." |
| 04:40:30 | × | amjoseph quits (~amjoseph@static-198-44-128-146.cust.tzulo.com) (Ping timeout: 252 seconds) |
| 04:43:22 | <jackdk> | dependent-map? But that needs a GADT to track all possible keys |
| 04:45:09 | <haskellbridge> | <iqubic (she/her)> What is Defunctionalization? |
| 04:45:11 | × | chiselfuse quits (~chiselfus@user/chiselfuse) (Remote host closed the connection) |
| 04:45:11 | × | califax quits (~califax@user/califx) (Remote host closed the connection) |
| 04:45:31 | → | califax joins (~califax@user/califx) |
| 04:46:02 | → | chiselfuse joins (~chiselfus@user/chiselfuse) |
| 04:48:06 | <Axman6> | the opposite of functionalisation |
| 04:48:08 | <Axman6> | >_> |
| 04:49:14 | <Axman6> | yeah ok, well type-map looks like it might be useful for lain`'s use then. Just have data GameState = GameState { effectStates :: TypeMap GameState; ...} or something |
| 04:49:28 | × | bilegeek quits (~bilegeek@2600:1008:b046:1f36:33d1:a30b:fb6a:feac) (Quit: Leaving) |
| 04:49:31 | → | amjoseph joins (~amjoseph@static-198-44-128-146.cust.tzulo.com) |
| 04:51:22 | <haskellbridge> | <iqubic (she/her)> A normal map is a mapping from values to values. This is a mapping from types to values. |
| 04:54:44 | <Leary> | Axman6: It would still need to be `GameState d` and `TypeMap d` like in my approach. The advantage of type-map here is presumably just faster operations with the Map or Vector backed variants. |
| 04:55:52 | <jackdk> | There's also https://hackage.haskell.org/package/vault , which wai uses internally |
| 04:59:30 | <Axman6> | Leary: Why would it need the type parameter? I thought the type param to TypeMap was somewhat arbitrary/chosen by the user |
| 04:59:42 | <Axman6> | based on https://github.com/Lysxia/type-map/blob/master/examples/dynamic.hs |
| 05:05:50 | <Leary> | Ah, I only looked at the static modules. The dynamic one looks equivalent to the xmonad approach byorgey mentioned. |
| 05:09:46 | → | rosco joins (~rosco@175.136.155.137) |
| 05:11:07 | × | xdminsy quits (~xdminsy@117.147.70.231) (Ping timeout: 260 seconds) |
| 05:12:11 | → | xdminsy joins (~xdminsy@117.147.70.231) |
| 05:20:14 | <haskellbridge> | <iqubic (she/her)> What's the xmonad approach? |
| 05:28:32 | <Axman6> | https://hackage.haskell.org/package/typerep-map looks nice (though need to look at v0.5 to get docs). Seems like a pretty efficient implementation under the hood |
| 05:38:17 | × | tcard quits (~tcard@2400:4051:5801:7500:cf17:befc:ff82:5303) (Quit: Leaving) |
| 05:42:11 | → | tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
| 05:56:22 | × | bcksl quits (~bcksl@user/bcksl) (Quit: \) |
| 05:56:22 | × | end quits (~end@user/end/x-0094621) (Quit: end) |
| 05:58:10 | × | tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 06:00:08 | → | kenran joins (~user@user/kenran) |
| 06:01:00 | → | sroso joins (~sroso@user/SrOso) |
| 06:01:27 | × | sroso quits (~sroso@user/SrOso) (Max SendQ exceeded) |
| 06:03:31 | <lain`> | ty everyone. typerep-map would def work. |
| 06:03:57 | × | nurupo quits (~nurupo.ga@user/nurupo) (Quit: nurupo.ga) |
| 06:04:34 | × | sam113101 quits (~sam@24.157.253.231) (Remote host closed the connection) |
| 06:04:37 | → | nurupo joins (~nurupo.ga@user/nurupo) |
| 06:04:57 | → | sam113101 joins (~sam@24.157.253.231) |
| 06:07:17 | → | sroso joins (~sroso@user/SrOso) |
| 06:10:03 | → | dysthesis joins (~dysthesis@user/dysthesis) |
| 06:10:19 | <lain`> | i think it could still be representatible with static types only but it might not be worth the effort |
| 06:15:04 | <lain`> | i guess i could use dependant-map or vinyl for at least some of it. like the game state might be better dynamic but the actual collection of modules that is assembled during compile time doesn't have to be i think. like the actual constructors for the data types that would be in the typerep-map. |
| 06:15:41 | → | bcksl joins (~bcksl@user/bcksl) |
| 06:17:45 | → | michalz joins (~michalz@185.246.207.193) |
| 06:22:42 | → | end joins (~end@user/end/x-0094621) |
| 06:35:38 | → | sord937 joins (~sord937@gateway/tor-sasl/sord937) |
| 06:40:58 | → | danse-nr3 joins (~danse-nr3@fi-19-195-137.service.infuturo.it) |
| 06:41:58 | → | TactfulCitrus joins (~al@2a02:8012:87a6:0:fbe0:6116:6e30:e047) |
| 06:42:06 | → | tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
| 06:49:40 | × | forell quits (~forell@user/forell) (Quit: ZNC - https://znc.in) |
| 06:51:10 | → | forell joins (~forell@user/forell) |
| 06:51:46 | × | danse-nr3 quits (~danse-nr3@fi-19-195-137.service.infuturo.it) (Read error: Connection reset by peer) |
| 06:51:53 | × | ft quits (~ft@p4fc2ab80.dip0.t-ipconnect.de) (Quit: leaving) |
| 06:52:04 | → | danse-nr3 joins (~danse-nr3@fi-19-195-137.service.infuturo.it) |
| 06:54:24 | × | AlexZenon quits (~alzenon@94.233.240.124) (Ping timeout: 268 seconds) |
| 06:55:10 | × | AlexNoo quits (~AlexNoo@94.233.240.124) (Ping timeout: 264 seconds) |
| 07:00:39 | × | jle` quits (~jle`@2603:8001:3b02:84d4:143f:9778:ef77:7e4) (Ping timeout: 256 seconds) |
| 07:01:40 | → | jle` joins (~jle`@2603:8001:3b02:84d4:c01a:146b:1e1a:5e8e) |
| 07:03:00 | × | danse-nr3 quits (~danse-nr3@fi-19-195-137.service.infuturo.it) (Ping timeout: 255 seconds) |
| 07:04:17 | → | danse-nr3 joins (~danse-nr3@fi-19-195-137.service.infuturo.it) |
| 07:11:18 | → | misterfish joins (~misterfis@094190207253.static.ipv4.heldenvannu.net) |
| 07:17:41 | → | lortabac joins (~lortabac@37.169.53.202) |
| 07:20:03 | → | takuan joins (~takuan@178-116-218-225.access.telenet.be) |
| 07:21:59 | × | lortabac quits (~lortabac@37.169.53.202) (Client Quit) |
| 07:25:35 | × | TactfulCitrus quits (~al@2a02:8012:87a6:0:fbe0:6116:6e30:e047) (Ping timeout: 256 seconds) |
| 07:32:03 | × | esph quits (~weechat@user/esph) (Ping timeout: 264 seconds) |
| 07:40:45 | → | lxsameer joins (~lxsameer@Serene/lxsameer) |
| 07:45:56 | → | esph joins (~weechat@user/esph) |
| 07:46:24 | → | zzz joins (~yin@user/zero) |
| 07:46:46 | → | acidjnk_new3 joins (~acidjnk@p200300d6e72cfb62bc9ac2d1211b195e.dip0.t-ipconnect.de) |
| 07:49:09 | → | AlexNoo joins (~AlexNoo@178.34.160.84) |
| 07:51:34 | × | lxsameer quits (~lxsameer@Serene/lxsameer) (Ping timeout: 256 seconds) |
| 07:56:10 | → | machinedgod joins (~machinedg@d173-183-246-216.abhsia.telus.net) |
| 07:57:04 | → | motherfsck joins (~motherfsc@user/motherfsck) |
| 07:57:22 | → | AlexZenon joins (~alzenon@178.34.160.84) |
| 07:58:44 | × | FinnElija quits (~finn_elij@user/finn-elija/x-0085643) (Remote host closed the connection) |
| 07:59:19 | → | FinnElija joins (~finn_elij@user/finn-elija/x-0085643) |
| 08:02:31 | zzz | is now known as yin |
| 08:09:45 | → | chele joins (~chele@user/chele) |
| 08:13:55 | → | cfricke joins (~cfricke@user/cfricke) |
| 08:18:53 | × | nadja quits (~dequbed@banana-new.kilobyte22.de) (Ping timeout: 268 seconds) |
| 08:21:30 | → | dequbed joins (~dequbed@banana-new.kilobyte22.de) |
| 08:23:59 | × | tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 08:26:56 | → | rvalue- joins (~rvalue@user/rvalue) |
| 08:27:09 | → | tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
| 08:27:51 | × | rvalue quits (~rvalue@user/rvalue) (Ping timeout: 264 seconds) |
| 08:28:27 | × | dequbed quits (~dequbed@banana-new.kilobyte22.de) (Ping timeout: 268 seconds) |
| 08:31:03 | rvalue- | is now known as rvalue |
| 08:31:05 | × | sroso quits (~sroso@user/SrOso) (Quit: Leaving :)) |
| 08:31:13 | × | mikess quits (~mikess@user/mikess) (Ping timeout: 268 seconds) |
| 08:31:41 | → | dequbed joins (~dequbed@banana-new.kilobyte22.de) |
| 08:32:24 | <tomsmeding> | the hackage reverse dependency matrix seems down? :( https://packdeps.haskellers.com/ |
| 08:32:50 | × | dysthesis quits (~dysthesis@user/dysthesis) (Ping timeout: 260 seconds) |
| 08:33:16 | <tomsmeding> | ah, but hackage itself seems to do it now! https://hackage.haskell.org/package/pretty-simple/reverse |
| 08:36:43 | <danse-nr3> | huh does this https://hackage.haskell.org/package/Yampa/reverse mean yampa is basically unused? |
| 08:37:04 | → | ubert joins (~Thunderbi@2a02:8109:ab8a:5a00:5406:3040:be03:598b) |
| 08:47:17 | <tomsmeding> | danse-nr3: well, it means that yampa is not typically used by libraries on hackage |
| 08:47:37 | <tomsmeding> | yampa strikes me as a thing typically used in applications, not libraries, and applications don't tend to be uploaded to hackage |
| 08:47:44 | × | danse-nr3 quits (~danse-nr3@fi-19-195-137.service.infuturo.it) (Remote host closed the connection) |
| 08:47:48 | <tomsmeding> | it might still be _true_ that it's mostly unused :p |
| 08:47:51 | <tomsmeding> | I don't know |
| 08:48:06 | → | danse-nr3 joins (~danse-nr3@fi-19-195-137.service.infuturo.it) |
| 08:49:13 | → | mreh joins (~matthew@host86-160-168-12.range86-160.btcentralplus.com) |
| 08:52:05 | × | Fijxu quits (~Fijxu@user/fijxu) (Ping timeout: 240 seconds) |
| 08:52:36 | → | gmg joins (~user@user/gehmehgeh) |
| 08:58:50 | × | AlexZenon quits (~alzenon@178.34.160.84) (Quit: ;-) |
| 09:00:29 | × | AlexNoo quits (~AlexNoo@178.34.160.84) (Quit: Leaving) |
| 09:11:14 | → | qqq joins (~qqq@92.43.167.61) |
| 09:11:44 | → | raym joins (~ray@user/raym) |
| 09:12:55 | → | AlexNoo joins (~AlexNoo@178.34.160.84) |
| 09:15:03 | → | lortabac joins (~lortabac@37.169.53.202) |
| 09:15:43 | → | Tuplanolla joins (~Tuplanoll@91-159-69-59.elisa-laajakaista.fi) |
| 09:18:41 | → | __monty__ joins (~toonn@user/toonn) |
| 09:22:40 | × | tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 09:24:12 | × | AlexNoo quits (~AlexNoo@178.34.160.84) (Read error: Connection reset by peer) |
| 09:24:29 | → | AlexZenon joins (~alzenon@178.34.160.84) |
| 09:24:34 | → | AlexNoo joins (~AlexNoo@178.34.160.84) |
| 09:28:18 | → | AlexZenon_2 joins (~alzenon@178.34.160.84) |
| 09:30:28 | × | AlexZenon_2 quits (~alzenon@178.34.160.84) (Client Quit) |
| 09:31:43 | × | misterfish quits (~misterfis@094190207253.static.ipv4.heldenvannu.net) (Ping timeout: 272 seconds) |
| 09:33:51 | × | econo_ quits (uid147250@id-147250.tinside.irccloud.com) (Quit: Connection closed for inactivity) |
| 09:35:58 | × | euleritian quits (~euleritia@77.22.252.56) (Ping timeout: 264 seconds) |
| 09:36:48 | → | euleritian joins (~euleritia@dynamic-176-000-195-159.176.0.pool.telefonica.de) |
| 09:39:41 | × | tzh quits (~tzh@c-76-115-131-146.hsd1.or.comcast.net) (Quit: zzz) |
| 09:45:24 | → | tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
| 09:53:53 | × | Sgeo_ quits (~Sgeo@user/sgeo) (Read error: Connection reset by peer) |
| 09:56:53 | → | tcard joins (~tcard@2400:4051:5801:7500:cf17:befc:ff82:5303) |
| 10:08:06 | × | xff0x quits (~xff0x@125x103x176x34.ap125.ftth.ucom.ne.jp) (Ping timeout: 256 seconds) |
| 10:25:16 | × | lortabac quits (~lortabac@37.169.53.202) (Quit: WeeChat 4.2.2) |
| 10:25:36 | × | danse-nr3 quits (~danse-nr3@fi-19-195-137.service.infuturo.it) (Read error: Connection reset by peer) |
| 10:26:11 | → | danse-nr3 joins (~danse-nr3@151.43.171.9) |
| 10:29:07 | × | qqq quits (~qqq@92.43.167.61) (Quit: leaving) |
| 10:33:07 | → | qqq joins (~qqq@92.43.167.61) |
| 10:37:01 | → | sawilagar joins (~sawilagar@user/sawilagar) |
| 10:38:43 | × | yin quits (~yin@user/zero) (Ping timeout: 260 seconds) |
| 10:48:07 | × | edwtjo quits (~edwtjo@fsf/member/edwtjo) (Ping timeout: 268 seconds) |
| 10:49:31 | → | edwtjo joins (~edwtjo@h-85-24-142-35.A213.priv.bahnhof.se) |
| 10:49:31 | × | edwtjo quits (~edwtjo@h-85-24-142-35.A213.priv.bahnhof.se) (Changing host) |
| 10:49:31 | → | edwtjo joins (~edwtjo@fsf/member/edwtjo) |
| 11:02:28 | × | danse-nr3 quits (~danse-nr3@151.43.171.9) (Ping timeout: 246 seconds) |
| 11:06:12 | × | euleritian quits (~euleritia@dynamic-176-000-195-159.176.0.pool.telefonica.de) (Read error: Connection reset by peer) |
| 11:06:29 | → | euleritian joins (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) |
| 11:07:16 | → | lortabac joins (~lortabac@37.163.165.41) |
| 11:07:51 | → | danse-nr3 joins (~danse-nr3@151.43.171.9) |
| 11:08:20 | → | xff0x joins (~xff0x@2405:6580:b080:900:5277:df26:6b07:8b52) |
| 11:12:08 | × | danse-nr3 quits (~danse-nr3@151.43.171.9) (Ping timeout: 256 seconds) |
| 11:13:15 | × | CrunchyFlakes quits (~CrunchyFl@ip92348280.dynamic.kabel-deutschland.de) (Ping timeout: 260 seconds) |
| 11:15:39 | → | CrunchyFlakes joins (~CrunchyFl@146.52.130.128) |
| 11:29:25 | × | hgolden quits (~hgolden@2603:8000:9d00:3ed1:2678:8497:aa5c:7fa9) (Ping timeout: 246 seconds) |
| 11:37:21 | × | itaipu quits (~itaipu@168.121.98.250) (Remote host closed the connection) |
| 11:38:38 | → | itaipu joins (~itaipu@168.121.98.250) |
| 11:39:13 | → | danse-nr3 joins (~danse-nr3@151.43.171.9) |
| 11:44:22 | × | euleritian quits (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Ping timeout: 264 seconds) |
| 11:45:26 | → | euleritian joins (~euleritia@dynamic-176-000-195-159.176.0.pool.telefonica.de) |
| 11:47:00 | × | rosco quits (~rosco@175.136.155.137) (Quit: Lost terminal) |
| 11:48:57 | × | hughjfchen quits (~hughjfche@vmi556545.contaboserver.net) (Ping timeout: 252 seconds) |
| 11:53:15 | × | cfricke quits (~cfricke@user/cfricke) (Ping timeout: 255 seconds) |
| 11:58:03 | → | hughjfchen joins (~hughjfche@vmi556545.contaboserver.net) |
| 12:12:49 | × | danse-nr3 quits (~danse-nr3@151.43.171.9) (Ping timeout: 246 seconds) |
| 12:14:12 | × | tv quits (~tv@user/tv) (Quit: derp) |
| 12:14:38 | → | tv joins (~tv@user/tv) |
| 12:17:37 | → | cfricke joins (~cfricke@user/cfricke) |
| 12:17:40 | → | Square joins (~Square@user/square) |
| 12:18:09 | × | euleritian quits (~euleritia@dynamic-176-000-195-159.176.0.pool.telefonica.de) (Read error: Connection reset by peer) |
| 12:18:21 | → | euleritian joins (~euleritia@tmo-117-242.customers.d1-online.com) |
| 12:32:52 | → | danse-nr3 joins (~danse-nr3@151.43.171.9) |
| 12:38:35 | × | jjhoo quits (~jahakala@user/jjhoo) (Quit: leaving) |
| 12:38:51 | → | jjhoo joins (~jahakala@user/jjhoo) |
| 12:44:39 | → | misterfish joins (~misterfis@87.215.131.102) |
| 12:52:29 | × | __monty__ quits (~toonn@user/toonn) (Ping timeout: 272 seconds) |
| 12:52:47 | → | __monty__ joins (~toonn@user/toonn) |
| 13:05:07 | → | lensnewbie joins (~lensnewbi@cpc116330-smal16-2-0-cust397.19-1.cable.virginm.net) |
| 13:05:28 | × | danse-nr3 quits (~danse-nr3@151.43.171.9) (Ping timeout: 256 seconds) |
| 13:09:45 | → | segfaultfizzbuzz joins (~segfaultf@23-93-79-84.fiber.dynamic.sonic.net) |
| 13:10:23 | → | danse-nr3 joins (~danse-nr3@151.43.171.9) |
| 13:18:36 | × | euleritian quits (~euleritia@tmo-117-242.customers.d1-online.com) (Ping timeout: 252 seconds) |
| 13:19:15 | → | euleritian joins (~euleritia@dynamic-176-000-195-159.176.0.pool.telefonica.de) |
| 13:32:15 | → | kuribas joins (~user@ip-188-118-57-242.reverse.destiny.be) |
| 13:47:49 | × | poscat0x04 quits (~poscat@user/poscat) (Quit: Bye) |
| 14:00:04 | → | poscat joins (~poscat@user/poscat) |
| 14:07:15 | × | kenran quits (~user@user/kenran) (Remote host closed the connection) |
| 14:14:49 | × | visilii_ quits (~visilii@213.24.125.202) (Ping timeout: 272 seconds) |
| 14:21:01 | → | visilii joins (~visilii@213.24.125.33) |
| 14:23:43 | × | lensnewbie quits (~lensnewbi@cpc116330-smal16-2-0-cust397.19-1.cable.virginm.net) (Quit: Client closed) |
| 14:26:44 | × | danse-nr3 quits (~danse-nr3@151.43.171.9) (Ping timeout: 268 seconds) |
| 14:27:23 | → | danse-nr3 joins (~danse-nr3@fi-19-216-107.service.infuturo.it) |
| 14:32:58 | × | danse-nr3 quits (~danse-nr3@fi-19-216-107.service.infuturo.it) (Ping timeout: 264 seconds) |
| 14:58:22 | × | misterfish quits (~misterfis@87.215.131.102) (Ping timeout: 246 seconds) |
| 15:03:47 | × | tomku quits (~tomku@syn-141-126-184-057.res.spectrum.com) (Ping timeout: 260 seconds) |
| 15:05:29 | → | tomku joins (~tomku@syn-141-126-184-057.res.spectrum.com) |
| 15:15:52 | × | lortabac quits (~lortabac@37.163.165.41) (Quit: WeeChat 4.2.2) |
| 15:29:31 | × | euleritian quits (~euleritia@dynamic-176-000-195-159.176.0.pool.telefonica.de) (Ping timeout: 246 seconds) |
| 15:30:10 | × | glguy quits (g@libera/staff/glguy) (Read error: Connection reset by peer) |
| 15:30:27 | → | euleritian joins (~euleritia@dynamic-176-002-137-249.176.2.pool.telefonica.de) |
| 15:30:55 | → | glguy joins (g@libera/staff/glguy) |
| 15:36:16 | × | L29Ah quits (~L29Ah@wikipedia/L29Ah) (Read error: Connection timed out) |
| 15:37:00 | × | euleritian quits (~euleritia@dynamic-176-002-137-249.176.2.pool.telefonica.de) (Read error: Connection reset by peer) |
| 15:37:22 | → | euleritian joins (~euleritia@tmo-117-242.customers.d1-online.com) |
| 15:41:43 | × | nschoe quits (~nschoe@2a01:e0a:8e:a190:7ec3:d3a5:178e:54f6) (Quit: ZNC 1.8.2 - https://znc.in) |
| 15:42:01 | → | nschoe joins (~nschoe@82-65-202-30.subs.proxad.net) |
| 15:51:45 | → | misterfish joins (~misterfis@84.53.85.146) |
| 16:01:04 | → | L29Ah joins (~L29Ah@wikipedia/L29Ah) |
| 16:06:50 | × | segfaultfizzbuzz quits (~segfaultf@23-93-79-84.fiber.dynamic.sonic.net) (Remote host closed the connection) |
| 16:09:56 | × | remexre quits (~remexre@user/remexre) (Remote host closed the connection) |
| 16:10:04 | → | remexre_ joins (~remexre@user/remexre) |
| 16:10:28 | × | cfricke quits (~cfricke@user/cfricke) (Quit: WeeChat 4.2.2) |
| 16:10:56 | remexre_ | is now known as remexre |
| 16:22:58 | × | euphores quits (~SASL_euph@user/euphores) (Ping timeout: 268 seconds) |
| 16:29:57 | → | euphores joins (~SASL_euph@user/euphores) |
| 16:31:02 | → | khumba joins (~khumba@user/khumba) |
| 16:32:14 | × | kuribas quits (~user@ip-188-118-57-242.reverse.destiny.be) (Remote host closed the connection) |
| 16:32:20 | × | chele quits (~chele@user/chele) (Remote host closed the connection) |
| 16:32:45 | × | euleritian quits (~euleritia@tmo-117-242.customers.d1-online.com) (Ping timeout: 252 seconds) |
| 16:33:01 | → | ystael joins (~ystael@user/ystael) |
| 16:34:49 | → | edrx joins (~Eduardo@170-233-51-85.static.sumicity.net.br) |
| 16:35:19 | → | euleritian joins (~euleritia@tmo-117-242.customers.d1-online.com) |
| 16:37:46 | × | mreh quits (~matthew@host86-160-168-12.range86-160.btcentralplus.com) (Ping timeout: 268 seconds) |
| 16:38:14 | <edrx> | hi all! gmorning! |
| 16:39:56 | <edrx> | this is from Hutton's book: https://i.ibb.co/MNCSM0v/sshot.png |
| 16:40:19 | <edrx> | anyone knows where I can find more about that style of string diagrams? |
| 16:41:34 | <edrx> | it looks very incomplete to me... only a few terms are written on the boxes and wires of the diagram, and the types are left out "as an exercise to the reader"... |
| 16:42:31 | <edrx> | OOPS - I'm late! need to buy lunch... I'll ask the question again later. sorry... |
| 16:47:03 | × | edrx quits (~Eduardo@170-233-51-85.static.sumicity.net.br) (Ping timeout: 264 seconds) |
| 16:53:01 | → | mikess joins (~mikess@user/mikess) |
| 16:53:08 | × | pavonia quits (~user@user/siracusa) (Quit: Bye!) |
| 16:53:24 | × | euleritian quits (~euleritia@tmo-117-242.customers.d1-online.com) (Ping timeout: 255 seconds) |
| 16:54:05 | → | euleritian joins (~euleritia@176.2.137.249) |
| 16:57:34 | → | simendsjo joins (~user@84.209.170.3) |
| 16:58:11 | × | qqq quits (~qqq@92.43.167.61) (Remote host closed the connection) |
| 17:08:50 | → | Sgeo joins (~Sgeo@user/sgeo) |
| 17:09:52 | → | ft joins (~ft@p4fc2ab80.dip0.t-ipconnect.de) |
| 17:10:37 | → | hgolden joins (~hgolden@syn-172-251-233-141.res.spectrum.com) |
| 17:11:21 | → | soverysour joins (~soverysou@81.196.150.219) |
| 17:11:21 | × | soverysour quits (~soverysou@81.196.150.219) (Changing host) |
| 17:11:21 | → | soverysour joins (~soverysou@user/soverysour) |
| 17:18:39 | × | machinedgod quits (~machinedg@d173-183-246-216.abhsia.telus.net) (Ping timeout: 260 seconds) |
| 17:22:53 | × | tomku quits (~tomku@syn-141-126-184-057.res.spectrum.com) (Ping timeout: 240 seconds) |
| 17:24:35 | × | ubert quits (~Thunderbi@2a02:8109:ab8a:5a00:5406:3040:be03:598b) (Remote host closed the connection) |
| 17:24:59 | → | tomku joins (~tomku@syn-141-126-184-057.res.spectrum.com) |
| 17:31:16 | × | tomku quits (~tomku@syn-141-126-184-057.res.spectrum.com) (Ping timeout: 256 seconds) |
| 17:33:15 | → | tomku joins (~tomku@syn-141-126-184-057.res.spectrum.com) |
| 17:43:21 | → | califax_ joins (~califax@user/califx) |
| 17:43:30 | × | califax quits (~califax@user/califx) (Ping timeout: 260 seconds) |
| 17:43:58 | × | gmg quits (~user@user/gehmehgeh) (Ping timeout: 260 seconds) |
| 17:43:58 | × | sord937 quits (~sord937@gateway/tor-sasl/sord937) (Ping timeout: 260 seconds) |
| 17:44:26 | × | FinnElija quits (~finn_elij@user/finn-elija/x-0085643) (Ping timeout: 260 seconds) |
| 17:44:33 | califax_ | is now known as califax |
| 17:44:58 | × | ystael quits (~ystael@user/ystael) (Ping timeout: 264 seconds) |
| 17:45:55 | → | sord937 joins (~sord937@gateway/tor-sasl/sord937) |
| 17:46:17 | → | gmg joins (~user@user/gehmehgeh) |
| 17:46:35 | → | FinnElija joins (~finn_elij@user/finn-elija/x-0085643) |
| 17:48:56 | → | tdmarrrrrrrrrrra joins (~cd@c-98-242-74-66.hsd1.ga.comcast.net) |
| 17:53:21 | → | Fijxu joins (~Fijxu@user/fijxu) |
| 17:59:47 | × | tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 18:00:03 | → | edrx joins (~Eduardo@2804:18:5804:f2b1:54b8:f1a5:f7d:fbf2) |
| 18:00:26 | ← | edrx parts (~Eduardo@2804:18:5804:f2b1:54b8:f1a5:f7d:fbf2) () |
| 18:01:34 | → | edrx joins (~Eduardo@2804:18:5804:f2b1:54b8:f1a5:f7d:fbf2) |
| 18:05:43 | → | lxsameer joins (~lxsameer@Serene/lxsameer) |
| 18:06:05 | × | tomku quits (~tomku@syn-141-126-184-057.res.spectrum.com) (Ping timeout: 240 seconds) |
| 18:06:18 | → | tomku joins (~tomku@syn-141-126-184-057.res.spectrum.com) |
| 18:08:33 | <edrx> | hi all! I am trying to understand the section "The state monad" in Hutton's book - here: http://anggtwu.net/tmp/hutton__programming_in_haskell.pdf#page=199 -, and he defines ST and app in this way: |
| 18:08:40 | <edrx> | newtype ST a = S (State -> (a,State)) |
| 18:08:41 | <edrx> | app :: ST a -> State -> (a,State) |
| 18:08:41 | <edrx> | app (S st) x = st x |
| 18:09:42 | <edrx> | I'm very confused. are there two "S"s, one that acts on types and another one that acts on terms? |
| 18:10:34 | <edrx> | I am trying to draw a diagram with the types of all the subexpressions of "app (S st) x = st x" and I'm stuck... |
| 18:10:42 | <enikar> | S is just a constructor |
| 18:11:43 | <enikar> | to hold a lambda (function) which transform a State to a pair (a, State) |
| 18:11:44 | <edrx> | for types? in the sense that S Int works but S 42 doesn't? |
| 18:12:50 | <enikar> | well, and if you make a data type : type Foo a = F a |
| 18:13:08 | <enikar> | in this defintion F is a constructor not a type. |
| 18:15:15 | → | target_i joins (~target_i@user/target-i/x-6023099) |
| 18:15:17 | <enikar> | this is same as: Tree a = Leaf a | Branch a a (Tree a) |
| 18:15:23 | <ncf> | edrx: ST is a type constructor; S is a term constructor |
| 18:15:29 | × | euleritian quits (~euleritia@176.2.137.249) (Read error: Connection reset by peer) |
| 18:15:36 | <ncf> | S (\ s -> (42, s)) :: ST Int |
| 18:15:41 | <enikar> | but is the case of State there is no alternative |
| 18:15:46 | → | euleritian joins (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) |
| 18:15:46 | <edrx> | ncf: aha! |
| 18:16:04 | <ncf> | maybe you're confused by the syntax for constructor definitions |
| 18:16:22 | <ncf> | S X means S :: X -> ST a |
| 18:16:36 | × | Lord_of_Life quits (~Lord@user/lord-of-life/x-2819915) (Ping timeout: 256 seconds) |
| 18:16:38 | <edrx> | is this diagram correct? https://0x0.st/Xane.txt |
| 18:17:23 | <ncf> | yes |
| 18:18:27 | <edrx> | thanks!!! let me typeset it in a nicer way... |
| 18:20:41 | → | Lord_of_Life joins (~Lord@user/lord-of-life/x-2819915) |
| 18:20:42 | × | misterfish quits (~misterfis@84.53.85.146) (Ping timeout: 255 seconds) |
| 18:22:30 | → | misterfish joins (~misterfis@84.53.85.146) |
| 18:23:13 | × | tomku quits (~tomku@syn-141-126-184-057.res.spectrum.com) (Ping timeout: 268 seconds) |
| 18:26:19 | <edrx> | https://i.ibb.co/RHtDFLk/sshot.png |
| 18:27:13 | <edrx> | if we have S f :: ST a |
| 18:27:27 | <edrx> | then f :: State -> (a,State) |
| 18:27:33 | <edrx> | right? |
| 18:28:06 | <mauke> | that looks right |
| 18:28:12 | <edrx> | thanks |
| 18:28:51 | <edrx> | now at least I can point to a specific underbrace in the diagram and say "this is the hard step" =/ |
| 18:29:46 | → | tomku joins (~tomku@syn-141-126-184-057.res.spectrum.com) |
| 18:30:39 | <edrx> | now I need to go a place without internet... |
| 18:30:44 | <edrx> | many many thanks =) |
| 18:32:11 | → | waleee joins (~waleee@h-176-10-144-38.NA.cust.bahnhof.se) |
| 18:35:06 | × | edrx quits (~Eduardo@2804:18:5804:f2b1:54b8:f1a5:f7d:fbf2) (Ping timeout: 255 seconds) |
| 18:39:46 | × | sord937 quits (~sord937@gateway/tor-sasl/sord937) (Quit: sord937) |
| 18:44:12 | × | tomku quits (~tomku@syn-141-126-184-057.res.spectrum.com) (Ping timeout: 252 seconds) |
| 18:50:40 | × | euleritian quits (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Ping timeout: 268 seconds) |
| 18:51:45 | → | tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
| 18:51:50 | → | euleritian joins (~euleritia@dynamic-176-002-137-249.176.2.pool.telefonica.de) |
| 18:53:47 | × | soverysour quits (~soverysou@user/soverysour) (Remote host closed the connection) |
| 18:54:01 | → | soverysour joins (~soverysou@81.196.150.219) |
| 18:54:02 | × | soverysour quits (~soverysou@81.196.150.219) (Changing host) |
| 18:54:02 | → | soverysour joins (~soverysou@user/soverysour) |
| 18:59:39 | × | euleritian quits (~euleritia@dynamic-176-002-137-249.176.2.pool.telefonica.de) (Read error: Connection reset by peer) |
| 18:59:57 | → | euleritian joins (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) |
| 19:07:46 | × | soverysour quits (~soverysou@user/soverysour) (Ping timeout: 264 seconds) |
| 19:28:39 | → | joeyadams joins (~joeyadams@2603:6010:5100:2ed:ef2:fbb7:f346:1550) |
| 19:32:31 | → | mreh joins (~matthew@host86-160-168-12.range86-160.btcentralplus.com) |
| 19:33:06 | × | tdmarrrrrrrrrrra quits (~cd@c-98-242-74-66.hsd1.ga.comcast.net) (Ping timeout: 256 seconds) |
| 19:33:54 | → | tdmarrrrrrrrrrra joins (~cd@c-98-242-74-66.hsd1.ga.comcast.net) |
| 19:38:22 | × | lxsameer quits (~lxsameer@Serene/lxsameer) (Ping timeout: 264 seconds) |
| 19:44:13 | × | phma quits (~phma@host-67-44-208-142.hnremote.net) (Read error: Connection reset by peer) |
| 19:45:05 | → | phma joins (~phma@2001:5b0:211f:df58:db5:77f1:4b7c:c21a) |
| 19:46:31 | → | tzh joins (~tzh@c-76-115-131-146.hsd1.or.comcast.net) |
| 19:53:59 | → | pavonia joins (~user@user/siracusa) |
| 19:59:27 | × | hgolden quits (~hgolden@syn-172-251-233-141.res.spectrum.com) (Remote host closed the connection) |
| 20:01:29 | × | Luj quits (~Luj@2a01:e0a:de4:a0e1:be24:11ff:febc:b5b5) (Quit: The Lounge - https://thelounge.chat) |
| 20:01:50 | → | hgolden joins (~hgolden@2603:8000:9d00:3ed1:2678:8497:aa5c:7fa9) |
| 20:01:53 | → | Luj joins (~Luj@2a01:e0a:de4:a0e1:be24:11ff:febc:b5b5) |
| 20:03:18 | × | gabriel_sevecek quits (~gabriel@188-167-229-200.dynamic.chello.sk) (Quit: WeeChat 4.2.2) |
| 20:04:38 | → | gabriel_sevecek joins (~gabriel@188-167-229-200.dynamic.chello.sk) |
| 20:06:32 | → | zetef joins (~quassel@2a02:2f00:5202:1200:3fa2:e908:b522:fa2f) |
| 20:06:32 | × | zetef quits (~quassel@2a02:2f00:5202:1200:3fa2:e908:b522:fa2f) (Client Quit) |
| 20:12:17 | × | Luj quits (~Luj@2a01:e0a:de4:a0e1:be24:11ff:febc:b5b5) (Ping timeout: 256 seconds) |
| 20:12:19 | → | Luj9 joins (~Luj@2a01:e0a:de4:a0e1:be24:11ff:febc:b5b5) |
| 20:14:35 | × | hgolden quits (~hgolden@2603:8000:9d00:3ed1:2678:8497:aa5c:7fa9) (Remote host closed the connection) |
| 20:20:20 | → | hgolden joins (~hgolden@2603:8000:9d00:3ed1:2678:8497:aa5c:7fa9) |
| 20:35:55 | → | emmanuelux joins (~emmanuelu@user/emmanuelux) |
| 20:40:37 | × | waleee quits (~waleee@h-176-10-144-38.NA.cust.bahnhof.se) (Ping timeout: 256 seconds) |
| 20:46:51 | × | simendsjo quits (~user@84.209.170.3) (Ping timeout: 252 seconds) |
| 20:49:29 | → | pyooque joins (~puke@user/puke) |
| 20:49:30 | × | puke quits (~puke@user/puke) (Killed (copper.libera.chat (Nickname regained by services))) |
| 20:49:30 | pyooque | is now known as puke |
| 20:50:45 | × | puke quits (~puke@user/puke) (Max SendQ exceeded) |
| 20:52:01 | → | puke joins (~puke@user/puke) |
| 21:04:33 | × | michalz quits (~michalz@185.246.207.193) (Quit: ZNC 1.9.0 - https://znc.in) |
| 21:17:41 | × | target_i quits (~target_i@user/target-i/x-6023099) (Quit: leaving) |
| 21:18:44 | × | tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 21:21:11 | → | tomku joins (~tomku@syn-141-126-184-057.res.spectrum.com) |
| 21:29:35 | × | tcard quits (~tcard@2400:4051:5801:7500:cf17:befc:ff82:5303) (Quit: Leaving) |
| 21:32:43 | → | tcard joins (~tcard@2400:4051:5801:7500:cf17:befc:ff82:5303) |
| 21:33:05 | × | tdmarrrrrrrrrrra quits (~cd@c-98-242-74-66.hsd1.ga.comcast.net) (Ping timeout: 272 seconds) |
| 21:33:31 | → | tdmarrrrrrrrrrra joins (~cd@c-98-242-74-66.hsd1.ga.comcast.net) |
| 21:43:01 | × | acidjnk_new3 quits (~acidjnk@p200300d6e72cfb62bc9ac2d1211b195e.dip0.t-ipconnect.de) (Ping timeout: 268 seconds) |
| 21:46:15 | × | __monty__ quits (~toonn@user/toonn) (Quit: leaving) |
| 21:46:21 | × | misterfish quits (~misterfis@84.53.85.146) (Ping timeout: 256 seconds) |
| 21:50:07 | × | bollu quits (~bollu@159.65.151.13) (Ping timeout: 268 seconds) |
| 21:50:38 | → | bollu joins (~bollu@159.65.151.13) |
| 21:52:55 | × | gentauro quits (~gentauro@user/gentauro) (Read error: Connection reset by peer) |
| 21:53:33 | × | califax quits (~califax@user/califx) (Remote host closed the connection) |
| 21:53:49 | → | califax joins (~califax@user/califx) |
| 21:57:16 | × | gmg quits (~user@user/gehmehgeh) (Remote host closed the connection) |
| 21:58:06 | → | gmg joins (~user@user/gehmehgeh) |
| 21:58:38 | → | gentauro joins (~gentauro@user/gentauro) |
| 22:04:59 | → | TactfulCitrus joins (~al@2a02:8012:87a6:0:fbe0:6116:6e30:e047) |
| 22:08:33 | × | malte quits (~malte@mal.tc) (Read error: Connection reset by peer) |
| 22:13:51 | × | euleritian quits (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Ping timeout: 268 seconds) |
| 22:17:27 | → | euleritian joins (~euleritia@dynamic-176-002-133-146.176.2.pool.telefonica.de) |
| 22:18:57 | → | malte joins (~malte@mal.tc) |
| 22:20:55 | × | destituion quits (~destituio@2a02:2121:6cb:fbc3:2f81:ee37:cafd:a2e0) (Ping timeout: 256 seconds) |
| 22:27:32 | × | takuan quits (~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection) |
| 22:28:52 | × | mreh quits (~matthew@host86-160-168-12.range86-160.btcentralplus.com) (Remote host closed the connection) |
| 22:41:48 | × | tdmarrrrrrrrrrra quits (~cd@c-98-242-74-66.hsd1.ga.comcast.net) (Ping timeout: 256 seconds) |
| 22:42:37 | → | tdmarrrrrrrrrrra joins (~cd@c-98-242-74-66.hsd1.ga.comcast.net) |
| 22:47:58 | × | tdmarrrrrrrrrrra quits (~cd@c-98-242-74-66.hsd1.ga.comcast.net) (Remote host closed the connection) |
| 23:10:06 | → | tomku|two joins (~tomku@syn-141-126-184-057.res.spectrum.com) |
| 23:12:08 | × | tomku quits (~tomku@syn-141-126-184-057.res.spectrum.com) (Ping timeout: 268 seconds) |
| 23:27:19 | × | oo_miguel quits (~Thunderbi@78.10.207.46) (Ping timeout: 260 seconds) |
| 23:43:49 | × | xdminsy quits (~xdminsy@117.147.70.231) (Quit: Konversation terminated!) |
| 23:44:14 | → | xdminsy joins (~xdminsy@117.147.70.231) |
| 23:45:10 | <lain`> | what row polymorphism library are people using? there's like 20 and most of them seem unmaintained |
| 23:50:34 | <jackdk> | I get by with HasField constraints from generic-lens |
| 23:54:57 | × | xff0x quits (~xff0x@2405:6580:b080:900:5277:df26:6b07:8b52) (Ping timeout: 272 seconds) |
All times are in UTC on 2024-07-04.