Logs on 2022-11-25 (liberachat/#haskell)
| 00:00:57 | → | Guest55 joins (~Guest55@p200300ef9716451373d1c50d5ff22e08.dip0.t-ipconnect.de) |
| 00:02:32 | <VOID404> | I feel like I though I get monads more than I actually do XD |
| 00:02:33 | <VOID404> | Guess I am off to read some theory |
| 00:02:33 | <VOID404> | Thanks for again for help |
| 00:03:39 | → | void joins (~user@89.151.44.90) |
| 00:03:50 | × | void quits (~user@89.151.44.90) (Client Quit) |
| 00:03:52 | <Guest55> | Hi. I have a GADT: data BinTree (i :: filled) a where Empty :: BinTree E a; Node :: a -> BinTree i a -> BinTree i a -> BinTree i a and I want to write the function left (Node _ l _) = l with left :: BinTree N a -> BinTree i a but I get "can't match i with i1" . |
| 00:04:20 | <Guest55> | I tried left :: BinTree N a -> (forall i. BinTree i a) but that doesn't work either. |
| 00:04:28 | × | merijn quits (~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 265 seconds) |
| 00:04:28 | → | VOID418 joins (~user@89.151.44.90) |
| 00:04:44 | <Guest55> | How can I do this? |
| 00:05:57 | × | VOID404 quits (~VOID404@89.151.44.90) (Quit: Client closed) |
| 00:06:12 | <int-e> | hmm |
| 00:06:38 | <oak-> | I'd say best way to learn Mondas is to get your hands dirty with them |
| 00:06:42 | <int-e> | is that Node :: a -> BinTree i a -> BinTree i a -> BinTree N a? |
| 00:07:00 | <int-e> | Because otherwise the only inhabited type here is BinTree E a |
| 00:07:22 | <monochrom> | The type "left :: BinTree N a -> BinTree i a" means that the user (that's me) can use it as "BinTree N a -> BinTree N a" and I can also use it as "BinTree N a -> BinTree E a" and it is entirely up to me and it doesn't matter what's in the input tree. Clearly you don't mean it. |
| 00:07:53 | <int-e> | Guest55: There's a CPS trick for such scenarios, left :: BinTree N a -> (forall i. BinTree i a -> r) -> r |
| 00:08:51 | <int-e> | But honestly, I don't think this 'i' buys you much, and you'll live more happily without it. |
| 00:09:36 | <int-e> | Of course that's without knowing the motivation so I may be wrong. |
| 00:10:08 | <Guest55> | int-e: yes, it should be Node :: ... -> BinTree N a |
| 00:10:14 | → | kenaryn joins (~aurele@cre71-h03-89-88-44-27.dsl.sta.abo.bbox.fr) |
| 00:10:24 | <int-e> | :t runST |
| 00:10:25 | <lambdabot> | (forall s. ST s a) -> a |
| 00:12:22 | <int-e> | And there's existential types (which I prefer to write in GADT syntax, data SomeBinTree a where SomeBinTree :: BinTree i a -> SomeBinTree a ) |
| 00:12:22 | <Guest55> | monochrom: That's why I tried BinTree N a -> (forall i. BinTree i a) so that I, the implementer, can choose i |
| 00:12:41 | <int-e> | Guest55: but that means the caller chooses i. |
| 00:13:26 | <Guest55> | Isn't it up to the implementer to choose i if I have a "nested" forall? |
| 00:13:32 | <Axman6> | BinTree N a -> (forall i. BinTree i a -> r) -> r should work, right? |
| 00:14:07 | <int-e> | Guest55: No. You have id :: forall a. a -> a; the caller of id picks the actual type a. |
| 00:14:31 | <Guest55> | Is that because the forall is not to the left of an arrow? |
| 00:15:46 | <int-e> | No. |
| 00:16:17 | <Guest55> | So I have 2 choices, use a wrapper type to make it an existential type or use CPS? |
| 00:16:49 | <int-e> | The CPS trick works because it makes your function the caller of the callback. |
| 00:17:12 | <int-e> | Those are the two ways I know of. |
| 00:17:59 | × | kenaryn quits (~aurele@cre71-h03-89-88-44-27.dsl.sta.abo.bbox.fr) (Quit: leaving) |
| 00:18:27 | <Guest55> | Type checker is happy with the CPS trick. Thank you. |
| 00:19:01 | → | Achylles joins (~Achylles_@2804:431:d724:a09c:67a2:eda9:70f0:1a66) |
| 00:19:56 | × | Patternm1ster quits (~georg@li1192-118.members.linode.com) (Quit: leaving) |
| 00:20:11 | → | Patternmaster joins (~georg@li1192-118.members.linode.com) |
| 00:20:11 | × | Patternmaster quits (~georg@li1192-118.members.linode.com) (Changing host) |
| 00:20:11 | → | Patternmaster joins (~georg@user/Patternmaster) |
| 00:23:23 | × | sammelweis quits (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Quit: No Ping reply in 180 seconds.) |
| 00:24:29 | → | sammelweis joins (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) |
| 00:26:42 | × | void_ quits (~void@89.151.44.90) (Ping timeout: 265 seconds) |
| 00:26:48 | × | VOID418 quits (~user@89.151.44.90) (Ping timeout: 260 seconds) |
| 00:31:35 | <monochrom> | The CPS trick is equivalent to the existential type wrapper. |
| 00:32:06 | <monochrom> | IOW you have only 1 choice bwahahahaha |
| 00:32:54 | <monochrom> | OK there are 2 choices. Use rank-2 CPS = existential. Don't bother with type-level programming at all. |
| 00:33:26 | <monochrom> | #ThinkOutsideTypeObsession |
| 00:37:59 | × | chomwitt quits (~chomwitt@ppp-94-67-236-76.home.otenet.gr) (Ping timeout: 264 seconds) |
| 00:43:48 | → | mvk joins (~mvk@2607:fea8:5ce3:8500::efb) |
| 00:44:23 | × | mvk quits (~mvk@2607:fea8:5ce3:8500::efb) (Client Quit) |
| 00:47:26 | <int-e> | monochrom: "equivalent" is doing some heavy lifting there |
| 00:48:29 | <Axman6> | is there an isomorphism between the two? |
| 00:48:38 | <monochrom> | Yes. |
| 00:48:39 | <int-e> | (both from a programmer perspective and from an implementation perspective) |
| 00:48:45 | <int-e> | yes, there is |
| 00:48:57 | <int-e> | it's more-or-less Church encodings |
| 00:49:34 | <monochrom> | (exists t. P t) is isomorphic to (forall r. (forall t. P t -> r) -> r) |
| 00:49:42 | <Guest55> | monochrom: yes. it seems i can't do much with this solution. I can't use the simplest function with left because "i would escape its scope". e.g. left (Node "foo" Empty Empty) id doesn't work. |
| 00:50:07 | <monochrom> | I don't feel it heavy, but that's moot; the important point is that it is true and every programmer should learn it sooner or later. |
| 00:50:31 | <monochrom> | FWIW GC is much much heavylifting too but we embrace it anyway. |
| 00:50:53 | <int-e> | I mean, even if two things are isomorphic, they often handle differently from a programmer's perspective. |
| 00:51:14 | <monochrom> | (Oh yes, GC is heavy for programmers too, namely those who are control freaks, i.e., most. By self-selection, most prorgrammers are control freaks and can't let go.) |
| 00:52:38 | <monochrom> | This is why education exists and is important. |
| 00:52:54 | → | king_gs joins (~Thunderbi@187.201.139.206) |
| 00:54:31 | <monochrom> | The more two equivalent things stand for two different perspectives, the more you should learn it. |
| 00:55:35 | → | razetime joins (~quassel@117.193.4.48) |
| 00:56:39 | <monochrom> | It is why engineers learn Fourier analysis and Laplace transform. Precisely because heavylifting equivalence. |
| 00:57:04 | <monochrom> | I don't hear engineers say "it's a lot of heavylifting, even for the learners, so let's skip it". |
| 00:57:08 | × | sammelweis quits (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Ping timeout: 260 seconds) |
| 00:57:22 | <monochrom> | But perhaps that's why programmers are not ready to be called engineers. |
| 00:57:32 | → | sammelweis joins (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) |
| 00:58:34 | → | lisbeths joins (uid135845@id-135845.lymington.irccloud.com) |
| 01:00:33 | → | merijn joins (~merijn@86-86-29-250.fixed.kpn.net) |
| 01:03:20 | <monochrom> | If i can only be N or E, you can also try: BinTree N a -> Either (BinTree E a) (BinTree N a), to express that it really depends on the input. |
| 01:03:33 | × | sammelweis quits (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Ping timeout: 260 seconds) |
| 01:04:30 | <monochrom> | And this is thanks to the power of recognizing that you have an existential, but it's finite, so it's a finitary or. |
| 01:04:41 | → | sammelweis joins (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) |
| 01:05:17 | × | chexum quits (~quassel@gateway/tor-sasl/chexum) (Ping timeout: 255 seconds) |
| 01:08:25 | <maerwald[m]> | monochrom: education exists to control the masses |
| 01:08:35 | × | Kaiepi quits (~Kaiepi@108.175.84.104) (Ping timeout: 264 seconds) |
| 01:09:04 | → | causal joins (~user@50.35.83.177) |
| 01:09:24 | <monochrom> | See? Control freaks think that everything is about control. >:) |
| 01:10:39 | <maerwald[m]> | Even academic education is full of nonsensical doctrines |
| 01:10:46 | → | chexum joins (~quassel@gateway/tor-sasl/chexum) |
| 01:11:33 | <monochrom> | Sure. I brought up the good part of education. You can talk about the bad part. |
| 01:12:16 | <monochrom> | Or you could agree that I am not an educator, I am something better, I am an enlightener. :) |
| 01:13:27 | <maerwald[m]> | Yeah, you're the devil, which can be refreshing occasionally |
| 01:18:08 | × | xff0x quits (~xff0x@2405:6580:b080:900:ba2b:e368:237f:a79) (Ping timeout: 260 seconds) |
| 01:20:18 | → | srz joins (~srz@179.36.100.166) |
| 01:20:21 | × | razetime quits (~quassel@117.193.4.48) (Ping timeout: 265 seconds) |
| 01:20:29 | → | razetime joins (~quassel@117.193.5.135) |
| 01:21:24 | × | sawilagar_ quits (~sawilagar@user/sawilagar) (Ping timeout: 260 seconds) |
| 01:26:05 | × | Unicorn_Princess quits (~Unicorn_P@user/Unicorn-Princess/x-3540542) (Remote host closed the connection) |
| 01:27:34 | → | razetime_ joins (~quassel@117.254.34.88) |
| 01:27:47 | × | razetime quits (~quassel@117.193.5.135) (Ping timeout: 264 seconds) |
| 01:29:36 | → | bobbingbob joins (~bobbingbo@2604:3d09:207f:f650::b469) |
| 01:32:35 | × | Xeroine quits (~Xeroine@user/xeroine) (Ping timeout: 264 seconds) |
| 01:32:59 | × | king_gs quits (~Thunderbi@187.201.139.206) (Read error: Connection reset by peer) |
| 01:33:18 | → | king_gs joins (~Thunderbi@2806:103e:29:bfeb:c988:bbd5:2586:4924) |
| 01:34:23 | × | merijn quits (~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 264 seconds) |
| 01:37:36 | <bobbingbob> | hooray i got hickory working |
| 01:37:44 | × | razetime_ quits (~quassel@117.254.34.88) (Ping timeout: 268 seconds) |
| 01:37:51 | → | razetime joins (~quassel@117.254.34.18) |
| 01:37:54 | <bobbingbob> | my mistake was a dependency of a dependency not being installed |
| 01:38:11 | <bobbingbob> | i wish there could just be one package manager for everything |
| 01:38:49 | × | razetime quits (~quassel@117.254.34.18) (Client Quit) |
| 01:40:20 | <jackdk> | Do you have a moment to talk about Nix? |
| 01:40:23 | <yushyin> | it is called nix |
| 01:40:29 | <jackdk> | yushyin++ |
| 01:43:43 | <monochrom> | haha |
| 01:44:07 | × | srz quits (~srz@179.36.100.166) (Read error: Connection reset by peer) |
| 01:44:32 | <monochrom> | https://xkcd.com/927/ applies. |
| 01:44:33 | <bobbingbob> | ive been thinking about switching to nixos. how user-friendly is it? i run arch right now (yes i mentioned it). I'm fine doing research and fixing problems but it would be nice if it were easy to setup and run |
| 01:44:56 | <monochrom> | You can use nix without nixos. |
| 01:44:59 | <yushyin> | you don't need nixos to use nix |
| 01:45:08 | → | srz joins (~srz@179.36.100.166) |
| 01:45:08 | <monochrom> | Some people even run Windows. |
| 01:45:11 | → | Xeroine joins (~Xeroine@user/xeroine) |
| 01:45:22 | × | srz quits (~srz@179.36.100.166) (Remote host closed the connection) |
| 01:45:39 | <maerwald[m]> | monochrom: nixpkgs are part of NixOS |
| 01:45:39 | <maerwald[m]> | So no, you can't |
| 01:45:44 | → | srz joins (~srz@179.36.100.166) |
| 01:45:45 | <bobbingbob> | do you think i should use nix as a subsitute for pacman? or just for haskell development |
| 01:45:47 | <maerwald[m]> | Unless you write your own... uh, everything |
| 01:45:51 | <monochrom> | "You can use nix without unix" ---> simplify ---> "You can use nix without u" >:) |
| 01:46:16 | <maerwald[m]> | bobbingbob: don't use it at all is my suggestion |
| 01:46:32 | <jackdk> | I have used nixos for years, but I was lucky enough to have a week of no responsibilities at a new job to learn enough to get over the hump. I'd strongly recommend installing Nix on a distro you're comfortable with, learning learning enough to use `nix-shell` |
| 01:46:39 | <maerwald[m]> | Unless you have a lot of free time to waste |
| 01:46:59 | <jackdk> | Once you're comfortable, consider `home-manager` and later consider nixos if you want more declarative goodness |
| 01:47:55 | <jackdk> | You can plop the following `shell.nix` file into many single-package haskell projects and use it to get a temporary environment to hack on things: `{ nixpkgs ? import <nixpkgs> {} }: nixpkgs.haskellPackages.developPackage { root = ./.; }` |
| 01:48:02 | <maerwald[m]> | Declarative hell. Then your cache breaks and you realize it's not actually reproducible |
| 01:48:03 | × | srz quits (~srz@179.36.100.166) (Read error: Connection reset by peer) |
| 01:48:06 | → | srz_ joins (~srz@179.36.100.166) |
| 01:48:34 | <maerwald[m]> | Otherwise explain to me why I get compile errors on cache misses :) |
| 01:48:52 | × | srz_ quits (~srz@179.36.100.166) (Remote host closed the connection) |
| 01:49:19 | <jackdk> | Yeah, I've had that with old nixpkgs sometimes, when I stress-test things by building with no substituters |
| 01:50:48 | × | bobbingbob quits (~bobbingbo@2604:3d09:207f:f650::b469) (Ping timeout: 260 seconds) |
| 01:51:45 | × | sammelweis quits (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Quit: No Ping reply in 180 seconds.) |
| 01:52:46 | <maerwald[m]> | The other thing is... if you rely on overly expressive systems like nix, you become lazy and sloppy and stop caring about "contracts", because you have too much control |
| 01:53:07 | → | nate4 joins (~nate@98.45.169.16) |
| 01:53:25 | → | sammelweis joins (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) |
| 01:56:27 | → | xff0x joins (~xff0x@125x103x176x34.ap125.ftth.ucom.ne.jp) |
| 01:58:23 | × | nate4 quits (~nate@98.45.169.16) (Ping timeout: 264 seconds) |
| 01:58:23 | × | sammelweis quits (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Quit: No Ping reply in 180 seconds.) |
| 02:01:33 | → | sammelweis joins (~quassel@c-68-48-18-140.hsd1.mi.comcast.net) |
| 02:02:08 | × | machinedgod quits (~machinedg@d198-53-218-113.abhsia.telus.net) (Remote host closed the connection) |
| 02:06:22 | → | dsrt^ joins (~dsrt@76.145.185.103) |
| 02:10:28 | <jean-paul[m]> | What does "overly expressive" mean here? |
| 02:11:43 | <oak-> | I've been using NixOS for little over year now, I'd say it's one of the best things I've found out on Linux world, and I regret not taking it into use earlier |
| 02:13:09 | <oak-> | There is some learning curve yes, but I used to use Arch Linux before for over 10 years |
| 02:14:35 | × | chexum quits (~quassel@gateway/tor-sasl/chexum) (Ping timeout: 255 seconds) |
| 02:15:17 | → | chexum joins (~quassel@gateway/tor-sasl/chexum) |
| 02:24:47 | × | jao quits (~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net) (Ping timeout: 264 seconds) |
| 02:30:31 | × | EvanR quits (~EvanR@user/evanr) (Remote host closed the connection) |
| 02:30:39 | → | merijn joins (~merijn@86-86-29-250.fixed.kpn.net) |
| 02:30:50 | → | EvanR joins (~EvanR@user/evanr) |
| 02:32:45 | × | Achylles quits (~Achylles_@2804:431:d724:a09c:67a2:eda9:70f0:1a66) (Quit: Leaving) |
| 02:35:45 | × | merijn quits (~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 265 seconds) |
| 02:40:51 | × | wagle quits (~wagle@quassel.wagle.io) (Quit: http://quassel-irc.org - Chat comfortably. Anywhere.) |
| 02:41:20 | → | wagle joins (~wagle@quassel.wagle.io) |
| 02:41:47 | × | money quits (money@user/polo) () |
| 02:42:17 | → | money joins (money@user/polo) |
| 03:07:47 | <maerwald[m]> | Well, learning curve is just one thing. The other is that it's just very messy. |
| 03:10:30 | → | Guest9719 joins (~Guest97@104.129.85.110) |
| 03:11:09 | → | marc joins (~marc@5.83.191.93) |
| 03:11:33 | marc | is now known as Guest8573 |
| 03:14:24 | × | Guest2573 quits (~marc@5.83.191.76) (Ping timeout: 256 seconds) |
| 03:33:16 | → | merijn joins (~merijn@86-86-29-250.fixed.kpn.net) |
| 03:40:22 | × | ellensol quits (~ln@pc-ellar188.it.uu.se) (Ping timeout: 252 seconds) |
| 03:44:13 | × | mzan quits (~quassel@mail.asterisell.com) (Quit: https://quassel-irc.org - Chat comfortably. Anywhere.) |
| 03:45:22 | → | mzan joins (~quassel@mail.asterisell.com) |
| 03:48:38 | → | nate4 joins (~nate@98.45.169.16) |
| 03:58:36 | × | td_ quits (~td@83.135.9.50) (Ping timeout: 256 seconds) |
| 04:00:16 | → | td_ joins (~td@83.135.9.38) |
| 04:02:19 | → | ellensol joins (~ln@pc-ellar188.it.uu.se) |
| 04:06:11 | × | merijn quits (~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 264 seconds) |
| 04:07:06 | × | raehik quits (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 265 seconds) |
| 04:08:04 | × | lisbeths quits (uid135845@id-135845.lymington.irccloud.com) (Quit: Connection closed for inactivity) |
| 04:08:08 | <dminuoso> | maerwald[m]: Yes you can use nix without nixos just fine? |
| 04:08:21 | <dminuoso> | I think you have that statement flipped around. |
| 04:08:41 | → | raehik joins (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) |
| 04:35:53 | × | chexum quits (~quassel@gateway/tor-sasl/chexum) (Ping timeout: 255 seconds) |
| 04:37:06 | → | chexum joins (~quassel@gateway/tor-sasl/chexum) |
| 04:43:36 | <monochrom> | Can you use nix without any os? >:) |
| 04:45:18 | × | FinnElija quits (~finn_elij@user/finn-elija/x-0085643) (Remote host closed the connection) |
| 04:45:55 | → | FinnElija joins (~finn_elij@user/finn-elija/x-0085643) |
| 04:49:18 | × | nate4 quits (~nate@98.45.169.16) (Ping timeout: 260 seconds) |
| 04:56:19 | × | Vajb quits (~Vajb@2001:999:504:3ad6:52a4:a3b5:32d8:e74d) (Read error: Connection reset by peer) |
| 04:57:08 | → | Vajb joins (~Vajb@hag-jnsbng11-58c3a5-27.dhcp.inet.fi) |
| 05:02:10 | → | merijn joins (~merijn@86-86-29-250.fixed.kpn.net) |
| 05:05:13 | × | Guest9719 quits (~Guest97@104.129.85.110) (Quit: Client closed) |
| 05:09:34 | × | Vajb quits (~Vajb@hag-jnsbng11-58c3a5-27.dhcp.inet.fi) (Read error: Connection reset by peer) |
| 05:12:50 | × | wroathe quits (~wroathe@user/wroathe) (Ping timeout: 265 seconds) |
| 05:12:52 | → | Vajb joins (~Vajb@2001:999:504:3ad6:52a4:a3b5:32d8:e74d) |
| 05:17:27 | × | chexum quits (~quassel@gateway/tor-sasl/chexum) (Quit: No Ping reply in 180 seconds.) |
| 05:19:01 | → | chexum joins (~quassel@gateway/tor-sasl/chexum) |
| 05:21:20 | × | raehik quits (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 256 seconds) |
| 05:26:22 | → | joshua5040 joins (~joshua@2604:3d08:bd82:8800::a0c9) |
| 05:27:13 | → | Kaiepi joins (~Kaiepi@108.175.84.104) |
| 05:36:04 | × | Lord_of_Life quits (~Lord@user/lord-of-life/x-2819915) (Ping timeout: 256 seconds) |
| 05:36:28 | → | Lord_of_Life joins (~Lord@user/lord-of-life/x-2819915) |
| 05:36:33 | × | merijn quits (~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 260 seconds) |
| 05:54:24 | × | king_gs quits (~Thunderbi@2806:103e:29:bfeb:c988:bbd5:2586:4924) (Ping timeout: 265 seconds) |
| 05:56:51 | → | coot joins (~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba) |
| 06:02:18 | <chreekat> | I am compelled to proclaim that nixos feels like the sanest thing to happen to unix ever. It's only complex because it makes unix's complexity explicit, which then allows it to be managed |
| 06:02:56 | <chreekat> | i'm not trying to state universal truths here, just my impression |
| 06:03:51 | <chreekat> | like nix drives me crazy but it also has allowed me to do in-place OS upgrades without wiping the whole disk since 2017 |
| 06:04:52 | × | finsternis quits (~X@23.226.237.192) (Read error: Connection reset by peer) |
| 06:06:39 | → | lisbeths joins (uid135845@id-135845.lymington.irccloud.com) |
| 06:07:07 | Axman6 | has never wiped an macOS disk and still has the same user directory and for over a decade... |
| 06:07:29 | <Axman6> | It blow my mind that people (used to?) just blow everything away and reinstall windows |
| 06:08:08 | × | azimut quits (~azimut@gateway/tor-sasl/azimut) (Ping timeout: 255 seconds) |
| 06:11:45 | → | takuan joins (~takuan@178-116-218-225.access.telenet.be) |
| 06:14:04 | <jackdk> | I used to do that to my GNU/Linux installs, too |
| 06:15:05 | × | [itchyjunk] quits (~itchyjunk@user/itchyjunk/x-7353470) (Remote host closed the connection) |
| 06:18:35 | <chreekat> | yeah i don't feel like it's asking for much, but that's how I feel continually working with linux haha |
| 06:27:08 | <maerwald[m]> | dminuoso: yeah, but then you won't have any access to any packages |
| 06:27:34 | <maerwald[m]> | It's like saying, hey, you can use gentoo without the portage tree of ebuilds. |
| 06:27:38 | <maerwald[m]> | I mean, duh |
| 06:28:28 | <maerwald[m]> | https://github.com/NixOS/nixpkgs |
| 06:28:36 | <maerwald[m]> | They are clearly part of NixOS |
| 06:29:39 | <maerwald[m]> | What people mean is: you don't have to boot into a NixOS to use NixOS |
| 06:29:50 | <maerwald[m]> | That's as old as, well... chroots |
| 06:30:03 | × | joshua5040 quits (~joshua@2604:3d08:bd82:8800::a0c9) (Quit: WeeChat 3.7.1) |
| 06:31:13 | → | king_gs joins (~Thunderbi@187.201.139.206) |
| 06:32:32 | → | merijn joins (~merijn@86-86-29-250.fixed.kpn.net) |
| 06:32:33 | <dminuoso> | maerwald[m]: You're mixing things up. |
| 06:32:38 | <chreekat> | I'm sorry what? How is nixpkgs part of nixos? |
| 06:32:53 | × | califax quits (~califax@user/califx) (Ping timeout: 255 seconds) |
| 06:32:57 | <dminuoso> | maerwald[m]: nixos without nixpkgs is not really a thing, but nix without nixos is perfectly a thing. |
| 06:33:08 | <dminuoso> | nixos is really a separate thing |
| 06:33:16 | → | califax joins (~califax@user/califx) |
| 06:33:17 | <maerwald[m]> | chreekat: see above |
| 06:33:46 | <maerwald[m]> | dminuoso: yes, I said so above, you can use nix without nixpkgs |
| 06:34:19 | <dminuoso> | maerwald[m] | They are clearly part of NixOS |
| 06:34:22 | <maerwald[m]> | But I don't think that's what many people do |
| 06:34:34 | <dminuoso> | Well yes, the repository containing nix derivations and nixos modules (two separate things!) is kept in one thing for a bunch of reasons. |
| 06:34:40 | <dminuoso> | But that's really irrelevant from a user perspecftive |
| 06:34:41 | <chreekat> | maerwald: unfortunately what you wrote above doesn't explain to me how nixpkgs is part of nixos. I mean, unless you mean "NixOS, the umbrella GitHub organization" |
| 06:34:58 | <maerwald[m]> | They mean you can use nix (including nixpkgs) in any distro without booting into a real NixOS |
| 06:35:03 | <dminuoso> | You could delete all of nixos modules from the nixpkgs repository, and not cause breakage in nix itself. |
| 06:35:07 | <dminuoso> | Or in nixpkgs. |
| 06:35:24 | <dminuoso> | Plenty people use it that way |
| 06:35:35 | <maerwald[m]> | Really? |
| 06:35:37 | <dminuoso> | Yes. |
| 06:35:43 | <chreekat> | Yeah, did that at the old job |
| 06:36:12 | <dminuoso> | The two things are kept together in the git repository for convenience mostly |
| 06:36:41 | <maerwald[m]> | chreekat: I mean, distro packages are not developed in isolation. They are developed as part of a distro. 80% of what makes a distro are its packages. |
| 06:37:17 | <dminuoso> | maerwald[m]: consider that there's a lot of packages, such as ghc, which simply ships with a shell.nix and or default.nix to offer a reproducible way of building it, without imposing any requirement to run nixos. |
| 06:37:55 | <maerwald[m]> | dminuoso: and those recipes do not use any nixpkgs to set up the env, |
| 06:37:56 | <maerwald[m]> | ? |
| 06:37:58 | <dminuoso> | its done pretty much because there is an audience of users that have nix installed on their arch/gentoo/debian/ubuntu/macOS/whatever |
| 06:38:07 | <dminuoso> | maerwald[m]: they do, but thats not nixos. |
| 06:38:20 | <maerwald[m]> | This is where I disagree in semantics |
| 06:38:35 | <chreekat> | I see, I guess this is arguing semantics. If you imagine that Nix leads inexorably to a full operating system distribution, then you could argue that it was the full operating system all along |
| 06:38:42 | <dminuoso> | nixos is built around the idea of whats called `modules`, which are specially structured nix expressions designed to express the arbitrary file system and booting process (including the kernel) |
| 06:38:49 | <dminuoso> | nixpkgs is built around nix derivations |
| 06:38:54 | <maerwald[m]> | A distro is not it's glue code or boot setup scripts. It's the packages. |
| 06:39:07 | <dminuoso> | maerwald[m]: you really are conflating things here for nixos. |
| 06:39:12 | <maerwald[m]> | That's the fundamental thing that makes a distro |
| 06:39:17 | <dminuoso> | not entirely |
| 06:39:22 | <dminuoso> | it depends on your notion of package |
| 06:39:30 | <dminuoso> | nixos modules are the packages you think of |
| 06:39:40 | <dminuoso> | that describe how things are wired in with your system, like installing systemd units and the like |
| 06:39:53 | <dminuoso> | or creating system users |
| 06:40:03 | <dminuoso> | but the nixpkgs derivations dont do that |
| 06:40:21 | <maerwald[m]> | Yeah, that distinction isn't relevant to me |
| 06:40:39 | <dminuoso> | I mean I can see how you might see nixpkgs as a kind of linux distribution, sure. |
| 06:40:49 | <dminuoso> | but thats not nixos. |
| 06:40:52 | <dminuoso> | nixos is the nixos modules. |
| 06:41:59 | <dminuoso> | Its sort of the difference between `dpkg --install`, and what `configure && make && make install` |
| 06:43:41 | → | kenran joins (~user@user/kenran) |
| 06:43:59 | <chreekat> | "Nix: A Safe and Policy-Free System for Software Development" (E Dolstra, 2004). " In the abstract it talks about "Nix, a deployment system". In 2008 there's an article "Nix fixes dependency hell on all Linux distributions". So I think, historically speaking, Nix definitely came first. There is also a paper introducing NixOS later in 2008 |
| 06:44:16 | <maerwald[m]> | dminuoso: well, you can distinguish between certain package sets surely, like core, community and AUR in archlinux |
| 06:44:26 | <dminuoso> | maerwald[m]: Its not that either. |
| 06:44:28 | <maerwald[m]> | In the end, those are all considered under one distro |
| 06:44:30 | × | kenran quits (~user@user/kenran) (Remote host closed the connection) |
| 06:44:32 | <dminuoso> | maerwald[m]: nixos modules really si something else. |
| 06:44:42 | <dminuoso> | nixos is literally how nixos modules get turned into activation scripts. |
| 06:45:24 | <maerwald[m]> | You're talking about technical details. I'm saying a distro is the package set. |
| 06:45:29 | <dminuoso> | Huh? |
| 06:45:43 | <dminuoso> | Yes, but calling nixpkgs nixos is just nonsense. |
| 06:45:49 | <maerwald[m]> | nixpkgs readme btw starts with the word NixOS |
| 06:45:54 | → | nate4 joins (~nate@98.45.169.16) |
| 06:46:18 | <dminuoso> | The git repository itself provides for both, yes. |
| 06:46:25 | → | tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
| 06:46:40 | <dminuoso> | But they are completely separate things |
| 06:47:07 | <chreekat> | "Nixpkgs is a collection of 80,000 software packages that can be installed with Nix. It also implements NixOS..." |
| 06:47:09 | <dminuoso> | Like I said, the only reason they are kept in a common repository is just convenience. |
| 06:47:27 | <dminuoso> | I dont know what to tell you that NixOS *specifically* is nixos modules. |
| 06:47:44 | <chreekat> | I won't argue if you think that distros are synonymous with their package sets, but I'll just say I don't think people working on nix see it the same way |
| 06:47:50 | <dminuoso> | While `nixpkgs` in all common uses of it almost always means the pkgs/ expression inside of it. |
| 06:48:01 | <maerwald[m]> | So the distro then is called 'nixpkgs'? |
| 06:48:07 | <dminuoso> | maerwald[m]: the one you are thinking of, yes. |
| 06:48:15 | <maerwald[m]> | And it's a distro that you cannnot boot into? |
| 06:48:19 | <dminuoso> | yes. |
| 06:48:25 | <maerwald[m]> | Amazing |
| 06:48:31 | <maerwald[m]> | 😅 |
| 06:48:34 | <chreekat> | only if you insist on claiming that distros are synonymous with their package sets, which i don't :) |
| 06:49:06 | <maerwald[m]> | chreekat: well, it allows to weed out all these pseudo distros that add a new logo and re-use ubuntu pkgs |
| 06:49:19 | <maerwald[m]> | Packaging is the main work. |
| 06:50:21 | × | nate4 quits (~nate@98.45.169.16) (Ping timeout: 268 seconds) |
| 06:50:21 | <chreekat> | Isn't that an argument *against* making that claim? I mean it's a bit uncharitable to call distros "pseudo distros" |
| 06:50:25 | <dminuoso> | maerwald[m]: now, nixos is built ontop of nixpkgs, and adds recipes for how to synthesize the FHS, generate configuration, install these packages into something resembling the FHS, recipies for how to install and manage the boot loader, etc.. |
| 06:50:40 | <dminuoso> | and all those use the packages from nixpkgs |
| 06:50:52 | <maerwald[m]> | Yes, every distro has that layer |
| 06:50:54 | <chreekat> | anyway back to haskell, see ya |
| 06:51:02 | <dminuoso> | maerwald[m]: the layer is at a separate point, though. |
| 06:51:10 | <dminuoso> | because you can use nixpkgs from inside say macOS |
| 06:51:20 | <dminuoso> | and install a lot of things that dont requrie seetting up services |
| 06:51:27 | <dminuoso> | say you want vim, you can just say `nix-shell -p vim`, and get provided with it |
| 06:51:39 | <maerwald[m]> | dminuoso: you can achieve similar things with chroots |
| 06:51:43 | <dminuoso> | absolutely, yes. |
| 06:51:44 | <maerwald[m]> | Although different |
| 06:52:28 | <dminuoso> | Im in no way trying to sell this as "thats the only way to achieve it", but merely trying to give you an indication that `nixpkgs` is not quite a packages distribution you are used to, because the individual packages have much less build information than your typical .deb |
| 06:53:33 | <dminuoso> | because the derivations in nixpkgs have only enough to install them into the nix store, but nothing about system users, configuring them, setting up systemd units, and the like |
| 06:53:36 | <maerwald[m]> | So to me, I still conceptualize a distro with it's active packaging effort. Configuration, installer and glue code alone don't make a distro. And I'm assuming that nixpkgs isn't entirely disconnected from NixOS in terms of release schedule, packaging policies, collaboration and compatibility that you can really consider them proper separate projects |
| 06:54:16 | → | heisenberg2 joins (~heisenber@104.28.223.9) |
| 06:54:34 | × | heisenberg2 quits (~heisenber@104.28.223.9) (Remote host closed the connection) |
| 06:54:37 | <dminuoso> | Indeed, they are aligned with each other. |
| 06:55:17 | <dminuoso> | It may indeed be useful to think of the pkgs set of nixpkgs as a kind of nixos-lite that can either be embedded into an arbitrary linux, or be used to build nixos ontop. |
| 06:55:30 | <maerwald[m]> | Funtoo for example is a gentoo derivate that re-uses gentoo pkgs and does some other things on top. So yes, you can use gentoo packages in other ways too |
| 06:55:33 | <maerwald[m]> | But I still consider them *gentoo* |
| 06:55:38 | <maerwald[m]> | That's what the devs spend 90% of their time on |
| 06:56:30 | <dminuoso> | So for instance, the entire nixpkgs git repo is managed in half annual releases - but there is separate branches like nixos-unstable and nixpkgs-unstable, which gives a slight hint of separation, because one guarantees nixos tests succeed, the other does not. |
| 06:56:33 | <maerwald[m]> | And packaging is hard |
| 06:56:39 | × | tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 06:57:06 | <dminuoso> | so nixpkgs-unstable can have completely broken nixos modules, but you get the newest pkgs |
| 06:57:14 | <maerwald[m]> | Are the development teams strictly separate? |
| 06:57:26 | × | zmt01 quits (~zmt00@user/zmt00) (Ping timeout: 246 seconds) |
| 06:57:33 | <dminuoso> | I cannot say because I do not know. |
| 06:57:52 | <maerwald[m]> | I'd imagine they have power over both and there need not be any negotiations |
| 06:58:02 | <maerwald[m]> | Otherwise that becomes bottleneck quickly |
| 06:58:15 | × | Guest55 quits (~Guest55@p200300ef9716451373d1c50d5ff22e08.dip0.t-ipconnect.de) (Quit: Client closed) |
| 06:58:34 | → | Guest55 joins (~Guest55@p200300ef9716451373d1c50d5ff22e08.dip0.t-ipconnect.de) |
| 07:00:15 | × | Guest55 quits (~Guest55@p200300ef9716451373d1c50d5ff22e08.dip0.t-ipconnect.de) (Client Quit) |
| 07:02:55 | → | zmt00 joins (~zmt00@user/zmt00) |
| 07:05:06 | <maerwald[m]> | dminuoso: I expect you to give a NixOS workshop at Zurihac next year then |
| 07:05:12 | → | heisenberg2 joins (~heisenber@104.28.255.11) |
| 07:05:33 | → | heisenbe_ joins (~heisenber@104.28.223.10) |
| 07:05:40 | <dminuoso> | Mmm, might just do! |
| 07:05:41 | × | heisenbe_ quits (~heisenber@104.28.223.10) (Remote host closed the connection) |
| 07:06:03 | <maerwald[m]> | I'll attend and ask productive questions :D |
| 07:07:02 | <dminuoso> | My key advantage is that I know you like Guinness. Ill happily provide you with a plethora of pints before the workshop begins. |
| 07:07:09 | <maerwald[m]> | We can bikeshed about the meaning of "reproducible" |
| 07:07:18 | × | merijn quits (~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 256 seconds) |
| 07:07:53 | <maerwald[m]> | Like, nix doesn't isolate from all of the env (e.g. kernel) :p |
| 07:09:14 | <dminuoso> | Sure, selling nix as `deterministic` is overselling a bit. |
| 07:09:39 | <dminuoso> | But it provides an infrastructure to come closer to whatever that means than most other attempts at least. |
| 07:09:53 | × | heisenberg2 quits (~heisenber@104.28.255.11) (Ping timeout: 260 seconds) |
| 07:10:13 | <dminuoso> | But for what its worth, nix expressions themselves *are* deterministic. |
| 07:10:24 | <dminuoso> | well in the absence of certain things, which can however forbid |
| 07:10:32 | <carbolymer> | dminuoso: wdym, isn't nix deterministic? |
| 07:10:39 | <dminuoso> | carbolymer: its a pure functional language. |
| 07:11:01 | <dminuoso> | well, you can have impure nix expressions for starters |
| 07:11:10 | <carbolymer> | ah yes |
| 07:11:11 | <dminuoso> | or depend on impure things |
| 07:11:22 | <carbolymer> | right, now I see |
| 07:11:30 | <dminuoso> | its small subtle things like "fetch the source" - its not truly deterministic in the sense that the source might just be gone |
| 07:11:39 | <dminuoso> | and then it will suddenly not compute anymore |
| 07:11:44 | <dminuoso> | despite you having done nothing on your local machine |
| 07:11:54 | <carbolymer> | dminuoso: then you get deterministic output - or error? |
| 07:12:32 | <maerwald[m]> | dminuoso: I just know that on gitlab GHC CI, when I got cache misses, because GHC recipeds bumped some stuff and cache eviction got triggered. ..my CI actions started to compile stuff for 5 hours and then failed with compilation errors |
| 07:12:41 | <maerwald[m]> | That was the last straw for me :p |
| 07:13:07 | <dminuoso> | Hard to judge without seeing the details *shrugs* |
| 07:14:01 | <dminuoso> | carbolymer: that depends on what the build does. |
| 07:14:08 | <dminuoso> | carbolymer: there are a lot of non-deterministic builds. |
| 07:15:00 | <dminuoso> | carbolymer: consider parallel builds, for instance. |
| 07:15:27 | <dminuoso> | quite a bunch of those parallel builds are disabled to promote reproducability |
| 07:17:11 | × | tcard quits (~tcard@2400:4051:5801:7500:19ce:ed82:2ab7:90f9) (Quit: Leaving) |
| 07:17:27 | <dminuoso> | There's tricks like forcing the default ctime stamps to Jan 1, 1970. There were a few isolated packages that actually produced incorrect build output if there were some weird unexpected ctime differences. |
| 07:17:32 | <dminuoso> | It's a bit absurd. |
| 07:17:48 | <maerwald[m]> | And there are hidden things that can leak into builds too, liko current time |
| 07:18:03 | <dminuoso> | nix is both good and problematic in that it elevates these problems, it highlights them, but it also tends to promote them to a) errors or b) like maerwald[m]'s experienced needless rebuilding things. |
| 07:19:06 | <dminuoso> | (not sure how content addressed forms will make this really problematic) |
| 07:19:57 | <dminuoso> | maerwald[m]: the real question then becomes: arent packages that even care about that thing not properly broken? |
| 07:19:58 | <maerwald[m]> | Java builds depend on kernel specifities too afair |
| 07:20:30 | <dminuoso> | One of the most horrible experience Ive ever had was packaging Python packages under Nix |
| 07:20:38 | <maerwald[m]> | dminuoso: depends on your expectations really. They will.probably work for 90% of distros |
| 07:20:43 | <dminuoso> | But it turns out, the real reason for that is barely any python package has properly set dependencies. |
| 07:20:44 | <maerwald[m]> | I'd consider it bad too |
| 07:20:52 | <maerwald[m]> | But not sure if it's broken |
| 07:20:54 | × | king_gs quits (~Thunderbi@187.201.139.206) (Ping timeout: 256 seconds) |
| 07:20:57 | <dminuoso> | They just randomly do things like fetch packages via http during Setup.py and manually install them.. |
| 07:21:38 | <dminuoso> | or dependencies not specified entirely |
| 07:21:43 | <dminuoso> | missing upper bounds, missing lower bounds |
| 07:21:44 | <maerwald[m]> | E.g. do you consider a build system broken that doesn't let you control the lib/ subdir, but only the prefix? This will "break" for multilib distros like gentoo and debian, but be fine for others |
| 07:21:48 | → | tcard joins (~tcard@2400:4051:5801:7500:19ce:ed82:2ab7:90f9) |
| 07:21:59 | <dminuoso> | and those are not isolated instances. about every second python package is so horribly mistreated |
| 07:22:05 | <maerwald[m]> | I've patched hundreds of those build systems |
| 07:22:28 | <maerwald[m]> | So for a packager, everything is broken |
| 07:22:57 | <maerwald[m]> | But if you assume FHS and anything outside it can go f off, then hmm |
| 07:23:28 | <dminuoso> | maerwald[m]: hah for what its worth, nix has a full escape hatch called buildFHSUserEnv |
| 07:23:37 | <dminuoso> | Which is one of the really cool things about nix |
| 07:23:44 | → | chomwitt joins (~chomwitt@2a02:587:7a0d:dd00:1ac0:4dff:fedb:a3f1) |
| 07:24:02 | <dminuoso> | I had this vmware nonsense I had to install, but it really felt like rampaging all over /etc, installing and deleting files randomly |
| 07:24:02 | <maerwald[m]> | Yeah, but you can't do a proper nixpkg recipe with a build system with zero control knobs |
| 07:24:23 | <dminuoso> | so buildFHSUserEnv synthesizes a traditional FHS, and chroots you into it. :p |
| 07:24:33 | <maerwald[m]> | Packagers will always patch stuff downstream |
| 07:24:33 | <maerwald[m]> | Forever |
| 07:24:47 | <dminuoso> | And then you can just imperatively do anything you want. A kind of no-bullshit-container if you want. |
| 07:25:20 | <dminuoso> | yeah you do have a point though, as a package you will always be at the merci of poorly written packages. |
| 07:25:23 | <dminuoso> | *packager |
| 07:25:38 | <dminuoso> | or poorly written software build processes |
| 07:26:02 | <dminuoso> | Much of the early portability was achieved by autotools. |
| 07:26:19 | <dminuoso> | Which is a large stack of crazy. |
| 07:26:26 | <maerwald[m]> | https://github.com/IgnorantGuru/spacefm/issues/452 |
| 07:26:48 | → | tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
| 07:27:04 | <maerwald[m]> | Here the author didn't believe in /usr/bin/env for security reasons |
| 07:27:19 | <maerwald[m]> | And /bin/bash broke nixpkgs |
| 07:27:41 | <dminuoso> | maerwald[m]: hah the /bin/bash problem is interesting! there exist no standardized portable solution for it! |
| 07:28:00 | <dminuoso> | I recall some notes in POSIX that suggested something akin to /usr/bin/env *should* be used, but not that solution in particular |
| 07:28:09 | <dminuoso> | But they also hinted that this be a distribution specific way |
| 07:29:33 | <dminuoso> | maerwald[m]: I think its absolutely mindboggingly absurd to do that check at runtime. |
| 07:29:49 | <dminuoso> | They even use autotools, wtf. |
| 07:29:59 | <dminuoso> | Ah but hold on, its a runtime requirement |
| 07:30:01 | <dminuoso> | Mm |
| 07:30:35 | <maerwald[m]> | Posix doesn't suggest /usr/bin/env afaik |
| 07:30:44 | <maerwald[m]> | https://pubs.opengroup.org/onlinepubs/009695399/utilities/sh.html |
| 07:31:01 | <maerwald[m]> | "Applications should note that the standard PATH to the shell cannot be assumed to be either /bin/sh or /usr/bin/sh, and should be determined by interrogation of the PATH returned by getconf PATH , ensuring that the returned pathname is an absolute pathname and not a shell built-in." |
| 07:31:38 | <dminuoso> | Like I said, not explicitly |
| 07:32:03 | <dminuoso> | but /usr/bin/env does end up working to the same effect |
| 07:32:43 | → | chexum_ joins (~quassel@gateway/tor-sasl/chexum) |
| 07:32:57 | <maerwald[m]> | You can't make any assumptions about the location of 'env' either |
| 07:34:05 | <dminuoso> | Absolutely. This is one of the very things that NixOS places something under a predicable path as a pragmatic choice |
| 07:34:24 | <dminuoso> | Because it is such a well established standard, you would have to pretty much fix up *every* shell script in existence inside the nix store. |
| 07:34:39 | <dminuoso> | So while its not officially standardized, it is a defacto standard you can pretty much rely on |
| 07:34:54 | <maerwald[m]> | s/standard/practice/ |
| 07:34:58 | <dminuoso> | fair |
| 07:34:59 | × | chexum quits (~quassel@gateway/tor-sasl/chexum) (Ping timeout: 255 seconds) |
| 07:36:49 | <dminuoso> | maerwald[m]: their point regarding not using $PATH for setuid programs is valid, however. |
| 07:37:02 | <dminuoso> | and their implementation of --with-bash seems to be absolutely adequate |
| 07:37:06 | → | king_gs joins (~Thunderbi@187.201.139.206) |
| 07:42:07 | <maerwald[m]> | Yeah, but can you expect app developers to keep intricacies of random distributions in mind? |
| 07:42:46 | <maerwald[m]> | Making everything configurable can be a nuisance |
| 07:44:05 | <dminuoso> | Not really, I think this the kind of thing where a nixos person should just upstream it and say "hey we would like to introduce this change to make it compatible with ours" |
| 07:44:09 | <dminuoso> | And I think those problems are not an issue. |
| 07:44:25 | <dminuoso> | But python packages simply not declaring dependencies or having incorrect verion bounds.. |
| 07:44:30 | <dminuoso> | There's no escuse for that. |
| 07:44:37 | <dminuoso> | It's the methodical "it works on my machine" |
| 07:45:05 | <maerwald[m]> | I remember developers being quite annoyed by gentoo devs sending CFLAGS patches everywhere, but the multilib architecture relied on it |
| 07:45:09 | × | ft quits (~ft@p508dbd59.dip0.t-ipconnect.de) (Quit: leaving) |
| 07:45:46 | <dminuoso> | I too have written haskell packages that strictly only work under linux, because I couldnt be bothered to support darwin or windows. |
| 07:45:50 | <dminuoso> | If someone wants that support, they can add it. |
| 07:46:17 | → | Major_Biscuit joins (~MajorBisc@86-88-79-148.fixed.kpn.net) |
| 07:46:19 | <dminuoso> | But at least the package will build reliably irrespective of whether you run cabal update or not |
| 07:47:03 | <dminuoso> | ($!) :: forall r a (b :: TYPE r). (a -> b) -> a -> b infixr 0 |
| 07:47:07 | dminuoso | cries |
| 07:47:15 | <dminuoso> | Why was fixity messed up here too? |
| 07:47:23 | <dminuoso> | This should be infixl! :* |
| 07:47:35 | → | heisenberg2 joins (~heisenber@104.28.255.10) |
| 07:48:22 | × | ChaiTRex quits (~ChaiTRex@user/chaitrex) (Remote host closed the connection) |
| 07:48:46 | → | ChaiTRex joins (~ChaiTRex@user/chaitrex) |
| 07:48:56 | × | heisenberg2 quits (~heisenber@104.28.255.10) (Remote host closed the connection) |
| 07:49:28 | → | heisenberg2 joins (~heisenber@104.28.255.10) |
| 07:50:35 | × | jonathanx quits (~jonathan@h-178-174-176-109.A357.priv.bahnhof.se) (Ping timeout: 264 seconds) |
| 07:52:57 | → | sammelweis_ joins (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) |
| 07:54:32 | <dminuoso> | Would be so nice if you could just write `f a b c $! x y z` |
| 07:54:51 | <dminuoso> | And have it do the right thing. |
| 07:55:52 | × | heisenberg2 quits (~heisenber@104.28.255.10) (Remote host closed the connection) |
| 07:57:08 | <mauke> | there's only one $! in that example. how does associativity come into it? |
| 07:57:09 | × | king_gs quits (~Thunderbi@187.201.139.206) (Read error: Connection reset by peer) |
| 07:57:54 | <dminuoso> | mauke: you are right mmm |
| 07:57:57 | <c_wraith> | I'd argue $! shouldn't be different from $. That'd just cause unnecessary confusion |
| 07:58:12 | → | king_gs joins (~Thunderbi@2806:103e:29:bfeb:c988:bbd5:2586:4924) |
| 07:58:27 | → | heisenberg2 joins (~heisenber@104.28.255.10) |
| 07:58:30 | <dminuoso> | mauke: `f a b c $! x $! y $! z` |
| 07:59:15 | → | fserucas joins (~fserucas@2001:818:e376:a400:fb92:70c1:dd88:c7d7) |
| 07:59:28 | × | darchitect quits (~darchitec@2a00:23c6:3584:df01:dc79:ce08:25b8:80df) (Quit: WeeChat 3.6) |
| 07:59:53 | → | darchitect joins (~darchitec@2a00:23c6:3584:df01:dc79:ce08:25b8:80df) |
| 08:03:11 | × | fserucas quits (~fserucas@2001:818:e376:a400:fb92:70c1:dd88:c7d7) (Remote host closed the connection) |
| 08:03:16 | × | darchitect quits (~darchitec@2a00:23c6:3584:df01:dc79:ce08:25b8:80df) (Client Quit) |
| 08:03:22 | → | fserucas joins (~fserucas@2001:818:e376:a400:fb92:70c1:dd88:c7d7) |
| 08:03:22 | → | merijn joins (~merijn@86-86-29-250.fixed.kpn.net) |
| 08:04:37 | → | jonathanx joins (~jonathan@h-98-128-168-222.NA.cust.bahnhof.se) |
| 08:06:27 | → | lortabac joins (~lortabac@2a01:e0a:541:b8f0:c8be:9533:986e:aefa) |
| 08:08:52 | × | heisenberg2 quits (~heisenber@104.28.255.10) (Remote host closed the connection) |
| 08:14:10 | <mauke> | btw, I wrote a little irssi script to translate `code markup` (monospace) coming from the matrix bridge to white text on dark gray background |
| 08:19:59 | × | sammelweis_ quits (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Ping timeout: 264 seconds) |
| 08:21:07 | → | sammelweis_ joins (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) |
| 08:22:09 | × | califax quits (~califax@user/califx) (Remote host closed the connection) |
| 08:22:41 | × | tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 08:23:45 | → | califax joins (~califax@user/califx) |
| 08:25:32 | × | califax quits (~califax@user/califx) (Remote host closed the connection) |
| 08:27:06 | → | califax joins (~califax@user/califx) |
| 08:30:33 | × | shriekingnoise quits (~shrieking@186.137.167.202) (Quit: Quit) |
| 08:36:47 | × | merijn quits (~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 264 seconds) |
| 08:36:48 | × | sammelweis_ quits (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Ping timeout: 265 seconds) |
| 08:39:17 | → | sammelweis_ joins (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) |
| 08:40:55 | → | michalz joins (~michalz@185.246.207.197) |
| 08:41:48 | × | king_gs quits (~Thunderbi@2806:103e:29:bfeb:c988:bbd5:2586:4924) (Remote host closed the connection) |
| 08:42:07 | → | king_gs joins (~Thunderbi@2806:103e:29:bfeb:c988:bbd5:2586:4924) |
| 08:47:03 | → | acidjnk joins (~acidjnk@p200300d6e7137a67f01158a637cc3bb0.dip0.t-ipconnect.de) |
| 08:51:08 | → | machinedgod joins (~machinedg@d198-53-218-113.abhsia.telus.net) |
| 08:57:47 | × | machinedgod quits (~machinedg@d198-53-218-113.abhsia.telus.net) (Ping timeout: 264 seconds) |
| 08:59:14 | → | machinedgod joins (~machinedg@d198-53-218-113.abhsia.telus.net) |
| 09:00:56 | → | merijn joins (~merijn@86-86-29-250.fixed.kpn.net) |
| 09:03:43 | → | razetime joins (~quassel@117.254.35.74) |
| 09:03:47 | × | Guest8573 quits (~marc@5.83.191.93) (Ping timeout: 264 seconds) |
| 09:09:08 | → | chele joins (~chele@user/chele) |
| 09:09:19 | × | chexum_ quits (~quassel@gateway/tor-sasl/chexum) (Remote host closed the connection) |
| 09:09:59 | → | chexum joins (~quassel@gateway/tor-sasl/chexum) |
| 09:11:21 | × | king_gs quits (~Thunderbi@2806:103e:29:bfeb:c988:bbd5:2586:4924) (Quit: king_gs) |
| 09:11:31 | → | king_gs1 joins (~Thunderbi@187.201.139.206) |
| 09:12:17 | → | cfricke joins (~cfricke@user/cfricke) |
| 09:13:49 | king_gs1 | is now known as king_gs |
| 09:18:57 | → | andreabedini joins (~andreabed@2403-580e-db5b-2-caba-a840-d1de-5925.ip6.aussiebb.net) |
| 09:21:41 | → | Feuermagier_ joins (~Feuermagi@2a02:2488:4211:3400:6419:933b:46e0:8942) |
| 09:21:41 | × | Feuermagier_ quits (~Feuermagi@2a02:2488:4211:3400:6419:933b:46e0:8942) (Client Quit) |
| 09:21:42 | → | zeenk joins (~zeenk@2a02:2f04:a208:3600::7fe) |
| 09:21:43 | × | sammelweis_ quits (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Quit: No Ping reply in 180 seconds.) |
| 09:21:51 | → | sammelweis_ joins (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) |
| 09:30:57 | × | king_gs quits (~Thunderbi@187.201.139.206) (Read error: Connection reset by peer) |
| 09:31:05 | → | king_gs1 joins (~Thunderbi@2806:103e:29:bfeb:c988:bbd5:2586:4924) |
| 09:33:15 | → | raehik joins (~raehik@92.40.170.83.threembb.co.uk) |
| 09:33:23 | king_gs1 | is now known as king_gs |
| 09:35:12 | × | coot quits (~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba) (Quit: coot) |
| 09:35:57 | ← | jakalx parts (~jakalx@base.jakalx.net) () |
| 09:38:11 | × | king_gs quits (~Thunderbi@2806:103e:29:bfeb:c988:bbd5:2586:4924) (Ping timeout: 265 seconds) |
| 09:38:25 | → | tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
| 09:42:43 | × | sammelweis_ quits (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Ping timeout: 260 seconds) |
| 09:42:51 | → | sammelweis_ joins (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) |
| 09:44:46 | → | zant joins (~zant@62.214.20.26) |
| 09:45:32 | → | mmhat joins (~mmh@p200300f1c70102d5ee086bfffe095315.dip0.t-ipconnect.de) |
| 09:48:07 | × | eggplantade quits (~Eggplanta@2600:1700:38c5:d800:1933:e30c:90a:59fd) (Remote host closed the connection) |
| 09:50:25 | × | raehik quits (~raehik@92.40.170.83.threembb.co.uk) (Ping timeout: 268 seconds) |
| 09:52:30 | → | raehik joins (~raehik@92.40.212.239.threembb.co.uk) |
| 09:57:11 | × | raehik quits (~raehik@92.40.212.239.threembb.co.uk) (Ping timeout: 264 seconds) |
| 09:58:11 | × | andreabedini quits (~andreabed@2403-580e-db5b-2-caba-a840-d1de-5925.ip6.aussiebb.net) (Quit: WeeChat 3.7.1) |
| 09:59:15 | → | raehik joins (~raehik@92.40.170.15.threembb.co.uk) |
| 09:59:16 | → | king_gs joins (~Thunderbi@187.201.139.206) |
| 09:59:47 | → | coot joins (~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba) |
| 10:03:43 | × | king_gs quits (~Thunderbi@187.201.139.206) (Ping timeout: 260 seconds) |
| 10:04:40 | × | tdammers quits (~tdammers@77.109.72.175.res.static.edpnet.net) (Quit: WeeChat 3.0) |
| 10:13:45 | → | jakalx joins (~jakalx@base.jakalx.net) |
| 10:18:47 | × | xff0x quits (~xff0x@125x103x176x34.ap125.ftth.ucom.ne.jp) (Ping timeout: 264 seconds) |
| 10:24:07 | × | tzh quits (~tzh@c-24-21-73-154.hsd1.wa.comcast.net) (Quit: zzz) |
| 10:26:26 | × | lisbeths quits (uid135845@id-135845.lymington.irccloud.com) (Quit: Connection closed for inactivity) |
| 10:27:59 | × | econo quits (uid147250@user/econo) (Quit: Connection closed for inactivity) |
| 10:27:59 | → | king_gs joins (~Thunderbi@187.201.139.206) |
| 10:30:10 | × | sammelweis_ quits (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Ping timeout: 256 seconds) |
| 10:30:48 | → | sammelweis_ joins (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) |
| 10:31:08 | × | mmhat quits (~mmh@p200300f1c70102d5ee086bfffe095315.dip0.t-ipconnect.de) (Ping timeout: 260 seconds) |
| 10:32:48 | × | king_gs quits (~Thunderbi@187.201.139.206) (Ping timeout: 265 seconds) |
| 10:32:53 | × | raehik quits (~raehik@92.40.170.15.threembb.co.uk) (Ping timeout: 260 seconds) |
| 10:33:47 | × | jmdaemon quits (~jmdaemon@user/jmdaemon) (Ping timeout: 264 seconds) |
| 10:35:21 | × | sammelweis_ quits (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Client Quit) |
| 10:36:44 | → | ec_ joins (~ec@gateway/tor-sasl/ec) |
| 10:37:27 | → | sammelweis_ joins (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) |
| 10:37:41 | × | ec quits (~ec@gateway/tor-sasl/ec) (Ping timeout: 255 seconds) |
| 10:38:48 | × | Sgeo quits (~Sgeo@user/sgeo) (Read error: Connection reset by peer) |
| 10:40:04 | × | Me-me quits (~Me-me@user/me-me) (Quit: Going offline, see ya! (www.adiirc.com)) |
| 10:45:52 | → | king_gs joins (~Thunderbi@187.201.139.206) |
| 10:46:54 | → | nate4 joins (~nate@98.45.169.16) |
| 10:48:35 | → | eggplantade joins (~Eggplanta@2600:1700:38c5:d800:1933:e30c:90a:59fd) |
| 10:52:08 | × | nate4 quits (~nate@98.45.169.16) (Ping timeout: 260 seconds) |
| 10:53:05 | × | king_gs quits (~Thunderbi@187.201.139.206) (Quit: king_gs) |
| 10:53:18 | × | eggplantade quits (~Eggplanta@2600:1700:38c5:d800:1933:e30c:90a:59fd) (Ping timeout: 260 seconds) |
| 10:53:23 | → | king_gs joins (~Thunderbi@187.201.139.206) |
| 10:53:59 | → | jao joins (~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net) |
| 10:55:59 | → | teo joins (~teo@user/teo) |
| 11:00:47 | × | king_gs quits (~Thunderbi@187.201.139.206) (Ping timeout: 264 seconds) |
| 11:10:04 | → | xff0x joins (~xff0x@2405:6580:b080:900:84a4:3e04:c05a:9d80) |
| 11:13:15 | → | gurkenglas joins (~gurkengla@p548ac72e.dip0.t-ipconnect.de) |
| 11:22:34 | <kjlid[m]> | Is it possible to tell cabal install to include a file when building? I am using file-embed-lzma and it finds the while when I run cabal build but not when I run cabal install |
| 11:25:36 | → | sawilagar joins (~sawilagar@user/sawilagar) |
| 11:29:50 | × | teo quits (~teo@user/teo) (Ping timeout: 265 seconds) |
| 11:30:52 | → | teo joins (~teo@user/teo) |
| 11:31:06 | → | void_ joins (~void@89.151.44.90) |
| 11:31:07 | → | VOID418 joins (~user@89.151.44.90) |
| 11:31:16 | × | void_ quits (~void@89.151.44.90) (Client Quit) |
| 11:34:35 | → | nilradical joins (~nilradica@user/naso) |
| 11:35:39 | × | merijn quits (~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 260 seconds) |
| 11:35:48 | <maerwald[m]> | kjlid: yes |
| 11:35:54 | <Dominik[m]1> | I think so: https://cabal.readthedocs.io/en/stable/cabal-package.html#pkg-field-data-files |
| 11:36:20 | <maerwald[m]> | https://cabal.readthedocs.io/en/3.4/cabal-package.html?highlight=extra-source-files#pkg-field-extra-source-files |
| 11:36:43 | <Dominik[m]1> | I do not think it is the source files, but the data files. |
| 11:37:11 | <maerwald[m]> | data files are for runtime |
| 11:37:17 | <maerwald[m]> | They are inlining the file |
| 11:37:19 | <Dominik[m]1> | isn't that what he is asking |
| 11:37:25 | <Dominik[m]1> | ah the other way around |
| 11:37:31 | <Dominik[m]1> | sorry |
| 11:37:31 | <maerwald[m]> | No |
| 11:38:45 | → | beteigeuze joins (~Thunderbi@a79-169-109-107.cpe.netcabo.pt) |
| 11:38:50 | <Dominik[m]1> | ya it was misleading, because "Is it possible to tell `cabal install` to include a file when building" :-). |
| 11:39:02 | <kjlid[m]> | Okay so I'm an idiot. I actually tried extra-source-files earlier but it didn't work because obviously I put it in the wrong place in the cabal file |
| 11:39:04 | <kjlid[m]> | Now it works |
| 11:39:19 | <kjlid[m]> | Thanks! |
| 11:42:04 | <maerwald[m]> | extra-source-files should also work with TH, knowing that it needs to rebuild when it changes |
| 11:44:37 | <mauke> | hell yeah. my "monospace" hack works: https://i.ibb.co/Pry5wK4/Screenshot-2022-11-25-12-42-38.png |
| 11:46:04 | × | nilradical quits (~nilradica@user/naso) (Remote host closed the connection) |
| 11:46:21 | × | sammelweis_ quits (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Quit: No Ping reply in 180 seconds.) |
| 11:46:41 | → | nilradical joins (~nilradica@user/naso) |
| 11:47:37 | → | sammelweis_ joins (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) |
| 11:48:08 | × | zant quits (~zant@62.214.20.26) (Ping timeout: 260 seconds) |
| 11:51:42 | × | tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 11:51:47 | × | nilradical quits (~nilradica@user/naso) (Ping timeout: 264 seconds) |
| 11:53:58 | → | mestre joins (~mestre@191.177.185.178) |
| 11:54:06 | <carbolymer> | mauke: noice |
| 11:55:17 | → | tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
| 11:56:49 | × | VOID418 quits (~user@89.151.44.90) (Remote host closed the connection) |
| 11:57:05 | → | VOID418 joins (~user@89.151.44.90) |
| 11:57:27 | × | libertyprime quits (~libertypr@118-92-78-165.dsl.dyn.ihug.co.nz) (Ping timeout: 268 seconds) |
| 11:59:48 | × | sammelweis_ quits (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Ping timeout: 260 seconds) |
| 12:00:26 | → | sammelweis_ joins (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) |
| 12:01:52 | → | merijn joins (~merijn@86-86-29-250.fixed.kpn.net) |
| 12:17:34 | → | bjourne joins (~bjourne@2001:6b0:1:1140:42bf:ff4:f8fa:50e5) |
| 12:19:37 | → | nilradical joins (~nilradica@user/naso) |
| 12:24:24 | → | VOID[m] joins (~void404ma@2001:470:69fc:105::2:c72c) |
| 12:24:53 | × | nilradical quits (~nilradica@user/naso) (Ping timeout: 260 seconds) |
| 12:26:32 | × | sawilagar quits (~sawilagar@user/sawilagar) (Read error: Connection reset by peer) |
| 12:27:56 | → | sawilagar joins (~sawilagar@user/sawilagar) |
| 12:35:26 | → | ft joins (~ft@p508dbd59.dip0.t-ipconnect.de) |
| 12:36:47 | × | merijn quits (~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 264 seconds) |
| 12:38:36 | → | elevenkb joins (~elevenkb@105.184.125.168) |
| 12:44:50 | → | zant joins (~zant@62.96.232.178) |
| 12:46:24 | → | Unicorn_Princess joins (~Unicorn_P@user/Unicorn-Princess/x-3540542) |
| 12:52:58 | × | elevenkb quits (~elevenkb@105.184.125.168) (Ping timeout: 265 seconds) |
| 12:55:38 | → | nilradical joins (~nilradica@user/naso) |
| 12:56:56 | → | azimut joins (~azimut@gateway/tor-sasl/azimut) |
| 13:00:42 | × | nilradical quits (~nilradica@user/naso) (Ping timeout: 265 seconds) |
| 13:02:09 | × | jao quits (~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net) (Ping timeout: 265 seconds) |
| 13:03:30 | × | mestre quits (~mestre@191.177.185.178) (Quit: leaving) |
| 13:06:18 | × | Erutuon quits (~Erutuon@user/erutuon) (Ping timeout: 260 seconds) |
| 13:08:16 | → | heisenberg2 joins (~heisenber@2a09:bac1:3f40::16:19a) |
| 13:11:04 | → | elevenkb joins (~elevenkb@105.184.125.168) |
| 13:17:20 | × | acidjnk quits (~acidjnk@p200300d6e7137a67f01158a637cc3bb0.dip0.t-ipconnect.de) (Ping timeout: 256 seconds) |
| 13:21:24 | → | merijn joins (~merijn@86-86-29-250.fixed.kpn.net) |
| 13:21:30 | <dminuoso> | maerwald[m]: Mmm. I think its time to finally kick off monad-logger-core :S |
| 13:21:50 | <dminuoso> | That depends only on unliftio-core and bytestrings. |
| 13:22:26 | <dminuoso> | The unfortunate reality with orphan instances might make it hard to split the actual monad-logger package however. |
| 13:23:11 | <dminuoso> | Given that there's instances like `MonadLogger m => MonadLogger (Pipe l i o u m)` |
| 13:23:28 | × | tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 13:24:59 | × | sammelweis_ quits (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Quit: No Ping reply in 180 seconds.) |
| 13:25:07 | → | sammelweis_ joins (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) |
| 13:25:38 | × | Kaiepi quits (~Kaiepi@108.175.84.104) (Remote host closed the connection) |
| 13:25:44 | <maerwald_> | dminuoso: have you seen https://github.com/input-output-hk/iohk-monitoring-framework |
| 13:26:02 | → | Kaiepi joins (~Kaiepi@108.175.84.104) |
| 13:26:20 | <maerwald_> | at first, I wasn't sure if this is a java framework |
| 13:26:35 | × | merijn quits (~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 264 seconds) |
| 13:26:40 | <dminuoso> | maerwald_: Yeah its a bit crazy. |
| 13:26:56 | <dminuoso> | The disturbing thing is, we already have a uniform and adaptable mechanism to ship logs |
| 13:27:04 | <dminuoso> | `man 3 syslog` |
| 13:27:18 | <dminuoso> | Which nicely connects to systemd, and you can do all kinds of fancy redirects with that. |
| 13:27:49 | <dminuoso> | On our clusters, we just run promtail on every node, collecting from journald and shoving it into loki. *shrugs* |
| 13:28:06 | <dminuoso> | Software is blissfully unaware. |
| 13:28:12 | <hpc> | syslog connects to just about everything |
| 13:28:52 | × | pavonia quits (~user@user/siracusa) (Read error: Connection reset by peer) |
| 13:29:13 | <dminuoso> | maerwald_: that diagram on iohk-monitoring-framework looks like the twitter architecutre. |
| 13:29:15 | × | maerwald_ quits (~maerwald@mail.hasufell.de) (Changing host) |
| 13:29:15 | → | maerwald_ joins (~maerwald@user/maerwald) |
| 13:29:22 | <maerwald_> | lol |
| 13:29:25 | <dminuoso> | Maybe it can run twitter? :S |
| 13:30:12 | ← | jakalx parts (~jakalx@base.jakalx.net) (Error from remote client) |
| 13:30:17 | <maerwald_> | you think Elon was involved? |
| 13:30:24 | maerwald_ | is now known as maerwald |
| 13:31:23 | <maerwald> | anyway... my point is... either logging libs are over-engineered or too simplistic and writing my own is easier than trying to use the API |
| 13:31:43 | <hpc> | https://hackage.haskell.org/package/hslogger-1.3.1.0 seems to have a nice api |
| 13:31:51 | <dminuoso> | monad-logger in principle is great because it makes the problem someone elses problem. |
| 13:32:03 | → | pavonia joins (~user@user/siracusa) |
| 13:32:11 | <dminuoso> | and if Im writing executable code, it all goes into syslog. |
| 13:32:16 | <hpc> | (ignoring the global state, at least...) |
| 13:33:46 | <maerwald> | yeah... composition is really hard once you go beyond function level |
| 13:34:55 | <maerwald> | "everything is a file" wasn't too bad an attempt of solving it |
| 13:35:05 | → | marc joins (~marc@5.83.191.93) |
| 13:35:06 | <maerwald> | because you have universal primitives |
| 13:35:10 | <maerwald> | read and write, lol |
| 13:35:29 | marc | is now known as Guest3723 |
| 13:36:05 | → | jakalx joins (~jakalx@base.jakalx.net) |
| 13:36:25 | → | tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
| 13:37:01 | <darkling> | It's the same kind of principle as REST: have a small number of common verbs, and a large number of resources you can manipulate with those verbs. |
| 13:37:13 | → | machined1od joins (~machinedg@d198-53-218-113.abhsia.telus.net) |
| 13:37:22 | <dminuoso> | darkling: Im willing to bet most people that use the word REST dont know what they're talking about. |
| 13:37:50 | <darkling> | Yeah. I mean actual REST, not the bastardised HTTP-JSON-RPC that passes for it these days. |
| 13:37:53 | × | machinedgod quits (~machinedg@d198-53-218-113.abhsia.telus.net) (Read error: Connection reset by peer) |
| 13:37:54 | <dminuoso> | Virtually everything dubbed as "REST" is not REST. |
| 13:38:11 | <darkling> | My co-workers get this lecture at regular intervals. :) |
| 13:38:23 | <dminuoso> | Did you hand them Fieldings PhD thesis? |
| 13:38:27 | <darkling> | Yes. |
| 13:38:29 | → | merijn joins (~merijn@86-86-29-250.fixed.kpn.net) |
| 13:38:33 | <dminuoso> | Nice! |
| 13:40:08 | <albet70> | could do notation be used in lambda? |
| 13:40:29 | <geekosaur> | if it has the right type |
| 13:40:31 | <dminuoso> | albet70: a do-expression can be used in every place an expression is expected. |
| 13:40:35 | <dminuoso> | syntactically, at least. |
| 13:40:36 | <geekosaur> | otherwise, what's the point? |
| 13:40:42 | <albet70> | ok |
| 13:41:00 | <dminuoso> | which is why they're also called do-expressions. :) |
| 13:41:35 | <dminuoso> | Here's a cute demonstration of that fact: |
| 13:41:38 | <mauke> | > concatMap (\x -> do y <- [x, x * 10, x * 100]; return y) [4, 5, 6] |
| 13:41:39 | <lambdabot> | [4,40,400,5,50,500,6,60,600] |
| 13:41:41 | <dminuoso> | % let a :: Int; a = do 1 |
| 13:41:41 | <yahb2> | <no output> |
| 13:41:55 | <dminuoso> | See? You can even use this outside of monadic code! |
| 13:42:31 | <mauke> | > do (do print) (do "hello, world") |
| 13:42:33 | <lambdabot> | <IO ()> |
| 13:42:36 | <dminuoso> | What is curious however: |
| 13:42:37 | <mauke> | well, I tried |
| 13:42:40 | <dminuoso> | % let a :: Int; a = do (do 1) |
| 13:42:40 | <yahb2> | <no output> |
| 13:43:17 | <dminuoso> | can even leave the parens away to test whether your coworkers really do read your pull requests. |
| 13:43:22 | <dminuoso> | % let a :: Int; a = do do do 1 |
| 13:43:22 | <yahb2> | <no output> |
| 13:43:36 | <mauke> | that proves 'do' is idempotent |
| 13:44:19 | <mauke> | just like 'die' in Perl |
| 13:44:25 | <dminuoso> | With acme-dont, you can even write: don't do launchMissiles |
| 13:44:28 | <mauke> | it's a "do or die" thing |
| 13:45:10 | <mauke> | what a coincidence: https://metacpan.org/pod/Acme::Don::t |
| 13:45:57 | <dminuoso> | perl has by far the best acme ideas. |
| 13:46:00 | <hpc> | haskell's entire acme thing comes from perl |
| 13:46:05 | <dminuoso> | My all time favourite is Acme::EyeDrops |
| 13:46:39 | <hpc> | acme-schoenfinkel is my favorite |
| 13:46:41 | <bjourne> | i have a "processing pipeline" consisting of a few functions that return maybes |
| 13:46:50 | <hpc> | just for the pun at the end |
| 13:47:00 | <bjourne> | is there a nicer way to "run" this pipleline than nested cases that match on Just and Nothing? |
| 13:47:26 | <dminuoso> | hpc: Oh I love those. hässlich :: Schoenfinkel cat => cat a (cat b c) -> cat (a, b) c |
| 13:47:32 | <dminuoso> | What a cute pun |
| 13:47:58 | <mauke> | bjourne: >>= or do notation? |
| 13:48:09 | <geekosaur> | bjourne, if you're just looking for a Just/Nothing at the end, use the Monad instance |
| 13:48:38 | → | nilradical joins (~nilradica@user/naso) |
| 13:49:45 | <bjourne> | it's not sufficient since i need to print potential errors from each function |
| 13:50:37 | <dminuoso> | bjourne: You can use `Either Err` then instead. |
| 13:50:48 | <dminuoso> | In the Left case, just print (say to stderr) |
| 13:51:26 | <bjourne> | no, the functions are Maybe |
| 13:53:09 | × | nilradical quits (~nilradica@user/naso) (Remote host closed the connection) |
| 13:56:11 | <dminuoso> | Maybe is not a function type. Can you be more explicit? |
| 13:58:16 | <albet70> | >>= this reverse is <<= or =<<? |
| 13:59:18 | <albet70> | =<< |
| 13:59:26 | <bjourne> | dminuoso: { e1 = f0(e0) if (e1 == null) dieWith "f0 failed" e2 = f1(e1) if (e2 == null) dieWith "f1 failed" ... return e5 } |
| 13:59:50 | <dminuoso> | bjourne: Is it of type `... S -> IO (Maybe T)` ? |
| 14:00:29 | <bjourne> | no |
| 14:00:51 | <dminuoso> | bjourne: that does not read like valid Haskell code. |
| 14:01:00 | <dminuoso> | Can you please share the real code and not some pseudo code? |
| 14:01:03 | → | nilradical joins (~nilradica@user/naso) |
| 14:01:23 | × | elevenkb quits (~elevenkb@105.184.125.168) (Read error: Connection reset by peer) |
| 14:02:26 | <bjourne> | i can't. but that's the code's structure |
| 14:02:37 | × | heisenberg2 quits (~heisenber@2a09:bac1:3f40::16:19a) (Remote host closed the connection) |
| 14:06:53 | × | cfricke quits (~cfricke@user/cfricke) (Quit: WeeChat 3.7.1) |
| 14:08:18 | <albet70> | how to break long line code? with \? |
| 14:09:57 | <hpc> | you don't need to, you can just use newlines and layout |
| 14:10:09 | <hpc> | if you have some long expression "foo bar baz", you can write |
| 14:10:09 | <hpc> | foo |
| 14:10:10 | <hpc> | bar |
| 14:10:11 | <hpc> | baz |
| 14:10:15 | <hpc> | or something along those lines |
| 14:10:19 | <albet70> | hpc, but what about the indent? |
| 14:10:20 | <hpc> | it's pretty flexible |
| 14:10:32 | <albet70> | could it be wrong with the indent? in do notation |
| 14:11:12 | <pavonia> | You just indent the broken lines futher |
| 14:11:21 | <hpc> | it's like any indentation, as long as it's not aligned with the start of "foo" it'll know it's not another line yet |
| 14:11:59 | <albet70> | like this one https://paste.tomsmeding.com/0t0nbzGY |
| 14:12:13 | × | merijn quits (~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 260 seconds) |
| 14:12:30 | <albet70> | line 219 is too long |
| 14:13:02 | <dminuoso> | bjourne: That is not valid code structure, it is not even remotely syntactically valid haskell |
| 14:13:17 | <dminuoso> | I cant even guess at what that is trying to convey. |
| 14:13:32 | × | Unicorn_Princess quits (~Unicorn_P@user/Unicorn-Princess/x-3540542) (Remote host closed the connection) |
| 14:13:48 | → | AlexNoo_ joins (~AlexNoo@94.233.240.159) |
| 14:13:57 | → | srz joins (~srz@devil.dm.uba.ar) |
| 14:16:48 | → | akegalj joins (~akegalj@93-139-151-182.adsl.net.t-com.hr) |
| 14:17:01 | × | Alex_test quits (~al_test@178.34.163.201) (Ping timeout: 252 seconds) |
| 14:17:26 | × | AlexZenon quits (~alzenon@178.34.163.201) (Ping timeout: 268 seconds) |
| 14:17:49 | × | AlexNoo quits (~AlexNoo@178.34.163.201) (Ping timeout: 260 seconds) |
| 14:18:30 | × | sammelweis_ quits (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Quit: No Ping reply in 180 seconds.) |
| 14:18:41 | <mauke> | :t maybe |
| 14:18:42 | <lambdabot> | b -> (a -> b) -> Maybe a -> b |
| 14:19:47 | → | sammelweis_ joins (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) |
| 14:20:19 | <mauke> | bjourne: in the absence of any context, maybe something like: e1 <- maybe (dieWith "f0 failed") pure (f0 e0); e2 <- maybe (dieWith "f1 failed") pure (f1 e1); ... |
| 14:20:30 | <mauke> | :t fromMaybe |
| 14:20:31 | <lambdabot> | a -> Maybe a -> a |
| 14:21:05 | <mauke> | or even: let e1 = fromMaybe (error "f0 failed") (f0 e0); etc. |
| 14:22:13 | → | jao joins (~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net) |
| 14:22:28 | <bjourne> | what is pure here? |
| 14:22:32 | → | Alex_test joins (~al_test@94.233.240.159) |
| 14:22:35 | <hpc> | :t pure |
| 14:22:37 | <lambdabot> | Applicative f => a -> f a |
| 14:22:53 | → | AlexZenon joins (~alzenon@94.233.240.159) |
| 14:24:41 | <bjourne> | i solved it like this: tokens <- maybe (Left ("Tokenization error", ExitFailure 1)) Right $ tokenize line |
| 14:24:57 | <bjourne> | not ideal to have to repeat Left and Right all the time though |
| 14:25:09 | <dminuoso> | bjourne: Define yourself a function called `note :: a -> Maybe b -> Either a b` |
| 14:25:33 | <dminuoso> | Then you can just write `r <- note "Tokenization error" (tokenize line)` ... |
| 14:25:52 | <dminuoso> | And the ExitFailure you should best just skip, its poor coupling |
| 14:25:59 | <mauke> | :t maybe (Left ("Tokenization error", ExitFailure 1)) Right |
| 14:26:00 | <lambdabot> | error: |
| 14:26:00 | <lambdabot> | Data constructor not in scope: ExitFailure :: t0 -> b1 |
| 14:26:08 | <mauke> | ah |
| 14:26:17 | <dminuoso> | If you want distinct exit codes, use an ADT to encode different failure conditions `data Err = TokError | FooError`, and scrutinize on that later |
| 14:26:57 | <mauke> | :t maybe (Left ("Tokenization error", System.Exit.ExitFailure 1)) Right |
| 14:26:59 | <lambdabot> | Maybe b -> Either ([Char], GHC.IO.Exception.ExitCode) b |
| 14:27:08 | <mauke> | yeah, that's a bit hairy |
| 14:27:47 | <dminuoso> | % note :: a -> Maybe b -> Either a b; note a = maybe (Left a) Right |
| 14:27:47 | <yahb2> | <no output> |
| 14:28:05 | × | bitdex quits (~bitdex@gateway/tor-sasl/bitdex) (Ping timeout: 255 seconds) |
| 14:28:18 | <dminuoso> | That's one of those utiltiy functions I find myself using in every project, though sometimes with flipped arguments, sometimes slightly different types.. |
| 14:28:53 | × | malte quits (~malte@mal.tc) (Remote host closed the connection) |
| 14:28:55 | <mauke> | @pl \a -> maybe (Left a) Right |
| 14:28:56 | <lambdabot> | flip maybe Right . Left |
| 14:29:00 | <mauke> | ... no. |
| 14:29:56 | → | malte joins (~malte@mal.tc) |
| 14:30:45 | → | bitdex joins (~bitdex@gateway/tor-sasl/bitdex) |
| 14:34:31 | × | dsrt^ quits (~dsrt@76.145.185.103) (Remote host closed the connection) |
| 14:37:35 | <nilradical> | how can i get rid of these annoying warnings (macos13) : |
| 14:37:40 | <nilradical> | ld: warning: directory not found for option '-L/opt/local/lib/' |
| 14:37:41 | <nilradical> | ld: warning: directory not found for option '-L/usr/local/lib/' |
| 14:37:41 | <nilradical> | ld: warning: -undefined dynamic_lookup may not work with chained fixups |
| 14:41:27 | → | kenran joins (~user@user/kenran) |
| 14:42:18 | × | kenran quits (~user@user/kenran) (Remote host closed the connection) |
| 14:43:00 | <bjourne> | dminuoso: that's reasonable but i would have expected haskell to have something a little more general |
| 14:43:00 | → | shriekingnoise joins (~shrieking@186.137.167.202) |
| 14:44:45 | × | razetime quits (~quassel@117.254.35.74) (Remote host closed the connection) |
| 14:47:28 | × | nilradical quits (~nilradica@user/naso) (Remote host closed the connection) |
| 14:47:47 | → | nilradical joins (~nilradica@user/naso) |
| 14:48:26 | → | nate4 joins (~nate@98.45.169.16) |
| 14:51:34 | <albet70> | why there's no isEmpty for list? |
| 14:52:12 | → | eggplantade joins (~Eggplanta@2600:1700:38c5:d800:1933:e30c:90a:59fd) |
| 14:52:29 | <[exa]> | albet70: `null` ? |
| 14:53:15 | <albet70> | yes, null can check empty list, but why the name isn't isEmpty |
| 14:53:49 | × | nate4 quits (~nate@98.45.169.16) (Ping timeout: 268 seconds) |
| 14:54:19 | <mauke> | :kneeling_warthog: |
| 14:55:24 | <geekosaur> | you perhaps haven't noticed that Haskell stuff has mathy names? |
| 14:56:42 | × | eggplantade quits (~Eggplanta@2600:1700:38c5:d800:1933:e30c:90a:59fd) (Ping timeout: 265 seconds) |
| 14:56:58 | <mauke> | similarly, getUniqueElements is called "nub" |
| 15:01:48 | × | sawilagar quits (~sawilagar@user/sawilagar) (Ping timeout: 260 seconds) |
| 15:02:11 | <hpc> | and map is called... map |
| 15:02:15 | <hpc> | i mean fmap |
| 15:02:17 | <hpc> | i mean (.) |
| 15:02:21 | <hpc> | :P |
| 15:03:05 | → | wroathe joins (~wroathe@207-153-38-140.fttp.usinternet.com) |
| 15:03:05 | × | wroathe quits (~wroathe@207-153-38-140.fttp.usinternet.com) (Changing host) |
| 15:03:05 | → | wroathe joins (~wroathe@user/wroathe) |
| 15:04:20 | <geekosaur> | and before haskell98 map was the instance method for Functor. then they decided the one for lists should be monomorphic to help newcomers, and the Functor one became fmap |
| 15:04:20 | <albet70> | hpc, right! and reduce is called foldl1 |
| 15:08:14 | → | merijn joins (~merijn@86-86-29-250.fixed.kpn.net) |
| 15:10:31 | × | manwithluck quits (~manwithlu@194.177.28.176) (Read error: Connection reset by peer) |
| 15:13:29 | → | manwithluck joins (~manwithlu@194.177.28.176) |
| 15:17:00 | → | justsomeguy joins (~justsomeg@user/justsomeguy) |
| 15:17:28 | <bjourne> | but tragically, minimum of a list is actually called minimum and not infimum |
| 15:19:08 | → | chromoblob joins (~user@37.113.164.122) |
| 15:19:44 | <mauke> | that's different. minimum can't return elements that are not in the list |
| 15:19:54 | → | acidjnk joins (~acidjnk@p200300d6e7137a87e80cc9250548b2f9.dip0.t-ipconnect.de) |
| 15:23:46 | × | teo quits (~teo@user/teo) (Ping timeout: 265 seconds) |
| 15:27:23 | → | mvk joins (~mvk@2607:fea8:5ce3:8500::efb) |
| 15:29:19 | × | [Leary] quits (~Leary]@user/Leary/x-0910699) (Remote host closed the connection) |
| 15:29:37 | → | [Leary] joins (~Leary]@user/Leary/x-0910699) |
| 15:30:28 | × | mvk quits (~mvk@2607:fea8:5ce3:8500::efb) (Client Quit) |
| 15:30:49 | × | justsomeguy quits (~justsomeg@user/justsomeguy) (Ping timeout: 268 seconds) |
| 15:33:18 | × | InstX1_ quits (~Liam@2601:6c4:4081:54f0:e9f2:606c:4487:f118) (Ping timeout: 260 seconds) |
| 15:33:31 | → | raehik joins (~raehik@92.40.202.127.threembb.co.uk) |
| 15:33:41 | × | Inst quits (~Inst@2601:6c4:4081:54f0:681d:b835:8895:3ea8) (Ping timeout: 255 seconds) |
| 15:37:43 | → | LemanR joins (~LemanR@pool-74-109-28-147.phlapa.fios.verizon.net) |
| 15:42:47 | × | merijn quits (~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 264 seconds) |
| 15:43:17 | × | chexum quits (~quassel@gateway/tor-sasl/chexum) (Remote host closed the connection) |
| 15:44:46 | → | heisenberg2 joins (~heisenber@2a09:bac1:3f60::16:19a) |
| 15:45:05 | → | chexum joins (~quassel@gateway/tor-sasl/chexum) |
| 15:46:59 | × | tomboy64 quits (~tomboy64@user/tomboy64) (Quit: Off to see the wizard.) |
| 15:49:48 | ← | jakalx parts (~jakalx@base.jakalx.net) () |
| 15:51:06 | × | nilradical quits (~nilradica@user/naso) () |
| 15:53:28 | → | tomboy64 joins (~tomboy64@user/tomboy64) |
| 15:54:52 | × | sammelweis_ quits (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Ping timeout: 256 seconds) |
| 15:55:00 | → | sammelweis_ joins (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) |
| 15:56:50 | → | jakalx joins (~jakalx@base.jakalx.net) |
| 15:58:50 | → | justsomeguy joins (~justsomeg@user/justsomeguy) |
| 16:00:05 | × | steve[m] quits (~stevetrou@2001:470:69fc:105::e0b) (Quit: You have been kicked for being idle) |
| 16:01:28 | × | srz quits (~srz@devil.dm.uba.ar) (Ping timeout: 265 seconds) |
| 16:02:01 | → | kuribas joins (~user@ptr-17d51emqj0opa703e0o.18120a2.ip6.access.telenet.be) |
| 16:03:22 | × | pavonia quits (~user@user/siracusa) (Quit: Bye!) |
| 16:05:38 | × | jinsl quits (~jinsl@2408:8207:2557:ce20:211:32ff:fec8:6aea) (Ping timeout: 256 seconds) |
| 16:05:49 | × | wroathe quits (~wroathe@user/wroathe) (Ping timeout: 265 seconds) |
| 16:05:49 | → | jinsl- joins (~jinsl@123.120.168.177) |
| 16:09:21 | × | heisenberg2 quits (~heisenber@2a09:bac1:3f60::16:19a) (Remote host closed the connection) |
| 16:10:03 | <LemanR> | quick question for haskell users. I am watching tutorials for haskell and I understand why it is so elegant as a language. Is there another language that has taken "what makes haskell, haskell" and improved on it as computer science got more advanced a subject? |
| 16:10:08 | → | heisenberg2 joins (~heisenber@2a09:bac1:3f60::16:19a) |
| 16:11:26 | <geekosaur> | depends on what you mean by "improved on" |
| 16:12:49 | <geekosaur> | Idris is more or less Haskell with dependent types. Clean is Haskell with uniqueness types. Curry is a logic language modeled on Haskell. |
| 16:13:42 | <geekosaur> | for that matter, ghc isn't static; with 9.0 we got linear types, although they're not integrated very well as yet |
| 16:13:49 | <[exa]> | LemanR: much of the research is usually put right into haskell |
| 16:14:01 | <[exa]> | for like 30-ish years now |
| 16:15:50 | <kuribas> | well, when it comes to type level computation, idris is more advanced than haskell. |
| 16:16:19 | <kuribas> | haskell type level computation is just a lot of hacks around HM inference and type classes. |
| 16:16:43 | <LemanR> | I guess I should be asking, was there any new language developed because there was potential to 'upgrading' haskell however it would require fundamental changes thus a new language? Something like that. Or like you, [exa] , point out that so far only haskell devs have improved haskell. kuribas I just got done typing this when I read your message so |
| 16:16:43 | <LemanR> | i guess I'll read now. |
| 16:17:12 | <LemanR> | * read about idris |
| 16:18:25 | <bjourne> | If you're on the clr F# is really nice |
| 16:19:03 | <kuribas> | LemanR: but you know, programming languages are not advancing on a single axis. There are many dimensions to it, so many languages can have different merits. |
| 16:19:50 | <kuribas> | LemanR: haskell has a production ready compiler, wealth of libraries, a rather large community, which you are not going to find in idris, agda, etc... |
| 16:19:58 | × | acidjnk quits (~acidjnk@p200300d6e7137a87e80cc9250548b2f9.dip0.t-ipconnect.de) (Ping timeout: 260 seconds) |
| 16:20:19 | → | ddellacosta joins (~ddellacos@89.45.224.188) |
| 16:20:26 | <[exa]> | LemanR: I'd kinda say that everyone's awaiting the killer new haskell and no can decide what to put in it. :D |
| 16:21:51 | <[exa]> | kuribas: btw AFAIK ghc actually discarded the "super-hacked HM inference" a long ago, now there's the constraint-solving typesystem over Fω |
| 16:22:05 | <kuribas> | [exa]: ah right :) |
| 16:22:07 | <[exa]> | there's a nice SPJ video from zurihac about that somewhere on youtube |
| 16:23:12 | <LemanR> | lol wait as in a haskell 2.0 or like a new language that is like what rust is to C++ atm. I'll leave all that type stuff or another day. Another motivator to learn haskell was that it would force me to think about elegant coding but more importantly what exactly I am doing insofar as types is concerned. |
| 16:23:26 | <[exa]> | LemanR: one kinda practical concern that drives the development this way is that it's much easier to add your random small improvement into ghc instead of redoing the whole compiler again |
| 16:25:29 | <kuribas> | LemanR: forcing you to think about elegant code is indeed the best thing you learn in haskell. |
| 16:25:57 | <kuribas> | LemanR: before haskell I was learning scheme, ruby, and ocaml, but I never really found my code elegant. |
| 16:26:11 | <[exa]> | (btw many people would love to have even a second haskell compiler (promotes standardization, avoids monoculture&cathedral-ish problems, ...), but anything except for ghc isn't really production-ready nowadays) |
| 16:26:25 | <kuribas> | haskell tought me to think about local state, and how to write higher level abstractions over complicated low level code. |
| 16:26:57 | → | srz joins (~srz@devil.dm.uba.ar) |
| 16:27:34 | <kuribas> | [exa]: idk, I prefer haskell monoculture over the scheme situation |
| 16:28:04 | → | econo joins (uid147250@user/econo) |
| 16:28:13 | ← | coot parts (~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba) () |
| 16:28:25 | <LemanR> | common lisp seems to have benefited form having a S*** ton of dialects then having a meeting of sorts to standardize. Maybe scheme will have the same benefit? |
| 16:28:54 | ← | jakalx parts (~jakalx@base.jakalx.net) (Error from remote client) |
| 16:29:32 | <oak-> | I thought Haskell has similar kind of history, there used to be different kinds of ML-languages or something along the lines |
| 16:30:26 | <LemanR> | well I better get coding. My first attempt as someone who's only watched a few tutorials at making a type for the data I'm working with (messing with neuron modeling, atm just reducing the amount of nodes a auto-tracer made) |
| 16:31:13 | <kuribas> | LemanR: common lisp was a compromise. And not an easy one. |
| 16:32:11 | <geekosaur> | oak-, Haskell isn't really an ML except in syntax. it staked out the purity+laziness area as its own |
| 16:32:19 | → | jakalx joins (~jakalx@base.jakalx.net) |
| 16:32:30 | <geekosaur> | OCaml seems to have won the ML dialects war |
| 16:32:44 | <kuribas> | oak-: yeah, haskell was actually made by a committee. |
| 16:33:18 | <kuribas> | geekosaur: by on it's own you mean miranda and other languages? |
| 16:33:50 | <geekosaur> | well, Haskell was originally intended to free that arena from closed source limitations so more research could be done in the area |
| 16:33:55 | <geekosaur> | as I understand it |
| 16:36:35 | <LemanR> | before I go, any suggested resources that I can read/watch that will help me better understand coding from a computer science perspectives that goes beyond describing the jargon (polymorphism is x) as I've seen a lot of those? i think I have a strong grasp on many basic concepts but want to continue diving deeper as someone who isn't formally |
| 16:36:36 | <LemanR> | educated in CS |
| 16:37:04 | → | __monty__ joins (~toonn@user/toonn) |
| 16:37:29 | <geekosaur> | tbh my resource for that was this channel 🙂 |
| 16:37:43 | <hpc> | ^ |
| 16:37:48 | <hpc> | i would just hang out and google things |
| 16:38:19 | <hpc> | you'll occasionally find a fun rabbit hole to go down, and come out of it with more context for everything else |
| 16:38:47 | → | merijn joins (~merijn@86-86-29-250.fixed.kpn.net) |
| 16:39:21 | <hpc> | don't limit yourself to traditionally programming-y math either, there's some good stuff down the algebra rabbit hole too |
| 16:39:23 | <geekosaur> | (I'm pretty much completely self-educated; my formal education was a semester of engineering FORTRAN) |
| 16:39:27 | <hpc> | everything's connected in some way |
| 16:39:28 | <[exa]> | kuribas: there's only one scheme though |
| 16:39:36 | <[exa]> | it just happens to have 54272934857923487 implementations |
| 16:39:38 | <kuribas> | I am self-educated as well |
| 16:40:09 | <LemanR> | so pretty much the linux journey but for programming :P btw my system is something to brag about I must say. I've left 'btw...i use arch' meme in the dust years ago lol a truely meta system. |
| 16:40:41 | <LemanR> | but that would be for chat channel before I rant. |
| 16:40:55 | <LemanR> | *for a chat channel* |
| 16:40:57 | × | lortabac quits (~lortabac@2a01:e0a:541:b8f0:c8be:9533:986e:aefa) (Quit: WeeChat 2.8) |
| 16:41:05 | <[exa]> | I think arch rants are well accepted here |
| 16:41:09 | <mauke> | https://www.youtube.com/watch?v=H0Ek86IH-3Y |
| 16:41:35 | <[exa]> | given certain non-beneficial properties of ghc packaging there |
| 16:41:58 | <LemanR> | well my host system is actually gentoo and in this file system I mount a guest gentoo system or a debian. I haven't needed to add a arch system to this meta system yet but wouldn't be hard to. |
| 16:42:28 | <LemanR> | basically my own way of getting a bedrocks linux functionality. |
| 16:43:47 | <LemanR> | I'm lightly thinking about changing the host into a linux from scratch that specializes at just being a great host system but I can't seriously think about this until maybe summer. |
| 16:49:42 | <[exa]> | maybe try nix? |
| 16:50:05 | → | wroathe joins (~wroathe@207-153-38-140.fttp.usinternet.com) |
| 16:50:05 | × | wroathe quits (~wroathe@207-153-38-140.fttp.usinternet.com) (Changing host) |
| 16:50:05 | → | wroathe joins (~wroathe@user/wroathe) |
| 16:50:17 | × | zant quits (~zant@62.96.232.178) (Ping timeout: 265 seconds) |
| 16:52:53 | <hpc> | emphasis on "try", they've been improving how you interact with it but there's still a lot of inconsistency |
| 16:52:59 | <hpc> | it's kind of like learning the git cli, but moreso |
| 16:53:35 | × | srz quits (~srz@devil.dm.uba.ar) (Ping timeout: 264 seconds) |
| 16:53:51 | <LemanR> | not sure about nix but my last attempts at a nix system were fairly bad (but I was more novice then) |
| 16:53:56 | → | eggplantade joins (~Eggplanta@104-55-37-220.lightspeed.sntcca.sbcglobal.net) |
| 16:54:07 | × | fserucas quits (~fserucas@2001:818:e376:a400:fb92:70c1:dd88:c7d7) (Quit: Leaving) |
| 16:54:12 | <hpc> | (although nixos was also in the mix for me) |
| 16:54:23 | <hpc> | maybe standalone nix is better |
| 16:54:45 | <dsal> | nixos sometimes becomes gentoo when you get to rebuild the whole system to upgrade cat. |
| 16:54:50 | × | manwithluck quits (~manwithlu@194.177.28.176) (Read error: Connection reset by peer) |
| 16:55:10 | <dsal> | I've managed to avoid understanding nix for the most part, but I do like my nixos boxes. |
| 16:58:17 | → | manwithluck joins (~manwithlu@194.177.28.176) |
| 16:58:59 | × | raehik quits (~raehik@92.40.202.127.threembb.co.uk) (Ping timeout: 264 seconds) |
| 16:59:00 | × | eggplantade quits (~Eggplanta@104-55-37-220.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 268 seconds) |
| 16:59:51 | → | raehik joins (~raehik@92.40.202.121.threembb.co.uk) |
| 17:00:36 | <[exa]> | LemanR: ah no worries it was a random idea :] |
| 17:01:51 | AlexNoo_ | is now known as AlexNoo |
| 17:02:25 | → | sawilagar joins (~sawilagar@user/sawilagar) |
| 17:07:52 | → | [itchyjunk] joins (~itchyjunk@user/itchyjunk/x-7353470) |
| 17:11:35 | × | raehik quits (~raehik@92.40.202.121.threembb.co.uk) (Ping timeout: 264 seconds) |
| 17:13:29 | × | merijn quits (~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 265 seconds) |
| 17:13:52 | → | Tuplanolla joins (~Tuplanoll@91-159-68-152.elisa-laajakaista.fi) |
| 17:14:04 | ← | jakalx parts (~jakalx@base.jakalx.net) (Error from remote client) |
| 17:14:35 | × | gurkenglas quits (~gurkengla@p548ac72e.dip0.t-ipconnect.de) (Ping timeout: 264 seconds) |
| 17:19:09 | × | LemanR quits (~LemanR@pool-74-109-28-147.phlapa.fios.verizon.net) (Quit: Client closed) |
| 17:19:39 | → | gurkenglas joins (~gurkengla@p548ac72e.dip0.t-ipconnect.de) |
| 17:21:40 | → | acidjnk joins (~acidjnk@p200300d6e7137a87d85cd0c34b3d9cfa.dip0.t-ipconnect.de) |
| 17:22:08 | × | kuribas quits (~user@ptr-17d51emqj0opa703e0o.18120a2.ip6.access.telenet.be) (Quit: ERC (IRC client for Emacs 27.1)) |
| 17:22:15 | × | VOID418 quits (~user@89.151.44.90) (Remote host closed the connection) |
| 17:23:57 | → | jakalx joins (~jakalx@base.jakalx.net) |
| 17:24:47 | × | justsomeguy quits (~justsomeg@user/justsomeguy) (Ping timeout: 264 seconds) |
| 17:24:59 | × | tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 17:25:59 | × | gurkenglas quits (~gurkengla@p548ac72e.dip0.t-ipconnect.de) (Ping timeout: 264 seconds) |
| 17:30:42 | → | ub joins (~Thunderbi@77.119.195.101.wireless.dyn.drei.com) |
| 17:31:39 | → | money_ joins (~Gambino@user/polo) |
| 17:32:00 | × | akegalj quits (~akegalj@93-139-151-182.adsl.net.t-com.hr) (Quit: leaving) |
| 17:32:20 | × | ubert quits (~Thunderbi@77.119.213.106.wireless.dyn.drei.com) (Ping timeout: 265 seconds) |
| 17:32:20 | ub | is now known as ubert |
| 17:35:21 | × | heisenberg2 quits (~heisenber@2a09:bac1:3f60::16:19a) (Remote host closed the connection) |
| 17:35:53 | × | sawilagar quits (~sawilagar@user/sawilagar) (Read error: Connection reset by peer) |
| 17:36:28 | → | heisenberg2 joins (~heisenber@2a09:bac1:3f60::16:19a) |
| 17:36:57 | × | heisenberg2 quits (~heisenber@2a09:bac1:3f60::16:19a) (Remote host closed the connection) |
| 17:37:49 | money_ | is now known as polo |
| 17:38:02 | polo | is now known as money_ |
| 17:38:14 | money_ | is now known as polo |
| 17:38:22 | → | waleee joins (~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340) |
| 17:38:38 | polo | is now known as money_ |
| 17:39:12 | money_ | is now known as polo |
| 17:39:30 | <[exa]> | Is there a name for a monoid like [Maybe a] where a single Nothing in the list turns everything into Nothing? i.e., if mconcat==sequence, what would be mappend? |
| 17:39:32 | → | coot joins (~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba) |
| 17:39:48 | → | tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
| 17:41:33 | <[exa]> | (actually a semigroup would be sufficient) |
| 17:46:44 | <[exa]> | ah nice it's actually `Ap Maybe [a]` |
| 17:48:12 | × | notzmv quits (~zmv@user/notzmv) (Ping timeout: 256 seconds) |
| 17:50:01 | → | merijn joins (~merijn@86-86-29-250.fixed.kpn.net) |
| 17:50:02 | × | tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 17:52:27 | × | polo quits (~Gambino@user/polo) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
| 17:55:03 | × | merijn quits (~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 265 seconds) |
| 17:56:17 | → | money_ joins (~Gambino@user/polo) |
| 17:57:20 | × | azimut quits (~azimut@gateway/tor-sasl/azimut) (Ping timeout: 255 seconds) |
| 17:58:17 | → | azimut joins (~azimut@gateway/tor-sasl/azimut) |
| 17:58:31 | ← | jakalx parts (~jakalx@base.jakalx.net) (Error from remote client) |
| 17:59:13 | <bjourne> | [exa]: short-circuiting |
| 18:02:58 | → | eggplantade joins (~Eggplanta@2600:1700:38c5:d800:1933:e30c:90a:59fd) |
| 18:05:10 | → | jakalx joins (~jakalx@base.jakalx.net) |
| 18:16:45 | → | mei joins (~mei@user/mei) |
| 18:17:13 | → | gurkenglas joins (~gurkengla@p548ac72e.dip0.t-ipconnect.de) |
| 18:18:05 | → | merijn joins (~merijn@86-86-29-250.fixed.kpn.net) |
| 18:18:26 | → | tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
| 18:21:38 | × | beteigeuze quits (~Thunderbi@a79-169-109-107.cpe.netcabo.pt) (Quit: beteigeuze) |
| 18:21:47 | → | beteigeuze1 joins (~Thunderbi@a79-169-109-107.cpe.netcabo.pt) |
| 18:24:20 | → | tzh joins (~tzh@c-24-21-73-154.hsd1.wa.comcast.net) |
| 18:26:19 | → | zebrag joins (~chris@user/zebrag) |
| 18:26:35 | × | beteigeuze1 quits (~Thunderbi@a79-169-109-107.cpe.netcabo.pt) (Ping timeout: 264 seconds) |
| 18:29:28 | × | chexum quits (~quassel@gateway/tor-sasl/chexum) (Remote host closed the connection) |
| 18:29:50 | → | chexum joins (~quassel@gateway/tor-sasl/chexum) |
| 18:30:06 | <dminuoso> | bjourne: not sure what kind of generalization you expect. |
| 18:30:23 | <dminuoso> | bjourne: A different approoach would be to wrap more in IO and use IO exceptions. |
| 18:30:31 | <dminuoso> | That's way less general, but potentially more ergonomic. |
| 18:30:34 | × | tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 18:32:08 | → | k` joins (~user@2605:a601:a60d:5400:4e:d060:14f9:8a36) |
| 18:32:43 | <k`> | Is it possible to force GHC to resolve duplicate overlappable instances by choosing one arbitrarily? |
| 18:33:52 | <geekosaur> | I think the implementation forbids that situation (the instances would resolve to the same symbol at link time) |
| 18:33:54 | <dminuoso> | Yes, its called IncoherentInstances |
| 18:34:20 | <geekosaur> | oh, really? I thought exact duplicates were pretty much impossible even with Incoherent |
| 18:34:46 | <dminuoso> | Mmm, maybe I misinterpreted their use of the word "duplicate" |
| 18:34:52 | <geekosaur> | since instances are global they map to global symbols and you can't have more than one |
| 18:35:13 | <dminuoso> | Interestingly IncoherentInstances is deprecated anyway |
| 18:35:24 | <dminuoso> | Ah beacuse you can mark INCOHERENT per instance as wel |
| 18:35:40 | <dminuoso> | Okay did not know that, but then again I have not yet properly understood why INCOHERENT would be useful at all |
| 18:36:42 | <geekosaur> | I guess we need to know more, but the short version is that if INCOHERENT doesn't allow it then you would need two distinct global symbols with the same name for it to work |
| 18:37:24 | <k`> | If they map to global symbols and you can't have more than one, what happens when an instances in one dependency of a package explicitly overlaps an instance in another dependency? |
| 18:39:37 | <geekosaur> | the instances are exposed in the package .hi files, so the compiler will know and report an error |
| 18:40:04 | <geekosaur> | if it's an exact overlap |
| 18:40:45 | <geekosaur> | most overlaps are like one is for Foo a and the other is for Foo Char or something like that. if you have two instances for Foo a, there's no way to do it |
| 18:41:06 | × | zmt00 quits (~zmt00@user/zmt00) (Quit: Leaving) |
| 18:41:39 | <k`> | Like if I had an instance `Show a => Show (Foo a)` in package foo, and then an OVERLAPPING instance `Show (Foo Text)` in another package, compilation would fail? |
| 18:42:12 | → | tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
| 18:42:12 | <geekosaur> | that's not exact |
| 18:42:23 | <geekosaur> | Foo a is not Foo Text |
| 18:43:37 | <k`> | So if I had an OVERLAPPABLE instance `Applicative m => Functor m` in one package and an OVERLAPPABLE instance `Traversable m => Functor m` in another, I'd be screwed? |
| 18:43:58 | <geekosaur> | both would map to Functor m, yes |
| 18:44:21 | <k`> | OK, that makes sense. Thanks! |
| 18:44:34 | <geekosaur> | the constraint can only be discharged when the use site is compiled, not the instance declaration, so it is ignored until the use site |
| 18:45:49 | <k`> | Seems like if it were possible it could easily be leveraged to get automatic superclass instances, but since the context isn't part of the instance it's not possible. |
| 18:46:56 | → | zmt00 joins (~zmt00@user/zmt00) |
| 18:48:03 | → | emmanuelux joins (~emmanuelu@user/emmanuelux) |
| 18:49:40 | × | merijn quits (~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 265 seconds) |
| 18:49:56 | → | nate4 joins (~nate@98.45.169.16) |
| 18:51:42 | → | turlando joins (~turlando@user/turlando) |
| 18:54:59 | × | nate4 quits (~nate@98.45.169.16) (Ping timeout: 265 seconds) |
| 18:59:28 | × | tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 19:02:24 | × | jonathanx quits (~jonathan@h-98-128-168-222.NA.cust.bahnhof.se) (Remote host closed the connection) |
| 19:03:52 | ← | jakalx parts (~jakalx@base.jakalx.net) (Error from remote client) |
| 19:04:25 | × | money_ quits (~Gambino@user/polo) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
| 19:07:02 | → | jakalx joins (~jakalx@base.jakalx.net) |
| 19:19:23 | × | manwithluck quits (~manwithlu@194.177.28.176) (Read error: Connection reset by peer) |
| 19:20:14 | → | tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
| 19:21:57 | × | chele quits (~chele@user/chele) (Remote host closed the connection) |
| 19:22:23 | × | zeenk quits (~zeenk@2a02:2f04:a208:3600::7fe) (Quit: Konversation terminated!) |
| 19:22:51 | → | manwithluck joins (~manwithlu@194.177.28.176) |
| 19:28:23 | × | k` quits (~user@2605:a601:a60d:5400:4e:d060:14f9:8a36) (Ping timeout: 260 seconds) |
| 19:30:11 | → | jonathanx joins (~jonathan@h-178-174-176-109.A357.priv.bahnhof.se) |
| 19:30:11 | × | opticblast quits (~Thunderbi@172.58.87.196) (Ping timeout: 264 seconds) |
| 19:30:42 | → | oblivious joins (~oblivious@150.187.35.37.dynamic.jazztel.es) |
| 19:31:29 | × | oblivious quits (~oblivious@150.187.35.37.dynamic.jazztel.es) (Client Quit) |
| 19:33:40 | → | Lycurgus joins (~juan@user/Lycurgus) |
| 19:36:06 | → | acidjnk_new joins (~acidjnk@p200300d6e7137a87dd877e6fe5567bfb.dip0.t-ipconnect.de) |
| 19:36:16 | × | Lycurgus quits (~juan@user/Lycurgus) (Client Quit) |
| 19:37:02 | × | Major_Biscuit quits (~MajorBisc@86-88-79-148.fixed.kpn.net) (Ping timeout: 265 seconds) |
| 19:37:43 | × | wroathe quits (~wroathe@user/wroathe) (Ping timeout: 260 seconds) |
| 19:39:50 | × | acidjnk quits (~acidjnk@p200300d6e7137a87d85cd0c34b3d9cfa.dip0.t-ipconnect.de) (Ping timeout: 256 seconds) |
| 19:40:31 | × | tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 19:40:54 | → | earthy joins (~arthurvl@2a02-a469-f5e2-1-ba27-ebff-fea0-40b0.fixed6.kpn.net) |
| 19:41:32 | × | chromoblob quits (~user@37.113.164.122) (Read error: Connection reset by peer) |
| 19:42:52 | → | srz joins (~srz@devil.dm.uba.ar) |
| 19:46:16 | → | merijn joins (~merijn@86-86-29-250.fixed.kpn.net) |
| 19:47:11 | → | tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
| 19:47:46 | → | wroathe joins (~wroathe@207-153-38-140.fttp.usinternet.com) |
| 19:47:46 | × | wroathe quits (~wroathe@207-153-38-140.fttp.usinternet.com) (Changing host) |
| 19:47:46 | → | wroathe joins (~wroathe@user/wroathe) |
| 19:56:18 | × | coot quits (~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba) (Quit: coot) |
| 19:57:05 | → | notzmv joins (~zmv@user/notzmv) |
| 20:01:33 | × | sammelweis_ quits (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Quit: No Ping reply in 180 seconds.) |
| 20:02:40 | → | sammelweis_ joins (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) |
| 20:04:53 | × | tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 20:09:46 | → | lortabac joins (~lortabac@2a01:e0a:541:b8f0:16ed:9a5e:a354:e244) |
| 20:09:54 | → | tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
| 20:18:48 | → | k` joins (~user@2605:a601:a60d:5400:4e:d060:14f9:8a36) |
| 20:19:01 | → | k`` joins (~user@136.56.140.2) |
| 20:21:11 | × | merijn quits (~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 264 seconds) |
| 20:21:44 | × | eggplantade quits (~Eggplanta@2600:1700:38c5:d800:1933:e30c:90a:59fd) (Remote host closed the connection) |
| 20:22:41 | → | eggplantade joins (~Eggplanta@2600:1700:38c5:d800:926:4196:430e:b1cd) |
| 20:23:13 | × | k` quits (~user@2605:a601:a60d:5400:4e:d060:14f9:8a36) (Ping timeout: 260 seconds) |
| 20:27:27 | → | gmg joins (~user@user/gehmehgeh) |
| 20:31:02 | → | coot joins (~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba) |
| 20:31:25 | → | libertyprime joins (~libertypr@118-92-78-165.dsl.dyn.ihug.co.nz) |
| 20:45:28 | × | jinsun quits (~jinsun@user/jinsun) (Read error: Connection reset by peer) |
| 20:52:48 | × | coot quits (~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba) (Quit: coot) |
| 20:53:31 | → | caryhartline joins (~caryhartl@2600:1700:2d0:8d30:3991:2946:3701:6725) |
| 20:55:52 | × | libertyprime quits (~libertypr@118-92-78-165.dsl.dyn.ihug.co.nz) (Quit: leaving) |
| 20:56:31 | → | pavonia joins (~user@user/siracusa) |
| 20:57:08 | → | ruschlem joins (~Android@p200300ee372ac1477c4161fffecd866b.dip0.t-ipconnect.de) |
| 20:57:43 | → | merijn joins (~merijn@86-86-29-250.fixed.kpn.net) |
| 21:00:46 | → | Sgeo joins (~Sgeo@user/sgeo) |
| 21:02:35 | × | merijn quits (~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 265 seconds) |
| 21:05:20 | × | mei quits (~mei@user/mei) (Ping timeout: 260 seconds) |
| 21:05:51 | ← | ruschlem parts (~Android@p200300ee372ac1477c4161fffecd866b.dip0.t-ipconnect.de) () |
| 21:09:36 | × | lortabac quits (~lortabac@2a01:e0a:541:b8f0:16ed:9a5e:a354:e244) (Quit: WeeChat 2.8) |
| 21:11:05 | × | santiagopim quits (~user@90.167.66.131) (Remote host closed the connection) |
| 21:21:54 | ← | L29Ah parts (~L29Ah@wikipedia/L29Ah) () |
| 21:22:11 | → | L29Ah joins (~L29Ah@wikipedia/L29Ah) |
| 21:25:28 | → | Guest33 joins (~Guest33@5.151.185.123) |
| 21:26:16 | Guest33 | is now known as Lvk22 |
| 21:30:15 | × | Lvk22 quits (~Guest33@5.151.185.123) (Client Quit) |
| 21:43:14 | × | gmg quits (~user@user/gehmehgeh) (Ping timeout: 255 seconds) |
| 21:45:55 | → | gmg joins (~user@user/gehmehgeh) |
| 21:45:58 | → | merijn joins (~merijn@86-86-29-250.fixed.kpn.net) |
| 21:47:56 | → | coot joins (~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba) |
| 22:01:08 | → | sagax joins (~sagax_nb@user/sagax) |
| 22:04:27 | × | wroathe quits (~wroathe@user/wroathe) (Ping timeout: 265 seconds) |
| 22:18:00 | → | jmdaemon joins (~jmdaemon@user/jmdaemon) |
| 22:18:47 | × | merijn quits (~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 264 seconds) |
| 22:26:01 | × | srz quits (~srz@devil.dm.uba.ar) (Remote host closed the connection) |
| 22:26:36 | → | Erutuon joins (~Erutuon@user/erutuon) |
| 22:37:49 | → | zant joins (~zant@62.214.20.26) |
| 22:39:48 | → | merijn joins (~merijn@86-86-29-250.fixed.kpn.net) |
| 22:41:55 | × | takuan quits (~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection) |
| 22:43:46 | → | beteigeuze joins (~Thunderbi@bl14-81-220.dsl.telepac.pt) |
| 22:45:11 | × | merijn quits (~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 264 seconds) |
| 22:45:30 | × | tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 22:46:42 | × | coot quits (~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba) (Quit: coot) |
| 22:51:32 | → | nate4 joins (~nate@98.45.169.16) |
| 22:56:35 | × | nate4 quits (~nate@98.45.169.16) (Ping timeout: 264 seconds) |
| 22:57:19 | × | TonyStone quits (~TonyStone@cpe-74-76-57-186.nycap.res.rr.com) (Remote host closed the connection) |
| 22:58:13 | → | troydm joins (~troydm@host-176-37-124-197.b025.la.net.ua) |
| 22:59:12 | → | TonyStone joins (~TonyStone@cpe-74-76-57-186.nycap.res.rr.com) |
| 23:01:36 | → | zeenk joins (~zeenk@2a02:2f04:a208:3600::7fe) |
| 23:01:46 | × | michalz quits (~michalz@185.246.207.197) (Remote host closed the connection) |
| 23:05:58 | → | offtherock joins (~blurb@96.45.2.121) |
| 23:06:02 | × | rburkholder quits (~blurb@96.45.2.121) (Remote host closed the connection) |
| 23:06:19 | × | pavonia quits (~user@user/siracusa) (Ping timeout: 265 seconds) |
| 23:07:29 | × | chexum quits (~quassel@gateway/tor-sasl/chexum) (Quit: No Ping reply in 180 seconds.) |
| 23:07:44 | × | bgs quits (~bgs@212-85-160-171.dynamic.telemach.net) (Remote host closed the connection) |
| 23:08:00 | × | erisco quits (~erisco@d24-141-66-165.home.cgocable.net) (Quit: ZNC 1.8.2+cygwin2 - https://znc.in) |
| 23:08:48 | → | erisco joins (~erisco@d24-141-66-165.home.cgocable.net) |
| 23:09:02 | → | chexum joins (~quassel@gateway/tor-sasl/chexum) |
| 23:10:21 | × | erisco quits (~erisco@d24-141-66-165.home.cgocable.net) (Client Quit) |
| 23:10:29 | → | pavonia joins (~user@user/siracusa) |
| 23:15:30 | × | __monty__ quits (~toonn@user/toonn) (Quit: leaving) |
| 23:15:49 | → | elevenkb joins (~elevenkb@105.184.125.168) |
| 23:17:16 | → | tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
| 23:20:24 | → | OscarZ joins (~oscarz@95.175.104.88) |
| 23:21:42 | × | elevenkb quits (~elevenkb@105.184.125.168) (Remote host closed the connection) |
| 23:23:54 | <Unhammer> | https://ihp.digitallyinduced.com/api-docs/IHP-QueryBuilder.html#v:filterWhereNot i want a version of this where i require value to be 'Maybe a', i tried adding ', value ~ Maybe a' but then ghc just started blathering incoherently |
| 23:24:31 | <Unhammer> | Hm can i do something like |
| 23:24:42 | <Unhammer> | HasField name model value@(Maybe a) |
| 23:25:02 | → | Major_Biscuit joins (~MajorBisc@2a02-a461-129d-1-193d-75d8-745d-e91e.fixed6.kpn.net) |
| 23:29:31 | × | Major_Biscuit quits (~MajorBisc@2a02-a461-129d-1-193d-75d8-745d-e91e.fixed6.kpn.net) (Ping timeout: 265 seconds) |
| 23:29:35 | × | gurkenglas quits (~gurkengla@p548ac72e.dip0.t-ipconnect.de) (Ping timeout: 264 seconds) |
| 23:31:46 | × | gmg quits (~user@user/gehmehgeh) (Quit: Leaving) |
| 23:35:13 | → | Inst joins (~Inst@2601:6c4:4081:54f0:3c44:89c8:38b2:5760) |
| 23:39:27 | × | Sgeo quits (~Sgeo@user/sgeo) (Read error: Connection reset by peer) |
| 23:40:14 | → | tvandinther joins (~tvandinth@101.98.118.246) |
| 23:40:27 | → | mvk joins (~mvk@2607:fea8:5ce3:8500::efb) |
| 23:40:33 | × | mvk quits (~mvk@2607:fea8:5ce3:8500::efb) (Client Quit) |
| 23:42:43 | × | werneta quits (~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net) (Ping timeout: 260 seconds) |
| 23:43:05 | × | zeenk quits (~zeenk@2a02:2f04:a208:3600::7fe) (Quit: Konversation terminated!) |
| 23:45:54 | × | bitdex quits (~bitdex@gateway/tor-sasl/bitdex) (Remote host closed the connection) |
| 23:47:45 | → | bitdex joins (~bitdex@gateway/tor-sasl/bitdex) |
| 23:47:46 | × | Vajb quits (~Vajb@2001:999:504:3ad6:52a4:a3b5:32d8:e74d) (Read error: Connection reset by peer) |
| 23:48:17 | → | Vajb joins (~Vajb@hag-jnsbng11-58c3a5-27.dhcp.inet.fi) |
| 23:50:35 | × | euandreh quits (~Thunderbi@179.214.113.107) (Ping timeout: 264 seconds) |
| 23:52:57 | × | eggplantade quits (~Eggplanta@2600:1700:38c5:d800:926:4196:430e:b1cd) (Remote host closed the connection) |
| 23:53:12 | × | acidjnk_new quits (~acidjnk@p200300d6e7137a87dd877e6fe5567bfb.dip0.t-ipconnect.de) (Ping timeout: 265 seconds) |
| 23:54:13 | × | Vajb quits (~Vajb@hag-jnsbng11-58c3a5-27.dhcp.inet.fi) (Read error: Connection reset by peer) |
| 23:54:19 | <tvandinther> | I'm trying to set up a new project with stack and ghcup and I'm having an incredibly difficult time. First issue is I'm not sure which version of GHC I should use for HLS support. I've tried matching things up with ghcup but then I get issues either building the project or starting the language server. |
| 23:54:27 | → | werneta joins (~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net) |
| 23:54:54 | <tvandinther> | And when I set the ghc resolver with stack, it is no longer able to resolve dependencies for building |
| 23:55:50 | → | Sgeo joins (~Sgeo@user/sgeo) |
| 23:57:48 | → | Vajb joins (~Vajb@2001:999:504:3ad6:52a4:a3b5:32d8:e74d) |
All times are in UTC on 2022-11-25.