Home freenode/#haskell: Logs Calendar

Logs: freenode/#haskell

←Prev  Next→ 502,152 events total
2021-03-27 03:33:03 × solvr quits (57e3c46d@87.227.196.109) (Quit: Connection closed)
2021-03-27 03:33:05 <curiousgay> https://pvp.haskell.org/ it's similar to semver, but I don't understand the need for number A in A.B.C
2021-03-27 03:33:32 <int-e> curiousgay: optics
2021-03-27 03:33:48 <int-e> you push the major version number all the time
2021-03-27 03:34:15 <int-e> but sometimes you reach a milestone in development... and want to mark that visibly
2021-03-27 03:34:29 <curiousgay> like EPOCH?
2021-03-27 03:34:50 <int-e> epoch, sure, why not
2021-03-27 03:34:58 royal_screwup21 joins (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9)
2021-03-27 03:35:46 × electricityZZZZ quits (~electrici@135-180-3-82.static.sonic.net) (Quit: Leaving)
2021-03-27 03:35:51 <int-e> at some point, the version number loses all its meaning
2021-03-27 03:36:01 <int-e> Firefox is at 78 now, or is that 87 ;)
2021-03-27 03:36:18 Narinas joins (~Narinas@187-178-93-112.dynamic.axtel.net)
2021-03-27 03:37:28 <curiousgay> now as I see it: GHC provides many libraries which break compatibility, but because those libraries are part of it they can't be built independently with specific version, which means every project must adjust to every GHC release
2021-03-27 03:39:04 <int-e> yes, so after every release there's a tidal wave moving through the ecosystem as packages are getting updated in dependency order...
2021-03-27 03:39:06 × royal_screwup21 quits (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Ping timeout: 240 seconds)
2021-03-27 03:40:23 <curiousgay> that's insane
2021-03-27 03:40:33 <curiousgay> now I understand why GHC doesn't have competitors
2021-03-27 03:41:58 × theDon quits (~td@muedsl-82-207-238-105.citykom.de) (Ping timeout: 240 seconds)
2021-03-27 03:42:59 <int-e> <joke>Well it is a Microsoft product... it took a standard (Haskell98, Haskell2010), embraced it, and extended it until no competitor could catch up anymore.</joke>
2021-03-27 03:43:03 <curiousgay> and I understand the need of stack, guh
2021-03-27 03:43:13 raistlin joins (~jmdurr@ool-182e0115.dyn.optonline.net)
2021-03-27 03:43:26 × vpidurr quits (~jmdurr@ool-182e0115.dyn.optonline.net) (Ping timeout: 240 seconds)
2021-03-27 03:45:03 <curiousgay> int-e: extended standard is not the problem I see here, the problem I see is the standard, GHC, breaks at every release, it's unstable, catching up to unstable standard is much more work than catching up to constantly extending standard
2021-03-27 03:45:59 cole-h joins (~cole-h@c-73-48-197-220.hsd1.ca.comcast.net)
2021-03-27 03:47:40 × psygate quits (~psygate@unaffiliated/psygate) (Quit: Leaving)
2021-03-27 03:48:25 <curiousgay> if those libraries were not part of GHC, I guess cabal could manage that by building different versions of libraries
2021-03-27 03:49:47 × deviantfero quits (~deviantfe@190.150.27.58) (Ping timeout: 265 seconds)
2021-03-27 03:50:27 nbloomf_ joins (~nbloomf@2600:1700:ad14:3020:c907:a7d6:d23a:e6d6)
2021-03-27 03:50:29 <curiousgay> because of this hell I'm unable to build both reflex and reactive-banana, I need FRP GUI library
2021-03-27 03:50:34 <dmj`> curiousgay: GHC could easily have competitors on the backend, probably not the front end w/o going to dependent types.
2021-03-27 03:51:27 <curiousgay> do you know any kind of FRP GUI that builds with GHC 8.10.4?
2021-03-27 03:51:37 <int-e> curiousgay: there's a lot of moving parts between ghc, the rts, and the base libraries. template-haskell is another frequent source of friction, again explained because it's so close to the compiler
2021-03-27 03:53:01 × nbloomf quits (~nbloomf@2600:1700:ad14:3020:8f7:80aa:e3bc:f79d) (Ping timeout: 258 seconds)
2021-03-27 03:53:12 <curiousgay> int-e: internal moving parts that should not be dependencies of any packages are fine, but if they are externals that's a big problem
2021-03-27 03:53:16 <int-e> And somehow, ghc keeps bringing enough improvements to the table that people keep updating to the latest or second-latest version.
2021-03-27 03:55:02 <dmj`> curiousgay: GHC is a very old project, it predates LLVM, and operated under a different set of assumptions than we have today.
2021-03-27 03:55:22 <dmj`> curiousgay: did you try netwire?
2021-03-27 03:55:39 <int-e> curiousgay: you simply can't take base-4.12 and compile it with ghc-9.0.1 because its implementation has changed a lot even if the API hasn't. That's one of the reason why the two are bundled.
2021-03-27 03:55:56 <ephemient> base also includes API improvements that can't have been done without breakages
2021-03-27 03:56:14 <ephemient> I mean, I suppose it's arguable whether those should have been carried out, but I think the community mostly agrees
2021-03-27 03:56:26 bitdex joins (~bitdex@gateway/tor-sasl/bitdex)
2021-03-27 03:56:38 FinnElija joins (~finn_elij@gateway/tor-sasl/finnelija/x-67402716)
2021-03-27 03:56:38 finn_elija is now known as Guest59300
2021-03-27 03:56:38 FinnElija is now known as finn_elija
2021-03-27 03:56:40 <int-e> curiousgay: there's agreement that base is too large and that some parts should be split off so that they can be updated independently. but progress on this front is small to non-existant. It's hard to disentangle the parts, and it's a thankless job to try.
2021-03-27 03:57:13 <curiousgay> dmj`: does netwire have a sibling library for GUI that will build?
2021-03-27 03:58:26 <dmj`> curiousgay: probably, but take a look at your life, do you really need a bleeding edge GHC right now, iPhone 10 is almost as good as iPhone 11
2021-03-27 03:59:02 <dmj`> curiousgay: you can also do the dirty work of the library maintainer and upgrade the libraries you want to use to be compatible with 8.10.4
2021-03-27 03:59:18 <dmj`> you might end up upgrading a lot of libraries though .. esp. for dep. heavy libraries
2021-03-27 03:59:23 <curiousgay> int-e: ephemient: those breaking improvements make many projects rot quickly when maintainers loose their time or interest to keep up, that's not fair
2021-03-27 03:59:43 <sclv> fair?
2021-03-27 03:59:44 <ephemient> if it's a matter of just bumping bounds and they're in stackage, somebody will probably get around to it
2021-03-27 04:00:21 × Guest59300 quits (~finn_elij@gateway/tor-sasl/finnelija/x-67402716) (Ping timeout: 240 seconds)
2021-03-27 04:00:22 <curiousgay> I stopped using stack because there are less buildable packages than in cabal
2021-03-27 04:00:49 <sclv> base has a 3 release policy that says it makes its changes in a very incremental way so that code can always be written that is backwards compatible with the last three releases
2021-03-27 04:02:02 <ephemient> there are fewer packages total, but they all build, whereas that is not necessarily the case with cabal
2021-03-27 04:02:15 <ephemient> stack has its upsides and downsides
2021-03-27 04:05:54 molehillish joins (~molehilli@2600:8800:8d06:1800:f8ba:265:7129:d312)
2021-03-27 04:06:06 × machinedgod quits (~machinedg@135-23-192-217.cpe.pppoe.ca) (Ping timeout: 252 seconds)
2021-03-27 04:07:42 <DigitalKiwi> kiwi@mvp-nixos ~ []$ nix-shell -p "haskellPackages.ghcWithPackages (pkgs: with pkgs; [GPipe reflex reactive-banana])" -I nixpkgs-overlays=/home/kiwi/.config/nixpkgs/overlays --run "ghc-pkg list"|grep -E 'GPipe|reflex|reactive-banana'
2021-03-27 04:07:42 <DigitalKiwi> GPipe-2.2.5
2021-03-27 04:07:42 <DigitalKiwi> reactive-banana-1.2.1.0
2021-03-27 04:07:43 <DigitalKiwi> reflex-0.8.0.0
2021-03-27 04:07:46 <DigitalKiwi> tada
2021-03-27 04:08:21 <curiousgay> dmj`: what I need becomes confusing because if different packages are exclusively buildable with different versions of GHC that means I need to have many versions of GHC at once and be extremely careful while dealing with all of that
2021-03-27 04:08:42 <dmj`> curiousgay: just use an old ghc, why do you need a bleeding edge one. You'll end up just writing a bunch of C anyways if you're building a game, haskell heap + GC is death for frame rate
2021-03-27 04:09:13 <DigitalKiwi> [nix-shell:~]$ ghci
2021-03-27 04:09:14 <DigitalKiwi> GHCi, version 8.10.4
2021-03-27 04:09:25 <dmj`> curiousgay: I think you're over thinking it
2021-03-27 04:09:35 <DigitalKiwi> do i win a prize
2021-03-27 04:09:39 <curiousgay> dmj`: performance is not important for minimal 2D game without animations
2021-03-27 04:10:11 × stree quits (~stree@68.36.8.116) (Ping timeout: 240 seconds)
2021-03-27 04:10:16 <dmj`> curiousgay: use netwire + SDL2
2021-03-27 04:10:21 <DigitalKiwi> for 1 bitcoin i will reveal the contents of ~/.config/nixpkgs/overlays
2021-03-27 04:10:30 <dmj`> @package SDL2
2021-03-27 04:10:30 <lambdabot> https://hackage.haskell.org/package/SDL2
2021-03-27 04:10:35 <dmj`> @package netwire
2021-03-27 04:10:35 <lambdabot> https://hackage.haskell.org/package/netwire
2021-03-27 04:10:37 × molehillish quits (~molehilli@2600:8800:8d06:1800:f8ba:265:7129:d312) (Ping timeout: 276 seconds)
2021-03-27 04:11:48 <dmj`> curiousgay: I just compiled an asteroids game that uses these 2 and it worked ...
2021-03-27 04:11:56 <dmj`> it was 2D
2021-03-27 04:12:36 <curiousgay> dmj`: eh, isn't a separate library required for making SDL reactive that will depend on both netwire and SDL?
2021-03-27 04:13:00 <DigitalKiwi> better hurry though market's bearish the price will be 2 bitcoin soon
2021-03-27 04:14:04 <dmj`> curiousgay: you don't need FRP, ever. Most games you play don't use it. But to answer your question, no, a separate library isn't required.
2021-03-27 04:15:29 <dmj`> curiousgay: netwire doesn't use unsafePerformIO either
2021-03-27 04:15:30 <curiousgay> my goal is learning
2021-03-27 04:15:49 <curiousgay> so I need to learn FRP
2021-03-27 04:16:45 <desophos> i have a function "chunk" that splits a list into multiple equal-length lists that uses splitAt. i'm refactoring my program from String to ByteString, which has its own splitAt implementation. what's the best way to reuse my chunk function for ByteString? take the splitting fn as an argument? write a "Chunkable" typeclass with instances for list and ByteString? i'm open to any suggestions, thanks!
2021-03-27 04:16:52 <desophos> the function in question: https://paste.tomsmeding.com/rK72njri
2021-03-27 04:21:00 <dmj`> curiousgay: this project uses netwire, opengl, sdl2, linear and compiled with 8.10.4 for me, https://github.com/ehofreiter/relativistic-asteroids/blob/master/package.yaml
2021-03-27 04:22:29 × howdoi quits (uid224@gateway/web/irccloud.com/x-ppzodhfedmzajmuw) (Quit: Connection closed for inactivity)
2021-03-27 04:22:41 × ph88 quits (~ph88@ip5f5af71a.dynamic.kabel-deutschland.de) (Ping timeout: 240 seconds)
2021-03-27 04:23:32 stree joins (~stree@68.36.8.116)
2021-03-27 04:25:27 ezrakilty joins (~ezrakilty@97-113-58-224.tukw.qwest.net)
2021-03-27 04:25:47 manjaro joins (~manjaro@cpe-172-90-196-184.socal.res.rr.com)
2021-03-27 04:27:00 × manjaro quits (~manjaro@cpe-172-90-196-184.socal.res.rr.com) (Client Quit)
2021-03-27 04:28:48 <dmj`> desophos: probably can't reuse it, could try a typeclass yea
2021-03-27 04:29:11 manjaro joins (~manjaro@cpe-172-90-196-184.socal.res.rr.com)
2021-03-27 04:29:46 × ezrakilty quits (~ezrakilty@97-113-58-224.tukw.qwest.net) (Ping timeout: 240 seconds)
2021-03-27 04:29:47 <dmj`> @package split

All times are in UTC.