2022-01-10 00:00:40 +0100 | sonny | (~sonny@bras-base-london1483w-grc-32-70-52-175-166.dsl.bell.ca) (Remote host closed the connection) |
2022-01-10 00:00:59 +0100 | sonny | (~sonny@bras-base-london1483w-grc-32-70-52-175-166.dsl.bell.ca) |
2022-01-10 00:02:27 +0100 | danso | (~danso@d67-193-121-2.home3.cgocable.net) (Ping timeout: 268 seconds) |
2022-01-10 00:02:51 +0100 | danso | (~danso@2001:1970:52e7:d000:96b8:6dff:feb3:c009) |
2022-01-10 00:03:30 +0100 | juri_ | (~juri@178.63.35.222) (Ping timeout: 260 seconds) |
2022-01-10 00:04:37 +0100 | <BrokenClutch> | I must be dumb, they look the same to me |
2022-01-10 00:06:18 +0100 | <dibblego> | > ((10 - 9) - 21) |
2022-01-10 00:06:19 +0100 | <lambdabot> | -20 |
2022-01-10 00:06:20 +0100 | azimut | (~azimut@gateway/tor-sasl/azimut) |
2022-01-10 00:06:25 +0100 | <dibblego> | > (10 - (9 - 21)) |
2022-01-10 00:06:26 +0100 | <lambdabot> | 22 |
2022-01-10 00:06:32 +0100 | tromp | (~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
2022-01-10 00:07:01 +0100 | azimut_ | (~azimut@gateway/tor-sasl/azimut) (Remote host closed the connection) |
2022-01-10 00:07:16 +0100 | <geekosaur> | you won't be able to tell with (+) because it does the same thing with either associativity |
2022-01-10 00:07:32 +0100 | <geekosaur> | (-) shows it better, as dibblego demonstrated |
2022-01-10 00:08:12 +0100 | tromp | (~textual@dhcp-077-249-230-040.chello.nl) |
2022-01-10 00:08:13 +0100 | <BrokenClutch> | No, this part and actually knows |
2022-01-10 00:08:24 +0100 | <BrokenClutch> | I was talking about the scheme definition |
2022-01-10 00:08:28 +0100 | <BrokenClutch> | looks the same to me |
2022-01-10 00:08:45 +0100 | <geekosaur> | scheme defines them all taking the same parameters the same way, for consistency |
2022-01-10 00:08:52 +0100 | little_mac | (~little_ma@2601:410:4300:3ce0:54ff:c767:ef1d:433e) (Remote host closed the connection) |
2022-01-10 00:09:09 +0100 | <geekosaur> | haskell flips things for mathematical consistency instead of programmatic |
2022-01-10 00:09:40 +0100 | <geekosaur> | it's harder to demonstrate the things I showed earlier with the scheme definitions of fold and fold-right, vs. Haskell foldl/foldr |
2022-01-10 00:10:54 +0100 | hololeap | (~hololeap@user/hololeap) (Quit: Bye) |
2022-01-10 00:12:48 +0100 | <Axman6> | foldr is "Replace all :'s with f, and any [] with z". Foldl is "given a starting value, pass in each element of the list to f to use as the starting value, until you find a []" |
2022-01-10 00:13:18 +0100 | <BrokenClutch> | but like, the scheme one looks the same as the haskell one |
2022-01-10 00:13:27 +0100 | <BrokenClutch> | I'm trying to see the difference, but i don't got it |
2022-01-10 00:13:35 +0100 | <Axman6> | link to the scheme one? |
2022-01-10 00:13:45 +0100 | <BrokenClutch> | https://srfi.schemers.org/srfi-1/srfi-1.html#FoldUnfoldMap |
2022-01-10 00:14:16 +0100 | <BrokenClutch> | Is it after the compilation? Like, how scheme changes foldr to a c-loop on most compilers/transpillers? |
2022-01-10 00:14:21 +0100 | <geekosaur> | is there supposed to be one, aside from parameter order (the "z" coming first instead of second) |
2022-01-10 00:14:24 +0100 | <geekosaur> | ? |
2022-01-10 00:15:03 +0100 | coot | (~coot@2a02:a310:e03f:8500:5cc8:47c:8ec0:b827) (Quit: coot) |
2022-01-10 00:15:37 +0100 | <Axman6> | (fold kons (kons (car lis) knil) (cdr lis)) clearly isn't the same as (kons (car lis) (fold-right kons knil (cdr lis))) |
2022-01-10 00:15:46 +0100 | notzmv | (~zmv@user/notzmv) (Read error: Connection reset by peer) |
2022-01-10 00:16:33 +0100 | <BrokenClutch> | I'm not comparing foldl to foldr |
2022-01-10 00:16:43 +0100 | <Axman6> | ok |
2022-01-10 00:16:48 +0100 | <BrokenClutch> | I'm comparing scheme's foldl to haskell's foldl |
2022-01-10 00:17:53 +0100 | notzmv | (~zmv@user/notzmv) |
2022-01-10 00:17:56 +0100 | <Axman6> | they are identical, apart from the order of the arguments to f/kons |
2022-01-10 00:19:02 +0100 | lavaman | (~lavaman@98.38.249.169) |
2022-01-10 00:19:38 +0100 | <Axman6> | myFoldl :: (b -> a -> b) -> b -> [a] -> b; myFoldl kons knil (car:cdr) = myFoldl kons (kons car knil) cdr; myFoldl kons knil [] = knil |
2022-01-10 00:19:54 +0100 | <BrokenClutch> | the problem is with the order |
2022-01-10 00:20:07 +0100 | <BrokenClutch> | scheme is eager, so it solves the last part first |
2022-01-10 00:20:29 +0100 | <BrokenClutch> | while haskell will do a more "accumulative" approach, because it's lazy |
2022-01-10 00:22:16 +0100 | justsomeguy | (~justsomeg@user/justsomeguy) |
2022-01-10 00:22:34 +0100 | <BrokenClutch> | like, do the foldl expansion with scheme and evaluate it. It works diffently with haskell, you gonna be evaluating the thunks |
2022-01-10 00:23:21 +0100 | lavaman | (~lavaman@98.38.249.169) (Ping timeout: 256 seconds) |
2022-01-10 00:23:32 +0100 | <Axman6> | > foldl f z [1,2,3] :: Expr -- This is exactly what foldl evaluates. the compiler may notice this should be strict depending on what f is |
2022-01-10 00:23:33 +0100 | <lambdabot> | f (f (f z 1) 2) 3 |
2022-01-10 00:23:38 +0100 | <EvanR> | sonny, the foldl argument order seems more familiar, and makes sense since this is usually how you fold in other languages. given your accum, smush the next thing in the list into it |
2022-01-10 00:23:50 +0100 | <EvanR> | foldr is backwards |
2022-01-10 00:23:57 +0100 | <EvanR> | but it also makes sense |
2022-01-10 00:24:04 +0100 | <Axman6> | foldr is constructor replacement, foldl is a loop |
2022-01-10 00:24:26 +0100 | son0p | (~ff@181.136.122.143) (Remote host closed the connection) |
2022-01-10 00:24:49 +0100 | <BrokenClutch> | Oh, i was wrong |
2022-01-10 00:24:49 +0100 | <EvanR> | in foldr, you have the list element itself, not the accum, and the rest of the fold is on the right (all of the above assuming we work left to right) |
2022-01-10 00:24:52 +0100 | <BrokenClutch> | I got it now |
2022-01-10 00:25:17 +0100 | <Axman6> | there is no difference betqeen scheme's fold and haskell's foldl. there is a big difference between foldr and fold-right though |
2022-01-10 00:25:39 +0100 | <EvanR> | only recently I realized how "normal" foldl is xD |
2022-01-10 00:25:46 +0100 | <EvanR> | just haskell does it weird |
2022-01-10 00:26:00 +0100 | burnsidesLlama | (~burnsides@dhcp168-013.wadham.ox.ac.uk) (Remote host closed the connection) |
2022-01-10 00:26:42 +0100 | <hpc> | funny, foldr feels more natural to me |
2022-01-10 00:26:54 +0100 | bontaq | (~user@ool-45779fe5.dyn.optonline.net) (Ping timeout: 256 seconds) |
2022-01-10 00:26:55 +0100 | <EvanR> | stockholm syndrome |
2022-01-10 00:27:07 +0100 | <hpc> | glasgow syndrom? |
2022-01-10 00:27:10 +0100 | <BrokenClutch> | like, I think the order of the arguments of the last f is flipped |
2022-01-10 00:27:18 +0100 | <EvanR> | by normal I mean relative to normal programming outside haskell land |
2022-01-10 00:27:19 +0100 | <BrokenClutch> | with scheme's foldl |
2022-01-10 00:27:26 +0100 | <Axman6> | yes, but that's not really important, they're isomorphic |
2022-01-10 00:28:31 +0100 | <BrokenClutch> | actually, i don't think they are flipped at all |
2022-01-10 00:28:45 +0100 | <BrokenClutch> | man, i got confused |
2022-01-10 00:28:47 +0100 | <Axman6> | :t foldl |
2022-01-10 00:28:47 +0100 | <lambdabot> | Foldable t => (b -> a -> b) -> b -> t a -> b |
2022-01-10 00:29:04 +0100 | <Axman6> | they are flipped |
2022-01-10 00:29:17 +0100 | <Axman6> | scheme's fold is (a -> b -> b) -> b -> [a] -> b |
2022-01-10 00:29:29 +0100 | <Axman6> | because the accumulator is passed as the second argument |
2022-01-10 00:30:10 +0100 | <BrokenClutch> | you are right |
2022-01-10 00:30:11 +0100 | <BrokenClutch> | thanks |
2022-01-10 00:30:18 +0100 | <BrokenClutch> | man, never noticed that |
2022-01-10 00:30:24 +0100 | <EvanR> | you can't use "frequency analysis" to decide which order to use since... both arguments change every step |
2022-01-10 00:30:31 +0100 | ChanServ | +o Axman6 |
2022-01-10 00:30:36 +0100 | <Axman6> | D:B |
2022-01-10 00:30:43 +0100 | shapr | grins evilly |
2022-01-10 00:30:52 +0100 | <EvanR> | so gotta dig deeper in the metaphor drawer |
2022-01-10 00:31:00 +0100 | <Axman6> | I have been given great power! |
2022-01-10 00:31:01 +0100 | machinedgod | (~machinedg@24.105.81.50) (Ping timeout: 240 seconds) |
2022-01-10 00:31:09 +0100 | <Axman6> | I am not ready for this responsibility! |
2022-01-10 00:31:24 +0100 | <shapr> | you can handle the power! |
2022-01-10 00:32:04 +0100 | <EvanR> | BrokenClutch, also the expansions lambdabot spits out skips over any operational issues so, looking at those doesn't make performance clear |
2022-01-10 00:33:03 +0100 | <EvanR> | an infinitely nested application of f could work fine in haskell, but foldl on list doesn't give you that immediately, unfortunately |
2022-01-10 00:33:18 +0100 | <ephemient> | beyond the argument order, fold in Scheme is also closer to foldl' in Haskell in terms of how it's evaluated, since it's strict in the accumulator |
2022-01-10 00:34:05 +0100 | <BrokenClutch> | :t foldl' |
2022-01-10 00:34:06 +0100 | <lambdabot> | Foldable t => (b -> a -> b) -> b -> t a -> b |
2022-01-10 00:34:31 +0100 | <BrokenClutch> | ????? |
2022-01-10 00:34:37 +0100 | <EvanR> | evaluates the b eagerly, as you go |
2022-01-10 00:36:05 +0100 | <BrokenClutch> | ok, I will put this on my list of things I have to study |
2022-01-10 00:36:16 +0100 | <BrokenClutch> | or I'm going to break |
2022-01-10 00:37:00 +0100 | <geekosaur> | % :t foldl' @[] |
2022-01-10 00:37:00 +0100 | <yahb> | geekosaur: (b -> a -> b) -> b -> [a] -> b |
2022-01-10 00:37:41 +0100 | <EvanR> | oh right... I'm starting to not be annoyed by all the Foldable stuff and just see "list, tree, sequence" matrix style |
2022-01-10 00:40:26 +0100 | <Axman6> | BrokenClutch: you can probably ignore Foldable for now, but it just means "the class of things which you can write foldl and foldr for", turns out it's useful for more than lists |
2022-01-10 00:40:41 +0100 | notzmv | (~zmv@user/notzmv) (Ping timeout: 268 seconds) |
2022-01-10 00:43:31 +0100 | <ephemient> | you can think of foldr on a foldable as equivalent to foldr on the toList of the foldable, can't you? |
2022-01-10 00:43:38 +0100 | hololeap | (~hololeap@user/hololeap) |
2022-01-10 00:43:49 +0100 | <monochrom> | Yes. |
2022-01-10 00:43:50 +0100 | hgolden | (~hgolden2@cpe-172-114-81-123.socal.res.rr.com) (Remote host closed the connection) |
2022-01-10 00:44:01 +0100 | <EvanR> | that's how it should be implemented |
2022-01-10 00:45:40 +0100 | <geekosaur> | that's the default if an instance doesn't define its own |
2022-01-10 00:47:45 +0100 | <monochrom> | I explain Foldable by putting foldMap at the spot light, not foldl or foldr. It formalizes "aggregate queries" (if you have heard of that wording from SQL) and is why sum, product, maximum, minimum, length are all in the same type class. |
2022-01-10 00:47:49 +0100 | max22- | (~maxime@2a01cb0883359800fc4f47b740d6e929.ipv6.abo.wanadoo.fr) (Remote host closed the connection) |
2022-01-10 00:48:07 +0100 | Kaiepi | (~Kaiepi@156.34.47.253) (Quit: Leaving) |
2022-01-10 00:48:18 +0100 | <monochrom> | And yes monoids strike again. |
2022-01-10 00:48:57 +0100 | CiaoSen | (~Jura@p200300c957347b002a3a4dfffe84dbd5.dip0.t-ipconnect.de) (Ping timeout: 240 seconds) |
2022-01-10 00:49:01 +0100 | <EvanR> | :t foldMap |
2022-01-10 00:49:02 +0100 | <lambdabot> | (Foldable t, Monoid m) => (a -> m) -> t a -> m |
2022-01-10 00:49:05 +0100 | <geekosaur> | monoids are the secret master sof the universe |
2022-01-10 00:49:24 +0100 | <c_wraith> | I'm really unhappy with how Foldable is documented |
2022-01-10 00:49:36 +0100 | <c_wraith> | I tried to argue against it when they were designing it |
2022-01-10 00:49:47 +0100 | <c_wraith> | and was told that convenient lies are better than complicated truth |
2022-01-10 00:50:01 +0100 | <c_wraith> | (when they were designing the new documentation, that is) |
2022-01-10 00:50:11 +0100 | <Axman6> | what would you want it to say? |
2022-01-10 00:50:29 +0100 | <c_wraith> | foldMap' is described as a left fold, which is entirely wrong |
2022-01-10 00:50:44 +0100 | <Axman6> | Surely we can have "Intuitive understanding" and "How it actually works" sections in the docs |
2022-01-10 00:50:52 +0100 | <c_wraith> | it should be whatever fold gives it the strictness properties that are desired |
2022-01-10 00:51:11 +0100 | <c_wraith> | a right fold, a left fold, a tree fold. whatever. |
2022-01-10 00:51:31 +0100 | <c_wraith> | The important part is that it doesn't accumulate thunks |
2022-01-10 00:51:44 +0100 | <monochrom> | In this case the "complicated" truth is not harder than the convenient lie. |
2022-01-10 00:52:02 +0100 | <dolio> | Presumably it seqs a bunch of children when combining them or something? |
2022-01-10 00:52:42 +0100 | <EvanR> | more like what are foldMap amd foldMap' supposed to be |
2022-01-10 00:52:46 +0100 | <geekosaur> | uh. "convenient lies are better than the complicated truth?" that's pretty much the last thing I want in API docs |
2022-01-10 00:52:59 +0100 | <monochrom> | Especially if I troll with "data SnocList a = Nil | Snoc (SnocList a) a" then it is right-fold that can be made efficient. |
2022-01-10 00:53:04 +0100 | <c_wraith> | This is why I argued the new docs are really bad |
2022-01-10 00:53:54 +0100 | <monochrom> | Well yeah there are a lot of people, mostly millenials, who mistake API docs for free tutorials. |
2022-01-10 00:54:14 +0100 | <monochrom> | Because millenials are used to free tutorials. |
2022-01-10 00:54:17 +0100 | <dolio> | I can buy that sometimes not being absolutely precise can be more useful for developing an understanding. But it's hard to see why saying it's like foldl is helpful. |
2022-01-10 00:54:24 +0100 | <c_wraith> | why blame millenials? I assure you, I see that problem very broadly. :P |
2022-01-10 00:55:10 +0100 | eggplantade | (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) |
2022-01-10 00:55:21 +0100 | wroathe | (~wroathe@206-55-188-8.fttp.usinternet.com) |
2022-01-10 00:55:21 +0100 | wroathe | (~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host) |
2022-01-10 00:55:21 +0100 | wroathe | (~wroathe@user/wroathe) |
2022-01-10 00:55:34 +0100 | <dolio> | It doesn't actually seem like a convenient lie. |
2022-01-10 00:56:18 +0100 | <c_wraith> | the people I was complaining to thought it was basically always true and I was just being contrarian by pointing out all the cases where it wasn't |
2022-01-10 00:56:59 +0100 | <geekosaur> | *headwall* |
2022-01-10 00:57:21 +0100 | <dolio> | What cases is it true for? |
2022-01-10 00:57:34 +0100 | <c_wraith> | things shaped like [] |
2022-01-10 00:58:20 +0100 | <c_wraith> | including the same implied ordering |
2022-01-10 00:58:52 +0100 | <dibblego> | yu |
2022-01-10 00:59:49 +0100 | <dolio> | What does it mean for `null` to be left associative? |
2022-01-10 00:59:56 +0100 | <dibblego> | sorry ^ |
2022-01-10 01:01:10 +0100 | <dolio> | Also what is the accumulator for `null`? |
2022-01-10 01:01:46 +0100 | <dolio> | Was that language just copied from foldl or something? |
2022-01-10 01:02:44 +0100 | <EvanR> | at one point Foldable had laws and that was the first thing in the docs, iirc |
2022-01-10 01:03:16 +0100 | <geekosaur> | they got moved to the bottom of the docs supposedly |
2022-01-10 01:03:29 +0100 | <geekosaur> | too confusing for newcomers or something like that |
2022-01-10 01:03:30 +0100 | <EvanR> | now I'm don't know what's going on, and I implemented foldl strict for my structure xD |
2022-01-10 01:03:36 +0100 | <Axman6> | what should foldl for snoclist actually do... |
2022-01-10 01:04:13 +0100 | vglfr | (~vglfr@88.155.96.35) (Ping timeout: 240 seconds) |
2022-01-10 01:04:14 +0100 | <c_wraith> | I'd say foldl should be the catamorphism for a snoclist |
2022-01-10 01:04:28 +0100 | <monochrom> | Yeah :) |
2022-01-10 01:04:39 +0100 | <EvanR> | no, I hate this |
2022-01-10 01:04:57 +0100 | burnsidesLlama | (~burnsides@dhcp168-013.wadham.ox.ac.uk) |
2022-01-10 01:05:12 +0100 | <EvanR> | it's a damn list and the fact that we write things left to right has no bearing on the theory |
2022-01-10 01:05:41 +0100 | <Axman6> | but the order matters |
2022-01-10 01:06:35 +0100 | cosimone | (~user@2001:b07:ae5:db26:c24a:d20:4d91:1e20) |
2022-01-10 01:06:54 +0100 | <c_wraith> | more precisely, the 'l' and 'r' in the names of foldl and foldr mean something |
2022-01-10 01:07:10 +0100 | <c_wraith> | they tell you what side the base case goes on |
2022-01-10 01:07:37 +0100 | <c_wraith> | when you reverse what side is the end, you reverse what side the base case goes on |
2022-01-10 01:08:08 +0100 | <EvanR> | what |
2022-01-10 01:08:17 +0100 | <EvanR> | side of what |
2022-01-10 01:08:36 +0100 | <EvanR> | I took the 'r' to mean catamorphism |
2022-01-10 01:08:58 +0100 | <dolio> | r means 'right'. |
2022-01-10 01:09:03 +0100 | <c_wraith> | fold left = put the base case on the left (the start). fold right = put the base case on the right (the end) |
2022-01-10 01:09:16 +0100 | vglfr | (~vglfr@88.155.96.35) |
2022-01-10 01:09:28 +0100 | <EvanR> | the left = the start? |
2022-01-10 01:09:37 +0100 | <c_wraith> | for english speakers, yes |
2022-01-10 01:09:39 +0100 | <dolio> | Left means left. |
2022-01-10 01:09:40 +0100 | <EvanR> | not in arabic |
2022-01-10 01:10:14 +0100 | <EvanR> | what if I'm communicating about this with someone who is in australia and it looks backwards from down there |
2022-01-10 01:10:19 +0100 | <EvanR> | (in english) |
2022-01-10 01:10:45 +0100 | <c_wraith> | then they should turn their monitor off of reverse. (australia is upside down, not backwards. get your memes organized!) |
2022-01-10 01:10:46 +0100 | <BrokenClutch> | It will be russian, I think |
2022-01-10 01:10:53 +0100 | <EvanR> | left and right are symmetric where as foldl and foldr are not |
2022-01-10 01:10:57 +0100 | burnsidesLlama | (~burnsides@dhcp168-013.wadham.ox.ac.uk) (Ping timeout: 240 seconds) |
2022-01-10 01:10:59 +0100 | <BrokenClutch> | like, in australia, english is russian and russian is english |
2022-01-10 01:11:20 +0100 | <EvanR> | so literal meaning of l and r are bad |
2022-01-10 01:11:34 +0100 | tromp | (~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
2022-01-10 01:12:33 +0100 | <EvanR> | if your point is the Foldable docs are bad, you made it |
2022-01-10 01:12:57 +0100 | notzmv | (~zmv@user/notzmv) |
2022-01-10 01:13:11 +0100 | <Inst> | do you know |
2022-01-10 01:13:18 +0100 | <sonny> | someone mentioned the difference is the argument order? |
2022-01-10 01:13:20 +0100 | <Inst> | if it's possible to code in Cmm within a .hs file? |
2022-01-10 01:13:27 +0100 | <dolio> | It doesn't seem like your problem is that the Foldable docs are bad. |
2022-01-10 01:13:29 +0100 | <EvanR> | it's not about argument order |
2022-01-10 01:14:16 +0100 | burnsidesLlama | (~burnsides@dhcp168-013.wadham.ox.ac.uk) |
2022-01-10 01:14:19 +0100 | DNH | (~DNH@2a02:8108:1100:16d8:c0bf:721a:fdec:b791) (Quit: Textual IRC Client: www.textualapp.com) |
2022-01-10 01:14:40 +0100 | <sonny> | this is not allowed in Haskell right []:foo |
2022-01-10 01:14:55 +0100 | <EvanR> | > let foo = [] in []:foo |
2022-01-10 01:14:57 +0100 | <lambdabot> | [[]] |
2022-01-10 01:15:13 +0100 | <EvanR> | i.e. []:[] |
2022-01-10 01:15:16 +0100 | <sonny> | brb |
2022-01-10 01:15:46 +0100 | <geekosaur> | Inst, you can create and use .cmm files, but it's not really recommended unless you really know what you are doing |
2022-01-10 01:16:05 +0100 | <Inst> | is .cmm incredibly hard to use? |
2022-01-10 01:16:15 +0100 | little_mac | (~little_ma@2601:410:4300:3ce0:54ff:c767:ef1d:433e) |
2022-01-10 01:16:16 +0100 | <geekosaur> | it's very low level |
2022-01-10 01:16:35 +0100 | <Inst> | i mean, i'm a proponent of functional / imperative synthesis, both have their strengths |
2022-01-10 01:16:40 +0100 | <geekosaur> | be very careful with what registers you use because it won't protect you from overwriting important ones |
2022-01-10 01:17:08 +0100 | <geekosaur> | you can see some cmm files here https://gitlab.haskell.org/ghc/ghc/-/tree/master/rts |
2022-01-10 01:17:42 +0100 | <Inst> | looks just like normal C |
2022-01-10 01:17:50 +0100 | <geekosaur> | looks like it but is not |
2022-01-10 01:18:30 +0100 | <Inst> | so, in theory, i could easily build a transpiler to cmm |
2022-01-10 01:19:06 +0100 | <Inst> | so i could get Haskell-type syntax alongside features to make it more easily integrated into Haskell |
2022-01-10 01:19:23 +0100 | <EvanR> | wait... that sounds like Haskell |
2022-01-10 01:19:41 +0100 | <geekosaur> | I was thinking STG |
2022-01-10 01:19:45 +0100 | <EvanR> | it has Haskell-like syntax and transpiles (compiles) to Cmm |
2022-01-10 01:19:55 +0100 | <geekosaur> | which is fairly close to Core and compiles to Cmm |
2022-01-10 01:21:48 +0100 | Tuplanolla | (~Tuplanoll@91-159-69-16.elisa-laajakaista.fi) (Quit: Leaving.) |
2022-01-10 01:23:26 +0100 | <Inst> | erm, the way I had it explained to me is that .cmm is faster than C |
2022-01-10 01:24:09 +0100 | <Inst> | but Haskell doesn't transpile fluently into .cmm because .cmm is imperative, while Haskell is imperative |
2022-01-10 01:24:13 +0100 | <Inst> | erm, functional |
2022-01-10 01:24:25 +0100 | <c_wraith> | I think you've misunderstood a few steps along the way |
2022-01-10 01:24:28 +0100 | acidjnk | (~acidjnk@p200300d0c7271e945c697a298a149d84.dip0.t-ipconnect.de) (Ping timeout: 268 seconds) |
2022-01-10 01:24:28 +0100 | acidjnk_new | (~acidjnk@p200300d0c7271e945c697a298a149d84.dip0.t-ipconnect.de) (Ping timeout: 268 seconds) |
2022-01-10 01:24:29 +0100 | <Inst> | probably |
2022-01-10 01:24:33 +0100 | <Inst> | sorry for wasting your time |
2022-01-10 01:24:43 +0100 | <c_wraith> | It's not a waste of time if you learn stuff |
2022-01-10 01:24:58 +0100 | <Inst> | what did I misunderstand? |
2022-01-10 01:26:21 +0100 | <c_wraith> | Well, "cmm is faster than c" is not a statement that is true or false. |
2022-01-10 01:26:37 +0100 | <c_wraith> | cmm is *more predictable* than c |
2022-01-10 01:27:15 +0100 | <c_wraith> | (it also has fewer constructs, which is helpful for a language that's really only intended as an intermediate compilation target) |
2022-01-10 01:29:05 +0100 | sonny | (~sonny@bras-base-london1483w-grc-32-70-52-175-166.dsl.bell.ca) (Ping timeout: 256 seconds) |
2022-01-10 01:31:00 +0100 | <geekosaur> | if you really want to be able to mix imperative and functional code, you may be interested in |
2022-01-10 01:31:04 +0100 | <geekosaur> | @hackage inline-c |
2022-01-10 01:31:05 +0100 | <lambdabot> | https://hackage.haskell.org/package/inline-c |
2022-01-10 01:32:37 +0100 | jgeerds | (~jgeerds@55d4bbed.access.ecotel.net) (Ping timeout: 240 seconds) |
2022-01-10 01:33:17 +0100 | mvk | (~mvk@2607:fea8:5cdd:f000::45db) (Ping timeout: 240 seconds) |
2022-01-10 01:33:51 +0100 | <Inst> | c_wraith: what I've read is that Cmm is designed for GHC's specialized Cmm compiler, which, because Cmm is more predictable, can do optimizations gcc or clang can't |
2022-01-10 01:34:16 +0100 | sonny | (~sonny@bras-base-london1483w-grc-32-70-52-175-166.dsl.bell.ca) |
2022-01-10 01:34:34 +0100 | <c_wraith> | yes, but it also can't do some optimizations gcc or clang do, because they take advantage of that imprecision to interpret things in the way that gives the fastest code |
2022-01-10 01:34:38 +0100 | <sonny> | EvanR: what about []:1 ? |
2022-01-10 01:34:40 +0100 | <geekosaur> | but it also does less, which makes those optimizations easier |
2022-01-10 01:35:17 +0100 | <geekosaur> | > []:1 |
2022-01-10 01:35:18 +0100 | <lambdabot> | error: |
2022-01-10 01:35:18 +0100 | <lambdabot> | • No instance for (Num [[()]]) arising from a use of ‘e_11’ |
2022-01-10 01:35:18 +0100 | <lambdabot> | • In the expression: e_11 |
2022-01-10 01:35:34 +0100 | <sonny> | yes, so the second elem would have to be a list if the first is [] |
2022-01-10 01:35:46 +0100 | <geekosaur> | oh, my, lambdabot, you're being particularly obtuse today |
2022-01-10 01:35:57 +0100 | <EvanR> | the second argument to : must be a list no matter what |
2022-01-10 01:36:07 +0100 | <EvanR> | that's just how it's defined |
2022-01-10 01:36:14 +0100 | <pfurla-matrix> | > flip (:) [] 1 |
2022-01-10 01:36:14 +0100 | <geekosaur> | :t (:) |
2022-01-10 01:36:14 +0100 | <lambdabot> | a -> [a] -> [a] |
2022-01-10 01:36:15 +0100 | <lambdabot> | [1] |
2022-01-10 01:36:20 +0100 | <sonny> | oh |
2022-01-10 01:36:25 +0100 | alkjdflkjs | (~alkjdflkj@187.173.201.254) |
2022-01-10 01:36:46 +0100 | <EvanR> | you always cons onto a list |
2022-01-10 01:36:47 +0100 | <Inst> | : I believe, is a type constructor, right? |
2022-01-10 01:36:51 +0100 | <Inst> | erm, data constructor |
2022-01-10 01:36:57 +0100 | eggplantade | (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection) |
2022-01-10 01:36:57 +0100 | <Axman6> | data constreuctor, yes |
2022-01-10 01:37:01 +0100 | <Axman6> | -e |
2022-01-10 01:37:08 +0100 | <pfurla-matrix> | data, yeah |
2022-01-10 01:38:12 +0100 | <Inst> | c_wraith: has anyone ever tested it, like, attempted to outperform gcc etc using just .cmm? |
2022-01-10 01:38:34 +0100 | <alkjdflkjs> | s |
2022-01-10 01:38:51 +0100 | <Axman6> | well over a decade ago people were writing faster haskell than equivalent C - see Don Stewart's work |
2022-01-10 01:39:00 +0100 | <c_wraith> | I doubt it. cmm is not really intended to be a user interface. It's only very recently that ghc added support for using it in libraries other than the RTS at all |
2022-01-10 01:39:29 +0100 | <geekosaur> | .cmm is not really suitable for writing production code; it's intended to be a compiler intermediate language, which is a rather different use case |
2022-01-10 01:39:31 +0100 | <c_wraith> | ... Ok, my age might be getting to me. "very recently" might be as much as like 8 years ago. :) |
2022-01-10 01:39:39 +0100 | <Inst> | Axman6: iirc, GHC compares favorably to Clang in benchmarks |
2022-01-10 01:40:01 +0100 | machinedgod | (~machinedg@24.105.81.50) |
2022-01-10 01:40:01 +0100 | <geekosaur> | I think the old C-- (standalone cmm) sitew got archived a couple years back |
2022-01-10 01:40:05 +0100 | <Inst> | it's that gcc is just so superior (i.e, has been able to get high-quality talent and labor) to Clang that makes Haskell work hard to compete in performance |
2022-01-10 01:40:11 +0100 | <geekosaur> | it might have had some useful comparisons |
2022-01-10 01:40:11 +0100 | <pfurla-matrix> | c_wraith: shut up, Sinclair Spectrum is still very recent |
2022-01-10 01:40:23 +0100 | <Inst> | lol |
2022-01-10 01:40:36 +0100 | <Axman6> | https://donsbot.com/2008/06/04/haskell-as-fast-as-c-working-at-a-high-altitude-for-low-level-perfo… is an example from 2008 |
2022-01-10 01:40:49 +0100 | <sonny> | EvanR: (cons 3 (cons 2 (cons 1 []))) = [3, 2, 1]. I'm going to guess this is not in the right order, what should it be? |
2022-01-10 01:41:06 +0100 | <EvanR> | that looks right |
2022-01-10 01:41:14 +0100 | <Axman6> | why would that not be the right order? |
2022-01-10 01:41:16 +0100 | <monochrom> | \∩/ Sinclair Spectrum :) |
2022-01-10 01:41:31 +0100 | <geekosaur> | > let cons = (:) in (cons 3 (cons 2 (cons 1 []))) |
2022-01-10 01:41:32 +0100 | <lambdabot> | [3,2,1] |
2022-01-10 01:41:34 +0100 | <sonny> | Axman6: well if it is, I'm not sure where flip happens |
2022-01-10 01:41:38 +0100 | <pfurla-matrix> | > let cons = (:) in (cons 3 (cons 2 (cons 1 []))) |
2022-01-10 01:41:39 +0100 | <lambdabot> | [3,2,1] |
2022-01-10 01:41:44 +0100 | <Axman6> | what flip? |
2022-01-10 01:41:45 +0100 | <monochrom> | I have a retired prof who owns a PDP-11. |
2022-01-10 01:42:06 +0100 | <sonny> | Axman6: when you define reverse with foldl, it requires flip |
2022-01-10 01:42:08 +0100 | <Inst> | https://www.microsoft.com/en-us/research/wp-content/uploads/2016/07/haskell-beats-C.pdf?from=http%… |
2022-01-10 01:42:13 +0100 | <Axman6> | monochrom: pretty sure there's one or two at my uni's CS department too |
2022-01-10 01:42:30 +0100 | <Axman6> | sonny: do you understand what flip does? |
2022-01-10 01:42:39 +0100 | <Axman6> | > flip f x y :: Expr |
2022-01-10 01:42:40 +0100 | <Inst> | is sonny new to Haskell? |
2022-01-10 01:42:40 +0100 | <pfurla-matrix> | monochrom: I was dying to play with one of these when I learned they existed (back in the '90s) |
2022-01-10 01:42:40 +0100 | <lambdabot> | f y x |
2022-01-10 01:42:59 +0100 | <sonny> | yeah |
2022-01-10 01:43:15 +0100 | xb0o2 | (~xb0o2@user/xb0o2) (Quit: Client closed) |
2022-01-10 01:43:17 +0100 | <sonny> | Inst: yes |
2022-01-10 01:43:20 +0100 | <EvanR> | ah a good use of Expr xD |
2022-01-10 01:43:25 +0100 | <Axman6> | and did you follow the whole conversation we've been havving about the order of arguments for the function passed to foldl? |
2022-01-10 01:43:41 +0100 | <Inst> | do you know what a data declaration looks like? |
2022-01-10 01:43:43 +0100 | <Axman6> | :t foldl |
2022-01-10 01:43:44 +0100 | <lambdabot> | Foldable t => (b -> a -> b) -> b -> t a -> b |
2022-01-10 01:43:46 +0100 | <Axman6> | :t (:) |
2022-01-10 01:43:47 +0100 | <lambdabot> | a -> [a] -> [a] |
2022-01-10 01:43:56 +0100 | <Inst> | in Haskell, of course |
2022-01-10 01:43:58 +0100 | <sonny> | yeah, but I thought the problem wasn't the order? |
2022-01-10 01:44:08 +0100 | <pfurla-matrix> | :t foldr -- compare with foldr |
2022-01-10 01:44:09 +0100 | <lambdabot> | Foldable t => (a -> b -> b) -> b -> t a -> b |
2022-01-10 01:44:31 +0100 | <pfurla-matrix> | > foldr (:) [] [1,2,3] |
2022-01-10 01:44:33 +0100 | <lambdabot> | [1,2,3] |
2022-01-10 01:44:33 +0100 | <Axman6> | we need the b's to be [a], so we need a function with type ([a] -> a -> [a]). (:) has type a -> [a] -> [a], so if we apply flip, we get [a] -> a -> [a] |
2022-01-10 01:44:37 +0100 | <sonny> | Inst: data foo = bar ? |
2022-01-10 01:44:40 +0100 | <alkjdflkjs> | Hi, I've been trying to install GHCup but when I run the command of the page (curl --proto '=https' --tlsv1.2 -sSf https://get-ghcup.haskell.org | sh) I get the next error, what's the problem? |
2022-01-10 01:44:41 +0100 | <alkjdflkjs> | Warning: ~/.ghcup/cache/ghcup-0.0.6.yaml.tmp: Permission denied |
2022-01-10 01:44:41 +0100 | <alkjdflkjs> | 0 139k 0 909 0 0 4024 0 0:00:35 --:--:-- 0:00:35 4040 |
2022-01-10 01:44:42 +0100 | <alkjdflkjs> | curl: (23) Failure writing output to destination |
2022-01-10 01:44:42 +0100 | <alkjdflkjs> | [ Warn ] Could not get download info, trying cached version (this may not be r> |
2022-01-10 01:44:43 +0100 | <alkjdflkjs> | [ ... ] If this problem persists, consider switching downloader via: |
2022-01-10 01:44:43 +0100 | <alkjdflkjs> | [ ... ] ghcup config set downloader Wget |
2022-01-10 01:44:44 +0100 | <alkjdflkjs> | [ Error ] JSON decoding failed with: YAML exception: |
2022-01-10 01:44:44 +0100 | <alkjdflkjs> | [ ... ] Yaml file not found: ~/.ghcup/cache/ghcup-0.0.6.yaml |
2022-01-10 01:44:45 +0100 | <alkjdflkjs> | [ ... ] Consider removing ~/.ghcup/cache/ghcup-0.0.6.yaml manually. |
2022-01-10 01:44:45 +0100 | <alkjdflkjs> | [ ... ] |
2022-01-10 01:44:46 +0100 | <alkjdflkjs> | "_eghcup upgrade" failed! |
2022-01-10 01:44:46 +0100 | <Axman6> | alkjdflkjs: stop |
2022-01-10 01:44:56 +0100 | <Axman6> | @where paste |
2022-01-10 01:44:56 +0100 | <lambdabot> | Help us help you: please paste full code, input and/or output at e.g. https://paste.tomsmeding.com |
2022-01-10 01:45:02 +0100 | <monochrom> | . o O ( good timing ) |
2022-01-10 01:45:02 +0100 | <Inst> | sonny: more like data [] a = [] | a | [a] iirc |
2022-01-10 01:45:09 +0100 | <Inst> | erm, not that |
2022-01-10 01:45:13 +0100 | <geekosaur> | you have a permission problem somewhere |
2022-01-10 01:45:23 +0100 | <Inst> | data [] a = [] | a : [a] |
2022-01-10 01:45:54 +0100 | <geekosaur> | alkjdflkjs, you have a permission problem somewhere. perhaps at some point you tried to run ghcup as root? |
2022-01-10 01:46:12 +0100 | <Inst> | there |
2022-01-10 01:46:13 +0100 | <Inst> | data [] a = [] | a : [a] |
2022-01-10 01:46:17 +0100 | <geekosaur> | ls -ld ~/.ghcup |
2022-01-10 01:46:26 +0100 | <Inst> | the version you get if you do :i [] |
2022-01-10 01:46:35 +0100 | <Inst> | do you know how to read this, sonny? |
2022-01-10 01:46:50 +0100 | <sonny> | Axman6: (b -> {a -> b}) right? |
2022-01-10 01:47:20 +0100 | <Axman6> | the definition of list in Haskell is quite magical and not really a good example of defining data types, because _you_ are not allowed to write that definition |
2022-01-10 01:47:32 +0100 | <Inst> | yeah, iirc, it's a primitive |
2022-01-10 01:47:33 +0100 | <Axman6> | sonny: I don't understand what the question is |
2022-01-10 01:47:43 +0100 | xkuru | (~xkuru@user/xkuru) (Read error: Connection reset by peer) |
2022-01-10 01:47:43 +0100 | <Inst> | i'd have to drag out a custom implementation of list |
2022-01-10 01:47:44 +0100 | <Axman6> | b -> a -> b is the same as b -> (a -> b) |
2022-01-10 01:47:44 +0100 | <sonny> | the order to read the signature |
2022-01-10 01:48:28 +0100 | <Inst> | and tbh, that's why I think it might be worthwhile to set up own pedagogy, i.e, people don't spend enough time being taught how type signatures work, how to read it, took me weeks before I had a sufficient understanding of it |
2022-01-10 01:48:29 +0100 | <geekosaur> | alkjdflkjs, can you join #haskell-beginners instead? it's a bit noisy in here currently, as you've probably noticed |
2022-01-10 01:48:56 +0100 | <ephemient> | % :i -> |
2022-01-10 01:48:56 +0100 | <yahb> | ephemient: type (->) :: * -> * -> *; type (->) = FUN 'Many :: * -> * -> *; -- Defined in `GHC.Types'; infixr -1 ->; instance Applicative ((->) r) -- Defined in `GHC.Base'; instance Functor ((->) r) -- Defined in `GHC.Base'; instance Monad ((->) r) -- Defined in `GHC.Base'; instance Monoid b => Monoid (a -> b) -- Defined in `GHC.Base'; instance Semigroup b => Semigroup (a -> b) -- Defined in `GHC.Base'; instance [s |
2022-01-10 01:48:59 +0100 | <Inst> | i'll read up |
2022-01-10 01:48:59 +0100 | <alkjdflkjs> | ok, thanks |
2022-01-10 01:49:03 +0100 | Kaiepi | (~Kaiepi@156.34.47.253) |
2022-01-10 01:49:16 +0100 | <ephemient> | oh I was hoping that would print out "infixr -1 ->" |
2022-01-10 01:49:23 +0100 | <sonny> | haskell uses * and letters? |
2022-01-10 01:49:35 +0100 | <EvanR> | Inst, all that is really not helping the original problem of why flip is required |
2022-01-10 01:49:40 +0100 | <Axman6> | c_wraith: I've spent too much time reading low level haskell and my brain keeps trying to figure out what the "wraith" function in C would be for |
2022-01-10 01:49:51 +0100 | <c_wraith> | it makes your data vanish |
2022-01-10 01:49:57 +0100 | <Axman6> | D: |
2022-01-10 01:50:01 +0100 | <Axman6> | likeMongoDB? |
2022-01-10 01:50:05 +0100 | xkuru | (~xkuru@user/xkuru) |
2022-01-10 01:50:08 +0100 | <c_wraith> | like /dev/null |
2022-01-10 01:50:09 +0100 | <pfurla-matrix> | > data List a = EmptyList | a :. (List a) deriving Show; infixr 5 :. |
2022-01-10 01:50:10 +0100 | <lambdabot> | <hint>:1:1: error: parse error on input ‘data’ |
2022-01-10 01:50:16 +0100 | <Axman6> | yeah, so like MongoDB |
2022-01-10 01:50:23 +0100 | eggplantade | (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) |
2022-01-10 01:50:33 +0100 | <Axman6> | pfurla-matrix: use % for yahb, it'll remember |
2022-01-10 01:50:37 +0100 | <geekosaur> | pfurla-matrix, use @let for definitions |
2022-01-10 01:50:43 +0100 | <Axman6> | or that |
2022-01-10 01:50:43 +0100 | <geekosaur> | or yahb, yeh |
2022-01-10 01:51:16 +0100 | <pfurla-matrix> | @let data List a = EmptyList | a :. (List a) deriving Show; infixr 5 :. |
2022-01-10 01:51:17 +0100 | <lambdabot> | Defined. |
2022-01-10 01:51:25 +0100 | <sonny> | so in this case b is the list and a is the numbers? |
2022-01-10 01:51:29 +0100 | <pfurla-matrix> | > 1 :. 2 :. 3 :. EmptyList |
2022-01-10 01:51:30 +0100 | <lambdabot> | 1 :. (2 :. (3 :. EmptyList)) |
2022-01-10 01:51:50 +0100 | <pfurla-matrix> | sonny: y |
2022-01-10 01:52:23 +0100 | <pfurla-matrix> | :t foldr (.:) EmptyList [1,2,3] |
2022-01-10 01:52:24 +0100 | <lambdabot> | error: |
2022-01-10 01:52:24 +0100 | <lambdabot> | • Variable not in scope: (.:) :: a0 -> List a -> List a |
2022-01-10 01:52:24 +0100 | <lambdabot> | • Perhaps you meant one of these: |
2022-01-10 01:52:41 +0100 | <EvanR> | oof |
2022-01-10 01:52:46 +0100 | <Axman6> | :. |
2022-01-10 01:52:53 +0100 | <pfurla-matrix> | s/.:/:./ |
2022-01-10 01:52:54 +0100 | <Axman6> | constructors start with : |
2022-01-10 01:53:01 +0100 | <Axman6> | small oof |
2022-01-10 01:53:10 +0100 | <sonny> | pfurla-matrix: I'm talking about Foldable t => (b -> a -> b) -> b -> t a -> b and foldl (flip(:)) [] |
2022-01-10 01:53:12 +0100 | <pfurla-matrix> | :t foldr (:.) EmptyList [1,2,3] |
2022-01-10 01:53:13 +0100 | <lambdabot> | Num a => List a |
2022-01-10 01:53:28 +0100 | <EvanR> | sonny, yeah, b = [Int], a = Int, in your examples |
2022-01-10 01:53:50 +0100 | <EvanR> | and t = [], if you are looking at that Foldable version |
2022-01-10 01:53:57 +0100 | <Axman6> | :t foldl -- here, all the b's are the type we want to return |
2022-01-10 01:53:58 +0100 | <lambdabot> | Foldable t => (b -> a -> b) -> b -> t a -> b |
2022-01-10 01:54:15 +0100 | Kaiepi | (~Kaiepi@156.34.47.253) (Remote host closed the connection) |
2022-01-10 01:54:16 +0100 | <Axman6> | % :t foldl @[] |
2022-01-10 01:54:16 +0100 | <yahb> | Axman6: (b -> a -> b) -> b -> [a] -> b |
2022-01-10 01:54:59 +0100 | <sonny> | EvanR: ok, so is the scheme version (a->a->b) ? |
2022-01-10 01:55:09 +0100 | <EvanR> | no... |
2022-01-10 01:55:17 +0100 | juri_ | (~juri@178.63.35.222) |
2022-01-10 01:55:23 +0100 | <Axman6> | it's (a -> b -> b) |
2022-01-10 01:55:33 +0100 | <sonny> | one sec |
2022-01-10 01:55:35 +0100 | <Axman6> | ... I think, I've already forgotten! |
2022-01-10 01:55:53 +0100 | <Inst> | wait, does sonny understand operators and operator sections? |
2022-01-10 01:55:56 +0100 | <sonny> | ok ok ok |
2022-01-10 01:56:06 +0100 | <sonny> | someone do the lambda bot on : |
2022-01-10 01:56:07 +0100 | <ephemient> | the accumulator has to be an input to the function being used to fold; whether it's the first argument or the second varies by language |
2022-01-10 01:56:15 +0100 | <EvanR> | :t (:) |
2022-01-10 01:56:16 +0100 | <lambdabot> | a -> [a] -> [a] |
2022-01-10 01:56:20 +0100 | <sonny> | ohhhh |
2022-01-10 01:56:25 +0100 | <sonny> | hmm |
2022-01-10 01:57:06 +0100 | <EvanR> | if you rename the variables, foldl is |
2022-01-10 01:57:14 +0100 | <Inst> | so what i'm assuming is happening with foldl is that (:) can't get its arguments in the right order, so flip is being used to reverse the order (:) is taking its arguments in |
2022-01-10 01:57:52 +0100 | <Axman6> | exactly |
2022-01-10 01:57:55 +0100 | <pfurla-matrix> | This is eye-opener https://wiki.haskell.org/Fold#List_folds_as_structural_transformations |
2022-01-10 01:57:57 +0100 | <Axman6> | nothing more, nothing less |
2022-01-10 01:57:59 +0100 | wagle | (~wagle@quassel.wagle.io) (Quit: http://quassel-irc.org - Chat comfortably. Anywhere.) |
2022-01-10 01:58:07 +0100 | <Inst> | user-defined list: members of the type UDF can either be of value (nil), which is a root that starts the list |
2022-01-10 01:58:14 +0100 | <EvanR> | belaying that |
2022-01-10 01:58:14 +0100 | <Inst> | UDF -> user-defined list |
2022-01-10 01:58:17 +0100 | little_mac | (~little_ma@2601:410:4300:3ce0:54ff:c767:ef1d:433e) (Ping timeout: 240 seconds) |
2022-01-10 01:58:30 +0100 | wagle | (~wagle@quassel.wagle.io) |
2022-01-10 01:58:42 +0100 | <Inst> | or, a construction of some value (of the same type as existing values in the list) appended to an existing list type |
2022-01-10 01:59:17 +0100 | <Inst> | you can't just have the second, because then there's no existing list value to append to |
2022-01-10 01:59:23 +0100 | <pfurla-matrix> | I'd rather talk about PDP-11 than Scheme (although Scheme is awesome too) |
2022-01-10 02:00:00 +0100 | <Inst> | but when you have the second, the list is composed out of stuff of type a being appended to existing values of type list a |
2022-01-10 02:00:13 +0100 | wroathe | (~wroathe@user/wroathe) (Ping timeout: 240 seconds) |
2022-01-10 02:00:13 +0100 | <ephemient> | or you could have a list type that can only represent infinite lists :) |
2022-01-10 02:00:23 +0100 | <Inst> | i've never seen that |
2022-01-10 02:00:24 +0100 | <c_wraith> | we usually call that Stream |
2022-01-10 02:00:24 +0100 | <sonny> | Axman6: do you say (a -> b -> b) because of how cons in scheme is defined? |
2022-01-10 02:00:49 +0100 | <sonny> | iirc it is not as strict as haskell |
2022-01-10 02:01:21 +0100 | <Inst> | why i'm full of shit / utterly nuts: want students to define a custom list type (while being hand-held) on the first problem set |
2022-01-10 02:01:41 +0100 | <pfurla-matrix> | @let ListInf a = a ::. ListInf a |
2022-01-10 02:01:42 +0100 | <lambdabot> | /sandbox/tmp/.L.hs:170:1: error: |
2022-01-10 02:01:42 +0100 | <lambdabot> | Not in scope: data constructor ‘ListInf’ |
2022-01-10 02:01:42 +0100 | <lambdabot> | | |
2022-01-10 02:01:43 +0100 | califax | (~califax@user/califx) (Remote host closed the connection) |
2022-01-10 02:01:55 +0100 | <pfurla-matrix> | @let data ListInf a = a ::. ListInf a |
2022-01-10 02:01:56 +0100 | <lambdabot> | Defined. |
2022-01-10 02:02:16 +0100 | <Inst> | ah, and how does that work? |
2022-01-10 02:02:25 +0100 | <Inst> | will that toss out an infinite type error any time you try to use it? |
2022-01-10 02:02:31 +0100 | <c_wraith> | sonny: (a -> b -> b) is closely related to lists. In particular, it's closely related to the church encoding of the (:) constructor |
2022-01-10 02:02:43 +0100 | <ephemient> | > fix (1 ::.) |
2022-01-10 02:02:44 +0100 | <lambdabot> | error: |
2022-01-10 02:02:44 +0100 | <lambdabot> | • No instance for (Show (ListInf Integer)) |
2022-01-10 02:02:44 +0100 | <lambdabot> | arising from a use of ‘show_M85587785111551100718’ |
2022-01-10 02:02:49 +0100 | <Inst> | whoops |
2022-01-10 02:02:49 +0100 | califax | (~califax@user/califx) |
2022-01-10 02:02:52 +0100 | <Inst> | forgot to derive show |
2022-01-10 02:03:11 +0100 | <pfurla-matrix> | that was on purpose :P |
2022-01-10 02:03:32 +0100 | <ephemient> | it's fine to derive Show, lambdabot will truncate |
2022-01-10 02:03:50 +0100 | <pfurla-matrix> | @def infconst a = a ::. (infconst a) |
2022-01-10 02:03:51 +0100 | <lambdabot> | Defined. |
2022-01-10 02:04:04 +0100 | <sonny> | pfurla-matrix: the mystery lies here "Note that the parameters to cons must be flipped, because the element to add is now the right hand parameter of the combining function." |
2022-01-10 02:04:43 +0100 | gallup | (~gallup@192-222-138-215.qc.cable.ebox.net) |
2022-01-10 02:04:46 +0100 | <Inst> | a : b = (:) a b |
2022-01-10 02:04:50 +0100 | gallup | (~gallup@192-222-138-215.qc.cable.ebox.net) (Client Quit) |
2022-01-10 02:04:58 +0100 | ouestbillie | (~gallup@192-222-138-215.qc.cable.ebox.net) (Quit: leaving) |
2022-01-10 02:05:05 +0100 | <Inst> | b has to be an existing list type |
2022-01-10 02:05:15 +0100 | <geekosaur> | value |
2022-01-10 02:05:19 +0100 | <Inst> | list value, sorry |
2022-01-10 02:05:20 +0100 | <Inst> | ;_; |
2022-01-10 02:06:15 +0100 | ouestbillie | (~gallup@192-222-138-215.qc.cable.ebox.net) |
2022-01-10 02:08:05 +0100 | <sonny> | so what I don't get is that it's like if the param list is x y, the zero value get's sent to x first in haskell and y first in scheme |
2022-01-10 02:08:30 +0100 | <geekosaur> | I told you that earlier, it's just an arbitrary choice each language made |
2022-01-10 02:08:42 +0100 | <sonny> | from there, I need to get to (a -> b -> b) |
2022-01-10 02:08:44 +0100 | <geekosaur> | scheme went for programmer convenience by having them match |
2022-01-10 02:09:01 +0100 | <sonny> | geekosaur: I understand but I don't understand |
2022-01-10 02:09:06 +0100 | wroathe | (~wroathe@206-55-188-8.fttp.usinternet.com) |
2022-01-10 02:09:06 +0100 | wroathe | (~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host) |
2022-01-10 02:09:06 +0100 | wroathe | (~wroathe@user/wroathe) |
2022-01-10 02:09:08 +0100 | <geekosaur> | haskell went for mathematical convenience with how the functions naturally associate |
2022-01-10 02:09:20 +0100 | <sonny> | ok |
2022-01-10 02:09:24 +0100 | <geekosaur> | each has arguments for and against |
2022-01-10 02:09:46 +0100 | <sonny> | so what haskell does, is that it allows for left association to work properly right? |
2022-01-10 02:09:52 +0100 | <geekosaur> | you'd have to hunt down the scheme and haskell language designers to find out why they made those choices |
2022-01-10 02:10:20 +0100 | <geekosaur> | it just makes left associativity match up with a natural left-associative function |
2022-01-10 02:10:30 +0100 | <sonny> | so fold can be universal, and when you use - it will keep the properties |
2022-01-10 02:10:38 +0100 | <geekosaur> | > foldr (*) z [a,b,c] |
2022-01-10 02:10:39 +0100 | <lambdabot> | a * (b * (c * z)) |
2022-01-10 02:10:45 +0100 | <geekosaur> | > foldl (*) z [a,b,c] |
2022-01-10 02:10:46 +0100 | <lambdabot> | z * a * b * c |
2022-01-10 02:11:02 +0100 | <Axman6> | > foldl (\accumlatingList headValue -> headValue : accumulatingList) [] [1,2,3] |
2022-01-10 02:11:03 +0100 | <lambdabot> | error: |
2022-01-10 02:11:03 +0100 | <lambdabot> | • Variable not in scope: accumulatingList :: [a] |
2022-01-10 02:11:03 +0100 | <lambdabot> | • Perhaps you meant ‘accumlatingList’ (line 1) |
2022-01-10 02:11:06 +0100 | <sonny> | err I don't actually remember - associativity |
2022-01-10 02:11:25 +0100 | <Axman6> | > foldl (\accumulatingList headValue -> headValue : accumulatingList) [] [1,2,3] |
2022-01-10 02:11:26 +0100 | <lambdabot> | [3,2,1] |
2022-01-10 02:11:27 +0100 | <sonny> | + is left but it doesn't matter |
2022-01-10 02:11:30 +0100 | <geekosaur> | see how nicely those both come out in Haskell? in Scheme the corresponding expansions are uglier because fold flips the argument order |
2022-01-10 02:11:49 +0100 | <geekosaur> | but it's more convenient for most programmers to remember |
2022-01-10 02:11:56 +0100 | <sonny> | ok |
2022-01-10 02:12:08 +0100 | <sonny> | much thanks |
2022-01-10 02:12:18 +0100 | hololeap_ | (~hololeap@user/hololeap) |
2022-01-10 02:12:45 +0100 | <dolio> | I don't see how these conveniences are more or less 'programmer' oriented. |
2022-01-10 02:12:58 +0100 | <Inst> | also, a question, is it useful to speak of FAM instead of Monad? |
2022-01-10 02:13:25 +0100 | wroathe | (~wroathe@user/wroathe) (Ping timeout: 240 seconds) |
2022-01-10 02:13:34 +0100 | <dolio> | It's convenient to be able to remember that the argument types are the same order in both, and it's convenient to remember a simple rule for what the result of the function will actually be. |
2022-01-10 02:13:34 +0100 | <pfurla-matrix> | you guys are almost going bananas and barbed wire |
2022-01-10 02:13:47 +0100 | <dolio> | Those are both convenient when programming. |
2022-01-10 02:14:12 +0100 | <pfurla-matrix> | what is FAM? |
2022-01-10 02:14:17 +0100 | <sonny> | dolio: (a->b->b) is probably what'd you do if you defined it though |
2022-01-10 02:14:21 +0100 | <Inst> | functor - applicative - monad |
2022-01-10 02:14:23 +0100 | <pfurla-matrix> | Functor-Applicative-Monad? |
2022-01-10 02:14:34 +0100 | <Inst> | then again, for a lot of types you might end up with FAMTSM or something like that |
2022-01-10 02:14:56 +0100 | <Inst> | just a way to avoid saying the M word, as well as making it clear you're talking about typeclasses |
2022-01-10 02:15:16 +0100 | <geekosaur> | Inst, to most of us FAM refers to the proposal to make Applicative (and thereby Functor) a "superclass" of Monad |
2022-01-10 02:15:22 +0100 | <Inst> | i see |
2022-01-10 02:15:27 +0100 | <Inst> | which went through |
2022-01-10 02:15:27 +0100 | <geekosaur> | because Applicative didn't exist when Monad was invented |
2022-01-10 02:15:39 +0100 | <geekosaur> | yes, some years back |
2022-01-10 02:15:45 +0100 | hololeap | (~hololeap@user/hololeap) (Ping timeout: 276 seconds) |
2022-01-10 02:15:46 +0100 | <Inst> | so functor only became a superclass of monad when applicative became a superclass of monad? |
2022-01-10 02:16:14 +0100 | <dolio> | sonny: I would probably do what is done in Haskell, because I'm used to it, and have no problems remembering how it is. |
2022-01-10 02:16:24 +0100 | <geekosaur> | yes |
2022-01-10 02:16:55 +0100 | <geekosaur> | there's even an old holdover, liftM should be fmap but because Functor was not a superclass of Monad it had to be "rebuilt" from >>= |
2022-01-10 02:18:24 +0100 | <Inst> | yeah i thought monads became a subclass of functor before then |
2022-01-10 02:18:42 +0100 | <geekosaur> | it really needs Applicative in between |
2022-01-10 02:18:52 +0100 | <pfurla-matrix> | does "being lazy with class" cover these? |
2022-01-10 02:19:03 +0100 | <Inst> | i actually don't see how monads are a subclass of applicative, tbh |
2022-01-10 02:19:15 +0100 | <Inst> | return = pure is natural |
2022-01-10 02:19:24 +0100 | <geekosaur> | because Monad claims to have two methods, return and (>>=) — but "return" is actually "pure" from Applicative, in the same way "liftM" is really "fmap" |
2022-01-10 02:19:40 +0100 | alekhine | (~alekhine@c-73-38-152-33.hsd1.ma.comcast.net) |
2022-01-10 02:19:44 +0100 | <Inst> | but why monads need <*> is more questionable |
2022-01-10 02:19:52 +0100 | <geekosaur> | they have it |
2022-01-10 02:19:57 +0100 | <c_wraith> | It's not so much that they need it as they have it |
2022-01-10 02:19:59 +0100 | <c_wraith> | :t ap |
2022-01-10 02:20:00 +0100 | <lambdabot> | Monad m => m (a -> b) -> m a -> m b |
2022-01-10 02:20:01 +0100 | <geekosaur> | we called it "ap" before Applicative |
2022-01-10 02:20:06 +0100 | <c_wraith> | :t (<*>) |
2022-01-10 02:20:07 +0100 | <lambdabot> | Applicative f => f (a -> b) -> f a -> f b |
2022-01-10 02:21:10 +0100 | alekhine | (~alekhine@c-73-38-152-33.hsd1.ma.comcast.net) (Client Quit) |
2022-01-10 02:21:24 +0100 | <EvanR> | sonny, I recently defined something with argument order like (b -> a -> b) instead of (a -> b -> b) because I forsaw myself wanting to partial the b alot, and so tried to avoid a lot of flips |
2022-01-10 02:21:36 +0100 | <EvanR> | still questioning my sanity |
2022-01-10 02:22:47 +0100 | <Inst> | i'm wondering, why can't monads and applicatives both have pure and return as separate methods? |
2022-01-10 02:22:53 +0100 | <Inst> | or is this something with the instance system? |
2022-01-10 02:23:43 +0100 | yauhsien | (~yauhsien@118-167-43-90.dynamic-ip.hinet.net) (Remote host closed the connection) |
2022-01-10 02:23:46 +0100 | <Inst> | i.e, have them both be subclasses of fmap, but not subclasses of each other |
2022-01-10 02:23:48 +0100 | <sonny> | EvanR: I don't know what partial means there :( |
2022-01-10 02:23:54 +0100 | <Inst> | partial application |
2022-01-10 02:23:58 +0100 | <Inst> | did you learn about currying yet? |
2022-01-10 02:24:08 +0100 | <Inst> | (also planning to put that on first problem set) |
2022-01-10 02:24:08 +0100 | <sonny> | yeah, but I don't think about it |
2022-01-10 02:24:18 +0100 | <Axman6> | Inst: I use <*> _all_ the time, probably more often than I use anything from Monad |
2022-01-10 02:24:22 +0100 | kayvank | (~user@52-119-115-185.PUBLIC.monkeybrains.net) |
2022-01-10 02:24:27 +0100 | <pfurla-matrix> | :t (1 :) |
2022-01-10 02:24:28 +0100 | <lambdabot> | Num a => [a] -> [a] |
2022-01-10 02:24:31 +0100 | yauhsien | (~yauhsien@118-167-43-90.dynamic-ip.hinet.net) |
2022-01-10 02:24:46 +0100 | <Axman6> | "the function which adds 1 to the front of any lists of numbers" |
2022-01-10 02:24:47 +0100 | <lyxia> | It would subvert established expectations and you would have to have two parallel sets of combinators for Monad and Applicative |
2022-01-10 02:25:13 +0100 | <Inst> | i see |
2022-01-10 02:25:16 +0100 | <sonny> | EvanR: that is a dilema then :/ |
2022-01-10 02:25:18 +0100 | <jackdk> | every monad is an applicative, so there's no point having `return` (apart from historical baggage) |
2022-01-10 02:25:26 +0100 | <pfurla-matrix> | would the laws hold for anything but return = pure? |
2022-01-10 02:25:42 +0100 | <lyxia> | Requiring that the Applicative instance agree with the Monad instance means you can freely use applicative combinators for monads. |
2022-01-10 02:25:52 +0100 | <Axman6> | Inst: all Monads are Applicatives, which implies Monad is a subclass of Applicative. it is a monad law that <*> and ap behave the same |
2022-01-10 02:26:03 +0100 | <Inst> | i know |
2022-01-10 02:26:09 +0100 | <Inst> | or wait, is ap defined in monad? |
2022-01-10 02:26:13 +0100 | kayvank | (~user@52-119-115-185.PUBLIC.monkeybrains.net) (Remote host closed the connection) |
2022-01-10 02:26:15 +0100 | <Axman6> | no |
2022-01-10 02:26:43 +0100 | <pfurla-matrix> | :i ap |
2022-01-10 02:26:43 +0100 | <Axman6> | but it is defined for all monads as: ap mf ma = mf >>= \f -> f <$> ma |
2022-01-10 02:27:00 +0100 | wroathe | (~wroathe@206-55-188-8.fttp.usinternet.com) |
2022-01-10 02:27:00 +0100 | wroathe | (~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host) |
2022-01-10 02:27:00 +0100 | wroathe | (~wroathe@user/wroathe) |
2022-01-10 02:27:17 +0100 | <Inst> | tbh i sort of hate the applicative class, courtesy Hutton, I know what it's for |
2022-01-10 02:27:34 +0100 | <Inst> | *typeclass |
2022-01-10 02:27:36 +0100 | <geekosaur> | pfurla-matrix, :i doesn't work in lambdabot. it does in yahb but you probably want to use %% :i <whatever> so it'll pastebin the response |
2022-01-10 02:27:51 +0100 | <Inst> | but I can't figure out how to work with dissimilar nested monads in applicative |
2022-01-10 02:28:10 +0100 | <pfurla-matrix> | geekosaur: thanks |
2022-01-10 02:28:21 +0100 | <Inst> | yes yes, go learn monad transformers and i won't have this problem |
2022-01-10 02:28:27 +0100 | <EvanR> | sonny, not really |
2022-01-10 02:28:48 +0100 | <sonny> | what is the solution then? |
2022-01-10 02:28:54 +0100 | <pfurla-matrix> | Inst: keep doing what you are doing and you probably going to invent transformers yourself |
2022-01-10 02:29:11 +0100 | <EvanR> | sonny, pick argument order that makes usage most convenient |
2022-01-10 02:29:20 +0100 | <Inst> | i'm not that comfortable with the type system |
2022-01-10 02:29:39 +0100 | <Inst> | i.e, taking a function type as an argument in data / newtype? That's wild. |
2022-01-10 02:29:45 +0100 | <sonny> | good point |
2022-01-10 02:30:04 +0100 | <Inst> | with hutton, i think it's the first time anyone teaches you you can put in a function type as an argument in data /newtype |
2022-01-10 02:30:23 +0100 | <Axman6> | Inst: Applicative is probably one of the most useful type classes we have in Haskell, it is difficult to describe just how useful it is, and how pleasant it is to use once you know the pattern |
2022-01-10 02:30:50 +0100 | <Inst> | as far as i understand it, it's only useful with single layer applicative types |
2022-01-10 02:30:53 +0100 | <Axman6> | and it's one of the reasons why Facebook's Sigma spam filtering system can run as fast as it does |
2022-01-10 02:31:15 +0100 | <Axman6> | Inst: then I guess you don't understand it :) |
2022-01-10 02:31:23 +0100 | <Inst> | ;___; |
2022-01-10 02:31:31 +0100 | <Inst> | (emoticon denotes tears) |
2022-01-10 02:31:54 +0100 | Guest2113 | (~Guest21@2a00:23c8:1510:8b01:f5c5:cd35:22b1:ed5c) |
2022-01-10 02:32:23 +0100 | <pfurla-matrix> | Axman6: very true... parsec *sigh* |
2022-01-10 02:32:37 +0100 | <Inst> | i can't figure out what it should look like, say, <*> <*> if I have two layers |
2022-01-10 02:32:42 +0100 | wroathe | (~wroathe@user/wroathe) (Ping timeout: 256 seconds) |
2022-01-10 02:33:04 +0100 | <Inst> | and iirc operators (or functions) can't take operators as arguments |
2022-01-10 02:33:06 +0100 | <c_wraith> | if you have two layers and want to stay sane, use Compose |
2022-01-10 02:33:08 +0100 | TonyStone | (~TonyStone@2603-7080-8607-c36a-9cdb-69bc-753b-1e50.res6.spectrum.com) (Remote host closed the connection) |
2022-01-10 02:33:14 +0100 | <Inst> | i don't want to stay sane! |
2022-01-10 02:33:28 +0100 | <c_wraith> | and you can pass an operator as an argument by putting it in parens |
2022-01-10 02:33:37 +0100 | <Inst> | which converts it to a function |
2022-01-10 02:33:42 +0100 | <Inst> | so <*> (<*>)? |
2022-01-10 02:33:43 +0100 | <Axman6> | % getCompose $ (+) <$> Compose [Just 1, Just 2, Nothing] <*> Compose [Just 10, Nothing, Just 30] |
2022-01-10 02:33:43 +0100 | <yahb> | Axman6: [Just 11,Nothing,Just 31,Just 12,Nothing,Just 32,Nothing,Nothing,Nothing] |
2022-01-10 02:33:45 +0100 | <c_wraith> | what's the difference? |
2022-01-10 02:33:59 +0100 | yauhsien | (~yauhsien@118-167-43-90.dynamic-ip.hinet.net) (Remote host closed the connection) |
2022-01-10 02:34:16 +0100 | <Inst> | the exact reason ($) is useful? |
2022-01-10 02:34:25 +0100 | <Inst> | I never learned evaluation order properly |
2022-01-10 02:34:27 +0100 | <Axman6> | :t liftA2 (<*>) |
2022-01-10 02:34:27 +0100 | <Inst> | need exercises for that |
2022-01-10 02:34:28 +0100 | <lambdabot> | (Applicative f1, Applicative f2) => f1 (f2 (a -> b)) -> f1 (f2 a) -> f1 (f2 b) |
2022-01-10 02:34:30 +0100 | burnsidesLlama | (~burnsides@dhcp168-013.wadham.ox.ac.uk) (Remote host closed the connection) |
2022-01-10 02:34:41 +0100 | <c_wraith> | ($) isn't about evaluation order, it's about parsing |
2022-01-10 02:34:47 +0100 | <Inst> | the way I understand it is that functions of infix need to be ( ... ) |
2022-01-10 02:34:49 +0100 | <geekosaur> | ($) can reduce the number of parentheses you need |
2022-01-10 02:34:49 +0100 | <Inst> | parsing, I guess |
2022-01-10 02:34:50 +0100 | yauhsien | (~yauhsien@118-167-43-90.dynamic-ip.hinet.net) |
2022-01-10 02:34:58 +0100 | <Inst> | $ works because the function can't take $ as an argument |
2022-01-10 02:35:03 +0100 | burnsidesLlama | (~burnsides@client-8-64.eduroam.oxuni.org.uk) |
2022-01-10 02:35:17 +0100 | <Inst> | and $ has infix (l or r? I forget) of 0 |
2022-01-10 02:35:20 +0100 | <Inst> | so it gets parsed last |
2022-01-10 02:35:35 +0100 | <Inst> | parsing is a better term than evaluation, since trying to use evaluation gets confused with lazy evaluation, which is a whole another beast |
2022-01-10 02:35:53 +0100 | <geekosaur> | it's about associativity |
2022-01-10 02:36:06 +0100 | <geekosaur> | normal function application is left-associative and highest precedence |
2022-01-10 02:36:15 +0100 | <geekosaur> | \($) is right-associative and lowest precedence |
2022-01-10 02:36:26 +0100 | <geekosaur> | so it kinda acts like inside-out parentheses |
2022-01-10 02:36:38 +0100 | <Inst> | which is why you see it everywhere in Haskell code and people get confused |
2022-01-10 02:36:48 +0100 | vysn | (~vysn@user/vysn) |
2022-01-10 02:37:00 +0100 | <Inst> | iirc infixl / infixr only throws errors if they have the same precedence, right? |
2022-01-10 02:37:05 +0100 | Guest2113 | (~Guest21@2a00:23c8:1510:8b01:f5c5:cd35:22b1:ed5c) (Ping timeout: 256 seconds) |
2022-01-10 02:37:21 +0100 | <ephemient> | also infix (without infixl/infixr) |
2022-01-10 02:38:00 +0100 | <Inst> | a ^^l b ^^r c, assuming ^^r and l are user-defined operators |
2022-01-10 02:38:05 +0100 | Midjak | (~Midjak@may53-1-78-226-116-92.fbx.proxad.net) (Quit: This computer has gone to sleep) |
2022-01-10 02:38:14 +0100 | <Inst> | that only blows up if they have the same precedence level? |
2022-01-10 02:38:52 +0100 | <Axman6> | I;d love to have an infixb for balanced, so a * b * b * d = (a * b) * (c * d), but that would be a very weird feature |
2022-01-10 02:39:01 +0100 | burnsidesLlama | (~burnsides@client-8-64.eduroam.oxuni.org.uk) (Ping timeout: 240 seconds) |
2022-01-10 02:39:16 +0100 | <c_wraith> | that would confuse the heck out of people |
2022-01-10 02:39:32 +0100 | <Axman6> | the fixity number would be "n" where only * has n, you can't mix with other operators |
2022-01-10 02:39:35 +0100 | <Inst> | only if anyone actually uses it |
2022-01-10 02:39:48 +0100 | wroathe | (~wroathe@206-55-188-8.fttp.usinternet.com) |
2022-01-10 02:39:48 +0100 | wroathe | (~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host) |
2022-01-10 02:39:48 +0100 | wroathe | (~wroathe@user/wroathe) |
2022-01-10 02:40:39 +0100 | <lyxia> | Have you heard about our lord and savior Agda |
2022-01-10 02:41:03 +0100 | <Axman6> | "If a shitty feature exists and no one uses it, is it really a problem?" |
2022-01-10 02:41:03 +0100 | <Inst> | parsing still has a problem, tbh, as a term |
2022-01-10 02:41:07 +0100 | <Inst> | since you'll confuse it with parsers |
2022-01-10 02:41:09 +0100 | TonyStone | (~TonyStone@2603-7080-8607-c36a-9cdb-69bc-753b-1e50.res6.spectrum.com) |
2022-01-10 02:41:22 +0100 | <Axman6> | mixfix+-_+ |
2022-01-10 02:41:34 +0100 | <lyxia> | <3 |
2022-01-10 02:42:22 +0100 | <Inst> | so, i'll treat it as a homework assignment from you, axman6 |
2022-01-10 02:42:50 +0100 | <Inst> | the reason i had that openfiledialog crap was because i was trying to set up an environment where learning haskell would be "user friendly", for some definition of user and friendly |
2022-01-10 02:42:57 +0100 | euandreh | (~euandreh@2804:14c:33:9fe5:f755:55d9:216b:76f6) (Ping timeout: 240 seconds) |
2022-01-10 02:43:11 +0100 | <Inst> | learning IO, the biggest thing that pops to mind is "why do I have to specify the filepath in code?" |
2022-01-10 02:43:24 +0100 | <Inst> | "if i specify it with a user prompt, why does it have to be command line?" |
2022-01-10 02:43:31 +0100 | <Axman6> | I believe several people have encouraged to learn haskell first, then you can try and make it easier, once you know why things are the way they are |
2022-01-10 02:43:45 +0100 | <Inst> | yeah, i'm learning haskell right now |
2022-01-10 02:43:57 +0100 | <Inst> | my time for deployment is delayed to late march at the earliest, but i wouldn't be surprised if it were june |
2022-01-10 02:44:05 +0100 | mvk | (~mvk@2607:fea8:5cdd:f000::55f8) |
2022-01-10 02:44:23 +0100 | <Inst> | but sorry, i guess i'm using you guys as a public journal of "why the hell is this so hard?" |
2022-01-10 02:44:31 +0100 | yauhsien | (~yauhsien@118-167-43-90.dynamic-ip.hinet.net) (Remote host closed the connection) |
2022-01-10 02:44:35 +0100 | <Inst> | the homework assignment is: |
2022-01-10 02:44:36 +0100 | wroathe | (~wroathe@user/wroathe) (Ping timeout: 256 seconds) |
2022-01-10 02:44:36 +0100 | raehik | (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 256 seconds) |
2022-01-10 02:44:56 +0100 | little_mac | (~little_ma@2601:410:4300:3ce0:54ff:c767:ef1d:433e) |
2022-01-10 02:45:18 +0100 | yauhsien | (~yauhsien@118-167-43-90.dynamic-ip.hinet.net) |
2022-01-10 02:45:21 +0100 | <Inst> | I've figured out how to use >>= \foo -> ... as a way to feed openFile a type of IO Maybe [Text] |
2022-01-10 02:45:27 +0100 | shriekingnoise | (~shrieking@186.137.144.80) |
2022-01-10 02:45:34 +0100 | <Inst> | I've figured out how to use fmap to do so |
2022-01-10 02:45:40 +0100 | <Inst> | now I need to figure out how to use pure / <*> |
2022-01-10 02:45:44 +0100 | <Inst> | I was thinking it wasn't possible |
2022-01-10 02:45:51 +0100 | <Inst> | openFile, in this context, requires String |
2022-01-10 02:46:03 +0100 | <Axman6> | you need to stop forgetting the parens :) |
2022-01-10 02:46:09 +0100 | <Inst> | ;___; |
2022-01-10 02:46:24 +0100 | <Inst> | why do the parens matter? |
2022-01-10 02:46:48 +0100 | <Axman6> | because what you wrote is ((IO Maybe) [Text]), which is a kind error |
2022-01-10 02:47:02 +0100 | <Inst> | why do we default to this? |
2022-01-10 02:47:07 +0100 | <Axman6> | :kind IO |
2022-01-10 02:47:14 +0100 | <Axman6> | % :kind IO |
2022-01-10 02:47:14 +0100 | <yahb> | Axman6: * -> * |
2022-01-10 02:47:20 +0100 | <Axman6> | % :kind Maybe |
2022-01-10 02:47:20 +0100 | <yahb> | Axman6: * -> * |
2022-01-10 02:47:27 +0100 | <Axman6> | * /= * -> * |
2022-01-10 02:47:31 +0100 | <Inst> | other than perhaps laziness (type-level function application follows the same rules as function application) |
2022-01-10 02:47:52 +0100 | <Inst> | Is there actually a context where (TC1 TC2) TC3 is useful as a series of type constructors? |
2022-01-10 02:47:57 +0100 | azimut_ | (~azimut@gateway/tor-sasl/azimut) |
2022-01-10 02:48:14 +0100 | <Axman6> | it's for exactly the same reason as we do the same thing for function, " " is function and type application, so it associates to the left |
2022-01-10 02:48:14 +0100 | <dolio> | It works exactly like `f x y z` at the term level. |
2022-01-10 02:48:15 +0100 | azimut | (~azimut@gateway/tor-sasl/azimut) (Ping timeout: 276 seconds) |
2022-01-10 02:48:28 +0100 | <Inst> | i mean why does it need to left associate as opposed to right associate? |
2022-01-10 02:48:32 +0100 | <Axman6> | % :kind Either |
2022-01-10 02:48:32 +0100 | <yahb> | Axman6: * -> * -> * |
2022-01-10 02:48:46 +0100 | <Axman6> | which is * -> (* -> *) |
2022-01-10 02:49:11 +0100 | <Axman6> | that means we can talk about Either Int, which is something of kind * -> *, we have partially applied the Either constructor |
2022-01-10 02:49:15 +0100 | geekosaur | (~geekosaur@xmonad/geekosaur) (Remote host closed the connection) |
2022-01-10 02:49:35 +0100 | geekosaur | (~geekosaur@xmonad/geekosaur) |
2022-01-10 02:49:36 +0100 | <Axman6> | :t fmap @(Either Int) |
2022-01-10 02:49:36 +0100 | <lambdabot> | error: |
2022-01-10 02:49:37 +0100 | <lambdabot> | Pattern syntax in expression context: fmap@(Either Int) |
2022-01-10 02:49:37 +0100 | <lambdabot> | Did you mean to enable TypeApplications? |
2022-01-10 02:49:38 +0100 | <Inst> | (Either Int) String |
2022-01-10 02:49:41 +0100 | <Axman6> | % :t fmap @(Either Int) |
2022-01-10 02:49:41 +0100 | <yahb> | Axman6: (a -> b) -> Either Int a -> Either Int b |
2022-01-10 02:49:59 +0100 | <Axman6> | so, we can talk about Either where f = Either Int |
2022-01-10 02:50:22 +0100 | jakalx | (~jakalx@base.jakalx.net) (Error from remote client) |
2022-01-10 02:50:39 +0100 | <Inst> | hence why I suspect it's reasonable to introduce early "Haskell has a powerful type system", except I don't know what a type system is and why it's powerful |
2022-01-10 02:51:33 +0100 | <Inst> | but w/e, that's my problem, at this point, I've already found Haskell in Depth and they discuss (in something I can almost understand) the type system |
2022-01-10 02:52:39 +0100 | <Inst> | thanks for humoring me, have a good night |
2022-01-10 02:53:29 +0100 | <Axman6> | o/ |
2022-01-10 02:55:03 +0100 | yauhsien | (~yauhsien@118-167-43-90.dynamic-ip.hinet.net) (Remote host closed the connection) |
2022-01-10 02:55:44 +0100 | yauhsien | (~yauhsien@118-167-43-90.dynamic-ip.hinet.net) |
2022-01-10 02:56:04 +0100 | alkjdflkjs | (~alkjdflkj@187.173.201.254) (Quit: Connection closed) |
2022-01-10 03:00:00 +0100 | wroathe | (~wroathe@206-55-188-8.fttp.usinternet.com) |
2022-01-10 03:00:00 +0100 | wroathe | (~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host) |
2022-01-10 03:00:00 +0100 | wroathe | (~wroathe@user/wroathe) |
2022-01-10 03:01:20 +0100 | boletales | (~boletales@p98076-ipoefx.ipoe.ocn.ne.jp) |
2022-01-10 03:05:33 +0100 | yauhsien | (~yauhsien@118-167-43-90.dynamic-ip.hinet.net) (Remote host closed the connection) |
2022-01-10 03:06:12 +0100 | <monochrom> | "powerful" is a very vague and much abused word. |
2022-01-10 03:06:24 +0100 | yauhsien | (~yauhsien@118-167-43-90.dynamic-ip.hinet.net) |
2022-01-10 03:06:30 +0100 | <monochrom> | "expressive" is how I would describe Haskell's type system. |
2022-01-10 03:07:27 +0100 | <qrpnxz> | it's also powerful |
2022-01-10 03:09:01 +0100 | <EvanR> | C++ is powerful |
2022-01-10 03:09:09 +0100 | <EvanR> | in the shoot yourself in the foot sense |
2022-01-10 03:09:18 +0100 | <EvanR> | i.e. high voltage |
2022-01-10 03:09:59 +0100 | <jackson99> | not sure I'd associate power of the type system with its unsoundness |
2022-01-10 03:10:44 +0100 | <EvanR> | wouldn't an unsound logic be the strongest of all? xD |
2022-01-10 03:11:19 +0100 | <jackson99> | that being said C++ has a pretty expressive type system as well, most of the unsafety was inherited from C |
2022-01-10 03:11:57 +0100 | <geekosaur> | .oO { Paul Lynde singing "I'm my own grandmother" } |
2022-01-10 03:13:23 +0100 | califax- | (~califax@user/califx) |
2022-01-10 03:14:01 +0100 | <sonny> | it's a type system that meets the programmers expectations |
2022-01-10 03:14:37 +0100 | notzmv | (~zmv@user/notzmv) (Ping timeout: 240 seconds) |
2022-01-10 03:16:06 +0100 | yauhsien | (~yauhsien@118-167-43-90.dynamic-ip.hinet.net) (Remote host closed the connection) |
2022-01-10 03:16:12 +0100 | califax | (~califax@user/califx) (Ping timeout: 276 seconds) |
2022-01-10 03:16:12 +0100 | califax- | califax |
2022-01-10 03:16:57 +0100 | yauhsien | (~yauhsien@118-167-43-90.dynamic-ip.hinet.net) |
2022-01-10 03:17:45 +0100 | lavaman | (~lavaman@98.38.249.169) |
2022-01-10 03:19:36 +0100 | <sonny> | are n+k patterns gone? |
2022-01-10 03:21:49 +0100 | lavaman | (~lavaman@98.38.249.169) (Ping timeout: 240 seconds) |
2022-01-10 03:24:37 +0100 | mbuf | (~Shakthi@182.77.103.82) |
2022-01-10 03:25:57 +0100 | waleee | (~waleee@2001:9b0:21d:fc00:398f:b003:b90d:acf4) (Ping timeout: 240 seconds) |
2022-01-10 03:26:22 +0100 | waleee | (~waleee@h-98-128-229-110.NA.cust.bahnhof.se) |
2022-01-10 03:26:39 +0100 | yauhsien | (~yauhsien@118-167-43-90.dynamic-ip.hinet.net) (Remote host closed the connection) |
2022-01-10 03:27:20 +0100 | yauhsien | (~yauhsien@118-167-43-90.dynamic-ip.hinet.net) |
2022-01-10 03:29:05 +0100 | neurocyte09172 | (~neurocyte@IP-094046066140.dynamic.medianet-world.de) |
2022-01-10 03:29:05 +0100 | neurocyte09172 | (~neurocyte@IP-094046066140.dynamic.medianet-world.de) (Changing host) |
2022-01-10 03:29:05 +0100 | neurocyte09172 | (~neurocyte@user/neurocyte) |
2022-01-10 03:30:37 +0100 | neurocyte0917 | (~neurocyte@user/neurocyte) (Ping timeout: 240 seconds) |
2022-01-10 03:30:37 +0100 | neurocyte09172 | neurocyte0917 |
2022-01-10 03:31:30 +0100 | emf | (~emf@2620:10d:c090:400::5:b9c2) |
2022-01-10 03:31:36 +0100 | ProfSimm | (~ProfSimm@87.227.196.109) (Remote host closed the connection) |
2022-01-10 03:31:37 +0100 | xff0x | (~xff0x@2001:1a81:52d4:9900:5627:62b8:c837:dd4a) (Ping timeout: 240 seconds) |
2022-01-10 03:31:48 +0100 | sunarch | (uid526836@user/sunarch) |
2022-01-10 03:33:06 +0100 | wyrd | (~wyrd@gateway/tor-sasl/wyrd) (Ping timeout: 276 seconds) |
2022-01-10 03:33:45 +0100 | xff0x | (~xff0x@2001:1a81:5310:700:7a4c:f58f:8e12:e28b) |
2022-01-10 03:37:09 +0100 | yauhsien | (~yauhsien@118-167-43-90.dynamic-ip.hinet.net) (Remote host closed the connection) |
2022-01-10 03:38:00 +0100 | yauhsien | (~yauhsien@118-167-43-90.dynamic-ip.hinet.net) |
2022-01-10 03:38:52 +0100 | <Inst> | https://stackoverflow.com/questions/3748592/what-are-nk-patterns-and-why-are-they-banned-from-hask… sonny |
2022-01-10 03:39:08 +0100 | wyrd | (~wyrd@gateway/tor-sasl/wyrd) |
2022-01-10 03:39:26 +0100 | <EvanR> | banned patterns |
2022-01-10 03:39:46 +0100 | <sonny> | was super easy to define stirling numbers with them |
2022-01-10 03:42:13 +0100 | Gurkenglas | (~Gurkengla@dslb-002-203-144-204.002.203.pools.vodafone-ip.de) (Ping timeout: 240 seconds) |
2022-01-10 03:42:58 +0100 | <Inst> | you can still do n+k |
2022-01-10 03:43:02 +0100 | <Inst> | just have to be a bit creative |
2022-01-10 03:43:11 +0100 | <Inst> | *Main> factorial (n) =( \k -> ((*) (k+1) (factorial k))) (n+1) |
2022-01-10 03:43:21 +0100 | <Inst> | inner parens are not needed |
2022-01-10 03:43:45 +0100 | <Inst> | at least, in the lambda, other than to specify arguments for (*) and to sectionize * |
2022-01-10 03:44:03 +0100 | <Inst> | oh derp, that code doesn't work |
2022-01-10 03:45:13 +0100 | <EvanR> | I saw a proposal to remove numeric literals from patterns |
2022-01-10 03:45:40 +0100 | <sonny> | sometimes you just want to copy the formula into Haskell you know? ;) |
2022-01-10 03:46:29 +0100 | <Inst> | factorial 0 = 1 |
2022-01-10 03:46:29 +0100 | <Inst> | factorial (n) = (\n -> (*) (n+1) (factorial n)) (n-1) |
2022-01-10 03:47:16 +0100 | <EvanR> | factorial n = product [1..n] -- xD |
2022-01-10 03:47:41 +0100 | yauhsien | (~yauhsien@118-167-43-90.dynamic-ip.hinet.net) (Remote host closed the connection) |
2022-01-10 03:48:19 +0100 | jakalx | (~jakalx@base.jakalx.net) |
2022-01-10 03:48:31 +0100 | yauhsien | (~yauhsien@118-167-43-90.dynamic-ip.hinet.net) |
2022-01-10 03:48:49 +0100 | <Inst> | but that's equivalent to an n+k pattern, except without the wonkiness |
2022-01-10 03:49:08 +0100 | <sonny> | EvanR: lol |
2022-01-10 03:49:30 +0100 | <sonny> | afk |
2022-01-10 03:49:37 +0100 | sabx | (~sabbas@user/sabbas) (Ping timeout: 256 seconds) |
2022-01-10 03:50:08 +0100 | stef204 | (~stef204@user/stef204) (Quit: WeeChat 3.4) |
2022-01-10 03:51:13 +0100 | <Inst> | sonny: even if it worked, if you check the link |
2022-01-10 03:51:39 +0100 | <Inst> | it'd probably end up bugging out, and tbh i don't get why ghc isn't smart enough to avoid bugging out |
2022-01-10 03:52:37 +0100 | machinedgod | (~machinedg@24.105.81.50) (Ping timeout: 240 seconds) |
2022-01-10 03:57:33 +0100 | sonny | (~sonny@bras-base-london1483w-grc-32-70-52-175-166.dsl.bell.ca) (Ping timeout: 256 seconds) |
2022-01-10 03:58:14 +0100 | yauhsien | (~yauhsien@118-167-43-90.dynamic-ip.hinet.net) (Remote host closed the connection) |
2022-01-10 03:58:54 +0100 | yauhsien | (~yauhsien@118-167-43-90.dynamic-ip.hinet.net) |
2022-01-10 04:00:04 +0100 | <Inst> | apparently n+k was defined to bug out |
2022-01-10 04:00:05 +0100 | <Inst> | https://sites.google.com/site/haskell/notes/nkpatterns |
2022-01-10 04:00:38 +0100 | <Inst> | sort of wish haskell was smart enough that n+k or, for that matter, an arbitrary expression in pattern matching, would be processed correctly |
2022-01-10 04:00:57 +0100 | sabx | (~sabbas@user/sabbas) |
2022-01-10 04:01:16 +0100 | <jackson99> | I thought n+k pattern is no longer supported? |
2022-01-10 04:01:33 +0100 | <Inst> | it's gone |
2022-01-10 04:01:43 +0100 | <EvanR> | pattern matching isn't some AI thing, it's part of a carefully defined calculus related to ADTs |
2022-01-10 04:02:25 +0100 | <EvanR> | there are cool new kind of patterns out there but it's not a thing to understand arbitrary expressions |
2022-01-10 04:03:00 +0100 | <EvanR> | e.g. patterns for list could be converted to a fold |
2022-01-10 04:03:34 +0100 | <EvanR> | for any Num, that's not the case for + |
2022-01-10 04:04:45 +0100 | lemonsnicks | (~lemonsnic@cpc159519-perr18-2-0-cust114.19-1.cable.virginm.net) (Quit: ZNC 1.8.2 - https://znc.in) |
2022-01-10 04:06:08 +0100 | <Inst> | + on fixed precision integral messes up once you get close enough to overflow |
2022-01-10 04:06:49 +0100 | <Inst> | besides, i've shown the workaround to produce something roughly equivalent to n+k |
2022-01-10 04:06:54 +0100 | wyrd | (~wyrd@gateway/tor-sasl/wyrd) (Ping timeout: 276 seconds) |
2022-01-10 04:06:55 +0100 | <EvanR> | does Int mess up or does the programmer xD |
2022-01-10 04:07:02 +0100 | <Inst> | without the wonkiness |
2022-01-10 04:07:12 +0100 | <Inst> | is the self-other dichotomy real or fictive? :) |
2022-01-10 04:07:45 +0100 | <EvanR> | true the user and the computer probably have irreversible entanglement |
2022-01-10 04:08:45 +0100 | yauhsien | (~yauhsien@118-167-43-90.dynamic-ip.hinet.net) (Remote host closed the connection) |
2022-01-10 04:09:35 +0100 | yauhsien | (~yauhsien@118-167-43-90.dynamic-ip.hinet.net) |
2022-01-10 04:11:17 +0100 | sonny | (~sonny@bras-base-london1483w-grc-32-70-52-175-166.dsl.bell.ca) |
2022-01-10 04:12:41 +0100 | xkuru | (~xkuru@user/xkuru) (Read error: Connection reset by peer) |
2022-01-10 04:14:16 +0100 | FinnElija | (~finn_elij@user/finn-elija/x-0085643) (Killed (NickServ (Forcing logout FinnElija -> finn_elija))) |
2022-01-10 04:14:16 +0100 | finn_elija | (~finn_elij@user/finn-elija/x-0085643) |
2022-01-10 04:14:16 +0100 | finn_elija | FinnElija |
2022-01-10 04:17:54 +0100 | wyrd | (~wyrd@gateway/tor-sasl/wyrd) |
2022-01-10 04:18:21 +0100 | lemonsnicks | (~lemonsnic@cpc159519-perr18-2-0-cust114.19-1.cable.virginm.net) |
2022-01-10 04:18:31 +0100 | sonny | (~sonny@bras-base-london1483w-grc-32-70-52-175-166.dsl.bell.ca) (Ping timeout: 256 seconds) |
2022-01-10 04:19:15 +0100 | yauhsien | (~yauhsien@118-167-43-90.dynamic-ip.hinet.net) (Remote host closed the connection) |
2022-01-10 04:19:56 +0100 | yauhsien | (~yauhsien@118-167-43-90.dynamic-ip.hinet.net) |
2022-01-10 04:19:59 +0100 | <Inst> | erm, could someone explain Type to me? |
2022-01-10 04:20:33 +0100 | <Inst> | the problem is, my orientation is, well, "you don't understand anything unless you can derive it yourself" -> comp sci version: "you don't understand anything unless you can implement it yourself" |
2022-01-10 04:20:43 +0100 | <Inst> | erm, not Type |
2022-01-10 04:20:45 +0100 | <Inst> | Text |
2022-01-10 04:20:54 +0100 | <Inst> | String is bad because it's linked lists and thus not performant |
2022-01-10 04:21:02 +0100 | <Inst> | but then what is Text? Is it some hack to produce arrays? |
2022-01-10 04:21:43 +0100 | <EvanR> | lists are bad if they are big and stick around |
2022-01-10 04:21:53 +0100 | <EvanR> | which is not necessarily the case |
2022-01-10 04:22:15 +0100 | <EvanR> | Text is implemented as an array |
2022-01-10 04:22:42 +0100 | <EvanR> | you could make it yourself if you really wanted, it's just a library |
2022-01-10 04:25:36 +0100 | <EvanR> | one issue with String is, a lot of processing goes into each Char when they go through Handles. If you use packed encoded text it is faster |
2022-01-10 04:27:56 +0100 | <Inst> | i guess it's my problem, i.e, how do you implement arrays in haskell |
2022-01-10 04:29:15 +0100 | <EvanR> | for performance there are GHC primitives |
2022-01-10 04:29:37 +0100 | <EvanR> | but several libraries exist which put a nice API on top |
2022-01-10 04:29:46 +0100 | yauhsien | (~yauhsien@118-167-43-90.dynamic-ip.hinet.net) (Remote host closed the connection) |
2022-01-10 04:30:25 +0100 | yauhsien | (~yauhsien@118-167-43-90.dynamic-ip.hinet.net) |
2022-01-10 04:30:43 +0100 | <EvanR> | and set you up for fusion |
2022-01-10 04:31:06 +0100 | <EvanR> | see `vector' |
2022-01-10 04:35:49 +0100 | BrokenClutch | (~pioneer@2804:d41:c292:6c00:33d8:d2f1:d8af:153e) (Read error: Connection reset by peer) |
2022-01-10 04:41:35 +0100 | Kaiepi | (~Kaiepi@156.34.47.253) |
2022-01-10 04:41:45 +0100 | Inst | (~delicacie@c-98-208-218-119.hsd1.fl.comcast.net) (Ping timeout: 256 seconds) |
2022-01-10 04:44:10 +0100 | td_ | (~td@muedsl-82-207-238-021.citykom.de) (Ping timeout: 256 seconds) |
2022-01-10 04:44:29 +0100 | x88x88x_ | (~x88x88x@gateway/vpn/pia/x88x88x) |
2022-01-10 04:45:49 +0100 | td_ | (~td@94.134.91.23) |
2022-01-10 04:46:21 +0100 | x88x88x_ | (~x88x88x@gateway/vpn/pia/x88x88x) (Client Quit) |
2022-01-10 04:46:42 +0100 | x88x88x_ | (~x88x88x@gateway/vpn/pia/x88x88x) |
2022-01-10 04:48:00 +0100 | dyeplexer | (~dyeplexer@user/dyeplexer) |
2022-01-10 04:49:16 +0100 | little_mac | (~little_ma@2601:410:4300:3ce0:54ff:c767:ef1d:433e) (Remote host closed the connection) |
2022-01-10 04:50:11 +0100 | little_mac | (~little_ma@2601:410:4300:3ce0:54ff:c767:ef1d:433e) |
2022-01-10 05:00:00 +0100 | Taneb | (~Taneb@2001:41c8:51:10d:aaaa:0:aaaa:0) (Quit: I seem to have stopped.) |
2022-01-10 05:01:07 +0100 | Taneb | (~Taneb@runciman.hacksoc.org) |
2022-01-10 05:04:59 +0100 | waleee | (~waleee@h-98-128-229-110.NA.cust.bahnhof.se) (Ping timeout: 256 seconds) |
2022-01-10 05:05:06 +0100 | jonathanx | (~jonathan@h-178-174-176-109.A357.priv.bahnhof.se) (Remote host closed the connection) |
2022-01-10 05:05:12 +0100 | Inst | (~delicacie@c-98-208-218-119.hsd1.fl.comcast.net) |
2022-01-10 05:05:13 +0100 | jonathanx_ | (~jonathan@h-178-174-176-109.A357.priv.bahnhof.se) |
2022-01-10 05:08:02 +0100 | jakalx | (~jakalx@base.jakalx.net) () |
2022-01-10 05:10:03 +0100 | <albet70> | how to construct ExceptT e IO a? IO isn't a constructor |
2022-01-10 05:10:42 +0100 | thejuan24f[m] | (~thejuan2m@2001:470:69fc:105::1:6569) |
2022-01-10 05:10:54 +0100 | <dibblego> | given which? |
2022-01-10 05:12:53 +0100 | perrierjouet | (~perrier-j@modemcable012.251-130-66.mc.videotron.ca) (Quit: WeeChat 3.4) |
2022-01-10 05:13:57 +0100 | <albet70> | any |
2022-01-10 05:16:00 +0100 | <albet70> | :t ExceptT $ print $ Left 3 |
2022-01-10 05:16:01 +0100 | <lambdabot> | error: |
2022-01-10 05:16:01 +0100 | <lambdabot> | • Couldn't match type ‘()’ with ‘Either e a’ |
2022-01-10 05:16:01 +0100 | <lambdabot> | Expected type: IO (Either e a) |
2022-01-10 05:16:42 +0100 | ensyde | (~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) (Quit: Leaving) |
2022-01-10 05:16:57 +0100 | <Axman6> | :t ExceptT $ print (Left 3 :: Either String Int) |
2022-01-10 05:16:58 +0100 | <lambdabot> | error: |
2022-01-10 05:16:58 +0100 | <lambdabot> | • Couldn't match type ‘()’ with ‘Either e a’ |
2022-01-10 05:16:58 +0100 | <lambdabot> | Expected type: IO (Either e a) |
2022-01-10 05:17:05 +0100 | <Axman6> | :t ExceptT |
2022-01-10 05:17:06 +0100 | <lambdabot> | m (Either e a) -> ExceptT e m a |
2022-01-10 05:17:11 +0100 | <Axman6> | uh, of course |
2022-01-10 05:17:36 +0100 | <Axman6> | :t ExceptT $ fmap Left $ print "foo" |
2022-01-10 05:17:36 +0100 | <lambdabot> | ExceptT () IO a |
2022-01-10 05:17:43 +0100 | <Axman6> | :t print |
2022-01-10 05:17:44 +0100 | <lambdabot> | Show a => a -> IO () |
2022-01-10 05:18:30 +0100 | <EvanR> | :t throw |
2022-01-10 05:18:31 +0100 | <lambdabot> | Exception e => e -> a |
2022-01-10 05:18:52 +0100 | <EvanR> | :t throwError |
2022-01-10 05:18:53 +0100 | <lambdabot> | MonadError e m => e -> m a |
2022-01-10 05:19:01 +0100 | <EvanR> | ExceptT is a MonadError |
2022-01-10 05:19:32 +0100 | <EvanR> | a non-error result of ExceptT can be created with pure / return |
2022-01-10 05:20:02 +0100 | <EvanR> | so basically, pure/return or throwError are two good ways to construct an ExceptT |
2022-01-10 05:20:55 +0100 | <EvanR> | albet70, to print from ExceptT e IO... use liftIO |
2022-01-10 05:22:21 +0100 | <EvanR> | :t liftIO |
2022-01-10 05:22:22 +0100 | <lambdabot> | MonadIO m => IO a -> m a |
2022-01-10 05:22:33 +0100 | <albet70> | "🟢 EvanR :albet70, to print from ExceptT e IO... use liftIO", but I want to construct with Left way |
2022-01-10 05:22:51 +0100 | sonny | (~sonny@bras-base-london1483w-grc-32-70-52-175-166.dsl.bell.ca) |
2022-01-10 05:23:31 +0100 | <EvanR> | well, then you have use Axman6's :t ExceptT directly |
2022-01-10 05:23:38 +0100 | [_] | (~itchyjunk@user/itchyjunk/x-7353470) |
2022-01-10 05:23:56 +0100 | <EvanR> | irl you probably want to stick to the API though |
2022-01-10 05:26:13 +0100 | [itchyjunk] | (~itchyjunk@user/itchyjunk/x-7353470) (Ping timeout: 240 seconds) |
2022-01-10 05:27:39 +0100 | <EvanR> | :t ExceptT (return (Left (userError "I'm out"))) |
2022-01-10 05:27:40 +0100 | <lambdabot> | Monad m => ExceptT IOError m a |
2022-01-10 05:28:03 +0100 | <EvanR> | :t runExceptT $ ExceptT (return (Left (userError "I'm out"))) |
2022-01-10 05:28:04 +0100 | <lambdabot> | Monad m => m (Either IOError a) |
2022-01-10 05:28:45 +0100 | <EvanR> | e.g. m=IO |
2022-01-10 05:28:46 +0100 | notzmv | (~zmv@user/notzmv) |
2022-01-10 05:31:13 +0100 | <EvanR> | :t ExceptT (throwError (userError "I'm out")) |
2022-01-10 05:31:14 +0100 | <lambdabot> | MonadError IOError m => ExceptT e m a |
2022-01-10 05:31:38 +0100 | <EvanR> | :t throwError (userError "I'm out") |
2022-01-10 05:31:39 +0100 | <lambdabot> | MonadError IOError m => m a |
2022-01-10 05:31:49 +0100 | <EvanR> | ignore second to last one |
2022-01-10 05:36:53 +0100 | x88x88x_ | (~x88x88x@gateway/vpn/pia/x88x88x) (Quit: leaving) |
2022-01-10 05:39:17 +0100 | x88x88x_ | (~x88x88x@gateway/vpn/pia/x88x88x) |
2022-01-10 05:40:16 +0100 | razetime | (~quassel@49.207.213.63) |
2022-01-10 05:42:00 +0100 | x88x88x_ | (~x88x88x@gateway/vpn/pia/x88x88x) (Client Quit) |
2022-01-10 05:42:14 +0100 | x88x88x_ | (~x88x88x@gateway/vpn/pia/x88x88x) |
2022-01-10 05:43:44 +0100 | x88x88x_ | (~x88x88x@gateway/vpn/pia/x88x88x) (Client Quit) |
2022-01-10 05:43:58 +0100 | x88x88x_ | (~x88x88x@gateway/vpn/pia/x88x88x) |
2022-01-10 05:46:11 +0100 | deadmarshal | (~deadmarsh@95.38.231.124) |
2022-01-10 05:47:18 +0100 | <Axman6> | albet70: are you sure that's the beaviour you want?That would ve a very unusual thing to do |
2022-01-10 05:47:23 +0100 | <Axman6> | be* |
2022-01-10 05:48:27 +0100 | <hololeap_> | albet70: normally you use throwError to get a Left value, regardless of what your MonadExcept is |
2022-01-10 05:48:37 +0100 | sonny | (~sonny@bras-base-london1483w-grc-32-70-52-175-166.dsl.bell.ca) (Ping timeout: 256 seconds) |
2022-01-10 05:48:59 +0100 | hololeap_ | hololeap |
2022-01-10 05:49:16 +0100 | <Axman6> | liftIO (print Something) >> throwError SomethingWentWrong feels mor elike maybe what you want? |
2022-01-10 05:49:36 +0100 | <Inst> | also lol |
2022-01-10 05:49:39 +0100 | <Inst> | this is an absolute treasure |
2022-01-10 05:49:48 +0100 | <Inst> | "that feel when you know what monads are but not what objects are" |
2022-01-10 05:49:48 +0100 | <Axman6> | I thought you were going to sleep :P |
2022-01-10 05:49:59 +0100 | <Inst> | have a fwb i'm helping with her python |
2022-01-10 05:50:00 +0100 | x88x88x_ | (~x88x88x@gateway/vpn/pia/x88x88x) (Quit: leaving) |
2022-01-10 05:50:15 +0100 | x88x88x_ | (~x88x88x@gateway/vpn/pia/x88x88x) |
2022-01-10 05:50:20 +0100 | <Inst> | they're literally teaching "stack four if statements" in her python class, but we're paranoid she'll have objects dumped on her lap |
2022-01-10 05:50:24 +0100 | <hololeap> | :t liftEither -- albet70: you can also use this |
2022-01-10 05:50:25 +0100 | <lambdabot> | MonadError e m => Either e a -> m a |
2022-01-10 05:50:29 +0100 | <Axman6> | Not sure your sexual history was necessary there |
2022-01-10 05:50:47 +0100 | <Inst> | sorry! |
2022-01-10 05:50:59 +0100 | <Axman6> | also, the hoist-errors package is fantastic for working with ExceptT |
2022-01-10 05:51:15 +0100 | <EvanR> | Inst, since this is haskell and not python... I think of this picture from the cover of Theory of Objects http://lucacardelli.name/Topics/TheoryOfObjects/ObjectSubject.html |
2022-01-10 05:51:48 +0100 | shriekingnoise | (~shrieking@186.137.144.80) (Quit: Quit) |
2022-01-10 05:52:40 +0100 | x88x88x_ | (~x88x88x@gateway/vpn/pia/x88x88x) (Client Quit) |
2022-01-10 05:52:53 +0100 | x88x88x_ | (~x88x88x@gateway/vpn/pia/x88x88x) |
2022-01-10 05:53:00 +0100 | <Inst> | well, tbh, it's just funny when you know what monads are and you're trying to understand objects in the context of monads |
2022-01-10 05:53:59 +0100 | <Inst> | at some point someone is going to write a coherent comparison between monads and objects as concepts |
2022-01-10 05:54:05 +0100 | <hololeap> | aren't objects just data with extra steps? |
2022-01-10 05:54:07 +0100 | <EvanR> | no, please don' |
2022-01-10 05:54:11 +0100 | <Inst> | okay, i'll stop |
2022-01-10 05:55:08 +0100 | <EvanR> | unlike objects, monads have a very precise description with very little in the way of "remixing" of interpretation xD |
2022-01-10 05:55:36 +0100 | <EvanR> | leibniz notwithstanding |
2022-01-10 05:56:04 +0100 | <Inst> | i'd see them both as ways of data encapsulation. in certain areas, monads are more flexible, in others, less flexible |
2022-01-10 05:56:12 +0100 | x88x88x_ | (~x88x88x@gateway/vpn/pia/x88x88x) (Client Quit) |
2022-01-10 05:56:13 +0100 | sonny | (~sonny@bras-base-london1483w-grc-32-70-52-175-166.dsl.bell.ca) |
2022-01-10 05:56:14 +0100 | <EvanR> | no monads aren't about data encapsulation |
2022-01-10 05:56:26 +0100 | <Inst> | a type constructor is about data encapsulation |
2022-01-10 05:57:01 +0100 | <EvanR> | your data encapsulation scheme may be described with types, but not nearly all types are about data encapsulation |
2022-01-10 05:57:17 +0100 | <dibblego> | I thought they were about constructing types |
2022-01-10 05:57:36 +0100 | <EvanR> | actually, most basic types in haskell intentionally tell you everything that is going on, (), Bool, Either, Maybe, etc |
2022-01-10 05:57:47 +0100 | <EvanR> | cards on the table |
2022-01-10 05:58:03 +0100 | shriekingnoise | (~shrieking@186.137.144.80) |
2022-01-10 05:58:12 +0100 | x88x88x_ | (~x88x88x@gateway/vpn/pia/x88x88x) |
2022-01-10 05:58:24 +0100 | <hololeap> | monads need a join function. can you do that with any object? |
2022-01-10 05:58:29 +0100 | <EvanR> | and the monad instance for the basic types just formalize certain operations |
2022-01-10 05:58:34 +0100 | x88x88x_ | (~x88x88x@gateway/vpn/pia/x88x88x) (Client Quit) |
2022-01-10 05:59:48 +0100 | <EvanR> | (that already existed and didn't need monads to do) |
2022-01-10 06:00:09 +0100 | <hololeap> | if I have a car in my car, so I can drive while I drive... can that be joined into a single car? |
2022-01-10 06:00:31 +0100 | <Inst> | hololeap: i mean that's where i see monads as more flexible if you see them as a set of methods for dealing with types that have been placed into a monadic type, but the monad typeclass is useful for more than just containerizing types |
2022-01-10 06:00:52 +0100 | <Inst> | hololeap: the real reason people love Haskell xD |
2022-01-10 06:01:27 +0100 | <hololeap> | it's a very limited set of methods, namely return and join/bind |
2022-01-10 06:01:40 +0100 | <EvanR> | class Circle a => Ellipse a |
2022-01-10 06:01:44 +0100 | <EvanR> | class Ellipse a => Circle a |
2022-01-10 06:02:10 +0100 | <Inst> | and it's actually possible to instance into that! |
2022-01-10 06:02:41 +0100 | <EvanR> | in before the "monads are just spreadsheets" blog post |
2022-01-10 06:03:00 +0100 | <hololeap> | but ultimately monads are about composition of functions with extra "stuff" |
2022-01-10 06:03:14 +0100 | <hololeap> | monads are much closer to functions than they are to objects |
2022-01-10 06:03:17 +0100 | <Inst> | i don't think it's possible to create a monads are just (monads are just (monads are just...) blog posts |
2022-01-10 06:03:36 +0100 | <Inst> | but given the recursion, it'd be very haskell |
2022-01-10 06:05:33 +0100 | <EvanR> | monad is an algebraic structure, like monoid or semigroup. It doesn't make sense to talk about containerization in general. But the other way around, many containers can be flattened and this is monadic. Also many other phenomena fit the same shape |
2022-01-10 06:05:45 +0100 | <Inst> | sorry, i'll run off, i do need to get objects though, although, it gets me wondering, since monads are implementable in languages with interfaces and algebraic data types |
2022-01-10 06:05:59 +0100 | <Inst> | what would a monadic structure over an object look like? |
2022-01-10 06:06:09 +0100 | <Inst> | OCaml / C++ / Java etc |
2022-01-10 06:06:25 +0100 | <EvanR> | monadic structure pertains to a Functor, not an object |
2022-01-10 06:07:38 +0100 | <EvanR> | but there have been monad interfaces in those languages |
2022-01-10 06:07:59 +0100 | <EvanR> | without syntax sugar it's a bit annoying |
2022-01-10 06:08:03 +0100 | <hololeap> | if you're thinking of generic "objects" in other langauges, the monad interface is how to string them together, not how to construct them in general |
2022-01-10 06:08:37 +0100 | <Inst> | >>= is about composability of functions that are a -> m a, the join cancels out of the m |
2022-01-10 06:08:45 +0100 | <EvanR> | no join doesn't |
2022-01-10 06:08:57 +0100 | <EvanR> | you stay in the m |
2022-01-10 06:09:01 +0100 | <Inst> | it cancels out m (m a) into (m a) |
2022-01-10 06:09:07 +0100 | <Inst> | otherwise you'd end up with monadic stacking |
2022-01-10 06:09:11 +0100 | <EvanR> | monad's don't let you leave, unlike comonads |
2022-01-10 06:09:26 +0100 | <EvanR> | which don't let you enter |
2022-01-10 06:09:34 +0100 | <hololeap> | and the basic monads in haskell are very close to the complete set of all possible monads available in any language. Maybe, State, Reader, Writer, Cont... it's very difficult to find a monad that isn't expressible as (a combination of) any of these |
2022-01-10 06:10:08 +0100 | <Inst> | EvanR: yeah, I'm aware, and that's been annoying at times |
2022-01-10 06:10:13 +0100 | <Inst> | would be nice to just kill the monad sometimes |
2022-01-10 06:11:13 +0100 | <Inst> | except, of course :) |
2022-01-10 06:11:24 +0100 | <EvanR> | maybe you'd like comonads then, you can leave any time |
2022-01-10 06:11:25 +0100 | <Inst> | what happens if it's a maybe type with a value constructor of Nothing? |
2022-01-10 06:11:43 +0100 | <Inst> | how could you intelligibly define a extract against Nothing? |
2022-01-10 06:11:51 +0100 | <EvanR> | Maybe isn't a Comonad |
2022-01-10 06:11:55 +0100 | <hololeap> | you can't because Maybe is not a comonad |
2022-01-10 06:11:58 +0100 | <Inst> | because of that reason |
2022-01-10 06:11:58 +0100 | <Axman6> | > join Nothing |
2022-01-10 06:11:59 +0100 | <lambdabot> | Nothing |
2022-01-10 06:12:00 +0100 | <dibblego> | it's a semi-comonad though |
2022-01-10 06:12:11 +0100 | <Axman6> | > join (Just Nothing) |
2022-01-10 06:12:12 +0100 | <lambdabot> | Nothing |
2022-01-10 06:12:17 +0100 | <dibblego> | @type fmap Just |
2022-01-10 06:12:18 +0100 | <hololeap> | a properly defined comonad always needs a value to extract |
2022-01-10 06:12:18 +0100 | <lambdabot> | Functor f => f a -> f (Maybe a) |
2022-01-10 06:13:26 +0100 | <dibblego> | we gettin' the annual monad anti-tutorial outta the way early? :) |
2022-01-10 06:13:48 +0100 | <EvanR> | at some point was there comonadic IO called OI floating around? |
2022-01-10 06:14:13 +0100 | sonny | (~sonny@bras-base-london1483w-grc-32-70-52-175-166.dsl.bell.ca) () |
2022-01-10 06:14:22 +0100 | <hololeap> | no, because a comonad needs a natural transformation back to Identity, and IO doesn't have that |
2022-01-10 06:14:36 +0100 | <dolio> | People floated the idea, but it doesn't make a lot of sense. |
2022-01-10 06:14:48 +0100 | <dibblego> | OI was discussed a while back |
2022-01-10 06:14:59 +0100 | <hololeap> | unsafePerformIO? |
2022-01-10 06:15:07 +0100 | <EvanR> | oh |
2022-01-10 06:15:39 +0100 | <Inst> | also, just to make it simple, Identity monad: just a type constructor that does nothing but block a -> a functions? |
2022-01-10 06:15:47 +0100 | <Inst> | without fmap / bind, of course |
2022-01-10 06:16:26 +0100 | <hololeap> | it doesn't do anything but wrap any value in the Identity constructor |
2022-01-10 06:17:09 +0100 | <hololeap> | it's supposed to be a way of describing pure values in the context of something that needs a functor/monad |
2022-01-10 06:17:39 +0100 | <hololeap> | like how id doesn't do anything but return the value you give it |
2022-01-10 06:18:17 +0100 | xff0x | (~xff0x@2001:1a81:5310:700:7a4c:f58f:8e12:e28b) (Ping timeout: 240 seconds) |
2022-01-10 06:18:29 +0100 | jakalx | (~jakalx@base.jakalx.net) |
2022-01-10 06:18:58 +0100 | <hololeap> | which seems useless until you need something that takes an (a -> a) function and you need the most basic case |
2022-01-10 06:19:35 +0100 | xff0x | (~xff0x@port-92-193-159-86.dynamic.as20676.net) |
2022-01-10 06:22:51 +0100 | <EvanR> | you need something takes a resistor, so you give it a zero ohm link in a resistor package xD |
2022-01-10 06:23:00 +0100 | <hololeap> | this is why State = StateT s Identity -- `StateT s` takes a type constructor as an argument, so if you don't need one, you pass it Identity |
2022-01-10 06:23:02 +0100 | <EvanR> | you have something that takes a resistor |
2022-01-10 06:23:26 +0100 | <hololeap> | *State s = StateT s Identity |
2022-01-10 06:26:54 +0100 | <hololeap> | the zero ohm link is the zero element in the monoid of resistor arrays |
2022-01-10 06:32:30 +0100 | nunggu | (~q@gateway/tor-sasl/nunggu) (Ping timeout: 276 seconds) |
2022-01-10 06:32:52 +0100 | sagax | (~sagax_nb@user/sagax) |
2022-01-10 06:33:00 +0100 | s2k | (~textual@122.172.234.134) |
2022-01-10 06:35:03 +0100 | <Axman6> | EvanR: OI is what we call ExceptT in Australia, OI YouFuckedUpMate IO a |
2022-01-10 06:35:25 +0100 | <EvanR> | oof |
2022-01-10 06:36:36 +0100 | <Axman6> | OI YouFuckedUpMate IO eh* which when runs gives you back IO (Either YouFuckedUpMate eh) |
2022-01-10 06:39:17 +0100 | Jing | (~hedgehog@240e:390:7c53:a7e1:15fa:c22e:b1fb:575a) |
2022-01-10 06:47:33 +0100 | deadmarshal | (~deadmarsh@95.38.231.124) (Ping timeout: 256 seconds) |
2022-01-10 06:48:57 +0100 | arahael | (~arahael@203.158.51.1) |
2022-01-10 06:49:29 +0100 | nunggu | (~q@gateway/tor-sasl/nunggu) |
2022-01-10 06:54:44 +0100 | ymirhotfoot55 | (~ymirhotfo@user/ymirhotfoot) |
2022-01-10 06:56:34 +0100 | little_mac | (~little_ma@2601:410:4300:3ce0:54ff:c767:ef1d:433e) (Remote host closed the connection) |
2022-01-10 06:57:27 +0100 | <albet70> | "🟢 Axman6 :albet70: are you sure that's the beaviour you want?That would ve a very unusual thing to do", yes |
2022-01-10 06:58:04 +0100 | <Axman6> | so, you specifically want to print the result, and then produce something of type ExceptT () IO a? |
2022-01-10 06:58:28 +0100 | <Axman6> | far out, what's going on with my typing today |
2022-01-10 06:59:03 +0100 | <Axman6> | "So you specifically want to print the result, and produce something of type ExceptT () IO a?" |
2022-01-10 07:00:44 +0100 | <albet70> | "Axman6 :so, you specifically want to print the result, and then produce something of type ExceptT () IO a?", paste.tomsmeding.com/DQWLn8rX |
2022-01-10 07:01:47 +0100 | <ymirhotfoot55> | Dear Haskellers, the picture is wonderful: |
2022-01-10 07:01:49 +0100 | <albet70> | short circuit a IO action list |
2022-01-10 07:01:53 +0100 | <ymirhotfoot55> | http://lucacardelli.name/Topics/TheoryOfObjects/ObjectSubject.html |
2022-01-10 07:02:46 +0100 | <ymirhotfoot55> | I am glad to see that John Stewart Bell's is finally making it through to |
2022-01-10 07:03:10 +0100 | nhatanh02 | (~satori@123.24.172.30) |
2022-01-10 07:03:34 +0100 | <ymirhotfoot55> | the great Tribe of Objectivists! |
2022-01-10 07:04:05 +0100 | <ymirhotfoot55> | Jogn Stewart Bell's Second Theorem. |
2022-01-10 07:04:14 +0100 | yauhsien | (~yauhsien@118-167-43-90.dynamic-ip.hinet.net) (Remote host closed the connection) |
2022-01-10 07:05:00 +0100 | <ymirhotfoot55> | Naturally, a beginner in Haskell will ask: |
2022-01-10 07:05:04 +0100 | yauhsien | (~yauhsien@118-167-43-90.dynamic-ip.hinet.net) |
2022-01-10 07:05:23 +0100 | <ymirhotfoot55> | Can all the three views be consistent? |
2022-01-10 07:05:44 +0100 | <ymirhotfoot55> | John, not Jogn. |
2022-01-10 07:07:03 +0100 | <Axman6> | albet70: personally, I would use liftIO $ do print "greater ..." >> print x; throwE (). reusing the () from the print feels awkward to me |
2022-01-10 07:10:22 +0100 | <Axman6> | ymirhotfoot55: What does this have to do with HAskell? |
2022-01-10 07:11:25 +0100 | <ymirhotfoot55> | Well, I think Chris Penners inytoduction to a planned, ah, |
2022-01-10 07:12:14 +0100 | <ymirhotfoot55> | I will not say, a Lisp, but a more flexiible Haskell, as proposed in |
2022-01-10 07:12:21 +0100 | <ymirhotfoot55> | https://www.youtube.com/watch?v=xZmPuz9m2t0 |
2022-01-10 07:13:17 +0100 | shapr | (~user@2601:7c0:c202:5190:ed4f:33d2:c7d1:3eb) (Ping timeout: 240 seconds) |
2022-01-10 07:13:48 +0100 | <ymirhotfoot55> | One famous case of the General Problem of Consistency |
2022-01-10 07:14:15 +0100 | <ymirhotfoot55> | is Bell's Second Theorem. |
2022-01-10 07:14:45 +0100 | yauhsien | (~yauhsien@118-167-43-90.dynamic-ip.hinet.net) (Remote host closed the connection) |
2022-01-10 07:15:03 +0100 | <ymirhotfoot55> | I do not know haskell, I have actually written 'hello world', |
2022-01-10 07:15:25 +0100 | yauhsien | (~yauhsien@118-167-43-90.dynamic-ip.hinet.net) |
2022-01-10 07:15:32 +0100 | <ymirhotfoot55> | well, no, but I once wrote 'hello Penrose Inverse' in Haskell. |
2022-01-10 07:16:58 +0100 | <ymirhotfoot55> | 'hello world' was a mite offputting, with the giant builtin Monad |
2022-01-10 07:17:09 +0100 | <ymirhotfoot55> | IO beging required. |
2022-01-10 07:18:04 +0100 | <Axman6> | "giant" |
2022-01-10 07:18:06 +0100 | <Axman6> | @src IO |
2022-01-10 07:18:06 +0100 | <lambdabot> | Source not found. There are some things that I just don't know. |
2022-01-10 07:18:09 +0100 | <Axman6> | :( |
2022-01-10 07:18:33 +0100 | <Axman6> | @hoogle IO |
2022-01-10 07:18:34 +0100 | <lambdabot> | Prelude data IO a |
2022-01-10 07:18:34 +0100 | <lambdabot> | module System.IO |
2022-01-10 07:18:34 +0100 | <lambdabot> | System.IO data IO a |
2022-01-10 07:18:48 +0100 | <ymirhotfoot55> | Conjecture: the type guessing and type checking of Haskell uses something like\ |
2022-01-10 07:18:49 +0100 | <ymirhotfoot55> | a (very special) SAT solver. |
2022-01-10 07:19:14 +0100 | <c_wraith> | nah. It's way simpler than that |
2022-01-10 07:19:32 +0100 | lavaman | (~lavaman@98.38.249.169) |
2022-01-10 07:19:43 +0100 | <Axman6> | just plain old hindley-milner |
2022-01-10 07:20:01 +0100 | <Axman6> | https://en.wikipedia.org/wiki/Hindley–Milner_type_system |
2022-01-10 07:20:34 +0100 | <ymirhotfoot55> | Yes, I supected it to be special, and in many cases, quick and easy. |
2022-01-10 07:20:55 +0100 | <Axman6> | it's about as simple as a useful type system can get |
2022-01-10 07:21:06 +0100 | <Axman6> | not always quick though |
2022-01-10 07:22:08 +0100 | modnar | (~quassel@162.195.88.254) (Remote host closed the connection) |
2022-01-10 07:22:12 +0100 | <ymirhotfoot55> | O was impressed with Loader's result that the for real simply typed lambda calculus |
2022-01-10 07:22:29 +0100 | modnar | (~modnar@shell.sonic.net) |
2022-01-10 07:22:48 +0100 | <ymirhotfoot55> | with some specal concret types added, also with actual elements of the rtpes specified, |
2022-01-10 07:23:25 +0100 | <ymirhotfoot55> | gets you to Turing Machines Unlimited. |
2022-01-10 07:23:47 +0100 | <razetime> | anyone program haskell on vim? |
2022-01-10 07:23:49 +0100 | lavaman | (~lavaman@98.38.249.169) (Ping timeout: 256 seconds) |
2022-01-10 07:24:26 +0100 | <razetime> | i've been trying to use vim with vim-haskell plugin lately and it often flubs on indentation. |
2022-01-10 07:24:34 +0100 | <ymirhotfoot55> | I have heard that when K. Goedel was presented with |
2022-01-10 07:26:28 +0100 | <ymirhotfoot55> | Alonzo Church's proof that Herbrand-Goedel style "recursive function computer systems" |
2022-01-10 07:27:33 +0100 | <ymirhotfoot55> | compited the same set of functions as Church's "lambda calculus" machine, |
2022-01-10 07:27:52 +0100 | s2k | (~textual@122.172.234.134) (Quit: Textual IRC Client: www.textualapp.com) |
2022-01-10 07:28:25 +0100 | <ymirhotfoot55> | Goedel saw that Church's machine was |
2022-01-10 07:28:39 +0100 | <ymirhotfoot55> | a weird machine. |
2022-01-10 07:29:11 +0100 | <ymirhotfoot55> | loke unto the dirty page macgine on x86 computer chips. |
2022-01-10 07:29:28 +0100 | <ymirhotfoot55> | Phil Wadler tells the story. |
2022-01-10 07:30:25 +0100 | <ymirhotfoot55> | Goedel no doubted that Herbrand-Foeded could be right, as an |
2022-01-10 07:31:05 +0100 | <ymirhotfoot55> | analysis of compiyability. |
2022-01-10 07:31:20 +0100 | <ymirhotfoot55> | No compuled, computed. |
2022-01-10 07:32:00 +0100 | <ymirhotfoot55> | Not "compiled", "computed". |
2022-01-10 07:32:57 +0100 | <ymirhotfoot55> | now doubted |
2022-01-10 07:33:56 +0100 | <ymirhotfoot55> | Oi, I must be more careful with this hard to use keyboard. |
2022-01-10 07:35:53 +0100 | <ymirhotfoot55> | @Axman6 thank you for reference! |
2022-01-10 07:35:53 +0100 | <lambdabot> | Unknown command, try @list |
2022-01-10 07:38:46 +0100 | takuan | (~takuan@178-116-218-225.access.telenet.be) |
2022-01-10 07:41:22 +0100 | <ymirhotfoot55> | '@Axman6' conceptually giant. |
2022-01-10 07:41:55 +0100 | <ymirhotfoot55> | The dread Input-Output! |
2022-01-10 07:42:45 +0100 | <Axman6> | I have absolutely no idea what you're on about ymirhotfoot55 |
2022-01-10 07:43:14 +0100 | nhatanh02 | (~satori@123.24.172.30) (Ping timeout: 256 seconds) |
2022-01-10 07:44:15 +0100 | <ymirhotfoot55> | Dear '@Axman6', I am just happy to be in IRC again, so |
2022-01-10 07:44:19 +0100 | bitmapper | (uid464869@id-464869.lymington.irccloud.com) |
2022-01-10 07:45:00 +0100 | <Axman6> | ok, well you're not making much sense. Do you have any questions about Haskell? |
2022-01-10 07:45:43 +0100 | <ymirhotfoot55> | perhaps I am a mite loose in my associations and a mite obscure in my speech. |
2022-01-10 07:46:13 +0100 | _ht | (~quassel@82-169-194-8.biz.kpn.net) |
2022-01-10 07:46:40 +0100 | <ymirhotfoot55> | Well, I suspect that a "type class", when, as happens sometimes, |
2022-01-10 07:47:13 +0100 | <ymirhotfoot55> | "automayically" hands you an instance, that we are close to the |
2022-01-10 07:47:45 +0100 | <ymirhotfoot55> | universal algebra mecganism of giving |
2022-01-10 07:47:57 +0100 | <ymirhotfoot55> | an algebra by giving |
2022-01-10 07:48:05 +0100 | <ymirhotfoot55> | generators and relations. |
2022-01-10 07:48:06 +0100 | <Axman6> | Are you a markov chain trained on #haskell and Elizabethan English? |
2022-01-10 07:48:11 +0100 | <ymirhotfoot55> | Is this so? |
2022-01-10 07:48:45 +0100 | <Axman6> | I genuinely have no idea what you're trying to ask |
2022-01-10 07:48:47 +0100 | <ymirhotfoot55> | No. Or if I am I am iperate with unkimited k-feams, and |
2022-01-10 07:49:11 +0100 | <ymirhotfoot55> | I have enough dinebstions that I am not boind by by Earth's |
2022-01-10 07:49:20 +0100 | <Axman6> | I'm getting pretty close to using my new found OP powers to kick you ymirhotfoot55 |
2022-01-10 07:49:41 +0100 | <ymirhotfoot55> | speed of signal 3+1 dimension limitations. |
2022-01-10 07:49:47 +0100 | <hololeap> | I'm getting some new vocab here... "dinebstions" "boind" |
2022-01-10 07:50:17 +0100 | <ymirhotfoot55> | as pelling: Please accept apologies! |
2022-01-10 07:51:07 +0100 | <ymirhotfoot55> | as spelling, that is better. |
2022-01-10 07:51:55 +0100 | <ymirhotfoot55> | '@Axman6' serious question, why no mention of |
2022-01-10 07:52:29 +0100 | <ymirhotfoot55> | Galois correpondeces in the beginnersl literature on type classes? |
2022-01-10 07:53:21 +0100 | <Axman6> | I've been programming in Haskell for over a decade and never heard of "Galois correpondeces", so I suspect because no one needs to know what they are to use Haskell |
2022-01-10 07:53:29 +0100 | <hololeap> | because deep theory is irrelevant to most newcomers looking to learn a language? |
2022-01-10 07:53:46 +0100 | <ymirhotfoot55> | '@Axman5' I will ask ny type class question again. |
2022-01-10 07:54:00 +0100 | cheater | (~Username@user/cheater) (Ping timeout: 256 seconds) |
2022-01-10 07:54:06 +0100 | <hololeap> | just write it yourself if you think it needs to exist so badly |
2022-01-10 07:55:04 +0100 | <ymirhotfoot55> | Hololeap, thank you for suggestion! |
2022-01-10 07:55:09 +0100 | <ymirhotfoot55> | No josh. |
2022-01-10 07:55:31 +0100 | <hololeap> | there are tutorials on category theory for haskell programmers that exist because someone decided to make them |
2022-01-10 07:55:59 +0100 | <ymirhotfoot55> | Rtpe class question: Sometimes, a declaration of a type class results is a sibfle |
2022-01-10 07:56:12 +0100 | <ymirhotfoot55> | most geberal instance being defined. |
2022-01-10 07:56:22 +0100 | <ymirhotfoot55> | Defined automatically. |
2022-01-10 07:56:22 +0100 | <Axman6> | "rtpe"? "sibfle"? |
2022-01-10 07:56:30 +0100 | <ymirhotfoot55> | Wgeb does this happen? |
2022-01-10 07:56:36 +0100 | <ymirhotfoot55> | Thanks. |
2022-01-10 07:57:13 +0100 | <ymirhotfoot55> | When, not Wgeb. |
2022-01-10 07:57:17 +0100 | michalz | (~michalz@185.246.204.126) |
2022-01-10 07:57:53 +0100 | <Axman6> | rtpe = type? sibfle = ? |
2022-01-10 07:58:03 +0100 | <ymirhotfoot55> | single most general |
2022-01-10 07:58:45 +0100 | <ymirhotfoot55> | Yes, Type class question |
2022-01-10 07:59:09 +0100 | hgolden | (~hgolden2@cpe-172-114-81-123.socal.res.rr.com) |
2022-01-10 08:00:07 +0100 | <hololeap> | can you give an example that illustrates your question? |
2022-01-10 08:00:18 +0100 | <Axman6> | ok, so we've got to a point where that sentense's words are understandable, now to try and decipher what you're actually trying to say |
2022-01-10 08:01:17 +0100 | Garbanzo | (~Garbanzo@2602:304:6eac:dc10::46) (Ping timeout: 240 seconds) |
2022-01-10 08:03:25 +0100 | <ymirhotfoot55> | Consider giving a group by giving |
2022-01-10 08:04:04 +0100 | <ymirhotfoot55> | three generators a, b, c; then giving some relations, say |
2022-01-10 08:04:33 +0100 | <Axman6> | please stop using the return key as punctuation, if you look at the lasy hour's history of this channel, it's almost all you saying half sentenses with typos. at least make typos on one line |
2022-01-10 08:04:41 +0100 | <ymirhotfoot55> | a^-1 * b * a = c^17 |
2022-01-10 08:04:57 +0100 | <ymirhotfoot55> | Thanks, '@Axman6'. |
2022-01-10 08:06:08 +0100 | <ymirhotfoot55> | Though are many froups geberated by am bm c, which satisft the relation, there is one that is special, namely the least constrained sych group. |
2022-01-10 08:06:48 +0100 | <ymirhotfoot55> | Does an analogue if this happen with type classes? |
2022-01-10 08:07:04 +0100 | <ymirhotfoot55> | groups, not froups. |
2022-01-10 08:07:40 +0100 | boletales | (~boletales@p98076-ipoefx.ipoe.ocn.ne.jp) (Quit: Leaving) |
2022-01-10 08:08:06 +0100 | <hololeap> | I'm not sure how type classes relate to groups. for instance, there is no notion of an inverse for type classes |
2022-01-10 08:09:23 +0100 | <ymirhotfoot55> | hololeap, here is the sort of onkects that I think may come in here: |
2022-01-10 08:09:34 +0100 | <ymirhotfoot55> | https://en.wikipedia.org/wiki/Horn_clause |
2022-01-10 08:10:04 +0100 | <ymirhotfoot55> | Oi, Sorry for linefeed! |
2022-01-10 08:12:12 +0100 | <hololeap> | there is also no disjunction for typeclasses, unfortunately. you can't specify that a type is either a member of Show _or_ Eq in practice |
2022-01-10 08:12:25 +0100 | <ymirhotfoot55> | Here is a pdf on the sort of thating that reading about type classes suggested to me; https://core.ac.uk/download/pdf/82190596.pdf I wish there were ab arXive version, and I will look now. |
2022-01-10 08:12:34 +0100 | slowButPresent | (~slowButPr@user/slowbutpresent) (Quit: leaving) |
2022-01-10 08:14:58 +0100 | razetime | (~quassel@49.207.213.63) (Read error: Connection reset by peer) |
2022-01-10 08:15:45 +0100 | cheater | (~Username@user/cheater) |
2022-01-10 08:16:21 +0100 | <ymirhotfoot55> | hololeap, yes, that meta-constraint on the allowable constraints of a type class definition is in part what makes me suspect that often one does get a "most free" instance. |
2022-01-10 08:22:37 +0100 | wroathe | (~wroathe@user/wroathe) (Ping timeout: 240 seconds) |
2022-01-10 08:23:34 +0100 | <ymirhotfoot55> | hololeap and '@Axman6' I began to write out a note for this IRC session, but I realized 1. that note would be a bit long, and 2. I should look at some published stuff. |
2022-01-10 08:24:44 +0100 | shriekingnoise | (~shrieking@186.137.144.80) (Quit: Quit) |
2022-01-10 08:30:29 +0100 | wroathe | (~wroathe@206-55-188-8.fttp.usinternet.com) |
2022-01-10 08:30:29 +0100 | wroathe | (~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host) |
2022-01-10 08:30:29 +0100 | wroathe | (~wroathe@user/wroathe) |
2022-01-10 08:35:22 +0100 | wroathe | (~wroathe@user/wroathe) (Ping timeout: 256 seconds) |
2022-01-10 08:35:57 +0100 | <ymirhotfoot55> | The paper by Makowski looks very good, and seems to have most of what led me to think about "automatic instances" if type classes. IWJKNAL OF COMPUTER AND SYSTEM SCIENCES 34, 266-292 (1987) |
2022-01-10 08:35:57 +0100 | <ymirhotfoot55> | Why Horn Formulas Matter in Computer Science: |
2022-01-10 08:35:58 +0100 | <ymirhotfoot55> | Initial Structures and Generic Examples |
2022-01-10 08:35:58 +0100 | <ymirhotfoot55> | J. A. MAKOWSKY |
2022-01-10 08:35:59 +0100 | <ymirhotfoot55> | The Encyclopedia of Mathematics article looks useful too: https://encyclopediaofmath.org/wiki/Horn_clauses,_theory_of |
2022-01-10 08:36:34 +0100 | ParsaAlizadeh[m] | (~lizadehma@2001:470:69fc:105::1:65a4) |
2022-01-10 08:37:18 +0100 | <ymirhotfoot55> | Dear Haskell folk, thank you! and Heaven forwarding, I will be back before the snows melt. |
2022-01-10 08:37:22 +0100 | deadmarshal | (~deadmarsh@95.38.231.124) |
2022-01-10 08:37:41 +0100 | <hololeap> | speaking independently, there are a _lot_ of references in that paper you linked that I would have to read through to get an understanding sufficient to even attempt to answer your question |
2022-01-10 08:40:54 +0100 | wroathe | (~wroathe@206-55-188-8.fttp.usinternet.com) |
2022-01-10 08:40:54 +0100 | wroathe | (~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host) |
2022-01-10 08:40:54 +0100 | wroathe | (~wroathe@user/wroathe) |
2022-01-10 08:41:41 +0100 | <ymirhotfoot55> | hololeap, I am not joking when I say that I think, for some folk, starting with the sort of stuff in that paper is the right way to learn Haskell. Basic, which I like has, or had wgeb I was in grade school in the middle of the last century, one big advantage: most people already, if they got to high school, already had a command of the |
2022-01-10 08:41:42 +0100 | <ymirhotfoot55> | presenting ideas. |
2022-01-10 08:43:37 +0100 | <hololeap> | it seems like something that is worth looking into, but I can't give you any answers with my current knowledge. maybe someone else can, but you'll have better luck formulating your question with specific examples most haskellers will understand |
2022-01-10 08:44:26 +0100 | timCF | (~timCF@m91-129-100-224.cust.tele2.ee) (Ping timeout: 256 seconds) |
2022-01-10 08:44:40 +0100 | mc47 | (~mc47@xmonad/TheMC47) |
2022-01-10 08:45:25 +0100 | <ymirhotfoot55> | But for Haskell I might start with the elementary theory of Galois connections, then do the Conpleteness Theorem for the lower predicate calculus, then, ah, well then set them down at the repl. Of course, talking to people who know, and practice, are the most important things. |
2022-01-10 08:46:05 +0100 | <ymirhotfoot55> | hololeap, I am actually leaving now. Good night! |
2022-01-10 08:46:08 +0100 | wroathe | (~wroathe@user/wroathe) (Ping timeout: 256 seconds) |
2022-01-10 08:46:23 +0100 | ymirhotfoot55 | (~ymirhotfo@user/ymirhotfoot) () |
2022-01-10 08:46:46 +0100 | razetime | (~quassel@49.207.213.63) |
2022-01-10 08:53:32 +0100 | cfricke | (~cfricke@user/cfricke) |
2022-01-10 08:57:14 +0100 | tromp | (~textual@dhcp-077-249-230-040.chello.nl) |
2022-01-10 08:58:59 +0100 | mc47 | (~mc47@xmonad/TheMC47) (Remote host closed the connection) |
2022-01-10 09:06:57 +0100 | deadmarshal | (~deadmarsh@95.38.231.124) (Ping timeout: 256 seconds) |
2022-01-10 09:07:04 +0100 | raehik | (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) |
2022-01-10 09:09:01 +0100 | glguy | (x@libera/staff/glguy) (*.net *.split) |
2022-01-10 09:09:01 +0100 | litharge | (litharge@libera/bot/litharge) (*.net *.split) |
2022-01-10 09:09:01 +0100 | hgolden | (~hgolden2@cpe-172-114-81-123.socal.res.rr.com) (*.net *.split) |
2022-01-10 09:09:01 +0100 | _ht | (~quassel@82-169-194-8.biz.kpn.net) (*.net *.split) |
2022-01-10 09:09:01 +0100 | takuan | (~takuan@178-116-218-225.access.telenet.be) (*.net *.split) |
2022-01-10 09:09:01 +0100 | td_ | (~td@94.134.91.23) (*.net *.split) |
2022-01-10 09:09:01 +0100 | Kaiepi | (~Kaiepi@156.34.47.253) (*.net *.split) |
2022-01-10 09:09:01 +0100 | lemonsnicks | (~lemonsnic@cpc159519-perr18-2-0-cust114.19-1.cable.virginm.net) (*.net *.split) |
2022-01-10 09:09:01 +0100 | juhp | (~juhp@128.106.188.82) (*.net *.split) |
2022-01-10 09:09:01 +0100 | AlexNoo | (~AlexNoo@178.34.162.219) (*.net *.split) |
2022-01-10 09:09:01 +0100 | tzh | (~tzh@c-24-21-73-154.hsd1.or.comcast.net) (*.net *.split) |
2022-01-10 09:09:01 +0100 | Erutuon | (~Erutuon@user/erutuon) (*.net *.split) |
2022-01-10 09:09:01 +0100 | xsperry | (~xs@user/xsperry) (*.net *.split) |
2022-01-10 09:09:01 +0100 | mstksg | (~jle`@cpe-23-240-75-236.socal.res.rr.com) (*.net *.split) |
2022-01-10 09:09:01 +0100 | Lord_of_Life | (~Lord@user/lord-of-life/x-2819915) (*.net *.split) |
2022-01-10 09:09:01 +0100 | werneta | (~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net) (*.net *.split) |
2022-01-10 09:09:01 +0100 | tremon | (~tremon@217-120-53-183.cable.dynamic.v4.ziggo.nl) (*.net *.split) |
2022-01-10 09:09:01 +0100 | kawpuh | (~kawpuh@66.42.81.80) (*.net *.split) |
2022-01-10 09:09:01 +0100 | n3t | (n3t@user/n3t) (*.net *.split) |
2022-01-10 09:09:01 +0100 | xsarnik | (xsarnik@lounge.fi.muni.cz) (*.net *.split) |
2022-01-10 09:09:01 +0100 | polux | (~polux@51.15.169.172) (*.net *.split) |
2022-01-10 09:09:01 +0100 | wrengr | (~wrengr@150.12.83.34.bc.googleusercontent.com) (*.net *.split) |
2022-01-10 09:09:01 +0100 | simpleauthority | (~simpleaut@user/simpleauthority) (*.net *.split) |
2022-01-10 09:09:01 +0100 | motherfsck | (~motherfsc@user/motherfsck) (*.net *.split) |
2022-01-10 09:09:01 +0100 | nurupo | (~nurupo.ga@user/nurupo) (*.net *.split) |
2022-01-10 09:09:02 +0100 | puke | (~puke@user/puke) (*.net *.split) |
2022-01-10 09:09:02 +0100 | Codaraxis_ | (~Codaraxis@user/codaraxis) (*.net *.split) |
2022-01-10 09:09:02 +0100 | hyiltiz | (~quassel@31.220.5.250) (*.net *.split) |
2022-01-10 09:09:02 +0100 | gentauro | (~gentauro@user/gentauro) (*.net *.split) |
2022-01-10 09:09:02 +0100 | ishutin | (~ishutin@178-164-188-6.pool.digikabel.hu) (*.net *.split) |
2022-01-10 09:09:02 +0100 | byorgey | (~byorgey@155.138.238.211) (*.net *.split) |
2022-01-10 09:09:02 +0100 | forell | (~forell@user/forell) (*.net *.split) |
2022-01-10 09:09:02 +0100 | koolazer | (~koo@user/koolazer) (*.net *.split) |
2022-01-10 09:09:02 +0100 | remedan | (~remedan@octo.cafe) (*.net *.split) |
2022-01-10 09:09:02 +0100 | SoF | (~skius@user/skius) (*.net *.split) |
2022-01-10 09:09:02 +0100 | emergence | (~emergence@vm0.max-p.me) (*.net *.split) |
2022-01-10 09:09:02 +0100 | biberu | (~biberu@user/biberu) (*.net *.split) |
2022-01-10 09:09:02 +0100 | bliminse | (~bliminse@host86-186-17-7.range86-186.btcentralplus.com) (*.net *.split) |
2022-01-10 09:09:02 +0100 | mjs2600 | (~mjs2600@c-24-91-3-49.hsd1.vt.comcast.net) (*.net *.split) |
2022-01-10 09:09:02 +0100 | tristanC | (~tristanC@user/tristanc) (*.net *.split) |
2022-01-10 09:09:02 +0100 | drewr | (~drew@user/drewr) (*.net *.split) |
2022-01-10 09:09:02 +0100 | hueso | (~root@user/hueso) (*.net *.split) |
2022-01-10 09:09:02 +0100 | vgtw | (~vgtw@c-2359205c.07-348-756d651.bbcust.telenor.se) (*.net *.split) |
2022-01-10 09:09:02 +0100 | mrmr | (~mrmr@user/mrmr) (*.net *.split) |
2022-01-10 09:09:02 +0100 | aku | (~aku@163.172.137.34) (*.net *.split) |
2022-01-10 09:09:02 +0100 | Jing | (~hedgehog@240e:390:7c53:a7e1:15fa:c22e:b1fb:575a) (*.net *.split) |
2022-01-10 09:09:02 +0100 | notzmv | (~zmv@user/notzmv) (*.net *.split) |
2022-01-10 09:09:02 +0100 | [_] | (~itchyjunk@user/itchyjunk/x-7353470) (*.net *.split) |
2022-01-10 09:09:02 +0100 | dyeplexer | (~dyeplexer@user/dyeplexer) (*.net *.split) |
2022-01-10 09:09:02 +0100 | sabx | (~sabbas@user/sabbas) (*.net *.split) |
2022-01-10 09:09:02 +0100 | emf | (~emf@2620:10d:c090:400::5:b9c2) (*.net *.split) |
2022-01-10 09:09:02 +0100 | mvk | (~mvk@2607:fea8:5cdd:f000::55f8) (*.net *.split) |
2022-01-10 09:09:02 +0100 | TonyStone | (~TonyStone@2603-7080-8607-c36a-9cdb-69bc-753b-1e50.res6.spectrum.com) (*.net *.split) |
2022-01-10 09:09:02 +0100 | ouestbillie | (~gallup@192-222-138-215.qc.cable.ebox.net) (*.net *.split) |
2022-01-10 09:09:02 +0100 | vglfr | (~vglfr@88.155.96.35) (*.net *.split) |
2022-01-10 09:09:02 +0100 | remexre | (~remexre@user/remexre) (*.net *.split) |
2022-01-10 09:09:02 +0100 | kimjetwav | (~user@2607:fea8:2363:8f00:62f3:c8e:2d83:a34f) (*.net *.split) |
2022-01-10 09:09:02 +0100 | johnw | (~johnw@2607:f6f0:3004:1:c8b4:50ff:fef8:6bf0) (*.net *.split) |
2022-01-10 09:09:02 +0100 | econo | (uid147250@user/econo) (*.net *.split) |
2022-01-10 09:09:02 +0100 | zaquest | (~notzaques@5.130.79.72) (*.net *.split) |
2022-01-10 09:09:02 +0100 | cls | (~cls@chalk.lubutu.com) (*.net *.split) |
2022-01-10 09:09:02 +0100 | sprout_ | (~quassel@2a02:a467:ccd6:1:d9b7:23d6:79dd:2e64) (*.net *.split) |
2022-01-10 09:09:03 +0100 | aeka | (~aeka@user/hiruji) (*.net *.split) |
2022-01-10 09:09:03 +0100 | xlei | (~akans@pool-71-125-19-142.nycmny.fios.verizon.net) (*.net *.split) |
2022-01-10 09:09:03 +0100 | elvishjerricco | (sid237756@id-237756.helmsley.irccloud.com) (*.net *.split) |
2022-01-10 09:09:03 +0100 | albet70 | (~xxx@2400:8902::f03c:92ff:fe60:98d8) (*.net *.split) |
2022-01-10 09:09:03 +0100 | choucavalier | (~choucaval@peanutbuttervibes.com) (*.net *.split) |
2022-01-10 09:09:03 +0100 | Alex_test | (~al_test@178.34.162.219) (*.net *.split) |
2022-01-10 09:09:03 +0100 | jrm | (~jrm@156.34.249.199) (*.net *.split) |
2022-01-10 09:09:03 +0100 | Hafydd | (~Hafydd@user/hafydd) (*.net *.split) |
2022-01-10 09:09:03 +0100 | stefan-_ | (~cri@42dots.de) (*.net *.split) |
2022-01-10 09:09:03 +0100 | jespada | (~jespada@87.74.36.188) (*.net *.split) |
2022-01-10 09:09:03 +0100 | haasn | (~nand@haasn.dev) (*.net *.split) |
2022-01-10 09:09:03 +0100 | EvanR | (~EvanR@user/evanr) (*.net *.split) |
2022-01-10 09:09:03 +0100 | dextaa | (~DV@user/dextaa) (*.net *.split) |
2022-01-10 09:09:03 +0100 | jinsun | (~quassel@user/jinsun) (*.net *.split) |
2022-01-10 09:09:03 +0100 | Hash | (~Hash@hashsecurity.org) (*.net *.split) |
2022-01-10 09:09:03 +0100 | mtjm | (~mutantmel@2604:a880:2:d0::208b:d001) (*.net *.split) |
2022-01-10 09:09:03 +0100 | jushur | (~human@user/jushur) (*.net *.split) |
2022-01-10 09:09:03 +0100 | mud | (~mud@user/kadoban) (*.net *.split) |
2022-01-10 09:09:03 +0100 | Megant | (megant@user/megant) (*.net *.split) |
2022-01-10 09:09:03 +0100 | incertia | (~incertia@24.42.241.219) (*.net *.split) |
2022-01-10 09:09:03 +0100 | caubert | (~caubert@136.244.111.235) (*.net *.split) |
2022-01-10 09:09:03 +0100 | rubin55 | (sid175221@id-175221.hampstead.irccloud.com) (*.net *.split) |
2022-01-10 09:09:03 +0100 | sander | (~sander@user/sander) (*.net *.split) |
2022-01-10 09:09:03 +0100 | absence | (torgeihe@hildring.pvv.ntnu.no) (*.net *.split) |
2022-01-10 09:09:03 +0100 | infinity0 | (~infinity0@occupy.ecodis.net) (*.net *.split) |
2022-01-10 09:09:03 +0100 | sus | (zero@user/zeromomentum) (*.net *.split) |
2022-01-10 09:09:03 +0100 | yaroot | (~yaroot@2409:12:ac0:2300:680e:dbff:fe1e:4953) (*.net *.split) |
2022-01-10 09:09:03 +0100 | ddb | (~ddb@ipv6two.tilde.club) (*.net *.split) |
2022-01-10 09:09:03 +0100 | tito | (tito@tilde.team) (*.net *.split) |
2022-01-10 09:09:03 +0100 | awpr | (uid446117@id-446117.lymington.irccloud.com) (*.net *.split) |
2022-01-10 09:09:03 +0100 | theproffesor | (~theproffe@user/theproffesor) (*.net *.split) |
2022-01-10 09:09:03 +0100 | carbolymer | (~carbolyme@dropacid.net) (*.net *.split) |
2022-01-10 09:09:03 +0100 | hrdl | (~hrdl@mail.hrdl.eu) (*.net *.split) |
2022-01-10 09:09:03 +0100 | mrmonday | (~robert@what.i.hope.is.not.a.tabernaevagant.es) (*.net *.split) |
2022-01-10 09:09:03 +0100 | obfusk | (~quassel@a82-161-150-56.adsl.xs4all.nl) (*.net *.split) |
2022-01-10 09:09:03 +0100 | lagash | (lagash@lagash.shelltalk.net) (*.net *.split) |
2022-01-10 09:09:03 +0100 | Techcable | (~Techcable@168.235.93.147) (*.net *.split) |
2022-01-10 09:09:03 +0100 | szkl | (uid110435@id-110435.uxbridge.irccloud.com) (*.net *.split) |
2022-01-10 09:09:04 +0100 | neverwas | (jpneverwas@swissbox.unperson.link) (*.net *.split) |
2022-01-10 09:09:04 +0100 | bsima1 | (9d7e39c8ad@2604:bf00:561:2000::dd) (*.net *.split) |
2022-01-10 09:09:04 +0100 | opqdonut | (opqdonut@pseudo.fixme.fi) (*.net *.split) |
2022-01-10 09:09:04 +0100 | nisstyre | (~wes@user/nisstyre) (*.net *.split) |
2022-01-10 09:09:04 +0100 | greyrat | (~greyrat@ip202.ip-51-178-215.eu) (*.net *.split) |
2022-01-10 09:09:04 +0100 | Clint | (~Clint@user/clint) (*.net *.split) |
2022-01-10 09:09:04 +0100 | kristjansson | (sid126207@id-126207.tinside.irccloud.com) (*.net *.split) |
2022-01-10 09:09:04 +0100 | hexology | (~hexology@user/hexology) (*.net *.split) |
2022-01-10 09:09:04 +0100 | landonf | (landonf@mac68k.info) (*.net *.split) |
2022-01-10 09:09:04 +0100 | Logio | (em@kapsi.fi) (*.net *.split) |
2022-01-10 09:09:04 +0100 | raghavgururajan | (ea769b8000@user/raghavgururajan) (*.net *.split) |
2022-01-10 09:09:04 +0100 | totte | (~totte@h-82-196-112-155.A166.priv.bahnhof.se) (*.net *.split) |
2022-01-10 09:09:04 +0100 | w1gz | (~do@159.89.11.133) (*.net *.split) |
2022-01-10 09:09:04 +0100 | In0perable | (~PLAYER_1@fancydata.science) (*.net *.split) |
2022-01-10 09:09:04 +0100 | iteratee_ | (~kyle@162.218.222.107) (*.net *.split) |
2022-01-10 09:09:04 +0100 | ridcully | (~ridcully@p57b52a9a.dip0.t-ipconnect.de) (*.net *.split) |
2022-01-10 09:09:04 +0100 | dolio | (~dolio@130.44.130.54) (*.net *.split) |
2022-01-10 09:09:04 +0100 | stilgart | (~Christoph@chezlefab.net) (*.net *.split) |
2022-01-10 09:09:04 +0100 | enikar | (~enikar@user/enikar) (*.net *.split) |
2022-01-10 09:09:04 +0100 | farn | (~farn@2a03:4000:7:3cd:d4ab:85ff:feeb:f505) (*.net *.split) |
2022-01-10 09:09:04 +0100 | andjjj23 | (~irc@107.170.228.47) (*.net *.split) |
2022-01-10 09:09:04 +0100 | tubogram4 | (~tubogram@user/tubogram) (*.net *.split) |
2022-01-10 09:09:04 +0100 | Axman6 | (~Axman6@user/axman6) (*.net *.split) |
2022-01-10 09:09:04 +0100 | Boarders_ | (sid425905@id-425905.lymington.irccloud.com) (*.net *.split) |
2022-01-10 09:09:04 +0100 | JSharp | (sid4580@id-4580.lymington.irccloud.com) (*.net *.split) |
2022-01-10 09:09:04 +0100 | ysh | (sid6017@id-6017.ilkley.irccloud.com) (*.net *.split) |
2022-01-10 09:09:04 +0100 | saolsen | (sid26430@id-26430.lymington.irccloud.com) (*.net *.split) |
2022-01-10 09:09:04 +0100 | tapas | (sid467876@id-467876.ilkley.irccloud.com) (*.net *.split) |
2022-01-10 09:09:04 +0100 | cbarrett | (sid192934@id-192934.helmsley.irccloud.com) (*.net *.split) |
2022-01-10 09:09:04 +0100 | enemeth79 | (sid309041@id-309041.lymington.irccloud.com) (*.net *.split) |
2022-01-10 09:09:04 +0100 | bjs | (sid190364@user/bjs) (*.net *.split) |
2022-01-10 09:09:04 +0100 | sclv | (sid39734@haskell/developer/sclv) (*.net *.split) |
2022-01-10 09:09:04 +0100 | mrianbloom | (sid350277@id-350277.ilkley.irccloud.com) (*.net *.split) |
2022-01-10 09:09:04 +0100 | dmj` | (sid72307@id-72307.hampstead.irccloud.com) (*.net *.split) |
2022-01-10 09:09:04 +0100 | acertain | (sid470584@id-470584.hampstead.irccloud.com) (*.net *.split) |
2022-01-10 09:09:04 +0100 | gaze___ | (sid387101@id-387101.helmsley.irccloud.com) (*.net *.split) |
2022-01-10 09:09:04 +0100 | V | (~v@anomalous.eu) (*.net *.split) |
2022-01-10 09:09:04 +0100 | SethTisue__ | (sid14912@id-14912.ilkley.irccloud.com) (*.net *.split) |
2022-01-10 09:09:04 +0100 | hongminhee | (sid295@id-295.tinside.irccloud.com) (*.net *.split) |
2022-01-10 09:09:04 +0100 | bitmapper | (uid464869@id-464869.lymington.irccloud.com) (*.net *.split) |
2022-01-10 09:09:04 +0100 | modnar | (~modnar@shell.sonic.net) (*.net *.split) |
2022-01-10 09:09:04 +0100 | sunarch | (uid526836@user/sunarch) (*.net *.split) |
2022-01-10 09:09:04 +0100 | cosimone | (~user@2001:b07:ae5:db26:c24a:d20:4d91:1e20) (*.net *.split) |
2022-01-10 09:09:04 +0100 | kronicma1 | (user27604@neotame.csclub.uwaterloo.ca) (*.net *.split) |
2022-01-10 09:09:04 +0100 | riatre | (~quassel@2001:310:6000:f::5198:1) (*.net *.split) |
2022-01-10 09:09:04 +0100 | polyphem | (~rod@2a02:810d:640:776c:e450:3ca3:b389:687a) (*.net *.split) |
2022-01-10 09:09:04 +0100 | noddy | (~user@user/noddy) (*.net *.split) |
2022-01-10 09:09:04 +0100 | sphynx | (~xnyhps@2a02:2770:3:0:216:3eff:fe67:3288) (*.net *.split) |
2022-01-10 09:09:04 +0100 | siers | (~ij@user/ij) (*.net *.split) |
2022-01-10 09:09:04 +0100 | sim590 | (~simon@modemcable090.207-203-24.mc.videotron.ca) (*.net *.split) |
2022-01-10 09:09:04 +0100 | retro_ | (~retro@2e40edd9.skybroadband.com) (*.net *.split) |
2022-01-10 09:09:04 +0100 | terrorjack | (~terrorjac@2a01:4f8:1c1e:509a::1) (*.net *.split) |
2022-01-10 09:09:04 +0100 | lally | (sid388228@id-388228.uxbridge.irccloud.com) (*.net *.split) |
2022-01-10 09:09:04 +0100 | hugo | (znc@verdigris.lysator.liu.se) (*.net *.split) |
2022-01-10 09:09:04 +0100 | megaTherion | (~therion@unix.io) (*.net *.split) |
2022-01-10 09:09:04 +0100 | dagit | (~dagit@2001:558:6025:38:6476:a063:d05a:44da) (*.net *.split) |
2022-01-10 09:09:05 +0100 | berberman | (~berberman@user/berberman) (*.net *.split) |
2022-01-10 09:09:05 +0100 | adamCS | (~adamCS@ec2-34-207-160-255.compute-1.amazonaws.com) (*.net *.split) |
2022-01-10 09:09:05 +0100 | fjmorazan | (~quassel@user/fjmorazan) (*.net *.split) |
2022-01-10 09:09:05 +0100 | xdej | (~xdej@quatramaran.salle-s.org) (*.net *.split) |
2022-01-10 09:09:05 +0100 | eco_ | (~ubuntu@ec2-54-201-230-197.us-west-2.compute.amazonaws.com) (*.net *.split) |
2022-01-10 09:09:05 +0100 | ldlework | (~hexeme@user/hexeme) (*.net *.split) |
2022-01-10 09:09:05 +0100 | MasseR | (~MasseR@51.15.143.128) (*.net *.split) |
2022-01-10 09:09:05 +0100 | Katarushisu | (~Katarushi@cpc147334-finc20-2-0-cust27.4-2.cable.virginm.net) (*.net *.split) |
2022-01-10 09:09:05 +0100 | synthmeat | (~synthmeat@user/synthmeat) (*.net *.split) |
2022-01-10 09:09:05 +0100 | hubvu | (sid495858@user/hubvu) (*.net *.split) |
2022-01-10 09:09:05 +0100 | burakcank | (~burakcank@has.arrived.and.is.ready-to.party) (*.net *.split) |
2022-01-10 09:09:05 +0100 | statusbot | (~statusbot@ec2-34-198-122-184.compute-1.amazonaws.com) (*.net *.split) |
2022-01-10 09:09:05 +0100 | feetwind | (~mike@user/feetwind) (*.net *.split) |
2022-01-10 09:09:05 +0100 | Ranhir | (~Ranhir@157.97.53.139) (*.net *.split) |
2022-01-10 09:09:05 +0100 | robbert-vdh | (~robbert@robbertvanderhelm.nl) (*.net *.split) |
2022-01-10 09:09:05 +0100 | Firedancer | (sid336191@id-336191.hampstead.irccloud.com) (*.net *.split) |
2022-01-10 09:09:05 +0100 | degraafk | (sid71464@id-71464.lymington.irccloud.com) (*.net *.split) |
2022-01-10 09:09:05 +0100 | glowcoil | (sid3405@id-3405.tinside.irccloud.com) (*.net *.split) |
2022-01-10 09:09:05 +0100 | carter | (sid14827@id-14827.helmsley.irccloud.com) (*.net *.split) |
2022-01-10 09:09:05 +0100 | aweinstock | (~aweinstoc@cpe-67-248-65-250.nycap.res.rr.com) (*.net *.split) |
2022-01-10 09:09:05 +0100 | pie_ | (~pie_bnc@user/pie/x-2818909) (*.net *.split) |
2022-01-10 09:09:05 +0100 | [exa] | (exa@user/exa/x-3587197) (*.net *.split) |
2022-01-10 09:09:05 +0100 | derelict | (derelict@user/derelict) (*.net *.split) |
2022-01-10 09:09:05 +0100 | ystael | (~ystael@user/ystael) (*.net *.split) |
2022-01-10 09:09:05 +0100 | ts2 | (~ts@46.101.20.9) (*.net *.split) |
2022-01-10 09:09:05 +0100 | g | (x@libera/staff/glguy) (*.net *.split) |
2022-01-10 09:09:05 +0100 | swistak | (~swistak@185.21.216.141) (*.net *.split) |
2022-01-10 09:09:05 +0100 | Arsen | (arsen@managarm/dev/Arsen) (*.net *.split) |
2022-01-10 09:09:05 +0100 | nrr__ | (sid20938@id-20938.lymington.irccloud.com) (*.net *.split) |
2022-01-10 09:09:05 +0100 | integral | (sid296274@user/integral) (*.net *.split) |
2022-01-10 09:09:05 +0100 | gmc | (sid58314@id-58314.ilkley.irccloud.com) (*.net *.split) |
2022-01-10 09:09:05 +0100 | dispater | (~dispater@user/brprice) (*.net *.split) |
2022-01-10 09:09:05 +0100 | jamestmartin | (~james@jtmar.me) (*.net *.split) |
2022-01-10 09:09:05 +0100 | vjoki | (~vjoki@2a00:d880:3:1::fea1:9ae) (*.net *.split) |
2022-01-10 09:09:05 +0100 | ehamberg | (sid18208@id-18208.hampstead.irccloud.com) (*.net *.split) |
2022-01-10 09:09:05 +0100 | TimWolla | (~timwolla@2a01:4f8:150:6153:beef::6667) (*.net *.split) |
2022-01-10 09:09:05 +0100 | TMA | (tma@twin.jikos.cz) (*.net *.split) |
2022-01-10 09:09:05 +0100 | iphy | (sid67735@id-67735.lymington.irccloud.com) (*.net *.split) |
2022-01-10 09:09:05 +0100 | whez | (sid470288@id-470288.lymington.irccloud.com) (*.net *.split) |
2022-01-10 09:09:05 +0100 | _0x47_ | (sid508683@id-508683.tinside.irccloud.com) (*.net *.split) |
2022-01-10 09:09:05 +0100 | teehemkay_ | (sid14792@id-14792.lymington.irccloud.com) (*.net *.split) |
2022-01-10 09:09:05 +0100 | gregberns__ | (sid315709@id-315709.helmsley.irccloud.com) (*.net *.split) |
2022-01-10 09:09:05 +0100 | MironZ | (~MironZ@nat-infra.ehlab.uk) (*.net *.split) |
2022-01-10 09:09:05 +0100 | micro | (~micro@user/micro) (*.net *.split) |
2022-01-10 09:09:05 +0100 | russruss | (~russruss@my.russellmcc.com) (*.net *.split) |
2022-01-10 09:09:05 +0100 | S11001001 | (sid42510@id-42510.ilkley.irccloud.com) (*.net *.split) |
2022-01-10 09:09:05 +0100 | NiKaN | (sid385034@id-385034.helmsley.irccloud.com) (*.net *.split) |
2022-01-10 09:09:06 +0100 | tnks | (sid412124@id-412124.helmsley.irccloud.com) (*.net *.split) |
2022-01-10 09:09:06 +0100 | marienz | (~marienz@libera/staff/marienz) (*.net *.split) |
2022-01-10 09:09:06 +0100 | davetapley | (sid666@id-666.uxbridge.irccloud.com) (*.net *.split) |
2022-01-10 09:09:06 +0100 | rtpg | (sid443069@id-443069.ilkley.irccloud.com) (*.net *.split) |
2022-01-10 09:09:06 +0100 | b20n | (sid115913@id-115913.uxbridge.irccloud.com) (*.net *.split) |
2022-01-10 09:09:06 +0100 | lightandlight | (sid135476@id-135476.helmsley.irccloud.com) (*.net *.split) |
2022-01-10 09:09:06 +0100 | caasih | (sid13241@id-13241.ilkley.irccloud.com) (*.net *.split) |
2022-01-10 09:09:06 +0100 | edmundnoble | (sid229620@id-229620.helmsley.irccloud.com) (*.net *.split) |
2022-01-10 09:09:06 +0100 | PotatoGim | (sid99505@id-99505.lymington.irccloud.com) (*.net *.split) |
2022-01-10 09:09:06 +0100 | travv0 | (sid293381@user/travv0) (*.net *.split) |
2022-01-10 09:09:06 +0100 | philpax_ | (sid516926@id-516926.lymington.irccloud.com) (*.net *.split) |
2022-01-10 09:09:06 +0100 | jakesyl_ | (sid56879@id-56879.hampstead.irccloud.com) (*.net *.split) |
2022-01-10 09:09:06 +0100 | Ekho | (~Ekho@user/ekho) (*.net *.split) |
2022-01-10 09:09:06 +0100 | bbear | (~znc@21212.s.t4vps.eu) (*.net *.split) |
2022-01-10 09:09:06 +0100 | dragestil | (~znc@user/dragestil) (*.net *.split) |
2022-01-10 09:09:06 +0100 | welterde | (welterde@thinkbase.srv.welterde.de) (*.net *.split) |
2022-01-10 09:09:06 +0100 | earthy | (~arthurvl@2001:984:275b:1:ba27:ebff:fea0:40b0) (*.net *.split) |
2022-01-10 09:09:06 +0100 | cawfee | (~root@2406:3003:2077:2758::babe) (*.net *.split) |
2022-01-10 09:09:06 +0100 | liskin | (~liskin@xmonad/liskin) (*.net *.split) |
2022-01-10 09:09:06 +0100 | defanor | (~defanor@tart.uberspace.net) (*.net *.split) |
2022-01-10 09:09:06 +0100 | codedmart | (codedmart@2600:3c01::f03c:92ff:fefe:8511) (*.net *.split) |
2022-01-10 09:09:06 +0100 | xnbya | (~xnbya@2a01:4f8:c17:cbdd::1) (*.net *.split) |
2022-01-10 09:09:06 +0100 | bastelfreak | (~bastelfre@basteles-bastelknecht.bastelfreak.org) (*.net *.split) |
2022-01-10 09:09:06 +0100 | Adran | (~adran@botters/adran) (*.net *.split) |
2022-01-10 09:09:06 +0100 | energizer | (~energizer@user/energizer) (*.net *.split) |
2022-01-10 09:09:06 +0100 | tomjaguarpaw | (~tom@li367-225.members.linode.com) (*.net *.split) |
2022-01-10 09:09:06 +0100 | immae | (~immae@2a01:4f8:141:53e7::) (*.net *.split) |
2022-01-10 09:09:06 +0100 | cross | (~cross@spitfire.i.gajendra.net) (*.net *.split) |
2022-01-10 09:09:06 +0100 | janus | (janus@anubis.0x90.dk) (*.net *.split) |
2022-01-10 09:09:06 +0100 | dixie | (~dixie@real.wilbury.sk) (*.net *.split) |
2022-01-10 09:09:06 +0100 | dunj3 | (~dunj3@kingdread.de) (*.net *.split) |
2022-01-10 09:09:06 +0100 | cpape | (~user@2a01:4f9:c010:632d::1) (*.net *.split) |
2022-01-10 09:09:06 +0100 | sm[i] | (~user@plaintextaccounting/sm) (*.net *.split) |
2022-01-10 09:09:15 +0100 | biberu\ | (~biberu@user/biberu) |
2022-01-10 09:10:06 +0100 | yauhsien_ | (~yauhsien@118-167-43-90.dynamic-ip.hinet.net) |
2022-01-10 09:10:06 +0100 | yauhsien | (~yauhsien@118-167-43-90.dynamic-ip.hinet.net) (Read error: Connection reset by peer) |
2022-01-10 09:10:43 +0100 | biberu\ | biberu |
2022-01-10 09:11:10 +0100 | Vajb | (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi) (Read error: Connection reset by peer) |
2022-01-10 09:11:33 +0100 | Vajb | (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi) |
2022-01-10 09:11:49 +0100 | vysn | (~vysn@user/vysn) (Ping timeout: 240 seconds) |
2022-01-10 09:12:37 +0100 | yahb | (xsbot@user/mniip/bot/yahb) (Ping timeout: 256 seconds) |
2022-01-10 09:13:45 +0100 | raehik | (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 256 seconds) |
2022-01-10 09:14:45 +0100 | raehik | (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) |
2022-01-10 09:16:55 +0100 | litharge | (litharge@libera/bot/litharge) |
2022-01-10 09:17:45 +0100 | yahb | (xsbot@user/mniip/bot/yahb) |
2022-01-10 09:20:44 +0100 | deadmarshal | (~deadmarsh@95.38.231.124) |
2022-01-10 09:20:44 +0100 | dhouthoo | (~dhouthoo@178-117-36-167.access.telenet.be) |
2022-01-10 09:20:44 +0100 | lortabac | (~lortabac@2a01:e0a:541:b8f0:c274:f734:3361:cf1c) |
2022-01-10 09:20:44 +0100 | hgolden | (~hgolden2@cpe-172-114-81-123.socal.res.rr.com) |
2022-01-10 09:20:44 +0100 | _ht | (~quassel@82-169-194-8.biz.kpn.net) |
2022-01-10 09:20:44 +0100 | bitmapper | (uid464869@id-464869.lymington.irccloud.com) |
2022-01-10 09:20:44 +0100 | takuan | (~takuan@178-116-218-225.access.telenet.be) |
2022-01-10 09:20:44 +0100 | modnar | (~modnar@shell.sonic.net) |
2022-01-10 09:20:44 +0100 | Jing | (~hedgehog@240e:390:7c53:a7e1:15fa:c22e:b1fb:575a) |
2022-01-10 09:20:44 +0100 | notzmv | (~zmv@user/notzmv) |
2022-01-10 09:20:44 +0100 | [_] | (~itchyjunk@user/itchyjunk/x-7353470) |
2022-01-10 09:20:44 +0100 | td_ | (~td@94.134.91.23) |
2022-01-10 09:20:44 +0100 | Kaiepi | (~Kaiepi@156.34.47.253) |
2022-01-10 09:20:44 +0100 | lemonsnicks | (~lemonsnic@cpc159519-perr18-2-0-cust114.19-1.cable.virginm.net) |
2022-01-10 09:20:44 +0100 | sabx | (~sabbas@user/sabbas) |
2022-01-10 09:20:44 +0100 | sunarch | (uid526836@user/sunarch) |
2022-01-10 09:20:44 +0100 | emf | (~emf@2620:10d:c090:400::5:b9c2) |
2022-01-10 09:20:44 +0100 | mvk | (~mvk@2607:fea8:5cdd:f000::55f8) |
2022-01-10 09:20:44 +0100 | TonyStone | (~TonyStone@2603-7080-8607-c36a-9cdb-69bc-753b-1e50.res6.spectrum.com) |
2022-01-10 09:20:44 +0100 | ouestbillie | (~gallup@192-222-138-215.qc.cable.ebox.net) |
2022-01-10 09:20:44 +0100 | vglfr | (~vglfr@88.155.96.35) |
2022-01-10 09:20:44 +0100 | cosimone | (~user@2001:b07:ae5:db26:c24a:d20:4d91:1e20) |
2022-01-10 09:20:44 +0100 | kronicma1 | (user27604@neotame.csclub.uwaterloo.ca) |
2022-01-10 09:20:44 +0100 | juhp | (~juhp@128.106.188.82) |
2022-01-10 09:20:44 +0100 | remexre | (~remexre@user/remexre) |
2022-01-10 09:20:44 +0100 | kimjetwav | (~user@2607:fea8:2363:8f00:62f3:c8e:2d83:a34f) |
2022-01-10 09:20:44 +0100 | AlexNoo | (~AlexNoo@178.34.162.219) |
2022-01-10 09:20:44 +0100 | johnw | (~johnw@2607:f6f0:3004:1:c8b4:50ff:fef8:6bf0) |
2022-01-10 09:20:44 +0100 | tzh | (~tzh@c-24-21-73-154.hsd1.or.comcast.net) |
2022-01-10 09:20:44 +0100 | Erutuon | (~Erutuon@user/erutuon) |
2022-01-10 09:20:44 +0100 | econo | (uid147250@user/econo) |
2022-01-10 09:20:44 +0100 | zaquest | (~notzaques@5.130.79.72) |
2022-01-10 09:20:44 +0100 | xsperry | (~xs@user/xsperry) |
2022-01-10 09:20:44 +0100 | mstksg | (~jle`@cpe-23-240-75-236.socal.res.rr.com) |
2022-01-10 09:20:44 +0100 | cls | (~cls@chalk.lubutu.com) |
2022-01-10 09:20:44 +0100 | Lord_of_Life | (~Lord@user/lord-of-life/x-2819915) |
2022-01-10 09:20:44 +0100 | sprout_ | (~quassel@2a02:a467:ccd6:1:d9b7:23d6:79dd:2e64) |
2022-01-10 09:20:44 +0100 | aeka | (~aeka@user/hiruji) |
2022-01-10 09:20:44 +0100 | Hash | (~Hash@hashsecurity.org) |
2022-01-10 09:20:44 +0100 | werneta | (~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net) |
2022-01-10 09:20:44 +0100 | tremon | (~tremon@217-120-53-183.cable.dynamic.v4.ziggo.nl) |
2022-01-10 09:20:44 +0100 | xlei | (~akans@pool-71-125-19-142.nycmny.fios.verizon.net) |
2022-01-10 09:20:44 +0100 | elvishjerricco | (sid237756@id-237756.helmsley.irccloud.com) |
2022-01-10 09:20:44 +0100 | kawpuh | (~kawpuh@66.42.81.80) |
2022-01-10 09:20:44 +0100 | n3t | (n3t@user/n3t) |
2022-01-10 09:20:44 +0100 | xsarnik | (xsarnik@lounge.fi.muni.cz) |
2022-01-10 09:20:44 +0100 | polux | (~polux@51.15.169.172) |
2022-01-10 09:20:44 +0100 | albet70 | (~xxx@2400:8902::f03c:92ff:fe60:98d8) |
2022-01-10 09:20:44 +0100 | riatre | (~quassel@2001:310:6000:f::5198:1) |
2022-01-10 09:20:44 +0100 | choucavalier | (~choucaval@peanutbuttervibes.com) |
2022-01-10 09:20:44 +0100 | Alex_test | (~al_test@178.34.162.219) |
2022-01-10 09:20:44 +0100 | wrengr | (~wrengr@150.12.83.34.bc.googleusercontent.com) |
2022-01-10 09:20:44 +0100 | simpleauthority | (~simpleaut@user/simpleauthority) |
2022-01-10 09:20:44 +0100 | polyphem | (~rod@2a02:810d:640:776c:e450:3ca3:b389:687a) |
2022-01-10 09:20:44 +0100 | motherfsck | (~motherfsc@user/motherfsck) |
2022-01-10 09:20:44 +0100 | glguy | (x@libera/staff/glguy) |
2022-01-10 09:20:44 +0100 | jrm | (~jrm@156.34.249.199) |
2022-01-10 09:20:44 +0100 | nurupo | (~nurupo.ga@user/nurupo) |
2022-01-10 09:20:44 +0100 | Hafydd | (~Hafydd@user/hafydd) |
2022-01-10 09:20:44 +0100 | stefan-_ | (~cri@42dots.de) |
2022-01-10 09:20:44 +0100 | noddy | (~user@user/noddy) |
2022-01-10 09:20:44 +0100 | jespada | (~jespada@87.74.36.188) |
2022-01-10 09:20:44 +0100 | puke | (~puke@user/puke) |
2022-01-10 09:20:44 +0100 | Codaraxis_ | (~Codaraxis@user/codaraxis) |
2022-01-10 09:20:44 +0100 | haasn | (~nand@haasn.dev) |
2022-01-10 09:20:44 +0100 | EvanR | (~EvanR@user/evanr) |
2022-01-10 09:20:44 +0100 | hyiltiz | (~quassel@31.220.5.250) |
2022-01-10 09:20:44 +0100 | gentauro | (~gentauro@user/gentauro) |
2022-01-10 09:20:44 +0100 | dextaa | (~DV@user/dextaa) |
2022-01-10 09:20:44 +0100 | ishutin | (~ishutin@178-164-188-6.pool.digikabel.hu) |
2022-01-10 09:20:44 +0100 | byorgey | (~byorgey@155.138.238.211) |
2022-01-10 09:20:44 +0100 | jinsun | (~quassel@user/jinsun) |
2022-01-10 09:20:44 +0100 | sphynx | (~xnyhps@2a02:2770:3:0:216:3eff:fe67:3288) |
2022-01-10 09:20:44 +0100 | mtjm | (~mutantmel@2604:a880:2:d0::208b:d001) |
2022-01-10 09:20:44 +0100 | jushur | (~human@user/jushur) |
2022-01-10 09:20:44 +0100 | mud | (~mud@user/kadoban) |
2022-01-10 09:20:44 +0100 | forell | (~forell@user/forell) |
2022-01-10 09:20:44 +0100 | Megant | (megant@user/megant) |
2022-01-10 09:20:44 +0100 | incertia | (~incertia@24.42.241.219) |
2022-01-10 09:20:44 +0100 | caubert | (~caubert@136.244.111.235) |
2022-01-10 09:20:44 +0100 | koolazer | (~koo@user/koolazer) |
2022-01-10 09:20:44 +0100 | remedan | (~remedan@octo.cafe) |
2022-01-10 09:20:44 +0100 | siers | (~ij@user/ij) |
2022-01-10 09:20:44 +0100 | rubin55 | (sid175221@id-175221.hampstead.irccloud.com) |
2022-01-10 09:20:44 +0100 | SoF | (~skius@user/skius) |
2022-01-10 09:20:44 +0100 | sander | (~sander@user/sander) |
2022-01-10 09:20:44 +0100 | absence | (torgeihe@hildring.pvv.ntnu.no) |
2022-01-10 09:20:44 +0100 | infinity0 | (~infinity0@occupy.ecodis.net) |
2022-01-10 09:20:44 +0100 | sim590 | (~simon@modemcable090.207-203-24.mc.videotron.ca) |
2022-01-10 09:20:44 +0100 | sus | (zero@user/zeromomentum) |
2022-01-10 09:20:44 +0100 | emergence | (~emergence@vm0.max-p.me) |
2022-01-10 09:20:44 +0100 | bliminse | (~bliminse@host86-186-17-7.range86-186.btcentralplus.com) |
2022-01-10 09:20:44 +0100 | retro_ | (~retro@2e40edd9.skybroadband.com) |
2022-01-10 09:20:44 +0100 | yaroot | (~yaroot@2409:12:ac0:2300:680e:dbff:fe1e:4953) |
2022-01-10 09:20:44 +0100 | mjs2600 | (~mjs2600@c-24-91-3-49.hsd1.vt.comcast.net) |
2022-01-10 09:20:44 +0100 | ddb | (~ddb@ipv6two.tilde.club) |
2022-01-10 09:20:44 +0100 | tristanC | (~tristanC@user/tristanc) |
2022-01-10 09:20:44 +0100 | drewr | (~drew@user/drewr) |
2022-01-10 09:20:44 +0100 | hueso | (~root@user/hueso) |
2022-01-10 09:20:44 +0100 | tito | (tito@tilde.team) |
2022-01-10 09:20:44 +0100 | awpr | (uid446117@id-446117.lymington.irccloud.com) |
2022-01-10 09:20:44 +0100 | vgtw | (~vgtw@c-2359205c.07-348-756d651.bbcust.telenor.se) |
2022-01-10 09:20:44 +0100 | theproffesor | (~theproffe@user/theproffesor) |
2022-01-10 09:20:44 +0100 | carbolymer | (~carbolyme@dropacid.net) |
2022-01-10 09:20:44 +0100 | terrorjack | (~terrorjac@2a01:4f8:1c1e:509a::1) |
2022-01-10 09:20:44 +0100 | mrmr | (~mrmr@user/mrmr) |
2022-01-10 09:20:44 +0100 | hrdl | (~hrdl@mail.hrdl.eu) |
2022-01-10 09:20:44 +0100 | aku | (~aku@163.172.137.34) |
2022-01-10 09:20:44 +0100 | mrmonday | (~robert@what.i.hope.is.not.a.tabernaevagant.es) |
2022-01-10 09:20:44 +0100 | obfusk | (~quassel@a82-161-150-56.adsl.xs4all.nl) |
2022-01-10 09:20:44 +0100 | lagash | (lagash@lagash.shelltalk.net) |
2022-01-10 09:20:44 +0100 | Techcable | (~Techcable@168.235.93.147) |
2022-01-10 09:20:44 +0100 | szkl | (uid110435@id-110435.uxbridge.irccloud.com) |
2022-01-10 09:20:44 +0100 | neverwas | (jpneverwas@swissbox.unperson.link) |
2022-01-10 09:20:44 +0100 | bsima1 | (9d7e39c8ad@2604:bf00:561:2000::dd) |
2022-01-10 09:20:44 +0100 | opqdonut | (opqdonut@pseudo.fixme.fi) |
2022-01-10 09:20:44 +0100 | nisstyre | (~wes@user/nisstyre) |
2022-01-10 09:20:44 +0100 | greyrat | (~greyrat@ip202.ip-51-178-215.eu) |
2022-01-10 09:20:44 +0100 | Clint | (~Clint@user/clint) |
2022-01-10 09:20:44 +0100 | lally | (sid388228@id-388228.uxbridge.irccloud.com) |
2022-01-10 09:20:44 +0100 | kristjansson | (sid126207@id-126207.tinside.irccloud.com) |
2022-01-10 09:20:44 +0100 | hugo | (znc@verdigris.lysator.liu.se) |
2022-01-10 09:20:44 +0100 | landonf | (landonf@mac68k.info) |
2022-01-10 09:20:44 +0100 | hexology | (~hexology@user/hexology) |
2022-01-10 09:20:44 +0100 | Logio | (em@kapsi.fi) |
2022-01-10 09:20:44 +0100 | raghavgururajan | (ea769b8000@user/raghavgururajan) |
2022-01-10 09:20:44 +0100 | totte | (~totte@h-82-196-112-155.A166.priv.bahnhof.se) |
2022-01-10 09:20:44 +0100 | megaTherion | (~therion@unix.io) |
2022-01-10 09:20:44 +0100 | dagit | (~dagit@2001:558:6025:38:6476:a063:d05a:44da) |
2022-01-10 09:20:44 +0100 | berberman | (~berberman@user/berberman) |
2022-01-10 09:20:44 +0100 | In0perable | (~PLAYER_1@fancydata.science) |
2022-01-10 09:20:44 +0100 | adamCS | (~adamCS@ec2-34-207-160-255.compute-1.amazonaws.com) |
2022-01-10 09:20:44 +0100 | fjmorazan | (~quassel@user/fjmorazan) |
2022-01-10 09:20:44 +0100 | w1gz | (~do@159.89.11.133) |
2022-01-10 09:20:44 +0100 | xdej | (~xdej@quatramaran.salle-s.org) |
2022-01-10 09:20:44 +0100 | eco_ | (~ubuntu@ec2-54-201-230-197.us-west-2.compute.amazonaws.com) |
2022-01-10 09:20:44 +0100 | ldlework | (~hexeme@user/hexeme) |
2022-01-10 09:20:44 +0100 | iteratee_ | (~kyle@162.218.222.107) |
2022-01-10 09:20:44 +0100 | MasseR | (~MasseR@51.15.143.128) |
2022-01-10 09:20:44 +0100 | ridcully | (~ridcully@p57b52a9a.dip0.t-ipconnect.de) |
2022-01-10 09:20:44 +0100 | Katarushisu | (~Katarushi@cpc147334-finc20-2-0-cust27.4-2.cable.virginm.net) |
2022-01-10 09:20:44 +0100 | travv0 | (sid293381@user/travv0) |
2022-01-10 09:20:44 +0100 | synthmeat | (~synthmeat@user/synthmeat) |
2022-01-10 09:20:44 +0100 | dolio | (~dolio@130.44.130.54) |
2022-01-10 09:20:44 +0100 | stilgart | (~Christoph@chezlefab.net) |
2022-01-10 09:20:44 +0100 | hubvu | (sid495858@user/hubvu) |
2022-01-10 09:20:44 +0100 | enikar | (~enikar@user/enikar) |
2022-01-10 09:20:44 +0100 | burakcank | (~burakcank@has.arrived.and.is.ready-to.party) |
2022-01-10 09:20:44 +0100 | farn | (~farn@2a03:4000:7:3cd:d4ab:85ff:feeb:f505) |
2022-01-10 09:20:44 +0100 | Axman6 | (~Axman6@user/axman6) |
2022-01-10 09:20:44 +0100 | statusbot | (~statusbot@ec2-34-198-122-184.compute-1.amazonaws.com) |
2022-01-10 09:20:44 +0100 | tubogram4 | (~tubogram@user/tubogram) |
2022-01-10 09:20:44 +0100 | feetwind | (~mike@user/feetwind) |
2022-01-10 09:20:44 +0100 | Ranhir | (~Ranhir@157.97.53.139) |
2022-01-10 09:20:44 +0100 | robbert-vdh | (~robbert@robbertvanderhelm.nl) |
2022-01-10 09:20:44 +0100 | Firedancer | (sid336191@id-336191.hampstead.irccloud.com) |
2022-01-10 09:20:44 +0100 | degraafk | (sid71464@id-71464.lymington.irccloud.com) |
2022-01-10 09:20:44 +0100 | glowcoil | (sid3405@id-3405.tinside.irccloud.com) |
2022-01-10 09:20:44 +0100 | carter | (sid14827@id-14827.helmsley.irccloud.com) |
2022-01-10 09:20:44 +0100 | andjjj23 | (~irc@107.170.228.47) |
2022-01-10 09:20:44 +0100 | aweinstock | (~aweinstoc@cpe-67-248-65-250.nycap.res.rr.com) |
2022-01-10 09:20:44 +0100 | pie_ | (~pie_bnc@user/pie/x-2818909) |
2022-01-10 09:20:44 +0100 | [exa] | (exa@user/exa/x-3587197) |
2022-01-10 09:20:44 +0100 | derelict | (derelict@user/derelict) |
2022-01-10 09:20:44 +0100 | g | (x@libera/staff/glguy) |
2022-01-10 09:20:44 +0100 | ystael | (~ystael@user/ystael) |
2022-01-10 09:20:44 +0100 | ts2 | (~ts@46.101.20.9) |
2022-01-10 09:20:44 +0100 | swistak | (~swistak@185.21.216.141) |
2022-01-10 09:20:44 +0100 | Arsen | (arsen@managarm/dev/Arsen) |
2022-01-10 09:20:44 +0100 | nrr__ | (sid20938@id-20938.lymington.irccloud.com) |
2022-01-10 09:20:44 +0100 | gmc | (sid58314@id-58314.ilkley.irccloud.com) |
2022-01-10 09:20:44 +0100 | integral | (sid296274@user/integral) |
2022-01-10 09:20:44 +0100 | dispater | (~dispater@user/brprice) |
2022-01-10 09:20:44 +0100 | jamestmartin | (~james@jtmar.me) |
2022-01-10 09:20:44 +0100 | vjoki | (~vjoki@2a00:d880:3:1::fea1:9ae) |
2022-01-10 09:20:44 +0100 | ehamberg | (sid18208@id-18208.hampstead.irccloud.com) |
2022-01-10 09:20:44 +0100 | TimWolla | (~timwolla@2a01:4f8:150:6153:beef::6667) |
2022-01-10 09:20:44 +0100 | TMA | (tma@twin.jikos.cz) |
2022-01-10 09:20:44 +0100 | iphy | (sid67735@id-67735.lymington.irccloud.com) |
2022-01-10 09:20:44 +0100 | _0x47_ | (sid508683@id-508683.tinside.irccloud.com) |
2022-01-10 09:20:44 +0100 | whez | (sid470288@id-470288.lymington.irccloud.com) |
2022-01-10 09:20:44 +0100 | teehemkay_ | (sid14792@id-14792.lymington.irccloud.com) |
2022-01-10 09:20:44 +0100 | gregberns__ | (sid315709@id-315709.helmsley.irccloud.com) |
2022-01-10 09:20:44 +0100 | MironZ | (~MironZ@nat-infra.ehlab.uk) |
2022-01-10 09:20:44 +0100 | micro | (~micro@user/micro) |
2022-01-10 09:20:44 +0100 | sm[i] | (~user@plaintextaccounting/sm) |
2022-01-10 09:20:44 +0100 | russruss | (~russruss@my.russellmcc.com) |
2022-01-10 09:20:44 +0100 | mercury.libera.chat | +o Axman6 |
2022-01-10 09:20:44 +0100 | hongminhee | (sid295@id-295.tinside.irccloud.com) |
2022-01-10 09:20:44 +0100 | SethTisue__ | (sid14912@id-14912.ilkley.irccloud.com) |
2022-01-10 09:20:44 +0100 | V | (~v@anomalous.eu) |
2022-01-10 09:20:44 +0100 | gaze___ | (sid387101@id-387101.helmsley.irccloud.com) |
2022-01-10 09:20:44 +0100 | acertain | (sid470584@id-470584.hampstead.irccloud.com) |
2022-01-10 09:20:44 +0100 | dmj` | (sid72307@id-72307.hampstead.irccloud.com) |
2022-01-10 09:20:44 +0100 | mrianbloom | (sid350277@id-350277.ilkley.irccloud.com) |
2022-01-10 09:20:44 +0100 | sclv | (sid39734@haskell/developer/sclv) |
2022-01-10 09:20:44 +0100 | bjs | (sid190364@user/bjs) |
2022-01-10 09:20:44 +0100 | enemeth79 | (sid309041@id-309041.lymington.irccloud.com) |
2022-01-10 09:20:44 +0100 | cbarrett | (sid192934@id-192934.helmsley.irccloud.com) |
2022-01-10 09:20:44 +0100 | tapas | (sid467876@id-467876.ilkley.irccloud.com) |
2022-01-10 09:20:44 +0100 | saolsen | (sid26430@id-26430.lymington.irccloud.com) |
2022-01-10 09:20:44 +0100 | ysh | (sid6017@id-6017.ilkley.irccloud.com) |
2022-01-10 09:20:44 +0100 | JSharp | (sid4580@id-4580.lymington.irccloud.com) |
2022-01-10 09:20:44 +0100 | Boarders_ | (sid425905@id-425905.lymington.irccloud.com) |
2022-01-10 09:20:44 +0100 | S11001001 | (sid42510@id-42510.ilkley.irccloud.com) |
2022-01-10 09:20:44 +0100 | NiKaN | (sid385034@id-385034.helmsley.irccloud.com) |
2022-01-10 09:20:44 +0100 | tnks | (sid412124@id-412124.helmsley.irccloud.com) |
2022-01-10 09:20:44 +0100 | marienz | (~marienz@libera/staff/marienz) |
2022-01-10 09:20:44 +0100 | davetapley | (sid666@id-666.uxbridge.irccloud.com) |
2022-01-10 09:20:44 +0100 | rtpg | (sid443069@id-443069.ilkley.irccloud.com) |
2022-01-10 09:20:44 +0100 | b20n | (sid115913@id-115913.uxbridge.irccloud.com) |
2022-01-10 09:20:44 +0100 | lightandlight | (sid135476@id-135476.helmsley.irccloud.com) |
2022-01-10 09:20:44 +0100 | caasih | (sid13241@id-13241.ilkley.irccloud.com) |
2022-01-10 09:20:44 +0100 | edmundnoble | (sid229620@id-229620.helmsley.irccloud.com) |
2022-01-10 09:20:44 +0100 | PotatoGim | (sid99505@id-99505.lymington.irccloud.com) |
2022-01-10 09:20:44 +0100 | philpax_ | (sid516926@id-516926.lymington.irccloud.com) |
2022-01-10 09:20:44 +0100 | jakesyl_ | (sid56879@id-56879.hampstead.irccloud.com) |
2022-01-10 09:20:44 +0100 | Ekho | (~Ekho@user/ekho) |
2022-01-10 09:20:44 +0100 | bbear | (~znc@21212.s.t4vps.eu) |
2022-01-10 09:20:44 +0100 | dragestil | (~znc@user/dragestil) |
2022-01-10 09:20:44 +0100 | welterde | (welterde@thinkbase.srv.welterde.de) |
2022-01-10 09:20:44 +0100 | earthy | (~arthurvl@2001:984:275b:1:ba27:ebff:fea0:40b0) |
2022-01-10 09:20:44 +0100 | cawfee | (~root@2406:3003:2077:2758::babe) |
2022-01-10 09:20:44 +0100 | liskin | (~liskin@xmonad/liskin) |
2022-01-10 09:20:44 +0100 | defanor | (~defanor@tart.uberspace.net) |
2022-01-10 09:20:44 +0100 | codedmart | (codedmart@2600:3c01::f03c:92ff:fefe:8511) |
2022-01-10 09:20:44 +0100 | xnbya | (~xnbya@2a01:4f8:c17:cbdd::1) |
2022-01-10 09:20:44 +0100 | bastelfreak | (~bastelfre@basteles-bastelknecht.bastelfreak.org) |
2022-01-10 09:20:44 +0100 | Adran | (~adran@botters/adran) |
2022-01-10 09:20:44 +0100 | energizer | (~energizer@user/energizer) |
2022-01-10 09:20:44 +0100 | tomjaguarpaw | (~tom@li367-225.members.linode.com) |
2022-01-10 09:20:44 +0100 | immae | (~immae@2a01:4f8:141:53e7::) |
2022-01-10 09:20:44 +0100 | cross | (~cross@spitfire.i.gajendra.net) |
2022-01-10 09:20:44 +0100 | janus | (janus@anubis.0x90.dk) |
2022-01-10 09:20:44 +0100 | dixie | (~dixie@real.wilbury.sk) |
2022-01-10 09:20:44 +0100 | cpape | (~user@2a01:4f9:c010:632d::1) |
2022-01-10 09:20:44 +0100 | dunj3 | (~dunj3@kingdread.de) |
2022-01-10 09:21:25 +0100 | kaph | (~kaph@net-2-38-107-19.cust.vodafonedsl.it) (Ping timeout: 240 seconds) |
2022-01-10 09:22:52 +0100 | litharge | (litharge@libera/bot/litharge) (Remote host closed the connection) |
2022-01-10 09:22:55 +0100 | litharge | (litharge@libera/bot/litharge) |
2022-01-10 09:24:55 +0100 | [_] | (~itchyjunk@user/itchyjunk/x-7353470) (Remote host closed the connection) |
2022-01-10 09:25:53 +0100 | Sgeo | (~Sgeo@user/sgeo) (Read error: Connection reset by peer) |
2022-01-10 09:28:05 +0100 | machinedgod | (~machinedg@24.105.81.50) |
2022-01-10 09:28:12 +0100 | gehmehgeh | (~user@user/gehmehgeh) |
2022-01-10 09:30:52 +0100 | dyeplexer | (~dyeplexer@user/dyeplexer) |
2022-01-10 09:33:10 +0100 | deadmarshal | (~deadmarsh@95.38.231.124) (Ping timeout: 256 seconds) |
2022-01-10 09:33:42 +0100 | coot | (~coot@89-64-85-93.dynamic.chello.pl) |
2022-01-10 09:39:47 +0100 | nunggu | (~q@gateway/tor-sasl/nunggu) (Remote host closed the connection) |
2022-01-10 09:40:16 +0100 | nunggu | (~q@gateway/tor-sasl/nunggu) |
2022-01-10 09:41:31 +0100 | dyeplexer | (~dyeplexer@user/dyeplexer) (Ping timeout: 256 seconds) |
2022-01-10 09:44:47 +0100 | d0ku | (~d0ku@178.43.3.56.ipv4.supernova.orange.pl) |
2022-01-10 09:46:55 +0100 | deadmarshal | (~deadmarsh@95.38.231.124) |
2022-01-10 09:52:34 +0100 | nhatanh02 | (~satori@123.24.172.30) |
2022-01-10 09:54:00 +0100 | alMalsamo | (~alMalsamo@gateway/tor-sasl/almalsamo) (Ping timeout: 276 seconds) |
2022-01-10 09:54:11 +0100 | Topsi | (~Tobias@dyndsl-095-033-093-212.ewe-ip-backbone.de) |
2022-01-10 09:54:43 +0100 | chele | (~chele@user/chele) |
2022-01-10 09:54:53 +0100 | acidjnk | (~acidjnk@p200300d0c7271e945c697a298a149d84.dip0.t-ipconnect.de) |
2022-01-10 09:54:53 +0100 | acidjnk_new | (~acidjnk@p200300d0c7271e945c697a298a149d84.dip0.t-ipconnect.de) |
2022-01-10 09:55:18 +0100 | gehmehgeh | (~user@user/gehmehgeh) (Ping timeout: 276 seconds) |
2022-01-10 09:56:22 +0100 | gehmehgeh | (~user@user/gehmehgeh) |
2022-01-10 10:01:30 +0100 | Erutuon | (~Erutuon@user/erutuon) (Ping timeout: 256 seconds) |
2022-01-10 10:07:50 +0100 | azimut_ | (~azimut@gateway/tor-sasl/azimut) (Remote host closed the connection) |
2022-01-10 10:08:09 +0100 | azimut | (~azimut@gateway/tor-sasl/azimut) |
2022-01-10 10:09:06 +0100 | jgeerds | (~jgeerds@55d4bbed.access.ecotel.net) |
2022-01-10 10:09:42 +0100 | dyeplexer | (~dyeplexer@user/dyeplexer) |
2022-01-10 10:11:08 +0100 | MajorBiscuit | (~MajorBisc@c-001-032-022.client.tudelft.eduvpn.nl) |
2022-01-10 10:13:25 +0100 | jgeerds | (~jgeerds@55d4bbed.access.ecotel.net) (Ping timeout: 240 seconds) |
2022-01-10 10:17:36 +0100 | geekosaur | (~geekosaur@xmonad/geekosaur) (Killed (NickServ (GHOST command used by allbery_b))) |
2022-01-10 10:17:36 +0100 | allbery_b | (~geekosaur@xmonad/geekosaur) |
2022-01-10 10:17:39 +0100 | allbery_b | geekosaur |
2022-01-10 10:21:52 +0100 | Jing | (~hedgehog@240e:390:7c53:a7e1:15fa:c22e:b1fb:575a) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
2022-01-10 10:32:25 +0100 | tzh | (~tzh@c-24-21-73-154.hsd1.or.comcast.net) (Quit: zzz) |
2022-01-10 10:33:17 +0100 | eggplantade | (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection) |
2022-01-10 10:34:45 +0100 | dyeplexer | (~dyeplexer@user/dyeplexer) (Quit: Leaving) |
2022-01-10 10:36:32 +0100 | Gurkenglas | (~Gurkengla@dslb-002-203-144-204.002.203.pools.vodafone-ip.de) |
2022-01-10 10:44:41 +0100 | kaph | (~kaph@net-2-38-107-19.cust.vodafonedsl.it) |
2022-01-10 10:49:37 +0100 | mvk | (~mvk@2607:fea8:5cdd:f000::55f8) (Ping timeout: 240 seconds) |
2022-01-10 10:54:00 +0100 | __monty__ | (~toonn@user/toonn) |
2022-01-10 10:55:30 +0100 | acidjnk | (~acidjnk@p200300d0c7271e945c697a298a149d84.dip0.t-ipconnect.de) (Ping timeout: 268 seconds) |
2022-01-10 10:55:30 +0100 | acidjnk_new | (~acidjnk@p200300d0c7271e945c697a298a149d84.dip0.t-ipconnect.de) (Ping timeout: 268 seconds) |
2022-01-10 10:59:24 +0100 | dschrempf | (~dominik@070-207.dynamic.dsl.fonira.net) |
2022-01-10 11:02:07 +0100 | Jing | (~hedgehog@240e:390:7c53:a7e1:ede2:45ee:21e7:7941) |
2022-01-10 11:03:55 +0100 | kupi | (uid212005@id-212005.hampstead.irccloud.com) |
2022-01-10 11:06:40 +0100 | dschrempf | (~dominik@070-207.dynamic.dsl.fonira.net) (Ping timeout: 256 seconds) |
2022-01-10 11:08:18 +0100 | econo | (uid147250@user/econo) (Quit: Connection closed for inactivity) |
2022-01-10 11:12:11 +0100 | xff0x | (~xff0x@port-92-193-159-86.dynamic.as20676.net) (Ping timeout: 256 seconds) |
2022-01-10 11:12:16 +0100 | juhp | (~juhp@128.106.188.82) (Quit: juhp) |
2022-01-10 11:14:22 +0100 | jackson99 | (~bc8147f2@cerf.good1.com) (Quit: CGI:IRC (Session timeout)) |
2022-01-10 11:17:31 +0100 | xff0x | (~xff0x@2001:1a81:5310:700:f0a4:a961:9964:1b51) |
2022-01-10 11:18:39 +0100 | dyniec | (~dyniec@mail.dybiec.info) (Quit: WeeChat 3.0) |
2022-01-10 11:21:11 +0100 | dyniec | (~dyniec@mail.dybiec.info) |
2022-01-10 11:28:56 +0100 | juhp | (~juhp@128.106.188.82) |
2022-01-10 11:30:06 +0100 | yauhsien_ | (~yauhsien@118-167-43-90.dynamic-ip.hinet.net) (Remote host closed the connection) |
2022-01-10 11:30:46 +0100 | yauhsien | (~yauhsien@118-167-43-90.dynamic-ip.hinet.net) |
2022-01-10 11:33:53 +0100 | eggplantade | (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) |
2022-01-10 11:36:42 +0100 | Lord_of_Life | (~Lord@user/lord-of-life/x-2819915) (Ping timeout: 256 seconds) |
2022-01-10 11:37:22 +0100 | Lord_of_Life | (~Lord@user/lord-of-life/x-2819915) |
2022-01-10 11:38:13 +0100 | eggplantade | (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 240 seconds) |
2022-01-10 11:38:35 +0100 | dschrempf | (~dominik@070-207.dynamic.dsl.fonira.net) |
2022-01-10 11:38:44 +0100 | acidjnk_new | (~acidjnk@p200300d0c7271e945c697a298a149d84.dip0.t-ipconnect.de) |
2022-01-10 11:38:45 +0100 | acidjnk | (~acidjnk@p200300d0c7271e945c697a298a149d84.dip0.t-ipconnect.de) |
2022-01-10 11:52:20 +0100 | Erutuon | (~Erutuon@user/erutuon) |
2022-01-10 11:54:57 +0100 | chexum | (~quassel@gateway/tor-sasl/chexum) (Remote host closed the connection) |
2022-01-10 11:55:26 +0100 | chexum | (~quassel@gateway/tor-sasl/chexum) |
2022-01-10 12:06:21 +0100 | yauhsien | (~yauhsien@118-167-43-90.dynamic-ip.hinet.net) (Remote host closed the connection) |
2022-01-10 12:07:01 +0100 | yauhsien | (~yauhsien@118-167-43-90.dynamic-ip.hinet.net) |
2022-01-10 12:11:36 +0100 | DNH | (~DNH@2a02:8108:1100:16d8:80ee:56b1:c7cc:d16d) |
2022-01-10 12:13:17 +0100 | Erutuon | (~Erutuon@user/erutuon) (Ping timeout: 240 seconds) |
2022-01-10 12:16:51 +0100 | yauhsien | (~yauhsien@118-167-43-90.dynamic-ip.hinet.net) (Remote host closed the connection) |
2022-01-10 12:17:38 +0100 | yauhsien | (~yauhsien@118-167-43-90.dynamic-ip.hinet.net) |
2022-01-10 12:20:26 +0100 | dschrempf | (~dominik@070-207.dynamic.dsl.fonira.net) (Quit: WeeChat 3.3) |
2022-01-10 12:25:22 +0100 | max22- | (~maxime@2a01cb088335980038ab69ec4eae31f4.ipv6.abo.wanadoo.fr) |
2022-01-10 12:36:29 +0100 | ubert | (~Thunderbi@p200300ecdf0994f82db7d35c756e5286.dip0.t-ipconnect.de) |
2022-01-10 12:39:25 +0100 | MajorBiscuit | (~MajorBisc@c-001-032-022.client.tudelft.eduvpn.nl) (Ping timeout: 240 seconds) |
2022-01-10 12:41:42 +0100 | Midjak | (~Midjak@may53-1-78-226-116-92.fbx.proxad.net) |
2022-01-10 12:44:45 +0100 | mc47 | (~mc47@xmonad/TheMC47) |
2022-01-10 12:48:09 +0100 | max22- | (~maxime@2a01cb088335980038ab69ec4eae31f4.ipv6.abo.wanadoo.fr) (Remote host closed the connection) |
2022-01-10 12:56:02 +0100 | mc47 | (~mc47@xmonad/TheMC47) (Remote host closed the connection) |
2022-01-10 13:00:17 +0100 | notzmv | (~zmv@user/notzmv) (Ping timeout: 240 seconds) |
2022-01-10 13:02:41 +0100 | Maxdamantus | (~Maxdamant@user/maxdamantus) (Ping timeout: 256 seconds) |
2022-01-10 13:07:16 +0100 | ubert1 | (~Thunderbi@p200300ecdf0994f8385203c98e392e3c.dip0.t-ipconnect.de) |
2022-01-10 13:11:32 +0100 | <Benzi-Junior> | hey, I'm having trouble with stack, and I think the documentation is out of date |
2022-01-10 13:12:11 +0100 | <Benzi-Junior> | I have a file Foo.hs in src and stack finds it but doesn't expose the module |
2022-01-10 13:12:38 +0100 | <Benzi-Junior> | i.e. it puts it under "other modules" |
2022-01-10 13:13:00 +0100 | <Benzi-Junior> | the documentation says I should edit the .cabal file |
2022-01-10 13:13:02 +0100 | deadmarshal | (~deadmarsh@95.38.231.124) (Ping timeout: 256 seconds) |
2022-01-10 13:13:13 +0100 | Maxdamantus | (~Maxdamant@user/maxdamantus) |
2022-01-10 13:13:34 +0100 | kupi | (uid212005@id-212005.hampstead.irccloud.com) (Quit: Connection closed for inactivity) |
2022-01-10 13:13:45 +0100 | <polyphem> | stack uses <project>.cabal to build, you have to add Foo.hs in .cabal under executable/library stanza under exposed modules |
2022-01-10 13:13:53 +0100 | <Benzi-Junior> | but as far as I can tell, stack nowadays writes the .cabal file before doing anything with it |
2022-01-10 13:16:19 +0100 | <polyphem> | stack generates a <project>.cabal file with only standard Main.hs and MyLib.hs files, you have to add your files manually |
2022-01-10 13:17:13 +0100 | <Benzi-Junior> | polyphem, I tried editing the .cabal file but when I run "stack build" it stack writes over it |
2022-01-10 13:17:15 +0100 | max22- | (~maxime@lfbn-ren-1-1026-62.w92-139.abo.wanadoo.fr) |
2022-01-10 13:17:39 +0100 | <polyphem> | what ? |
2022-01-10 13:18:10 +0100 | <yushyin> | do you maybe have a package.yaml hpack file? |
2022-01-10 13:18:26 +0100 | <polyphem> | haven't seen this behavior of stack |
2022-01-10 13:19:03 +0100 | <Benzi-Junior> | yushyin, yes, |
2022-01-10 13:19:21 +0100 | <Benzi-Junior> | polyphem, it's something that changed a while back |
2022-01-10 13:19:31 +0100 | <Benzi-Junior> | polyphem, it's been bothering me ever since |
2022-01-10 13:19:55 +0100 | <yushyin> | yeah, i guess stack uses hpack to generate your cabal file from the package.yaml |
2022-01-10 13:20:22 +0100 | <polyphem> | yushyin, Benzi-Junior : this has to to with hpack , right , stack alone wouldnt overwrite its .cabal file |
2022-01-10 13:20:37 +0100 | max22- | (~maxime@lfbn-ren-1-1026-62.w92-139.abo.wanadoo.fr) (Remote host closed the connection) |
2022-01-10 13:21:01 +0100 | acidjnk | (~acidjnk@p200300d0c7271e945c697a298a149d84.dip0.t-ipconnect.de) (Ping timeout: 240 seconds) |
2022-01-10 13:21:01 +0100 | acidjnk_new | (~acidjnk@p200300d0c7271e945c697a298a149d84.dip0.t-ipconnect.de) (Ping timeout: 240 seconds) |
2022-01-10 13:21:12 +0100 | burnsidesLlama | (~burnsides@dhcp168-013.wadham.ox.ac.uk) |
2022-01-10 13:22:31 +0100 | nhatanh02 | (~satori@123.24.172.30) (Ping timeout: 256 seconds) |
2022-01-10 13:23:50 +0100 | <polyphem> | Benzi-Junior: when you stack init , do you give a project template ? |
2022-01-10 13:24:11 +0100 | <Benzi-Junior> | polyphem, no |
2022-01-10 13:25:30 +0100 | <yushyin> | edit package.yaml to your needs |
2022-01-10 13:26:13 +0100 | <polyphem> | how , yushyin said if you have package.yaml from hpack it will generate your .cabal from it, why you have hpack in the first place ? Do you need it ? |
2022-01-10 13:26:36 +0100 | <Benzi-Junior> | yushyin, "rm package.yaml" |
2022-01-10 13:26:37 +0100 | <polyphem> | yushyin: is hpack standard with stack now ? |
2022-01-10 13:27:22 +0100 | <yushyin> | dunno, i don't use stack |
2022-01-10 13:29:28 +0100 | <polyphem> | i have latest stack : Version 2.7.3, Git revision 7927a3aec32e2b2e5e4fb5be76d0d50eddcc197f x86_64 hpack-0.34.4 on debian, and it does not create package.yaml/uses hpack for my projects !? |
2022-01-10 13:32:41 +0100 | <yushyin> | polyphem: 'Since Stack 1.6.1, the package.yaml is the preferred package format that is provided built-in by stack through the hpack tool. The default behaviour is to generate the .cabal file from this package.yaml, and accordingly you should not modify the .cabal file.' -- https://docs.haskellstack.org/en/stable/GUIDE/#stacks-functions |
2022-01-10 13:36:04 +0100 | <polyphem> | i have never seen an hpack/package.yaml in one of my projects !? |
2022-01-10 13:38:31 +0100 | <polyphem> | what are you using yushyin ? plain cabal ? or nix ? |
2022-01-10 13:39:07 +0100 | <yushyin> | ghcup+cabal |
2022-01-10 13:39:40 +0100 | phuegrvs[m] | (~phuegrvsm@2001:470:69fc:105::1:65e4) |
2022-01-10 13:41:04 +0100 | pavonia | (~user@user/siracusa) (Quit: Bye!) |
2022-01-10 13:41:10 +0100 | alx741 | (~alx741@157.100.93.160) |
2022-01-10 13:41:16 +0100 | <polyphem> | usually, i start with cabal init -i , then later i switch to stack with stack new , maybe stack sees my .cabal and in order to not overwrite it , doesnt generate package.yaml/juses hpack ... , maybe |
2022-01-10 13:41:49 +0100 | <yushyin> | maybe |
2022-01-10 13:41:54 +0100 | little_mac | (~little_ma@2601:410:4300:3ce0:254c:b3ad:2ae7:82d7) |
2022-01-10 13:43:19 +0100 | <maerwald> | trash package.yaml |
2022-01-10 13:43:39 +0100 | <polyphem> | Benzi-Junior: if your project is relativly fresh , only that foo.hs , try to rm all stack artifacts , then do cabal init -i (interactive) to generate your initial cabal file and then run stack new , that might work out not having to deal with hpack/package.yaml |
2022-01-10 13:43:42 +0100 | tromp | (~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
2022-01-10 13:43:57 +0100 | vglfr | (~vglfr@88.155.96.35) (Read error: Connection reset by peer) |
2022-01-10 13:44:37 +0100 | <polyphem> | i like stacks support for different resolvers/ghc versions , and externel packages and git source packages |
2022-01-10 13:45:00 +0100 | vglfr | (~vglfr@88.155.96.35) |
2022-01-10 13:46:11 +0100 | <polyphem> | havent had the need to tryout ghcup |
2022-01-10 13:46:37 +0100 | <yushyin> | https://cabal.readthedocs.io/en/3.6/cabal-project.html#specifying-the-local-packages |
2022-01-10 13:46:46 +0100 | <yushyin> | https://cabal.readthedocs.io/en/3.6/cabal-project.html#specifying-packages-from-remote-version-con… |
2022-01-10 13:47:17 +0100 | <maerwald> | stack doesn't have any significant feature that you can't have in cabal... it's just a different usability approach |
2022-01-10 13:47:46 +0100 | <polyphem> | yushyin: i erelativly often end up in a cabal state where it cant resolve dependencies , then i switch to stack |
2022-01-10 13:49:18 +0100 | alx741 | (~alx741@157.100.93.160) (Read error: Connection reset by peer) |
2022-01-10 13:49:59 +0100 | <polyphem> | maerwald: yeah , i know cabal stepped up quite a bit , still i sometimes use stack sometimes only cabal , but cabal uses systeminstallation of ghc, and debian usually is not uptodate |
2022-01-10 13:50:09 +0100 | <yushyin> | if you really wanted to, you could use the constraints file from stackage e.g. https://www.stackage.org/lts-18.21/cabal.config |
2022-01-10 13:50:21 +0100 | <maerwald> | polyphem: then use ghcup to install a recent GHC |
2022-01-10 13:50:28 +0100 | xb0o2 | (~xb0o2@user/xb0o2) |
2022-01-10 13:50:29 +0100 | <yushyin> | cabal can use any ghc you like |
2022-01-10 13:50:49 +0100 | <yushyin> | and ghcup makes it easy to install many ghcs |
2022-01-10 13:51:03 +0100 | <polyphem> | when i need some new ghc feature that debian doesnt have yet , i switch to stack and an different resolver |
2022-01-10 13:51:13 +0100 | <maerwald> | sound complicated |
2022-01-10 13:52:25 +0100 | <polyphem> | hmm , at least i do not have to learn yeat another tool, no offence against ghcup , havent used it once |
2022-01-10 13:53:19 +0100 | <maerwald> | there's no learning curve |
2022-01-10 13:53:28 +0100 | <polyphem> | but fp is flatly focusing more and more towards rust, dont they? wonder how long they will continue stack anyway |
2022-01-10 13:53:39 +0100 | <maerwald> | stack is already abandoned by fp |
2022-01-10 13:54:02 +0100 | kuribas | (~user@ip-188-118-57-242.reverse.destiny.be) |
2022-01-10 13:54:11 +0100 | <maerwald> | https://www.snoyman.com/blog/babies-oss-maintenance/ |
2022-01-10 13:54:20 +0100 | <polyphem> | maerwald: oh, is it ? |
2022-01-10 13:54:55 +0100 | <yushyin> | polyphem: in my experience haskell package from linux distributions are not for development, thus i use ghcup. i usually end up with many ghcs anyway so why bother with the ghc from the distribution |
2022-01-10 13:55:21 +0100 | <yushyin> | IMO ;) |
2022-01-10 13:55:24 +0100 | alx741 | (~alx741@157.100.93.160) |
2022-01-10 13:57:47 +0100 | <polyphem> | maerwald: i see |
2022-01-10 13:59:13 +0100 | alx741 | (~alx741@157.100.93.160) (Read error: Connection reset by peer) |
2022-01-10 13:59:33 +0100 | <polyphem> | so ghcup installs different ghc versions per user or system wide , do i have to bend my links aka update-aletrnatives on debian ? ist it also managing cabal versions ? |
2022-01-10 14:00:01 +0100 | <maerwald> | polyphem: ghcup installs into ~/.ghcup only and requires that you add ~/.ghcup/bin to PATH |
2022-01-10 14:00:14 +0100 | <maerwald> | so you just prepend it to your path |
2022-01-10 14:00:29 +0100 | kaph | (~kaph@net-2-38-107-19.cust.vodafonedsl.it) (Ping timeout: 256 seconds) |
2022-01-10 14:01:13 +0100 | euandreh | (~euandreh@2804:14c:33:9fe5:cb46:c04b:665a:c687) |
2022-01-10 14:01:40 +0100 | <polyphem> | maerwald: and ghc is to be fully quallified then like ghc-9.xy right or has ghcup like a subcomand to specifie wich ghc version ghc points to ? |
2022-01-10 14:02:29 +0100 | alx741 | (~alx741@157.100.93.160) |
2022-01-10 14:02:33 +0100 | <maerwald> | polyphem: yes, it allows to set the default ghc symlinks |
2022-01-10 14:02:58 +0100 | <polyphem> | oh cool , what about cabal versions, same there ? |
2022-01-10 14:03:25 +0100 | <maerwald> | https://www.haskell.org/ghcup/about/#how |
2022-01-10 14:03:30 +0100 | <maerwald> | it's all in the documentation |
2022-01-10 14:04:16 +0100 | <polyphem> | sure , will have a look then to check it out , youre the author right ? |
2022-01-10 14:06:19 +0100 | tromp | (~textual@dhcp-077-249-230-040.chello.nl) |
2022-01-10 14:09:01 +0100 | <maerwald> | yes |
2022-01-10 14:09:20 +0100 | perrierjouet | (~perrier-j@modemcable012.251-130-66.mc.videotron.ca) |
2022-01-10 14:09:45 +0100 | <polyphem> | maerwald: thank you |
2022-01-10 14:10:33 +0100 | alx741 | (~alx741@157.100.93.160) (Read error: Connection reset by peer) |
2022-01-10 14:10:48 +0100 | alx741 | (~alx741@157.100.93.160) |
2022-01-10 14:12:18 +0100 | Vajb | (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi) (Read error: Connection reset by peer) |
2022-01-10 14:12:41 +0100 | Vajb | (~Vajb@2001:999:50:e6be:1e98:9376:d93e:4506) |
2022-01-10 14:13:05 +0100 | Guest17 | (~Guest17@wificampus-097061.grenet.fr) |
2022-01-10 14:13:49 +0100 | cfricke | (~cfricke@user/cfricke) (Ping timeout: 240 seconds) |
2022-01-10 14:14:37 +0100 | alx741 | (~alx741@157.100.93.160) (Read error: Connection reset by peer) |
2022-01-10 14:15:47 +0100 | JimL | (~quassel@89-162-2-132.fiber.signal.no) (Ping timeout: 256 seconds) |
2022-01-10 14:16:34 +0100 | alx741 | (~alx741@157.100.93.160) |
2022-01-10 14:17:25 +0100 | jonathanx_ | (~jonathan@h-178-174-176-109.A357.priv.bahnhof.se) (Ping timeout: 240 seconds) |
2022-01-10 14:17:28 +0100 | jonathanx | (~jonathan@h-178-174-176-109.A357.priv.bahnhof.se) |
2022-01-10 14:17:58 +0100 | slack1256 | (~slack1256@191.125.99.214) |
2022-01-10 14:18:45 +0100 | perrierjouet | (~perrier-j@modemcable012.251-130-66.mc.videotron.ca) (Quit: WeeChat 3.4) |
2022-01-10 14:19:15 +0100 | perrierjouet | (~perrier-j@modemcable012.251-130-66.mc.videotron.ca) |
2022-01-10 14:20:37 +0100 | alx741 | (~alx741@157.100.93.160) (Read error: Connection reset by peer) |
2022-01-10 14:21:07 +0100 | alx741 | (~alx741@157.100.93.160) |
2022-01-10 14:21:59 +0100 | <janus> | does anyone use tzdata? i want to make a game plan to make sure it is updated (maybe taken over) before daylight saving is due |
2022-01-10 14:22:42 +0100 | <janus> | because the trustee guidelines say there must be a waiting period of 6 weeks, and daylight savings is due in ~24 weeks we may as well start planning now |
2022-01-10 14:22:58 +0100 | bitdex | (~bitdex@gateway/tor-sasl/bitdex) (Quit: = "") |
2022-01-10 14:23:34 +0100 | fizbin | (~fizbin@c-73-33-197-160.hsd1.nj.comcast.net) |
2022-01-10 14:25:52 +0100 | <polyphem> | SPJ said in a talk , they released a ghc version wich wen you had a type error would delete your source file , who got hit by that ? |
2022-01-10 14:26:42 +0100 | little_mac | (~little_ma@2601:410:4300:3ce0:254c:b3ad:2ae7:82d7) (Remote host closed the connection) |
2022-01-10 14:28:02 +0100 | <fizbin> | Hey, when doing advent-of-code last month, on one of the days I came up with this: https://paste.tomsmeding.com/DuK1vFhS -- I know I've seen something like it somewhere before, but can't remember the name. Anyone else know the thing I'm thinking of? |
2022-01-10 14:29:17 +0100 | alx741 | (~alx741@157.100.93.160) (Read error: Connection reset by peer) |
2022-01-10 14:29:43 +0100 | max22- | (~maxime@2a01cb0883359800f3dd99e96a376ecf.ipv6.abo.wanadoo.fr) |
2022-01-10 14:30:11 +0100 | <[exa]> | fizbin: looks bifunctorish or arrowish |
2022-01-10 14:30:36 +0100 | lavaman | (~lavaman@98.38.249.169) |
2022-01-10 14:31:53 +0100 | alx741 | (~alx741@157.100.93.160) |
2022-01-10 14:32:01 +0100 | <[exa]> | and the actual type Both might be defined somewhere, perhaps in the vicinity of `Solo` |
2022-01-10 14:32:08 +0100 | <geekosaur> | polyphem, https://gitlab.haskell.org/ghc/ghc/-/issues/163 |
2022-01-10 14:32:26 +0100 | Guest17 | (~Guest17@wificampus-097061.grenet.fr) (Quit: Client closed) |
2022-01-10 14:33:32 +0100 | <polyphem> | geekosaur: hahaha |
2022-01-10 14:34:56 +0100 | <polyphem> | when creating a library , is it idiomatic to start with typeclasses that cork together and have differerent implementations for different backends ? |
2022-01-10 14:35:08 +0100 | <polyphem> | s/cork/work/ |
2022-01-10 14:35:08 +0100 | alx741 | (~alx741@157.100.93.160) (Client Quit) |
2022-01-10 14:35:52 +0100 | MajorBiscuit | (~MajorBisc@c-001-032-008.client.tudelft.eduvpn.nl) |
2022-01-10 14:36:58 +0100 | <fizbin> | [exa], The only pre-existing thing I can find called Both is in the both library, where it's just Maybe with a different Semigroup instance. |
2022-01-10 14:37:20 +0100 | <polyphem> | or does it scare users away if they have to write instances for their type to use that library ? |
2022-01-10 14:39:04 +0100 | burnsidesLlama | (~burnsides@dhcp168-013.wadham.ox.ac.uk) (Remote host closed the connection) |
2022-01-10 14:39:32 +0100 | <[exa]> | fizbin: perhaps https://hackage.haskell.org/package/base-4.16.0.0/docs/Data-Functor-Product.html#t:Product ? |
2022-01-10 14:39:36 +0100 | burnsidesLlama | (~burnsides@dhcp168-013.wadham.ox.ac.uk) |
2022-01-10 14:39:57 +0100 | <[exa]> | (tried an oldschool search for 'pair' :D ) |
2022-01-10 14:42:37 +0100 | <fizbin> | [exa], Yeah, that looks like it. I suspect that before I had seen this as :*: in GHC.Generics or the functor-combinators library. |
2022-01-10 14:42:50 +0100 | <polyphem> | fizbin: i was latly thinking about parallel composition as contrasted to Compose serial functor composition |
2022-01-10 14:44:05 +0100 | <fizbin> | polyphem, you mean like the difference between (&&&) and (>>>) ? |
2022-01-10 14:44:16 +0100 | burnsidesLlama | (~burnsides@dhcp168-013.wadham.ox.ac.uk) (Ping timeout: 256 seconds) |
2022-01-10 14:44:49 +0100 | <polyphem> | yeah , but (&&&) works on functions , or does it work also for functors |
2022-01-10 14:44:55 +0100 | <fizbin> | I mean, in advent-of-code I just used Both for Both Min Max on day 24. |
2022-01-10 14:45:15 +0100 | <fizbin> | polyphem: functions only. It's the wrong kind to work on functors. |
2022-01-10 14:45:59 +0100 | <polyphem> | what about n-ary parallel composition , instead of pairing , like mappending multiple functors parallelly so noth Both but Many |
2022-01-10 14:46:29 +0100 | <polyphem> | i like your Both class |
2022-01-10 14:46:59 +0100 | neverfindme | (~hayden@158.123.160.43) |
2022-01-10 14:47:27 +0100 | <fizbin> | Well, as [exa] found it's just a restatement of Data.Functor.Product.Product |
2022-01-10 14:49:58 +0100 | <geekosaur> | 162 was also some poor soul who discovered it in ghci |
2022-01-10 14:50:47 +0100 | perrierjouet | (~perrier-j@modemcable012.251-130-66.mc.videotron.ca) (Quit: WeeChat 3.4) |
2022-01-10 14:52:46 +0100 | fizbin | (~fizbin@c-73-33-197-160.hsd1.nj.comcast.net) (Ping timeout: 256 seconds) |
2022-01-10 14:54:33 +0100 | <polyphem> | geekosaur: its not funny when it hapens to you, afterall |
2022-01-10 14:55:02 +0100 | coot | (~coot@89-64-85-93.dynamic.chello.pl) (Quit: coot) |
2022-01-10 14:59:12 +0100 | CiaoSen | (~Jura@p200300c957347b002a3a4dfffe84dbd5.dip0.t-ipconnect.de) |
2022-01-10 14:59:16 +0100 | deadmarshal | (~deadmarsh@95.38.231.124) |
2022-01-10 15:00:26 +0100 | neverfindme | (~hayden@158.123.160.43) (Quit: Leaving) |
2022-01-10 15:02:28 +0100 | <Benzi-Junior> | I have a type "Foo b a" and have been asked to provide an instance for "Applicative (Foo b)" and quite frankly I'm at a loss, there is no restriction on the type b |
2022-01-10 15:04:20 +0100 | cfricke | (~cfricke@user/cfricke) |
2022-01-10 15:06:18 +0100 | <geekosaur> | there's no restriction on ExceptT e, either |
2022-01-10 15:08:16 +0100 | slack1256 | (~slack1256@191.125.99.214) (Remote host closed the connection) |
2022-01-10 15:09:29 +0100 | mc47 | (~mc47@xmonad/TheMC47) |
2022-01-10 15:10:08 +0100 | <geekosaur> | start by writing a Functor instance, then write `pure` for it |
2022-01-10 15:10:42 +0100 | matrox | (~bc8147f2@cerf.good1.com) |
2022-01-10 15:10:46 +0100 | <geekosaur> | this should give you enough of a feel for it that you can write <*> |
2022-01-10 15:12:53 +0100 | <hud> | Hi trying to turn a function that takes two arguments and returns some operation into a bytecode stack, I understand from sample-code how to generate bytecode for mathematical ops, but what about defining variables and returning values? https://paste.tomsmeding.com/RNK6Qv6Q |
2022-01-10 15:13:16 +0100 | <Benzi-Junior> | geekosaur, I have the functor instance, and actually <*> as well, the issue I'm having is how to write pure |
2022-01-10 15:14:23 +0100 | notzmv | (~zmv@user/notzmv) |
2022-01-10 15:16:51 +0100 | <polyphem> | installed ghcup and latest ghc , now warp doesnt compile anymore with this error , any suggestions : https://paste.tomsmeding.com/CBI6zmW6 |
2022-01-10 15:18:28 +0100 | azimut | (~azimut@gateway/tor-sasl/azimut) (Remote host closed the connection) |
2022-01-10 15:18:43 +0100 | shapr | (~user@2601:7c0:c202:5190:b29e:1cbf:e21f:c653) |
2022-01-10 15:18:53 +0100 | azimut | (~azimut@gateway/tor-sasl/azimut) |
2022-01-10 15:18:56 +0100 | <jneira[m]> | maybe the package does not support ghc-9.2.1 yet |
2022-01-10 15:19:17 +0100 | <jneira[m]> | did you get to build it with ghc-9.2.1 at some point? |
2022-01-10 15:20:09 +0100 | <geekosaur> | try head.hackage? that looks consistent with the changes in 9.2.1 |
2022-01-10 15:20:20 +0100 | <polyphem> | jneira[m]: yea, but this error is about primitive types , that would affect a lot of packages , right , is there such a big breaking api change |
2022-01-10 15:20:32 +0100 | <geekosaur> | yes, because of Apple |
2022-01-10 15:20:37 +0100 | <polyphem> | geekosaur: how so ? |
2022-01-10 15:20:59 +0100 | <polyphem> | as a version constraint in cabal file ? |
2022-01-10 15:21:00 +0100 | cfricke | (~cfricke@user/cfricke) (Quit: WeeChat 3.3) |
2022-01-10 15:21:09 +0100 | <geekosaur> | ghc used to treat all sized types internally as full CPU words. but the M1 requires all types to be their correct native sizes |
2022-01-10 15:21:10 +0100 | cfricke | (~cfricke@user/cfricke) |
2022-01-10 15:21:15 +0100 | <geekosaur> | in its ABI |
2022-01-10 15:21:38 +0100 | <geekosaur> | so Woord8# is actually 8 bits, and ghc can't get away with tossing around Word#s for them any more |
2022-01-10 15:21:39 +0100 | <Benzi-Junior> | I feel like I'm missing some key insight, there is no way to default on the type "b" but I need to have "pure :: a -> Foo b a" |
2022-01-10 15:21:49 +0100 | <jneira[m]> | the error looks similar to https://github.com/yesodweb/wai/issues/867 |
2022-01-10 15:22:11 +0100 | <jneira[m]> | oops already linked |
2022-01-10 15:22:53 +0100 | xsperry | (~xs@user/xsperry) (Remote host closed the connection) |
2022-01-10 15:23:08 +0100 | <geekosaur> | and yes, it causes a fair amount of breakage, but not as much as you might think because it's transparent if you're not actually operating on MagicHash-ed types |
2022-01-10 15:23:29 +0100 | xsperry | (~xs@user/xsperry) |
2022-01-10 15:23:39 +0100 | <polyphem> | geekosaur: how do i use the head.hackage , what do y you mean by that ? |
2022-01-10 15:23:51 +0100 | <lortabac> | Benzi-Junior: can you share the definition of Foo? |
2022-01-10 15:24:06 +0100 | coot | (~coot@89-64-85-93.dynamic.chello.pl) |
2022-01-10 15:24:07 +0100 | <geekosaur> | http://head.hackage.haskell.org/ |
2022-01-10 15:24:21 +0100 | <geekosaur> | has a snippet for adding the repository to a cabal file |
2022-01-10 15:24:36 +0100 | <geekosaur> | this repo is just patches to hackage packages to support 9.2.1 and HEAD |
2022-01-10 15:24:38 +0100 | <jneira[m]> | yeah only a relative small number of packages deal directly with primitive types (and some of them are boot libs) |
2022-01-10 15:25:14 +0100 | <polyphem> | .cabal or cabal.project ? |
2022-01-10 15:25:27 +0100 | <geekosaur> | I think either |
2022-01-10 15:25:38 +0100 | <polyphem> | geekosaur: will try |
2022-01-10 15:26:26 +0100 | <geekosaur> | Benzi-Junior, there's an obvious way to deal if it's an Either-like type. if it's not, you need to state the problem (I presume this is homework and/or an exercise from the web) in more detail |
2022-01-10 15:29:50 +0100 | wroathe | (~wroathe@206-55-188-8.fttp.usinternet.com) |
2022-01-10 15:29:50 +0100 | wroathe | (~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host) |
2022-01-10 15:29:50 +0100 | wroathe | (~wroathe@user/wroathe) |
2022-01-10 15:31:18 +0100 | `2jt | (~jtomas@10.red-83-58-228.dynamicip.rima-tde.net) |
2022-01-10 15:31:33 +0100 | <geekosaur> | also I think a lot of package maintainers are waiting for 9.2.2 to drop later this month before adding support for it |
2022-01-10 15:31:42 +0100 | <geekosaur> | especially so soon after 9.0.2 |
2022-01-10 15:32:34 +0100 | <geekosaur> | (and even more espeically since that dropped on Christmas so I bet a lot of maintainers didn't even get to look at it until January 3 or so) |
2022-01-10 15:33:35 +0100 | <Benzi-Junior> | geekosaur, "Foo b a" should be a messaging agent that sends and receives messages of type "b" and at the end of communications should return a type "a" |
2022-01-10 15:34:08 +0100 | lavaman | (~lavaman@98.38.249.169) (Ping timeout: 256 seconds) |
2022-01-10 15:34:10 +0100 | jgeerds | (~jgeerds@55d4bbed.access.ecotel.net) |
2022-01-10 15:34:48 +0100 | <polyphem> | warp works now , but now ther is this error https://paste.tomsmeding.com/k5mVUVO8 ; guess if have to stap back from latest and go to 9.0.2 with older base , no problem thanks to ghcup :) |
2022-01-10 15:35:49 +0100 | Inst | (~delicacie@c-98-208-218-119.hsd1.fl.comcast.net) (Ping timeout: 240 seconds) |
2022-01-10 15:36:19 +0100 | shriekingnoise | (~shrieking@186.137.144.80) |
2022-01-10 15:36:24 +0100 | <yushyin> | i guess 8.10.7 is still the recommended ghc for a reason ^^ |
2022-01-10 15:37:50 +0100 | fizbin | (~fizbin@c-73-33-197-160.hsd1.nj.comcast.net) |
2022-01-10 15:38:55 +0100 | <Hecate> | yes it is |
2022-01-10 15:39:06 +0100 | <Hecate> | 9.0 should be more advertised as a dev preview imo |
2022-01-10 15:39:59 +0100 | fjmorazan | (~quassel@user/fjmorazan) (Quit: fjmorazan) |
2022-01-10 15:40:15 +0100 | fjmorazan | (~quassel@user/fjmorazan) |
2022-01-10 15:46:35 +0100 | <jneira[m]> | and 9.2 to live in the bleeding edge 😜 |
2022-01-10 15:46:50 +0100 | tromp | (~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
2022-01-10 15:47:54 +0100 | <geekosaur> | 9.0.2 seems fine. 9.2.1 seems the dev preview |
2022-01-10 15:47:54 +0100 | Vajb | (~Vajb@2001:999:50:e6be:1e98:9376:d93e:4506) (Read error: Connection reset by peer) |
2022-01-10 15:48:22 +0100 | <geekosaur> | (arguably all x.y.1 releases are dev previews, but that's more or less true of every piece of software :) |
2022-01-10 15:52:04 +0100 | epolanski | (uid312403@id-312403.helmsley.irccloud.com) |
2022-01-10 15:54:06 +0100 | Sgeo | (~Sgeo@user/sgeo) |
2022-01-10 15:54:37 +0100 | deadmarshal | (~deadmarsh@95.38.231.124) (Ping timeout: 240 seconds) |
2022-01-10 15:58:50 +0100 | <janus> | the next stackage nightly will have 9.0.2! yaay |
2022-01-10 16:02:06 +0100 | <matrox> | 9.0.2, not 9.2.1? |
2022-01-10 16:03:29 +0100 | <geekosaur> | still too early for 9.2.1 |
2022-01-10 16:03:48 +0100 | <geekosaur> | and it's been stuck on 9.0.1 for a couple months now, waiting for 9.0.2 to drop |
2022-01-10 16:04:30 +0100 | <geekosaur> | hopefully this means we will rapidly progress to having a useful 9.0.2 ecosystem |
2022-01-10 16:04:55 +0100 | xkuru | (~xkuru@user/xkuru) |
2022-01-10 16:05:08 +0100 | <geekosaur> | the earliest 9.2.x I would expect them to support is 9.2.2, scheduled for later this month |
2022-01-10 16:05:30 +0100 | max22- | (~maxime@2a01cb0883359800f3dd99e96a376ecf.ipv6.abo.wanadoo.fr) (Remote host closed the connection) |
2022-01-10 16:05:40 +0100 | jkaye | (~jkaye@2601:281:8300:7530:d171:6c14:e395:f91b) |
2022-01-10 16:05:41 +0100 | <geekosaur> | but various maintainers are moving slowly enough that I thing even 9.0.2 will be pushing things a bit |
2022-01-10 16:05:42 +0100 | max22- | (~maxime@2a01cb0883359800f3dd99e96a376ecf.ipv6.abo.wanadoo.fr) |
2022-01-10 16:05:46 +0100 | <geekosaur> | *think |
2022-01-10 16:06:17 +0100 | wroathe | (~wroathe@user/wroathe) (Ping timeout: 256 seconds) |
2022-01-10 16:07:01 +0100 | <yushyin> | ghc9.2.1 is no fun without hls :/ |
2022-01-10 16:07:58 +0100 | tromp | (~textual@dhcp-077-249-230-040.chello.nl) |
2022-01-10 16:09:07 +0100 | fizbin | (~fizbin@c-73-33-197-160.hsd1.nj.comcast.net) (Ping timeout: 256 seconds) |
2022-01-10 16:11:45 +0100 | jgeerds | (~jgeerds@55d4bbed.access.ecotel.net) (Ping timeout: 250 seconds) |
2022-01-10 16:14:54 +0100 | gehmehgeh | (~user@user/gehmehgeh) (Ping timeout: 276 seconds) |
2022-01-10 16:16:21 +0100 | gehmehgeh | (~user@user/gehmehgeh) |
2022-01-10 16:18:04 +0100 | <jneira[m]> | we are on it 😅 |
2022-01-10 16:24:22 +0100 | burnsidesLlama | (~burnsides@dhcp168-013.wadham.ox.ac.uk) |
2022-01-10 16:26:37 +0100 | razetime | (~quassel@49.207.213.63) (Ping timeout: 240 seconds) |
2022-01-10 16:31:31 +0100 | nhatanh02 | (~satori@123.24.172.30) |
2022-01-10 16:32:12 +0100 | Vajb | (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi) |
2022-01-10 16:35:42 +0100 | fjmorazan | (~quassel@user/fjmorazan) (Quit: fjmorazan) |
2022-01-10 16:36:16 +0100 | zaquest | (~notzaques@5.130.79.72) (Remote host closed the connection) |
2022-01-10 16:36:20 +0100 | fjmorazan | (~quassel@user/fjmorazan) |
2022-01-10 16:40:59 +0100 | wroathe | (~wroathe@206-55-188-8.fttp.usinternet.com) |
2022-01-10 16:40:59 +0100 | wroathe | (~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host) |
2022-01-10 16:40:59 +0100 | wroathe | (~wroathe@user/wroathe) |
2022-01-10 16:46:06 +0100 | wroathe | (~wroathe@user/wroathe) (Ping timeout: 256 seconds) |
2022-01-10 16:49:40 +0100 | ProfSimm | (~ProfSimm@87.227.196.109) |
2022-01-10 16:56:20 +0100 | tromp | (~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
2022-01-10 17:03:42 +0100 | kupi | (uid212005@id-212005.hampstead.irccloud.com) |
2022-01-10 17:04:21 +0100 | tromp | (~textual@dhcp-077-249-230-040.chello.nl) |
2022-01-10 17:04:58 +0100 | wroathe | (~wroathe@206-55-188-8.fttp.usinternet.com) |
2022-01-10 17:04:58 +0100 | wroathe | (~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host) |
2022-01-10 17:04:58 +0100 | wroathe | (~wroathe@user/wroathe) |
2022-01-10 17:09:15 +0100 | jonathanx | (~jonathan@h-178-174-176-109.A357.priv.bahnhof.se) (Remote host closed the connection) |
2022-01-10 17:09:49 +0100 | wroathe | (~wroathe@user/wroathe) (Ping timeout: 240 seconds) |
2022-01-10 17:10:09 +0100 | <polyphem> | geekosaur: stack is discontinued but stackage is still maintained ? |
2022-01-10 17:10:19 +0100 | bontaq | (~user@ool-45779fe5.dyn.optonline.net) |
2022-01-10 17:10:38 +0100 | <geekosaur> | stack is not discontinued, it is community-maintained instead of being an fpco "product" |
2022-01-10 17:10:53 +0100 | <polyphem> | ah ,ok |
2022-01-10 17:14:14 +0100 | jonathanx | (~jonathan@h-178-174-176-109.A357.priv.bahnhof.se) |
2022-01-10 17:17:28 +0100 | tromp | (~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
2022-01-10 17:18:32 +0100 | a6a45081-2b83 | (~aditya@pal-210-106-57.itap.purdue.edu) |
2022-01-10 17:25:59 +0100 | <tomsmeding> | my mind made a little jump at reading "stack is discontinued", half the haskell community would be in a frenzy |
2022-01-10 17:26:29 +0100 | <tomsmeding> | never mind half, the whole haskell community -- the other half would just be gleeful instead of panicking |
2022-01-10 17:27:39 +0100 | _xor | (~xor@dsl-50-5-233-169.fuse.net) (Quit: brb) |
2022-01-10 17:28:00 +0100 | <Taneb> | I'm sure there's a handful of people out there who think "cabal? stack? Why would I need something like that, when there's wget and make" |
2022-01-10 17:29:25 +0100 | tzh | (~tzh@c-24-21-73-154.hsd1.wa.comcast.net) |
2022-01-10 17:29:47 +0100 | coot | (~coot@89-64-85-93.dynamic.chello.pl) (Quit: coot) |
2022-01-10 17:29:53 +0100 | eggplantade | (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) |
2022-01-10 17:30:01 +0100 | lortabac | (~lortabac@2a01:e0a:541:b8f0:c274:f734:3361:cf1c) (Quit: WeeChat 2.8) |
2022-01-10 17:31:31 +0100 | zaquest | (~notzaques@5.130.79.72) |
2022-01-10 17:32:44 +0100 | DNH | (~DNH@2a02:8108:1100:16d8:80ee:56b1:c7cc:d16d) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
2022-01-10 17:33:07 +0100 | Inst | (~delicacie@c-98-208-218-119.hsd1.fl.comcast.net) |
2022-01-10 17:33:56 +0100 | tromp | (~textual@dhcp-077-249-230-040.chello.nl) |
2022-01-10 17:36:31 +0100 | jonathanx | (~jonathan@h-178-174-176-109.A357.priv.bahnhof.se) (Quit: Leaving) |
2022-01-10 17:40:30 +0100 | <tomsmeding> | I mean, I made do with just make (without wget) for AOC, but that's hardly a production codebase |
2022-01-10 17:40:31 +0100 | Everything | (~Everythin@37.115.210.35) |
2022-01-10 17:40:49 +0100 | <polyphem> | tomsmeding: sorry for the shocks |
2022-01-10 17:43:56 +0100 | <mjrosenb> | I've yet to understand stack, and in general hate the idea of languages having their own package managers, so am 100% fine with this. |
2022-01-10 17:45:03 +0100 | <geekosaur> | even C sort-of has one these days (pkgconfig) |
2022-01-10 17:45:32 +0100 | <geekosaur> | libraries get ever more complex and just chucking a -lfoo on the end of a link command increasingly doesn't work |
2022-01-10 17:45:44 +0100 | CiaoSen | (~Jura@p200300c957347b002a3a4dfffe84dbd5.dip0.t-ipconnect.de) (Ping timeout: 252 seconds) |
2022-01-10 17:48:50 +0100 | <dolio> | Stack and cabal aren't package managers. |
2022-01-10 17:49:08 +0100 | <mjrosenb> | pkgconfig is just a database that your one true package manager should be calling to update, like ghc-pkg |
2022-01-10 17:49:55 +0100 | motherfsck | (~motherfsc@user/motherfsck) (Quit: quit) |
2022-01-10 17:51:48 +0100 | motherfsck | (~motherfsc@user/motherfsck) |
2022-01-10 17:54:00 +0100 | <mjrosenb> | dolio: it may not be a package manager, but I'm pretty sure a package manager should be able to do everything that stack does, so whether it is or it sin't becomes a moot point. |
2022-01-10 17:55:53 +0100 | <geekosaur> | package managers should be able to do more than stack or cabal do |
2022-01-10 17:56:01 +0100 | <geekosaur> | try removing a package with either |
2022-01-10 17:56:11 +0100 | <geekosaur> | they're build managers |
2022-01-10 17:56:30 +0100 | a6a45081-2b83 | (~aditya@pal-210-106-57.itap.purdue.edu) (Remote host closed the connection) |
2022-01-10 17:56:53 +0100 | <dolio> | Well, that seems like an odd expectation to me. Package managers are built as infrastructure for (un)installing pre-built software for users. They're not build tools for programmers. |
2022-01-10 17:57:30 +0100 | <janus> | can you remove a nix package? you just remove your dependency on it. with cabal it works the same way, no? so if cabal isn't a package manager, isn't nix one either? |
2022-01-10 17:58:19 +0100 | <geekosaur> | many people use nix as a build manager instead of a package manager, yes. one could even argue that nixos is taking the path of abusing a build manager as a package manager\ |
2022-01-10 17:58:34 +0100 | <geekosaur> | how often do you have to "gc" your package manager? |
2022-01-10 17:58:37 +0100 | slowButPresent | (~slowButPr@user/slowbutpresent) |
2022-01-10 17:59:03 +0100 | <mjrosenb> | dunno, apt tells me there are lots of pacakges that it can uninstall pretty frequently. |
2022-01-10 17:59:45 +0100 | <mjrosenb> | there's even a flag that collects garbage, but they call it 'autoremove' or some such. |
2022-01-10 17:59:46 +0100 | timCF | (~timCF@m91-129-100-224.cust.tele2.ee) |
2022-01-10 18:00:39 +0100 | <mjrosenb> | but in order to be able to build C programs, you normally need the -dev version of a library to be installed via apt |
2022-01-10 18:00:56 +0100 | <mjrosenb> | or in gentoo, you just need the library present in order to get the necessary header files. |
2022-01-10 18:02:04 +0100 | little_mac | (~little_ma@2601:410:4300:3ce0:90ce:993d:d223:5eab) |
2022-01-10 18:03:32 +0100 | <janus> | another gc for dpkg is called deborphan. there is also debfoster which is semi-automatic, asks you for every 'root' whether the whole tree can be uninstalled or pruned |
2022-01-10 18:04:10 +0100 | <mjrosenb> | portage also has a GC built in, and recommends that you run it semi-frequently. |
2022-01-10 18:04:27 +0100 | coot | (~coot@89-64-85-93.dynamic.chello.pl) |
2022-01-10 18:04:29 +0100 | <janus> | i run deborphan typically after each OS version upgrade since you'll have libraries laying around that autoremove somehow didn't pick up on |
2022-01-10 18:04:36 +0100 | k`` | (~user@152.1.137.158) |
2022-01-10 18:05:46 +0100 | alMalsamo | (~alMalsamo@gateway/tor-sasl/almalsamo) |
2022-01-10 18:06:52 +0100 | <sclv> | i think if cabal-install ever gets the proper gc feature that mirrors that in nix, tracking roots, etc, then it'll be fair to call it a package manager |
2022-01-10 18:06:59 +0100 | <sclv> | until then its a build system, which is fine |
2022-01-10 18:07:01 +0100 | eggplantade | (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection) |
2022-01-10 18:07:04 +0100 | <sclv> | that's what developers need :-P |
2022-01-10 18:08:05 +0100 | <k``> | Is there a way to dispatch on whether there's an in-scope constraint? Like `case ifConstraint (Proxy (Show a)) of{ True -> show ; False -> \_-> "unshowable" }` ? |
2022-01-10 18:08:13 +0100 | eggplantade | (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) |
2022-01-10 18:08:56 +0100 | <geekosaur> | there are ways but they're ugly and not something you should rely upon |
2022-01-10 18:09:00 +0100 | <k``> | or like `case maybeContext (Proxy (Show a)) of { Just Dict -> show ; Nothing -> "unshowable" }` ? |
2022-01-10 18:10:17 +0100 | <k``> | That's a shame. |
2022-01-10 18:10:57 +0100 | kuribas | (~user@ip-188-118-57-242.reverse.destiny.be) (Quit: ERC (IRC client for Emacs 26.3)) |
2022-01-10 18:11:38 +0100 | <k``> | I understand that you can't get proof that you don't have an instance globally, but it would be nice to determine whether there's one in scope |
2022-01-10 18:11:55 +0100 | <mjrosenb> | would `class MaybeShow a where mshow :: Maybe (a -> String); instance Show a => MaybeShow where mshow = Just show; instance MaybeShow a where mshow = Nothing` work |
2022-01-10 18:12:03 +0100 | <mjrosenb> | with some level of undecidable instances? |
2022-01-10 18:12:23 +0100 | <mjrosenb> | like it would be perfectly reasonable for ghc to always choose the Nothing instance, but *shrug* |
2022-01-10 18:12:32 +0100 | whatsupdoc | (uid509081@id-509081.hampstead.irccloud.com) |
2022-01-10 18:12:40 +0100 | <k``> | mjrosenb: When I've tried to create instances like that, GHC has complained that they are not just overlapping but identical, and refused to allow them. |
2022-01-10 18:12:49 +0100 | <mjrosenb> | hah. |
2022-01-10 18:13:00 +0100 | <k``> | Which, fair enough. |
2022-01-10 18:13:02 +0100 | <geekosaur> | right, constraints don't take part in instance selection |
2022-01-10 18:13:10 +0100 | <mjrosenb> | makes sense, since they're both more or less global. |
2022-01-10 18:14:17 +0100 | timCF | (~timCF@m91-129-100-224.cust.tele2.ee) (Quit: leaving) |
2022-01-10 18:16:46 +0100 | <geekosaur> | https://hackage.haskell.org/package/ifcxt |
2022-01-10 18:17:09 +0100 | <geekosaur> | whether it works with recent ghc is a question, since this seems like it's skating on very thin ice |
2022-01-10 18:17:28 +0100 | <polyphem> | do you have to Data.Typable.cast to a concrete type or can you cast to an constrained polymorphic type ? |
2022-01-10 18:17:34 +0100 | <k``> | Yeah, from the one issue it seems abandoned. |
2022-01-10 18:18:08 +0100 | <geekosaur> | I thought there was anothjer one but I can't find it :( |
2022-01-10 18:18:50 +0100 | <mjrosenb> | https://i.imgur.com/9f8x6MF.mp4 |
2022-01-10 18:19:29 +0100 | <geekosaur> | polyphem, pretty sure Typeable only does concrete types |
2022-01-10 18:19:50 +0100 | <geekosaur> | but these days it is based on something that can do indexed types, I think? |
2022-01-10 18:20:16 +0100 | <polyphem> | latest ghc has support for impredicativity , does that change somthing |
2022-01-10 18:20:51 +0100 | <geekosaur> | https://downloads.haskell.org/ghc/latest/docs/html/libraries/base-4.16.0.0/Type-Reflection.html |
2022-01-10 18:21:51 +0100 | <geekosaur> | no, impredicativity doesn't change anything, Typeable is just too simple to handle anything but concrete types. see the module I just pointed to for the indexed version, it might do what you want |
2022-01-10 18:23:53 +0100 | deadmarshal | (~deadmarsh@95.38.231.124) |
2022-01-10 18:25:57 +0100 | little_mac | (~little_ma@2601:410:4300:3ce0:90ce:993d:d223:5eab) (Remote host closed the connection) |
2022-01-10 18:26:52 +0100 | little_mac | (~little_ma@2601:410:4300:3ce0:5507:3283:c612:c744) |
2022-01-10 18:27:25 +0100 | pgib | (~textual@173.38.117.74) |
2022-01-10 18:29:57 +0100 | sander | (~sander@user/sander) (Ping timeout: 240 seconds) |
2022-01-10 18:31:22 +0100 | [itchyjunk] | (~itchyjunk@user/itchyjunk/x-7353470) |
2022-01-10 18:32:15 +0100 | sander | (~sander@user/sander) |
2022-01-10 18:35:33 +0100 | husixu | (~husixu@137.132.119.2) |
2022-01-10 18:40:17 +0100 | kaph | (~kaph@net-2-38-107-19.cust.vodafonedsl.it) |
2022-01-10 18:42:31 +0100 | ProfSimm | (~ProfSimm@87.227.196.109) (Remote host closed the connection) |
2022-01-10 18:44:56 +0100 | <k``> | It is possible to do something like `foo :: proxy c -> Maybe (Dict c) ; foo = Nothing ; {-# RULES "c" forall (p :: c => proxy c). foo p = Just Dict #-}` -- but as far as I can tell, the rule never fires... |
2022-01-10 18:44:57 +0100 | xb0o2 | (~xb0o2@user/xb0o2) (Quit: Client closed) |
2022-01-10 18:46:20 +0100 | chele | (~chele@user/chele) (Remote host closed the connection) |
2022-01-10 18:48:56 +0100 | <[itchyjunk]> | Are list comprehensions always a syntactic sugar for some other thing? |
2022-01-10 18:49:31 +0100 | mbuf | (~Shakthi@182.77.103.82) (Quit: Leaving) |
2022-01-10 18:50:34 +0100 | <geekosaur> | yes |
2022-01-10 18:50:36 +0100 | <[exa]> | [itchyjunk]: they can be translated to list monads and `guard` and AFAIK there's even extension to allow the same for anything that allows these two |
2022-01-10 18:51:02 +0100 | <tomsmeding> | % :set -XMonadComprehensions |
2022-01-10 18:51:02 +0100 | <yahb> | tomsmeding: |
2022-01-10 18:51:07 +0100 | <[itchyjunk]> | ah |
2022-01-10 18:51:09 +0100 | <geekosaur> | they also can be translated to map and filter, although I think modern ghc always uses the list (or other) monad |
2022-01-10 18:51:40 +0100 | <geekosaur> | @undo [ f x | x <- xs, bar x ] |
2022-01-10 18:51:40 +0100 | <lambdabot> | concatMap (\ x -> if bar x then [f x] else []) xs |
2022-01-10 18:51:40 +0100 | <tomsmeding> | running `ghc -ddump-simpl` without optimisations on a file containing a list comprehension just gives me a plain-old recursive function |
2022-01-10 18:52:11 +0100 | <tomsmeding> | so I guess you could say they just desugar to a normal recursive implementation? |
2022-01-10 18:52:45 +0100 | <[itchyjunk]> | I think there is a very minor error here : https://wiki.haskell.org/List_comprehension |
2022-01-10 18:52:49 +0100 | <[itchyjunk]> | "In the #haskell channel, or in a private message, say @undo and then your list comprehension, it will should you how it expands:" |
2022-01-10 18:53:00 +0100 | <[itchyjunk]> | it will show you or it should show you, right? |
2022-01-10 18:53:14 +0100 | <geekosaur> | I did that just above |
2022-01-10 18:53:33 +0100 | <tomsmeding> | it will should be incorrect English indeed |
2022-01-10 18:53:43 +0100 | _xor | (~xor@dsl-50-5-233-169.fuse.net) |
2022-01-10 18:53:43 +0100 | <bjs> | I recall from my old supervisor hearing of discussions early on about making comprehensions be generic over Monad |
2022-01-10 18:53:45 +0100 | <geekosaur> | will show, I think |
2022-01-10 18:54:01 +0100 | <[itchyjunk]> | so s/should/show/ |
2022-01-10 18:54:13 +0100 | Erutuon | (~Erutuon@user/erutuon) |
2022-01-10 18:54:45 +0100 | <tomsmeding> | % [x | x <- Just 42, y <- Nothing] |
2022-01-10 18:54:45 +0100 | <yahb> | tomsmeding: Nothing |
2022-01-10 18:54:49 +0100 | <tomsmeding> | % [x | x <- Just 42] |
2022-01-10 18:54:49 +0100 | <yahb> | tomsmeding: Just 42 |
2022-01-10 18:54:56 +0100 | <[itchyjunk]> | Needs verified account so some of you should fix it? :x |
2022-01-10 18:56:13 +0100 | tromp | (~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
2022-01-10 18:56:14 +0100 | <geekosaur> | done |
2022-01-10 18:56:26 +0100 | Midjak | (~Midjak@may53-1-78-226-116-92.fbx.proxad.net) (Ping timeout: 256 seconds) |
2022-01-10 18:56:41 +0100 | <[itchyjunk]> | \o/ |
2022-01-10 18:59:27 +0100 | benin | (~benin@183.82.176.241) |
2022-01-10 19:00:25 +0100 | Midjak | (~Midjak@may53-1-78-226-116-92.fbx.proxad.net) |
2022-01-10 19:00:37 +0100 | infinity0 | (~infinity0@occupy.ecodis.net) (Ping timeout: 240 seconds) |
2022-01-10 19:00:42 +0100 | infinity0_ | (~infinity0@occupy.ecodis.net) |
2022-01-10 19:00:45 +0100 | DNH | (~DNH@2a02:8108:1100:16d8:80ee:56b1:c7cc:d16d) |
2022-01-10 19:00:46 +0100 | infinity0_ | infinity0 |
2022-01-10 19:01:32 +0100 | raoul | (~raoul@95.179.203.88) (Ping timeout: 240 seconds) |
2022-01-10 19:02:22 +0100 | Jing | (~hedgehog@240e:390:7c53:a7e1:ede2:45ee:21e7:7941) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
2022-01-10 19:02:39 +0100 | max22- | (~maxime@2a01cb0883359800f3dd99e96a376ecf.ipv6.abo.wanadoo.fr) (Remote host closed the connection) |
2022-01-10 19:03:33 +0100 | max22- | (~maxime@lfbn-ren-1-1026-62.w92-139.abo.wanadoo.fr) |
2022-01-10 19:05:57 +0100 | cfricke | (~cfricke@user/cfricke) (Quit: WeeChat 3.3) |
2022-01-10 19:06:56 +0100 | mbuf | (~Shakthi@182.77.103.82) |
2022-01-10 19:08:14 +0100 | xff0x | (~xff0x@2001:1a81:5310:700:f0a4:a961:9964:1b51) (Ping timeout: 252 seconds) |
2022-01-10 19:10:19 +0100 | <[itchyjunk]> | So it says some consider list comphrension unnecessary now because of "list monad" and it gives examples |
2022-01-10 19:10:29 +0100 | <[itchyjunk]> | but what part of that code is the "list monad" ? |
2022-01-10 19:10:46 +0100 | <[itchyjunk]> | Example : do c <- s return (toUpper c) |
2022-01-10 19:10:50 +0100 | mvk | (~mvk@2607:fea8:5cdd:f000::55f8) |
2022-01-10 19:10:52 +0100 | <[itchyjunk]> | the whole thing is a monad? |
2022-01-10 19:11:22 +0100 | <[itchyjunk]> | https://wiki.haskell.org/List_comprehension#List_monad |
2022-01-10 19:11:26 +0100 | <[itchyjunk]> | first example there |
2022-01-10 19:13:29 +0100 | kupi | (uid212005@id-212005.hampstead.irccloud.com) (Quit: Connection closed for inactivity) |
2022-01-10 19:13:58 +0100 | <polyphem> | [] a is a monad ; the effect is nondeterminism; |
2022-01-10 19:14:21 +0100 | <[itchyjunk]> | hmmmmm |
2022-01-10 19:14:22 +0100 | vysn | (~vysn@user/vysn) |
2022-01-10 19:15:29 +0100 | <polyphem> | do c::Char <- s::[Char] ; return (toUpper c) == map toUpper s |
2022-01-10 19:16:20 +0100 | <polyphem> | for each c in s do an operation on c and assamble a list of all transformed cs |
2022-01-10 19:17:48 +0100 | <polyphem> | [c' | c <- s , let c' = toUpper c] |
2022-01-10 19:18:16 +0100 | albet70 | (~xxx@2400:8902::f03c:92ff:fe60:98d8) (Read error: Connection reset by peer) |
2022-01-10 19:19:48 +0100 | <polyphem> | you perform operations on a single element and the (nondeterminism effective) list monad gives you all possible solutions for all combinations |
2022-01-10 19:21:21 +0100 | <polyphem> | > let go = do x <- [1..5] ; y <- [6..10] ; return (x,y) in go |
2022-01-10 19:21:22 +0100 | <lambdabot> | [(1,6),(1,7),(1,8),(1,9),(1,10),(2,6),(2,7),(2,8),(2,9),(2,10),(3,6),(3,7),(... |
2022-01-10 19:21:25 +0100 | CiaoSen | (~Jura@p200300c957347b002a3a4dfffe84dbd5.dip0.t-ipconnect.de) |
2022-01-10 19:21:28 +0100 | johnw | (~johnw@2607:f6f0:3004:1:c8b4:50ff:fef8:6bf0) (Quit: ZNC - http://znc.in) |
2022-01-10 19:21:29 +0100 | <[itchyjunk]> | So monads map one type to another type |
2022-01-10 19:21:49 +0100 | <[itchyjunk]> | and whenever you do such things, you have to list all possible resulting types? |
2022-01-10 19:22:07 +0100 | <polyphem> | you lift a type in a monad (context/effectfull computation) |
2022-01-10 19:22:28 +0100 | zincy | (~zincy@2a00:23c8:970c:4801:8d43:554e:d62c:915d) |
2022-01-10 19:22:44 +0100 | <polyphem> | list monad -> nondeterminism ==> a "lifted to" [a] |
2022-01-10 19:22:55 +0100 | <[itchyjunk]> | in that go example, we go from type Int to type (Int,Int) ? |
2022-01-10 19:23:13 +0100 | <polyphem> | maybe monad -> failure ==> a "lifted to" Maybe a |
2022-01-10 19:23:15 +0100 | <polyphem> | ... |
2022-01-10 19:23:21 +0100 | <k``> | Int to [Int]. |
2022-01-10 19:23:36 +0100 | <[itchyjunk]> | ahh "lift", this is category theory lingo? |
2022-01-10 19:23:47 +0100 | <xerox> | gym rat lingo |
2022-01-10 19:23:48 +0100 | <polyphem> | go :: [(Int,Int)] |
2022-01-10 19:23:51 +0100 | MajorBiscuit | (~MajorBisc@c-001-032-008.client.tudelft.eduvpn.nl) (Quit: WeeChat 3.3) |
2022-01-10 19:24:05 +0100 | <[itchyjunk]> | Hmm, why is it Int to [Int] and not Int to [(Int,Int)] ? |
2022-01-10 19:24:24 +0100 | albet70 | (~xxx@2400:8902::f03c:92ff:fe60:98d8) |
2022-01-10 19:24:53 +0100 | <polyphem> | [itchyjunk]: map for example "lifts" a function a -> b to a context [a] -> [b] |
2022-01-10 19:25:19 +0100 | <polyphem> | go ist just [(Int,Int)] |
2022-01-10 19:25:29 +0100 | <[itchyjunk]> | oh i think i kinda understand that last example |
2022-01-10 19:25:29 +0100 | <polyphem> | go doesnt take a parameter |
2022-01-10 19:25:49 +0100 | <[itchyjunk]> | you have a `a -> b` but after application of map, we have a `[a] -> [b]` |
2022-01-10 19:25:55 +0100 | <[itchyjunk]> | so map is some type of a monad |
2022-01-10 19:26:10 +0100 | <polyphem> | fmap in general "lifts" a function a->b to a functorial context f like f a -> f b |
2022-01-10 19:26:19 +0100 | <EvanR> | hey, [itchyjunk] have you heard of Functors |
2022-01-10 19:26:35 +0100 | <[itchyjunk]> | I've heard of them but nothing more, they are maps between categories right? |
2022-01-10 19:26:36 +0100 | <polyphem> | it transforms te function to work in a enriched setting |
2022-01-10 19:26:38 +0100 | <EvanR> | like, list is a functor, Maybe is a functor |
2022-01-10 19:26:53 +0100 | <geekosaur> | don't worry about categories for now |
2022-01-10 19:28:02 +0100 | <EvanR> | probably better to sort out the ontological status of how a type (constructor) can be a Functor, before moving to monads |
2022-01-10 19:28:35 +0100 | <EvanR> | for reasons |
2022-01-10 19:28:54 +0100 | <[itchyjunk]> | Hmm, and to understand how type constructors can be Functors, i need to understand why there are categories in a programming language :s |
2022-01-10 19:29:00 +0100 | <EvanR> | no not really |
2022-01-10 19:29:05 +0100 | <[itchyjunk]> | I can imagine all the possible types forming a category |
2022-01-10 19:29:07 +0100 | <EvanR> | in haskell Functor has a more limited scope |
2022-01-10 19:29:13 +0100 | <[itchyjunk]> | oh i see |
2022-01-10 19:29:26 +0100 | <monochrom> | I happen to be not convinced that you should care about the "list monad" part now. |
2022-01-10 19:29:28 +0100 | <polyphem> | a haskell functor is a type that has a type variable, eg. [a] (List of a) and it exists a way to modifay the inner type via fmap , eg. for list: map toUpper ['h','i'] === "HI" |
2022-01-10 19:29:28 +0100 | <k``> | I may be wrong about this, but I think when folks talk about 'lifting' they usually mean types. So when you apply `[]` to `Int` you get `[Int]` -- you've 'lifted' `Int` into `[]` (which is a Monad). |
2022-01-10 19:29:49 +0100 | <[itchyjunk]> | lol haskell wiki defines it as |
2022-01-10 19:29:50 +0100 | <[itchyjunk]> | "The Functor typeclass represents the mathematical functor: a mapping between categories in the context of category theory." |
2022-01-10 19:30:00 +0100 | <geekosaur> | there is only one category here, so all Functors are endofunctors on that category. which is why I said don't worry about categories for now |
2022-01-10 19:30:04 +0100 | <EvanR> | at the same time you lift your type using F, you lift functions with fmap |
2022-01-10 19:30:05 +0100 | <monochrom> | And list comprehension is hear to stay. You are not learning an obsolete construct if you learn list comprehension. |
2022-01-10 19:30:11 +0100 | <monochrom> | s/hear/here/ |
2022-01-10 19:30:12 +0100 | <[itchyjunk]> | geekosaur, ah okay |
2022-01-10 19:30:27 +0100 | <geekosaur> | (the category is Hask, the category of Haskell types ignoring bottoms) |
2022-01-10 19:30:40 +0100 | <[itchyjunk]> | well, i am looking at random list comprehension articles and they all bring up list monad :x |
2022-01-10 19:30:40 +0100 | econo | (uid147250@user/econo) |
2022-01-10 19:30:54 +0100 | <geekosaur> | right, but Monad is just as limited as Functor is |
2022-01-10 19:31:12 +0100 | <monochrom> | So this is the difference between educational material and everything else. |
2022-01-10 19:31:23 +0100 | <k``> | #HaskIsn'tACategory |
2022-01-10 19:31:23 +0100 | <geekosaur> | the concept is from CT, but you can ignore that for all practical purposes. it's just a convenient pattern |
2022-01-10 19:31:25 +0100 | lavaman | (~lavaman@98.38.249.169) |
2022-01-10 19:31:31 +0100 | <monochrom> | Educational material does not sidetrack you. |
2022-01-10 19:31:53 +0100 | <monochrom> | Encyclopedic material and blogs are all about sidetracking. |
2022-01-10 19:32:04 +0100 | <[itchyjunk]> | lifting reminds me of yoenda theorem or somesuch that i can't remember anymore |
2022-01-10 19:32:24 +0100 | <EvanR> | really? I barely understand, mainly don't understand yoneda xD |
2022-01-10 19:32:48 +0100 | <monochrom> | Clearly, the web is full of the non-educational kind. The "clearly" can be seen once you consider the incentives for why people write and post on the Internet. |
2022-01-10 19:32:50 +0100 | little_mac | (~little_ma@2601:410:4300:3ce0:5507:3283:c612:c744) (Remote host closed the connection) |
2022-01-10 19:32:56 +0100 | <[itchyjunk]> | monochrom, oh so learning list comprehension is good. got it. the "some think its irrelevent and can be replaced" part made me question it all |
2022-01-10 19:33:05 +0100 | <[itchyjunk]> | EvanR, well we had to learn that theorem in algebra |
2022-01-10 19:33:21 +0100 | <EvanR> | dang... your algebra class beats mine |
2022-01-10 19:33:22 +0100 | little_mac | (~little_ma@2601:410:4300:3ce0:5507:3283:c612:c744) |
2022-01-10 19:34:06 +0100 | bitmapper | (uid464869@id-464869.lymington.irccloud.com) (Quit: Connection closed for inactivity) |
2022-01-10 19:34:21 +0100 | <[itchyjunk]> | I think you could figure out all mappings between rings by knowing some limited information or somesuch.. man i can't remember anything |
2022-01-10 19:34:44 +0100 | little_mac | (~little_ma@2601:410:4300:3ce0:5507:3283:c612:c744) (Remote host closed the connection) |
2022-01-10 19:34:45 +0100 | <geekosaur> | [itchyjunk], in the end I'd say list comprehensions are convenient, so there's no reason for them to go away |
2022-01-10 19:34:55 +0100 | <geekosaur> | half of Haskell is such conveniences |
2022-01-10 19:35:15 +0100 | <EvanR> | my score on advent of code would have been much worse without them |
2022-01-10 19:35:16 +0100 | <[itchyjunk]> | true, the set builder notation is what made me think of haskell being cool at some point |
2022-01-10 19:35:20 +0100 | <shapr> | has anyone used the morpheus graphql library with the github API? |
2022-01-10 19:35:23 +0100 | <geekosaur> | you could write something very close to what ghc calls Core, it'd just be fairly annoying. |
2022-01-10 19:35:34 +0100 | little_mac | (~little_ma@2601:410:4300:3ce0:5835:5767:1aa7:b5ec) |
2022-01-10 19:35:49 +0100 | lavaman | (~lavaman@98.38.249.169) (Ping timeout: 240 seconds) |
2022-01-10 19:36:03 +0100 | <[itchyjunk]> | yeah i saw the syntax for core.. i should really learn to read the notation for simply typed lambda calculus. last time i tried, i failed |
2022-01-10 19:36:16 +0100 | <[itchyjunk]> | https://aosabook.org/en/ghc.html#s:core |
2022-01-10 19:36:28 +0100 | <[itchyjunk]> | looks like hieroglyph to me |
2022-01-10 19:37:04 +0100 | <geekosaur> | it's not as bad as it seems, mostly it's all the compiler-generated symbols that make it look like Greek |
2022-01-10 19:37:16 +0100 | mbuf | (~Shakthi@182.77.103.82) (Quit: Leaving) |
2022-01-10 19:37:16 +0100 | <monochrom> | I don't have data, but if you collected data, you would find that no production code actually uses the list monad way where list comprehension could be used. |
2022-01-10 19:37:52 +0100 | <monochrom> | Perhaps I should go ahead and delete that false sentence on the haskell wiki. |
2022-01-10 19:38:12 +0100 | jakalx | (~jakalx@base.jakalx.net) (Error from remote client) |
2022-01-10 19:38:12 +0100 | <geekosaur> | go for it |
2022-01-10 19:38:29 +0100 | <k``> | Core's prefix use of operators always gives me pause. |
2022-01-10 19:38:45 +0100 | <[itchyjunk]> | well the statement says some people think that :P |
2022-01-10 19:38:59 +0100 | <[itchyjunk]> | guess the "some people" is more rare than i though |
2022-01-10 19:39:06 +0100 | <monochrom> | It probably was true like 20 years ago. |
2022-01-10 19:39:29 +0100 | <[itchyjunk]> | Oh, the use of list comprehension grew rather than shrunk? |
2022-01-10 19:39:34 +0100 | <EvanR> | back when IO was implemented as two sticks rubbing together |
2022-01-10 19:39:36 +0100 | <geekosaur> | 20 years ago they thought Num was a good idea. they tought Monad not having Functor as a superclass was a good idea |
2022-01-10 19:40:05 +0100 | <monochrom> | I can't say it grew. But it is the alternative that died. |
2022-01-10 19:40:10 +0100 | <k``> | Firsh it shrunk, then it grew. |
2022-01-10 19:40:16 +0100 | <k``> | *first |
2022-01-10 19:41:21 +0100 | <k``> | Since we have MonadComprehensions again? |
2022-01-10 19:41:44 +0100 | <int-e> | EvanR: [Reply] -> [Request] is rubbing two sticks together? |
2022-01-10 19:41:49 +0100 | <monochrom> | I think people don't use MonadComprehension that much either. |
2022-01-10 19:42:00 +0100 | <EvanR> | yeah |
2022-01-10 19:42:14 +0100 | <polyphem> | syntax got even extended some years ago , not ?, by groupings and such |
2022-01-10 19:42:48 +0100 | xff0x | (~xff0x@2001:1a81:5310:700:f0a4:a961:9964:1b51) |
2022-01-10 19:42:55 +0100 | <int-e> | I don't even use the parallel list comprehension thing, much less the weird sql-like stuff. |
2022-01-10 19:43:22 +0100 | <int-e> | and I merrily mix list comprehensions and do notation when working with list |
2022-01-10 19:43:37 +0100 | pgib | (~textual@173.38.117.74) (Ping timeout: 240 seconds) |
2022-01-10 19:43:39 +0100 | waleee | (~waleee@2001:9b0:21d:fc00:398f:b003:b90d:acf4) |
2022-01-10 19:43:50 +0100 | <int-e> | (do notation looks nicer when it's several lines... oh and having the end result, you know, at the end, is a benefit too) |
2022-01-10 19:44:52 +0100 | pgib | (~textual@173.38.117.77) |
2022-01-10 19:46:28 +0100 | <polyphem> | int-e: comprehensions have a rather declarative feel as contrasted bey do's imperative feel , not ? |
2022-01-10 19:46:37 +0100 | vysn | (~vysn@user/vysn) (Ping timeout: 240 seconds) |
2022-01-10 19:46:49 +0100 | jakalx | (~jakalx@base.jakalx.net) |
2022-01-10 19:46:52 +0100 | <polyphem> | *by* |
2022-01-10 19:47:07 +0100 | <int-e> | polyphem: there is that, yeah |
2022-01-10 19:47:24 +0100 | <[itchyjunk]> | I was told "imperative" language is when you tell a language what to do and so haskell is "declarative". now we have a literal "do" :D |
2022-01-10 19:47:49 +0100 | xff0x | (~xff0x@2001:1a81:5310:700:f0a4:a961:9964:1b51) (Ping timeout: 240 seconds) |
2022-01-10 19:48:03 +0100 | <EvanR> | we also have don't |
2022-01-10 19:48:05 +0100 | motherfsck | (~motherfsc@user/motherfsck) (Quit: quit) |
2022-01-10 19:48:20 +0100 | <EvanR> | so that's about as anti-imperative as possible |
2022-01-10 19:48:26 +0100 | motherfsck | (~motherfsc@user/motherfsck) |
2022-01-10 19:49:00 +0100 | xff0x | (~xff0x@2001:1a81:5310:700:c5b4:7757:92cc:e34) |
2022-01-10 19:49:06 +0100 | <monochrom> | Haskell is somewhat declarative but not very. |
2022-01-10 19:49:19 +0100 | <polyphem> | haskell is the best imprative language thanks to do notation |
2022-01-10 19:49:48 +0100 | <EvanR> | haskell should decline that award |
2022-01-10 19:50:02 +0100 | <polyphem> | EvanR: hehe |
2022-01-10 19:50:21 +0100 | <int-e> | Ah are we making bold declarations now? |
2022-01-10 19:50:31 +0100 | tromp | (~textual@dhcp-077-249-230-040.chello.nl) |
2022-01-10 19:50:56 +0100 | <monochrom> | Declarative is when you just say "in this graph find a node that stores an odd number" and you don't even say whether it's BFS or DFS. |
2022-01-10 19:51:52 +0100 | epolanski | (uid312403@id-312403.helmsley.irccloud.com) (Quit: Connection closed for inactivity) |
2022-01-10 19:51:53 +0100 | <EvanR> | sqrt x = the (\y -> y * y == x) |
2022-01-10 19:52:00 +0100 | <monochrom> | Yeah, like that. |
2022-01-10 19:52:29 +0100 | <monochrom> | To be fair, Haskell is a bit closer to that than most languages. |
2022-01-10 19:52:42 +0100 | <dolio> | So you need to move to abstract stone duality. |
2022-01-10 19:52:49 +0100 | <[itchyjunk]> | Oh, i thought declarative was when you say this is a graph and this has a node that stores an odd number |
2022-01-10 19:52:54 +0100 | <[itchyjunk]> | Like you declare things to be so |
2022-01-10 19:53:11 +0100 | <ephemient> | https://hackage.haskell.org/package/acme-dont |
2022-01-10 19:53:35 +0100 | <int-e> | . o O ( PLEASE DONT MENTION INTERCAL ) |
2022-01-10 19:53:56 +0100 | <polyphem> | [itchyjunk]: a list comprehension declares what the list is , wheras in de list monad yout tell how to construct the list |
2022-01-10 19:54:24 +0100 | <[itchyjunk]> | hmm |
2022-01-10 19:56:05 +0100 | <int-e> | polyphem: but if it were properly declaritive, the order of the items (constraints) in the list comprehension wouldn't matter... |
2022-01-10 19:56:09 +0100 | <ephemient> | https://ghc.gitlab.haskell.org/ghc/doc/users_guide/exts/generalised_list_comprehensions.html are not trivial to translate into list monad. not sure how often that is used though |
2022-01-10 19:56:37 +0100 | <polyphem> | [itchyjunk]: the <- in the do notation feels more like an := in imperative languages, the <- in list comprehension resembles ∈ from math notation |
2022-01-10 19:57:04 +0100 | deadmarshal | (~deadmarsh@95.38.231.124) (Ping timeout: 256 seconds) |
2022-01-10 19:57:13 +0100 | vicfred | (~vicfred@user/vicfred) |
2022-01-10 19:57:23 +0100 | <[itchyjunk]> | yes the ∈ is really nice for set builder |
2022-01-10 19:57:25 +0100 | <int-e> | "declaritive" is a burned term anyway... hmm. "constraint programming" exists as an umbrella term, apparently? |
2022-01-10 19:57:53 +0100 | <[itchyjunk]> | Tied to a chair while programming? |
2022-01-10 19:58:13 +0100 | nhatanh02 | (~satori@123.24.172.30) (Ping timeout: 240 seconds) |
2022-01-10 19:58:13 +0100 | <int-e> | no, that would be restrained. |
2022-01-10 19:58:13 +0100 | <monochrom> | you're thinking "constrained" :) |
2022-01-10 19:58:20 +0100 | <[itchyjunk]> | ah |
2022-01-10 19:59:03 +0100 | <int-e> | also bad for circulation |
2022-01-10 19:59:10 +0100 | <monochrom> | Pleasing a static type system can also be described as "constrained". |
2022-01-10 20:01:00 +0100 | <k``> | Please a dynamic type system can be described as "constrained and blindfolded". |
2022-01-10 20:02:20 +0100 | <polyphem> | int-e: order matters because they are list comprehensions wich have a notion of order instead of unorderd sets |
2022-01-10 20:02:56 +0100 | <polyphem> | int-e: but you are right they are not 100% declarative |
2022-01-10 20:03:43 +0100 | xff0x | (~xff0x@2001:1a81:5310:700:c5b4:7757:92cc:e34) (Ping timeout: 268 seconds) |
2022-01-10 20:04:03 +0100 | <polyphem> | int-e: but they feel more declarative then the "do list monad" |
2022-01-10 20:04:09 +0100 | tromp | (~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
2022-01-10 20:04:23 +0100 | xff0x | (~xff0x@2001:1a81:5310:700:28af:ed1a:1e0a:acc) |
2022-01-10 20:08:18 +0100 | jgeerds | (~jgeerds@55d4bbed.access.ecotel.net) |
2022-01-10 20:13:07 +0100 | <k``> | Wait, is there any point at which do notation and monad comprehension notation aren't equivalent? |
2022-01-10 20:13:41 +0100 | <dolio> | Comprehensions have a built-in notation for `guard`. |
2022-01-10 20:14:18 +0100 | <geekosaur> | the fancy version of comprehensions ephemient pointed out above don't translate well |
2022-01-10 20:19:23 +0100 | <monochrom> | You can and need to go up to MonadPlus to match guards in list comprehension. |
2022-01-10 20:21:20 +0100 | dhouthoo | (~dhouthoo@178-117-36-167.access.telenet.be) (Quit: WeeChat 3.4) |
2022-01-10 20:21:45 +0100 | <glguy> | It's a shame guards aren't translated to fail, instead |
2022-01-10 20:22:20 +0100 | <janus> | how can comprehensions translate stuff to guard if they don't require Alternative? |
2022-01-10 20:22:32 +0100 | <monochrom> | Hrm, maybe fail and MonadFail suffices. |
2022-01-10 20:23:02 +0100 | <geekosaur> | should be, the [] translation is just fail |
2022-01-10 20:23:25 +0100 | <glguy> | (\m -> [x | x <- m, x]) :: (Monad m, GHC.Base.Alternative m) => m Bool -> m Bool |
2022-01-10 20:23:40 +0100 | <monochrom> | But MonadComprehension chose MonadPlus, yeah. |
2022-01-10 20:23:49 +0100 | <glguy> | So at least on ghc 9.0.1, they switched to Alternative |
2022-01-10 20:23:54 +0100 | <monochrom> | Some kind of overkill. |
2022-01-10 20:24:45 +0100 | <monochrom> | I guess I am not innocent in this, I used to tell people "use MonadPlus's guard" too, perhaps that seeded this. |
2022-01-10 20:24:58 +0100 | <glguy> | janus: both do-notation and monad comprehensions only require the constraints for things you actually use in the translation |
2022-01-10 20:25:15 +0100 | <glguy> | do-notation doesn't even require Monad in the trivial case |
2022-01-10 20:25:26 +0100 | <glguy> | :t \m -> do m |
2022-01-10 20:25:27 +0100 | <janus> | right ok. and guard can only be used with MonadComprehensions surely |
2022-01-10 20:25:27 +0100 | <lambdabot> | p -> p |
2022-01-10 20:25:46 +0100 | <glguy> | (\m -> [x | x <- m]) :: Monad m => m b -> m b |
2022-01-10 20:25:52 +0100 | <janus> | so if i don't use that (don't think i am convinced of its utility yet), guards only appear when written |
2022-01-10 20:26:08 +0100 | <mjrosenb> | ahh, monad comprehension guards, not pattern guards. I was trying to figure out how pattern guards would translate to fail. |
2022-01-10 20:26:09 +0100 | <monochrom> | Right. |
2022-01-10 20:26:38 +0100 | <glguy> | (\m -> [x | Just x <- m]) :: MonadFail m => m (Maybe b) -> m b |
2022-01-10 20:29:11 +0100 | <glguy> | we can recover the MonadFail translation with some extra mess <_< (\m -> [x | x <- m, True <- pure x]) :: MonadFail m => m Bool -> m Bool |
2022-01-10 20:29:26 +0100 | Flonk | (~Flonk@vps-zap441517-1.zap-srv.com) (Quit: The Lounge - https://thelounge.chat) |
2022-01-10 20:29:44 +0100 | <janus> | why does the monad comprehension users guide claim that 'guard' requires MonadPlus? https://downloads.haskell.org/ghc/8.10.7/docs/html/users_guide/glasgow_exts.html#monad-comprehensi… |
2022-01-10 20:29:59 +0100 | <janus> | we just saw above that Alternative is sufficeint |
2022-01-10 20:30:00 +0100 | <glguy> | janus: because it used ot |
2022-01-10 20:30:06 +0100 | <glguy> | to* |
2022-01-10 20:30:08 +0100 | <janus> | so the docs are just outdated? |
2022-01-10 20:30:25 +0100 | <glguy> | Applicative and Alternative were late additions |
2022-01-10 20:31:02 +0100 | <janus> | i am a late addition :O |
2022-01-10 20:32:22 +0100 | Flonk | (~Flonk@vps-zap441517-1.zap-srv.com) |
2022-01-10 20:32:22 +0100 | <monochrom> | You are looking at the doc for 8.10.7. |
2022-01-10 20:32:44 +0100 | <monochrom> | The doc for 8.10.7 is, clearly, not outdated wrt 8.10.7 itself. |
2022-01-10 20:32:52 +0100 | wroathe | (~wroathe@206-55-188-8.fttp.usinternet.com) |
2022-01-10 20:32:52 +0100 | wroathe | (~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host) |
2022-01-10 20:32:52 +0100 | wroathe | (~wroathe@user/wroathe) |
2022-01-10 20:33:26 +0100 | <janus> | Alternative existed in 8.10's base. and even in ghc master this is the wording |
2022-01-10 20:33:52 +0100 | <monochrom> | Oh oops the doc is outdated wrt the actual compiler. |
2022-01-10 20:34:17 +0100 | <janus> | i dunno when exactly it could type as Alternative instead of MonadPlus or if it just looks at the signature of 'guard'. either way seems like a bug |
2022-01-10 20:35:08 +0100 | tromp | (~textual@dhcp-077-249-230-040.chello.nl) |
2022-01-10 20:35:38 +0100 | <monochrom> | The type of guard also says Alternative. |
2022-01-10 20:36:10 +0100 | <monochrom> | Oh well social constructs need social maintenance. |
2022-01-10 20:36:44 +0100 | <janus> | seems like Alternative was added in base 4.4 (ghc 7.2.1, released in aug 2011) |
2022-01-10 20:37:16 +0100 | <EvanR> | the coffee must be weak today because I can't figure out how the function passed to 2nd extend in the definition of extend for StoreT here takes 2 arguments... https://paste.tomsmeding.com/v6ZZeIid |
2022-01-10 20:37:23 +0100 | <janus> | oh no, it is also in base 4.3 (ghc 7.0 from nov 2010) |
2022-01-10 20:37:41 +0100 | <EvanR> | where the heck is s' coming from |
2022-01-10 20:38:02 +0100 | <EvanR> | oh... b is a function type... |
2022-01-10 20:38:03 +0100 | xb0o2 | (~xb0o2@user/xb0o2) |
2022-01-10 20:38:17 +0100 | wroathe | (~wroathe@user/wroathe) (Ping timeout: 256 seconds) |
2022-01-10 20:38:35 +0100 | <EvanR> | 🦆 |
2022-01-10 20:38:55 +0100 | <int-e> | quack |
2022-01-10 20:40:47 +0100 | <janus> | 'guard' was only changed to use the Alternative class in base 4.8 (ghc 7.10 from apr 2015) |
2022-01-10 20:43:32 +0100 | Erutuon | (~Erutuon@user/erutuon) (Ping timeout: 256 seconds) |
2022-01-10 20:45:21 +0100 | <janus> | ok i made an issue it is ghc issue 20928 |
2022-01-10 20:46:26 +0100 | Erutuon | (~Erutuon@user/erutuon) |
2022-01-10 20:49:17 +0100 | husixu | (~husixu@137.132.119.2) (Remote host closed the connection) |
2022-01-10 20:49:46 +0100 | d0ku | (~d0ku@178.43.3.56.ipv4.supernova.orange.pl) (Ping timeout: 256 seconds) |
2022-01-10 21:02:04 +0100 | wroathe | (~wroathe@206-55-188-8.fttp.usinternet.com) |
2022-01-10 21:02:04 +0100 | wroathe | (~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host) |
2022-01-10 21:02:04 +0100 | wroathe | (~wroathe@user/wroathe) |
2022-01-10 21:04:49 +0100 | ProfSimm | (~ProfSimm@87.227.196.109) |
2022-01-10 21:05:29 +0100 | juhp | (~juhp@128.106.188.82) (Ping timeout: 256 seconds) |
2022-01-10 21:06:50 +0100 | juhp | (~juhp@128.106.188.82) |
2022-01-10 21:07:23 +0100 | matrox | (~bc8147f2@cerf.good1.com) (Quit: CGI:IRC (Session timeout)) |
2022-01-10 21:08:29 +0100 | Tuplanolla | (~Tuplanoll@91-159-69-16.elisa-laajakaista.fi) |
2022-01-10 21:08:29 +0100 | aforemny | (~aforemny@static.248.158.34.188.clients.your-server.de) (Quit: ZNC 1.8.2 - https://znc.in) |
2022-01-10 21:10:17 +0100 | shapr | (~user@2601:7c0:c202:5190:b29e:1cbf:e21f:c653) (Ping timeout: 240 seconds) |
2022-01-10 21:10:29 +0100 | aforemny | (~aforemny@static.248.158.34.188.clients.your-server.de) |
2022-01-10 21:10:35 +0100 | raym | (~raym@user/raym) (Ping timeout: 256 seconds) |
2022-01-10 21:12:24 +0100 | deadmarshal | (~deadmarsh@95.38.231.124) |
2022-01-10 21:13:34 +0100 | wroathe | (~wroathe@user/wroathe) (Ping timeout: 256 seconds) |
2022-01-10 21:13:54 +0100 | wroathe | (~wroathe@206-55-188-8.fttp.usinternet.com) |
2022-01-10 21:13:54 +0100 | wroathe | (~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host) |
2022-01-10 21:13:54 +0100 | wroathe | (~wroathe@user/wroathe) |
2022-01-10 21:14:18 +0100 | <maerwald> | I'm trying to debug a program time execution with '+RTS -p -l-au', but the callstack depth is main -> somefunc and it stops after that |
2022-01-10 21:16:49 +0100 | deadmarshal | (~deadmarsh@95.38.231.124) (Ping timeout: 256 seconds) |
2022-01-10 21:17:32 +0100 | Erutuon | (~Erutuon@user/erutuon) (Ping timeout: 256 seconds) |
2022-01-10 21:18:22 +0100 | <maerwald> | I guess excessive inlining can do that? |
2022-01-10 21:18:57 +0100 | vysn | (~vysn@user/vysn) |
2022-01-10 21:22:17 +0100 | wroathe | (~wroathe@user/wroathe) (Ping timeout: 240 seconds) |
2022-01-10 21:25:17 +0100 | <byorgey> | anyone aware of algorithms for solving sets inequalities over a free idempotent commutative monoid? i.e. imagine you have a bunch of constraints, where each constraint is of the form U1 \subseteq U2, and the U's are arbitrary finite unions of variables and constants |
2022-01-10 21:26:17 +0100 | <byorgey> | so e.g. you might have x `union` C `union` D \subseteq y `union` z `union` F and so on. And you want to find some solution for the variables, ideally some kind of 'least' solution, identifying each variable with a set of constants |
2022-01-10 21:26:47 +0100 | [itchyjunk] | (~itchyjunk@user/itchyjunk/x-7353470) (Remote host closed the connection) |
2022-01-10 21:26:52 +0100 | <byorgey> | I guess I can probably work it out but just thought I'd ask in case anyone has seen anything like this before. |
2022-01-10 21:31:38 +0100 | <EvanR> | was that on day twenty-x of advent of code last month |
2022-01-10 21:32:51 +0100 | <monochrom> | Allow me to transform and distort your problem. |
2022-01-10 21:33:33 +0100 | Topsi | (~Tobias@dyndsl-095-033-093-212.ewe-ip-backbone.de) (Read error: Connection reset by peer) |
2022-01-10 21:33:46 +0100 | <monochrom> | We can always reduce set theory to propositional logic, (x or C or D) implies (y or z or F). |
2022-01-10 21:39:18 +0100 | eggplantade | (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection) |
2022-01-10 21:39:18 +0100 | gentauro | (~gentauro@user/gentauro) (Read error: Connection reset by peer) |
2022-01-10 21:39:47 +0100 | <monochrom> | Then the resolution algorithm says, if you want to find a way to satisfy that, give me the negation instead, (x or C or D) and not (y or z or F). If the negation is doomed to be false, I will find a counterexample (therefore a solution to the unnegated sentence), or die trying. |
2022-01-10 21:41:54 +0100 | <monochrom> | This plot may or may not work. But we'd never know if I didn't suggest it. |
2022-01-10 21:42:51 +0100 | burnsidesLlama | (~burnsides@dhcp168-013.wadham.ox.ac.uk) (Remote host closed the connection) |
2022-01-10 21:43:23 +0100 | burnsidesLlama | (~burnsides@dhcp168-013.wadham.ox.ac.uk) |
2022-01-10 21:44:43 +0100 | benin | (~benin@183.82.176.241) (Quit: The Lounge - https://thelounge.chat) |
2022-01-10 21:45:12 +0100 | <byorgey> | monochrom: oh, very good suggestion, thanks! The connection to propositional logic had not yet occurred to me. |
2022-01-10 21:45:16 +0100 | gentauro | (~gentauro@user/gentauro) |
2022-01-10 21:45:46 +0100 | Guest72 | (~Guest72@82-132-214-147.dab.02.net) |
2022-01-10 21:45:59 +0100 | <byorgey> | EvanR: no, this is something I think I'm going to need for implementing a certain type checker. |
2022-01-10 21:47:25 +0100 | burnsidesLlama | (~burnsides@dhcp168-013.wadham.ox.ac.uk) (Ping timeout: 240 seconds) |
2022-01-10 21:47:55 +0100 | <byorgey> | monochrom: hmm, one problem is that just gives me T/F values for the variables, but I want values corresponding to sets of constants. e.g. one solution for this example would be x -> {}, y -> {C,D}, z -> {} |
2022-01-10 21:48:08 +0100 | `2jt | (~jtomas@10.red-83-58-228.dynamicip.rima-tde.net) (Ping timeout: 256 seconds) |
2022-01-10 21:49:09 +0100 | <monochrom> | Yeah, in truth, predicates are involved. A set S is a predicate \v -> is v in S? |
2022-01-10 21:49:36 +0100 | <monochrom> | (x(v) or C(v) or D(v)) implies (y(v) or z(v) or F(v)). |
2022-01-10 21:49:59 +0100 | <monochrom> | Fortunately, resolution is about that, too, finding a value for v. |
2022-01-10 21:50:31 +0100 | <EvanR> | that kind of reminds me of clicking on a screen painted with monoids and wanting to know which one you clicked on |
2022-01-10 21:51:20 +0100 | <byorgey> | EvanR: https://diagrams.github.io/blog/2015-04-30-GTK-coordinates.html ? =) |
2022-01-10 21:52:05 +0100 | <EvanR> | that actually exists |
2022-01-10 21:52:13 +0100 | <monochrom> | onoes |
2022-01-10 21:53:56 +0100 | cemguresci | (~cemguresc@2001:a61:11ff:a001:9a1b:dd7d:413d:f699) |
2022-01-10 21:53:57 +0100 | <byorgey> | monochrom: hmm, interesting, I have not seen resolution in the context of second-order logic before. |
2022-01-10 21:54:07 +0100 | cemguresci | cemg |
2022-01-10 21:59:48 +0100 | Erutuon | (~Erutuon@user/erutuon) |
2022-01-10 22:00:47 +0100 | <Guest72> | A haskell set is a Hask of course |
2022-01-10 22:02:01 +0100 | <Guest72> | You can't ask are you undecidable |
2022-01-10 22:05:41 +0100 | eggplantade | (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) |
2022-01-10 22:06:18 +0100 | Guest|58 | (~Guest|58@host-137-205-1-17.warwick.ac.uk) |
2022-01-10 22:06:46 +0100 | Guest|58 | (~Guest|58@host-137-205-1-17.warwick.ac.uk) (Client Quit) |
2022-01-10 22:07:45 +0100 | gdd | (~gdd@129.199.146.230) (Ping timeout: 250 seconds) |
2022-01-10 22:08:10 +0100 | _ht | (~quassel@82-169-194-8.biz.kpn.net) (Remote host closed the connection) |
2022-01-10 22:11:55 +0100 | gdd | (~gdd@129.199.146.230) |
2022-01-10 22:13:01 +0100 | lechner | (~lechner@debian/lechner) (Ping timeout: 240 seconds) |
2022-01-10 22:15:20 +0100 | burnsidesLlama | (~burnsides@dhcp168-013.wadham.ox.ac.uk) |
2022-01-10 22:16:03 +0100 | acidjnk_new | (~acidjnk@p200300d0c7271e155922c761977fca48.dip0.t-ipconnect.de) |
2022-01-10 22:16:03 +0100 | acidjnk | (~acidjnk@p200300d0c7271e155922c761977fca48.dip0.t-ipconnect.de) |
2022-01-10 22:16:34 +0100 | <tomsmeding> | monochrom: sounds like the problem was finding x,y,z, not v in your re-written version |
2022-01-10 22:18:28 +0100 | <int-e> | Guest72: This is very off season, but would you write Huskell programs for Halloween? |
2022-01-10 22:20:18 +0100 | <Guest72> | Sure |
2022-01-10 22:21:00 +0100 | burnsidesLlama | (~burnsides@dhcp168-013.wadham.ox.ac.uk) (Ping timeout: 256 seconds) |
2022-01-10 22:25:42 +0100 | k`` | (~user@152.1.137.158) (Remote host closed the connection) |
2022-01-10 22:29:30 +0100 | yauhsien | (~yauhsien@118-167-43-90.dynamic-ip.hinet.net) (Ping timeout: 256 seconds) |
2022-01-10 22:31:42 +0100 | lechner | (~lechner@debian/lechner) |
2022-01-10 22:34:53 +0100 | michalz | (~michalz@185.246.204.126) (Remote host closed the connection) |
2022-01-10 22:35:15 +0100 | yauhsien | (~yauhsien@61-231-29-214.dynamic-ip.hinet.net) |
2022-01-10 22:40:40 +0100 | random-jellyfish | (~random-je@user/random-jellyfish) |
2022-01-10 22:41:09 +0100 | Hash | PCLoadLetter |
2022-01-10 22:45:03 +0100 | wroathe | (~wroathe@206-55-188-8.fttp.usinternet.com) |
2022-01-10 22:45:03 +0100 | wroathe | (~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host) |
2022-01-10 22:45:03 +0100 | wroathe | (~wroathe@user/wroathe) |
2022-01-10 22:46:13 +0100 | mikoto-chan | (~mikoto-ch@esm-84-240-99-143.netplaza.fi) (Ping timeout: 240 seconds) |
2022-01-10 22:53:00 +0100 | mc47 | (~mc47@xmonad/TheMC47) (Remote host closed the connection) |
2022-01-10 22:53:46 +0100 | ymirhotfoot | (~ymirhotfo@user/ymirhotfoot) |
2022-01-10 22:55:33 +0100 | <random-jellyfish> | can I ask questions related to the euterpea music library here? |
2022-01-10 22:57:26 +0100 | takuan | (~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection) |
2022-01-10 23:03:53 +0100 | <monochrom> | Yes but probably very few of us can answer. |
2022-01-10 23:07:51 +0100 | <random-jellyfish> | ##MusicTheory is invite only for some reason |
2022-01-10 23:07:58 +0100 | <random-jellyfish> | would've been a better channel |
2022-01-10 23:08:24 +0100 | <glguy> | no, it's not invite only |
2022-01-10 23:08:53 +0100 | <glguy> | but it is *empty* so not much better |
2022-01-10 23:09:20 +0100 | <random-jellyfish> | I was automatically banned from it when I joined: × ChanServ kicked you from ##MusicTheory (You are not authorized to be on this channel) |
2022-01-10 23:09:25 +0100 | Everything | (~Everythin@37.115.210.35) (Quit: leaving) |
2022-01-10 23:10:06 +0100 | <random-jellyfish> | anyway |
2022-01-10 23:10:09 +0100 | <glguy> | ah, I guess the founders decided to close it |
2022-01-10 23:10:15 +0100 | wyrd | (~wyrd@gateway/tor-sasl/wyrd) (Ping timeout: 276 seconds) |
2022-01-10 23:10:19 +0100 | <random-jellyfish> | [11:56:59 PM] <random-jellyfish> I have the following rhythm: qn qn den den qn en qn den den en |
2022-01-10 23:10:19 +0100 | <random-jellyfish> | [11:57:32 PM] <random-jellyfish> where qn=quarter note, en=eight note, den=dotted eighth note |
2022-01-10 23:10:20 +0100 | <random-jellyfish> | [11:57:42 PM] <random-jellyfish> what's the time signature for it? |
2022-01-10 23:10:37 +0100 | Inst | (~delicacie@c-98-208-218-119.hsd1.fl.comcast.net) (Ping timeout: 240 seconds) |
2022-01-10 23:11:26 +0100 | gehmehgeh | (~user@user/gehmehgeh) (Quit: Leaving) |
2022-01-10 23:11:41 +0100 | <polyphem> | is it 11/4 ? |
2022-01-10 23:12:37 +0100 | <monochrom> | Damn those prime-numbered time signatures like 5/4, 7/4, 11/4, 13/8... |
2022-01-10 23:13:10 +0100 | <monochrom> | Tchaikovsky and/or Mahler had some 5/4 sheninigans... |
2022-01-10 23:13:51 +0100 | <polyphem> | 16/8 or 8/4 |
2022-01-10 23:14:30 +0100 | <random-jellyfish> | yeah the fractions add up to 2/1 |
2022-01-10 23:14:32 +0100 | zincy | (~zincy@2a00:23c8:970c:4801:8d43:554e:d62c:915d) (Remote host closed the connection) |
2022-01-10 23:15:06 +0100 | <random-jellyfish> | so it's probably 16/8 or 8/4 |
2022-01-10 23:15:24 +0100 | infinity0 | (~infinity0@occupy.ecodis.net) (Ping timeout: 256 seconds) |
2022-01-10 23:16:04 +0100 | infinity0 | (~infinity0@occupy.ecodis.net) |
2022-01-10 23:16:32 +0100 | <polyphem> | or 4/4 with "borrowed time" |
2022-01-10 23:17:01 +0100 | burnsidesLlama | (~burnsides@dhcp168-013.wadham.ox.ac.uk) |
2022-01-10 23:17:09 +0100 | <polyphem> | two bars of 4/4 |
2022-01-10 23:17:42 +0100 | <hpc> | i like my time signatures with a positive weyl curvature |
2022-01-10 23:18:59 +0100 | wyrd | (~wyrd@gateway/tor-sasl/wyrd) |
2022-01-10 23:20:43 +0100 | <random-jellyfish> | "borrowed time"? is that an actual concept in music? |
2022-01-10 23:21:28 +0100 | <random-jellyfish> | you can't make a "clean" 4/4 bar with those notes in that order |
2022-01-10 23:21:44 +0100 | PCLoadLetter | Hash |
2022-01-10 23:22:15 +0100 | <Clint> | pick-up notes are an actual concept in music |
2022-01-10 23:22:39 +0100 | <polyphem> | random-jellyfish: https://www.youtube.com/watch?v=kCQfekVrSAA |
2022-01-10 23:23:54 +0100 | wyrd | (~wyrd@gateway/tor-sasl/wyrd) (Ping timeout: 276 seconds) |
2022-01-10 23:26:25 +0100 | <random-jellyfish> | thanks! |
2022-01-10 23:26:50 +0100 | eggplantade | (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection) |
2022-01-10 23:28:00 +0100 | ymirhotfoot | (~ymirhotfo@user/ymirhotfoot) (Quit: Client closed) |
2022-01-10 23:31:02 +0100 | <EvanR> | in Data.Category you have this class called Category for types of kind * -> * -> *. Say you have some type ctor f which is a Category. Exactly what "category theory category" is this referring to |
2022-01-10 23:31:49 +0100 | <EvanR> | er, Control.Category |
2022-01-10 23:32:16 +0100 | <EvanR> | is f literally some category, or what |
2022-01-10 23:32:25 +0100 | <dolio> | It's a category whose objects are types, and whose arrows are given by the instance. |
2022-01-10 23:33:03 +0100 | lavaman | (~lavaman@98.38.249.169) |
2022-01-10 23:33:32 +0100 | <awpr> | IIRC it's poly-kinded, so actually the instance head is `cat :: k -> k -> Type`. then, for a given instance, the objects are the "types" of kind `k`, and the morphisms from `a :: k` to `b :: k` are the values of type `cat a b` |
2022-01-10 23:34:10 +0100 | <awpr> | and the `Category` instance methods provide the identity morphisms and composition |
2022-01-10 23:35:47 +0100 | eggplantade | (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) |
2022-01-10 23:36:00 +0100 | Akiva | (~Akiva@user/Akiva) |
2022-01-10 23:36:29 +0100 | <EvanR> | oh that makes sense now |
2022-01-10 23:37:01 +0100 | vysn | (~vysn@user/vysn) (Ping timeout: 240 seconds) |
2022-01-10 23:37:30 +0100 | lavaman | (~lavaman@98.38.249.169) (Ping timeout: 256 seconds) |
2022-01-10 23:37:31 +0100 | <EvanR> | while fmap lifts a function from a to b to f a to f b, (.) does combining of morphisms directly |
2022-01-10 23:38:23 +0100 | <EvanR> | and the category objects are really determined by k |
2022-01-10 23:39:30 +0100 | wyrd | (~wyrd@gateway/tor-sasl/wyrd) |
2022-01-10 23:40:06 +0100 | <EvanR> | so f is like the arrow, and we don't have a name for the category itself |
2022-01-10 23:44:58 +0100 | ubert1 | (~Thunderbi@p200300ecdf0994f8385203c98e392e3c.dip0.t-ipconnect.de) (Read error: Connection reset by peer) |
2022-01-10 23:46:31 +0100 | <Raito_Bezarius> | I'm trying to do simple i18n with Hakyll, so I tried to use Shakespeare, but I'm unsure how to understand https://hackage.haskell.org/package/shakespeare-2.0.25.1/docs/Text-Shakespeare-I18N.html#mkMessage function which seems to create instances |
2022-01-10 23:46:42 +0100 | <Raito_Bezarius> | can I call it at the top level of my application to generate my instances or does it need to be scoped? |
2022-01-10 23:47:04 +0100 | <Raito_Bezarius> | the Q [Dec] seems to be related to QuasiQuoter stuff, do I need to enable QuasiQuoter in my file? |
2022-01-10 23:48:06 +0100 | <Raito_Bezarius> | and if someone have better suggestions to get type-based translations with a gettext-style, without getting onboard Yesod or other framework, that would be awesome :) |
2022-01-10 23:50:20 +0100 | raoul | (~raoul@95.179.203.88) |
2022-01-10 23:55:17 +0100 | <Raito_Bezarius> | ha, it seems like it is required to put under some instance Yesod App where ... |
2022-01-10 23:56:36 +0100 | raoul | (~raoul@95.179.203.88) (Quit: The Lounge - https://thelounge.chat) |
2022-01-10 23:57:13 +0100 | raoul | (~raoul@95.179.203.88) |
2022-01-10 23:57:29 +0100 | <glguy> | Raito_Bezarius: I don't know much about Hakyll, but if you're looking at Q [Dec] stuff, the search term is TemplateHaskell. QuasiQuoters are related to but not this |
2022-01-10 23:57:42 +0100 | <Raito_Bezarius> | Alright, thanks glguy ! |
2022-01-10 23:58:12 +0100 | xb0o2 | (~xb0o2@user/xb0o2) (Quit: Client closed) |
2022-01-10 23:59:21 +0100 | <glguy> | Raito_Bezarius: but if mkMessage generates instances, then it would need to be at the top-level of your module |
2022-01-10 23:59:49 +0100 | <glguy> | and mkMessage does appear to generate data type declarations and instance declarations, so top-level |