2023/05/28

2023-05-28 00:02:29 +0200freeside(~mengwong@103.252.202.189)
2023-05-28 00:03:44 +0200gnalzo(~gnalzo@2a01:e0a:498:fd50:fcc6:bb5d:489a:ce8c) (Quit: WeeChat 3.8)
2023-05-28 00:07:24 +0200 <sm> ah, now I remember.. none of https://hackage.haskell.org/package/directory-1.3.8.1/docs/System-Directory.html#g:5 do quite what I need (find all the executables in PATH whose name starts with a prefix)
2023-05-28 00:08:45 +0200freeside(~mengwong@103.252.202.189) (Ping timeout: 240 seconds)
2023-05-28 00:12:44 +0200xameer(~xameer@144.48.224.57)
2023-05-28 00:16:46 +0200__monty__(~toonn@user/toonn) (Quit: leaving)
2023-05-28 00:19:45 +0200freeside(~mengwong@103.252.202.189)
2023-05-28 00:20:56 +0200mtjm(~mutantmel@2604:a880:2:d0::208b:d001) (Remote host closed the connection)
2023-05-28 00:22:12 +0200mtjm(~mutantmel@2604:a880:2:d0::208b:d001)
2023-05-28 00:23:48 +0200freeside(~mengwong@103.252.202.189) (Ping timeout: 240 seconds)
2023-05-28 00:25:59 +0200xameer(~xameer@144.48.224.57) (Quit: Quit)
2023-05-28 00:29:50 +0200gmg(~user@user/gehmehgeh) (Quit: Leaving)
2023-05-28 00:31:31 +0200 <sm> mauke, https://github.com/simonmichael/hledger/issues/2040 noted and fixed, thanks for the report
2023-05-28 00:31:52 +0200 <sm> or was it int-e, oh dear
2023-05-28 00:32:00 +0200juri_(~juri@84-19-175-187.pool.ovpn.com) (Ping timeout: 250 seconds)
2023-05-28 00:32:30 +0200 <sm> mauke first.. alright then
2023-05-28 00:32:53 +0200takuan(~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection)
2023-05-28 00:36:53 +0200michalz(~michalz@185.246.204.90) (Remote host closed the connection)
2023-05-28 00:39:49 +0200freeside(~mengwong@103.252.202.189)
2023-05-28 00:40:18 +0200Pickchea(~private@user/pickchea) (Quit: Leaving)
2023-05-28 00:44:01 +0200freeside(~mengwong@103.252.202.189) (Ping timeout: 240 seconds)
2023-05-28 00:47:44 +0200 <int-e> yeah
2023-05-28 00:48:29 +0200 <int-e> sm: I really only chimed in on the "but somehow it seems to get the job done anyway" part
2023-05-28 00:49:01 +0200 <sm> yes, and you were quite right, thanks
2023-05-28 00:49:08 +0200 <int-e> because "it worked in testing" is always a fun scenario to analyse
2023-05-28 00:50:56 +0200 <darkling> "I don't care if it works on your machine. We're not shipping your machine!"
2023-05-28 00:51:22 +0200 <sm> Windows is fun! Frequently popping up random ads and requests to do this or that!
2023-05-28 00:53:15 +0200johnw(~johnw@76-234-69-149.lightspeed.frokca.sbcglobal.net) (Quit: ZNC - http://znc.in)
2023-05-28 00:53:57 +0200 <monochrom> Yeah I'm not upgrading ("upgrading") to 11 any time soon.
2023-05-28 00:54:16 +0200 <monochrom> OK that's not fair, 11 has good additions too.
2023-05-28 00:54:35 +0200 <int-e> more like ad-itions amiright
2023-05-28 00:54:41 +0200 <monochrom> hahaha
2023-05-28 00:55:15 +0200 <int-e> it's amazing what people put up with :-/
2023-05-28 00:55:17 +0200 <sm> I expect it's a major improvement on windows 8, at least
2023-05-28 00:55:39 +0200 <sm> if I could save this VM image I would actually try using it a bit
2023-05-28 00:56:09 +0200czy(~user@host-140-24.ilcub310.champaign.il.us.clients.pavlovmedia.net)
2023-05-28 00:57:30 +0200 <sm> as I was saying in #ghcup: ghcup copes with it pretty well, a few access errors here and there but everything seemed to work smoothly!
2023-05-28 00:58:41 +0200 <sm> as in: you might see an Access Error during install or during a cabal build, and then you run again and it carries on and things seem to work
2023-05-28 01:00:40 +0200reach(~reach@2607:fea8:4c0:990:9195:d8e:b2d8:baa7) (Read error: Connection reset by peer)
2023-05-28 01:02:41 +0200acidjnk(~acidjnk@p200300d6e7072f9698fc7344e9503bb5.dip0.t-ipconnect.de) (Ping timeout: 256 seconds)
2023-05-28 01:17:48 +0200oo_miguel(~Thunderbi@77.252.47.84) (Ping timeout: 240 seconds)
2023-05-28 01:20:41 +0200juri_(~juri@84-19-175-187.pool.ovpn.com)
2023-05-28 01:21:53 +0200mauke_(~mauke@user/mauke)
2023-05-28 01:22:55 +0200merijn(~merijn@86-86-29-250.fixed.kpn.net)
2023-05-28 01:23:31 +0200mauke(~mauke@user/mauke) (Ping timeout: 240 seconds)
2023-05-28 01:23:31 +0200mauke_mauke
2023-05-28 01:24:47 +0200foul_owl(~kerry@45.143.82.40) (Ping timeout: 240 seconds)
2023-05-28 01:27:08 +0200merijn(~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 240 seconds)
2023-05-28 01:30:16 +0200machinedgod(~machinedg@31.217.42.201)
2023-05-28 01:39:19 +0200reach(~reach@2607:fea8:4c0:990:f891:b512:3659:bf1b)
2023-05-28 01:43:09 +0200ratapaca(~ratapaca@98.40.240.33)
2023-05-28 01:43:33 +0200slack1256(~slack1256@181.43.60.199)
2023-05-28 01:47:09 +0200freeside(~mengwong@103.252.202.189)
2023-05-28 01:50:27 +0200Tuplanolla(~Tuplanoll@91-159-68-236.elisa-laajakaista.fi) (Quit: Leaving.)
2023-05-28 01:51:00 +0200foul_owl(~kerry@45.143.82.39)
2023-05-28 01:51:05 +0200freeside(~mengwong@103.252.202.189) (Ping timeout: 240 seconds)
2023-05-28 01:52:50 +0200pyooque(~puke@user/puke)
2023-05-28 01:52:50 +0200pukeGuest9165
2023-05-28 01:52:50 +0200pyooquepuke
2023-05-28 01:52:53 +0200xameer(~xameer@144.48.224.57)
2023-05-28 01:55:31 +0200Guest9165(~puke@user/puke) (Ping timeout: 268 seconds)
2023-05-28 01:56:18 +0200xameer(~xameer@144.48.224.57) (Client Quit)
2023-05-28 01:56:31 +0200machinedgod(~machinedg@31.217.42.201) (Ping timeout: 240 seconds)
2023-05-28 01:58:17 +0200ratapaca(~ratapaca@98.40.240.33) (Quit: Leaving)
2023-05-28 02:02:14 +0200nate2(~nate@98.45.169.16)
2023-05-28 02:04:09 +0200cheater_(~Username@user/cheater)
2023-05-28 02:06:37 +0200cheater(~Username@user/cheater) (Ping timeout: 268 seconds)
2023-05-28 02:06:45 +0200cheater_cheater
2023-05-28 02:07:20 +0200nate2(~nate@98.45.169.16) (Ping timeout: 265 seconds)
2023-05-28 02:19:47 +0200wroathe(~wroathe@207-153-38-140.fttp.usinternet.com)
2023-05-28 02:19:47 +0200wroathe(~wroathe@207-153-38-140.fttp.usinternet.com) (Changing host)
2023-05-28 02:19:47 +0200wroathe(~wroathe@user/wroathe)
2023-05-28 02:21:17 +0200bitdex(~bitdex@gateway/tor-sasl/bitdex)
2023-05-28 02:21:49 +0200mechap(~mechap@user/mechap)
2023-05-28 02:26:05 +0200pavonia(~user@user/siracusa)
2023-05-28 02:27:46 +0200 <reach> Hi, I am new to haskell. I am trying to build cabal and cabal-install and just cloned the git repository , As I am following the readme, I am trying to run this command cabal install cabal-install , but I get this error Error: cabal-3.10.1.0.exe: Failed to build directory-1.3.7.1 (which is
2023-05-28 02:27:46 +0200 <reach> required by exe:cabal from cabal-install-3.10.1.0). The failure occurred
2023-05-28 02:27:46 +0200 <reach> during the configure step. The build process terminated with exit code 127. What is the issue here? Thanks in advance
2023-05-28 02:29:35 +0200 <hpc> you already have cabal-install, or you wouldn't be able to run "cabal install"
2023-05-28 02:30:05 +0200 <hpc> there's not enough info in that part of the error to know why directory failed to build though
2023-05-28 02:35:54 +0200freeside(~mengwong@103.252.202.189)
2023-05-28 02:35:59 +0200ystael_(~ystael@user/ystael) (Ping timeout: 240 seconds)
2023-05-28 02:36:12 +0200 <Axman6> reach: you shoulldn't need to build either of those from the git repo ever, ubless you are contributing to cabal itself. How have you installed ghc?
2023-05-28 02:37:09 +0200 <sclv> reach is a hsoc contributetor
2023-05-28 02:37:18 +0200 <sclv> they need to build it
2023-05-28 02:37:56 +0200 <sclv> reach: what system are you on?
2023-05-28 02:37:56 +0200 <Axman6> these days, by far the simplest thing to do is a) don't install ghc using your package manage3r, b) install ghcup, c) run ghcup tui and install cabal, a recent GHC (9.2 or 9.4 are usually a good bet today), HLS if you want editor integration and stack if you need it
2023-05-28 02:38:02 +0200ystael(~ystael@user/ystael)
2023-05-28 02:38:06 +0200 <Axman6> oh ok then!
2023-05-28 02:40:05 +0200freeside(~mengwong@103.252.202.189) (Ping timeout: 240 seconds)
2023-05-28 02:41:36 +0200 <sclv> reach: don’t run cabal install, run cabal build to develop and test
2023-05-28 02:42:09 +0200 <sclv> run with -v2 or -v3 to observe the results with higher verbosity
2023-05-28 02:42:53 +0200 <reach> sclv: Windows 11
2023-05-28 02:43:27 +0200 <sclv> ah i guessed. how did you install ghc and cabal?
2023-05-28 02:45:03 +0200 <sclv> i’m guessing you’re not configured with msys…
2023-05-28 02:45:57 +0200 <sclv> (ghcup should do this automatically for you if you install via ghcup. ditto chocalatey if you use the right cocolatey package)
2023-05-28 02:46:25 +0200 <reach> I installed through chocalatey
2023-05-28 02:48:10 +0200 <sclv> which package?
2023-05-28 02:48:13 +0200nate2(~nate@98.45.169.16)
2023-05-28 02:48:26 +0200 <sclv> the recommended route is haskell-dev https://community.chocolatey.org/packages/haskell-dev
2023-05-28 02:51:22 +0200 <reach> yes i followed from the link u shared.
2023-05-28 02:54:29 +0200 <reach> i tried running cabal v2- build cabal and it still throws error
2023-05-28 02:54:30 +0200 <reach> Error: cabal-3.10.1.0.exe: Failed to build time-1.12.2 (which is required by
2023-05-28 02:54:30 +0200 <reach> Cabal-3.11.0.0). The failure occurred during the configure step. The build
2023-05-28 02:54:31 +0200 <reach> process terminated with exit code 127
2023-05-28 03:03:18 +0200harveypwca(~harveypwc@2601:246:c180:a570:3828:d8:e523:3f67) (Quit: Leaving)
2023-05-28 03:10:24 +0200albet70(~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection)
2023-05-28 03:16:31 +0200albet70(~xxx@2400:8902::f03c:92ff:fe60:98d8)
2023-05-28 03:29:27 +0200waleee(~waleee@2001:9b0:21c:4000:5bf9:6515:c030:57b7) (Ping timeout: 256 seconds)
2023-05-28 03:34:41 +0200waleee(~waleee@h-176-10-137-138.NA.cust.bahnhof.se)
2023-05-28 03:38:13 +0200talismanick(~user@76.133.152.122)
2023-05-28 03:39:03 +0200 <sclv> reach: msys isn’t configured right. thats why it cant build those packages
2023-05-28 03:39:23 +0200 <talismanick> What's the most idiomatic way to map [(a, Maybe b)] to [(a, b)], filtering (_, Nothing) and mapping (x, Just y) to (x, y)?
2023-05-28 03:40:18 +0200 <reach> @sclv : Invoking msys2 shell command: -defterm -no-start -c "pacman --noconfirm -Syuu --disable-download-timeout | tee -a /update.log; ps -ef | grep '[?]' | awk '{print $2}' | xargs -r kill"
2023-05-28 03:40:18 +0200 <lambdabot> Unknown command, try @list
2023-05-28 03:40:18 +0200 <reach> :: Synchronizing package databases...
2023-05-28 03:40:18 +0200 <reach> clangarm64 downloading...
2023-05-28 03:40:18 +0200 <reach> mingw32 downloading...
2023-05-28 03:40:18 +0200 <reach> mingw64 downloading...
2023-05-28 03:40:19 +0200 <reach> ucrt64 downloading...
2023-05-28 03:40:21 +0200 <reach> clang32 downloading...
2023-05-28 03:40:24 +0200 <reach> clang64 downloading...
2023-05-28 03:40:25 +0200 <reach> msys downloading...
2023-05-28 03:40:27 +0200 <reach> :: Starting core system upgrade...
2023-05-28 03:40:29 +0200 <talismanick> hoogling "f (a, g b) -> f (a, b)" (and anyything more specific) hasn't yielded anything
2023-05-28 03:40:29 +0200 <reach> there is nothing to do
2023-05-28 03:40:32 +0200 <reach> :: Starting full system upgrade...
2023-05-28 03:40:36 +0200 <reach> there is nothing to do
2023-05-28 03:40:38 +0200 <reach> PATH environment variable does not have C:\tools\msys64 in it. Adding...
2023-05-28 03:40:38 +0200 <monochrom> Um please use a paste bin.
2023-05-28 03:40:40 +0200 <reach> Environment Vars (like PATH) have changed. Close/reopen your shell to
2023-05-28 03:40:42 +0200 <reach> see the changes (or in powershell/cmd.exe just type `refreshenv`).
2023-05-28 03:40:44 +0200 <reach> The install of msys2 was successful.
2023-05-28 03:40:46 +0200 <reach> Software installed to 'C:\tools\msys64'
2023-05-28 03:40:48 +0200 <reach> haskell-dev v0.0.1 [Approved]
2023-05-28 03:40:48 +0200 <talismanick> seriously dude?
2023-05-28 03:40:50 +0200 <reach> haskell-dev package files install completed. Performing other installation steps.
2023-05-28 03:40:52 +0200 <reach> The install of haskell-dev was successful.
2023-05-28 03:40:52 +0200 <monochrom> @where paste
2023-05-28 03:40:52 +0200 <lambdabot> Help us help you: please paste full code, input and/or output at e.g. https://paste.tomsmeding.com
2023-05-28 03:40:54 +0200 <reach> Software installed to 'C:\ProgramData\chocolatey\lib\haskell-dev'
2023-05-28 03:41:24 +0200 <sclv> reach please don’t paste long things in irc directly. use a pastebin
2023-05-28 03:42:17 +0200 <reach> sorry, irc is new to me,
2023-05-28 03:42:35 +0200 <sclv> there should be values in the cabal config file pointing to the necessary locations. cf https://stackoverflow.com/q/42555250
2023-05-28 03:42:54 +0200 <sclv> (the values won’t be the same, but should be similar)
2023-05-28 03:43:27 +0200 <sclv> if that approach doesn’t work i recommend just trying the ghcup route instead
2023-05-28 03:44:18 +0200 <sclv> the reason the builds are failing is they are trying to link against msys c libs and not finding them
2023-05-28 03:44:32 +0200 <sclv> those values help find the libs
2023-05-28 03:48:31 +0200nate2(~nate@98.45.169.16) (Ping timeout: 240 seconds)
2023-05-28 04:00:25 +0200vandita(~vandit@178-164-188-2.pool.digikabel.hu) (Ping timeout: 240 seconds)
2023-05-28 04:02:22 +0200vandita(~vandit@84-236-8-26.pool.digikabel.hu)
2023-05-28 04:06:37 +0200 <reach> Thanks sclv, I added mysys64 path to extra-prog-path variable in cabal config file and ran cabal v2-build cabal, this completed without issues. Thanks for the direction.
2023-05-28 04:07:16 +0200 <sclv> wonderful!
2023-05-28 04:11:25 +0200 <talismanick> What's the shortest function `f :: [(a, Maybe b)] -> [(a, b)]` which filters/drops `(_, Nothing)` and maps `(x, Just y)` to `(x, y)`?
2023-05-28 04:12:36 +0200 <probie> Not the shortest, but I'm a fan of `f xs = [(x,y) | (x, Just y) <- xs]`
2023-05-28 04:13:52 +0200waleee(~waleee@h-176-10-137-138.NA.cust.bahnhof.se) (Ping timeout: 248 seconds)
2023-05-28 04:15:51 +0200 <int-e> > sequence (1, Just 2)
2023-05-28 04:15:52 +0200 <lambdabot> Just (1,2)
2023-05-28 04:16:18 +0200 <talismanick> probie: oh, perfect
2023-05-28 04:16:19 +0200 <talismanick> thanks
2023-05-28 04:17:22 +0200 <int-e> :t catMaybes . map sequence
2023-05-28 04:17:23 +0200 <lambdabot> Traversable t => [t (Maybe a)] -> [t a]
2023-05-28 04:18:19 +0200 <int-e> (really not worth it; it's barely shorter than the list comprehension and much harder to understand)
2023-05-28 04:18:24 +0200 <[Leary]> :t mapMaybe sequenceA
2023-05-28 04:18:25 +0200 <lambdabot> Traversable t => [t (Maybe a)] -> [t a]
2023-05-28 04:19:11 +0200 <probie> :t concatMap (maybe [] pure) . map sequence -- if you don't want to import Data.Maybe
2023-05-28 04:19:12 +0200 <lambdabot> Traversable t => [t (Maybe a)] -> [t a]
2023-05-28 04:19:22 +0200 <[Leary]> Seems pretty straightforward to me, but list comprehensions that leverage pattern matching to filter do have a special charm.
2023-05-28 04:19:30 +0200reach(~reach@2607:fea8:4c0:990:f891:b512:3659:bf1b) (Ping timeout: 250 seconds)
2023-05-28 04:19:34 +0200 <int-e> :t (>>= maybe [] pure . sequence)
2023-05-28 04:19:35 +0200 <lambdabot> Traversable t => [t (Maybe a)] -> [t a]
2023-05-28 04:21:00 +0200 <probie> derp, `concatMap f . map g = concatMap (f . g)`. I must still be half asleep (despite it being midday in my timezone)
2023-05-28 04:21:22 +0200 <int-e> Relying on the fact that the Maybe is in the second component of the pair feels awkward.
2023-05-28 04:27:32 +0200[itchyjunk](~itchyjunk@user/itchyjunk/x-7353470) (Read error: Connection reset by peer)
2023-05-28 04:37:24 +0200 <probie> Is there a way to write something like `Arr n f g` where `Arr 0 f g = f -> g` and `Arr n f g = forall v_1 v_2 ... v_n . f v_1 v_2 ... v_n -> g v_1 v_2 ... v_n`?
2023-05-28 04:38:10 +0200 <probie> I get stuck because the kinds of `f` and `g` depends on the value of `n`, and I don't know if I can even express that in Haskell
2023-05-28 04:44:48 +0200phma(~phma@host-67-44-208-181.hnremote.net) (Read error: Connection reset by peer)
2023-05-28 04:45:15 +0200phma(phma@2001:5b0:2172:dd28:fe45:160f:de72:96fc)
2023-05-28 04:47:07 +0200FinnElija(~finn_elij@user/finn-elija/x-0085643) (Killed (NickServ (Forcing logout FinnElija -> finn_elija)))
2023-05-28 04:47:07 +0200finn_elija(~finn_elij@user/finn-elija/x-0085643)
2023-05-28 04:47:07 +0200finn_elijaFinnElija
2023-05-28 04:54:44 +0200phma(phma@2001:5b0:2172:dd28:fe45:160f:de72:96fc) (Read error: Connection reset by peer)
2023-05-28 04:55:08 +0200phma(phma@2001:5b0:2172:dd28:fe45:160f:de72:96fc)
2023-05-28 04:58:56 +0200ec(~ec@gateway/tor-sasl/ec) (Ping timeout: 240 seconds)
2023-05-28 04:59:21 +0200ec(~ec@gateway/tor-sasl/ec)
2023-05-28 05:00:23 +0200freeside(~mengwong@103.252.202.189)
2023-05-28 05:01:52 +0200td_(~td@i53870921.versanet.de) (Ping timeout: 248 seconds)
2023-05-28 05:02:12 +0200 <Axman6> well you certainly can using template haskell, you'd need quite a bit of machinery make that work though. feels posssible, but hard
2023-05-28 05:03:56 +0200td_(~td@i53870919.versanet.de)
2023-05-28 05:04:28 +0200freeside(~mengwong@103.252.202.189) (Ping timeout: 240 seconds)
2023-05-28 05:07:33 +0200reach(~reach@2607:fea8:4c0:990:f891:b512:3659:bf1b)
2023-05-28 05:09:35 +0200pointlessslippe1(~pointless@212.82.82.3) (Ping timeout: 240 seconds)
2023-05-28 05:10:08 +0200johnw(~johnw@76-234-69-149.lightspeed.frokca.sbcglobal.net)
2023-05-28 05:14:53 +0200 <probie> I'm not too interested in using template haskell (especially not until it plays nicely with cross compilation), and there's no pressing need to actually solve this
2023-05-28 05:18:10 +0200pointlessslippe1(~pointless@212.82.82.3)
2023-05-28 05:19:26 +0200 <probie> I just wanted to generalise recursion-schemes to work with functor-like things, so I could have some generic type like `cata :: FunctorN n f => FNAlg n f g -> (Arr n (FixN n f) g)`
2023-05-28 05:20:46 +0200freeside(~mengwong@103.252.202.189)
2023-05-28 05:22:11 +0200 <probie> where `FNAlg n f g = forall v_1 v_2 .. v_n . f v_1 v_2 .. v_n g -> g v_1 v_2 .. v_n` and `newtype FixN n f v_1 v_2 .. v_n = FixN (f v_1 v_2 .. v_n (FixN f))`
2023-05-28 05:23:17 +0200 <probie> with template Haskell (or just manually writing it by hand, or using codegen), it's very easy to make these concrete types for a given value of n, but I was hoping there was some way to generalise it
2023-05-28 05:23:23 +0200merijn(~merijn@86-86-29-250.fixed.kpn.net)
2023-05-28 05:25:01 +0200freeside(~mengwong@103.252.202.189) (Ping timeout: 240 seconds)
2023-05-28 05:27:28 +0200merijn(~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 240 seconds)
2023-05-28 05:42:57 +0200reach(~reach@2607:fea8:4c0:990:f891:b512:3659:bf1b) (Remote host closed the connection)
2023-05-28 05:43:19 +0200reach(~reach@2607:fea8:4c0:990:f891:b512:3659:bf1b)
2023-05-28 05:53:44 +0200ec(~ec@gateway/tor-sasl/ec) (Ping timeout: 240 seconds)
2023-05-28 05:54:10 +0200ec(~ec@gateway/tor-sasl/ec)
2023-05-28 05:55:11 +0200wroathe(~wroathe@user/wroathe) (Ping timeout: 240 seconds)
2023-05-28 05:58:15 +0200nick__(~nick@98.186.194.67)
2023-05-28 06:05:34 +0200freeside(~mengwong@103.252.202.189)
2023-05-28 06:09:35 +0200freeside(~mengwong@103.252.202.189) (Ping timeout: 240 seconds)
2023-05-28 06:31:36 +0200reach(~reach@2607:fea8:4c0:990:f891:b512:3659:bf1b) (Remote host closed the connection)
2023-05-28 06:31:59 +0200reach(~reach@2607:fea8:4c0:990:f891:b512:3659:bf1b)
2023-05-28 06:38:56 +0200reach(~reach@2607:fea8:4c0:990:f891:b512:3659:bf1b) (Ping timeout: 248 seconds)
2023-05-28 06:50:12 +0200nick___(~nick@98.186.194.67)
2023-05-28 06:52:25 +0200nick__(~nick@98.186.194.67) (Ping timeout: 240 seconds)
2023-05-28 07:08:53 +0200takuan(~takuan@178-116-218-225.access.telenet.be)
2023-05-28 07:12:35 +0200kriity(~kriity@c-76-155-235-153.hsd1.co.comcast.net)
2023-05-28 07:19:08 +0200vandita(~vandit@84-236-8-26.pool.digikabel.hu) (Ping timeout: 240 seconds)
2023-05-28 07:21:02 +0200vandita(~vandit@87-97-2-208.pool.digikabel.hu)
2023-05-28 07:28:15 +0200hugo(znc@verdigris.lysator.liu.se) (Ping timeout: 265 seconds)
2023-05-28 07:34:00 +0200trev(~trev@user/trev)
2023-05-28 07:34:54 +0200Lycurgus(~juan@user/Lycurgus)
2023-05-28 07:36:39 +0200coot(~coot@89-69-206-216.dynamic.chello.pl)
2023-05-28 07:37:05 +0200ubert(~Thunderbi@p548c91e0.dip0.t-ipconnect.de) (Ping timeout: 256 seconds)
2023-05-28 07:37:12 +0200ub(~Thunderbi@p548c91e0.dip0.t-ipconnect.de)
2023-05-28 07:37:46 +0200freeside(~mengwong@103.252.202.189)
2023-05-28 07:39:20 +0200hugo(znc@verdigris.lysator.liu.se)
2023-05-28 07:39:30 +0200ububert
2023-05-28 07:43:08 +0200freeside(~mengwong@103.252.202.189) (Ping timeout: 240 seconds)
2023-05-28 07:50:05 +0200Lycurgus(~juan@user/Lycurgus) (Quit: Exeunt: personae.ai-integration.biz)
2023-05-28 07:50:17 +0200freeside(~mengwong@103.252.202.189)
2023-05-28 07:51:05 +0200nick__(~nick@98.186.194.67)
2023-05-28 07:53:31 +0200nick___(~nick@98.186.194.67) (Ping timeout: 240 seconds)
2023-05-28 07:54:26 +0200freeside(~mengwong@103.252.202.189) (Ping timeout: 250 seconds)
2023-05-28 08:03:22 +0200freeside(~mengwong@103.252.202.189)
2023-05-28 08:10:20 +0200xameer(~xameer@144.48.224.57)
2023-05-28 08:10:23 +0200freeside(~mengwong@103.252.202.189) (Ping timeout: 240 seconds)
2023-05-28 08:10:37 +0200xameer(~xameer@144.48.224.57) (Client Quit)
2023-05-28 08:17:59 +0200gmg(~user@user/gehmehgeh)
2023-05-28 08:22:47 +0200_d0t(~{-d0t-}@user/-d0t-/x-7915216)
2023-05-28 08:23:45 +0200werneta(~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net) (Ping timeout: 240 seconds)
2023-05-28 08:25:57 +0200werneta(~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net)
2023-05-28 08:27:10 +0200freeside(~mengwong@103.252.202.189)
2023-05-28 08:32:02 +0200freeside(~mengwong@103.252.202.189) (Ping timeout: 268 seconds)
2023-05-28 08:37:59 +0200shriekingnoise(~shrieking@186.137.175.87) (Ping timeout: 240 seconds)
2023-05-28 08:41:09 +0200kriity(~kriity@c-76-155-235-153.hsd1.co.comcast.net) (Quit: Client closed)
2023-05-28 08:44:15 +0200CiaoSen(~Jura@145.224.73.17)
2023-05-28 08:49:59 +0200jero98772(~jero98772@190.158.28.80) (Ping timeout: 240 seconds)
2023-05-28 08:50:39 +0200nick__(~nick@98.186.194.67) (Read error: Connection reset by peer)
2023-05-28 08:51:16 +0200nick__(~nick@98.186.194.67)
2023-05-28 08:52:56 +0200freeside(~mengwong@103.252.202.189)
2023-05-28 08:57:08 +0200freeside(~mengwong@103.252.202.189) (Ping timeout: 240 seconds)
2023-05-28 09:03:32 +0200zaquest(~notzaques@5.130.79.72)
2023-05-28 09:04:03 +0200jero98772(~jero98772@2800:484:1d7f:5d36::1)
2023-05-28 09:19:54 +0200edmundnoble(sid229620@helmsley.irccloud.com) (Ping timeout: 265 seconds)
2023-05-28 09:22:12 +0200oo_miguel(~Thunderbi@77.252.47.84)
2023-05-28 09:22:12 +0200edmundnoble(sid229620@id-229620.helmsley.irccloud.com)
2023-05-28 09:23:40 +0200gurkenglas(~user@dynamic-046-114-179-235.46.114.pool.telefonica.de)
2023-05-28 09:26:11 +0200coot(~coot@89-69-206-216.dynamic.chello.pl) (Quit: coot)
2023-05-28 09:29:36 +0200tzh(~tzh@c-24-21-73-154.hsd1.or.comcast.net) (Quit: zzz)
2023-05-28 09:32:32 +0200ec(~ec@gateway/tor-sasl/ec) (Ping timeout: 240 seconds)
2023-05-28 09:33:14 +0200ec(~ec@gateway/tor-sasl/ec)
2023-05-28 09:36:08 +0200bitdex(~bitdex@gateway/tor-sasl/bitdex) (Ping timeout: 240 seconds)
2023-05-28 09:37:48 +0200acidjnk(~acidjnk@p200300d6e7072f94f4c7cbffa0780c8e.dip0.t-ipconnect.de)
2023-05-28 09:41:54 +0200use-value1(~Thunderbi@2a00:23c6:8a03:2f01:e065:ca7f:f336:c3ee)
2023-05-28 09:44:04 +0200use-value(~Thunderbi@2a00:23c6:8a03:2f01:ddaa:9bff:1a38:a342) (Ping timeout: 265 seconds)
2023-05-28 09:44:04 +0200use-value1use-value
2023-05-28 09:44:33 +0200bigLama(~alex@2001:861:4f80:4a50:e792:bb46:1a0c:b1d2)
2023-05-28 09:45:11 +0200 <bigLama> Hi guys, are there people using the Diagrams library for making figures in scientific papers ?
2023-05-28 09:45:38 +0200 <bigLama> I wanted to try to use Haskell but Tikz has a larger community, better documentation for that
2023-05-28 09:46:02 +0200werneta(~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net) (Ping timeout: 268 seconds)
2023-05-28 09:46:17 +0200werneta(~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net)
2023-05-28 09:48:06 +0200 <Hecate> I don't write scientific papers but in any case you will want to try out both
2023-05-28 09:49:46 +0200 <tomsmeding> probie: generating the long kinds is easy, kinds are types so you can use a type family lol
2023-05-28 09:49:55 +0200 <tomsmeding> it's the chain of foralls
2023-05-28 09:51:30 +0200 <bigLama> Hecate: I've contribute to some figures in the Diagrams gallery back then, but it looks like graph generation is a weak point of Diagrams
2023-05-28 09:51:51 +0200nick___(~nick@98.186.194.67)
2023-05-28 09:52:19 +0200 <bigLama> I've been playing with diagrams-graphviz yesterday but haven't been satisfied (node labels are not printed out in my tests)
2023-05-28 09:53:25 +0200nick__(~nick@98.186.194.67) (Ping timeout: 240 seconds)
2023-05-28 09:55:30 +0200coot(~coot@89-69-206-216.dynamic.chello.pl)
2023-05-28 09:57:05 +0200tomboy64(~tomboy64@user/tomboy64) (Ping timeout: 240 seconds)
2023-05-28 09:58:16 +0200eggplantade(~Eggplanta@2600:1700:38c5:d800:e958:834b:4d15:c9fd) (Remote host closed the connection)
2023-05-28 09:59:41 +0200freeside(~mengwong@103.252.202.189)
2023-05-28 10:00:28 +0200jero98772(~jero98772@2800:484:1d7f:5d36::1) (Ping timeout: 240 seconds)
2023-05-28 10:02:32 +0200 <tomsmeding> probie: seems ghc doesn't like gadt pattern matches in a type family :p
2023-05-28 10:02:37 +0200 <tomsmeding> so don't think that's going to work
2023-05-28 10:04:01 +0200freeside(~mengwong@103.252.202.189) (Ping timeout: 240 seconds)
2023-05-28 10:05:37 +0200tomboy64(~tomboy64@user/tomboy64)
2023-05-28 10:05:50 +0200chomwitt(~chomwitt@2a02:587:7a16:6700:1ac0:4dff:fedb:a3f1)
2023-05-28 10:08:57 +0200CiaoSen(~Jura@145.224.73.17) (Ping timeout: 256 seconds)
2023-05-28 10:13:41 +0200jero98772(~jero98772@2800:484:1d7f:5d36::1)
2023-05-28 10:20:28 +0200gmg(~user@user/gehmehgeh) (Quit: Leaving)
2023-05-28 10:22:28 +0200vandita(~vandit@87-97-2-208.pool.digikabel.hu) (Ping timeout: 240 seconds)
2023-05-28 10:24:26 +0200vandita(~vandit@92-249-194-88.pool.digikabel.hu)
2023-05-28 10:24:59 +0200gnalzo(~gnalzo@2a01:e0a:498:fd50:fcc6:bb5d:489a:ce8c)
2023-05-28 10:25:20 +0200gmg(~user@user/gehmehgeh)
2023-05-28 10:33:05 +0200talismanick(~user@76.133.152.122) (Ping timeout: 246 seconds)
2023-05-28 10:41:39 +0200freeside(~mengwong@103.252.202.189)
2023-05-28 10:43:18 +0200slack1256(~slack1256@181.43.60.199) (Remote host closed the connection)
2023-05-28 10:45:35 +0200freeside(~mengwong@103.252.202.189) (Ping timeout: 240 seconds)
2023-05-28 10:48:18 +0200Sgeo(~Sgeo@user/sgeo) (Read error: Connection reset by peer)
2023-05-28 10:49:12 +0200eugenrh(~eugenrh@2a02:2f08:4707:3e00:454b:9ac4:8552:8de8)
2023-05-28 10:52:12 +0200nick__(~nick@98.186.194.67)
2023-05-28 10:53:59 +0200nick___(~nick@98.186.194.67) (Ping timeout: 240 seconds)
2023-05-28 10:54:29 +0200Lord_of_Life_(~Lord@user/lord-of-life/x-2819915)
2023-05-28 10:54:31 +0200DoxYourselfNow(~DoxYourse@030-171-099-087.dynamic.caiway.nl)
2023-05-28 10:55:31 +0200Lord_of_Life(~Lord@user/lord-of-life/x-2819915) (Ping timeout: 240 seconds)
2023-05-28 10:57:21 +0200Lord_of_Life_Lord_of_Life
2023-05-28 10:58:34 +0200eggplantade(~Eggplanta@2600:1700:38c5:d800:6539:794e:79f5:ac83)
2023-05-28 11:00:00 +0200econo(uid147250@user/econo) (Quit: Connection closed for inactivity)
2023-05-28 11:00:48 +0200_ht(~Thunderbi@28-52-174-82.ftth.glasoperator.nl)
2023-05-28 11:02:50 +0200eggplantade(~Eggplanta@2600:1700:38c5:d800:6539:794e:79f5:ac83) (Ping timeout: 246 seconds)
2023-05-28 11:04:02 +0200Tuplanolla(~Tuplanoll@91-159-68-236.elisa-laajakaista.fi)
2023-05-28 11:38:34 +0200coot(~coot@89-69-206-216.dynamic.chello.pl) (Quit: coot)
2023-05-28 11:53:20 +0200nick___(~nick@98.186.194.67)
2023-05-28 11:55:11 +0200nick__(~nick@98.186.194.67) (Ping timeout: 240 seconds)
2023-05-28 12:43:02 +0200freeside(~mengwong@103.252.202.189)
2023-05-28 12:45:55 +0200kritzefitz(~kritzefit@debian/kritzefitz) (Ping timeout: 256 seconds)
2023-05-28 12:47:28 +0200freeside(~mengwong@103.252.202.189) (Ping timeout: 248 seconds)
2023-05-28 12:50:02 +0200kritzefitz(~kritzefit@debian/kritzefitz)
2023-05-28 12:53:19 +0200nick__(~nick@98.186.194.67)
2023-05-28 12:55:25 +0200nick___(~nick@98.186.194.67) (Ping timeout: 240 seconds)
2023-05-28 12:55:35 +0200Pickchea(~private@user/pickchea)
2023-05-28 12:56:12 +0200_d0t(~{-d0t-}@user/-d0t-/x-7915216) (Konversation terminated!)
2023-05-28 13:06:58 +0200enoq(~enoq@2a05:1141:1f5:5600:b9c9:721a:599:bfe7)
2023-05-28 13:15:05 +0200gurkenglas(~user@dynamic-046-114-179-235.46.114.pool.telefonica.de) (Ping timeout: 268 seconds)
2023-05-28 13:15:23 +0200kritzefitz(~kritzefit@debian/kritzefitz) (Ping timeout: 256 seconds)
2023-05-28 13:16:50 +0200enoq(~enoq@2a05:1141:1f5:5600:b9c9:721a:599:bfe7) (Quit: enoq)
2023-05-28 13:17:58 +0200machinedgod(~machinedg@93-138-72-188.adsl.net.t-com.hr)
2023-05-28 13:27:18 +0200gurkenglas(~user@dynamic-046-114-179-235.46.114.pool.telefonica.de)
2023-05-28 13:35:55 +0200kluk(~arrowhead@cpe-74-66-76-151.nyc.res.rr.com) (Remote host closed the connection)
2023-05-28 13:43:06 +0200freeside(~mengwong@103.252.202.189)
2023-05-28 13:44:59 +0200accord(uid568320@id-568320.hampstead.irccloud.com)
2023-05-28 13:47:36 +0200freeside(~mengwong@103.252.202.189) (Ping timeout: 250 seconds)
2023-05-28 13:48:53 +0200__monty__(~toonn@user/toonn)
2023-05-28 13:53:35 +0200nick___(~nick@98.186.194.67)
2023-05-28 13:55:35 +0200nick__(~nick@98.186.194.67) (Ping timeout: 240 seconds)
2023-05-28 13:56:04 +0200bitdex(~bitdex@gateway/tor-sasl/bitdex)
2023-05-28 13:56:09 +0200kritzefitz(~kritzefit@debian/kritzefitz)
2023-05-28 14:04:39 +0200gnalzo(~gnalzo@2a01:e0a:498:fd50:fcc6:bb5d:489a:ce8c) (Quit: WeeChat 3.8)
2023-05-28 14:09:01 +0200 <jade[m]> when I have lenses for two records where one contains a value of the other, how do I modify a value of the nested one?
2023-05-28 14:10:34 +0200 <Axman6> can you give a more concrete example?
2023-05-28 14:10:56 +0200 <Axman6> that just sounds like composing two lenses to me, so i'm probably not understanding the question
2023-05-28 14:11:08 +0200 <Axman6> :t over
2023-05-28 14:11:09 +0200 <lambdabot> ASetter s t a b -> (a -> b) -> s -> t
2023-05-28 14:11:41 +0200 <Axman6> "over (foo . bar) f" feels like what're after?
2023-05-28 14:12:24 +0200Pickchea(~private@user/pickchea) (Quit: Leaving)
2023-05-28 14:12:31 +0200 <Axman6> a.k.a myData & foo . bar %~ f
2023-05-28 14:15:39 +0200 <jade[m]> yeah that's what I tried but I think previously for this case I needed a zoom first
2023-05-28 14:15:54 +0200 <jade[m]> I suppose I don't know the difference between zoom and view
2023-05-28 14:16:22 +0200 <jade[m]> I really don't know what I'm doing
2023-05-28 14:17:22 +0200 <Axman6> I've never used zoom
2023-05-28 14:17:33 +0200 <Axman6> I would be surprised if you need it
2023-05-28 14:17:59 +0200 <jade[m]> brick seems to require it for this
2023-05-28 14:18:17 +0200 <jade[m]> `appEvent :: BrickEvent Name () -> EventM Name ApplicationState ()` this is the signature of the function I'm writing
2023-05-28 14:18:26 +0200 <jade[m]> and I want to modify the ApplicationState
2023-05-28 14:18:46 +0200 <Axman6> that feels like you want the stateful functions then
2023-05-28 14:18:48 +0200 <jade[m]> which I'm super confused by in the first place because it's not passed in?!
2023-05-28 14:18:54 +0200 <jade[m]> but it somehow worked with zoom
2023-05-28 14:19:01 +0200 <Axman6> trhey usually have a = instead of a ~
2023-05-28 14:19:13 +0200 <maralorn> What’s the best way to convert "Decimal -> Scientific"? (knowing that I just rounded the decimal to 2 digits behind the dot.)
2023-05-28 14:19:22 +0200 <geekosaur> sure it's passed in, invisibly. state monad style
2023-05-28 14:19:36 +0200 <Axman6> is there an inst5ance for MonadState s (EventM name s)?
2023-05-28 14:19:47 +0200 <jade[m]> I think so, yes
2023-05-28 14:19:58 +0200 <Axman6> if so, yopu can use do ...; foo . bar %= f; ...
2023-05-28 14:20:33 +0200 <Axman6> maralorn: does fromRational work? where does Decimal come from?
2023-05-28 14:21:04 +0200perrierjouet(~perrier-j@modemcable048.127-56-74.mc.videotron.ca) (Quit: WeeChat 3.8)
2023-05-28 14:21:37 +0200 <jade[m]> oh wait, fuck
2023-05-28 14:21:38 +0200 <maralorn> Axman6: Yes, I currently use "fromRational . toRational". Just not sure if thats nice.
2023-05-28 14:21:44 +0200 <jade[m]> I had my composition the wrong way
2023-05-28 14:22:00 +0200enoq(~enoq@194-208-133-121.lampert.tv)
2023-05-28 14:22:21 +0200 <jade[m]> because I read foo . bar as foo after bar, but here you need the inner lens first (?)
2023-05-28 14:22:22 +0200 <Axman6> that'll do it :)
2023-05-28 14:22:29 +0200 <Axman6> yes
2023-05-28 14:22:48 +0200 <Axman6> Think of lens as oo style field access
2023-05-28 14:24:11 +0200 <jade[m]> mhm that makes sense
2023-05-28 14:24:23 +0200 <Axman6> it's worth learning how lens is actually implemented, the "backwards" composition actually makes sense when you realise it's functions of the form (a -> f b) -> (s -> f t)
2023-05-28 14:24:27 +0200 <jade[m]> I think this is a good sign for my fp thinking though :P
2023-05-28 14:25:27 +0200Kuttenbrunzer(~Kuttenbru@2a02:8108:8b80:1d48::aaf)
2023-05-28 14:25:58 +0200 <jade[m]> lenses are starting to make sense and ... actually feel pretty fucking useful
2023-05-28 14:26:04 +0200 <ncf> note that, if you wanted to *get* the foo.bar out of an object, with usual field accessors you'd write bar . foo, but if you wanted to *modify* the foo.bar of an object you're write something like modifyFoo . modifyBar
2023-05-28 14:26:12 +0200 <jade[m]> ok
2023-05-28 14:26:20 +0200 <ncf> (.) on van Laarhoven lenses is kind of magic in that it *combines* both directions
2023-05-28 14:26:49 +0200 <jade[m]> I should read some of the background of this
2023-05-28 14:26:58 +0200 <jade[m]> I think the general idea is called 'optics' right?
2023-05-28 14:27:14 +0200 <ncf> yes
2023-05-28 14:27:20 +0200 <Axman6> I hope there's some3 good videos out there somewhere, I'm sure Ed's done a few talks on lenses
2023-05-28 14:28:42 +0200 <ncf> i think the original article is https://www.twanvl.nl/blog/haskell/cps-functional-references , but https://kseo.github.io/posts/2016-12-10-encodings-of-lense.html might be more readable
2023-05-28 14:29:03 +0200freeside(~mengwong@103.252.202.189)
2023-05-28 14:29:26 +0200 <jade[m]> thank you very much
2023-05-28 14:33:27 +0200wootehfoot(~wootehfoo@user/wootehfoot)
2023-05-28 14:34:14 +0200pavonia(~user@user/siracusa) (Read error: Connection reset by peer)
2023-05-28 14:34:33 +0200freeside(~mengwong@103.252.202.189) (Ping timeout: 265 seconds)
2023-05-28 14:34:45 +0200machinedgod(~machinedg@93-138-72-188.adsl.net.t-com.hr) (Ping timeout: 240 seconds)
2023-05-28 14:36:13 +0200Kuttenbrunzer(~Kuttenbru@2a02:8108:8b80:1d48::aaf) (Quit: Where is it)
2023-05-28 14:39:28 +0200acidjnk(~acidjnk@p200300d6e7072f94f4c7cbffa0780c8e.dip0.t-ipconnect.de) (Ping timeout: 240 seconds)
2023-05-28 14:46:15 +0200pavonia(~user@user/siracusa)
2023-05-28 14:48:36 +0200monoidal(~monoidal@2001:861:3f42:1b60:93b1:31be:ae42:8ec9) (Quit: Client closed)
2023-05-28 14:49:06 +0200monoidal(~monoidal@2001:861:3f42:1b60:b032:576b:1cee:47f4)
2023-05-28 14:54:18 +0200nick__(~nick@98.186.194.67)
2023-05-28 14:56:56 +0200nick___(~nick@98.186.194.67) (Ping timeout: 250 seconds)
2023-05-28 15:03:48 +0200gurkenglas(~user@dynamic-046-114-179-235.46.114.pool.telefonica.de) (Ping timeout: 240 seconds)
2023-05-28 15:04:39 +0200freeside(~mengwong@103.252.202.189)
2023-05-28 15:06:03 +0200gurkenglas(~user@dynamic-046-114-177-130.46.114.pool.telefonica.de)
2023-05-28 15:09:08 +0200bigLama(~alex@2001:861:4f80:4a50:e792:bb46:1a0c:b1d2) (Remote host closed the connection)
2023-05-28 15:09:10 +0200freeside(~mengwong@103.252.202.189) (Ping timeout: 268 seconds)
2023-05-28 15:14:18 +0200titibandit(~titibandi@user/titibandit)
2023-05-28 15:24:35 +0200freeside(~mengwong@103.252.202.189)
2023-05-28 15:29:04 +0200freeside(~mengwong@103.252.202.189) (Ping timeout: 248 seconds)
2023-05-28 15:31:57 +0200gurkenglas(~user@dynamic-046-114-177-130.46.114.pool.telefonica.de) (Ping timeout: 256 seconds)
2023-05-28 15:35:07 +0200xameer(~xameer@144.48.224.57)
2023-05-28 15:38:11 +0200xameer(~xameer@144.48.224.57) (Client Quit)
2023-05-28 15:39:31 +0200eugenrh(~eugenrh@2a02:2f08:4707:3e00:454b:9ac4:8552:8de8) (Ping timeout: 240 seconds)
2023-05-28 15:41:18 +0200eugenrh(~eugenrh@2a02:2f08:4b00:6a00:ab5b:20eb:9a4c:afc)
2023-05-28 15:45:28 +0200lewisje(~lewisje@74.215.20.3)
2023-05-28 15:46:28 +0200eugenrh(~eugenrh@2a02:2f08:4b00:6a00:ab5b:20eb:9a4c:afc) (Ping timeout: 240 seconds)
2023-05-28 15:48:30 +0200eugenrh(~eugenrh@2a02:2f08:4d13:f600:b5b6:b254:6944:c58b)
2023-05-28 15:53:25 +0200freeside(~mengwong@103.252.202.189)
2023-05-28 15:54:41 +0200nick___(~nick@98.186.194.67)
2023-05-28 15:56:23 +0200nick__(~nick@98.186.194.67) (Ping timeout: 240 seconds)
2023-05-28 15:56:26 +0200coot(~coot@89-69-206-216.dynamic.chello.pl)
2023-05-28 15:56:55 +0200gemmaro(~user@240f:74:d1f0:1:ba1:e787:c9e:b1dc)
2023-05-28 15:58:01 +0200freeside(~mengwong@103.252.202.189) (Ping timeout: 240 seconds)
2023-05-28 16:01:46 +0200perrierjouet(~perrier-j@modemcable048.127-56-74.mc.videotron.ca)
2023-05-28 16:05:29 +0200eggplantade(~Eggplanta@2600:1700:38c5:d800:6c9c:9af5:8708:5fc6)
2023-05-28 16:07:41 +0200shapr(~user@2600:1700:c640:3100:6ac8:cf17:6356:ff5f)
2023-05-28 16:08:51 +0200gurkenglas(~user@dynamic-046-114-177-130.46.114.pool.telefonica.de)
2023-05-28 16:09:55 +0200eggplantade(~Eggplanta@2600:1700:38c5:d800:6c9c:9af5:8708:5fc6) (Ping timeout: 256 seconds)
2023-05-28 16:10:45 +0200nick___(~nick@98.186.194.67) (Ping timeout: 240 seconds)
2023-05-28 16:14:55 +0200Katarushisu(~Katarushi@cpc147790-finc20-2-0-cust502.4-2.cable.virginm.net) (Quit: The Lounge - https://thelounge.chat)
2023-05-28 16:15:28 +0200freeside(~mengwong@103.252.202.189)
2023-05-28 16:20:45 +0200freeside(~mengwong@103.252.202.189) (Ping timeout: 240 seconds)
2023-05-28 16:25:33 +0200tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Read error: Connection reset by peer)
2023-05-28 16:33:11 +0200gnalzo(~gnalzo@2a01:e0a:498:fd50:fcc6:bb5d:489a:ce8c)
2023-05-28 16:39:39 +0200shriekingnoise(~shrieking@186.137.175.87)
2023-05-28 16:51:36 +0200bitdex(~bitdex@gateway/tor-sasl/bitdex) (Quit: = "")
2023-05-28 16:59:13 +0200[itchyjunk](~itchyjunk@user/itchyjunk/x-7353470)
2023-05-28 16:59:43 +0200gemmaro(~user@240f:74:d1f0:1:ba1:e787:c9e:b1dc) (Remote host closed the connection)
2023-05-28 17:01:49 +0200 <jade[m]> <ncf> "i think the original article..." <- amazing, thank you
2023-05-28 17:04:32 +0200zmt00(~zmt00@user/zmt00) (Ping timeout: 248 seconds)
2023-05-28 17:06:26 +0200stef204(~stef204@user/stef204)
2023-05-28 17:08:17 +0200Pickchea(~private@user/pickchea)
2023-05-28 17:18:20 +0200 <ManofLetters[m]> hi! what am I missing; why doesn't this work?
2023-05-28 17:18:20 +0200 <ManofLetters[m]> ```hs
2023-05-28 17:18:20 +0200 <ManofLetters[m]> ~/r/horde-ad$ ghci-9.6.1
2023-05-28 17:18:20 +0200 <ManofLetters[m]> ...(truncated)
2023-05-28 17:19:01 +0200 <geekosaur> the bridge ate that. can you use a pastebin?
2023-05-28 17:19:04 +0200 <geekosaur> @where paste
2023-05-28 17:19:04 +0200 <lambdabot> Help us help you: please paste full code, input and/or output at e.g. https://paste.tomsmeding.com
2023-05-28 17:19:12 +0200 <ManofLetters[m]> sorry
2023-05-28 17:19:32 +0200 <geekosaur> apparently it no longer pastebins, it just outputs the first line or so and truncates
2023-05-28 17:19:35 +0200 <ManofLetters[m]> https://paste.tomsmeding.com/okqxry2D
2023-05-28 17:19:38 +0200 <geekosaur> (boo hiss)
2023-05-28 17:19:43 +0200 <ManofLetters[m]> :)
2023-05-28 17:21:07 +0200 <geekosaur> `*` doesn't match `* -> *`
2023-05-28 17:22:12 +0200 <geekosaur> that is, `k -> *` won't match `* -> * -> *`
2023-05-28 17:22:26 +0200 <ManofLetters[m]> I'd expect `:k Compose Either` to be `(* -> (* -> *)) -> * -> *`
2023-05-28 17:22:26 +0200 <maralorn> Man of Letters: Either isn’t a functor. `Either a` is a functor forall a
2023-05-28 17:22:54 +0200 <geekosaur> it associates rightward, so k can't match against * -> *
2023-05-28 17:23:05 +0200 <geekosaur> and * is not a wildcaard, it means Type
2023-05-28 17:23:17 +0200 <geekosaur> and Type -> Type doesn't match Type
2023-05-28 17:23:30 +0200 <ManofLetters[m]> oh, dear, so which of this zoo of type operators do I need to wrap it in? https://hackage.haskell.org/package/bifunctors-5.6.1/docs/Data-Bifunctor-Wrapped.html
2023-05-28 17:23:32 +0200enoq(~enoq@194-208-133-121.lampert.tv) (Quit: enoq)
2023-05-28 17:24:08 +0200tzh(~tzh@c-24-21-73-154.hsd1.wa.comcast.net)
2023-05-28 17:25:10 +0200 <geekosaur> I haven't leveled up that far yet 😕
2023-05-28 17:25:31 +0200 <ManofLetters[m]> or all is lost, because Either is not a bifunctor either?
2023-05-28 17:25:34 +0200 <ManofLetters[m]> heh, thanks
2023-05-28 17:26:05 +0200 <monoidal> Either is a bifunctor
2023-05-28 17:28:45 +0200 <monoidal> perhaps you're looking for https://hackage.haskell.org/package/bifunctors-5.6.1/docs/Data-Bifunctor-Sum.html
2023-05-28 17:32:05 +0200__monty__(~toonn@user/toonn) (Quit: leaving)
2023-05-28 17:33:00 +0200 <ManofLetters[m]> ok, thanks; what I really need to is composing two type operators `F1 : * -> *` and `F2: * -> Nat -> *` so that I get `Compose F1 F2 :: * -> Nat -> *` and my idea to do this was `Compose (Compose F1) F2`
2023-05-28 17:33:17 +0200 <ManofLetters[m]> F1 is a datatype, F2 is a type variable (class parameter)
2023-05-28 17:33:49 +0200 <ManofLetters[m]> blurg; let me edit:
2023-05-28 17:34:11 +0200 <ManofLetters[m]> * ok, thanks; what I really need to is composing two type operators `F1 : * -> *` and `F2: * -> Nat -> *` so that I get a result of kind `* -> Nat -> *` and my idea to do this was `Compose (Compose F1) F2`
2023-05-28 17:36:12 +0200 <ManofLetters[m]> and I guess in simply typed lambda calculus it would work (actually I have to check); I knew there are restrictions to partial application (of type families at least) and non-top-level abstraction, but I didn't know we are otherwise so far from simply typed lambda calculus on the level of types
2023-05-28 17:38:04 +0200 <monoidal> IIUIC you'd like https://hackage.haskell.org/package/bifunctors-5.6.1/docs/Data-Bifunctor-Tannen.html
2023-05-28 17:38:32 +0200 <ManofLetters[m]> yes, I think it works fine on value level: `f a b = (.) ((.) a) b :: (b -> c) -> (a1 -> a2 -> b) -> a1 -> a2 -> c`
2023-05-28 17:38:47 +0200 <ManofLetters[m]> ok, ta; will have a look later on; cheers!
2023-05-28 17:40:31 +0200Alex_test(~al_test@178.34.163.104) (Ping timeout: 240 seconds)
2023-05-28 17:41:35 +0200AlexZenon(~alzenon@178.34.163.104) (Ping timeout: 240 seconds)
2023-05-28 17:46:44 +0200Alex_test(~al_test@178.34.163.104)
2023-05-28 17:46:48 +0200AlexZenon(~alzenon@178.34.163.104)
2023-05-28 17:53:59 +0200AlexZenon(~alzenon@178.34.163.104) (Ping timeout: 240 seconds)
2023-05-28 17:54:22 +0200wroathe(~wroathe@207-153-38-140.fttp.usinternet.com)
2023-05-28 17:54:23 +0200wroathe(~wroathe@207-153-38-140.fttp.usinternet.com) (Changing host)
2023-05-28 17:54:23 +0200wroathe(~wroathe@user/wroathe)
2023-05-28 17:54:59 +0200scrungus(~scrungus@bras-base-aurron9127w-grc-63-70-24-87-21.dsl.bell.ca)
2023-05-28 17:55:55 +0200AlexZenon(~alzenon@178.34.163.104)
2023-05-28 18:03:25 +0200Katarushisu(~Katarushi@cpc147790-finc20-2-0-cust502.4-2.cable.virginm.net)
2023-05-28 18:03:27 +0200myxokeph_(~myxokeph@cpe-65-28-251-121.cinci.res.rr.com)
2023-05-28 18:05:16 +0200titibandit(~titibandi@user/titibandit) (Remote host closed the connection)
2023-05-28 18:09:09 +0200myxokeph_myxwell
2023-05-28 18:09:36 +0200myxwell(~myxokeph@cpe-65-28-251-121.cinci.res.rr.com) (Quit: myxwell)
2023-05-28 18:09:49 +0200myxokeph_(~myxokeph@cpe-65-28-251-121.cinci.res.rr.com)
2023-05-28 18:11:09 +0200myxokeph_myxwell
2023-05-28 18:12:19 +0200myxwellmyxos
2023-05-28 18:15:19 +0200myxos(~myxokeph@cpe-65-28-251-121.cinci.res.rr.com) (Remote host closed the connection)
2023-05-28 18:15:32 +0200myxokeph_(~myxokeph@cpe-65-28-251-121.cinci.res.rr.com)
2023-05-28 18:15:42 +0200myxokeph_myxos
2023-05-28 18:17:18 +0200Pickchea(~private@user/pickchea) (Quit: Leaving)
2023-05-28 18:17:26 +0200econo(uid147250@user/econo)
2023-05-28 18:17:53 +0200mechap(~mechap@user/mechap) (Ping timeout: 246 seconds)
2023-05-28 18:18:33 +0200ddellacosta(~ddellacos@146.70.185.10) (Ping timeout: 256 seconds)
2023-05-28 18:19:07 +0200myxos(~myxokeph@cpe-65-28-251-121.cinci.res.rr.com) (Client Quit)
2023-05-28 18:19:22 +0200myxokeph_(~myxokeph@cpe-65-28-251-121.cinci.res.rr.com)
2023-05-28 18:19:25 +0200myxokeph_myxokephale
2023-05-28 18:20:04 +0200myxokephalemyxos
2023-05-28 18:21:08 +0200myxos(~myxokeph@cpe-65-28-251-121.cinci.res.rr.com) (Client Quit)
2023-05-28 18:21:22 +0200myxokeph_(~myxokeph@cpe-65-28-251-121.cinci.res.rr.com)
2023-05-28 18:21:33 +0200myxokeph_myxos
2023-05-28 18:22:33 +0200myxosmyxokephale
2023-05-28 18:22:54 +0200myxokephalemyxos
2023-05-28 18:22:59 +0200wroathe(~wroathe@user/wroathe) (Ping timeout: 264 seconds)
2023-05-28 18:30:27 +0200mechap(~mechap@user/mechap)
2023-05-28 18:33:11 +0200ec(~ec@gateway/tor-sasl/ec) (Remote host closed the connection)
2023-05-28 18:33:48 +0200ec(~ec@gateway/tor-sasl/ec)
2023-05-28 18:34:14 +0200__monty__(~toonn@user/toonn)
2023-05-28 18:37:14 +0200jinsun(~jinsun@user/jinsun) (Read error: Connection reset by peer)
2023-05-28 18:37:24 +0200phma_(~phma@host-67-44-208-181.hnremote.net)
2023-05-28 18:37:25 +0200biberu\(~biberu@user/biberu)
2023-05-28 18:37:30 +0200juri__(~juri@79.140.121.73)
2023-05-28 18:37:49 +0200chexum(~quassel@gateway/tor-sasl/chexum) (Remote host closed the connection)
2023-05-28 18:37:57 +0200chexum(~quassel@gateway/tor-sasl/chexum)
2023-05-28 18:38:04 +0200jinsun(~jinsun@user/jinsun)
2023-05-28 18:40:01 +0200phma(phma@2001:5b0:2172:dd28:fe45:160f:de72:96fc) (Ping timeout: 240 seconds)
2023-05-28 18:40:29 +0200juri_(~juri@84-19-175-187.pool.ovpn.com) (Ping timeout: 256 seconds)
2023-05-28 18:40:29 +0200biberu(~biberu@user/biberu) (Ping timeout: 256 seconds)
2023-05-28 18:40:30 +0200biberu\biberu
2023-05-28 18:40:38 +0200eggplantade(~Eggplanta@2600:1700:38c5:d800:6c9c:9af5:8708:5fc6)
2023-05-28 18:41:05 +0200juri__(~juri@79.140.121.73) (Read error: Connection reset by peer)
2023-05-28 18:41:44 +0200pharonix71(~pharonix7@user/pharonix71) (Ping timeout: 240 seconds)
2023-05-28 18:42:30 +0200juri_(~juri@79.140.121.73)
2023-05-28 18:43:04 +0200 <tomsmeding> ManofLetters[m]: it doesn't have anything to do with limits to partial application
2023-05-28 18:43:04 +0200juri_(~juri@79.140.121.73) (Read error: Connection reset by peer)
2023-05-28 18:43:17 +0200 <tomsmeding> % :k Data.Functor.Compose.Compose
2023-05-28 18:43:17 +0200 <yahb2> Data.Functor.Compose.Compose :: forall {k} {k1}. ; (k -> *) -> (k1 -> k) -> k1 -> *
2023-05-28 18:43:25 +0200 <tomsmeding> first argument is of kind 'k -> *'
2023-05-28 18:43:30 +0200 <tomsmeding> % :k Either
2023-05-28 18:43:30 +0200 <yahb2> Either :: * -> * -> *
2023-05-28 18:43:41 +0200 <tomsmeding> * -> * -> * == * -> (* -> *)
2023-05-28 18:43:46 +0200 <tomsmeding> (* -> *) doesn't unify with *
2023-05-28 18:43:54 +0200pharonix71(~pharonix7@user/pharonix71)
2023-05-28 18:44:10 +0200 <tomsmeding> you'd want a Compose' with kind (k -> r) -> (k1 -> k) -> k1 -> r
2023-05-28 18:44:24 +0200 <tomsmeding> but this is not a data type because a data type lives in * :p
2023-05-28 18:44:30 +0200 <tomsmeding> hence the problem
2023-05-28 18:45:25 +0200freeside_(~mengwong@103.252.202.189)
2023-05-28 18:46:02 +0200tomsmedingsaw another person unrelatedly asking about type families polymorphic in the number of type arguments this morning https://ircbrowse.tomsmeding.com/day/lchaskell/2023/05/28?id=971947#trid971947
2023-05-28 18:46:10 +0200 <tomsmeding> unexpectedly related
2023-05-28 18:47:30 +0200juri_(~juri@84-19-175-187.pool.ovpn.com)
2023-05-28 18:49:28 +0200freeside_(~mengwong@103.252.202.189) (Ping timeout: 240 seconds)
2023-05-28 18:50:28 +0200stef204(~stef204@user/stef204) (Ping timeout: 240 seconds)
2023-05-28 18:54:58 +0200szkl(uid110435@id-110435.uxbridge.irccloud.com) (Quit: Connection closed for inactivity)
2023-05-28 18:56:07 +0200bgs(~bgs@212-85-160-171.dynamic.telemach.net)
2023-05-28 19:03:24 +0200zmt00(~zmt00@user/zmt00)
2023-05-28 19:03:25 +0200stef204(~stef204@user/stef204)
2023-05-28 19:03:31 +0200vandita(~vandit@92-249-194-88.pool.digikabel.hu) (Ping timeout: 240 seconds)
2023-05-28 19:05:26 +0200vandita(~vandit@84-236-10-38.pool.digikabel.hu)
2023-05-28 19:06:21 +0200 <ManofLetters[m]> doh, tomsmeding, thank you, so the contrived Either example was just my silly mistake; actually geekosaurpointed to it as well
2023-05-28 19:08:48 +0200hugo(znc@verdigris.lysator.liu.se) (Ping timeout: 240 seconds)
2023-05-28 19:09:08 +0200 <ManofLetters[m]> oh, but the real error I'm getting is caused by the same thing, the * in Compose
2023-05-28 19:27:23 +0200hugo(znc@verdigris.lysator.liu.se)
2023-05-28 19:28:47 +0200 <ManofLetters[m]> but try as I may I'm not able to make this work:
2023-05-28 19:28:49 +0200 <ManofLetters[m]> type Compose' :: (k -> r) -> (l -> k) -> l -> r
2023-05-28 19:28:49 +0200 <ManofLetters[m]> data Compose' f g a = Compose' (f (g a))
2023-05-28 19:29:20 +0200 <ManofLetters[m]> nor with a newtype
2023-05-28 19:29:46 +0200 <ManofLetters[m]> before I start accusing Haskell of being inferior to even simply typed lambda calculus, let me wait for a sage hacker to have a look...
2023-05-28 19:29:47 +0200 <c_wraith> well. no. you can't have constructors if the end result isn't Type
2023-05-28 19:30:09 +0200 <ManofLetters[m]> ;(
2023-05-28 19:31:11 +0200 <monochrom> <come-join-the-dark-side>May I interest you in a really dependent type system such as the Lean prover? >:) </come-join-the-dark-side>
2023-05-28 19:31:46 +0200monochromrecently begun writing printf in that. >:D
2023-05-28 19:33:05 +0200 <ManofLetters[m]> no, but in fact I'd just like to write a working program, nothing more, it's just that a friend proposed an innocent little refactoring to my code and that's how I found myself in this pickle
2023-05-28 19:35:39 +0200 <c_wraith> Well, it's just the way GHC uses the kind system. All values have a type with kind Type.
2023-05-28 19:36:11 +0200 <c_wraith> You can imagine other systems, but GHC went the simple direction there.
2023-05-28 19:36:41 +0200 <ManofLetters[m]> yes, I'm not complaining (this time), I'm grateful for what I have; let me inline the two Composes instead...
2023-05-28 19:37:11 +0200 <monoidal> data family Comp :: (k -> r) -> (l -> k) -> l -> r
2023-05-28 19:37:12 +0200 <monoidal> data instance Comp f g x = Comp (f (g x))
2023-05-28 19:37:33 +0200 <monoidal> you can add more instances, like data instance Comp f g x y = Comp2 (f (g x) y)
2023-05-28 19:37:40 +0200 <monoidal> it's still a hack
2023-05-28 19:38:18 +0200chomwitt(~chomwitt@2a02:587:7a16:6700:1ac0:4dff:fedb:a3f1) (Remote host closed the connection)
2023-05-28 19:39:26 +0200 <ManofLetters[m]> phew, this one works:
2023-05-28 19:39:26 +0200 <ManofLetters[m]> type Compose2 :: (r -> Type) -> (r -> n -> r) -> r -> n -> Type
2023-05-28 19:39:26 +0200 <ManofLetters[m]> newtype Compose2 f g r n = Compose2 {getCompose2 :: f (g r n)}
2023-05-28 19:39:58 +0200 <ManofLetters[m]> it's the same as Compose (Compose f) g, but inlined
2023-05-28 19:40:24 +0200 <ManofLetters[m]> monoidal: on, interesting
2023-05-28 19:40:27 +0200 <ManofLetters[m]> *oh
2023-05-28 19:41:12 +0200 <ManofLetters[m]> (actually Compose2 is a bit less general than the original expression, but it's exactly what I needed)
2023-05-28 19:43:43 +0200xameer(~xameer@144.48.224.57)
2023-05-28 19:43:49 +0200 <ManofLetters[m]> monoidal: and even partial application works, unlike for type synonym families; I wonder if I could use Comp inside quantified constraints, too
2023-05-28 19:44:35 +0200 <monoidal> your Compose2 is here https://hackage.haskell.org/package/bifunctors-5.5.5/docs/Data-Bifunctor-Tannen.html
2023-05-28 19:44:51 +0200 <ManofLetters[m]> no way :D
2023-05-28 19:46:55 +0200 <ManofLetters[m]> this is what you proposed a page ago but I haven't looked yet; you are right, it's the same, but without the explicit kind signature, because it's apparently not needed
2023-05-28 19:47:20 +0200xameer(~xameer@144.48.224.57) (Client Quit)
2023-05-28 19:47:22 +0200ManofLetters[m]feels silly again
2023-05-28 19:48:50 +0200 <ManofLetters[m]> yes, it works, thanks a lot everybody; it was all already there, in the most basic libraries :)
2023-05-28 19:48:54 +0200 <monoidal> I suspect there's no kind signature because the code predates that. With level of polymorphism, I'd prefer to write it
2023-05-28 19:49:09 +0200 <ManofLetters[m]> yeah, it helps; anyway, Haskell rocks
2023-05-28 19:52:42 +0200ddellacosta(~ddellacos@146.70.171.100)
2023-05-28 19:58:23 +0200ddellacosta(~ddellacos@146.70.171.100) (Ping timeout: 268 seconds)
2023-05-28 20:02:25 +0200phma_phma
2023-05-28 20:09:21 +0200ddellacosta(~ddellacos@146.70.165.170)
2023-05-28 20:11:58 +0200freeside_(~mengwong@103.252.202.189)
2023-05-28 20:13:43 +0200eugenrh(~eugenrh@2a02:2f08:4d13:f600:b5b6:b254:6944:c58b) (Quit: WeeChat 3.8)
2023-05-28 20:16:18 +0200freeside_(~mengwong@103.252.202.189) (Ping timeout: 250 seconds)
2023-05-28 20:18:40 +0200ddellacosta(~ddellacos@146.70.165.170) (Ping timeout: 248 seconds)
2023-05-28 20:21:35 +0200ddellacosta(~ddellacos@143.244.47.87)
2023-05-28 20:24:36 +0200accord(uid568320@id-568320.hampstead.irccloud.com) (Quit: Connection closed for inactivity)
2023-05-28 20:28:25 +0200ddellacosta(~ddellacos@143.244.47.87) (Ping timeout: 240 seconds)
2023-05-28 20:29:51 +0200ddellacosta(~ddellacos@143.244.47.87)
2023-05-28 20:38:11 +0200eugenrh(~eugenrh@2a01:4f9:c011:265::1)
2023-05-28 20:42:58 +0200Sgeo(~Sgeo@user/sgeo)
2023-05-28 20:53:07 +0200machinedgod(~machinedg@93-138-72-188.adsl.net.t-com.hr)
2023-05-28 20:54:25 +0200wroathe(~wroathe@207-153-38-140.fttp.usinternet.com)
2023-05-28 20:54:25 +0200wroathe(~wroathe@207-153-38-140.fttp.usinternet.com) (Changing host)
2023-05-28 20:54:25 +0200wroathe(~wroathe@user/wroathe)
2023-05-28 20:56:05 +0200reach(~reach@2607:fea8:4c0:990:f891:b512:3659:bf1b)
2023-05-28 20:57:15 +0200cheater_(~Username@user/cheater)
2023-05-28 20:59:08 +0200cheater(~Username@user/cheater) (Ping timeout: 240 seconds)
2023-05-28 20:59:10 +0200cheater_cheater
2023-05-28 21:02:13 +0200cheater_(~Username@user/cheater)
2023-05-28 21:04:36 +0200cheater(~Username@user/cheater) (Ping timeout: 265 seconds)
2023-05-28 21:06:09 +0200coot(~coot@89-69-206-216.dynamic.chello.pl) (Quit: coot)
2023-05-28 21:07:01 +0200cheater_(~Username@user/cheater) (Ping timeout: 265 seconds)
2023-05-28 21:09:42 +0200michalz(~michalz@185.246.204.75)
2023-05-28 21:16:31 +0200reach(~reach@2607:fea8:4c0:990:f891:b512:3659:bf1b) (Ping timeout: 240 seconds)
2023-05-28 21:20:04 +0200use-value(~Thunderbi@2a00:23c6:8a03:2f01:e065:ca7f:f336:c3ee) (Remote host closed the connection)
2023-05-28 21:20:23 +0200use-value(~Thunderbi@2a00:23c6:8a03:2f01:e065:ca7f:f336:c3ee)
2023-05-28 21:24:54 +0200machinedgod(~machinedg@93-138-72-188.adsl.net.t-com.hr) (Ping timeout: 265 seconds)
2023-05-28 21:30:08 +0200reach(~reach@2607:fea8:4c0:990:f891:b512:3659:bf1b)
2023-05-28 21:32:19 +0200Guest13(~Guest13@250.79-105-213.static.virginmediabusiness.co.uk)
2023-05-28 21:32:31 +0200wroathe(~wroathe@user/wroathe) (Ping timeout: 240 seconds)
2023-05-28 21:32:37 +0200trev(~trev@user/trev) (Quit: trev)
2023-05-28 21:32:41 +0200 <Guest13> idk monad transformers can i ask a question?
2023-05-28 21:33:08 +0200 <Guest13> how would i put a random number field into memory and use monads to encapsulate it?
2023-05-28 21:33:23 +0200 <Guest13> im worried the rng will be called each time it is used, and reporduce the same random sequence
2023-05-28 21:33:58 +0200 <Guest13> iiuc i can put it in a monad, and everything that opperates in that monad will have access to the already computed random numbers
2023-05-28 21:34:25 +0200 <Guest13> im not sure how that works
2023-05-28 21:35:30 +0200 <jade[m]> you're confusing a few concepts here I believe
2023-05-28 21:36:04 +0200 <jade[m]> it sounds like what you want it a random number generator sourced from the real world
2023-05-28 21:36:35 +0200 <jade[m]> which means you need a function that does that and will therefore run in the io monad
2023-05-28 21:36:40 +0200 <Guest13> no
2023-05-28 21:36:45 +0200 <Guest13> i meant exactly what i said
2023-05-28 21:37:01 +0200 <Guest13> except maybe the bit about transformers, which is what im unsure of
2023-05-28 21:37:17 +0200 <Guest13> the rng is not IO
2023-05-28 21:37:25 +0200 <Guest13> it runs from an Int seed
2023-05-28 21:37:34 +0200 <Guest13> but this is held fixed
2023-05-28 21:37:42 +0200 <Guest13> so there is no point recomputing the sequence
2023-05-28 21:37:48 +0200 <jade[m]> yes, then this will be the same sequence of numbers for every run
2023-05-28 21:38:04 +0200 <Guest13> (its just being used as random support, you want the support set held constant)
2023-05-28 21:38:15 +0200 <geekosaur> are they asking that, or if the sequence will be iterated?
2023-05-28 21:38:29 +0200 <Guest13> just that it not be reevaluated
2023-05-28 21:38:43 +0200 <jade[m]> it won't be if it's from a pure seed
2023-05-28 21:38:52 +0200 <jade[m]> just like haskell works in general
2023-05-28 21:39:01 +0200 <Guest13> exactly, so not IO, the monad is just to store the computed sequence in
2023-05-28 21:39:14 +0200 <jade[m]> why do you need a monad?
2023-05-28 21:39:23 +0200 <Guest13> i could compute it, and pass it in as arguments instead, there is no strict requirement
2023-05-28 21:39:31 +0200 <Guest13> but i dont actually know how to do the monadic version
2023-05-28 21:39:44 +0200 <jade[m]> why do you want a monad
2023-05-28 21:39:48 +0200 <Guest13> i think its more of a paradigm thing
2023-05-28 21:40:04 +0200 <Guest13> instead of having to handle the extra argument everywhere, that you would just work in that monad
2023-05-28 21:40:29 +0200 <jade[m]> it sounds like you want a state monad?
2023-05-28 21:40:38 +0200 <jade[m]> but im having difficulties following
2023-05-28 21:40:41 +0200 <Guest13> it might save the possibility to supply the wrong argument for example
2023-05-28 21:40:47 +0200 <geekosaur> it sounds a lot like MonadRandom which is basically State
2023-05-28 21:40:58 +0200 <Guest13> hmm, sounds promising
2023-05-28 21:41:24 +0200 <Guest13> but isnt that a way of handling the seed itself as the state?
2023-05-28 21:41:43 +0200 <Guest13> to save having to store the new seed returned with the random number
2023-05-28 21:41:50 +0200 <geekosaur> yes
2023-05-28 21:42:17 +0200 <geekosaur> but if you have a precomputed sequence, nothing stops the "seed" from being a list or Seq made from that sequence
2023-05-28 21:42:18 +0200 <Guest13> this would simply unfold a sequence, so the sequence of seeds is already hidden
2023-05-28 21:42:33 +0200 <Guest13> i could even supply it with [1..]
2023-05-28 21:42:48 +0200 <Guest13> not that this would be a good random support!
2023-05-28 21:42:51 +0200 <geekosaur> or you could do that with State directly
2023-05-28 21:42:52 +0200Pickchea(~private@user/pickchea)
2023-05-28 21:43:03 +0200 <Guest13> im not sure how you mean
2023-05-28 21:43:33 +0200 <Guest13> i mean, System.Random already gives "randoms"
2023-05-28 21:44:46 +0200 <Guest13> the seed im using is just (mkStdGen 0)
2023-05-28 21:46:29 +0200 <jade[m]> that's what I meant with a pure generation
2023-05-28 21:46:36 +0200 <Guest13> the problem is the number of randoms it produces is verry large, i really want to preclude the possibility its recomputed
2023-05-28 21:46:41 +0200 <jade[m]> what is your question right now?
2023-05-28 21:46:48 +0200 <Guest13> jade[m], as opposed to eg. randomRIO
2023-05-28 21:47:11 +0200 <Guest13> jade[m]: how would i put a random number field into memory and use monads to encapsulate it?
2023-05-28 21:47:27 +0200 <jade[m]> I don't understand the question
2023-05-28 21:47:37 +0200 <jade[m]> Guest13: yes
2023-05-28 21:47:50 +0200 <Guest13> maybe you could ask a clarifying question, or someone that understands could answer
2023-05-28 21:48:13 +0200 <monochrom> Where can I find the mathematical definition for "random number field"?
2023-05-28 21:48:19 +0200 <Guest13> oh, sorry
2023-05-28 21:48:26 +0200 <Guest13> i just mean the list of precomputed random values
2023-05-28 21:48:55 +0200 <Guest13> its not a "field", apologies
2023-05-28 21:48:57 +0200 <jade[m]> Guest13: what does "put into memory" mean in the context of haskell and why do you *need* monads
2023-05-28 21:49:24 +0200 <monochrom> How important is "precomputed"? As compared to "on-demand compute and save".
2023-05-28 21:49:37 +0200 <Guest13> the idea of using monads was to save the use of function arguments that could allow the user to supply incorrect values
2023-05-28 21:49:51 +0200 <monochrom> Or equivalently, is randomRs sufficient? If not, why?
2023-05-28 21:50:20 +0200 <Guest13> monochrom: the first evaluation, if i was going to pass it in as arguments everywhere, i would use a bang pattern to ensure it was calculated ahead of all further computation
2023-05-28 21:50:21 +0200 <monochrom> monad is going to be orthogonal to this.
2023-05-28 21:50:31 +0200stef204(~stef204@user/stef204) (Ping timeout: 240 seconds)
2023-05-28 21:50:43 +0200 <Guest13> randomRs is used. to generate the sequence, this is not the issue.
2023-05-28 21:50:53 +0200 <monochrom> At most, a suitable monad makes the code look nicer. But you can't make the semantics nicer or uglier.
2023-05-28 21:50:53 +0200 <jade[m]> Guest13: that's not what monads are used for, it sounds like you just want booleab guards
2023-05-28 21:51:15 +0200 <jade[m]> s/booleab/boolean
2023-05-28 21:51:20 +0200 <jade[m]> booleab sounds funny
2023-05-28 21:51:36 +0200 <monochrom> OK so just add bangs at the right place. Problem solved.
2023-05-28 21:51:55 +0200 <Guest13> precomputing the sequence was also not the problem
2023-05-28 21:52:11 +0200 <Guest13> its preventing the user from supplying a different sequence by mistake
2023-05-28 21:52:23 +0200 <jade[m]> I dont see where the issue is
2023-05-28 21:52:24 +0200 <Guest13> you work in this one monad, and never see the argument
2023-05-28 21:52:48 +0200 <Guest13> if the user could supply a different sequence, the support would be wrong
2023-05-28 21:53:01 +0200reach(~reach@2607:fea8:4c0:990:f891:b512:3659:bf1b) (Ping timeout: 240 seconds)
2023-05-28 21:53:09 +0200 <monochrom> OK, if you give your user some "foo :: Int", the user cannot pretend it's "foo :: String -> Int" and give it the wrong string.
2023-05-28 21:53:23 +0200 <Guest13> and it could potentially also open up the opportunity that the correct sequence could be recomputed needlessly
2023-05-28 21:53:39 +0200 <monochrom> So if you define "foo = bar "abc"" then you ensure that the correct string, "abc", is given.
2023-05-28 21:54:19 +0200 <monochrom> If you don't give your user a function, they can't pass the wrong parameter.
2023-05-28 21:54:24 +0200 <jade[m]> Guest13: why would that happen?
2023-05-28 21:54:47 +0200 <Guest13> idk, maybe the user is being awkward...
2023-05-28 21:54:54 +0200 <monochrom> But I suppose you could convert "foo :: Int" to "foo :: Identity Int" to rationalize bringing up monads.
2023-05-28 21:55:16 +0200 <jade[m]> Guest13: I can confirm I am indeed an awkward user
2023-05-28 21:55:24 +0200 <Guest13> im used to state monads being used to store values
2023-05-28 21:55:41 +0200 <Guest13> jade[m]: kind of paradoxical...
2023-05-28 21:55:47 +0200 <Guest13> :-D
2023-05-28 21:56:28 +0200 <Guest13> though maybe not State, since this would create the possible mutability
2023-05-28 21:56:42 +0200 <Guest13> thats better for changing stored values, like the seed
2023-05-28 21:56:52 +0200 <monochrom> OK enjoy the monlogue.
2023-05-28 21:57:02 +0200 <Guest13> im answering your question
2023-05-28 21:57:20 +0200 <Guest13> i dont know why you suggested Identity
2023-05-28 21:57:28 +0200reach(~reach@2607:fea8:4c0:990:f891:b512:3659:bf1b)
2023-05-28 21:57:41 +0200 <geekosaur> because there seems to be no reason for a monad there
2023-05-28 21:57:44 +0200 <jade[m]> I still don't know why you want to use a monad this badly
2023-05-28 21:57:47 +0200 <geekosaur> so only Identity makes any sense
2023-05-28 21:58:06 +0200 <monochrom> This is like Saul Kripke when he was a teenager all over again.
2023-05-28 21:58:11 +0200 <Guest13> the user is to draw the encapsulated value, from the encapsulating monad
2023-05-28 21:58:44 +0200 <jade[m]> but if you never encapsulate the value there is no way to decapsulate (is that a word?) it
2023-05-28 21:58:44 +0200 <monochrom> He went into ##logic and was like "How do I use the idea of multiverses to give semantics to modal logics and intuitionistic logics?"
2023-05-28 21:58:55 +0200 <jade[m]> s/way/need
2023-05-28 21:59:11 +0200 <monochrom> The regulars of ##logic were like "why multiverses? We already have Heyting algebras for intuitionistic logics..."
2023-05-28 21:59:23 +0200 <Guest13> the idea was to store the value at the start of the program
2023-05-28 21:59:24 +0200 <monochrom> He was like "But I insist to use multiverses".
2023-05-28 21:59:32 +0200 <Guest13> kind of like a global magic number
2023-05-28 21:59:36 +0200 <monochrom> Except in his case he was right. >:D
2023-05-28 21:59:48 +0200 <Guest13> but since its a computed value, i want to ensure its not recomputed each time its called
2023-05-28 22:00:05 +0200 <jade[m]> it's not if you pass it around
2023-05-28 22:00:25 +0200 <Guest13> which opens up the possibility for erroneous use
2023-05-28 22:00:31 +0200 <monochrom> And so he got hired as a prof at 22 or something
2023-05-28 22:00:45 +0200 <monochrom> And he didn't need a PhD for that!
2023-05-28 22:00:45 +0200 <Guest13> "work in this monad, and you will not have the possibility to use the wrong random support"
2023-05-28 22:00:59 +0200 <Guest13> probably why he never got one
2023-05-28 22:01:52 +0200 <Guest13> im not sure of any other way to guard the user against supplying an incorrect argument
2023-05-28 22:01:55 +0200 <ncf> Guest13: are you looking for Reader?
2023-05-28 22:02:03 +0200 <ncf> (i only skimmed the discussion)
2023-05-28 22:02:03 +0200 <Guest13> possibly?
2023-05-28 22:02:12 +0200enoq(~enoq@2a05:1141:1f5:5600:b9c9:721a:599:bfe7)
2023-05-28 22:02:25 +0200 <Guest13> i never learned monad transformers properly, which is why i asked here
2023-05-28 22:02:39 +0200 <ncf> well, now you have something to learn about
2023-05-28 22:03:02 +0200 <Guest13> how would i use the Reader monad to encapsulate a constant value?
2023-05-28 22:03:18 +0200 <mauke> how wouldn't you?
2023-05-28 22:03:27 +0200 <Guest13> oh right thats basically all it does!
2023-05-28 22:03:56 +0200 <mauke> alternatively: 'ask' nicely :-)
2023-05-28 22:03:57 +0200 <ncf> (for some value of "constant")
2023-05-28 22:03:59 +0200 <Guest13> idk, should i put together a code example
2023-05-28 22:04:02 +0200stef204(~stef204@user/stef204)
2023-05-28 22:04:06 +0200 <ncf> that would help
2023-05-28 22:04:23 +0200 <Guest13> ok, im going to have to get snacks, ill return presently
2023-05-28 22:11:33 +0200 <Guest13> hmm, im encountering a second issue...
2023-05-28 22:11:46 +0200 <Guest13> the support length is supposed to be able to vary
2023-05-28 22:12:11 +0200 <Guest13> and in this case it would require recomputation (if it was extended, providing more random numbers)
2023-05-28 22:12:31 +0200 <Guest13> i cant use a bang pattern on an infinite sequence that is to be lazily evaluated, right?
2023-05-28 22:12:35 +0200 <monochrom> Hence randomRs as a lazy infinite list.
2023-05-28 22:13:00 +0200 <monochrom> ! on a lazy list just forces the 1st list node.
2023-05-28 22:13:03 +0200 <Guest13> i just want to make sure it only calculates more values when it needs to, and does not do recomputation in other cases
2023-05-28 22:13:08 +0200reach(~reach@2607:fea8:4c0:990:f891:b512:3659:bf1b) (Ping timeout: 240 seconds)
2023-05-28 22:13:19 +0200 <monochrom> It doesn't even force the number in that node. You need another ! for that.
2023-05-28 22:13:36 +0200 <jade[m]> why do you think it will recompute anything?
2023-05-28 22:13:44 +0200 <Guest13> monochrom: wait, does that imply its going to do basically what i need right out the box, that would be amazing!
2023-05-28 22:14:03 +0200 <Guest13> jade[m]: well it seems to in my current implementation
2023-05-28 22:15:19 +0200 <Guest13> brb
2023-05-28 22:22:57 +0200mei(~mei@user/mei) (Ping timeout: 248 seconds)
2023-05-28 22:23:29 +0200_ht(~Thunderbi@28-52-174-82.ftth.glasoperator.nl) (Quit: _ht)
2023-05-28 22:26:40 +0200wootehfoot(~wootehfoo@user/wootehfoot) (Quit: Leaving)
2023-05-28 22:27:39 +0200acidjnk(~acidjnk@p200300d6e7072f9441e69932c7e8d464.dip0.t-ipconnect.de)
2023-05-28 22:29:33 +0200gnalzo(~gnalzo@2a01:e0a:498:fd50:fcc6:bb5d:489a:ce8c) (Quit: WeeChat 3.8)
2023-05-28 22:30:23 +0200waleee(~waleee@2001:9b0:21c:4000:5bf9:6515:c030:57b7)
2023-05-28 22:31:06 +0200ec(~ec@gateway/tor-sasl/ec) (Remote host closed the connection)
2023-05-28 22:31:38 +0200ec(~ec@gateway/tor-sasl/ec)
2023-05-28 22:35:15 +0200waleee(~waleee@2001:9b0:21c:4000:5bf9:6515:c030:57b7) (Ping timeout: 256 seconds)
2023-05-28 22:52:41 +0200bgs(~bgs@212-85-160-171.dynamic.telemach.net) (Remote host closed the connection)
2023-05-28 22:58:18 +0200 <Guest13> sorry got held up at the shops...
2023-05-28 23:07:11 +0200mc47(~mc47@xmonad/TheMC47)
2023-05-28 23:08:47 +0200michalz(~michalz@185.246.204.75) (Remote host closed the connection)
2023-05-28 23:09:49 +0200mei(~mei@user/mei)
2023-05-28 23:11:21 +0200pukeGuest7295
2023-05-28 23:11:21 +0200pyooque(~puke@user/puke)
2023-05-28 23:11:21 +0200Guest7295(~puke@user/puke) (Killed (molybdenum.libera.chat (Nickname regained by services)))
2023-05-28 23:11:21 +0200pyooquepuke
2023-05-28 23:13:56 +0200stef204(~stef204@user/stef204) (Quit: WeeChat 3.8)
2023-05-28 23:20:26 +0200zeenk(~zeenk@2a02:2f04:a105:f00::7fe)
2023-05-28 23:22:11 +0200d34df00d(~d34df00d@2600:1702:4f1b:7c10::f)
2023-05-28 23:23:00 +0200reach(~reach@2607:fea8:4c0:990:f891:b512:3659:bf1b)
2023-05-28 23:25:38 +0200mc47(~mc47@xmonad/TheMC47) (Remote host closed the connection)
2023-05-28 23:29:12 +0200phma(~phma@host-67-44-208-181.hnremote.net) (Read error: Connection reset by peer)
2023-05-28 23:29:41 +0200phma(~phma@2001:5b0:2172:dd28:7911:911:8af7:7b23)
2023-05-28 23:34:19 +0200alexherbo2(~alexherbo@2a02-842a-8180-4601-1912-96d1-9f83-aa24.rev.sfr.net) (Remote host closed the connection)
2023-05-28 23:34:46 +0200alexherbo2(~alexherbo@2a02-842a-8180-4601-655d-eb2e-b97d-d4ca.rev.sfr.net)
2023-05-28 23:37:42 +0200 <d34df00d> Hi!
2023-05-28 23:38:21 +0200 <jade[m]> hey 👋
2023-05-28 23:38:37 +0200 <d34df00d> I vaguely remember a repo with resolvers for Stack for recent GHC versions that the upstream stackage (even nightly) doesn't provide yet, but I can't find it straight away. What's that repo, if it's still updated?
2023-05-28 23:38:54 +0200 <d34df00d> Or perhaps there's a better way of trying out ghc 9.6 with some of my stack-based projects?
2023-05-28 23:42:03 +0200cheater(~Username@user/cheater)
2023-05-28 23:46:35 +0200reach(~reach@2607:fea8:4c0:990:f891:b512:3659:bf1b) (Remote host closed the connection)
2023-05-28 23:46:57 +0200reach(~reach@2607:fea8:4c0:990:f891:b512:3659:bf1b)
2023-05-28 23:51:57 +0200Guest21(~Guest21@072-182-045-094.res.spectrum.com)
2023-05-28 23:52:32 +0200vandita(~vandit@84-236-10-38.pool.digikabel.hu) (Ping timeout: 248 seconds)
2023-05-28 23:54:31 +0200vandita(~vandit@188-143-101-81.pool.digikabel.hu)
2023-05-28 23:56:41 +0200takuan(~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection)