Logs: liberachat/#haskell
| 2021-08-03 19:07:53 | <monochrom> | Scheme's strength is "(+ 1 3 4 5 6)", "(+)", and "(apply + mylist)". |
| 2021-08-03 19:07:56 | <drakonis> | davean: basically, you declare the channel pointing to the repository, be it local or online and it'll let you pull from it |
| 2021-08-03 19:08:01 | <drakonis> | you realize you can chain them together, right? |
| 2021-08-03 19:08:12 | <drakonis> | they don't need to be separate operations |
| 2021-08-03 19:08:24 | <drakonis> | again, that's a weird thing to get hung up on |
| 2021-08-03 19:08:28 | <monochrom> | But varargness is exactly why Scheme makes currying difficult. |
| 2021-08-03 19:08:43 | <drakonis> | i don't see how that is a issue with the lisp family? |
| 2021-08-03 19:09:08 | <drakonis> | http://people.cs.aau.dk/~normark/prog3-03/html/notes/higher-order-fu-note-curry-scheme.html |
| 2021-08-03 19:09:09 | → | eggplantade joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) |
| 2021-08-03 19:09:57 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 2021-08-03 19:10:09 | <DigitalKiwi> | monochrom: drakonis isn't here to defend scheme against haskell lol guix vs nix wrt to managing haskell ;p |
| 2021-08-03 19:10:31 | <drakonis> | i'm here for explaining that guix is better at wrangling haskell than nix |
| 2021-08-03 19:10:33 | <monochrom> | OK, s/Scheme/guix/ |
| 2021-08-03 19:11:04 | <drakonis> | guix is guile scheme but still not here to wrestle you over the merits of scheme vs haskell |
| 2021-08-03 19:11:13 | × | Testtesttesz quits (~Testtestt@p5b05e91c.dip0.t-ipconnect.de) (Remote host closed the connection) |
| 2021-08-03 19:11:37 | <davean> | drakonis: Ok, so far this channel story seems identicalto nixos - but the problem I've encountered is inter-package references |
| 2021-08-03 19:11:46 | <drakonis> | hmm |
| 2021-08-03 19:11:50 | <drakonis> | do explain? |
| 2021-08-03 19:12:26 | <drakonis> | inter-package references? |
| 2021-08-03 19:12:41 | <drakonis> | you mean like importing dependencies? |
| 2021-08-03 19:12:47 | → | lavaman joins (~lavaman@98.38.249.169) |
| 2021-08-03 19:12:55 | <DigitalKiwi> | sounded like some jailbreak usage in haskell4nix pulled in a version it shouldn't have |
| 2021-08-03 19:12:57 | <davean> | if I have channel A, with package A.a which depends on b, it gets b from A.b but if I have channel B with package B.b, which provides that b that I need dealing with A.a referencing the wrong b ends up ... complicated. |
| 2021-08-03 19:13:02 | → | mattf_ joins (~matt@2600:1700:38c5:2100::37) |
| 2021-08-03 19:13:03 | <drakonis> | oh |
| 2021-08-03 19:13:17 | <drakonis> | that's because each channel normally has a specific module namespace |
| 2021-08-03 19:13:22 | <davean> | So I end up not able to use A.a and have to duplicate A.a and quickly I have to run my own entire system |
| 2021-08-03 19:13:32 | <davean> | so I end up not using channels and instead a clone of the origional channel |
| 2021-08-03 19:13:33 | <drakonis> | define-module (gnu packages haskell-apps) |
| 2021-08-03 19:13:36 | <davean> | because thats the only sane option |
| 2021-08-03 19:14:00 | <drakonis> | basically, you can import (gnu packages haskell-apps) and gain access to any packages there |
| 2021-08-03 19:14:10 | <DigitalKiwi> | does guix have ghcjs heh https://github.com/NixOS/nixpkgs/issues/130584 |
| 2021-08-03 19:14:52 | <drakonis> | it seems to have some things with dependencies here |
| 2021-08-03 19:15:15 | <drakonis> | davean: that's not a problem really |
| 2021-08-03 19:15:38 | <drakonis> | guile has a module system, so you have to explicitly bring them into scope |
| 2021-08-03 19:15:55 | × | mousey quits (~skymouse@gateway/tor-sasl/mousey) (Ping timeout: 244 seconds) |
| 2021-08-03 19:15:55 | → | forell joins (~forell@user/forell) |
| 2021-08-03 19:15:57 | → | futty joins (~futty@c83-252-75-55.bredband.tele2.se) |
| 2021-08-03 19:16:02 | <davean> | drakonis: right thats where the problem COMES from |
| 2021-08-03 19:16:10 | <drakonis> | so A.a cannot reference the wrong package |
| 2021-08-03 19:16:12 | <davean> | my overlays doen't end up compatible with the base systems stuff |
| 2021-08-03 19:16:18 | <davean> | because I need newer stuff down in the stack |
| 2021-08-03 19:16:22 | <drakonis> | okay |
| 2021-08-03 19:16:24 | <davean> | drakonis: Right! Thats the problem! |
| 2021-08-03 19:16:24 | <drakonis> | that's easy |
| 2021-08-03 19:16:41 | <drakonis> | here's a fun bit you can do |
| 2021-08-03 19:16:58 | × | lavaman quits (~lavaman@98.38.249.169) (Ping timeout: 240 seconds) |
| 2021-08-03 19:16:59 | × | Null_A quits (~null_a@2601:645:8700:2290:7da4:a1bb:6c20:daba) (Remote host closed the connection) |
| 2021-08-03 19:17:12 | <drakonis> | you can redirect a package definition to point to a specific definition |
| 2021-08-03 19:17:16 | <drakonis> | and have everything else inherit off it |
| 2021-08-03 19:17:34 | → | mousey joins (~skymouse@gateway/tor-sasl/mousey) |
| 2021-08-03 19:17:34 | → | Null_A joins (~null_a@2601:645:8700:2290:7da4:a1bb:6c20:daba) |
| 2021-08-03 19:17:38 | <davean> | and the inheriting works automaticly? I don't end up having to patch every package in the packet set? |
| 2021-08-03 19:17:51 | <drakonis> | yes? |
| 2021-08-03 19:18:00 | <davean> | That would be nice |
| 2021-08-03 19:18:04 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 272 seconds) |
| 2021-08-03 19:18:09 | <drakonis> | (define-public ghc ghc-8) |
| 2021-08-03 19:18:12 | × | mattf_ quits (~matt@2600:1700:38c5:2100::37) (Quit: Leaving) |
| 2021-08-03 19:18:17 | <drakonis> | this makes ghc point towards ghc-8 |
| 2021-08-03 19:18:39 | × | Null_A quits (~null_a@2601:645:8700:2290:7da4:a1bb:6c20:daba) (Remote host closed the connection) |
| 2021-08-03 19:18:50 | <drakonis> | then there's the ability to directly inherit all of the definition and modify where necessary using (inherit <package name>) |
| 2021-08-03 19:18:53 | → | Null_A joins (~null_a@2601:645:8700:2290:7da4:a1bb:6c20:daba) |
| 2021-08-03 19:21:00 | <drakonis> | https://github.com/jsoo1/guix-channel someone's haskell heavy channel i found just now |
| 2021-08-03 19:21:14 | → | waleee joins (~waleee@2001:9b0:216:8200:d457:9189:7843:1dbd) |
| 2021-08-03 19:21:33 | → | falafel joins (~falafel@pool-96-255-70-50.washdc.fios.verizon.net) |
| 2021-08-03 19:21:49 | <davean> | drakonis: So this looks like it needs to specificly have exactly one version of a package? How does multiple versions happen? |
| 2021-08-03 19:24:28 | <drakonis> | by making the build system use a different ghc version i suppose? |
| 2021-08-03 19:24:45 | <drakonis> | it otherwise targets whatever's the current highest ghc version |
| 2021-08-03 19:24:56 | <drakonis> | whatever ghc points to |
| 2021-08-03 19:24:58 | <davean> | I mean also cabal packages |
| 2021-08-03 19:25:07 | <drakonis> | ah |
| 2021-08-03 19:25:14 | <davean> | of course need different GHCs, and I need different dependencies |
| 2021-08-03 19:26:18 | <drakonis> | the docs state that you can do this |
| 2021-08-03 19:26:21 | <drakonis> | "Which Haskell compiler is used can be specified with the ‘#:haskell’ parameter which defaults to ‘ghc’." |
| 2021-08-03 19:27:01 | <davean> | sure, thats the GHC, but the second half |
| 2021-08-03 19:27:06 | <drakonis> | it builds using cabal |
| 2021-08-03 19:27:08 | <davean> | how does it make those decisions and how are they handled? |
| 2021-08-03 19:27:10 | <drakonis> | right |
| 2021-08-03 19:27:13 | <davean> | Hum, it does? |
| 2021-08-03 19:27:15 | <drakonis> | its cabal based |
| 2021-08-03 19:27:19 | → | forell_ joins (~forell@host-178-216-90-220.sta.tvknaszapraca.pl) |
| 2021-08-03 19:27:20 | <drakonis> | also in the docs |
| 2021-08-03 19:27:23 | <davean> | it looks like it specifies the Haskell pakcages its self |
| 2021-08-03 19:27:23 | × | forell quits (~forell@user/forell) (Ping timeout: 258 seconds) |
| 2021-08-03 19:27:32 | <davean> | and only one version each |
| 2021-08-03 19:27:36 | <drakonis> | let me get you the docs |
| 2021-08-03 19:28:18 | <drakonis> | a quick caveat |
| 2021-08-03 19:28:26 | <drakonis> | people don't typically use guix for its haskell wrangling features |
| 2021-08-03 19:28:33 | × | forell_ quits (~forell@host-178-216-90-220.sta.tvknaszapraca.pl) (Changing host) |
| 2021-08-03 19:28:33 | → | forell_ joins (~forell@user/forell) |
| 2021-08-03 19:28:45 | <drakonis> | so its not like it will cover every use case |
| 2021-08-03 19:29:16 | <drakonis> | http://guix.gnu.org/en/manual/devel/en/guix.html#index-haskell_002dbuild_002dsystem |
| 2021-08-03 19:29:20 | <davean> | sure I'm just talking about the basics of getting a consistent package set |
| 2021-08-03 19:29:27 | <drakonis> | This variable is exported by (guix build-system haskell). It implements the Cabal build procedure used by Haskell packages |
| 2021-08-03 19:29:34 | forell_ | is now known as forell |
| 2021-08-03 19:29:42 | × | thyriaen quits (~thyriaen@dynamic-078-055-141-033.78.55.pool.telefonica.de) (Remote host closed the connection) |
| 2021-08-03 19:29:51 | <drakonis> | let me point you to a haskell package definition real quick |
| 2021-08-03 19:29:56 | <davean> | Thats HOW it builds them, not how it chooses WHAT to build |
| 2021-08-03 19:30:00 | <drakonis> | okay |
| 2021-08-03 19:30:15 | <drakonis> | https://git.savannah.gnu.org/cgit/guix.git/tree/gnu/packages/haskell-xyz.scm#n751 |
All times are in UTC.