Logs on 2024-07-22 (liberachat/#haskell)
| 00:11:18 | × | gmg quits (~user@user/gehmehgeh) (Quit: Leaving) |
| 00:12:50 | × | sawilagar quits (~sawilagar@user/sawilagar) (Ping timeout: 260 seconds) |
| 00:17:15 | × | bitdex quits (~bitdex@gateway/tor-sasl/bitdex) (Quit: = "") |
| 00:19:15 | × | peterbecich quits (~Thunderbi@syn-047-229-123-186.res.spectrum.com) (Ping timeout: 260 seconds) |
| 00:29:00 | → | average joins (uid473595@user/average) |
| 00:31:29 | × | CrunchyFlakes quits (~CrunchyFl@ip92348280.dynamic.kabel-deutschland.de) (Read error: Connection reset by peer) |
| 00:34:05 | → | CrunchyFlakes joins (~CrunchyFl@ip92348280.dynamic.kabel-deutschland.de) |
| 00:44:20 | → | omentic joins (~apropos@104.193.135.206) |
| 01:10:17 | → | peterbecich joins (~Thunderbi@syn-047-229-123-186.res.spectrum.com) |
| 01:19:06 | × | xff0x quits (~xff0x@2405:6580:b080:900:1ad7:bf8c:8156:7b85) (Ping timeout: 276 seconds) |
| 01:21:14 | → | xff0x joins (~xff0x@2405:6580:b080:900:4b6d:240e:ce3d:bc81) |
| 01:29:58 | × | m5zs7k quits (aquares@web10.mydevil.net) (Quit: m5zs7k) |
| 01:33:29 | → | m5zs7k joins (aquares@web10.mydevil.net) |
| 01:44:08 | × | phma quits (~phma@2001:5b0:212a:d468:e9b2:3bc1:1a12:92a8) (Read error: Connection reset by peer) |
| 01:52:20 | → | phma joins (phma@2001:5b0:212a:b4a8:c0ba:6a3a:cddf:dd85) |
| 02:00:45 | × | peterbecich quits (~Thunderbi@syn-047-229-123-186.res.spectrum.com) (Ping timeout: 260 seconds) |
| 02:08:30 | × | waleee quits (~waleee@h-176-10-144-38.NA.cust.bahnhof.se) (Ping timeout: 276 seconds) |
| 02:10:03 | × | dysthesis quits (~dysthesis@user/dysthesis) (Remote host closed the connection) |
| 02:13:39 | <omentic> | hi all, i would like to call a function of type IO Bool in a case guard. what would the notation for this look like? |
| 02:15:30 | <geekosaur> | you can't, you call it before and use the result in the guard |
| 02:16:11 | <omentic> | it depends on the thing i'm matching on though |
| 02:16:18 | <omentic> | https://paste.sr.ht/~apropos/be0bc82b401ee0d1107d9a072c5c94ce52678e21 |
| 02:16:31 | <omentic> | (this doesn't compile & has other issues but it's vaguely what i'm trying to do) |
| 02:18:19 | × | td_ quits (~td@i53870911.versanet.de) (Ping timeout: 245 seconds) |
| 02:19:23 | <geekosaur> | yes, starting with the factthat `Compiler` doesn't have a `MonadIO` instance so you can't do `doesFileExist` at all |
| 02:19:56 | <geekosaur> | (yes, there is a backdoor. it doesn't do what you want and is free to give you garbage if you attempt it) |
| 02:20:19 | → | td_ joins (~td@i53870938.versanet.de) |
| 02:21:08 | <omentic> | what should i be doing instead then? i think i need to perform IO in the match to check if the template path i'm matching on actually exists |
| 02:21:20 | <omentic> | (i know zero haskell for reference also) |
| 02:24:41 | <geekosaur> | I don't know Hakyll (I relied on hoogle to see what Compiler was) so I don't think I can give you a good answer |
| 02:25:41 | <omentic> | hmm, i might be able to check if the template exists from the context somehow |
| 02:26:12 | <omentic> | ok but so returning a type that does not have a MonadIO instance means you can't do any IO within the function? |
| 02:29:47 | <geekosaur> | yes |
| 02:36:22 | <mauke> | not technically true, but probably true enough |
| 02:36:55 | <mauke> | by which I mean I could define a type with a custom "embed IO action" operation without making it an instance of MonadIO |
| 02:37:37 | → | arahael joins (~arahael@119-18-1-21.771201.syd.nbn.aussiebb.net) |
| 02:42:45 | <omentic> | holy smokes my code compiled |
| 02:43:06 | <omentic> | ahaha yes fantastic |
| 02:43:36 | × | CrunchyFlakes quits (~CrunchyFl@ip92348280.dynamic.kabel-deutschland.de) (Read error: Connection reset by peer) |
| 02:43:39 | <omentic> | ok i didn't need to match against the guard at all, hakyll will catch invalid paths to templates and treat it as a user error |
| 02:43:46 | <omentic> | omg this works, wow |
| 02:44:54 | × | aaronv quits (~aaronv@user/aaronv) (Ping timeout: 276 seconds) |
| 02:45:59 | → | CrunchyFlakes joins (~CrunchyFl@ip92348280.dynamic.kabel-deutschland.de) |
| 02:48:52 | → | sympt joins (~sympt@user/sympt) |
| 02:52:13 | → | aaronv joins (~aaronv@user/aaronv) |
| 03:07:39 | × | aaronv quits (~aaronv@user/aaronv) (Ping timeout: 276 seconds) |
| 03:08:24 | → | aaronv joins (~aaronv@user/aaronv) |
| 03:22:18 | → | bitdex joins (~bitdex@gateway/tor-sasl/bitdex) |
| 03:45:42 | → | peterbecich joins (~Thunderbi@syn-047-229-123-186.res.spectrum.com) |
| 03:50:14 | × | aaronv quits (~aaronv@user/aaronv) (Ping timeout: 260 seconds) |
| 03:59:14 | → | aforemny joins (~aforemny@i59F516C3.versanet.de) |
| 03:59:45 | × | aforemny_ quits (~aforemny@2001:9e8:6cd3:7e00:62f7:f9a2:3af8:50bb) (Ping timeout: 260 seconds) |
| 04:09:46 | → | smalltalkman joins (uid545680@id-545680.hampstead.irccloud.com) |
| 04:16:42 | × | peterbecich quits (~Thunderbi@syn-047-229-123-186.res.spectrum.com) (Ping timeout: 252 seconds) |
| 04:17:04 | × | euleritian quits (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Ping timeout: 260 seconds) |
| 04:17:15 | × | cpressey quits (~weechat@176.254.71.203) (Ping timeout: 260 seconds) |
| 04:17:38 | → | euleritian joins (~euleritia@dynamic-176-006-128-049.176.6.pool.telefonica.de) |
| 04:18:29 | × | euleritian quits (~euleritia@dynamic-176-006-128-049.176.6.pool.telefonica.de) (Read error: Connection reset by peer) |
| 04:18:50 | → | euleritian joins (~euleritia@77.22.252.56) |
| 04:20:52 | × | euleritian quits (~euleritia@77.22.252.56) (Read error: Connection reset by peer) |
| 04:22:21 | → | euleritian joins (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) |
| 04:26:57 | × | euleritian quits (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Ping timeout: 276 seconds) |
| 04:27:48 | → | euleritian joins (~euleritia@dynamic-176-006-128-049.176.6.pool.telefonica.de) |
| 04:33:11 | × | euleritian quits (~euleritia@dynamic-176-006-128-049.176.6.pool.telefonica.de) (Read error: Connection reset by peer) |
| 04:33:29 | → | euleritian joins (~euleritia@77.22.252.56) |
| 04:42:55 | × | omentic quits (~apropos@104.193.135.206) (Quit: leaving) |
| 05:06:15 | × | tomku quits (~tomku@user/tomku) (Ping timeout: 260 seconds) |
| 05:06:28 | → | tomku joins (~tomku@user/tomku) |
| 05:09:57 | × | euphores quits (~SASL_euph@user/euphores) (Quit: Leaving.) |
| 05:15:32 | → | euphores joins (~SASL_euph@user/euphores) |
| 05:16:05 | × | tcard quits (~tcard@p5147008-ipxg23701hodogaya.kanagawa.ocn.ne.jp) (Ping timeout: 252 seconds) |
| 05:23:58 | → | Midjak joins (~MarciZ@82.66.147.146) |
| 05:30:28 | × | Sgeo quits (~Sgeo@user/sgeo) (Read error: Connection reset by peer) |
| 05:32:30 | × | euleritian quits (~euleritia@77.22.252.56) (Read error: Connection reset by peer) |
| 05:33:15 | → | euleritian joins (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) |
| 05:37:39 | × | euleritian quits (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Ping timeout: 252 seconds) |
| 05:38:14 | → | euleritian joins (~euleritia@dynamic-176-006-128-049.176.6.pool.telefonica.de) |
| 05:38:35 | → | takuan joins (~takuan@178-116-218-225.access.telenet.be) |
| 05:45:09 | → | michalz joins (~michalz@185.246.207.221) |
| 05:47:17 | → | rosco joins (~rosco@121.120.69.219) |
| 05:49:54 | × | euleritian quits (~euleritia@dynamic-176-006-128-049.176.6.pool.telefonica.de) (Read error: Connection reset by peer) |
| 05:50:12 | → | euleritian joins (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) |
| 05:53:37 | × | michalz quits (~michalz@185.246.207.221) (Quit: ZNC 1.9.0 - https://znc.in) |
| 05:56:24 | → | michalz joins (~michalz@185.246.207.221) |
| 06:03:35 | × | emmanuelux quits (~emmanuelu@user/emmanuelux) (Quit: au revoir) |
| 06:14:52 | × | YoungFrog quits (~youngfrog@2a02:a03f:c9db:fc00:d73b:e7c2:b203:47a3) (Quit: ZNC 1.7.x-git-3-96481995 - https://znc.in) |
| 06:15:12 | → | YoungFrog joins (~youngfrog@39.129-180-91.adsl-dyn.isp.belgacom.be) |
| 06:17:15 | → | chexum_ joins (~quassel@gateway/tor-sasl/chexum) |
| 06:21:16 | × | chexum quits (~quassel@gateway/tor-sasl/chexum) (Ping timeout: 260 seconds) |
| 06:34:57 | × | Midjak quits (~MarciZ@82.66.147.146) (Quit: This computer has gone to sleep) |
| 06:37:09 | × | euleritian quits (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Ping timeout: 248 seconds) |
| 06:38:07 | → | euleritian joins (~euleritia@dynamic-176-006-128-049.176.6.pool.telefonica.de) |
| 06:39:43 | → | sord937 joins (~sord937@gateway/tor-sasl/sord937) |
| 06:39:43 | → | danse-nr3 joins (~danse-nr3@user/danse-nr3) |
| 06:41:57 | → | Tuplanolla joins (~Tuplanoll@91-159-69-59.elisa-laajakaista.fi) |
| 06:45:02 | × | CrunchyFlakes quits (~CrunchyFl@ip92348280.dynamic.kabel-deutschland.de) (Read error: Connection reset by peer) |
| 06:47:46 | → | CrunchyFlakes joins (~CrunchyFl@ip92348280.dynamic.kabel-deutschland.de) |
| 06:53:17 | → | acidjnk joins (~acidjnk@p200300d6e72cfb694c86a1cb8ab41399.dip0.t-ipconnect.de) |
| 06:54:18 | × | ft quits (~ft@p3e9bc4e7.dip0.t-ipconnect.de) (Quit: leaving) |
| 07:12:18 | → | misterfish joins (~misterfis@84.53.85.146) |
| 07:14:09 | → | tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
| 07:16:47 | × | rosco quits (~rosco@121.120.69.219) (Quit: Lost terminal) |
| 07:50:42 | → | zetef joins (~quassel@2a02:2f00:5202:1200:3fa2:e908:b522:fa2f) |
| 07:50:54 | × | zetef quits (~quassel@2a02:2f00:5202:1200:3fa2:e908:b522:fa2f) (Client Quit) |
| 07:57:05 | → | Lord_of_Life_ joins (~Lord@user/lord-of-life/x-2819915) |
| 07:57:42 | → | machinedgod joins (~machinedg@d173-183-246-216.abhsia.telus.net) |
| 07:58:02 | × | Lord_of_Life quits (~Lord@user/lord-of-life/x-2819915) (Ping timeout: 255 seconds) |
| 07:58:29 | Lord_of_Life_ | is now known as Lord_of_Life |
| 07:58:49 | → | CiaoSen joins (~Jura@2a05:5800:2b1:f200:e6b9:7aff:fe80:3d03) |
| 08:02:56 | × | euleritian quits (~euleritia@dynamic-176-006-128-049.176.6.pool.telefonica.de) (Read error: Connection reset by peer) |
| 08:03:14 | → | euleritian joins (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) |
| 08:03:14 | → | gmg joins (~user@user/gehmehgeh) |
| 08:09:17 | → | flounders joins (~flounders@2607:fb91:f01:d76e:1e66:42c0:b933:4f56) |
| 08:13:35 | × | danse-nr3 quits (~danse-nr3@user/danse-nr3) (Quit: see you soon) |
| 08:13:58 | × | econo_ quits (uid147250@id-147250.tinside.irccloud.com) (Quit: Connection closed for inactivity) |
| 08:29:06 | → | danse-nr3 joins (~danse-nr3@user/danse-nr3) |
| 08:35:56 | × | pointlessslippe1 quits (~pointless@212.82.82.3) (Ping timeout: 252 seconds) |
| 08:40:59 | → | pointlessslippe1 joins (~pointless@212.82.82.3) |
| 08:44:25 | → | chele joins (~chele@user/chele) |
| 08:45:30 | × | chele quits (~chele@user/chele) (Client Quit) |
| 08:46:50 | → | chele joins (~chele@user/chele) |
| 08:58:39 | × | stiell quits (~stiell@gateway/tor-sasl/stiell) (Remote host closed the connection) |
| 08:59:18 | → | stiell joins (~stiell@gateway/tor-sasl/stiell) |
| 09:00:18 | → | iteratee_ joins (~kyle@162.218.222.207) |
| 09:02:14 | × | haetsal quits (~quassel@221.138.168.192) (Quit: No Ping reply in 180 seconds.) |
| 09:02:49 | × | iteratee quits (~kyle@162.218.222.207) (Ping timeout: 252 seconds) |
| 09:03:27 | → | haetsal joins (~quassel@221.138.168.192) |
| 09:10:37 | → | __monty__ joins (~toonn@user/toonn) |
| 09:23:19 | → | Midjak joins (~MarciZ@82.66.147.146) |
| 09:37:30 | × | euleritian quits (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Ping timeout: 260 seconds) |
| 09:37:47 | → | euleritian joins (~euleritia@dynamic-176-006-128-049.176.6.pool.telefonica.de) |
| 10:14:06 | → | cfricke joins (~cfricke@user/cfricke) |
| 10:19:20 | × | euleritian quits (~euleritia@dynamic-176-006-128-049.176.6.pool.telefonica.de) (Ping timeout: 252 seconds) |
| 10:20:00 | → | euleritian joins (~euleritia@dynamic-176-000-009-010.176.0.pool.telefonica.de) |
| 10:20:21 | × | euleritian quits (~euleritia@dynamic-176-000-009-010.176.0.pool.telefonica.de) (Read error: Connection reset by peer) |
| 10:22:52 | → | euleritian joins (~euleritia@dynamic-176-000-009-010.176.0.pool.telefonica.de) |
| 10:23:35 | × | danse-nr3 quits (~danse-nr3@user/danse-nr3) (Ping timeout: 260 seconds) |
| 10:23:52 | → | danse-nr3 joins (~danse-nr3@user/danse-nr3) |
| 10:24:26 | → | sawilagar joins (~sawilagar@user/sawilagar) |
| 10:36:54 | × | phma quits (phma@2001:5b0:212a:b4a8:c0ba:6a3a:cddf:dd85) (Quit: Konversation terminated!) |
| 10:54:36 | → | lortabac joins (~lortabac@host-87-8-210-48.retail.telecomitalia.it) |
| 10:56:10 | × | danse-nr3 quits (~danse-nr3@user/danse-nr3) (Quit: Leaving) |
| 10:57:25 | × | tomku quits (~tomku@user/tomku) (Ping timeout: 260 seconds) |
| 10:57:40 | → | tomku joins (~tomku@user/tomku) |
| 11:07:01 | × | CrunchyFlakes quits (~CrunchyFl@ip92348280.dynamic.kabel-deutschland.de) (Read error: Connection reset by peer) |
| 11:09:38 | → | CrunchyFlakes joins (~CrunchyFl@ip92348280.dynamic.kabel-deutschland.de) |
| 11:12:53 | × | CiaoSen quits (~Jura@2a05:5800:2b1:f200:e6b9:7aff:fe80:3d03) (Ping timeout: 248 seconds) |
| 11:15:20 | <bwe> | which currently maintained alternatives to acid-state exist in the Haskell world? I need to update and retrieve values for unique keys. the data does fit in memory. |
| 11:15:26 | × | euleritian quits (~euleritia@dynamic-176-000-009-010.176.0.pool.telefonica.de) (Read error: Connection reset by peer) |
| 11:17:00 | → | euleritian joins (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) |
| 11:21:26 | × | euleritian quits (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Ping timeout: 255 seconds) |
| 11:22:59 | × | CrunchyFlakes quits (~CrunchyFl@ip92348280.dynamic.kabel-deutschland.de) (Read error: Connection reset by peer) |
| 11:24:29 | → | euleritian joins (~euleritia@dynamic-176-000-009-010.176.0.pool.telefonica.de) |
| 11:25:07 | → | CrunchyFlakes joins (~CrunchyFl@146.52.130.128) |
| 11:26:32 | × | CrunchyFlakes quits (~CrunchyFl@146.52.130.128) (Read error: Connection reset by peer) |
| 11:29:08 | → | CrunchyFlakes joins (~CrunchyFl@146.52.130.128) |
| 11:30:02 | × | tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 11:34:08 | × | euleritian quits (~euleritia@dynamic-176-000-009-010.176.0.pool.telefonica.de) (Read error: Connection reset by peer) |
| 11:35:58 | → | euleritian joins (~euleritia@dynamic-176-000-009-010.176.0.pool.telefonica.de) |
| 11:43:03 | <haskellbridge> | <mauke> sqlite |
| 11:45:35 | × | lortabac quits (~lortabac@host-87-8-210-48.retail.telecomitalia.it) (Quit: WeeChat 4.2.2) |
| 11:45:56 | <Rembane> | bwe: What about Data.Map.Strict or its hashmap-based variant? Could they fill the same need? |
| 11:46:58 | <[exa]> | Hey all, I'm trying to use Generic1 to make ToMyFormat1-style typeclasses automatically. Roughly following ToJSON1 from aeson, I'm hitting a problem where when processing Rec1 and Par1, it seems that the typesystem is unable to see that the type I'm processing is indeed the one that is supposed to go out. Is there any advice on that? I managed to make a small non-working example here: |
| 11:47:00 | <[exa]> | https://paste.tomsmeding.com/Bm5DMIGR |
| 11:48:10 | <[exa]> | The error is basically "Expected Par1 x -> a, got Par1 x -> x" which I assume that I'm either pushing not enough or too much type equality to there somewhere somehow |
| 11:49:07 | <[exa]> | btw the "data" in XYZ are kindof prolog-like clauses, something(this(), that()), etc. |
| 11:52:21 | × | cfricke quits (~cfricke@user/cfricke) (Ping timeout: 248 seconds) |
| 11:53:03 | → | Unicorn_Princess joins (~Unicorn_P@user/Unicorn-Princess/x-3540542) |
| 11:55:38 | <[exa]> | bonus question that I guess is very related: what does the `x` in ` |
| 11:55:40 | <[exa]> | class GToXYZ param rep out where gToXYZ :: param -> rep x -> out` (line 21) actually do |
| 11:57:50 | × | m1dnight quits (~christoph@82.146.125.185) (Quit: WeeChat 4.2.2) |
| 11:58:23 | <bwe> | Rembane: I'd like its simplicity. Question is how to persist it to disk? |
| 11:58:32 | → | m1dnight joins (~christoph@82.146.125.185) |
| 11:59:26 | <bwe> | <mauke> I am already using that; my concern now is to serialise and deserialise my haskell data structures to and from sqlite using selda. |
| 12:01:20 | <Rembane> | bwe: if you need persisting to disk then sqlite is a better fit |
| 12:02:08 | <Lears> | [exa]: IIRC that's been "reserved for future use" for years. |
| 12:02:29 | × | amjoseph quits (~amjoseph@static-198-44-128-146.cust.tzulo.com) (Ping timeout: 245 seconds) |
| 12:03:47 | <Lears> | Mentioned here: https://hackage.haskell.org/package/base-4.20.0.1/docs/GHC-Generics.html#g:10 |
| 12:05:07 | → | ph88 joins (~ph88@2a02:8109:9e26:c800:c862:a391:c956:e9fa) |
| 12:06:25 | → | amjoseph joins (~amjoseph@static-198-44-128-146.cust.tzulo.com) |
| 12:07:58 | × | ph88 quits (~ph88@2a02:8109:9e26:c800:c862:a391:c956:e9fa) (Remote host closed the connection) |
| 12:09:12 | → | ph88 joins (~ph88@2a02:8109:9e26:c800:8b04:e43e:ede4:7dfb) |
| 12:10:44 | → | tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
| 12:15:25 | × | Midjak quits (~MarciZ@82.66.147.146) (Quit: This computer has gone to sleep) |
| 12:18:29 | × | ddellacosta quits (~ddellacos@ool-44c73d29.dyn.optonline.net) (Ping timeout: 252 seconds) |
| 12:20:32 | → | ashemark joins (~nav@49.205.39.70) |
| 12:20:41 | × | RedFlamingos quits (~RedFlamin@user/RedFlamingos) (Quit: RedFlamingos) |
| 12:20:56 | <ashemark> | hi, all! |
| 12:22:35 | <ashemark> | i've been reading learnyouahaskell and what a beautiful book it is.. currently i'm stuck on chapter 9 after devouring the first 8 chapters in 2 days.. looks like i hit a brick wall.. how to get unstuck? |
| 12:23:59 | <haskellbridge> | <sm> what's ch 9 about ashemark |
| 12:24:50 | <haskellbridge> | <sm> and what's something specific you're stuck on ? |
| 12:27:46 | <bwe> | Rembane: Well, I fail currently with defining Bounded for (Maybe Text). Context: Defining SqlType in Selda. |
| 12:29:12 | <ashemark> | haskellbridge: chapter 9 is about input/output (actions) with streams etc.. |
| 12:31:15 | <bwe> | ashemark: maybe just take a break and connect back with the enjoyment you had since to replenish your energy… |
| 12:31:44 | <ashemark> | bwe: thanks ! it's been a month since i finished the other chapters :( but i'll revisit again |
| 12:32:30 | <bwe> | ashemark: oh, I didn't know that; it sounded to me that you just did it the last 2 days… |
| 12:33:29 | <haskellbridge> | <thirdofmay18081814goya> is _Parallel and Concurrent Haskell_ still common practice for parallelism? |
| 12:34:25 | <Rembane> | bwe: That's interesting. How far do you get? |
| 12:35:23 | <bwe> | Rembane: not far. it works only for non GADT sum types like `data Color = Blue | Green | Red` |
| 12:36:01 | <bwe> | it doesn't work for `data Color = Blue Int | Green Double | Red` |
| 12:36:32 | <bwe> | it doesn't because it requires Enum and Bounded instances and Bounded isn't there for GADT |
| 12:36:33 | <Rembane> | bwe: Yeah, because that's what enums in SQL can represent |
| 12:36:54 | <Rembane> | bwe: ...what are you trying to do on a more high level? |
| 12:38:16 | <jackdk> | ashemark: I like B.Yorgey's explanation of how IO works. I'd be interested to know if it helps you: https://www.youtube.com/watch?v=4zrYRiTSWQo |
| 12:38:31 | × | dev2 quits (~dev@2405:201:c062:8850:ae2f:b52b:21ba:40d5) (Ping timeout: 264 seconds) |
| 12:39:10 | <bwe> | I am searching through [Entry], which I need to update individually. Currently I create [Entry] on the fly. But that requires too much time for creating a REst API |
| 12:39:56 | <bwe> | And this `Entry` data structure is composed of other data structures, GADTs, etc. |
| 12:40:17 | <bwe> | I might consider to write it just to json and store it along an id to sqlite |
| 12:40:42 | <Rembane> | That sounds like a small step forward, it might become painful later, but sufficient for now. |
| 12:41:14 | <bwe> | assumption: I don't need Enum and Bounded in encoding / decoding to and from json. |
| 12:41:18 | <bwe> | Rembane: Why? |
| 12:42:01 | <bwe> | I did find the idea of acid-state appealing since I can just use my data structure as it is. |
| 12:43:36 | <Rembane> | bwe: Because indices etc don't work very well with json-blobs, and sql won't help you in the same way as it does when you have columns. |
| 12:45:43 | → | lortabac joins (~lortabac@host-87-8-210-48.retail.telecomitalia.it) |
| 12:47:56 | → | cfricke joins (~cfricke@user/cfricke) |
| 12:48:15 | <[exa]> | Lears: ok good to know, I hoped it would somewhat point me towards solving this issue because that was the last thing I was missing :D |
| 12:50:46 | × | bitdex quits (~bitdex@gateway/tor-sasl/bitdex) (Quit: = "") |
| 12:51:56 | <bwe> | Rembane: so the question is: should I change my data structure to fit into sql OR should I find a solution that just persists my data structure? |
| 12:52:08 | → | Square2 joins (~Square@user/square) |
| 12:52:26 | × | tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 12:52:46 | <bwe> | I mean, Project M36 is the ultimate solution in terms of sane architecture. |
| 12:53:12 | <Rembane> | bwe: I would go for the sql version because I really like sql etc, but maybe it's less work to find something that could persist your existing data structures. |
| 12:53:29 | → | tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
| 12:53:50 | <hadronized> | GHC doesn’t have an extension to do DT typing, right? |
| 12:54:37 | <hadronized> | I lately had a look at Zig (completely irrelevant to Haskell / Idris) and was surprised that it could almost be the « perfect fit » for low-level, safe programming, but it lacks basically everything that would make it a safe modern language |
| 12:54:50 | <hadronized> | and I realized linear types and DT (which it almost has) would probably solve most of the problems |
| 12:54:58 | <[exa]> | by DT you mean Dependent Types right? |
| 12:54:58 | <hadronized> | I’m not really keen to go the ATS route… |
| 12:55:00 | <hadronized> | yes |
| 12:55:23 | <hadronized> | Zig doesn’t have DT, yet it can do crazy powerful things with comptime |
| 12:55:35 | <hadronized> | it’s like lifted DT (between comptime and types, instead of types and values) |
| 12:55:39 | <[exa]> | well you can do a lot of DT-like stuff, I guess the zig things should be doable mostly |
| 12:55:44 | <[exa]> | anything specific from zig? |
| 12:56:05 | <hadronized> | comptime mostly, like using a function as part of a type |
| 12:56:15 | <bwe> | Rembane: I have the feeling that going into the sql direction will end up in having to cut the data into different tables and reconstruct the data structure again once I load it… |
| 12:56:39 | <bwe> | Rembane: so, relational dbs are not at all relational; I need to do the relations manually… |
| 12:56:49 | <Rembane> | bwe: Yup |
| 12:56:49 | <hadronized> | for instance, a function that takes a string and return an array of N placeholders by counting the holes in the string |
| 12:56:52 | <hadronized> | that kind of stuff |
| 12:57:18 | <hadronized> | but Zig doesn’t have protection against UAF, against sUAF, it doesn’t have linear typing nor destructors so it’s super simple to leak memory |
| 12:57:20 | <bwe> | Rembane: fair enough yet still that will be detrimental to performance |
| 12:57:31 | <bwe> | Rembane: do you have experience with acid-state? |
| 12:57:49 | <hadronized> | [exa]: do you know any low-level language besides ATS with support of linear types and DT? |
| 12:58:05 | <[exa]> | hadronized: lots of this stuff is preprocessing and can be done with TH pretty nicely, or with Generics if you really want the thing to reflect on what the type inference thinks |
| 12:58:18 | <[exa]> | hadronized: not really tbh |
| 12:58:28 | <hadronized> | [exa]: that’s what is so surprising about Zig |
| 12:58:42 | × | average quits (uid473595@user/average) (Quit: Connection closed for inactivity) |
| 12:58:44 | <hadronized> | it doesn’t have macros, template-zig, generics; everything is comptime reflection |
| 12:58:56 | <hadronized> | which is probably the best of all worlds |
| 12:59:04 | <hadronized> | but the language is not modern in terms of protection |
| 12:59:14 | <[exa]> | (also "DT support" is smudgy usually. People confuse that with typelevel computation all times, at which point you might say c++ has dependent types) |
| 12:59:23 | <hadronized> | people lash out at Rust’s lifetimes “because too complex” but they are there for a good reason |
| 12:59:37 | <hadronized> | [exa]: no, I mean the same as Idris 2 |
| 12:59:53 | <hadronized> | something that can reason on the values |
| 13:00:02 | <hadronized> | I remember a talk about LH that could do that |
| 13:00:08 | <hadronized> | it was during a ZuriHack IIRC |
| 13:00:26 | → | dev2 joins (~dev@2405:201:c062:8850:44b5:cf88:3e8b:8a9d) |
| 13:00:35 | <hadronized> | but I guess refinement types ≠ DT |
| 13:03:31 | <Rembane> | bwe: I have not experience with acid-state. I usually do the whole normalization dance and put things in databases |
| 13:04:27 | <bwe> | Rembane: so, you would actually do the effort of deconstructing all of the data structure to put it into different tables only then to reconstruct it from there? |
| 13:05:03 | <Rembane> | bwe: Exactly! |
| 13:05:25 | bwe | looks into TCache's examples: https://github.com/agocorona/TCache/blob/master/demos/indexQuery.hs -- it says it supports even indices |
| 13:06:09 | × | euleritian quits (~euleritia@dynamic-176-000-009-010.176.0.pool.telefonica.de) (Ping timeout: 252 seconds) |
| 13:06:59 | → | euleritian joins (~euleritia@dynamic-176-002-148-207.176.2.pool.telefonica.de) |
| 13:07:51 | <[exa]> | hadronized: btw the zig approach _is_ nice, might be an interesting experiment to just slap it on other languages |
| 13:08:02 | <hadronized> | what approach are you referring to? |
| 13:08:28 | <hadronized> | [exa]: Zig used to allow comptime mutation over containers; i.e. you could in theory implement your linear engine with it |
| 13:08:30 | <hadronized> | but they removed it |
| 13:08:48 | <hadronized> | the problem I have with Zig is that it’s a pretty new language, which has, at least to me, the wrong mantra |
| 13:08:57 | <hadronized> | it states that it’s safer than unsafe Rust, which is true |
| 13:09:14 | <hadronized> | but most of the Rust code one write is 99,9% of the time safe Rust |
| 13:09:20 | <[exa]> | yeah... let's go to #-offtopic though |
| 13:09:24 | <hadronized> | while with Zig, well, it’s 100% safer unsafe |
| 13:09:26 | <hadronized> | yeah. |
| 13:11:07 | → | cassiopea joins (~cassiopea@user/cassiopea) |
| 13:14:42 | <probie> | Zig's "general purpose allocator" detects use after free. That turns it into a runtime error, which certainly isn't as great as detecting it at compile time, but at least you won't end up with weird behaviour |
| 13:15:57 | → | ash3en joins (~Thunderbi@89.246.174.164) |
| 13:20:20 | × | ash3en quits (~Thunderbi@89.246.174.164) (Ping timeout: 260 seconds) |
| 13:24:19 | → | ystael joins (~ystael@user/ystael) |
| 13:25:03 | <bwe> | Rembane: there is https://github.com/thma/generic-persistence |
| 13:25:45 | <bwe> | but I haven't clarified for the more GADT support yet, at least the examples don't suggest that it's supporting GADTs |
| 13:26:13 | <probie> | I wonder if it'd be possible to abuse something ST-like to have block of code in Haskell where all data is allocated by a specific allocator. But allowing that would probably involve adding an "Allocator" argument to `BoxedRep`, which seems like it could be very messy |
| 13:26:41 | <probie> | especially since you'd want most types to be able to be polymorphic in their allocator |
| 13:27:15 | → | CiaoSen joins (~Jura@2a05:5800:2b1:f200:e6b9:7aff:fe80:3d03) |
| 13:28:22 | → | lambdaDandy joins (~lambdaDan@84.245.120.100) |
| 13:28:57 | → | ddellacosta joins (~ddellacos@ool-44c73d29.dyn.optonline.net) |
| 13:30:56 | × | lambdaDandy quits (~lambdaDan@84.245.120.100) (Client Quit) |
| 13:31:25 | → | pure_sandals joins (~pure_sand@84.245.120.100) |
| 13:31:39 | × | cfricke quits (~cfricke@user/cfricke) (Quit: WeeChat 4.2.2) |
| 13:31:47 | <pure_sandals> | good day to you fellow cabalists. anyone compiles to wasm here? |
| 13:32:52 | × | CiaoSen quits (~Jura@2a05:5800:2b1:f200:e6b9:7aff:fe80:3d03) (Ping timeout: 252 seconds) |
| 13:33:31 | <[exa]> | pure_sandals: I wish I would |
| 13:33:48 | × | euleritian quits (~euleritia@dynamic-176-002-148-207.176.2.pool.telefonica.de) (Read error: Connection reset by peer) |
| 13:34:07 | → | euleritian joins (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) |
| 13:35:04 | <probie> | pure_sandals: The answer to your question is "yes", as long as you _don't_ mean from Haskell :p |
| 13:36:31 | <pure_sandals> | [exa]: that makes at least two of us |
| 13:36:47 | <pure_sandals> | probie: unfortunately that's what i mean |
| 13:37:29 | <pure_sandals> | this compiles nicely out of the box https://github.com/tweag/ghc-wasm-miso-examples |
| 13:37:38 | <pure_sandals> | but i want to depend on other packages |
| 13:37:46 | <pure_sandals> | and they don't play along so nicely |
| 13:38:41 | <probie> | What happens? |
| 13:39:37 | <pure_sandals> | this https://github.com/tweag/ghc-wasm-miso-examples/issues/17 |
| 13:40:02 | <pure_sandals> | wasm-ld: error: unable to find library -lHSrts-1.0.2_thr |
| 13:40:02 | × | euleritian quits (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Read error: Connection reset by peer) |
| 13:40:28 | <pure_sandals> | i assume threaded runtime is not available on wasm backend? am I reading that correctly? |
| 13:40:50 | → | euleritian joins (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) |
| 13:43:17 | → | ash3en joins (~Thunderbi@89.246.174.164) |
| 13:45:41 | × | tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 13:47:36 | <probie> | I think that's what the docs imply; "Do keep in mind that we’re using the single-threaded runtime at the moment, so other than supporting re-entrancy, safe C calls don’t offer extra advantage than unsafe." |
| 13:48:20 | × | ddellacosta quits (~ddellacos@ool-44c73d29.dyn.optonline.net) (Ping timeout: 252 seconds) |
| 13:50:06 | <probie> | However, even without that issue, I'm sceptical of whether the `entropy` package is going to work at all. |
| 13:51:08 | <ashemark> | jackdk: thank you!! |
| 13:52:15 | × | ashemark quits (~nav@49.205.39.70) (Quit: leaving) |
| 13:57:22 | <pure_sandals> | hmm, I assumed threaded code would get somehow emulated in a single thread - i think i saw stm package compiled to wasm somewhere..guess it's not that straightforward |
| 13:57:30 | <pure_sandals> | nice find, thanks |
| 13:57:41 | → | cfricke joins (~cfricke@user/cfricke) |
| 13:57:43 | <pure_sandals> | why do you think it would not work at all? |
| 13:57:51 | <pure_sandals> | entropy can compile to javascript backend |
| 13:58:16 | <pure_sandals> | so i assumed compiling it to wasm would be a breeze as well |
| 14:02:48 | <probie> | Because it has a lot of CPP-shenanigans going on to choose the appropriate "backend" for the target platform. Without that, it defaults to the "generic unix" backend, which tries to read `/dev/urandom`, which it won't be able to find |
| 14:03:20 | → | tram joins (~tram@2a02:587:b43:7300:a89e:683a:2da1:a2ed) |
| 14:03:31 | <pure_sandals> | (y) |
| 14:04:11 | <probie> | If you were to fork entropy and update it so that it chooses the same choices for the wasm backend as it does for ghcjs, it might "just work", since jsaddle works |
| 14:04:54 | <haskellbridge> | <thirdofmay18081814goya> how do I figure out what to import in cabal in order to have "Control.Parallel.Strategies" work? |
| 14:05:25 | <pure_sandals> | indeed, i went down this rabbit hole for a while but ran into other problems, with some imports if i remember correctly...and all this time i was not even sure if what i am doing is not going to break something else |
| 14:06:18 | <pure_sandals> | oh well, i better ask entropy "owner" to do it for me |
| 14:09:51 | → | tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
| 14:09:55 | × | misterfish quits (~misterfis@84.53.85.146) (Quit: leaving) |
| 14:10:17 | → | misterfish joins (~misterfis@84.53.85.146) |
| 14:10:29 | × | misterfish quits (~misterfis@84.53.85.146) (Client Quit) |
| 14:11:23 | → | misterfish joins (~misterfis@84.53.85.146) |
| 14:11:25 | × | misterfish quits (~misterfis@84.53.85.146) (Client Quit) |
| 14:11:33 | <pure_sandals> | thirdofmay18081814goya: https://hoogle.haskell.org/?hoogle=Control.Parallel.Strategies |
| 14:12:23 | <pure_sandals> | how does on reply to these "bridge messages" correctly? |
| 14:12:39 | <haskellbridge> | <thirdofmay18081814goya> ah i never realized hoogle listed the package name itself, ty |
| 14:12:44 | <pure_sandals> | probie: anyway, thanks for help! (y) |
| 14:13:01 | <haskellbridge> | <thirdofmay18081814goya> pure_sandals: (i received the reply properly as if matrix-native) |
| 14:13:15 | → | misterfish joins (~misterfis@84.53.85.146) |
| 14:13:16 | <pure_sandals> | thirdofmay18081814goya: cool (y) |
| 14:13:45 | × | misterfish quits (~misterfis@84.53.85.146) (Client Quit) |
| 14:14:45 | → | misterfish joins (~misterfis@84.53.85.146) |
| 14:14:59 | × | misterfish quits (~misterfis@84.53.85.146) (Client Quit) |
| 14:15:29 | → | misterfish joins (~misterfis@84.53.85.146) |
| 14:17:01 | → | danse-nr3 joins (~danse-nr3@user/danse-nr3) |
| 14:21:11 | × | danse-nr3 quits (~danse-nr3@user/danse-nr3) (Remote host closed the connection) |
| 14:21:42 | → | danse-nr3 joins (~danse-nr3@user/danse-nr3) |
| 14:23:29 | <tram> | Is there an elegant way to `findIndex` and if it's Just n do a function on that element of the list and return Just (index, resultOfFunAtThatIndex)? |
| 14:24:56 | <tram> | I was trying something like ` second (fmap (f . (list!!))) $ join (,) $ findIndex predicate list `, but it uses (!!), which kind of misses the point, and also I don't know how to (Maybe a, Myabe b) -> Maybe (a, b) |
| 14:25:39 | <tram> | (I'm a beginer sorry if it's bad question) |
| 14:27:08 | <jackdk> | tram: sounds specific enough that I would probably write it out by hand |
| 14:27:27 | <danse-nr3> | i guess you could zip with [0..] and write the find yourself to avoid accessing the list twice |
| 14:27:36 | <jackdk> | `Maybe a -> Maybe b -> Maybe (a, b)` is `liftA2 (,)` though, FWIW |
| 14:27:50 | <Lears> | :t \f i -> fmap (id &&& f) . findIndex i |
| 14:27:51 | <lambdabot> | (Int -> c') -> (a -> Bool) -> [a] -> Maybe (Int, c') |
| 14:27:55 | <danse-nr3> | :t find |
| 14:27:56 | <lambdabot> | Foldable t => (a -> Bool) -> t a -> Maybe a |
| 14:28:13 | <danse-nr3> | :t zip [0..] |
| 14:28:14 | <lambdabot> | (Num a, Enum a) => [b] -> [(a, b)] |
| 14:28:31 | <xerox> | :t uncurry (liftA2 (,)) |
| 14:28:32 | <lambdabot> | Applicative f => (f a, f b) -> f (a, b) |
| 14:29:22 | <danse-nr3> | :t \f -> fmap (second f) . find |
| 14:29:23 | <lambdabot> | error: |
| 14:29:23 | <lambdabot> | • Couldn't match type ‘Maybe a’ with ‘(d, b)’ |
| 14:29:23 | <lambdabot> | Expected type: (a -> Bool) -> t a -> (d, b) |
| 14:29:53 | <pure_sandals> | write it explicitly in a do block |
| 14:29:54 | <danse-nr3> | :t \f p -> fmap (second f) . find p |
| 14:29:54 | <lambdabot> | Foldable t => (b -> c) -> ((d, b) -> Bool) -> t (d, b) -> Maybe (d, c) |
| 14:30:43 | <danse-nr3> | :t \f p -> fmap (second f) . find p . zip [0..] |
| 14:30:44 | <lambdabot> | (Num a, Enum a) => (b -> c) -> ((a, b) -> Bool) -> [b] -> Maybe (a, c) |
| 14:30:56 | <int-e> | ... find (p . snd) ... |
| 14:31:15 | <danse-nr3> | cheers |
| 14:31:22 | <danse-nr3> | :t \f p -> fmap (second f) . find (p . snd) . zip [0..] |
| 14:31:23 | <lambdabot> | (Num a, Enum a) => (b -> c) -> (b -> Bool) -> [b] -> Maybe (a, c) |
| 14:32:15 | <danse-nr3> | personally i would group the find . zip but leave the fmap to the callers |
| 14:32:32 | ← | bsima parts (~bsima@2604:a880:400:d0::19f1:7001) (So long, and thanks for all the fish.) |
| 14:35:19 | <probie> | :t \f p -> ($ 0) . foldr (\x k n -> if p x then Just (n, f x) else k $! n + 1) (const Nothing) |
| 14:35:20 | <lambdabot> | (Num a, Foldable t1) => (t2 -> b) -> (t2 -> Bool) -> t1 t2 -> Maybe (a, b) |
| 14:35:29 | <tram> | This is alot to unpack:P |
| 14:35:29 | <tram> | @xerox : uncurry (liftA2 (,)) is nice! |
| 14:35:29 | <tram> | @ danse-nr3 : thanks! for some reason I was not thinking of zipping... |
| 14:35:29 | <lambdabot> | Unknown command, try @list |
| 14:35:54 | <danse-nr3> | v |
| 14:37:19 | <probie> | <bad advice>Just use `foldr`. It solves 90% of problems involving lists</bad advice> |
| 14:38:28 | <pure_sandals> | \list i f -> findIndex i list >>= \idx -> pure (idx, f (list !! idx)) |
| 14:38:57 | <danse-nr3> | they said they don't like the !!, understandably |
| 14:40:00 | <pure_sandals> | fair play |
| 14:41:01 | <tram> | for some reason I feel like it's good avoiding to write list twice... (not sure if there is a good reason). I'm going with zipping: danse-nr3's \f p -> fmap (second f) . find (p . snd) . zip [0..] |
| 14:41:55 | <danse-nr3> | well i understand that, it introduces an unnecessary potential error, and types would tell you... |
| 14:41:58 | <danse-nr3> | :t (!!) |
| 14:41:59 | <lambdabot> | [a] -> Int -> a |
| 14:42:07 | <danse-nr3> | if we were a bit more careful about safety |
| 14:42:32 | <pure_sandals> | do |
| 14:42:33 | <pure_sandals> | idx <- findIndex i list |
| 14:42:33 | <pure_sandals> | x <- list !? idx |
| 14:42:34 | <pure_sandals> | pure (idx, f x) |
| 14:42:44 | <pure_sandals> | don't bother with zips and whatnot - nobody can read that |
| 14:42:57 | × | ash3en quits (~Thunderbi@89.246.174.164) (Ping timeout: 252 seconds) |
| 14:43:22 | <pure_sandals> | it's a simple do block in a Maybe monad |
| 14:43:59 | <probie> | But involves walking the list twice which is "bad" |
| 14:44:33 | <pure_sandals> | right |
| 14:44:35 | <pure_sandals> | then |
| 14:44:48 | <pure_sandals> | there is no need for findIndex anyway |
| 14:45:00 | <tram> | yes that is what I was doing but I felt bad using both `findIndex` and ` (!?) `, when they kind of overlap in what they do |
| 14:45:04 | <pure_sandals> | do |
| 14:45:04 | <pure_sandals> | x <- list !? idx |
| 14:45:04 | <pure_sandals> | pure (idx, f x) |
| 14:45:23 | <tram> | oh yes! |
| 14:45:41 | <pure_sandals> | wait no you don't know the index :D |
| 14:45:50 | <tram> | hahaha |
| 14:45:53 | <tram> | yes |
| 14:51:09 | → | CiaoSen joins (~Jura@2a05:5800:2b1:f200:e6b9:7aff:fe80:3d03) |
| 15:02:00 | <pure_sandals> | welp then i guess off you go, zipping, foldring and &&&ing '=D |
| 15:06:09 | <probie> | or you could `foldr` :p |
| 15:07:23 | → | rosco joins (~rosco@14.191.221.176) |
| 15:07:41 | <pure_sandals> | yop, that's what i meant by foldring |
| 15:10:14 | × | CrunchyFlakes quits (~CrunchyFl@146.52.130.128) (Read error: Connection reset by peer) |
| 15:12:26 | → | CrunchyFlakes joins (~CrunchyFl@ip92348280.dynamic.kabel-deutschland.de) |
| 15:21:46 | × | pavonia quits (~user@user/siracusa) (Quit: Bye!) |
| 15:22:19 | × | lortabac quits (~lortabac@host-87-8-210-48.retail.telecomitalia.it) (Quit: WeeChat 4.2.2) |
| 15:27:07 | × | tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 15:30:41 | × | ThePenguin quits (~ThePengui@cust-95-80-24-166.csbnet.se) (Quit: Ping timeout (120 seconds)) |
| 15:31:00 | → | ThePenguin joins (~ThePengui@cust-95-80-24-166.csbnet.se) |
| 15:32:41 | → | ash3en joins (~Thunderbi@89.246.174.164) |
| 15:33:34 | × | ash3en quits (~Thunderbi@89.246.174.164) (Client Quit) |
| 15:37:15 | → | kupi joins (uid212005@id-212005.hampstead.irccloud.com) |
| 15:46:15 | → | econo_ joins (uid147250@id-147250.tinside.irccloud.com) |
| 15:48:50 | → | waleee joins (~waleee@h-176-10-144-38.NA.cust.bahnhof.se) |
| 15:50:30 | → | tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
| 15:51:06 | × | cfricke quits (~cfricke@user/cfricke) (Quit: WeeChat 4.2.2) |
| 15:52:46 | × | chele quits (~chele@user/chele) (Remote host closed the connection) |
| 16:04:58 | × | tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 16:06:13 | × | CiaoSen quits (~Jura@2a05:5800:2b1:f200:e6b9:7aff:fe80:3d03) (Ping timeout: 248 seconds) |
| 16:19:48 | × | tv quits (~tv@user/tv) (Quit: derp) |
| 16:20:11 | → | tv joins (~tv@user/tv) |
| 16:20:14 | × | waleee quits (~waleee@h-176-10-144-38.NA.cust.bahnhof.se) (Ping timeout: 255 seconds) |
| 16:32:43 | × | albet70 quits (~xxx@2400:8902::f03c:92ff:fe60:98d8) (Ping timeout: 252 seconds) |
| 16:41:37 | → | billchenchina- joins (~billchenc@118.38.173.226) |
| 16:41:51 | × | sord937 quits (~sord937@gateway/tor-sasl/sord937) (Quit: sord937) |
| 16:45:33 | × | rosco quits (~rosco@14.191.221.176) (Quit: Lost terminal) |
| 16:46:48 | → | tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
| 16:55:25 | → | peterbecich joins (~Thunderbi@syn-047-229-123-186.res.spectrum.com) |
| 16:56:22 | → | albet70 joins (~xxx@2400:8902::f03c:92ff:fe60:98d8) |
| 16:58:05 | × | danse-nr3 quits (~danse-nr3@user/danse-nr3) (Remote host closed the connection) |
| 16:58:36 | → | danse-nr3 joins (~danse-nr3@user/danse-nr3) |
| 17:00:37 | × | danse-nr3 quits (~danse-nr3@user/danse-nr3) (Read error: Connection reset by peer) |
| 17:01:41 | × | peterbecich quits (~Thunderbi@syn-047-229-123-186.res.spectrum.com) (Ping timeout: 248 seconds) |
| 17:01:49 | → | danse-nr3 joins (~danse-nr3@user/danse-nr3) |
| 17:10:44 | × | machinedgod quits (~machinedg@d173-183-246-216.abhsia.telus.net) (Ping timeout: 252 seconds) |
| 17:11:30 | × | dunj3 quits (~dunj3@kingdread.de) (Quit: ZNC 1.8.2+deb2+deb11u1 - https://znc.in) |
| 17:23:00 | × | euleritian quits (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Read error: Connection reset by peer) |
| 17:23:36 | → | euleritian joins (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) |
| 17:28:11 | → | pure_sandals49 joins (~pure_sand@84.245.120.100) |
| 17:31:59 | × | pure_sandals quits (~pure_sand@84.245.120.100) (Ping timeout: 256 seconds) |
| 17:37:44 | × | billchenchina- quits (~billchenc@118.38.173.226) (Ping timeout: 272 seconds) |
| 17:38:22 | → | billchenchina- joins (~billchenc@118.38.173.226) |
| 17:39:20 | <kqr> | I have a field deeply nested in a thing, and I happen to be retrieving it with lenses. I.e. `thing^.some.levels.down :: [a]`. Now I also have a function f :: a -> b which I would like to apply to all elements of this list. I can extract the list with lenses and then map it separately, but I would like to learn how to map it within the world of optics. I initially tried appending `.traverse.to f` |
| 17:39:23 | <kqr> | but that doesn't work because Traversal and Getter are on separate branches of the abstraction tree. |
| 17:42:15 | × | euleritian quits (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Ping timeout: 260 seconds) |
| 17:42:52 | → | euleritian joins (~euleritia@dynamic-176-006-136-124.176.6.pool.telefonica.de) |
| 17:43:19 | <jle`> | kqr: yeah in that case you wouldn't get the list, you'd get each individual thing |
| 17:43:31 | <jle`> | kqr: if it makes sense in your case, you can use toListOf instead |
| 17:43:42 | <jle`> | then you'd target every item, and then assemble those into a list |
| 17:43:58 | <jle`> | `thing ^.. some . levels . down . traversed . to f` should work i think |
| 17:44:36 | <jle`> | (^..) being toListOf |
| 17:47:51 | <ncf> | or thing ^. some . levels . down . to (map f) |
| 17:49:06 | × | dostoyevsky2 quits (~sck@user/dostoyevsky2) (Quit: leaving) |
| 17:49:20 | → | dostoyevsky2 joins (~sck@user/dostoyevsky2) |
| 17:50:26 | × | tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 17:50:40 | × | lain` quits (lain`@user/lain/x-9874679) (Remote host closed the connection) |
| 17:51:20 | <kqr> | Ah, both interesting options. Thank you. I had forgot entirely about ^.. as a toListOf. to (map f) was clever also. |
| 17:53:20 | <pure_sandals49> | what happened to good old "%~". Is that not enough? |
| 17:53:35 | → | ddellacosta joins (~ddellacos@ool-44c73d29.dyn.optonline.net) |
| 17:53:49 | → | lain` joins (lain`@user/lain/x-9874679) |
| 17:55:04 | → | tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
| 17:55:06 | → | ash3en joins (~Thunderbi@2a03:7846:b6eb:101:7abc:9971:7960:b2c8) |
| 17:55:13 | <jle`> | pure_sandals49: that would get the original structure back i think |
| 17:55:36 | <pure_sandals49> | thing & some . levels . down %~ fmap f |
| 17:55:56 | <c_wraith> | you can use mapped to move the fmapping to the lens side |
| 17:55:58 | <pure_sandals49> | i don't have a fired up REPL so I am just shooting in the air here |
| 17:56:04 | <jle`> | yeah that would give you something of the type of thing |
| 17:56:24 | <jle`> | > (1,[2,3,4]) & _2 %~ fmap negate |
| 17:56:25 | <lambdabot> | (1,[-2,-3,-4]) |
| 17:56:38 | <jle`> | > (1,[2,3,4]) ^. _2 . fmap negate |
| 17:56:40 | <lambdabot> | error: |
| 17:56:40 | <lambdabot> | • No instance for (Num [Integer]) arising from a use of ‘e_112342’ |
| 17:56:40 | <lambdabot> | • In the expression: e_112342 |
| 17:56:47 | <jle`> | > (1,[2,3,4]) ^. _2 . to (fmap negate) |
| 17:56:48 | <lambdabot> | [-2,-3,-4] |
| 17:57:14 | <jle`> | i like the to (map f) better than toListOf because it doesn't have to reconstruct the list via mappends |
| 17:57:34 | <pure_sandals49> | oh so he does not want to reconstruct the structure after? |
| 17:57:40 | × | danse-nr3 quits (~danse-nr3@user/danse-nr3) (Read error: Connection reset by peer) |
| 17:57:57 | → | danse-nr3 joins (~danse-nr3@user/danse-nr3) |
| 17:58:12 | <pure_sandals49> | if not, then what's the point of doing it "with lenses" then? |
| 17:58:23 | <jle`> | the original question explains it a bit |
| 17:58:42 | <jle`> | "I can extract the list with lenses and then map it separately, but I ..." |
| 18:00:31 | <pure_sandals49> | then i would say there's no point doing it with optics. it's just confusing |
| 18:00:42 | <pure_sandals49> | why use a spaceship when you can use a toothpick |
| 18:00:53 | <jle`> | it's an exercise for learning |
| 18:01:52 | <pure_sandals49> | OK, but then it's learning something which you should never use '=D |
| 18:03:13 | <jle`> | it's playing around and developing an intuition about how to, traversals, getters, etc. fit together |
| 18:03:43 | <jle`> | and also healthy curiosity? |
| 18:05:26 | <jle`> | most of my haskell learning has been playing around with interesting concepts just to see how they fit together and interact with each other |
| 18:05:42 | <EvanR> | I find it amusing any time someone wastes time on chatrooms opining on the time cost of learning something |
| 18:06:00 | <EvanR> | that would better be used learning something |
| 18:06:23 | → | pure_sandals joins (~pure_sand@84.245.120.100) |
| 18:06:30 | <jle`> | especially haskell is probably the language where the culture encourages playing around and tinkering with new concepts the most, as opposed to directly going to something useful |
| 18:07:25 | <EvanR> | haskell started out as a platform for experimentation, more standardized than lazy functional of the week |
| 18:07:31 | <monochrom> | Just be ready to face the possibility that after you have learned it, you now see why you should never use it. |
| 18:07:52 | <EvanR> | that's 99.999% of everything I ever learned xD |
| 18:08:03 | <EvanR> | the rest being what I learned in kindergarten |
| 18:08:10 | <EvanR> | :tm: |
| 18:08:15 | × | pure_sandals49 quits (~pure_sand@84.245.120.100) (Ping timeout: 256 seconds) |
| 18:08:51 | <jle`> | learning haskell is 90% just doing stuff for the fun of it heh |
| 18:09:11 | <monochrom> | What I see though is the human nature of the sunk cost policy: Since I spent weeks and $5000 to get my Microsoft Windows certification, I must now recommend everyone to install Windows! |
| 18:09:56 | × | ph88 quits (~ph88@2a02:8109:9e26:c800:8b04:e43e:ede4:7dfb) (Quit: Leaving) |
| 18:10:04 | <pure_sandals> | jle`: sure, i don't want to argue against tinkering. Just don't use it in a team project :D |
| 18:10:06 | <monochrom> | Or: I spent years grokking C++, therefore I must defend it with my life for the rest of my life! |
| 18:10:41 | <EvanR> | teams are dragging me down! |
| 18:10:56 | <EvanR> | forcing me to use the dumbest as nails tech |
| 18:11:20 | <EvanR> | don't use good stuff or we won't be able to hire your replacement |
| 18:11:20 | × | pure_sandals quits (~pure_sand@84.245.120.100) (Quit: Client closed) |
| 18:11:36 | → | pure_sandals joins (~pure_sand@84.245.120.100) |
| 18:12:16 | × | tomku quits (~tomku@user/tomku) (Ping timeout: 252 seconds) |
| 18:12:29 | → | tomku joins (~tomku@user/tomku) |
| 18:12:35 | <pure_sandals> | most of valuable software is not doable in a one person team (too much work) |
| 18:12:55 | <pure_sandals> | thus, some coding style and clarity is required when you write code, so others can pick it up easily |
| 18:13:09 | <EvanR> | that contradicts me experience in the remote work market |
| 18:13:19 | <pure_sandals> | how so? |
| 18:13:25 | <monochrom> | Yeah that cuts both ways. |
| 18:13:42 | <EvanR> | one person created this valuable, likely steaming pile ecommerce site |
| 18:13:52 | <EvanR> | one person can keep it running while it earns infinite money |
| 18:14:34 | <EvanR> | granted that's 1 more person than it should require |
| 18:15:14 | <EvanR> | code style and clarity almost certainly nil |
| 18:16:12 | <monochrom> | I have coding style and clarify for my own sake already. |
| 18:16:46 | <monochrom> | But why are we talking about that again? |
| 18:18:21 | <pure_sandals> | To explain why using a toothpick is better than using a spaceship if it gets the job done |
| 18:18:22 | <pure_sandals> | :D |
| 18:18:46 | <monochrom> | Eww |
| 18:18:56 | <pure_sandals> | brother ewwwwww! |
| 18:18:59 | <monochrom> | A whole team of 10 people sharing the same toothpick?! |
| 18:19:01 | <monochrom> | Eww |
| 18:19:07 | <monochrom> | What's wrong with you |
| 18:19:41 | <pure_sandals> | saving the planet bro |
| 18:19:46 | <pure_sandals> | lolz |
| 18:19:55 | <monochrom> | OK that works. |
| 18:21:12 | <EvanR> | is the toothpick C programming because that is absurd enough to get behind |
| 18:21:26 | <monochrom> | shell scripts |
| 18:21:58 | <EvanR> | that's beyond the pale |
| 18:22:24 | <pure_sandals> | toothpick is reasonable use of optics library, spaceship is esoteric use |
| 18:22:48 | <dolio> | This methodology is completely meaningless. |
| 18:23:05 | <pure_sandals> | why so? |
| 18:23:45 | <dolio> | 'Reasonable' and 'esoteric' aren't definable. |
| 18:24:21 | <pure_sandals> | Fine. Engineer and over-engineer then |
| 18:24:52 | <monochrom> | Sometimes I question the 0th premise that one has deeply nested records of ... of records in the first place. Like we mentioned the other way, why not go relational instead. (The DB people already did decades ago.) |
| 18:26:12 | <dolio> | Those are also very context sensitive. |
| 18:26:30 | <monochrom> | Yeah I know, hence "sometimes". |
| 18:28:23 | <bwe> | is there some way to search through the irc logs of this channel easily? |
| 18:29:00 | <monochrom> | I don't know of one. |
| 18:29:01 | <dolio> | Sometimes you 'don't overengineer,' then you later find out your 'engineering' wasn't adequate. |
| 18:29:30 | <monochrom> | But I make my own logs and I search my own logs instead. |
| 18:29:49 | <bwe> | oh, I might have those, too :) |
| 18:29:59 | <pure_sandals> | dolio: that's when you refactor |
| 18:30:01 | <dolio> | Because software often isn't as predictable as engineering problems. |
| 18:30:31 | × | danse-nr3 quits (~danse-nr3@user/danse-nr3) (Quit: Leaving) |
| 18:30:34 | <monochrom> | But I seldom want/need to search unless I'm looking for someone who was banned and they somehow showed up again and I need to widen the ban. :) |
| 18:30:36 | <pure_sandals> | dolio: it's called refactoring - something Haskell is the best language for |
| 18:36:12 | → | RedFlamingos joins (~RedFlamin@user/RedFlamingos) |
| 18:45:01 | × | pure_sandals quits (~pure_sand@84.245.120.100) (Quit: Client closed) |
| 18:45:16 | → | pure_sandals joins (~pure_sand@84.245.120.100) |
| 18:45:21 | <haskellbridge> | <sm> smalltalk is pretty nice for it too |
| 18:47:23 | <haskellbridge> | <sm> @bwe: if you join the Haskell IRC matrix room that's bridged here, maybe it'll let you search history since the bridge was set up |
| 18:49:06 | <haskellbridge> | <sm> and https://ircbrowse.tomsmeding.com/browse/lchaskell is the actual archive, maybe you can search that with a search engine |
| 18:49:54 | <haskellbridge> | <sm> why is it lchaskell, I wonder |
| 18:49:56 | <pure_sandals> | sm: is it? I never tried it. But looking back at when I worked with OO languages, now after working with Haskell I am asking myself if there is any point to OO? |
| 18:50:30 | → | tzh joins (~tzh@c-76-115-131-146.hsd1.or.comcast.net) |
| 18:51:00 | <c_wraith> | depends on how you define OO. If it's "values with the same type but open behavior", then yes, it's still important. |
| 18:51:07 | <haskellbridge> | <sm> "OO" means a lot of different things. There's definitely a lot to learn from smalltalk & co. |
| 18:51:39 | <haskellbridge> | <sm> and the experienced OO writers |
| 18:52:04 | <haskellbridge> | <sm> * experience and writings from the OO world |
| 18:53:18 | <EvanR> | theory of objects can't be denied if for no other reason than the trisquirclehedron graphic on the cover |
| 18:53:45 | <monochrom> | :) |
| 18:56:26 | × | Inst quits (~Inst@user/Inst) (Remote host closed the connection) |
| 18:56:36 | <pure_sandals> | c_wraith: same type but different behaviour? Interesting, in Haskell types don't have any behaviour. Can you think of any example to demonstrate value of types with different behaviour? |
| 18:56:48 | <c_wraith> | pure_sandals: functions do |
| 18:57:25 | <pure_sandals> | those are values |
| 18:57:30 | <c_wraith> | pure_sandals: It's a relatively common pattern to pack up a set of functions into a record to provide a uniform interface with open behavior. |
| 18:58:22 | <c_wraith> | along with a monomorphic type, so you can store collections of them together |
| 19:00:08 | <pure_sandals> | okay, when i think about OO I think about inheritance, encapsulation, overriding methods and hell like this in general. I think about Java classes basically |
| 19:00:32 | <pure_sandals> | clearly your definition is much broader |
| 19:01:06 | <pure_sandals> | what I meant originally is what is the point of progamming software around clases |
| 19:01:06 | <bwe> | pure_sandals: did you have a look at Pharo? |
| 19:02:23 | <EvanR> | pure_sandals, record of functions, possibly recursive in type can emulate object oriented programming |
| 19:02:29 | <c_wraith> | pure_sandals: https://wiki.c2.com/?ClosuresAndObjectsAreEquivalent |
| 19:02:57 | <EvanR> | overriding can technically be done in that case by making a new type building on the old one, but it is very cumbersome |
| 19:03:44 | <EvanR> | but as soon as you start with the monkey patching OOP swerved off the mountainside imo |
| 19:04:11 | <mauke> | I'll patch your monkey |
| 19:04:54 | <EvanR> | monkey is a tetrapod, can you patch it to change the number of limbs? |
| 19:05:10 | <EvanR> | liskov would like a word |
| 19:06:10 | <monochrom> | haha |
| 19:06:23 | → | skyesoss1 joins (~Thunderbi@128.135.204.35) |
| 19:10:05 | <pure_sandals> | bwe: nope not yet. what would you say is better about it, compared to Haskell? |
| 19:10:44 | <bwe> | hot code reloading |
| 19:10:57 | <bwe> | I didn't try it |
| 19:11:01 | <pure_sandals> | I understand how records can be seen as objects, when you have function types inside |
| 19:11:13 | <mauke> | "C++: an octopus made by nailing extra legs onto a dog." |
| 19:11:17 | → | ft joins (~ft@p3e9bc4e7.dip0.t-ipconnect.de) |
| 19:12:20 | <Hecate> | jesus christ |
| 19:12:56 | <pure_sandals> | so OOP is more like a style of programming I get it. In Java it's the only style |
| 19:13:28 | × | tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 19:13:32 | <EvanR> | OOP became mainly a section at the barnes and noble bookstore |
| 19:13:57 | <pure_sandals> | :D |
| 19:14:09 | <EvanR> | which doesn't include smalltalk or cardelli's theory of objects |
| 19:14:26 | → | tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
| 19:14:37 | <EvanR> | but we know better! |
| 19:15:26 | <EvanR> | today the legacy of that can still be seen in the elixir community |
| 19:15:49 | <geekosaur> | and objective-c to some extent |
| 19:16:01 | <geekosaur> | although I think that's dying out now |
| 19:19:20 | <pure_sandals> | mauke: shots fired |
| 19:24:33 | <monochrom> | Actually I s/paradigm/style/ too. |
| 19:38:24 | × | CrunchyFlakes quits (~CrunchyFl@ip92348280.dynamic.kabel-deutschland.de) (Read error: Connection reset by peer) |
| 19:38:54 | × | euleritian quits (~euleritia@dynamic-176-006-136-124.176.6.pool.telefonica.de) (Read error: Connection reset by peer) |
| 19:39:13 | → | euleritian joins (~euleritia@ip5f5ad3d7.dynamic.kabel-deutschland.de) |
| 19:40:28 | → | CrunchyFlakes joins (~CrunchyFl@ip92348280.dynamic.kabel-deutschland.de) |
| 19:41:25 | → | waleee joins (~waleee@h-176-10-144-38.NA.cust.bahnhof.se) |
| 19:43:41 | → | gorignak joins (~gorignak@user/gorignak) |
| 20:03:06 | × | tjbc quits (~tjbc@user/fliife) (Quit: ZNC 1.8.2 - https://znc.in) |
| 20:04:47 | → | tjbc joins (~tjbc@user/fliife) |
| 20:07:22 | × | tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 20:11:47 | × | pure_sandals quits (~pure_sand@84.245.120.100) (Ping timeout: 256 seconds) |
| 20:12:02 | → | peterbecich joins (~Thunderbi@syn-047-229-123-186.res.spectrum.com) |
| 20:18:07 | → | tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
| 20:20:43 | → | JuanDaugherty joins (~juan@user/JuanDaugherty) |
| 20:21:12 | → | Midjak joins (~MarciZ@82.66.147.146) |
| 20:21:33 | → | omentic joins (~apropos@104.193.135.206) |
| 20:24:26 | × | ash3en quits (~Thunderbi@2a03:7846:b6eb:101:7abc:9971:7960:b2c8) (Quit: ash3en) |
| 20:24:34 | × | euleritian quits (~euleritia@ip5f5ad3d7.dynamic.kabel-deutschland.de) (Ping timeout: 245 seconds) |
| 20:25:46 | → | euleritian joins (~euleritia@dynamic-176-006-136-124.176.6.pool.telefonica.de) |
| 20:27:44 | × | peterbecich quits (~Thunderbi@syn-047-229-123-186.res.spectrum.com) (Ping timeout: 255 seconds) |
| 20:29:49 | × | tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 20:34:32 | × | smiesner quits (b0cf5acf8c@user/smiesner) (Remote host closed the connection) |
| 20:35:19 | → | tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
| 20:43:29 | × | AlexZenon quits (~alzenon@94.233.241.102) (Ping timeout: 260 seconds) |
| 20:48:40 | × | CrunchyFlakes quits (~CrunchyFl@ip92348280.dynamic.kabel-deutschland.de) (Read error: Connection reset by peer) |
| 20:51:15 | → | CrunchyFlakes joins (~CrunchyFl@ip92348280.dynamic.kabel-deutschland.de) |
| 20:53:38 | → | AlexZenon joins (~alzenon@94.233.241.102) |
| 21:04:21 | × | AlexZenon quits (~alzenon@94.233.241.102) (Ping timeout: 248 seconds) |
| 21:12:18 | → | AlexZenon joins (~alzenon@94.233.241.102) |
| 21:14:23 | × | michalz quits (~michalz@185.246.207.221) (Quit: ZNC 1.9.0 - https://znc.in) |
| 21:14:53 | → | CiaoSen joins (~Jura@2a05:5800:2b1:f200:e6b9:7aff:fe80:3d03) |
| 21:15:45 | × | tomku quits (~tomku@user/tomku) (Ping timeout: 276 seconds) |
| 21:15:58 | → | tomku joins (~tomku@user/tomku) |
| 21:17:08 | × | AlexZenon quits (~alzenon@94.233.241.102) (Ping timeout: 252 seconds) |
| 21:18:07 | × | gorignak quits (~gorignak@user/gorignak) (Quit: quit) |
| 21:18:08 | × | sawilagar quits (~sawilagar@user/sawilagar) (Ping timeout: 272 seconds) |
| 21:19:39 | × | CiaoSen quits (~Jura@2a05:5800:2b1:f200:e6b9:7aff:fe80:3d03) (Ping timeout: 260 seconds) |
| 21:20:48 | → | AlexZenon joins (~alzenon@94.233.241.102) |
| 21:31:53 | × | tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 21:32:05 | × | misterfish quits (~misterfis@84.53.85.146) (Ping timeout: 248 seconds) |
| 21:36:29 | → | tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
| 21:36:43 | × | tram quits (~tram@2a02:587:b43:7300:a89e:683a:2da1:a2ed) (Quit: Leaving.) |
| 21:39:01 | → | tram joins (~tram@94.71.169.62) |
| 21:39:01 | × | krei-se quits (~krei-se@p5085d24b.dip0.t-ipconnect.de) (Ping timeout: 244 seconds) |
| 21:41:06 | → | krei-se joins (~krei-se@p5085de4b.dip0.t-ipconnect.de) |
| 21:45:07 | × | JuanDaugherty quits (~juan@user/JuanDaugherty) (Quit: JuanDaugherty) |
| 21:47:21 | × | tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 21:57:18 | × | byte quits (~byte@149.28.222.189) (Remote host closed the connection) |
| 21:57:46 | → | byte joins (~byte@149.28.222.189) |
| 22:04:37 | × | CrunchyFlakes quits (~CrunchyFl@ip92348280.dynamic.kabel-deutschland.de) (Ping timeout: 248 seconds) |
| 22:05:09 | → | CrunchyFlakes joins (~CrunchyFl@146.52.130.128) |
| 22:08:31 | × | euleritian quits (~euleritia@dynamic-176-006-136-124.176.6.pool.telefonica.de) (Read error: Connection reset by peer) |
| 22:09:00 | → | euleritian joins (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) |
| 22:11:01 | × | euleritian quits (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Read error: Connection reset by peer) |
| 22:11:23 | → | euleritian joins (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) |
| 22:15:17 | × | euleritian quits (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Read error: Connection reset by peer) |
| 22:15:31 | → | euleritian joins (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) |
| 22:17:25 | → | Guest8 joins (~Guest@modemcable143.110-82-70.mc.videotron.ca) |
| 22:19:36 | → | emmanuelux joins (~emmanuelu@user/emmanuelux) |
| 22:26:55 | × | acidjnk quits (~acidjnk@p200300d6e72cfb694c86a1cb8ab41399.dip0.t-ipconnect.de) (Ping timeout: 260 seconds) |
| 22:30:52 | <haskellbridge> | <Bowuigi> The best part of OOP is probably the theory behind it, or at least the functional bridge to it. The more constraints you add to row types, the more features it subsumes lol |
| 22:33:32 | <haskellbridge> | <Bowuigi> Java is not very nice to work with because it didn't care about the theory and just went with "Structs with not-first-class functions", but the weird types make it way more powerful and composable |
| 22:34:08 | × | skyesoss1 quits (~Thunderbi@128.135.204.35) (Ping timeout: 252 seconds) |
| 22:38:10 | × | szkl quits (uid110435@id-110435.uxbridge.irccloud.com) (Quit: Connection closed for inactivity) |
| 22:38:21 | <haskellbridge> | <Bowuigi> Essentially, the entirety of Java can be recreated by restricting the type system in Leijen's 2004 paper "First-class labels for extensible rows" |
| 22:45:54 | → | Sgeo joins (~Sgeo@user/sgeo) |
| 22:52:59 | × | __monty__ quits (~toonn@user/toonn) (Quit: leaving) |
| 22:58:41 | → | peterbecich joins (~Thunderbi@syn-047-229-123-186.res.spectrum.com) |
| 23:01:04 | × | omentic quits (~apropos@104.193.135.206) (Quit: leaving) |
| 23:06:19 | × | Guest8 quits (~Guest@modemcable143.110-82-70.mc.videotron.ca) (Ping timeout: 256 seconds) |
| 23:15:03 | × | takuan quits (~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection) |
| 23:15:46 | × | Tuplanolla quits (~Tuplanoll@91-159-69-59.elisa-laajakaista.fi) (Quit: Leaving.) |
| 23:20:55 | → | Guest71 joins (~Guest@modemcable143.110-82-70.mc.videotron.ca) |
| 23:35:59 | × | gmg quits (~user@user/gehmehgeh) (Quit: Leaving) |
| 23:38:16 | × | tram quits (~tram@94.71.169.62) (Quit: Leaving.) |
| 23:41:27 | × | noumenon quits (~noumenon@113.51-175-156.customer.lyse.net) (Quit: Leaving) |
| 23:41:38 | zzz | is now known as zero |
| 23:42:05 | <Unicorn_Princess> | i'm very sorry for such a basic question, but i could have sworn this used to work - adding a type signature to a nested function element gives me a type error. minimal example: https://play.haskell.org/saved/SnrW1xSC |
| 23:43:48 | <dibblego> | Unicorn_Princess: f :: forall a. [a] -> a |
| 23:45:15 | <Unicorn_Princess> | this is ~last 2 years new, right? |
| 23:45:31 | <Unicorn_Princess> | (it worked. time to learn why i guess :S) |
| 23:46:04 | <geekosaur> | not new at all, explicit `forall` has always been required for `ScopedTypeVariables` |
| 23:51:20 | <Unicorn_Princess> | huh. actually dug up some ancient code to check, and indeed i have forall. annotations in those cases |
| 23:51:33 | <Unicorn_Princess> | how did it take me this long to hit this error |
| 23:51:38 | <Unicorn_Princess> | (again, i guess) |
| 23:52:03 | <Unicorn_Princess> | anyway thanks, guess my memory is more fallible than i thought :S |
| 23:52:33 | × | Guest71 quits (~Guest@modemcable143.110-82-70.mc.videotron.ca) (Quit: Client closed) |
| 23:58:09 | → | tram joins (~tram@94.71.169.62) |
| 23:58:10 | → | Guest62 joins (~Guest@modemcable143.110-82-70.mc.videotron.ca) |
| 23:59:49 | <jackdk> | I think you can sometimes get away without when writing typeclass instances? |
All times are in UTC on 2024-07-22.