2022-11-25 00:03:23 +0100 | merijn | (~merijn@86.86.29.250) (Ping timeout: 260 seconds) |
2022-11-25 00:07:55 +0100 | gurkenglas | (~gurkengla@p548ac72e.dip0.t-ipconnect.de) (Ping timeout: 265 seconds) |
2022-11-25 00:20:19 +0100 | VOID404 | (~VOID404@89.151.44.90) |
2022-11-25 00:20:32 +0100 | chexum | (~quassel@gateway/tor-sasl/chexum) (Remote host closed the connection) |
2022-11-25 00:21:19 +0100 | chexum | (~quassel@gateway/tor-sasl/chexum) |
2022-11-25 00:23:46 +0100 | coot | (~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba) |
2022-11-25 00:26:19 +0100 | <VOID404> | Fellas, I have a question. I wanted to write a class and implement it, but some ways of implementing the functionality has IO in the process, which means that I will get the result with IO, which won't fulfill the class constraints. How can I design the class and implementation to accept both IO result and regular result? Is there a nice solution |
2022-11-25 00:26:20 +0100 | <VOID404> | for that? Is this a beginner question? :P |
2022-11-25 00:27:50 +0100 | <monochrom> | Designing your own class is never a beginner question. |
2022-11-25 00:28:00 +0100 | <VOID404> | damn it :/ |
2022-11-25 00:28:40 +0100 | <monochrom> | Even the very decision "I think a type class makes sense" is not a beginner's decision. |
2022-11-25 00:28:47 +0100 | <geekosaur> | haskell is not oop, do not try to approach it that way |
2022-11-25 00:28:54 +0100 | <monochrom> | Namely, a beginner always makes the wrong decision on this. |
2022-11-25 00:29:03 +0100 | <monochrom> | Yeah, because of that. |
2022-11-25 00:29:22 +0100 | <loonycyborg> | type class is closer to c++ template than to c++ class |
2022-11-25 00:29:40 +0100 | <monochrom> | No, to C++ concepts. |
2022-11-25 00:30:01 +0100 | <loonycyborg> | Yes, basically that |
2022-11-25 00:30:23 +0100 | <loonycyborg> | without concepts C++ templates have lot less strict "type" checking :P |
2022-11-25 00:30:43 +0100 | opticblast | (~Thunderbi@172.58.87.196) |
2022-11-25 00:30:48 +0100 | Guest75 | (~Guest75@178.141.145.247) (Ping timeout: 260 seconds) |
2022-11-25 00:31:18 +0100 | coot | (~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba) (Quit: coot) |
2022-11-25 00:32:23 +0100 | <Axman6> | VOID404: can you give us some more information about what you are actually trying to do? Your question is very vague and the specifics will affect the answers a lot |
2022-11-25 00:32:32 +0100 | <VOID404> | I have a simulation with a bot. I want to generalise a bot with state. I thought I'd make a class, that does the simulated step on the bot state and simulation state, returning bots action. This way I can swap out bots easily and they can be managed by the simulation |
2022-11-25 00:32:40 +0100 | coot | (~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba) |
2022-11-25 00:32:50 +0100 | <VOID404> | In simple cases, with bot state and simulation state as input, I can get bot action - easy |
2022-11-25 00:33:28 +0100 | <VOID404> | But I want to be able to wrap an external implementation and communicate with it through stdin/stdout, which gives me the result wrapped in IO |
2022-11-25 00:33:28 +0100 | <Axman6> | sounds very much like a monadic type class, but more details would be helpful |
2022-11-25 00:34:18 +0100 | acidjnk | (~acidjnk@p200300d6e7137a67f01158a637cc3bb0.dip0.t-ipconnect.de) (Ping timeout: 260 seconds) |
2022-11-25 00:36:10 +0100 | <VOID404> | I'd be happy to read whatever y'all would recommend me to learn how to design it better, if what I said makes no sense :P |
2022-11-25 00:37:11 +0100 | coot | (~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba) (Client Quit) |
2022-11-25 00:37:46 +0100 | <VOID404> | I also didn't know how to handle initialization data, but that's a separate problem. I did "builder class" which is probably a terrible way of doing it, but at least it works until I figure out what the haskelish way of doing it is |
2022-11-25 00:39:08 +0100 | <VOID404> | class BotBuilder a b where |
2022-11-25 00:39:09 +0100 | <VOID404> | init :: (Bot b) => a -> InitInput -> b |
2022-11-25 00:39:09 +0100 | <VOID404> | class Bot a where |
2022-11-25 00:39:10 +0100 | <VOID404> | run :: a -> TurnInput -> BotOutput |
2022-11-25 00:39:29 +0100 | <Axman6> | it's not particularly clear to me, not sure about others. my first instinct is to define a type class for a monadic interface: class MonadSim m where getState :: m SimState; doThing :: Arg -> m ThingResult |
2022-11-25 00:39:58 +0100 | <VOID404> | Ok, but then what about implementations not requiring a monad? |
2022-11-25 00:40:21 +0100 | <Axman6> | then you can have instances for which ever monads are appropriate, whether they're pure or have IO underneath |
2022-11-25 00:40:37 +0100 | <Axman6> | just require a monad |
2022-11-25 00:41:44 +0100 | <oak-> | Also maybe a good starting point would be to start reading about different ways to design a Haskell program? |
2022-11-25 00:42:00 +0100 | <Axman6> | generally if you're talking about simulating something, you're talking about sequencing events, which is basically what monads are used for |
2022-11-25 00:42:19 +0100 | <VOID404> | I am not used to declarative structures yet :/ |
2022-11-25 00:42:45 +0100 | <Axman6> | I don't know what "declarative structures" is |
2022-11-25 00:43:05 +0100 | <VOID404> | I mean Monad, Functors etc |
2022-11-25 00:43:23 +0100 | <VOID404> | I wrote functional code in multi-paradigm languages, but I've never seen a language with stuff like IO represented like in haskell |
2022-11-25 00:43:32 +0100 | <monochrom> | I have never read any material on "how to design generalizations". I don't know of any anyway. How I learned to desgin generalizations: I start with not wanting to generalize. Just write out all the examples I want, low-tech, KISS. Then compare them and do refactoring. If I suspect that I am not seeing a good refactoring, I may ask others. |
2022-11-25 00:43:33 +0100 | <int-e> | Those two classes simplify to type BotBuilder = InitInput -> Bot; type Bot = TurnInput -> BotOutput |
2022-11-25 00:43:37 +0100 | <Axman6> | Time to start learning then :) |
2022-11-25 00:45:49 +0100 | <int-e> | Which is okay as long as bots don't have any internal state... |
2022-11-25 00:46:36 +0100 | <VOID404> | They *might* have, that's why I thought classes are the way to go |
2022-11-25 00:46:36 +0100 | <VOID404> | And if I wanna wrap external implementations, then handles are the state |
2022-11-25 00:47:09 +0100 | <VOID404> | Wait, they don't have to be, because they don't change |
2022-11-25 00:47:13 +0100 | <VOID404> | do they |
2022-11-25 00:47:13 +0100 | <monochrom> | "type BotBuilder = InitInput -> Bot; type Bot = TurnInput -> BotOutput" on steroid: https://www.slideshare.net/ScottWlaschin/fp-patterns-buildstufflt slide 13 |
2022-11-25 00:49:25 +0100 | <VOID404> | But BotOutput sometimes requires IO. So I guess the way to go is just wrap everything in monads, and use pure when not needed? |
2022-11-25 00:49:28 +0100 | <oak-> | typeclasses don't actually have anything to do with mutable state, in the object-oriented programming sense |
2022-11-25 00:49:58 +0100 | VOID404 | (~VOID404@89.151.44.90) (Quit: Client closed) |
2022-11-25 00:50:15 +0100 | VOID404 | (~VOID404@89.151.44.90) |
2022-11-25 00:50:21 +0100 | <int-e> | You can add in state by letting the step function return a new Bot: data Bot = Bot (TurnInput -> (Bot, BotOutput)) ...the state will be captured by the function, you don't have to make it explicit. |
2022-11-25 00:50:37 +0100 | <int-e> | (I have not checked whether monochrom's link is doing that or something else) |
2022-11-25 00:51:16 +0100 | <monochrom> | My link (and if you go to slide 13) just says: functions, functions, functions again, did I say functions? functions. |
2022-11-25 00:51:17 +0100 | <VOID404> | Is returning function cleaner than state with class?.. |
2022-11-25 00:51:30 +0100 | <int-e> | monochrom: I'll take that as a yes. |
2022-11-25 00:51:48 +0100 | <Axman6> | Just as a general piece of advice, if tyou are new to Haskell, a type class is almost never going to be the right tool for you |
2022-11-25 00:52:10 +0100 | <monochrom> | But I guess the whole talk is of value about designs in FP. |
2022-11-25 00:52:16 +0100 | <monochrom> | or at least in Haskell. |
2022-11-25 00:52:27 +0100 | <Axman6> | like monochrom said, write the concrete code, keep the implementations separate, then you can think about how you abstract the common parts |
2022-11-25 00:52:44 +0100 | caryhartline | (~caryhartl@2600:1700:2d0:8d30:ec42:d12f:7ae6:7310) (Quit: caryhartline) |
2022-11-25 00:53:21 +0100 | VOID404 | (~VOID404@89.151.44.90) (Client Quit) |
2022-11-25 00:53:42 +0100 | VOID404 | (~VOID404@89.151.44.90) |
2022-11-25 00:53:50 +0100 | <VOID404> | I shall stick to just functions then for now, thx <3 |
2022-11-25 00:54:14 +0100 | <VOID404> | I'll try to read something about functional design I guess |
2022-11-25 00:54:47 +0100 | <oak-> | If I understood the problem correclty, I'd start by doing simple IO main loop, which will read input from stdin, parse it, process the simulation based on the parsed input, print the result, then read input again ... |
2022-11-25 00:55:09 +0100 | <oak-> | if the point is to make some kind of "prompt" |
2022-11-25 00:55:17 +0100 | king_gs | (~Thunderbi@2806:103e:29:bfeb:c988:bbd5:2586:4924) (Ping timeout: 265 seconds) |
2022-11-25 00:55:29 +0100 | <VOID404> | the thing is that some Bots require IO and some don't |
2022-11-25 00:56:10 +0100 | <VOID404> | I don't want to needlessly complicate the simpler Bots, but the result from IO bot has a result inside of the IO |
2022-11-25 00:56:17 +0100 | <VOID404> | that's my main problem |
2022-11-25 00:56:26 +0100 | <VOID404> | It is the same kind of operation, it's just the damn IO |
2022-11-25 00:56:36 +0100 | <VOID404> | So I guess I wrap the result from simple in pure |
2022-11-25 00:56:54 +0100 | <VOID404> | and I have to complicate it like that |
2022-11-25 00:57:03 +0100 | chromoblob | (~user@37.113.164.122) (Ping timeout: 260 seconds) |
2022-11-25 00:57:26 +0100 | <int-e> | type IOBot = TurnInput -> IO BotOutput; botToIOBot bot turn = pure (bot turn) |
2022-11-25 00:57:27 +0100 | VOID404 | (~VOID404@89.151.44.90) (Client Quit) |
2022-11-25 00:57:45 +0100 | VOID404 | (~VOID404@89.151.44.90) |
2022-11-25 00:57:59 +0100 | <int-e> | :t state |
2022-11-25 00:58:00 +0100 | <lambdabot> | MonadState s m => (s -> (a, s)) -> m a |
2022-11-25 00:58:35 +0100 | <int-e> | :t StateT |
2022-11-25 00:58:36 +0100 | <lambdabot> | (s -> m (a, s)) -> StateT s m a |
2022-11-25 00:58:50 +0100 | void_ | (~void@89.151.44.90) |
2022-11-25 00:59:21 +0100 | merijn | (~merijn@86-86-29-250.fixed.kpn.net) |
2022-11-25 00:59:32 +0100 | <int-e> | There's a vague connection here, in that `state` lifts the "simple" version of the state monad to the transformer version (and, well, whatever other implementatioins MonadState has...) |
2022-11-25 01:00:57 +0100 | Guest55 | (~Guest55@p200300ef9716451373d1c50d5ff22e08.dip0.t-ipconnect.de) |
2022-11-25 01:02:32 +0100 | <VOID404> | I feel like I though I get monads more than I actually do XD |
2022-11-25 01:02:33 +0100 | <VOID404> | Guess I am off to read some theory |
2022-11-25 01:02:33 +0100 | <VOID404> | Thanks for again for help |
2022-11-25 01:03:39 +0100 | void | (~user@89.151.44.90) |
2022-11-25 01:03:50 +0100 | void | (~user@89.151.44.90) (Client Quit) |
2022-11-25 01:03:52 +0100 | <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" . |
2022-11-25 01:04:20 +0100 | <Guest55> | I tried left :: BinTree N a -> (forall i. BinTree i a) but that doesn't work either. |
2022-11-25 01:04:28 +0100 | merijn | (~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 265 seconds) |
2022-11-25 01:04:28 +0100 | VOID418 | (~user@89.151.44.90) |
2022-11-25 01:04:44 +0100 | <Guest55> | How can I do this? |
2022-11-25 01:05:57 +0100 | VOID404 | (~VOID404@89.151.44.90) (Quit: Client closed) |
2022-11-25 01:06:12 +0100 | <int-e> | hmm |
2022-11-25 01:06:38 +0100 | <oak-> | I'd say best way to learn Mondas is to get your hands dirty with them |
2022-11-25 01:06:42 +0100 | <int-e> | is that Node :: a -> BinTree i a -> BinTree i a -> BinTree N a? |
2022-11-25 01:07:00 +0100 | <int-e> | Because otherwise the only inhabited type here is BinTree E a |
2022-11-25 01:07:22 +0100 | <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. |
2022-11-25 01:07:53 +0100 | <int-e> | Guest55: There's a CPS trick for such scenarios, left :: BinTree N a -> (forall i. BinTree i a -> r) -> r |
2022-11-25 01:08:51 +0100 | <int-e> | But honestly, I don't think this 'i' buys you much, and you'll live more happily without it. |
2022-11-25 01:09:36 +0100 | <int-e> | Of course that's without knowing the motivation so I may be wrong. |
2022-11-25 01:10:08 +0100 | <Guest55> | int-e: yes, it should be Node :: ... -> BinTree N a |
2022-11-25 01:10:14 +0100 | kenaryn | (~aurele@cre71-h03-89-88-44-27.dsl.sta.abo.bbox.fr) |
2022-11-25 01:10:24 +0100 | <int-e> | :t runST |
2022-11-25 01:10:25 +0100 | <lambdabot> | (forall s. ST s a) -> a |
2022-11-25 01:12:22 +0100 | <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 ) |
2022-11-25 01:12:22 +0100 | <Guest55> | monochrom: That's why I tried BinTree N a -> (forall i. BinTree i a) so that I, the implementer, can choose i |
2022-11-25 01:12:41 +0100 | <int-e> | Guest55: but that means the caller chooses i. |
2022-11-25 01:13:26 +0100 | <Guest55> | Isn't it up to the implementer to choose i if I have a "nested" forall? |
2022-11-25 01:13:32 +0100 | <Axman6> | BinTree N a -> (forall i. BinTree i a -> r) -> r should work, right? |
2022-11-25 01:14:07 +0100 | <int-e> | Guest55: No. You have id :: forall a. a -> a; the caller of id picks the actual type a. |
2022-11-25 01:14:31 +0100 | <Guest55> | Is that because the forall is not to the left of an arrow? |
2022-11-25 01:15:46 +0100 | <int-e> | No. |
2022-11-25 01:16:17 +0100 | <Guest55> | So I have 2 choices, use a wrapper type to make it an existential type or use CPS? |
2022-11-25 01:16:49 +0100 | <int-e> | The CPS trick works because it makes your function the caller of the callback. |
2022-11-25 01:17:12 +0100 | <int-e> | Those are the two ways I know of. |
2022-11-25 01:17:59 +0100 | kenaryn | (~aurele@cre71-h03-89-88-44-27.dsl.sta.abo.bbox.fr) (Quit: leaving) |
2022-11-25 01:18:27 +0100 | <Guest55> | Type checker is happy with the CPS trick. Thank you. |
2022-11-25 01:19:01 +0100 | Achylles | (~Achylles_@2804:431:d724:a09c:67a2:eda9:70f0:1a66) |
2022-11-25 01:19:56 +0100 | Patternm1ster | (~georg@li1192-118.members.linode.com) (Quit: leaving) |
2022-11-25 01:20:11 +0100 | Patternmaster | (~georg@li1192-118.members.linode.com) |
2022-11-25 01:20:11 +0100 | Patternmaster | (~georg@li1192-118.members.linode.com) (Changing host) |
2022-11-25 01:20:11 +0100 | Patternmaster | (~georg@user/Patternmaster) |
2022-11-25 01:23:23 +0100 | sammelweis | (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Quit: No Ping reply in 180 seconds.) |
2022-11-25 01:24:29 +0100 | sammelweis | (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) |
2022-11-25 01:26:42 +0100 | void_ | (~void@89.151.44.90) (Ping timeout: 265 seconds) |
2022-11-25 01:26:48 +0100 | VOID418 | (~user@89.151.44.90) (Ping timeout: 260 seconds) |
2022-11-25 01:31:35 +0100 | <monochrom> | The CPS trick is equivalent to the existential type wrapper. |
2022-11-25 01:32:06 +0100 | <monochrom> | IOW you have only 1 choice bwahahahaha |
2022-11-25 01:32:54 +0100 | <monochrom> | OK there are 2 choices. Use rank-2 CPS = existential. Don't bother with type-level programming at all. |
2022-11-25 01:33:26 +0100 | <monochrom> | #ThinkOutsideTypeObsession |
2022-11-25 01:37:59 +0100 | chomwitt | (~chomwitt@ppp-94-67-236-76.home.otenet.gr) (Ping timeout: 264 seconds) |
2022-11-25 01:43:48 +0100 | mvk | (~mvk@2607:fea8:5ce3:8500::efb) |
2022-11-25 01:44:23 +0100 | mvk | (~mvk@2607:fea8:5ce3:8500::efb) (Client Quit) |
2022-11-25 01:47:26 +0100 | <int-e> | monochrom: "equivalent" is doing some heavy lifting there |
2022-11-25 01:48:29 +0100 | <Axman6> | is there an isomorphism between the two? |
2022-11-25 01:48:38 +0100 | <monochrom> | Yes. |
2022-11-25 01:48:39 +0100 | <int-e> | (both from a programmer perspective and from an implementation perspective) |
2022-11-25 01:48:45 +0100 | <int-e> | yes, there is |
2022-11-25 01:48:57 +0100 | <int-e> | it's more-or-less Church encodings |
2022-11-25 01:49:34 +0100 | <monochrom> | (exists t. P t) is isomorphic to (forall r. (forall t. P t -> r) -> r) |
2022-11-25 01:49:42 +0100 | <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. |
2022-11-25 01:50:07 +0100 | <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. |
2022-11-25 01:50:31 +0100 | <monochrom> | FWIW GC is much much heavylifting too but we embrace it anyway. |
2022-11-25 01:50:53 +0100 | <int-e> | I mean, even if two things are isomorphic, they often handle differently from a programmer's perspective. |
2022-11-25 01:51:14 +0100 | <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.) |
2022-11-25 01:52:38 +0100 | <monochrom> | This is why education exists and is important. |
2022-11-25 01:52:54 +0100 | king_gs | (~Thunderbi@187.201.139.206) |
2022-11-25 01:54:31 +0100 | <monochrom> | The more two equivalent things stand for two different perspectives, the more you should learn it. |
2022-11-25 01:55:35 +0100 | razetime | (~quassel@117.193.4.48) |
2022-11-25 01:56:39 +0100 | <monochrom> | It is why engineers learn Fourier analysis and Laplace transform. Precisely because heavylifting equivalence. |
2022-11-25 01:57:04 +0100 | <monochrom> | I don't hear engineers say "it's a lot of heavylifting, even for the learners, so let's skip it". |
2022-11-25 01:57:08 +0100 | sammelweis | (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Ping timeout: 260 seconds) |
2022-11-25 01:57:22 +0100 | <monochrom> | But perhaps that's why programmers are not ready to be called engineers. |
2022-11-25 01:57:32 +0100 | sammelweis | (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) |
2022-11-25 01:58:34 +0100 | lisbeths | (uid135845@id-135845.lymington.irccloud.com) |
2022-11-25 02:00:33 +0100 | merijn | (~merijn@86-86-29-250.fixed.kpn.net) |
2022-11-25 02:03:20 +0100 | <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. |
2022-11-25 02:03:33 +0100 | sammelweis | (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Ping timeout: 260 seconds) |
2022-11-25 02:04:30 +0100 | <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. |
2022-11-25 02:04:41 +0100 | sammelweis | (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) |
2022-11-25 02:05:17 +0100 | chexum | (~quassel@gateway/tor-sasl/chexum) (Ping timeout: 255 seconds) |
2022-11-25 02:08:25 +0100 | <maerwald[m]> | monochrom: education exists to control the masses |
2022-11-25 02:08:35 +0100 | Kaiepi | (~Kaiepi@108.175.84.104) (Ping timeout: 264 seconds) |
2022-11-25 02:09:04 +0100 | causal | (~user@50.35.83.177) |
2022-11-25 02:09:24 +0100 | <monochrom> | See? Control freaks think that everything is about control. >:) |
2022-11-25 02:10:39 +0100 | <maerwald[m]> | Even academic education is full of nonsensical doctrines |
2022-11-25 02:10:46 +0100 | chexum | (~quassel@gateway/tor-sasl/chexum) |
2022-11-25 02:11:33 +0100 | <monochrom> | Sure. I brought up the good part of education. You can talk about the bad part. |
2022-11-25 02:12:16 +0100 | <monochrom> | Or you could agree that I am not an educator, I am something better, I am an enlightener. :) |
2022-11-25 02:13:27 +0100 | <maerwald[m]> | Yeah, you're the devil, which can be refreshing occasionally |
2022-11-25 02:18:08 +0100 | xff0x | (~xff0x@2405:6580:b080:900:ba2b:e368:237f:a79) (Ping timeout: 260 seconds) |
2022-11-25 02:20:18 +0100 | srz | (~srz@179.36.100.166) |
2022-11-25 02:20:21 +0100 | razetime | (~quassel@117.193.4.48) (Ping timeout: 265 seconds) |
2022-11-25 02:20:29 +0100 | razetime | (~quassel@117.193.5.135) |
2022-11-25 02:21:24 +0100 | sawilagar_ | (~sawilagar@user/sawilagar) (Ping timeout: 260 seconds) |
2022-11-25 02:26:05 +0100 | Unicorn_Princess | (~Unicorn_P@user/Unicorn-Princess/x-3540542) (Remote host closed the connection) |
2022-11-25 02:27:34 +0100 | razetime_ | (~quassel@117.254.34.88) |
2022-11-25 02:27:47 +0100 | razetime | (~quassel@117.193.5.135) (Ping timeout: 264 seconds) |
2022-11-25 02:29:36 +0100 | bobbingbob | (~bobbingbo@2604:3d09:207f:f650::b469) |
2022-11-25 02:32:35 +0100 | Xeroine | (~Xeroine@user/xeroine) (Ping timeout: 264 seconds) |
2022-11-25 02:32:59 +0100 | king_gs | (~Thunderbi@187.201.139.206) (Read error: Connection reset by peer) |
2022-11-25 02:33:18 +0100 | king_gs | (~Thunderbi@2806:103e:29:bfeb:c988:bbd5:2586:4924) |
2022-11-25 02:34:23 +0100 | merijn | (~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 264 seconds) |
2022-11-25 02:37:36 +0100 | <bobbingbob> | hooray i got hickory working |
2022-11-25 02:37:44 +0100 | razetime_ | (~quassel@117.254.34.88) (Ping timeout: 268 seconds) |
2022-11-25 02:37:51 +0100 | razetime | (~quassel@117.254.34.18) |
2022-11-25 02:37:54 +0100 | <bobbingbob> | my mistake was a dependency of a dependency not being installed |
2022-11-25 02:38:11 +0100 | <bobbingbob> | i wish there could just be one package manager for everything |
2022-11-25 02:38:49 +0100 | razetime | (~quassel@117.254.34.18) (Client Quit) |
2022-11-25 02:40:20 +0100 | <jackdk> | Do you have a moment to talk about Nix? |
2022-11-25 02:40:23 +0100 | <yushyin> | it is called nix |
2022-11-25 02:40:29 +0100 | <jackdk> | yushyin++ |
2022-11-25 02:43:43 +0100 | <monochrom> | haha |
2022-11-25 02:44:07 +0100 | srz | (~srz@179.36.100.166) (Read error: Connection reset by peer) |
2022-11-25 02:44:32 +0100 | <monochrom> | https://xkcd.com/927/ applies. |
2022-11-25 02:44:33 +0100 | <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 |
2022-11-25 02:44:56 +0100 | <monochrom> | You can use nix without nixos. |
2022-11-25 02:44:59 +0100 | <yushyin> | you don't need nixos to use nix |
2022-11-25 02:45:08 +0100 | srz | (~srz@179.36.100.166) |
2022-11-25 02:45:08 +0100 | <monochrom> | Some people even run Windows. |
2022-11-25 02:45:11 +0100 | Xeroine | (~Xeroine@user/xeroine) |
2022-11-25 02:45:22 +0100 | srz | (~srz@179.36.100.166) (Remote host closed the connection) |
2022-11-25 02:45:39 +0100 | <maerwald[m]> | monochrom: nixpkgs are part of NixOS |
2022-11-25 02:45:39 +0100 | <maerwald[m]> | So no, you can't |
2022-11-25 02:45:44 +0100 | srz | (~srz@179.36.100.166) |
2022-11-25 02:45:45 +0100 | <bobbingbob> | do you think i should use nix as a subsitute for pacman? or just for haskell development |
2022-11-25 02:45:47 +0100 | <maerwald[m]> | Unless you write your own... uh, everything |
2022-11-25 02:45:51 +0100 | <monochrom> | "You can use nix without unix" ---> simplify ---> "You can use nix without u" >:) |
2022-11-25 02:46:16 +0100 | <maerwald[m]> | bobbingbob: don't use it at all is my suggestion |
2022-11-25 02:46:32 +0100 | <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` |
2022-11-25 02:46:39 +0100 | <maerwald[m]> | Unless you have a lot of free time to waste |
2022-11-25 02:46:59 +0100 | <jackdk> | Once you're comfortable, consider `home-manager` and later consider nixos if you want more declarative goodness |
2022-11-25 02:47:55 +0100 | <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 = ./.; }` |
2022-11-25 02:48:02 +0100 | <maerwald[m]> | Declarative hell. Then your cache breaks and you realize it's not actually reproducible |
2022-11-25 02:48:03 +0100 | srz | (~srz@179.36.100.166) (Read error: Connection reset by peer) |
2022-11-25 02:48:06 +0100 | srz_ | (~srz@179.36.100.166) |
2022-11-25 02:48:34 +0100 | <maerwald[m]> | Otherwise explain to me why I get compile errors on cache misses :) |
2022-11-25 02:48:52 +0100 | srz_ | (~srz@179.36.100.166) (Remote host closed the connection) |
2022-11-25 02:49:19 +0100 | <jackdk> | Yeah, I've had that with old nixpkgs sometimes, when I stress-test things by building with no substituters |
2022-11-25 02:50:48 +0100 | bobbingbob | (~bobbingbo@2604:3d09:207f:f650::b469) (Ping timeout: 260 seconds) |
2022-11-25 02:51:45 +0100 | sammelweis | (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Quit: No Ping reply in 180 seconds.) |
2022-11-25 02:52:46 +0100 | <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 |
2022-11-25 02:53:07 +0100 | nate4 | (~nate@98.45.169.16) |
2022-11-25 02:53:25 +0100 | sammelweis | (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) |
2022-11-25 02:56:27 +0100 | xff0x | (~xff0x@125x103x176x34.ap125.ftth.ucom.ne.jp) |
2022-11-25 02:58:23 +0100 | nate4 | (~nate@98.45.169.16) (Ping timeout: 264 seconds) |
2022-11-25 02:58:23 +0100 | sammelweis | (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Quit: No Ping reply in 180 seconds.) |
2022-11-25 03:01:33 +0100 | sammelweis | (~quassel@c-68-48-18-140.hsd1.mi.comcast.net) |
2022-11-25 03:02:08 +0100 | machinedgod | (~machinedg@d198-53-218-113.abhsia.telus.net) (Remote host closed the connection) |
2022-11-25 03:06:22 +0100 | dsrt^ | (~dsrt@76.145.185.103) |
2022-11-25 03:10:28 +0100 | <jean-paul[m]> | What does "overly expressive" mean here? |
2022-11-25 03:11:43 +0100 | <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 |
2022-11-25 03:13:09 +0100 | <oak-> | There is some learning curve yes, but I used to use Arch Linux before for over 10 years |
2022-11-25 03:14:35 +0100 | chexum | (~quassel@gateway/tor-sasl/chexum) (Ping timeout: 255 seconds) |
2022-11-25 03:15:17 +0100 | chexum | (~quassel@gateway/tor-sasl/chexum) |
2022-11-25 03:24:47 +0100 | jao | (~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net) (Ping timeout: 264 seconds) |
2022-11-25 03:30:31 +0100 | EvanR | (~EvanR@user/evanr) (Remote host closed the connection) |
2022-11-25 03:30:39 +0100 | merijn | (~merijn@86-86-29-250.fixed.kpn.net) |
2022-11-25 03:30:50 +0100 | EvanR | (~EvanR@user/evanr) |
2022-11-25 03:32:45 +0100 | Achylles | (~Achylles_@2804:431:d724:a09c:67a2:eda9:70f0:1a66) (Quit: Leaving) |
2022-11-25 03:35:45 +0100 | merijn | (~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 265 seconds) |
2022-11-25 03:40:51 +0100 | wagle | (~wagle@quassel.wagle.io) (Quit: http://quassel-irc.org - Chat comfortably. Anywhere.) |
2022-11-25 03:41:20 +0100 | wagle | (~wagle@quassel.wagle.io) |
2022-11-25 03:41:47 +0100 | money | (money@user/polo) () |
2022-11-25 03:42:17 +0100 | money | (money@user/polo) |
2022-11-25 04:07:47 +0100 | <maerwald[m]> | Well, learning curve is just one thing. The other is that it's just very messy. |
2022-11-25 04:10:30 +0100 | Guest9719 | (~Guest97@104.129.85.110) |
2022-11-25 04:11:09 +0100 | marc | (~marc@5.83.191.93) |
2022-11-25 04:11:33 +0100 | marc | Guest8573 |
2022-11-25 04:14:24 +0100 | Guest2573 | (~marc@5.83.191.76) (Ping timeout: 256 seconds) |
2022-11-25 04:33:16 +0100 | merijn | (~merijn@86-86-29-250.fixed.kpn.net) |
2022-11-25 04:40:22 +0100 | ellensol | (~ln@pc-ellar188.it.uu.se) (Ping timeout: 252 seconds) |
2022-11-25 04:44:13 +0100 | mzan | (~quassel@mail.asterisell.com) (Quit: https://quassel-irc.org - Chat comfortably. Anywhere.) |
2022-11-25 04:45:22 +0100 | mzan | (~quassel@mail.asterisell.com) |
2022-11-25 04:48:38 +0100 | nate4 | (~nate@98.45.169.16) |
2022-11-25 04:58:36 +0100 | td_ | (~td@83.135.9.50) (Ping timeout: 256 seconds) |
2022-11-25 05:00:16 +0100 | td_ | (~td@83.135.9.38) |
2022-11-25 05:02:19 +0100 | ellensol | (~ln@pc-ellar188.it.uu.se) |
2022-11-25 05:06:11 +0100 | merijn | (~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 264 seconds) |
2022-11-25 05:07:06 +0100 | raehik | (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 265 seconds) |
2022-11-25 05:08:04 +0100 | lisbeths | (uid135845@id-135845.lymington.irccloud.com) (Quit: Connection closed for inactivity) |
2022-11-25 05:08:08 +0100 | <dminuoso> | maerwald[m]: Yes you can use nix without nixos just fine? |
2022-11-25 05:08:21 +0100 | <dminuoso> | I think you have that statement flipped around. |
2022-11-25 05:08:41 +0100 | raehik | (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) |
2022-11-25 05:35:53 +0100 | chexum | (~quassel@gateway/tor-sasl/chexum) (Ping timeout: 255 seconds) |
2022-11-25 05:37:06 +0100 | chexum | (~quassel@gateway/tor-sasl/chexum) |
2022-11-25 05:43:36 +0100 | <monochrom> | Can you use nix without any os? >:) |
2022-11-25 05:45:18 +0100 | FinnElija | (~finn_elij@user/finn-elija/x-0085643) (Remote host closed the connection) |
2022-11-25 05:45:55 +0100 | FinnElija | (~finn_elij@user/finn-elija/x-0085643) |
2022-11-25 05:49:18 +0100 | nate4 | (~nate@98.45.169.16) (Ping timeout: 260 seconds) |
2022-11-25 05:56:19 +0100 | Vajb | (~Vajb@2001:999:504:3ad6:52a4:a3b5:32d8:e74d) (Read error: Connection reset by peer) |
2022-11-25 05:57:08 +0100 | Vajb | (~Vajb@hag-jnsbng11-58c3a5-27.dhcp.inet.fi) |
2022-11-25 06:02:10 +0100 | merijn | (~merijn@86-86-29-250.fixed.kpn.net) |
2022-11-25 06:05:13 +0100 | Guest9719 | (~Guest97@104.129.85.110) (Quit: Client closed) |
2022-11-25 06:09:34 +0100 | Vajb | (~Vajb@hag-jnsbng11-58c3a5-27.dhcp.inet.fi) (Read error: Connection reset by peer) |
2022-11-25 06:12:50 +0100 | wroathe | (~wroathe@user/wroathe) (Ping timeout: 265 seconds) |
2022-11-25 06:12:52 +0100 | Vajb | (~Vajb@2001:999:504:3ad6:52a4:a3b5:32d8:e74d) |
2022-11-25 06:17:27 +0100 | chexum | (~quassel@gateway/tor-sasl/chexum) (Quit: No Ping reply in 180 seconds.) |
2022-11-25 06:19:01 +0100 | chexum | (~quassel@gateway/tor-sasl/chexum) |
2022-11-25 06:21:20 +0100 | raehik | (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 256 seconds) |
2022-11-25 06:26:22 +0100 | joshua5040 | (~joshua@2604:3d08:bd82:8800::a0c9) |
2022-11-25 06:27:13 +0100 | Kaiepi | (~Kaiepi@108.175.84.104) |
2022-11-25 06:36:04 +0100 | Lord_of_Life | (~Lord@user/lord-of-life/x-2819915) (Ping timeout: 256 seconds) |
2022-11-25 06:36:28 +0100 | Lord_of_Life | (~Lord@user/lord-of-life/x-2819915) |
2022-11-25 06:36:33 +0100 | merijn | (~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 260 seconds) |
2022-11-25 06:54:24 +0100 | king_gs | (~Thunderbi@2806:103e:29:bfeb:c988:bbd5:2586:4924) (Ping timeout: 265 seconds) |
2022-11-25 06:56:51 +0100 | coot | (~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba) |
2022-11-25 07:02:18 +0100 | <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 |
2022-11-25 07:02:56 +0100 | <chreekat> | i'm not trying to state universal truths here, just my impression |
2022-11-25 07:03:51 +0100 | <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 |
2022-11-25 07:04:52 +0100 | finsternis | (~X@23.226.237.192) (Read error: Connection reset by peer) |
2022-11-25 07:06:39 +0100 | lisbeths | (uid135845@id-135845.lymington.irccloud.com) |
2022-11-25 07:07:07 +0100 | Axman6 | has never wiped an macOS disk and still has the same user directory and for over a decade... |
2022-11-25 07:07:29 +0100 | <Axman6> | It blow my mind that people (used to?) just blow everything away and reinstall windows |
2022-11-25 07:08:08 +0100 | azimut | (~azimut@gateway/tor-sasl/azimut) (Ping timeout: 255 seconds) |
2022-11-25 07:11:45 +0100 | takuan | (~takuan@178-116-218-225.access.telenet.be) |
2022-11-25 07:14:04 +0100 | <jackdk> | I used to do that to my GNU/Linux installs, too |
2022-11-25 07:15:05 +0100 | [itchyjunk] | (~itchyjunk@user/itchyjunk/x-7353470) (Remote host closed the connection) |
2022-11-25 07:18:35 +0100 | <chreekat> | yeah i don't feel like it's asking for much, but that's how I feel continually working with linux haha |
2022-11-25 07:27:08 +0100 | <maerwald[m]> | dminuoso: yeah, but then you won't have any access to any packages |
2022-11-25 07:27:34 +0100 | <maerwald[m]> | It's like saying, hey, you can use gentoo without the portage tree of ebuilds. |
2022-11-25 07:27:38 +0100 | <maerwald[m]> | I mean, duh |
2022-11-25 07:28:28 +0100 | <maerwald[m]> | https://github.com/NixOS/nixpkgs |
2022-11-25 07:28:36 +0100 | <maerwald[m]> | They are clearly part of NixOS |
2022-11-25 07:29:39 +0100 | <maerwald[m]> | What people mean is: you don't have to boot into a NixOS to use NixOS |
2022-11-25 07:29:50 +0100 | <maerwald[m]> | That's as old as, well... chroots |
2022-11-25 07:30:03 +0100 | joshua5040 | (~joshua@2604:3d08:bd82:8800::a0c9) (Quit: WeeChat 3.7.1) |
2022-11-25 07:31:13 +0100 | king_gs | (~Thunderbi@187.201.139.206) |
2022-11-25 07:32:32 +0100 | merijn | (~merijn@86-86-29-250.fixed.kpn.net) |
2022-11-25 07:32:33 +0100 | <dminuoso> | maerwald[m]: You're mixing things up. |
2022-11-25 07:32:38 +0100 | <chreekat> | I'm sorry what? How is nixpkgs part of nixos? |
2022-11-25 07:32:53 +0100 | califax | (~califax@user/califx) (Ping timeout: 255 seconds) |
2022-11-25 07:32:57 +0100 | <dminuoso> | maerwald[m]: nixos without nixpkgs is not really a thing, but nix without nixos is perfectly a thing. |
2022-11-25 07:33:08 +0100 | <dminuoso> | nixos is really a separate thing |
2022-11-25 07:33:16 +0100 | califax | (~califax@user/califx) |
2022-11-25 07:33:17 +0100 | <maerwald[m]> | chreekat: see above |
2022-11-25 07:33:46 +0100 | <maerwald[m]> | dminuoso: yes, I said so above, you can use nix without nixpkgs |
2022-11-25 07:34:19 +0100 | <dminuoso> | maerwald[m] | They are clearly part of NixOS |
2022-11-25 07:34:22 +0100 | <maerwald[m]> | But I don't think that's what many people do |
2022-11-25 07:34:34 +0100 | <dminuoso> | Well yes, the repository containing nix derivations and nixos modules (two separate things!) is kept in one thing for a bunch of reasons. |
2022-11-25 07:34:40 +0100 | <dminuoso> | But that's really irrelevant from a user perspecftive |
2022-11-25 07:34:41 +0100 | <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" |
2022-11-25 07:34:58 +0100 | <maerwald[m]> | They mean you can use nix (including nixpkgs) in any distro without booting into a real NixOS |
2022-11-25 07:35:03 +0100 | <dminuoso> | You could delete all of nixos modules from the nixpkgs repository, and not cause breakage in nix itself. |
2022-11-25 07:35:07 +0100 | <dminuoso> | Or in nixpkgs. |
2022-11-25 07:35:24 +0100 | <dminuoso> | Plenty people use it that way |
2022-11-25 07:35:35 +0100 | <maerwald[m]> | Really? |
2022-11-25 07:35:37 +0100 | <dminuoso> | Yes. |
2022-11-25 07:35:43 +0100 | <chreekat> | Yeah, did that at the old job |
2022-11-25 07:36:12 +0100 | <dminuoso> | The two things are kept together in the git repository for convenience mostly |
2022-11-25 07:36:41 +0100 | <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. |
2022-11-25 07:37:17 +0100 | <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. |
2022-11-25 07:37:55 +0100 | <maerwald[m]> | dminuoso: and those recipes do not use any nixpkgs to set up the env, |
2022-11-25 07:37:56 +0100 | <maerwald[m]> | ? |
2022-11-25 07:37:58 +0100 | <dminuoso> | its done pretty much because there is an audience of users that have nix installed on their arch/gentoo/debian/ubuntu/macOS/whatever |
2022-11-25 07:38:07 +0100 | <dminuoso> | maerwald[m]: they do, but thats not nixos. |
2022-11-25 07:38:20 +0100 | <maerwald[m]> | This is where I disagree in semantics |
2022-11-25 07:38:35 +0100 | <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 |
2022-11-25 07:38:42 +0100 | <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) |
2022-11-25 07:38:49 +0100 | <dminuoso> | nixpkgs is built around nix derivations |
2022-11-25 07:38:54 +0100 | <maerwald[m]> | A distro is not it's glue code or boot setup scripts. It's the packages. |
2022-11-25 07:39:07 +0100 | <dminuoso> | maerwald[m]: you really are conflating things here for nixos. |
2022-11-25 07:39:12 +0100 | <maerwald[m]> | That's the fundamental thing that makes a distro |
2022-11-25 07:39:17 +0100 | <dminuoso> | not entirely |
2022-11-25 07:39:22 +0100 | <dminuoso> | it depends on your notion of package |
2022-11-25 07:39:30 +0100 | <dminuoso> | nixos modules are the packages you think of |
2022-11-25 07:39:40 +0100 | <dminuoso> | that describe how things are wired in with your system, like installing systemd units and the like |
2022-11-25 07:39:53 +0100 | <dminuoso> | or creating system users |
2022-11-25 07:40:03 +0100 | <dminuoso> | but the nixpkgs derivations dont do that |
2022-11-25 07:40:21 +0100 | <maerwald[m]> | Yeah, that distinction isn't relevant to me |
2022-11-25 07:40:39 +0100 | <dminuoso> | I mean I can see how you might see nixpkgs as a kind of linux distribution, sure. |
2022-11-25 07:40:49 +0100 | <dminuoso> | but thats not nixos. |
2022-11-25 07:40:52 +0100 | <dminuoso> | nixos is the nixos modules. |
2022-11-25 07:41:59 +0100 | <dminuoso> | Its sort of the difference between `dpkg --install`, and what `configure && make && make install` |
2022-11-25 07:43:41 +0100 | kenran | (~user@user/kenran) |
2022-11-25 07:43:59 +0100 | <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 |
2022-11-25 07:44:16 +0100 | <maerwald[m]> | dminuoso: well, you can distinguish between certain package sets surely, like core, community and AUR in archlinux |
2022-11-25 07:44:26 +0100 | <dminuoso> | maerwald[m]: Its not that either. |
2022-11-25 07:44:28 +0100 | <maerwald[m]> | In the end, those are all considered under one distro |
2022-11-25 07:44:30 +0100 | kenran | (~user@user/kenran) (Remote host closed the connection) |
2022-11-25 07:44:32 +0100 | <dminuoso> | maerwald[m]: nixos modules really si something else. |
2022-11-25 07:44:42 +0100 | <dminuoso> | nixos is literally how nixos modules get turned into activation scripts. |
2022-11-25 07:45:24 +0100 | <maerwald[m]> | You're talking about technical details. I'm saying a distro is the package set. |
2022-11-25 07:45:29 +0100 | <dminuoso> | Huh? |
2022-11-25 07:45:43 +0100 | <dminuoso> | Yes, but calling nixpkgs nixos is just nonsense. |
2022-11-25 07:45:49 +0100 | <maerwald[m]> | nixpkgs readme btw starts with the word NixOS |
2022-11-25 07:45:54 +0100 | nate4 | (~nate@98.45.169.16) |
2022-11-25 07:46:18 +0100 | <dminuoso> | The git repository itself provides for both, yes. |
2022-11-25 07:46:25 +0100 | tromp | (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
2022-11-25 07:46:40 +0100 | <dminuoso> | But they are completely separate things |
2022-11-25 07:47:07 +0100 | <chreekat> | "Nixpkgs is a collection of 80,000 software packages that can be installed with Nix. It also implements NixOS..." |
2022-11-25 07:47:09 +0100 | <dminuoso> | Like I said, the only reason they are kept in a common repository is just convenience. |
2022-11-25 07:47:27 +0100 | <dminuoso> | I dont know what to tell you that NixOS *specifically* is nixos modules. |
2022-11-25 07:47:44 +0100 | <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 |
2022-11-25 07:47:50 +0100 | <dminuoso> | While `nixpkgs` in all common uses of it almost always means the pkgs/ expression inside of it. |
2022-11-25 07:48:01 +0100 | <maerwald[m]> | So the distro then is called 'nixpkgs'? |
2022-11-25 07:48:07 +0100 | <dminuoso> | maerwald[m]: the one you are thinking of, yes. |
2022-11-25 07:48:15 +0100 | <maerwald[m]> | And it's a distro that you cannnot boot into? |
2022-11-25 07:48:19 +0100 | <dminuoso> | yes. |
2022-11-25 07:48:25 +0100 | <maerwald[m]> | Amazing |
2022-11-25 07:48:31 +0100 | <maerwald[m]> | 😅 |
2022-11-25 07:48:34 +0100 | <chreekat> | only if you insist on claiming that distros are synonymous with their package sets, which i don't :) |
2022-11-25 07:49:06 +0100 | <maerwald[m]> | chreekat: well, it allows to weed out all these pseudo distros that add a new logo and re-use ubuntu pkgs |
2022-11-25 07:49:19 +0100 | <maerwald[m]> | Packaging is the main work. |
2022-11-25 07:50:21 +0100 | nate4 | (~nate@98.45.169.16) (Ping timeout: 268 seconds) |
2022-11-25 07:50:21 +0100 | <chreekat> | Isn't that an argument *against* making that claim? I mean it's a bit uncharitable to call distros "pseudo distros" |
2022-11-25 07:50:25 +0100 | <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.. |
2022-11-25 07:50:40 +0100 | <dminuoso> | and all those use the packages from nixpkgs |
2022-11-25 07:50:52 +0100 | <maerwald[m]> | Yes, every distro has that layer |
2022-11-25 07:50:54 +0100 | <chreekat> | anyway back to haskell, see ya |
2022-11-25 07:51:02 +0100 | <dminuoso> | maerwald[m]: the layer is at a separate point, though. |
2022-11-25 07:51:10 +0100 | <dminuoso> | because you can use nixpkgs from inside say macOS |
2022-11-25 07:51:20 +0100 | <dminuoso> | and install a lot of things that dont requrie seetting up services |
2022-11-25 07:51:27 +0100 | <dminuoso> | say you want vim, you can just say `nix-shell -p vim`, and get provided with it |
2022-11-25 07:51:39 +0100 | <maerwald[m]> | dminuoso: you can achieve similar things with chroots |
2022-11-25 07:51:43 +0100 | <dminuoso> | absolutely, yes. |
2022-11-25 07:51:44 +0100 | <maerwald[m]> | Although different |
2022-11-25 07:52:28 +0100 | <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 |
2022-11-25 07:53:33 +0100 | <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 |
2022-11-25 07:53:36 +0100 | <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 |
2022-11-25 07:54:16 +0100 | heisenberg2 | (~heisenber@104.28.223.9) |
2022-11-25 07:54:34 +0100 | heisenberg2 | (~heisenber@104.28.223.9) (Remote host closed the connection) |
2022-11-25 07:54:37 +0100 | <dminuoso> | Indeed, they are aligned with each other. |
2022-11-25 07:55:17 +0100 | <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. |
2022-11-25 07:55:30 +0100 | <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 |
2022-11-25 07:55:33 +0100 | <maerwald[m]> | But I still consider them *gentoo* |
2022-11-25 07:55:38 +0100 | <maerwald[m]> | That's what the devs spend 90% of their time on |
2022-11-25 07:56:30 +0100 | <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. |
2022-11-25 07:56:33 +0100 | <maerwald[m]> | And packaging is hard |
2022-11-25 07:56:39 +0100 | tromp | (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
2022-11-25 07:57:06 +0100 | <dminuoso> | so nixpkgs-unstable can have completely broken nixos modules, but you get the newest pkgs |
2022-11-25 07:57:14 +0100 | <maerwald[m]> | Are the development teams strictly separate? |
2022-11-25 07:57:26 +0100 | zmt01 | (~zmt00@user/zmt00) (Ping timeout: 246 seconds) |
2022-11-25 07:57:33 +0100 | <dminuoso> | I cannot say because I do not know. |
2022-11-25 07:57:52 +0100 | <maerwald[m]> | I'd imagine they have power over both and there need not be any negotiations |
2022-11-25 07:58:02 +0100 | <maerwald[m]> | Otherwise that becomes bottleneck quickly |
2022-11-25 07:58:15 +0100 | Guest55 | (~Guest55@p200300ef9716451373d1c50d5ff22e08.dip0.t-ipconnect.de) (Quit: Client closed) |
2022-11-25 07:58:34 +0100 | Guest55 | (~Guest55@p200300ef9716451373d1c50d5ff22e08.dip0.t-ipconnect.de) |
2022-11-25 08:00:15 +0100 | Guest55 | (~Guest55@p200300ef9716451373d1c50d5ff22e08.dip0.t-ipconnect.de) (Client Quit) |
2022-11-25 08:02:55 +0100 | zmt00 | (~zmt00@user/zmt00) |
2022-11-25 08:05:06 +0100 | <maerwald[m]> | dminuoso: I expect you to give a NixOS workshop at Zurihac next year then |
2022-11-25 08:05:12 +0100 | heisenberg2 | (~heisenber@104.28.255.11) |
2022-11-25 08:05:33 +0100 | heisenbe_ | (~heisenber@104.28.223.10) |
2022-11-25 08:05:40 +0100 | <dminuoso> | Mmm, might just do! |
2022-11-25 08:05:41 +0100 | heisenbe_ | (~heisenber@104.28.223.10) (Remote host closed the connection) |
2022-11-25 08:06:03 +0100 | <maerwald[m]> | I'll attend and ask productive questions :D |
2022-11-25 08:07:02 +0100 | <dminuoso> | My key advantage is that I know you like Guinness. Ill happily provide you with a plethora of pints before the workshop begins. |
2022-11-25 08:07:09 +0100 | <maerwald[m]> | We can bikeshed about the meaning of "reproducible" |
2022-11-25 08:07:18 +0100 | merijn | (~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 256 seconds) |
2022-11-25 08:07:53 +0100 | <maerwald[m]> | Like, nix doesn't isolate from all of the env (e.g. kernel) :p |
2022-11-25 08:09:14 +0100 | <dminuoso> | Sure, selling nix as `deterministic` is overselling a bit. |
2022-11-25 08:09:39 +0100 | <dminuoso> | But it provides an infrastructure to come closer to whatever that means than most other attempts at least. |
2022-11-25 08:09:53 +0100 | heisenberg2 | (~heisenber@104.28.255.11) (Ping timeout: 260 seconds) |
2022-11-25 08:10:13 +0100 | <dminuoso> | But for what its worth, nix expressions themselves *are* deterministic. |
2022-11-25 08:10:24 +0100 | <dminuoso> | well in the absence of certain things, which can however forbid |
2022-11-25 08:10:32 +0100 | <carbolymer> | dminuoso: wdym, isn't nix deterministic? |
2022-11-25 08:10:39 +0100 | <dminuoso> | carbolymer: its a pure functional language. |
2022-11-25 08:11:01 +0100 | <dminuoso> | well, you can have impure nix expressions for starters |
2022-11-25 08:11:10 +0100 | <carbolymer> | ah yes |
2022-11-25 08:11:11 +0100 | <dminuoso> | or depend on impure things |
2022-11-25 08:11:22 +0100 | <carbolymer> | right, now I see |
2022-11-25 08:11:30 +0100 | <dminuoso> | its small subtle things like "fetch the source" - its not truly deterministic in the sense that the source might just be gone |
2022-11-25 08:11:39 +0100 | <dminuoso> | and then it will suddenly not compute anymore |
2022-11-25 08:11:44 +0100 | <dminuoso> | despite you having done nothing on your local machine |
2022-11-25 08:11:54 +0100 | <carbolymer> | dminuoso: then you get deterministic output - or error? |
2022-11-25 08:12:32 +0100 | <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 |
2022-11-25 08:12:41 +0100 | <maerwald[m]> | That was the last straw for me :p |
2022-11-25 08:13:07 +0100 | <dminuoso> | Hard to judge without seeing the details *shrugs* |
2022-11-25 08:14:01 +0100 | <dminuoso> | carbolymer: that depends on what the build does. |
2022-11-25 08:14:08 +0100 | <dminuoso> | carbolymer: there are a lot of non-deterministic builds. |
2022-11-25 08:15:00 +0100 | <dminuoso> | carbolymer: consider parallel builds, for instance. |
2022-11-25 08:15:27 +0100 | <dminuoso> | quite a bunch of those parallel builds are disabled to promote reproducability |
2022-11-25 08:17:11 +0100 | tcard | (~tcard@2400:4051:5801:7500:19ce:ed82:2ab7:90f9) (Quit: Leaving) |
2022-11-25 08:17:27 +0100 | <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. |
2022-11-25 08:17:32 +0100 | <dminuoso> | It's a bit absurd. |
2022-11-25 08:17:48 +0100 | <maerwald[m]> | And there are hidden things that can leak into builds too, liko current time |
2022-11-25 08:18:03 +0100 | <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. |
2022-11-25 08:19:06 +0100 | <dminuoso> | (not sure how content addressed forms will make this really problematic) |
2022-11-25 08:19:57 +0100 | <dminuoso> | maerwald[m]: the real question then becomes: arent packages that even care about that thing not properly broken? |
2022-11-25 08:19:58 +0100 | <maerwald[m]> | Java builds depend on kernel specifities too afair |
2022-11-25 08:20:30 +0100 | <dminuoso> | One of the most horrible experience Ive ever had was packaging Python packages under Nix |
2022-11-25 08:20:38 +0100 | <maerwald[m]> | dminuoso: depends on your expectations really. They will.probably work for 90% of distros |
2022-11-25 08:20:43 +0100 | <dminuoso> | But it turns out, the real reason for that is barely any python package has properly set dependencies. |
2022-11-25 08:20:44 +0100 | <maerwald[m]> | I'd consider it bad too |
2022-11-25 08:20:52 +0100 | <maerwald[m]> | But not sure if it's broken |
2022-11-25 08:20:54 +0100 | king_gs | (~Thunderbi@187.201.139.206) (Ping timeout: 256 seconds) |
2022-11-25 08:20:57 +0100 | <dminuoso> | They just randomly do things like fetch packages via http during Setup.py and manually install them.. |
2022-11-25 08:21:38 +0100 | <dminuoso> | or dependencies not specified entirely |
2022-11-25 08:21:43 +0100 | <dminuoso> | missing upper bounds, missing lower bounds |
2022-11-25 08:21:44 +0100 | <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 |
2022-11-25 08:21:48 +0100 | tcard | (~tcard@2400:4051:5801:7500:19ce:ed82:2ab7:90f9) |
2022-11-25 08:21:59 +0100 | <dminuoso> | and those are not isolated instances. about every second python package is so horribly mistreated |
2022-11-25 08:22:05 +0100 | <maerwald[m]> | I've patched hundreds of those build systems |
2022-11-25 08:22:28 +0100 | <maerwald[m]> | So for a packager, everything is broken |
2022-11-25 08:22:57 +0100 | <maerwald[m]> | But if you assume FHS and anything outside it can go f off, then hmm |
2022-11-25 08:23:28 +0100 | <dminuoso> | maerwald[m]: hah for what its worth, nix has a full escape hatch called buildFHSUserEnv |
2022-11-25 08:23:37 +0100 | <dminuoso> | Which is one of the really cool things about nix |
2022-11-25 08:23:44 +0100 | chomwitt | (~chomwitt@2a02:587:7a0d:dd00:1ac0:4dff:fedb:a3f1) |
2022-11-25 08:24:02 +0100 | <dminuoso> | I had this vmware nonsense I had to install, but it really felt like rampaging all over /etc, installing and deleting files randomly |
2022-11-25 08:24:02 +0100 | <maerwald[m]> | Yeah, but you can't do a proper nixpkg recipe with a build system with zero control knobs |
2022-11-25 08:24:23 +0100 | <dminuoso> | so buildFHSUserEnv synthesizes a traditional FHS, and chroots you into it. :p |
2022-11-25 08:24:33 +0100 | <maerwald[m]> | Packagers will always patch stuff downstream |
2022-11-25 08:24:33 +0100 | <maerwald[m]> | Forever |
2022-11-25 08:24:47 +0100 | <dminuoso> | And then you can just imperatively do anything you want. A kind of no-bullshit-container if you want. |
2022-11-25 08:25:20 +0100 | <dminuoso> | yeah you do have a point though, as a package you will always be at the merci of poorly written packages. |
2022-11-25 08:25:23 +0100 | <dminuoso> | *packager |
2022-11-25 08:25:38 +0100 | <dminuoso> | or poorly written software build processes |
2022-11-25 08:26:02 +0100 | <dminuoso> | Much of the early portability was achieved by autotools. |
2022-11-25 08:26:19 +0100 | <dminuoso> | Which is a large stack of crazy. |
2022-11-25 08:26:26 +0100 | <maerwald[m]> | https://github.com/IgnorantGuru/spacefm/issues/452 |
2022-11-25 08:26:48 +0100 | tromp | (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
2022-11-25 08:27:04 +0100 | <maerwald[m]> | Here the author didn't believe in /usr/bin/env for security reasons |
2022-11-25 08:27:19 +0100 | <maerwald[m]> | And /bin/bash broke nixpkgs |
2022-11-25 08:27:41 +0100 | <dminuoso> | maerwald[m]: hah the /bin/bash problem is interesting! there exist no standardized portable solution for it! |
2022-11-25 08:28:00 +0100 | <dminuoso> | I recall some notes in POSIX that suggested something akin to /usr/bin/env *should* be used, but not that solution in particular |
2022-11-25 08:28:09 +0100 | <dminuoso> | But they also hinted that this be a distribution specific way |
2022-11-25 08:29:33 +0100 | <dminuoso> | maerwald[m]: I think its absolutely mindboggingly absurd to do that check at runtime. |
2022-11-25 08:29:49 +0100 | <dminuoso> | They even use autotools, wtf. |
2022-11-25 08:29:59 +0100 | <dminuoso> | Ah but hold on, its a runtime requirement |
2022-11-25 08:30:01 +0100 | <dminuoso> | Mm |
2022-11-25 08:30:35 +0100 | <maerwald[m]> | Posix doesn't suggest /usr/bin/env afaik |
2022-11-25 08:30:44 +0100 | <maerwald[m]> | https://pubs.opengroup.org/onlinepubs/009695399/utilities/sh.html |
2022-11-25 08:31:01 +0100 | <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." |
2022-11-25 08:31:38 +0100 | <dminuoso> | Like I said, not explicitly |
2022-11-25 08:32:03 +0100 | <dminuoso> | but /usr/bin/env does end up working to the same effect |
2022-11-25 08:32:43 +0100 | chexum_ | (~quassel@gateway/tor-sasl/chexum) |
2022-11-25 08:32:57 +0100 | <maerwald[m]> | You can't make any assumptions about the location of 'env' either |
2022-11-25 08:34:05 +0100 | <dminuoso> | Absolutely. This is one of the very things that NixOS places something under a predicable path as a pragmatic choice |
2022-11-25 08:34:24 +0100 | <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. |
2022-11-25 08:34:39 +0100 | <dminuoso> | So while its not officially standardized, it is a defacto standard you can pretty much rely on |
2022-11-25 08:34:54 +0100 | <maerwald[m]> | s/standard/practice/ |
2022-11-25 08:34:58 +0100 | <dminuoso> | fair |
2022-11-25 08:34:59 +0100 | chexum | (~quassel@gateway/tor-sasl/chexum) (Ping timeout: 255 seconds) |
2022-11-25 08:36:49 +0100 | <dminuoso> | maerwald[m]: their point regarding not using $PATH for setuid programs is valid, however. |
2022-11-25 08:37:02 +0100 | <dminuoso> | and their implementation of --with-bash seems to be absolutely adequate |
2022-11-25 08:37:06 +0100 | king_gs | (~Thunderbi@187.201.139.206) |
2022-11-25 08:42:07 +0100 | <maerwald[m]> | Yeah, but can you expect app developers to keep intricacies of random distributions in mind? |
2022-11-25 08:42:46 +0100 | <maerwald[m]> | Making everything configurable can be a nuisance |
2022-11-25 08:44:05 +0100 | <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" |
2022-11-25 08:44:09 +0100 | <dminuoso> | And I think those problems are not an issue. |
2022-11-25 08:44:25 +0100 | <dminuoso> | But python packages simply not declaring dependencies or having incorrect verion bounds.. |
2022-11-25 08:44:30 +0100 | <dminuoso> | There's no escuse for that. |
2022-11-25 08:44:37 +0100 | <dminuoso> | It's the methodical "it works on my machine" |
2022-11-25 08:45:05 +0100 | <maerwald[m]> | I remember developers being quite annoyed by gentoo devs sending CFLAGS patches everywhere, but the multilib architecture relied on it |
2022-11-25 08:45:09 +0100 | ft | (~ft@p508dbd59.dip0.t-ipconnect.de) (Quit: leaving) |
2022-11-25 08:45:46 +0100 | <dminuoso> | I too have written haskell packages that strictly only work under linux, because I couldnt be bothered to support darwin or windows. |
2022-11-25 08:45:50 +0100 | <dminuoso> | If someone wants that support, they can add it. |
2022-11-25 08:46:17 +0100 | Major_Biscuit | (~MajorBisc@86-88-79-148.fixed.kpn.net) |
2022-11-25 08:46:19 +0100 | <dminuoso> | But at least the package will build reliably irrespective of whether you run cabal update or not |
2022-11-25 08:47:03 +0100 | <dminuoso> | ($!) :: forall r a (b :: TYPE r). (a -> b) -> a -> b infixr 0 |
2022-11-25 08:47:07 +0100 | dminuoso | cries |
2022-11-25 08:47:15 +0100 | <dminuoso> | Why was fixity messed up here too? |
2022-11-25 08:47:23 +0100 | <dminuoso> | This should be infixl! :* |
2022-11-25 08:47:35 +0100 | heisenberg2 | (~heisenber@104.28.255.10) |
2022-11-25 08:48:22 +0100 | ChaiTRex | (~ChaiTRex@user/chaitrex) (Remote host closed the connection) |
2022-11-25 08:48:46 +0100 | ChaiTRex | (~ChaiTRex@user/chaitrex) |
2022-11-25 08:48:56 +0100 | heisenberg2 | (~heisenber@104.28.255.10) (Remote host closed the connection) |
2022-11-25 08:49:28 +0100 | heisenberg2 | (~heisenber@104.28.255.10) |
2022-11-25 08:50:35 +0100 | jonathanx | (~jonathan@h-178-174-176-109.A357.priv.bahnhof.se) (Ping timeout: 264 seconds) |
2022-11-25 08:52:57 +0100 | sammelweis_ | (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) |
2022-11-25 08:54:32 +0100 | <dminuoso> | Would be so nice if you could just write `f a b c $! x y z` |
2022-11-25 08:54:51 +0100 | <dminuoso> | And have it do the right thing. |
2022-11-25 08:55:52 +0100 | heisenberg2 | (~heisenber@104.28.255.10) (Remote host closed the connection) |
2022-11-25 08:57:08 +0100 | <mauke> | there's only one $! in that example. how does associativity come into it? |
2022-11-25 08:57:09 +0100 | king_gs | (~Thunderbi@187.201.139.206) (Read error: Connection reset by peer) |
2022-11-25 08:57:54 +0100 | <dminuoso> | mauke: you are right mmm |
2022-11-25 08:57:57 +0100 | <c_wraith> | I'd argue $! shouldn't be different from $. That'd just cause unnecessary confusion |
2022-11-25 08:58:12 +0100 | king_gs | (~Thunderbi@2806:103e:29:bfeb:c988:bbd5:2586:4924) |
2022-11-25 08:58:27 +0100 | heisenberg2 | (~heisenber@104.28.255.10) |
2022-11-25 08:58:30 +0100 | <dminuoso> | mauke: `f a b c $! x $! y $! z` |
2022-11-25 08:59:15 +0100 | fserucas | (~fserucas@2001:818:e376:a400:fb92:70c1:dd88:c7d7) |
2022-11-25 08:59:28 +0100 | darchitect | (~darchitec@2a00:23c6:3584:df01:dc79:ce08:25b8:80df) (Quit: WeeChat 3.6) |
2022-11-25 08:59:53 +0100 | darchitect | (~darchitec@2a00:23c6:3584:df01:dc79:ce08:25b8:80df) |
2022-11-25 09:03:11 +0100 | fserucas | (~fserucas@2001:818:e376:a400:fb92:70c1:dd88:c7d7) (Remote host closed the connection) |
2022-11-25 09:03:16 +0100 | darchitect | (~darchitec@2a00:23c6:3584:df01:dc79:ce08:25b8:80df) (Client Quit) |
2022-11-25 09:03:22 +0100 | fserucas | (~fserucas@2001:818:e376:a400:fb92:70c1:dd88:c7d7) |
2022-11-25 09:03:22 +0100 | merijn | (~merijn@86-86-29-250.fixed.kpn.net) |
2022-11-25 09:04:37 +0100 | jonathanx | (~jonathan@h-98-128-168-222.NA.cust.bahnhof.se) |
2022-11-25 09:06:27 +0100 | lortabac | (~lortabac@2a01:e0a:541:b8f0:c8be:9533:986e:aefa) |
2022-11-25 09:08:52 +0100 | heisenberg2 | (~heisenber@104.28.255.10) (Remote host closed the connection) |
2022-11-25 09:14:10 +0100 | <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 |
2022-11-25 09:19:59 +0100 | sammelweis_ | (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Ping timeout: 264 seconds) |
2022-11-25 09:21:07 +0100 | sammelweis_ | (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) |
2022-11-25 09:22:09 +0100 | califax | (~califax@user/califx) (Remote host closed the connection) |
2022-11-25 09:22:41 +0100 | tromp | (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
2022-11-25 09:23:45 +0100 | califax | (~califax@user/califx) |
2022-11-25 09:25:32 +0100 | califax | (~califax@user/califx) (Remote host closed the connection) |
2022-11-25 09:27:06 +0100 | califax | (~califax@user/califx) |
2022-11-25 09:30:33 +0100 | shriekingnoise | (~shrieking@186.137.167.202) (Quit: Quit) |
2022-11-25 09:36:47 +0100 | merijn | (~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 264 seconds) |
2022-11-25 09:36:48 +0100 | sammelweis_ | (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Ping timeout: 265 seconds) |
2022-11-25 09:39:17 +0100 | sammelweis_ | (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) |
2022-11-25 09:40:55 +0100 | michalz | (~michalz@185.246.207.197) |
2022-11-25 09:41:48 +0100 | king_gs | (~Thunderbi@2806:103e:29:bfeb:c988:bbd5:2586:4924) (Remote host closed the connection) |
2022-11-25 09:42:07 +0100 | king_gs | (~Thunderbi@2806:103e:29:bfeb:c988:bbd5:2586:4924) |
2022-11-25 09:47:03 +0100 | acidjnk | (~acidjnk@p200300d6e7137a67f01158a637cc3bb0.dip0.t-ipconnect.de) |
2022-11-25 09:51:08 +0100 | machinedgod | (~machinedg@d198-53-218-113.abhsia.telus.net) |
2022-11-25 09:57:47 +0100 | machinedgod | (~machinedg@d198-53-218-113.abhsia.telus.net) (Ping timeout: 264 seconds) |
2022-11-25 09:59:14 +0100 | machinedgod | (~machinedg@d198-53-218-113.abhsia.telus.net) |
2022-11-25 10:00:56 +0100 | merijn | (~merijn@86-86-29-250.fixed.kpn.net) |
2022-11-25 10:03:43 +0100 | razetime | (~quassel@117.254.35.74) |
2022-11-25 10:03:47 +0100 | Guest8573 | (~marc@5.83.191.93) (Ping timeout: 264 seconds) |
2022-11-25 10:09:08 +0100 | chele | (~chele@user/chele) |
2022-11-25 10:09:19 +0100 | chexum_ | (~quassel@gateway/tor-sasl/chexum) (Remote host closed the connection) |
2022-11-25 10:09:59 +0100 | chexum | (~quassel@gateway/tor-sasl/chexum) |
2022-11-25 10:11:21 +0100 | king_gs | (~Thunderbi@2806:103e:29:bfeb:c988:bbd5:2586:4924) (Quit: king_gs) |
2022-11-25 10:11:31 +0100 | king_gs1 | (~Thunderbi@187.201.139.206) |
2022-11-25 10:12:17 +0100 | cfricke | (~cfricke@user/cfricke) |
2022-11-25 10:13:49 +0100 | king_gs1 | king_gs |
2022-11-25 10:18:57 +0100 | andreabedini | (~andreabed@2403-580e-db5b-2-caba-a840-d1de-5925.ip6.aussiebb.net) |
2022-11-25 10:21:41 +0100 | Feuermagier_ | (~Feuermagi@2a02:2488:4211:3400:6419:933b:46e0:8942) |
2022-11-25 10:21:41 +0100 | Feuermagier_ | (~Feuermagi@2a02:2488:4211:3400:6419:933b:46e0:8942) (Client Quit) |
2022-11-25 10:21:42 +0100 | zeenk | (~zeenk@2a02:2f04:a208:3600::7fe) |
2022-11-25 10:21:43 +0100 | sammelweis_ | (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Quit: No Ping reply in 180 seconds.) |
2022-11-25 10:21:51 +0100 | sammelweis_ | (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) |
2022-11-25 10:30:57 +0100 | king_gs | (~Thunderbi@187.201.139.206) (Read error: Connection reset by peer) |
2022-11-25 10:31:05 +0100 | king_gs1 | (~Thunderbi@2806:103e:29:bfeb:c988:bbd5:2586:4924) |
2022-11-25 10:33:15 +0100 | raehik | (~raehik@92.40.170.83.threembb.co.uk) |
2022-11-25 10:33:23 +0100 | king_gs1 | king_gs |
2022-11-25 10:35:12 +0100 | coot | (~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba) (Quit: coot) |
2022-11-25 10:35:57 +0100 | jakalx | (~jakalx@base.jakalx.net) () |
2022-11-25 10:38:11 +0100 | king_gs | (~Thunderbi@2806:103e:29:bfeb:c988:bbd5:2586:4924) (Ping timeout: 265 seconds) |
2022-11-25 10:38:25 +0100 | tromp | (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
2022-11-25 10:42:43 +0100 | sammelweis_ | (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Ping timeout: 260 seconds) |
2022-11-25 10:42:51 +0100 | sammelweis_ | (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) |
2022-11-25 10:44:46 +0100 | zant | (~zant@62.214.20.26) |
2022-11-25 10:45:32 +0100 | mmhat | (~mmh@p200300f1c70102d5ee086bfffe095315.dip0.t-ipconnect.de) |
2022-11-25 10:48:07 +0100 | eggplantade | (~Eggplanta@2600:1700:38c5:d800:1933:e30c:90a:59fd) (Remote host closed the connection) |
2022-11-25 10:50:25 +0100 | raehik | (~raehik@92.40.170.83.threembb.co.uk) (Ping timeout: 268 seconds) |
2022-11-25 10:52:30 +0100 | raehik | (~raehik@92.40.212.239.threembb.co.uk) |
2022-11-25 10:57:11 +0100 | raehik | (~raehik@92.40.212.239.threembb.co.uk) (Ping timeout: 264 seconds) |
2022-11-25 10:58:11 +0100 | andreabedini | (~andreabed@2403-580e-db5b-2-caba-a840-d1de-5925.ip6.aussiebb.net) (Quit: WeeChat 3.7.1) |
2022-11-25 10:59:15 +0100 | raehik | (~raehik@92.40.170.15.threembb.co.uk) |
2022-11-25 10:59:16 +0100 | king_gs | (~Thunderbi@187.201.139.206) |
2022-11-25 10:59:47 +0100 | coot | (~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba) |
2022-11-25 11:03:43 +0100 | king_gs | (~Thunderbi@187.201.139.206) (Ping timeout: 260 seconds) |
2022-11-25 11:04:40 +0100 | tdammers | (~tdammers@77.109.72.175.res.static.edpnet.net) (Quit: WeeChat 3.0) |
2022-11-25 11:13:45 +0100 | jakalx | (~jakalx@base.jakalx.net) |
2022-11-25 11:18:47 +0100 | xff0x | (~xff0x@125x103x176x34.ap125.ftth.ucom.ne.jp) (Ping timeout: 264 seconds) |
2022-11-25 11:24:07 +0100 | tzh | (~tzh@c-24-21-73-154.hsd1.wa.comcast.net) (Quit: zzz) |
2022-11-25 11:26:26 +0100 | lisbeths | (uid135845@id-135845.lymington.irccloud.com) (Quit: Connection closed for inactivity) |
2022-11-25 11:27:59 +0100 | econo | (uid147250@user/econo) (Quit: Connection closed for inactivity) |
2022-11-25 11:27:59 +0100 | king_gs | (~Thunderbi@187.201.139.206) |
2022-11-25 11:30:10 +0100 | sammelweis_ | (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Ping timeout: 256 seconds) |
2022-11-25 11:30:48 +0100 | sammelweis_ | (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) |
2022-11-25 11:31:08 +0100 | mmhat | (~mmh@p200300f1c70102d5ee086bfffe095315.dip0.t-ipconnect.de) (Ping timeout: 260 seconds) |
2022-11-25 11:32:48 +0100 | king_gs | (~Thunderbi@187.201.139.206) (Ping timeout: 265 seconds) |
2022-11-25 11:32:53 +0100 | raehik | (~raehik@92.40.170.15.threembb.co.uk) (Ping timeout: 260 seconds) |
2022-11-25 11:33:47 +0100 | jmdaemon | (~jmdaemon@user/jmdaemon) (Ping timeout: 264 seconds) |
2022-11-25 11:35:21 +0100 | sammelweis_ | (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Client Quit) |
2022-11-25 11:36:44 +0100 | ec_ | (~ec@gateway/tor-sasl/ec) |
2022-11-25 11:37:27 +0100 | sammelweis_ | (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) |
2022-11-25 11:37:41 +0100 | ec | (~ec@gateway/tor-sasl/ec) (Ping timeout: 255 seconds) |
2022-11-25 11:38:48 +0100 | Sgeo | (~Sgeo@user/sgeo) (Read error: Connection reset by peer) |
2022-11-25 11:40:04 +0100 | Me-me | (~Me-me@user/me-me) (Quit: Going offline, see ya! (www.adiirc.com)) |
2022-11-25 11:45:52 +0100 | king_gs | (~Thunderbi@187.201.139.206) |
2022-11-25 11:46:54 +0100 | nate4 | (~nate@98.45.169.16) |
2022-11-25 11:48:35 +0100 | eggplantade | (~Eggplanta@2600:1700:38c5:d800:1933:e30c:90a:59fd) |
2022-11-25 11:52:08 +0100 | nate4 | (~nate@98.45.169.16) (Ping timeout: 260 seconds) |
2022-11-25 11:53:05 +0100 | king_gs | (~Thunderbi@187.201.139.206) (Quit: king_gs) |
2022-11-25 11:53:18 +0100 | eggplantade | (~Eggplanta@2600:1700:38c5:d800:1933:e30c:90a:59fd) (Ping timeout: 260 seconds) |
2022-11-25 11:53:23 +0100 | king_gs | (~Thunderbi@187.201.139.206) |
2022-11-25 11:53:59 +0100 | jao | (~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net) |
2022-11-25 11:55:59 +0100 | teo | (~teo@user/teo) |
2022-11-25 12:00:47 +0100 | king_gs | (~Thunderbi@187.201.139.206) (Ping timeout: 264 seconds) |
2022-11-25 12:10:04 +0100 | xff0x | (~xff0x@2405:6580:b080:900:84a4:3e04:c05a:9d80) |
2022-11-25 12:13:15 +0100 | gurkenglas | (~gurkengla@p548ac72e.dip0.t-ipconnect.de) |
2022-11-25 12:22:34 +0100 | <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 |
2022-11-25 12:25:36 +0100 | sawilagar | (~sawilagar@user/sawilagar) |
2022-11-25 12:29:50 +0100 | teo | (~teo@user/teo) (Ping timeout: 265 seconds) |
2022-11-25 12:30:52 +0100 | teo | (~teo@user/teo) |
2022-11-25 12:31:06 +0100 | void_ | (~void@89.151.44.90) |
2022-11-25 12:31:07 +0100 | VOID418 | (~user@89.151.44.90) |
2022-11-25 12:31:16 +0100 | void_ | (~void@89.151.44.90) (Client Quit) |
2022-11-25 12:34:35 +0100 | nilradical | (~nilradica@user/naso) |
2022-11-25 12:35:39 +0100 | merijn | (~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 260 seconds) |
2022-11-25 12:35:48 +0100 | <maerwald[m]> | kjlid: yes |
2022-11-25 12:35:54 +0100 | <Dominik[m]1> | I think so: https://cabal.readthedocs.io/en/stable/cabal-package.html#pkg-field-data-files |
2022-11-25 12:36:20 +0100 | <maerwald[m]> | https://cabal.readthedocs.io/en/3.4/cabal-package.html?highlight=extra-source-files#pkg-field-extr… |
2022-11-25 12:36:43 +0100 | <Dominik[m]1> | I do not think it is the source files, but the data files. |
2022-11-25 12:37:11 +0100 | <maerwald[m]> | data files are for runtime |
2022-11-25 12:37:17 +0100 | <maerwald[m]> | They are inlining the file |
2022-11-25 12:37:19 +0100 | <Dominik[m]1> | isn't that what he is asking |
2022-11-25 12:37:25 +0100 | <Dominik[m]1> | ah the other way around |
2022-11-25 12:37:31 +0100 | <Dominik[m]1> | sorry |
2022-11-25 12:37:31 +0100 | <maerwald[m]> | No |
2022-11-25 12:38:45 +0100 | beteigeuze | (~Thunderbi@a79-169-109-107.cpe.netcabo.pt) |
2022-11-25 12:38:50 +0100 | <Dominik[m]1> | ya it was misleading, because "Is it possible to tell `cabal install` to include a file when building" :-). |
2022-11-25 12:39:02 +0100 | <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 |
2022-11-25 12:39:04 +0100 | <kjlid[m]> | Now it works |
2022-11-25 12:39:19 +0100 | <kjlid[m]> | Thanks! |
2022-11-25 12:42:04 +0100 | <maerwald[m]> | extra-source-files should also work with TH, knowing that it needs to rebuild when it changes |
2022-11-25 12:44:37 +0100 | <mauke> | hell yeah. my "monospace" hack works: https://i.ibb.co/Pry5wK4/Screenshot-2022-11-25-12-42-38.png |
2022-11-25 12:46:04 +0100 | nilradical | (~nilradica@user/naso) (Remote host closed the connection) |
2022-11-25 12:46:21 +0100 | sammelweis_ | (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Quit: No Ping reply in 180 seconds.) |
2022-11-25 12:46:41 +0100 | nilradical | (~nilradica@user/naso) |
2022-11-25 12:47:37 +0100 | sammelweis_ | (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) |
2022-11-25 12:48:08 +0100 | zant | (~zant@62.214.20.26) (Ping timeout: 260 seconds) |
2022-11-25 12:51:42 +0100 | tromp | (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
2022-11-25 12:51:47 +0100 | nilradical | (~nilradica@user/naso) (Ping timeout: 264 seconds) |
2022-11-25 12:53:58 +0100 | mestre | (~mestre@191.177.185.178) |
2022-11-25 12:54:06 +0100 | <carbolymer> | mauke: noice |
2022-11-25 12:55:17 +0100 | tromp | (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
2022-11-25 12:56:49 +0100 | VOID418 | (~user@89.151.44.90) (Remote host closed the connection) |
2022-11-25 12:57:05 +0100 | VOID418 | (~user@89.151.44.90) |
2022-11-25 12:57:27 +0100 | libertyprime | (~libertypr@118-92-78-165.dsl.dyn.ihug.co.nz) (Ping timeout: 268 seconds) |
2022-11-25 12:59:48 +0100 | sammelweis_ | (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Ping timeout: 260 seconds) |
2022-11-25 13:00:26 +0100 | sammelweis_ | (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) |
2022-11-25 13:01:52 +0100 | merijn | (~merijn@86-86-29-250.fixed.kpn.net) |
2022-11-25 13:17:34 +0100 | bjourne | (~bjourne@2001:6b0:1:1140:42bf:ff4:f8fa:50e5) |
2022-11-25 13:19:37 +0100 | nilradical | (~nilradica@user/naso) |
2022-11-25 13:24:24 +0100 | VOID[m] | (~void404ma@2001:470:69fc:105::2:c72c) |
2022-11-25 13:24:53 +0100 | nilradical | (~nilradica@user/naso) (Ping timeout: 260 seconds) |
2022-11-25 13:26:32 +0100 | sawilagar | (~sawilagar@user/sawilagar) (Read error: Connection reset by peer) |
2022-11-25 13:27:56 +0100 | sawilagar | (~sawilagar@user/sawilagar) |
2022-11-25 13:35:26 +0100 | ft | (~ft@p508dbd59.dip0.t-ipconnect.de) |
2022-11-25 13:36:47 +0100 | merijn | (~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 264 seconds) |
2022-11-25 13:38:36 +0100 | elevenkb | (~elevenkb@105.184.125.168) |
2022-11-25 13:44:50 +0100 | zant | (~zant@62.96.232.178) |
2022-11-25 13:46:24 +0100 | Unicorn_Princess | (~Unicorn_P@user/Unicorn-Princess/x-3540542) |
2022-11-25 13:52:58 +0100 | elevenkb | (~elevenkb@105.184.125.168) (Ping timeout: 265 seconds) |
2022-11-25 13:55:38 +0100 | nilradical | (~nilradica@user/naso) |
2022-11-25 13:56:56 +0100 | azimut | (~azimut@gateway/tor-sasl/azimut) |
2022-11-25 14:00:42 +0100 | nilradical | (~nilradica@user/naso) (Ping timeout: 265 seconds) |
2022-11-25 14:02:09 +0100 | jao | (~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net) (Ping timeout: 265 seconds) |
2022-11-25 14:03:30 +0100 | mestre | (~mestre@191.177.185.178) (Quit: leaving) |
2022-11-25 14:06:18 +0100 | Erutuon | (~Erutuon@user/erutuon) (Ping timeout: 260 seconds) |
2022-11-25 14:08:16 +0100 | heisenberg2 | (~heisenber@2a09:bac1:3f40::16:19a) |
2022-11-25 14:11:04 +0100 | elevenkb | (~elevenkb@105.184.125.168) |
2022-11-25 14:17:20 +0100 | acidjnk | (~acidjnk@p200300d6e7137a67f01158a637cc3bb0.dip0.t-ipconnect.de) (Ping timeout: 256 seconds) |
2022-11-25 14:21:24 +0100 | merijn | (~merijn@86-86-29-250.fixed.kpn.net) |
2022-11-25 14:21:30 +0100 | <dminuoso> | maerwald[m]: Mmm. I think its time to finally kick off monad-logger-core :S |
2022-11-25 14:21:50 +0100 | <dminuoso> | That depends only on unliftio-core and bytestrings. |
2022-11-25 14:22:26 +0100 | <dminuoso> | The unfortunate reality with orphan instances might make it hard to split the actual monad-logger package however. |
2022-11-25 14:23:11 +0100 | <dminuoso> | Given that there's instances like `MonadLogger m => MonadLogger (Pipe l i o u m)` |
2022-11-25 14:23:28 +0100 | tromp | (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
2022-11-25 14:24:59 +0100 | sammelweis_ | (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Quit: No Ping reply in 180 seconds.) |
2022-11-25 14:25:07 +0100 | sammelweis_ | (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) |
2022-11-25 14:25:38 +0100 | Kaiepi | (~Kaiepi@108.175.84.104) (Remote host closed the connection) |
2022-11-25 14:25:44 +0100 | <maerwald_> | dminuoso: have you seen https://github.com/input-output-hk/iohk-monitoring-framework |
2022-11-25 14:26:02 +0100 | Kaiepi | (~Kaiepi@108.175.84.104) |
2022-11-25 14:26:20 +0100 | <maerwald_> | at first, I wasn't sure if this is a java framework |
2022-11-25 14:26:35 +0100 | merijn | (~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 264 seconds) |
2022-11-25 14:26:40 +0100 | <dminuoso> | maerwald_: Yeah its a bit crazy. |
2022-11-25 14:26:56 +0100 | <dminuoso> | The disturbing thing is, we already have a uniform and adaptable mechanism to ship logs |
2022-11-25 14:27:04 +0100 | <dminuoso> | `man 3 syslog` |
2022-11-25 14:27:18 +0100 | <dminuoso> | Which nicely connects to systemd, and you can do all kinds of fancy redirects with that. |
2022-11-25 14:27:49 +0100 | <dminuoso> | On our clusters, we just run promtail on every node, collecting from journald and shoving it into loki. *shrugs* |
2022-11-25 14:28:06 +0100 | <dminuoso> | Software is blissfully unaware. |
2022-11-25 14:28:12 +0100 | <hpc> | syslog connects to just about everything |
2022-11-25 14:28:52 +0100 | pavonia | (~user@user/siracusa) (Read error: Connection reset by peer) |
2022-11-25 14:29:13 +0100 | <dminuoso> | maerwald_: that diagram on iohk-monitoring-framework looks like the twitter architecutre. |
2022-11-25 14:29:15 +0100 | maerwald_ | (~maerwald@mail.hasufell.de) (Changing host) |
2022-11-25 14:29:15 +0100 | maerwald_ | (~maerwald@user/maerwald) |
2022-11-25 14:29:22 +0100 | <maerwald_> | lol |
2022-11-25 14:29:25 +0100 | <dminuoso> | Maybe it can run twitter? :S |
2022-11-25 14:30:12 +0100 | jakalx | (~jakalx@base.jakalx.net) (Error from remote client) |
2022-11-25 14:30:17 +0100 | <maerwald_> | you think Elon was involved? |
2022-11-25 14:30:24 +0100 | maerwald_ | maerwald |
2022-11-25 14:31:23 +0100 | <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 |
2022-11-25 14:31:43 +0100 | <hpc> | https://hackage.haskell.org/package/hslogger-1.3.1.0 seems to have a nice api |
2022-11-25 14:31:51 +0100 | <dminuoso> | monad-logger in principle is great because it makes the problem someone elses problem. |
2022-11-25 14:32:03 +0100 | pavonia | (~user@user/siracusa) |
2022-11-25 14:32:11 +0100 | <dminuoso> | and if Im writing executable code, it all goes into syslog. |
2022-11-25 14:32:16 +0100 | <hpc> | (ignoring the global state, at least...) |
2022-11-25 14:33:46 +0100 | <maerwald> | yeah... composition is really hard once you go beyond function level |
2022-11-25 14:34:55 +0100 | <maerwald> | "everything is a file" wasn't too bad an attempt of solving it |
2022-11-25 14:35:05 +0100 | marc | (~marc@5.83.191.93) |
2022-11-25 14:35:06 +0100 | <maerwald> | because you have universal primitives |
2022-11-25 14:35:10 +0100 | <maerwald> | read and write, lol |
2022-11-25 14:35:29 +0100 | marc | Guest3723 |
2022-11-25 14:36:05 +0100 | jakalx | (~jakalx@base.jakalx.net) |
2022-11-25 14:36:25 +0100 | tromp | (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
2022-11-25 14:37:01 +0100 | <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. |
2022-11-25 14:37:13 +0100 | machined1od | (~machinedg@d198-53-218-113.abhsia.telus.net) |
2022-11-25 14:37:22 +0100 | <dminuoso> | darkling: Im willing to bet most people that use the word REST dont know what they're talking about. |
2022-11-25 14:37:50 +0100 | <darkling> | Yeah. I mean actual REST, not the bastardised HTTP-JSON-RPC that passes for it these days. |
2022-11-25 14:37:53 +0100 | machinedgod | (~machinedg@d198-53-218-113.abhsia.telus.net) (Read error: Connection reset by peer) |
2022-11-25 14:37:54 +0100 | <dminuoso> | Virtually everything dubbed as "REST" is not REST. |
2022-11-25 14:38:11 +0100 | <darkling> | My co-workers get this lecture at regular intervals. :) |
2022-11-25 14:38:23 +0100 | <dminuoso> | Did you hand them Fieldings PhD thesis? |
2022-11-25 14:38:27 +0100 | <darkling> | Yes. |
2022-11-25 14:38:29 +0100 | merijn | (~merijn@86-86-29-250.fixed.kpn.net) |
2022-11-25 14:38:33 +0100 | <dminuoso> | Nice! |
2022-11-25 14:40:08 +0100 | <albet70> | could do notation be used in lambda? |
2022-11-25 14:40:29 +0100 | <geekosaur> | if it has the right type |
2022-11-25 14:40:31 +0100 | <dminuoso> | albet70: a do-expression can be used in every place an expression is expected. |
2022-11-25 14:40:35 +0100 | <dminuoso> | syntactically, at least. |
2022-11-25 14:40:36 +0100 | <geekosaur> | otherwise, what's the point? |
2022-11-25 14:40:42 +0100 | <albet70> | ok |
2022-11-25 14:41:00 +0100 | <dminuoso> | which is why they're also called do-expressions. :) |
2022-11-25 14:41:35 +0100 | <dminuoso> | Here's a cute demonstration of that fact: |
2022-11-25 14:41:38 +0100 | <mauke> | > concatMap (\x -> do y <- [x, x * 10, x * 100]; return y) [4, 5, 6] |
2022-11-25 14:41:39 +0100 | <lambdabot> | [4,40,400,5,50,500,6,60,600] |
2022-11-25 14:41:41 +0100 | <dminuoso> | % let a :: Int; a = do 1 |
2022-11-25 14:41:41 +0100 | <yahb2> | <no output> |
2022-11-25 14:41:55 +0100 | <dminuoso> | See? You can even use this outside of monadic code! |
2022-11-25 14:42:31 +0100 | <mauke> | > do (do print) (do "hello, world") |
2022-11-25 14:42:33 +0100 | <lambdabot> | <IO ()> |
2022-11-25 14:42:36 +0100 | <dminuoso> | What is curious however: |
2022-11-25 14:42:37 +0100 | <mauke> | well, I tried |
2022-11-25 14:42:40 +0100 | <dminuoso> | % let a :: Int; a = do (do 1) |
2022-11-25 14:42:40 +0100 | <yahb2> | <no output> |
2022-11-25 14:43:17 +0100 | <dminuoso> | can even leave the parens away to test whether your coworkers really do read your pull requests. |
2022-11-25 14:43:22 +0100 | <dminuoso> | % let a :: Int; a = do do do 1 |
2022-11-25 14:43:22 +0100 | <yahb2> | <no output> |
2022-11-25 14:43:36 +0100 | <mauke> | that proves 'do' is idempotent |
2022-11-25 14:44:19 +0100 | <mauke> | just like 'die' in Perl |
2022-11-25 14:44:25 +0100 | <dminuoso> | With acme-dont, you can even write: don't do launchMissiles |
2022-11-25 14:44:28 +0100 | <mauke> | it's a "do or die" thing |
2022-11-25 14:45:10 +0100 | <mauke> | what a coincidence: https://metacpan.org/pod/Acme::Don::t |
2022-11-25 14:45:57 +0100 | <dminuoso> | perl has by far the best acme ideas. |
2022-11-25 14:46:00 +0100 | <hpc> | haskell's entire acme thing comes from perl |
2022-11-25 14:46:05 +0100 | <dminuoso> | My all time favourite is Acme::EyeDrops |
2022-11-25 14:46:39 +0100 | <hpc> | acme-schoenfinkel is my favorite |
2022-11-25 14:46:41 +0100 | <bjourne> | i have a "processing pipeline" consisting of a few functions that return maybes |
2022-11-25 14:46:50 +0100 | <hpc> | just for the pun at the end |
2022-11-25 14:47:00 +0100 | <bjourne> | is there a nicer way to "run" this pipleline than nested cases that match on Just and Nothing? |
2022-11-25 14:47:26 +0100 | <dminuoso> | hpc: Oh I love those. hässlich :: Schoenfinkel cat => cat a (cat b c) -> cat (a, b) c |
2022-11-25 14:47:32 +0100 | <dminuoso> | What a cute pun |
2022-11-25 14:47:58 +0100 | <mauke> | bjourne: >>= or do notation? |
2022-11-25 14:48:09 +0100 | <geekosaur> | bjourne, if you're just looking for a Just/Nothing at the end, use the Monad instance |
2022-11-25 14:48:38 +0100 | nilradical | (~nilradica@user/naso) |
2022-11-25 14:49:45 +0100 | <bjourne> | it's not sufficient since i need to print potential errors from each function |
2022-11-25 14:50:37 +0100 | <dminuoso> | bjourne: You can use `Either Err` then instead. |
2022-11-25 14:50:48 +0100 | <dminuoso> | In the Left case, just print (say to stderr) |
2022-11-25 14:51:26 +0100 | <bjourne> | no, the functions are Maybe |
2022-11-25 14:53:09 +0100 | nilradical | (~nilradica@user/naso) (Remote host closed the connection) |
2022-11-25 14:56:11 +0100 | <dminuoso> | Maybe is not a function type. Can you be more explicit? |
2022-11-25 14:58:16 +0100 | <albet70> | >>= this reverse is <<= or =<<? |
2022-11-25 14:59:18 +0100 | <albet70> | =<< |
2022-11-25 14:59:26 +0100 | <bjourne> | dminuoso: { e1 = f0(e0) if (e1 == null) dieWith "f0 failed" e2 = f1(e1) if (e2 == null) dieWith "f1 failed" ... return e5 } |
2022-11-25 14:59:50 +0100 | <dminuoso> | bjourne: Is it of type `... S -> IO (Maybe T)` ? |
2022-11-25 15:00:29 +0100 | <bjourne> | no |
2022-11-25 15:00:51 +0100 | <dminuoso> | bjourne: that does not read like valid Haskell code. |
2022-11-25 15:01:00 +0100 | <dminuoso> | Can you please share the real code and not some pseudo code? |
2022-11-25 15:01:03 +0100 | nilradical | (~nilradica@user/naso) |
2022-11-25 15:01:23 +0100 | elevenkb | (~elevenkb@105.184.125.168) (Read error: Connection reset by peer) |
2022-11-25 15:02:26 +0100 | <bjourne> | i can't. but that's the code's structure |
2022-11-25 15:02:37 +0100 | heisenberg2 | (~heisenber@2a09:bac1:3f40::16:19a) (Remote host closed the connection) |
2022-11-25 15:06:53 +0100 | cfricke | (~cfricke@user/cfricke) (Quit: WeeChat 3.7.1) |
2022-11-25 15:08:18 +0100 | <albet70> | how to break long line code? with \? |
2022-11-25 15:09:57 +0100 | <hpc> | you don't need to, you can just use newlines and layout |
2022-11-25 15:10:09 +0100 | <hpc> | if you have some long expression "foo bar baz", you can write |
2022-11-25 15:10:09 +0100 | <hpc> | foo |
2022-11-25 15:10:10 +0100 | <hpc> | bar |
2022-11-25 15:10:11 +0100 | <hpc> | baz |
2022-11-25 15:10:15 +0100 | <hpc> | or something along those lines |
2022-11-25 15:10:19 +0100 | <albet70> | hpc, but what about the indent? |
2022-11-25 15:10:20 +0100 | <hpc> | it's pretty flexible |
2022-11-25 15:10:32 +0100 | <albet70> | could it be wrong with the indent? in do notation |
2022-11-25 15:11:12 +0100 | <pavonia> | You just indent the broken lines futher |
2022-11-25 15:11:21 +0100 | <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 |
2022-11-25 15:11:59 +0100 | <albet70> | like this one https://paste.tomsmeding.com/0t0nbzGY |
2022-11-25 15:12:13 +0100 | merijn | (~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 260 seconds) |
2022-11-25 15:12:30 +0100 | <albet70> | line 219 is too long |
2022-11-25 15:13:02 +0100 | <dminuoso> | bjourne: That is not valid code structure, it is not even remotely syntactically valid haskell |
2022-11-25 15:13:17 +0100 | <dminuoso> | I cant even guess at what that is trying to convey. |
2022-11-25 15:13:32 +0100 | Unicorn_Princess | (~Unicorn_P@user/Unicorn-Princess/x-3540542) (Remote host closed the connection) |
2022-11-25 15:13:48 +0100 | AlexNoo_ | (~AlexNoo@94.233.240.159) |
2022-11-25 15:13:57 +0100 | srz | (~srz@devil.dm.uba.ar) |
2022-11-25 15:16:48 +0100 | akegalj | (~akegalj@93-139-151-182.adsl.net.t-com.hr) |
2022-11-25 15:17:01 +0100 | Alex_test | (~al_test@178.34.163.201) (Ping timeout: 252 seconds) |
2022-11-25 15:17:26 +0100 | AlexZenon | (~alzenon@178.34.163.201) (Ping timeout: 268 seconds) |
2022-11-25 15:17:49 +0100 | AlexNoo | (~AlexNoo@178.34.163.201) (Ping timeout: 260 seconds) |
2022-11-25 15:18:30 +0100 | sammelweis_ | (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Quit: No Ping reply in 180 seconds.) |
2022-11-25 15:18:41 +0100 | <mauke> | :t maybe |
2022-11-25 15:18:42 +0100 | <lambdabot> | b -> (a -> b) -> Maybe a -> b |
2022-11-25 15:19:47 +0100 | sammelweis_ | (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) |
2022-11-25 15:20:19 +0100 | <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); ... |
2022-11-25 15:20:30 +0100 | <mauke> | :t fromMaybe |
2022-11-25 15:20:31 +0100 | <lambdabot> | a -> Maybe a -> a |
2022-11-25 15:21:05 +0100 | <mauke> | or even: let e1 = fromMaybe (error "f0 failed") (f0 e0); etc. |
2022-11-25 15:22:13 +0100 | jao | (~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net) |
2022-11-25 15:22:28 +0100 | <bjourne> | what is pure here? |
2022-11-25 15:22:32 +0100 | Alex_test | (~al_test@94.233.240.159) |
2022-11-25 15:22:35 +0100 | <hpc> | :t pure |
2022-11-25 15:22:37 +0100 | <lambdabot> | Applicative f => a -> f a |
2022-11-25 15:22:53 +0100 | AlexZenon | (~alzenon@94.233.240.159) |
2022-11-25 15:24:41 +0100 | <bjourne> | i solved it like this: tokens <- maybe (Left ("Tokenization error", ExitFailure 1)) Right $ tokenize line |
2022-11-25 15:24:57 +0100 | <bjourne> | not ideal to have to repeat Left and Right all the time though |
2022-11-25 15:25:09 +0100 | <dminuoso> | bjourne: Define yourself a function called `note :: a -> Maybe b -> Either a b` |
2022-11-25 15:25:33 +0100 | <dminuoso> | Then you can just write `r <- note "Tokenization error" (tokenize line)` ... |
2022-11-25 15:25:52 +0100 | <dminuoso> | And the ExitFailure you should best just skip, its poor coupling |
2022-11-25 15:25:59 +0100 | <mauke> | :t maybe (Left ("Tokenization error", ExitFailure 1)) Right |
2022-11-25 15:26:00 +0100 | <lambdabot> | error: |
2022-11-25 15:26:00 +0100 | <lambdabot> | Data constructor not in scope: ExitFailure :: t0 -> b1 |
2022-11-25 15:26:08 +0100 | <mauke> | ah |
2022-11-25 15:26:17 +0100 | <dminuoso> | If you want distinct exit codes, use an ADT to encode different failure conditions `data Err = TokError | FooError`, and scrutinize on that later |
2022-11-25 15:26:57 +0100 | <mauke> | :t maybe (Left ("Tokenization error", System.Exit.ExitFailure 1)) Right |
2022-11-25 15:26:59 +0100 | <lambdabot> | Maybe b -> Either ([Char], GHC.IO.Exception.ExitCode) b |
2022-11-25 15:27:08 +0100 | <mauke> | yeah, that's a bit hairy |
2022-11-25 15:27:47 +0100 | <dminuoso> | % note :: a -> Maybe b -> Either a b; note a = maybe (Left a) Right |
2022-11-25 15:27:47 +0100 | <yahb2> | <no output> |
2022-11-25 15:28:05 +0100 | bitdex | (~bitdex@gateway/tor-sasl/bitdex) (Ping timeout: 255 seconds) |
2022-11-25 15:28:18 +0100 | <dminuoso> | That's one of those utiltiy functions I find myself using in every project, though sometimes with flipped arguments, sometimes slightly different types.. |
2022-11-25 15:28:53 +0100 | malte | (~malte@mal.tc) (Remote host closed the connection) |
2022-11-25 15:28:55 +0100 | <mauke> | @pl \a -> maybe (Left a) Right |
2022-11-25 15:28:56 +0100 | <lambdabot> | flip maybe Right . Left |
2022-11-25 15:29:00 +0100 | <mauke> | ... no. |
2022-11-25 15:29:56 +0100 | malte | (~malte@mal.tc) |
2022-11-25 15:30:45 +0100 | bitdex | (~bitdex@gateway/tor-sasl/bitdex) |
2022-11-25 15:34:31 +0100 | dsrt^ | (~dsrt@76.145.185.103) (Remote host closed the connection) |
2022-11-25 15:37:35 +0100 | <nilradical> | how can i get rid of these annoying warnings (macos13) : |
2022-11-25 15:37:40 +0100 | <nilradical> | ld: warning: directory not found for option '-L/opt/local/lib/' |
2022-11-25 15:37:41 +0100 | <nilradical> | ld: warning: directory not found for option '-L/usr/local/lib/' |
2022-11-25 15:37:41 +0100 | <nilradical> | ld: warning: -undefined dynamic_lookup may not work with chained fixups |
2022-11-25 15:41:27 +0100 | kenran | (~user@user/kenran) |
2022-11-25 15:42:18 +0100 | kenran | (~user@user/kenran) (Remote host closed the connection) |
2022-11-25 15:43:00 +0100 | <bjourne> | dminuoso: that's reasonable but i would have expected haskell to have something a little more general |
2022-11-25 15:43:00 +0100 | shriekingnoise | (~shrieking@186.137.167.202) |
2022-11-25 15:44:45 +0100 | razetime | (~quassel@117.254.35.74) (Remote host closed the connection) |
2022-11-25 15:47:28 +0100 | nilradical | (~nilradica@user/naso) (Remote host closed the connection) |
2022-11-25 15:47:47 +0100 | nilradical | (~nilradica@user/naso) |
2022-11-25 15:48:26 +0100 | nate4 | (~nate@98.45.169.16) |
2022-11-25 15:51:34 +0100 | <albet70> | why there's no isEmpty for list? |
2022-11-25 15:52:12 +0100 | eggplantade | (~Eggplanta@2600:1700:38c5:d800:1933:e30c:90a:59fd) |
2022-11-25 15:52:29 +0100 | <[exa]> | albet70: `null` ? |
2022-11-25 15:53:15 +0100 | <albet70> | yes, null can check empty list, but why the name isn't isEmpty |
2022-11-25 15:53:49 +0100 | nate4 | (~nate@98.45.169.16) (Ping timeout: 268 seconds) |
2022-11-25 15:54:19 +0100 | <mauke> | :kneeling_warthog: |
2022-11-25 15:55:24 +0100 | <geekosaur> | you perhaps haven't noticed that Haskell stuff has mathy names? |
2022-11-25 15:56:42 +0100 | eggplantade | (~Eggplanta@2600:1700:38c5:d800:1933:e30c:90a:59fd) (Ping timeout: 265 seconds) |
2022-11-25 15:56:58 +0100 | <mauke> | similarly, getUniqueElements is called "nub" |
2022-11-25 16:01:48 +0100 | sawilagar | (~sawilagar@user/sawilagar) (Ping timeout: 260 seconds) |
2022-11-25 16:02:11 +0100 | <hpc> | and map is called... map |
2022-11-25 16:02:15 +0100 | <hpc> | i mean fmap |
2022-11-25 16:02:17 +0100 | <hpc> | i mean (.) |
2022-11-25 16:02:21 +0100 | <hpc> | :P |
2022-11-25 16:03:05 +0100 | wroathe | (~wroathe@207-153-38-140.fttp.usinternet.com) |
2022-11-25 16:03:05 +0100 | wroathe | (~wroathe@207-153-38-140.fttp.usinternet.com) (Changing host) |
2022-11-25 16:03:05 +0100 | wroathe | (~wroathe@user/wroathe) |
2022-11-25 16:04:20 +0100 | <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 |
2022-11-25 16:04:20 +0100 | <albet70> | hpc, right! and reduce is called foldl1 |
2022-11-25 16:08:14 +0100 | merijn | (~merijn@86-86-29-250.fixed.kpn.net) |
2022-11-25 16:10:31 +0100 | manwithluck | (~manwithlu@194.177.28.176) (Read error: Connection reset by peer) |
2022-11-25 16:13:29 +0100 | manwithluck | (~manwithlu@194.177.28.176) |
2022-11-25 16:17:00 +0100 | justsomeguy | (~justsomeg@user/justsomeguy) |
2022-11-25 16:17:28 +0100 | <bjourne> | but tragically, minimum of a list is actually called minimum and not infimum |
2022-11-25 16:19:08 +0100 | chromoblob | (~user@37.113.164.122) |
2022-11-25 16:19:44 +0100 | <mauke> | that's different. minimum can't return elements that are not in the list |
2022-11-25 16:19:54 +0100 | acidjnk | (~acidjnk@p200300d6e7137a87e80cc9250548b2f9.dip0.t-ipconnect.de) |
2022-11-25 16:23:46 +0100 | teo | (~teo@user/teo) (Ping timeout: 265 seconds) |
2022-11-25 16:27:23 +0100 | mvk | (~mvk@2607:fea8:5ce3:8500::efb) |
2022-11-25 16:29:19 +0100 | [Leary] | (~Leary]@user/Leary/x-0910699) (Remote host closed the connection) |
2022-11-25 16:29:37 +0100 | [Leary] | (~Leary]@user/Leary/x-0910699) |
2022-11-25 16:30:28 +0100 | mvk | (~mvk@2607:fea8:5ce3:8500::efb) (Client Quit) |
2022-11-25 16:30:49 +0100 | justsomeguy | (~justsomeg@user/justsomeguy) (Ping timeout: 268 seconds) |
2022-11-25 16:33:18 +0100 | InstX1_ | (~Liam@2601:6c4:4081:54f0:e9f2:606c:4487:f118) (Ping timeout: 260 seconds) |
2022-11-25 16:33:31 +0100 | raehik | (~raehik@92.40.202.127.threembb.co.uk) |
2022-11-25 16:33:41 +0100 | Inst | (~Inst@2601:6c4:4081:54f0:681d:b835:8895:3ea8) (Ping timeout: 255 seconds) |
2022-11-25 16:37:43 +0100 | LemanR | (~LemanR@pool-74-109-28-147.phlapa.fios.verizon.net) |
2022-11-25 16:42:47 +0100 | merijn | (~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 264 seconds) |
2022-11-25 16:43:17 +0100 | chexum | (~quassel@gateway/tor-sasl/chexum) (Remote host closed the connection) |
2022-11-25 16:44:46 +0100 | heisenberg2 | (~heisenber@2a09:bac1:3f60::16:19a) |
2022-11-25 16:45:05 +0100 | chexum | (~quassel@gateway/tor-sasl/chexum) |
2022-11-25 16:46:59 +0100 | tomboy64 | (~tomboy64@user/tomboy64) (Quit: Off to see the wizard.) |
2022-11-25 16:49:48 +0100 | jakalx | (~jakalx@base.jakalx.net) () |
2022-11-25 16:51:06 +0100 | nilradical | (~nilradica@user/naso) () |
2022-11-25 16:53:28 +0100 | tomboy64 | (~tomboy64@user/tomboy64) |
2022-11-25 16:54:52 +0100 | sammelweis_ | (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Ping timeout: 256 seconds) |
2022-11-25 16:55:00 +0100 | sammelweis_ | (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) |
2022-11-25 16:56:50 +0100 | jakalx | (~jakalx@base.jakalx.net) |
2022-11-25 16:58:50 +0100 | justsomeguy | (~justsomeg@user/justsomeguy) |
2022-11-25 17:00:05 +0100 | steve[m] | (~stevetrou@2001:470:69fc:105::e0b) (Quit: You have been kicked for being idle) |
2022-11-25 17:01:28 +0100 | srz | (~srz@devil.dm.uba.ar) (Ping timeout: 265 seconds) |
2022-11-25 17:02:01 +0100 | kuribas | (~user@ptr-17d51emqj0opa703e0o.18120a2.ip6.access.telenet.be) |
2022-11-25 17:03:22 +0100 | pavonia | (~user@user/siracusa) (Quit: Bye!) |
2022-11-25 17:05:38 +0100 | jinsl | (~jinsl@2408:8207:2557:ce20:211:32ff:fec8:6aea) (Ping timeout: 256 seconds) |
2022-11-25 17:05:49 +0100 | wroathe | (~wroathe@user/wroathe) (Ping timeout: 265 seconds) |
2022-11-25 17:05:49 +0100 | jinsl- | (~jinsl@123.120.168.177) |
2022-11-25 17:09:21 +0100 | heisenberg2 | (~heisenber@2a09:bac1:3f60::16:19a) (Remote host closed the connection) |
2022-11-25 17:10:03 +0100 | <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? |
2022-11-25 17:10:08 +0100 | heisenberg2 | (~heisenber@2a09:bac1:3f60::16:19a) |
2022-11-25 17:11:26 +0100 | <geekosaur> | depends on what you mean by "improved on" |
2022-11-25 17:12:49 +0100 | <geekosaur> | Idris is more or less Haskell with dependent types. Clean is Haskell with uniqueness types. Curry is a logic language modeled on Haskell. |
2022-11-25 17:13:42 +0100 | <geekosaur> | for that matter, ghc isn't static; with 9.0 we got linear types, although they're not integrated very well as yet |
2022-11-25 17:13:49 +0100 | <[exa]> | LemanR: much of the research is usually put right into haskell |
2022-11-25 17:14:01 +0100 | <[exa]> | for like 30-ish years now |
2022-11-25 17:15:50 +0100 | <kuribas> | well, when it comes to type level computation, idris is more advanced than haskell. |
2022-11-25 17:16:19 +0100 | <kuribas> | haskell type level computation is just a lot of hacks around HM inference and type classes. |
2022-11-25 17:16:43 +0100 | <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 |
2022-11-25 17:16:43 +0100 | <LemanR> | i guess I'll read now. |
2022-11-25 17:17:12 +0100 | <LemanR> | * read about idris |
2022-11-25 17:18:25 +0100 | <bjourne> | If you're on the clr F# is really nice |
2022-11-25 17:19:03 +0100 | <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. |
2022-11-25 17:19:50 +0100 | <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... |
2022-11-25 17:19:58 +0100 | acidjnk | (~acidjnk@p200300d6e7137a87e80cc9250548b2f9.dip0.t-ipconnect.de) (Ping timeout: 260 seconds) |
2022-11-25 17:20:19 +0100 | ddellacosta | (~ddellacos@89.45.224.188) |
2022-11-25 17:20:26 +0100 | <[exa]> | LemanR: I'd kinda say that everyone's awaiting the killer new haskell and no can decide what to put in it. :D |
2022-11-25 17:21:51 +0100 | <[exa]> | kuribas: btw AFAIK ghc actually discarded the "super-hacked HM inference" a long ago, now there's the constraint-solving typesystem over Fω |
2022-11-25 17:22:05 +0100 | <kuribas> | [exa]: ah right :) |
2022-11-25 17:22:07 +0100 | <[exa]> | there's a nice SPJ video from zurihac about that somewhere on youtube |
2022-11-25 17:23:12 +0100 | <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. |
2022-11-25 17:23:26 +0100 | <[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 |
2022-11-25 17:25:29 +0100 | <kuribas> | LemanR: forcing you to think about elegant code is indeed the best thing you learn in haskell. |
2022-11-25 17:25:57 +0100 | <kuribas> | LemanR: before haskell I was learning scheme, ruby, and ocaml, but I never really found my code elegant. |
2022-11-25 17:26:11 +0100 | <[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) |
2022-11-25 17:26:25 +0100 | <kuribas> | haskell tought me to think about local state, and how to write higher level abstractions over complicated low level code. |
2022-11-25 17:26:57 +0100 | srz | (~srz@devil.dm.uba.ar) |
2022-11-25 17:27:34 +0100 | <kuribas> | [exa]: idk, I prefer haskell monoculture over the scheme situation |
2022-11-25 17:28:04 +0100 | econo | (uid147250@user/econo) |
2022-11-25 17:28:13 +0100 | coot | (~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba) () |
2022-11-25 17:28:25 +0100 | <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? |
2022-11-25 17:28:54 +0100 | jakalx | (~jakalx@base.jakalx.net) (Error from remote client) |
2022-11-25 17:29:32 +0100 | <oak-> | I thought Haskell has similar kind of history, there used to be different kinds of ML-languages or something along the lines |
2022-11-25 17:30:26 +0100 | <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) |
2022-11-25 17:31:13 +0100 | <kuribas> | LemanR: common lisp was a compromise. And not an easy one. |
2022-11-25 17:32:11 +0100 | <geekosaur> | oak-, Haskell isn't really an ML except in syntax. it staked out the purity+laziness area as its own |
2022-11-25 17:32:19 +0100 | jakalx | (~jakalx@base.jakalx.net) |
2022-11-25 17:32:30 +0100 | <geekosaur> | OCaml seems to have won the ML dialects war |
2022-11-25 17:32:44 +0100 | <kuribas> | oak-: yeah, haskell was actually made by a committee. |
2022-11-25 17:33:18 +0100 | <kuribas> | geekosaur: by on it's own you mean miranda and other languages? |
2022-11-25 17:33:50 +0100 | <geekosaur> | well, Haskell was originally intended to free that arena from closed source limitations so more research could be done in the area |
2022-11-25 17:33:55 +0100 | <geekosaur> | as I understand it |
2022-11-25 17:36:35 +0100 | <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 |
2022-11-25 17:36:36 +0100 | <LemanR> | educated in CS |
2022-11-25 17:37:04 +0100 | __monty__ | (~toonn@user/toonn) |
2022-11-25 17:37:29 +0100 | <geekosaur> | tbh my resource for that was this channel 🙂 |
2022-11-25 17:37:43 +0100 | <hpc> | ^ |
2022-11-25 17:37:48 +0100 | <hpc> | i would just hang out and google things |
2022-11-25 17:38:19 +0100 | <hpc> | you'll occasionally find a fun rabbit hole to go down, and come out of it with more context for everything else |
2022-11-25 17:38:47 +0100 | merijn | (~merijn@86-86-29-250.fixed.kpn.net) |
2022-11-25 17:39:21 +0100 | <hpc> | don't limit yourself to traditionally programming-y math either, there's some good stuff down the algebra rabbit hole too |
2022-11-25 17:39:23 +0100 | <geekosaur> | (I'm pretty much completely self-educated; my formal education was a semester of engineering FORTRAN) |
2022-11-25 17:39:27 +0100 | <hpc> | everything's connected in some way |
2022-11-25 17:39:28 +0100 | <[exa]> | kuribas: there's only one scheme though |
2022-11-25 17:39:36 +0100 | <[exa]> | it just happens to have 54272934857923487 implementations |
2022-11-25 17:39:38 +0100 | <kuribas> | I am self-educated as well |
2022-11-25 17:40:09 +0100 | <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. |
2022-11-25 17:40:41 +0100 | <LemanR> | but that would be for chat channel before I rant. |
2022-11-25 17:40:55 +0100 | <LemanR> | *for a chat channel* |
2022-11-25 17:40:57 +0100 | lortabac | (~lortabac@2a01:e0a:541:b8f0:c8be:9533:986e:aefa) (Quit: WeeChat 2.8) |
2022-11-25 17:41:05 +0100 | <[exa]> | I think arch rants are well accepted here |
2022-11-25 17:41:09 +0100 | <mauke> | https://www.youtube.com/watch?v=H0Ek86IH-3Y |
2022-11-25 17:41:35 +0100 | <[exa]> | given certain non-beneficial properties of ghc packaging there |
2022-11-25 17:41:58 +0100 | <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. |
2022-11-25 17:42:28 +0100 | <LemanR> | basically my own way of getting a bedrocks linux functionality. |
2022-11-25 17:43:47 +0100 | <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. |
2022-11-25 17:49:42 +0100 | <[exa]> | maybe try nix? |
2022-11-25 17:50:05 +0100 | wroathe | (~wroathe@207-153-38-140.fttp.usinternet.com) |
2022-11-25 17:50:05 +0100 | wroathe | (~wroathe@207-153-38-140.fttp.usinternet.com) (Changing host) |
2022-11-25 17:50:05 +0100 | wroathe | (~wroathe@user/wroathe) |
2022-11-25 17:50:17 +0100 | zant | (~zant@62.96.232.178) (Ping timeout: 265 seconds) |
2022-11-25 17:52:53 +0100 | <hpc> | emphasis on "try", they've been improving how you interact with it but there's still a lot of inconsistency |
2022-11-25 17:52:59 +0100 | <hpc> | it's kind of like learning the git cli, but moreso |
2022-11-25 17:53:35 +0100 | srz | (~srz@devil.dm.uba.ar) (Ping timeout: 264 seconds) |
2022-11-25 17:53:51 +0100 | <LemanR> | not sure about nix but my last attempts at a nix system were fairly bad (but I was more novice then) |
2022-11-25 17:53:56 +0100 | eggplantade | (~Eggplanta@104-55-37-220.lightspeed.sntcca.sbcglobal.net) |
2022-11-25 17:54:07 +0100 | fserucas | (~fserucas@2001:818:e376:a400:fb92:70c1:dd88:c7d7) (Quit: Leaving) |
2022-11-25 17:54:12 +0100 | <hpc> | (although nixos was also in the mix for me) |
2022-11-25 17:54:23 +0100 | <hpc> | maybe standalone nix is better |
2022-11-25 17:54:45 +0100 | <dsal> | nixos sometimes becomes gentoo when you get to rebuild the whole system to upgrade cat. |
2022-11-25 17:54:50 +0100 | manwithluck | (~manwithlu@194.177.28.176) (Read error: Connection reset by peer) |
2022-11-25 17:55:10 +0100 | <dsal> | I've managed to avoid understanding nix for the most part, but I do like my nixos boxes. |
2022-11-25 17:58:17 +0100 | manwithluck | (~manwithlu@194.177.28.176) |
2022-11-25 17:58:59 +0100 | raehik | (~raehik@92.40.202.127.threembb.co.uk) (Ping timeout: 264 seconds) |
2022-11-25 17:59:00 +0100 | eggplantade | (~Eggplanta@104-55-37-220.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 268 seconds) |
2022-11-25 17:59:51 +0100 | raehik | (~raehik@92.40.202.121.threembb.co.uk) |
2022-11-25 18:00:36 +0100 | <[exa]> | LemanR: ah no worries it was a random idea :] |
2022-11-25 18:01:51 +0100 | AlexNoo_ | AlexNoo |
2022-11-25 18:02:25 +0100 | sawilagar | (~sawilagar@user/sawilagar) |
2022-11-25 18:07:52 +0100 | [itchyjunk] | (~itchyjunk@user/itchyjunk/x-7353470) |
2022-11-25 18:11:35 +0100 | raehik | (~raehik@92.40.202.121.threembb.co.uk) (Ping timeout: 264 seconds) |
2022-11-25 18:13:29 +0100 | merijn | (~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 265 seconds) |
2022-11-25 18:13:52 +0100 | Tuplanolla | (~Tuplanoll@91-159-68-152.elisa-laajakaista.fi) |
2022-11-25 18:14:04 +0100 | jakalx | (~jakalx@base.jakalx.net) (Error from remote client) |
2022-11-25 18:14:35 +0100 | gurkenglas | (~gurkengla@p548ac72e.dip0.t-ipconnect.de) (Ping timeout: 264 seconds) |
2022-11-25 18:19:09 +0100 | LemanR | (~LemanR@pool-74-109-28-147.phlapa.fios.verizon.net) (Quit: Client closed) |
2022-11-25 18:19:39 +0100 | gurkenglas | (~gurkengla@p548ac72e.dip0.t-ipconnect.de) |
2022-11-25 18:21:40 +0100 | acidjnk | (~acidjnk@p200300d6e7137a87d85cd0c34b3d9cfa.dip0.t-ipconnect.de) |
2022-11-25 18:22:08 +0100 | kuribas | (~user@ptr-17d51emqj0opa703e0o.18120a2.ip6.access.telenet.be) (Quit: ERC (IRC client for Emacs 27.1)) |
2022-11-25 18:22:15 +0100 | VOID418 | (~user@89.151.44.90) (Remote host closed the connection) |
2022-11-25 18:23:57 +0100 | jakalx | (~jakalx@base.jakalx.net) |
2022-11-25 18:24:47 +0100 | justsomeguy | (~justsomeg@user/justsomeguy) (Ping timeout: 264 seconds) |
2022-11-25 18:24:59 +0100 | tromp | (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
2022-11-25 18:25:59 +0100 | gurkenglas | (~gurkengla@p548ac72e.dip0.t-ipconnect.de) (Ping timeout: 264 seconds) |
2022-11-25 18:30:42 +0100 | ub | (~Thunderbi@77.119.195.101.wireless.dyn.drei.com) |
2022-11-25 18:31:39 +0100 | money_ | (~Gambino@user/polo) |
2022-11-25 18:32:00 +0100 | akegalj | (~akegalj@93-139-151-182.adsl.net.t-com.hr) (Quit: leaving) |
2022-11-25 18:32:20 +0100 | ubert | (~Thunderbi@77.119.213.106.wireless.dyn.drei.com) (Ping timeout: 265 seconds) |
2022-11-25 18:32:20 +0100 | ub | ubert |
2022-11-25 18:35:21 +0100 | heisenberg2 | (~heisenber@2a09:bac1:3f60::16:19a) (Remote host closed the connection) |
2022-11-25 18:35:53 +0100 | sawilagar | (~sawilagar@user/sawilagar) (Read error: Connection reset by peer) |
2022-11-25 18:36:28 +0100 | heisenberg2 | (~heisenber@2a09:bac1:3f60::16:19a) |
2022-11-25 18:36:57 +0100 | heisenberg2 | (~heisenber@2a09:bac1:3f60::16:19a) (Remote host closed the connection) |
2022-11-25 18:37:49 +0100 | money_ | polo |
2022-11-25 18:38:02 +0100 | polo | money_ |
2022-11-25 18:38:14 +0100 | money_ | polo |
2022-11-25 18:38:22 +0100 | waleee | (~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340) |
2022-11-25 18:38:38 +0100 | polo | money_ |
2022-11-25 18:39:12 +0100 | money_ | polo |
2022-11-25 18:39:30 +0100 | <[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? |
2022-11-25 18:39:32 +0100 | coot | (~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba) |
2022-11-25 18:39:48 +0100 | tromp | (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
2022-11-25 18:41:33 +0100 | <[exa]> | (actually a semigroup would be sufficient) |
2022-11-25 18:46:44 +0100 | <[exa]> | ah nice it's actually `Ap Maybe [a]` |
2022-11-25 18:48:12 +0100 | notzmv | (~zmv@user/notzmv) (Ping timeout: 256 seconds) |
2022-11-25 18:50:01 +0100 | merijn | (~merijn@86-86-29-250.fixed.kpn.net) |
2022-11-25 18:50:02 +0100 | tromp | (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
2022-11-25 18:52:27 +0100 | polo | (~Gambino@user/polo) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
2022-11-25 18:55:03 +0100 | merijn | (~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 265 seconds) |
2022-11-25 18:56:17 +0100 | money_ | (~Gambino@user/polo) |
2022-11-25 18:57:20 +0100 | azimut | (~azimut@gateway/tor-sasl/azimut) (Ping timeout: 255 seconds) |
2022-11-25 18:58:17 +0100 | azimut | (~azimut@gateway/tor-sasl/azimut) |
2022-11-25 18:58:31 +0100 | jakalx | (~jakalx@base.jakalx.net) (Error from remote client) |
2022-11-25 18:59:13 +0100 | <bjourne> | [exa]: short-circuiting |
2022-11-25 19:02:58 +0100 | eggplantade | (~Eggplanta@2600:1700:38c5:d800:1933:e30c:90a:59fd) |
2022-11-25 19:05:10 +0100 | jakalx | (~jakalx@base.jakalx.net) |
2022-11-25 19:16:45 +0100 | mei | (~mei@user/mei) |
2022-11-25 19:17:13 +0100 | gurkenglas | (~gurkengla@p548ac72e.dip0.t-ipconnect.de) |
2022-11-25 19:18:05 +0100 | merijn | (~merijn@86-86-29-250.fixed.kpn.net) |
2022-11-25 19:18:26 +0100 | tromp | (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
2022-11-25 19:21:38 +0100 | beteigeuze | (~Thunderbi@a79-169-109-107.cpe.netcabo.pt) (Quit: beteigeuze) |
2022-11-25 19:21:47 +0100 | beteigeuze1 | (~Thunderbi@a79-169-109-107.cpe.netcabo.pt) |
2022-11-25 19:24:20 +0100 | tzh | (~tzh@c-24-21-73-154.hsd1.wa.comcast.net) |
2022-11-25 19:26:19 +0100 | zebrag | (~chris@user/zebrag) |
2022-11-25 19:26:35 +0100 | beteigeuze1 | (~Thunderbi@a79-169-109-107.cpe.netcabo.pt) (Ping timeout: 264 seconds) |
2022-11-25 19:29:28 +0100 | chexum | (~quassel@gateway/tor-sasl/chexum) (Remote host closed the connection) |
2022-11-25 19:29:50 +0100 | chexum | (~quassel@gateway/tor-sasl/chexum) |
2022-11-25 19:30:06 +0100 | <dminuoso> | bjourne: not sure what kind of generalization you expect. |
2022-11-25 19:30:23 +0100 | <dminuoso> | bjourne: A different approoach would be to wrap more in IO and use IO exceptions. |
2022-11-25 19:30:31 +0100 | <dminuoso> | That's way less general, but potentially more ergonomic. |
2022-11-25 19:30:34 +0100 | tromp | (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
2022-11-25 19:32:08 +0100 | k` | (~user@2605:a601:a60d:5400:4e:d060:14f9:8a36) |
2022-11-25 19:32:43 +0100 | <k`> | Is it possible to force GHC to resolve duplicate overlappable instances by choosing one arbitrarily? |
2022-11-25 19:33:52 +0100 | <geekosaur> | I think the implementation forbids that situation (the instances would resolve to the same symbol at link time) |
2022-11-25 19:33:54 +0100 | <dminuoso> | Yes, its called IncoherentInstances |
2022-11-25 19:34:20 +0100 | <geekosaur> | oh, really? I thought exact duplicates were pretty much impossible even with Incoherent |
2022-11-25 19:34:46 +0100 | <dminuoso> | Mmm, maybe I misinterpreted their use of the word "duplicate" |
2022-11-25 19:34:52 +0100 | <geekosaur> | since instances are global they map to global symbols and you can't have more than one |
2022-11-25 19:35:13 +0100 | <dminuoso> | Interestingly IncoherentInstances is deprecated anyway |
2022-11-25 19:35:24 +0100 | <dminuoso> | Ah beacuse you can mark INCOHERENT per instance as wel |
2022-11-25 19:35:40 +0100 | <dminuoso> | Okay did not know that, but then again I have not yet properly understood why INCOHERENT would be useful at all |
2022-11-25 19:36:42 +0100 | <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 |
2022-11-25 19:37:24 +0100 | <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? |
2022-11-25 19:39:37 +0100 | <geekosaur> | the instances are exposed in the package .hi files, so the compiler will know and report an error |
2022-11-25 19:40:04 +0100 | <geekosaur> | if it's an exact overlap |
2022-11-25 19:40:45 +0100 | <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 |
2022-11-25 19:41:06 +0100 | zmt00 | (~zmt00@user/zmt00) (Quit: Leaving) |
2022-11-25 19:41:39 +0100 | <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? |
2022-11-25 19:42:12 +0100 | tromp | (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
2022-11-25 19:42:12 +0100 | <geekosaur> | that's not exact |
2022-11-25 19:42:23 +0100 | <geekosaur> | Foo a is not Foo Text |
2022-11-25 19:43:37 +0100 | <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? |
2022-11-25 19:43:58 +0100 | <geekosaur> | both would map to Functor m, yes |
2022-11-25 19:44:21 +0100 | <k`> | OK, that makes sense. Thanks! |
2022-11-25 19:44:34 +0100 | <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 |
2022-11-25 19:45:49 +0100 | <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. |
2022-11-25 19:46:56 +0100 | zmt00 | (~zmt00@user/zmt00) |
2022-11-25 19:48:03 +0100 | emmanuelux | (~emmanuelu@user/emmanuelux) |
2022-11-25 19:49:40 +0100 | merijn | (~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 265 seconds) |
2022-11-25 19:49:56 +0100 | nate4 | (~nate@98.45.169.16) |
2022-11-25 19:51:42 +0100 | turlando | (~turlando@user/turlando) |
2022-11-25 19:54:59 +0100 | nate4 | (~nate@98.45.169.16) (Ping timeout: 265 seconds) |
2022-11-25 19:59:28 +0100 | tromp | (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
2022-11-25 20:02:24 +0100 | jonathanx | (~jonathan@h-98-128-168-222.NA.cust.bahnhof.se) (Remote host closed the connection) |
2022-11-25 20:03:52 +0100 | jakalx | (~jakalx@base.jakalx.net) (Error from remote client) |
2022-11-25 20:04:25 +0100 | money_ | (~Gambino@user/polo) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
2022-11-25 20:07:02 +0100 | jakalx | (~jakalx@base.jakalx.net) |
2022-11-25 20:19:23 +0100 | manwithluck | (~manwithlu@194.177.28.176) (Read error: Connection reset by peer) |
2022-11-25 20:20:14 +0100 | tromp | (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
2022-11-25 20:21:57 +0100 | chele | (~chele@user/chele) (Remote host closed the connection) |
2022-11-25 20:22:23 +0100 | zeenk | (~zeenk@2a02:2f04:a208:3600::7fe) (Quit: Konversation terminated!) |
2022-11-25 20:22:51 +0100 | manwithluck | (~manwithlu@194.177.28.176) |
2022-11-25 20:28:23 +0100 | k` | (~user@2605:a601:a60d:5400:4e:d060:14f9:8a36) (Ping timeout: 260 seconds) |
2022-11-25 20:30:11 +0100 | jonathanx | (~jonathan@h-178-174-176-109.A357.priv.bahnhof.se) |
2022-11-25 20:30:11 +0100 | opticblast | (~Thunderbi@172.58.87.196) (Ping timeout: 264 seconds) |
2022-11-25 20:30:42 +0100 | oblivious | (~oblivious@150.187.35.37.dynamic.jazztel.es) |
2022-11-25 20:31:29 +0100 | oblivious | (~oblivious@150.187.35.37.dynamic.jazztel.es) (Client Quit) |
2022-11-25 20:33:40 +0100 | Lycurgus | (~juan@user/Lycurgus) |
2022-11-25 20:36:06 +0100 | acidjnk_new | (~acidjnk@p200300d6e7137a87dd877e6fe5567bfb.dip0.t-ipconnect.de) |
2022-11-25 20:36:16 +0100 | Lycurgus | (~juan@user/Lycurgus) (Client Quit) |
2022-11-25 20:37:02 +0100 | Major_Biscuit | (~MajorBisc@86-88-79-148.fixed.kpn.net) (Ping timeout: 265 seconds) |
2022-11-25 20:37:43 +0100 | wroathe | (~wroathe@user/wroathe) (Ping timeout: 260 seconds) |
2022-11-25 20:39:50 +0100 | acidjnk | (~acidjnk@p200300d6e7137a87d85cd0c34b3d9cfa.dip0.t-ipconnect.de) (Ping timeout: 256 seconds) |
2022-11-25 20:40:31 +0100 | tromp | (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
2022-11-25 20:40:54 +0100 | earthy | (~arthurvl@2a02-a469-f5e2-1-ba27-ebff-fea0-40b0.fixed6.kpn.net) |
2022-11-25 20:41:32 +0100 | chromoblob | (~user@37.113.164.122) (Read error: Connection reset by peer) |
2022-11-25 20:42:52 +0100 | srz | (~srz@devil.dm.uba.ar) |
2022-11-25 20:46:16 +0100 | merijn | (~merijn@86-86-29-250.fixed.kpn.net) |
2022-11-25 20:47:11 +0100 | tromp | (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
2022-11-25 20:47:46 +0100 | wroathe | (~wroathe@207-153-38-140.fttp.usinternet.com) |
2022-11-25 20:47:46 +0100 | wroathe | (~wroathe@207-153-38-140.fttp.usinternet.com) (Changing host) |
2022-11-25 20:47:46 +0100 | wroathe | (~wroathe@user/wroathe) |
2022-11-25 20:56:18 +0100 | coot | (~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba) (Quit: coot) |
2022-11-25 20:57:05 +0100 | notzmv | (~zmv@user/notzmv) |
2022-11-25 21:01:33 +0100 | sammelweis_ | (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Quit: No Ping reply in 180 seconds.) |
2022-11-25 21:02:40 +0100 | sammelweis_ | (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) |
2022-11-25 21:04:53 +0100 | tromp | (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
2022-11-25 21:09:46 +0100 | lortabac | (~lortabac@2a01:e0a:541:b8f0:16ed:9a5e:a354:e244) |
2022-11-25 21:09:54 +0100 | tromp | (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
2022-11-25 21:18:48 +0100 | k` | (~user@2605:a601:a60d:5400:4e:d060:14f9:8a36) |
2022-11-25 21:19:01 +0100 | k`` | (~user@136.56.140.2) |
2022-11-25 21:21:11 +0100 | merijn | (~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 264 seconds) |
2022-11-25 21:21:44 +0100 | eggplantade | (~Eggplanta@2600:1700:38c5:d800:1933:e30c:90a:59fd) (Remote host closed the connection) |
2022-11-25 21:22:41 +0100 | eggplantade | (~Eggplanta@2600:1700:38c5:d800:926:4196:430e:b1cd) |
2022-11-25 21:23:13 +0100 | k` | (~user@2605:a601:a60d:5400:4e:d060:14f9:8a36) (Ping timeout: 260 seconds) |
2022-11-25 21:27:27 +0100 | gmg | (~user@user/gehmehgeh) |
2022-11-25 21:31:02 +0100 | coot | (~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba) |
2022-11-25 21:31:25 +0100 | libertyprime | (~libertypr@118-92-78-165.dsl.dyn.ihug.co.nz) |
2022-11-25 21:45:28 +0100 | jinsun | (~jinsun@user/jinsun) (Read error: Connection reset by peer) |
2022-11-25 21:52:48 +0100 | coot | (~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba) (Quit: coot) |
2022-11-25 21:53:31 +0100 | caryhartline | (~caryhartl@2600:1700:2d0:8d30:3991:2946:3701:6725) |
2022-11-25 21:55:52 +0100 | libertyprime | (~libertypr@118-92-78-165.dsl.dyn.ihug.co.nz) (Quit: leaving) |
2022-11-25 21:56:31 +0100 | pavonia | (~user@user/siracusa) |
2022-11-25 21:57:08 +0100 | ruschlem | (~Android@p200300ee372ac1477c4161fffecd866b.dip0.t-ipconnect.de) |
2022-11-25 21:57:43 +0100 | merijn | (~merijn@86-86-29-250.fixed.kpn.net) |
2022-11-25 22:00:46 +0100 | Sgeo | (~Sgeo@user/sgeo) |
2022-11-25 22:02:35 +0100 | merijn | (~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 265 seconds) |
2022-11-25 22:05:20 +0100 | mei | (~mei@user/mei) (Ping timeout: 260 seconds) |
2022-11-25 22:05:51 +0100 | ruschlem | (~Android@p200300ee372ac1477c4161fffecd866b.dip0.t-ipconnect.de) () |
2022-11-25 22:09:36 +0100 | lortabac | (~lortabac@2a01:e0a:541:b8f0:16ed:9a5e:a354:e244) (Quit: WeeChat 2.8) |
2022-11-25 22:11:05 +0100 | santiagopim | (~user@90.167.66.131) (Remote host closed the connection) |
2022-11-25 22:21:54 +0100 | L29Ah | (~L29Ah@wikipedia/L29Ah) () |
2022-11-25 22:22:11 +0100 | L29Ah | (~L29Ah@wikipedia/L29Ah) |
2022-11-25 22:25:28 +0100 | Guest33 | (~Guest33@5.151.185.123) |
2022-11-25 22:26:16 +0100 | Guest33 | Lvk22 |
2022-11-25 22:30:15 +0100 | Lvk22 | (~Guest33@5.151.185.123) (Client Quit) |
2022-11-25 22:43:14 +0100 | gmg | (~user@user/gehmehgeh) (Ping timeout: 255 seconds) |
2022-11-25 22:45:55 +0100 | gmg | (~user@user/gehmehgeh) |
2022-11-25 22:45:58 +0100 | merijn | (~merijn@86-86-29-250.fixed.kpn.net) |
2022-11-25 22:47:56 +0100 | coot | (~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba) |
2022-11-25 23:01:08 +0100 | sagax | (~sagax_nb@user/sagax) |
2022-11-25 23:04:27 +0100 | wroathe | (~wroathe@user/wroathe) (Ping timeout: 265 seconds) |
2022-11-25 23:18:00 +0100 | jmdaemon | (~jmdaemon@user/jmdaemon) |
2022-11-25 23:18:47 +0100 | merijn | (~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 264 seconds) |
2022-11-25 23:26:01 +0100 | srz | (~srz@devil.dm.uba.ar) (Remote host closed the connection) |
2022-11-25 23:26:36 +0100 | Erutuon | (~Erutuon@user/erutuon) |
2022-11-25 23:37:49 +0100 | zant | (~zant@62.214.20.26) |
2022-11-25 23:39:48 +0100 | merijn | (~merijn@86-86-29-250.fixed.kpn.net) |
2022-11-25 23:41:55 +0100 | takuan | (~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection) |
2022-11-25 23:43:46 +0100 | beteigeuze | (~Thunderbi@bl14-81-220.dsl.telepac.pt) |
2022-11-25 23:45:11 +0100 | merijn | (~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 264 seconds) |
2022-11-25 23:45:30 +0100 | tromp | (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
2022-11-25 23:46:42 +0100 | coot | (~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba) (Quit: coot) |
2022-11-25 23:51:32 +0100 | nate4 | (~nate@98.45.169.16) |
2022-11-25 23:56:35 +0100 | nate4 | (~nate@98.45.169.16) (Ping timeout: 264 seconds) |
2022-11-25 23:57:19 +0100 | TonyStone | (~TonyStone@cpe-74-76-57-186.nycap.res.rr.com) (Remote host closed the connection) |
2022-11-25 23:58:13 +0100 | troydm | (~troydm@host-176-37-124-197.b025.la.net.ua) |
2022-11-25 23:59:12 +0100 | TonyStone | (~TonyStone@cpe-74-76-57-186.nycap.res.rr.com) |