Logs on 2023-04-30 (liberachat/#haskell)
| 00:02:50 | × | berberman quits (~berberman@user/berberman) (Quit: ZNC 1.8.2 - https://znc.in) |
| 00:04:18 | → | berberman joins (~berberman@user/berberman) |
| 00:05:13 | → | cheater joins (~Username@user/cheater) |
| 00:05:53 | × | cheater quits (~Username@user/cheater) (Read error: Connection reset by peer) |
| 00:08:06 | <mmynsted[m]> | I guess hard-coded into cabal. https://github.com/haskell/cabal/blob/3af1731c01c35614fd902ee5c1aec40f5587fde6/cabal-install/src/Distribution/Client/Init/Defaults.hs#L166 |
| 00:11:53 | × | Lord_of_Life quits (~Lord@user/lord-of-life/x-2819915) (Ping timeout: 246 seconds) |
| 00:13:27 | → | Lord_of_Life joins (~Lord@user/lord-of-life/x-2819915) |
| 00:21:22 | → | Albina_Pavlovna joins (~Albina_Pa@2603-7000-76f0-76e0-e9a1-4bc6-a339-90d3.res6.spectrum.com) |
| 00:28:00 | × | Tuplanolla quits (~Tuplanoll@91-159-68-236.elisa-laajakaista.fi) (Quit: Leaving.) |
| 00:40:42 | → | harveypwca joins (~harveypwc@2601:246:c180:a570:3828:d8:e523:3f67) |
| 00:41:23 | × | shailangsa quits (~shailangs@host165-120-169-78.range165-120.btcentralplus.com) (Remote host closed the connection) |
| 00:45:26 | → | nate1 joins (~nate@98.45.169.16) |
| 00:47:12 | → | merijn joins (~merijn@86-86-29-250.fixed.kpn.net) |
| 00:47:45 | → | cheater joins (~Username@user/cheater) |
| 00:50:09 | × | cheater quits (~Username@user/cheater) (Read error: Connection reset by peer) |
| 00:54:58 | → | cheater joins (~Username@user/cheater) |
| 01:05:50 | × | cheater quits (~Username@user/cheater) (Read error: Connection reset by peer) |
| 01:11:09 | × | albet70 quits (~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection) |
| 01:12:20 | × | Inst__ quits (~Inst@2601:6c4:4081:54f0:9027:6f4:a9a6:93a0) (Ping timeout: 260 seconds) |
| 01:16:48 | → | gehmehgeh joins (~user@user/gehmehgeh) |
| 01:17:16 | → | albet70 joins (~xxx@2400:8902::f03c:92ff:fe60:98d8) |
| 01:19:20 | × | gmg quits (~user@user/gehmehgeh) (Ping timeout: 240 seconds) |
| 01:21:25 | × | merijn quits (~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 240 seconds) |
| 01:34:30 | × | harveypwca quits (~harveypwc@2601:246:c180:a570:3828:d8:e523:3f67) (Quit: Leaving) |
| 01:37:59 | <talismanick> | Oh, how I wish there was a standard math notation equivalent to <$>... |
| 01:40:08 | → | Nic joins (~Nic@c-24-127-33-212.hsd1.mi.comcast.net) |
| 01:43:48 | <int-e> | f <$> x = F(f)(x) where F is the functor in question? |
| 01:45:42 | × | Nic quits (~Nic@c-24-127-33-212.hsd1.mi.comcast.net) (Quit: Connection closed) |
| 01:47:03 | → | xff0x_ joins (~xff0x@fsa056e3ab.kytj202.ap.nuro.jp) |
| 01:47:21 | <monochrom> | Since in math usually you have multiple functors flying around in the same equation, it may not be a good idea to call all of their fmaps the same name. |
| 01:48:40 | <johnjaye> | Diophantus called the unknown Ϛ, even if there were a dozen unknowns to solve for. |
| 01:48:48 | × | nate1 quits (~nate@98.45.169.16) (Ping timeout: 248 seconds) |
| 01:52:12 | <monochrom> | Consider for example a natural transformation p from F to G. We already have some slack with "p . F h = G h . p" --- the two p's are of different types. |
| 01:52:45 | <monochrom> | Now imagine we further add <$> overloading and write "p . (h <$>) = (h <$>) . p" >:0 |
| 01:57:47 | <monochrom> | Hrm let's code-golf that further! |
| 01:57:57 | <monochrom> | @pl \h -> p . fmap h |
| 01:57:58 | <lambdabot> | (p .) . fmap |
| 01:58:06 | <monochrom> | @pl \h -> fmap h . p |
| 01:58:07 | <lambdabot> | (. p) . fmap |
| 01:58:23 | <monochrom> | (p .) . fmap = (. p) . fmap |
| 01:58:30 | <monochrom> | This is profound. >:) |
| 01:58:47 | <int-e> | now replace (.) by fmap. Is it still true? |
| 01:59:08 | <monochrom> | I prefer replacing fmap by (.) hahaha |
| 01:59:19 | <monochrom> | "..." |
| 02:01:51 | <monochrom> | "Hi I saw on a blog f $ g $ x = f <$> g $ x so what's the difference between <$> and $?" >:) |
| 02:02:29 | <int-e> | <$> has more characters |
| 02:02:42 | <monochrom> | sharp edges :) |
| 02:02:54 | <int-e> | (if in doubt, answer such questions at the lexical level) |
| 02:05:06 | × | hgolden_ quits (~hgolden@cpe-172-251-233-141.socal.res.rr.com) (Remote host closed the connection) |
| 02:07:00 | → | hgolden joins (~hgolden@cpe-172-251-233-141.socal.res.rr.com) |
| 02:16:42 | → | bitmapper joins (uid464869@id-464869.lymington.irccloud.com) |
| 02:23:29 | × | ryantrinkle quits (~ryantrink@204.2.88.230) (Ping timeout: 246 seconds) |
| 02:29:33 | → | falafel joins (~falafel@2603-8000-d700-115c-557c-00d7-83ff-43f9.res6.spectrum.com) |
| 02:30:52 | → | slack1256 joins (~slack1256@186.11.41.76) |
| 02:39:23 | × | Albina_Pavlovna quits (~Albina_Pa@2603-7000-76f0-76e0-e9a1-4bc6-a339-90d3.res6.spectrum.com) (Quit: ZZZzzz…) |
| 02:41:32 | <ski> | clearly `p_h' is a more suitable notation for `p_B . F h' / `G h . p_A' |
| 02:44:03 | <ski> | talismanick : any particular functor in mind ? |
| 02:44:15 | × | xff0x_ quits (~xff0x@fsa056e3ab.kytj202.ap.nuro.jp) (Ping timeout: 250 seconds) |
| 02:46:13 | → | xff0x_ joins (~xff0x@fsa056e3ab.kytj202.ap.nuro.jp) |
| 02:46:49 | <ski> | (you could also write `(| p f ; h a |) : G B', if `(| f ; a |) : F A') |
| 02:48:16 | → | Square joins (~Square@user/square) |
| 02:50:38 | <Square> | Hey. I'm using ExistentialQuantification for a type : data Foo = forall a. Eq a => Foo a. How would I be able to make Foo derive Eq? In this example any cheat is ok, as long as its correct. |
| 02:51:55 | <ski> | `instance Eq Foo where _ == _ = True' should be okay, i think ? |
| 02:52:56 | × | FinnElija quits (~finn_elij@user/finn-elija/x-0085643) (Ping timeout: 240 seconds) |
| 02:53:14 | × | td_ quits (~td@i53870937.versanet.de) (Ping timeout: 246 seconds) |
| 02:53:33 | → | slac19128 joins (~slack1256@191.125.26.100) |
| 02:54:05 | <Square> | ski, looks like always True to me? |
| 02:54:09 | <ski> | the only think you can do with a value of type `Foo', when unpacking it, is to pass the internal value of type `a' (some hidden/forgotten/opaque/abstract/skolem type), *twice*, to `(==)' (or to `(/=)') (if we discount passing stuff like `undefined') .. and so we can't get any information out of a `Foo' value. so all values ought to count as equal |
| 02:54:14 | <ski> | Square : yes |
| 02:54:31 | <ski> | s/only think/only thing/ |
| 02:55:07 | → | td_ joins (~td@i53870931.versanet.de) |
| 02:55:31 | → | FinnElija joins (~finn_elij@user/finn-elija/x-0085643) |
| 02:55:46 | <ski> | so, it seems to me, this is the only sensible `Eq' instance you can make (however useless it is), for this type. if you allow changing the definition of `Foo', that's a different question, however .. |
| 02:55:49 | × | slack1256 quits (~slack1256@186.11.41.76) (Ping timeout: 265 seconds) |
| 02:55:57 | <int-e> | ski: heh, I'm surprised that you didn't use ⦇ ⦈ there |
| 02:56:09 | <ski> | .. although, perhaps a better question would be : what are you trying to achieve here ? |
| 02:56:52 | <ski> | int-e : i was following suit with the Haskell-like syntax |
| 03:00:49 | <ski> | (i've also used that ascii approximation before, in this context, in the channel) |
| 03:00:54 | <Square> | ski, I have "form" descriptions. Some select type fields have enum like field types. like 'data Field = forall a. FInt | Choice (Set a) | ...' and then 'type Form = [Field]' |
| 03:01:20 | <Square> | sorry |
| 03:01:32 | <Square> | data Field = forall a. Eq a => FInt | Choice (Set a) | ... |
| 03:02:10 | <Square> | (really i was hoping on mashing more fields into the Choice type to support some sort of unpacking.) |
| 03:02:24 | <ski> | i presume you meant to attach that `forall a. Eq a =>' to the `Choice' data constructor |
| 03:02:36 | <Square> | yeah.. i guess i can move it |
| 03:03:22 | <ski> | how do you intend to use this set alternative of a field ? |
| 03:04:19 | <ski> | mashing them into it, how, in what sense ? |
| 03:04:26 | × | xff0x_ quits (~xff0x@fsa056e3ab.kytj202.ap.nuro.jp) (Ping timeout: 246 seconds) |
| 03:04:26 | <Square> | a) for Generic type matches. b) to render field and read field input. |
| 03:04:51 | × | jero98772 quits (~jero98772@2800:484:1d84:9000::2) (Remote host closed the connection) |
| 03:04:51 | <ski> | (also, is `FInt' intended to take any payload ? like maybe an `Int' or something ?) |
| 03:05:09 | <Square> | its just field definition, not the actual input. |
| 03:05:20 | <Square> | on "FInt" |
| 03:05:43 | <ski> | mhm |
| 03:05:51 | <Square> | The Set of Choice are the possible options |
| 03:06:20 | <ski> | it seems there's very little you can do with your value of type `Set a', with `a' unknown, and only `Eq a' known about it |
| 03:06:39 | <ski> | you could call `size :: Set a -> Int' on it, i suppose |
| 03:07:11 | <Square> | I simplified the description of the problem here to make it clearer. |
| 03:07:32 | <ski> | unfortunately, the simplification was too radical |
| 03:07:39 | <Square> | Hashable? |
| 03:08:24 | <ski> | i'm assuming you're still thinking about `Eq Field' ? or some other class than `Eq' ? |
| 03:08:50 | <Square> | correct |
| 03:09:37 | <Square> | Eq seems to be the problematic one as it takes 2 arguments to == |
| 03:09:39 | <ski> | perhaps some sample set example would help to see what you're after modelling |
| 03:10:35 | → | ryantrinkle joins (~ryantrink@204.2.88.230) |
| 03:10:49 | <ski> | yea, the problem is that if you have two `Field's, and both happen to be of the `Choice' alternative, then there's no guarantee they'll be using the same unknown type `a'. in fact, since you can't rely on that, you must assume that they are not |
| 03:12:11 | <ski> | (if you had added `Typeable a' to the set of constraints on `a', then you could probably compare the types, at least if the sets were non-empty .. but it's not obvious this is the correct way forward) |
| 03:12:15 | <Square> | Gotcha. I was hoping you could produce some hash of both and use that for equality. |
| 03:13:13 | <Square> | I got Typeable on them and I compare types. But yeah. The actual values aren't comparable atm. |
| 03:14:14 | × | berberman quits (~berberman@user/berberman) (Ping timeout: 246 seconds) |
| 03:14:33 | <ski> | what else, apart from calling operations that require `Eq', do you want to do with `Field's ? |
| 03:18:16 | → | merijn joins (~merijn@c-001-001-006.client.esciencecenter.eduvpn.nl) |
| 03:18:22 | <Square> | Show..., maybe some To/FromJSON. Also for the Choice fields, I want Read for the actual type. |
| 03:18:26 | <ski> | hmm. you mentioned generic type matches, as well as rendering fields and reading inputs corresponding to them. i dunno what you mean by the former, and have only a vague idea of what you may mean by the latter |
| 03:18:49 | <ski> | `Read', but not, say, `Show' ? |
| 03:20:04 | <ski> | also `Read' sounds like it would be more important, when constructing `Field's, than when deconstructing them |
| 03:20:18 | <Square> | data Field = FInt | forall a. (Eq a, Show a, Typeable a, Read a, Ord a) => Choice a deriving (Show, Eq). |
| 03:20:28 | <Square> | would be more like it |
| 03:20:39 | <ski> | (`Ord a' implies `Eq a', btw) |
| 03:20:54 | <Square> | oh? i did not know. |
| 03:21:05 | <ski> | @src Ord |
| 03:21:05 | <lambdabot> | class (Eq a) => Ord a where |
| 03:21:05 | <lambdabot> | compare :: a -> a -> Ordering |
| 03:21:05 | <lambdabot> | (<), (<=), (>), (>=) :: a -> a -> Bool |
| 03:21:06 | <lambdabot> | max, min :: a -> a -> a |
| 03:21:42 | <Square> | Ord require Eq so to speak. |
| 03:21:49 | <ski> | yep |
| 03:23:01 | <ski> | (so `(Eq a,Ord a)' amounts to the same thing as `Ord a', it's just the former is wordier (and maybe slightly less efficient .. dunno whether GHC would just remove implied constraints from the code)) |
| 03:23:24 | <Square> | gotcha. |
| 03:24:42 | <ski> | how would you render fields ? (and was the input reading means to be done in tandem to that ?) |
| 03:24:46 | <Square> | I'm mentally sketching here for an idea I'm not 100% it will work out. I was thinking I could provide a "Eq a" for Choice through hashable, but maybe I need to dumb it down with strings or something. |
| 03:25:40 | <ski> | i'm still wondering why `forall a. (..a..) => Choice (Set a)' would be preferable over `Choice Int' (the `Int' being the `size' of the set in question) |
| 03:26:39 | <ski> | what information would you like to be able to get out of the set, that's not captured by the size of the set ? .. i suspect the rendering of the field comes in play here |
| 03:27:13 | <Square> | case fld of ; Choice set -> fmap render set. And that would require some sort of 'Render a => Choice (Set a)' |
| 03:28:04 | <ski> | also, what are specific candidate types, which `a' could possibly be ? |
| 03:28:09 | <Square> | Q: "i'm still wondering why `forall a. (..a..)..." A: Cause "a" can be wildly different between Choice fields |
| 03:28:56 | <Square> | I'm thinking no-arg sum types. Enum? |
| 03:29:27 | <ski> | a single such type ? or multiple ones ? |
| 03:29:38 | × | mncheck-m quits (~mncheck@193.224.205.254) (Ping timeout: 246 seconds) |
| 03:30:08 | <Square> | Multiple... 100s of different. |
| 03:33:20 | <Square> | That's why its important I get the Eq implementation correct. I need to be able to tell if fld1 == fld2. |
| 03:34:29 | <ski> | and if two sets use different enumeration types, they're to be considered definitely different sets ? |
| 03:34:30 | <Square> | Choice (Set.fromList [A1,A2]) /= Choice (Set.fromList [B1,B2]) |
| 03:34:53 | <Square> | exactly |
| 03:34:55 | <ski> | (the answer to that question isn't obviously "yes") |
| 03:35:36 | <Square> | maybe not, but for me its important. |
| 03:36:02 | <ski> | i guess you may want to use `Typeable', then |
| 03:36:55 | <ski> | you should be able to use `cast' to convert one set into (statically) having the same type as the other one (in case the types are indeed the same) |
| 03:38:59 | <ski> | @type let hetEqSet :: (Typeable a,Typeable b,Eq a,Eq b) => S.Set a -> S.Set b -> Bool; hetEqSet sa sb = case cast sa of Nothing -> False; Just sa -> sa == sb in hetEqSet |
| 03:39:00 | <lambdabot> | (Typeable a, Typeable b, Eq a, Eq b) => S.Set a -> S.Set b -> Bool |
| 03:39:33 | <Square> | sweet! |
| 03:39:41 | <Square> | That looks helpful |
| 03:40:08 | <ski> | (you may still run into other difficulties with the existential, mind) |
| 03:41:07 | <ski> | (of course, nothing in the code of that `hetEqSet' is specific to it handling sets .. but that's the situation you had, so) |
| 03:41:07 | <Square> | I know I know. It's not good form. But yeah, in this case the total type isn't that important. |
| 03:41:26 | → | zmt00 joins (~zmt00@user/zmt00) |
| 03:41:38 | <Square> | ski, thanks a bunch for helping me think along. Much appreciated. |
| 03:42:14 | <ski> | i'm still not convinced using existentials like this, or using `Typeable' here (in case the existential is warranted), is sensible |
| 03:42:50 | <ski> | but you may explore this option further down the road a bit, and perhaps discover some other roadblock later .. or not |
| 03:45:00 | <Square> | what would you suggest instead? Note these flds will be part of tree like structures. A HList like type would be too. Encoding the Choice values to common type would ofcourse be an approach. |
| 03:45:28 | <ski> | i still only have a quite vague idea of what you're really doing, so it's hard to say |
| 03:45:44 | → | nate1 joins (~nate@98.45.169.16) |
| 03:45:54 | <Square> | yeah. ill try this and we'll see. Thanks a bunch. |
| 03:46:17 | <ski> | have fun |
| 03:46:31 | slac19128 | is now known as slack1256 |
| 03:50:07 | × | nate1 quits (~nate@98.45.169.16) (Ping timeout: 252 seconds) |
| 03:50:37 | × | nattiestnate quits (~nate@202.138.250.62) (Quit: WeeChat 3.8) |
| 03:52:52 | × | merijn quits (~merijn@c-001-001-006.client.esciencecenter.eduvpn.nl) (Ping timeout: 252 seconds) |
| 03:53:42 | <ski> | ("Eq seems to be the problematic one as it takes 2 arguments to ==" -- btw, this echoes problems with "binary methods" in OO -- not too surprisingly, since OO can be thought of in terms of existentials) |
| 04:05:20 | × | Square quits (~Square@user/square) (Ping timeout: 246 seconds) |
| 04:07:26 | × | falafel quits (~falafel@2603-8000-d700-115c-557c-00d7-83ff-43f9.res6.spectrum.com) (Ping timeout: 246 seconds) |
| 04:17:34 | × | ddellacosta quits (~ddellacos@143.244.47.73) (Ping timeout: 252 seconds) |
| 04:26:18 | → | berberman joins (~berberman@user/berberman) |
| 04:40:19 | → | szkl joins (uid110435@id-110435.uxbridge.irccloud.com) |
| 04:43:02 | × | [itchyjunk] quits (~itchyjunk@user/itchyjunk/x-7353470) (Remote host closed the connection) |
| 04:55:36 | × | berberman quits (~berberman@user/berberman) (Remote host closed the connection) |
| 04:55:56 | → | berberman joins (~berberman@user/berberman) |
| 05:12:43 | → | bilegeek joins (~bilegeek@2600:1008:b06c:a5bb:d8ca:a8ce:a1a:8895) |
| 05:25:52 | → | trev joins (~trev@user/trev) |
| 05:29:20 | × | JScript quits (~JScript@144.48.39.18) (Ping timeout: 246 seconds) |
| 05:36:04 | × | sgarcia_ quits (sgarcia@swarm.znchost.com) (Quit: Hosted by www.ZNCHost.com) |
| 05:39:14 | → | sgarcia joins (sgarcia@swarm.znchost.com) |
| 05:42:36 | × | wroathe quits (~wroathe@user/wroathe) (Quit: leaving) |
| 05:44:37 | → | JScript joins (~JScript@45.248.77.142) |
| 05:46:53 | × | slack1256 quits (~slack1256@191.125.26.100) (Remote host closed the connection) |
| 05:48:43 | → | merijn joins (~merijn@c-001-001-006.client.esciencecenter.eduvpn.nl) |
| 05:53:50 | × | FinnElija quits (~finn_elij@user/finn-elija/x-0085643) (Remote host closed the connection) |
| 05:53:50 | × | ec quits (~ec@gateway/tor-sasl/ec) (Remote host closed the connection) |
| 05:53:50 | × | bitdex quits (~bitdex@gateway/tor-sasl/bitdex) (Remote host closed the connection) |
| 05:53:51 | × | jpds2 quits (~jpds@gateway/tor-sasl/jpds) (Remote host closed the connection) |
| 05:53:59 | → | thegeekinside joins (~thegeekin@189.180.38.222) |
| 05:54:14 | → | jpds2 joins (~jpds@gateway/tor-sasl/jpds) |
| 05:54:20 | → | ec joins (~ec@gateway/tor-sasl/ec) |
| 05:54:25 | → | FinnElija joins (~finn_elij@user/finn-elija/x-0085643) |
| 05:54:58 | × | gehmehgeh quits (~user@user/gehmehgeh) (Remote host closed the connection) |
| 05:55:00 | → | bitdex joins (~bitdex@gateway/tor-sasl/bitdex) |
| 05:55:01 | × | chiselfuse quits (~chiselfus@user/chiselfuse) (Remote host closed the connection) |
| 05:55:27 | → | chiselfuse joins (~chiselfus@user/chiselfuse) |
| 05:55:44 | → | gehmehgeh joins (~user@user/gehmehgeh) |
| 06:04:08 | → | takuan joins (~takuan@178-116-218-225.access.telenet.be) |
| 06:07:09 | × | werneta quits (~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net) (Quit: Lost terminal) |
| 06:07:54 | → | werneta joins (~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net) |
| 06:15:01 | × | mei quits (~mei@user/mei) (Quit: mei) |
| 06:16:37 | → | mei joins (~mei@user/mei) |
| 06:21:04 | × | bilegeek quits (~bilegeek@2600:1008:b06c:a5bb:d8ca:a8ce:a1a:8895) (Quit: Leaving) |
| 06:22:14 | × | user363627 quits (~user36362@146.70.198.100) (Ping timeout: 250 seconds) |
| 06:22:45 | × | merijn quits (~merijn@c-001-001-006.client.esciencecenter.eduvpn.nl) (Ping timeout: 240 seconds) |
| 06:25:36 | × | jpds2 quits (~jpds@gateway/tor-sasl/jpds) (Remote host closed the connection) |
| 06:26:05 | → | jpds2 joins (~jpds@gateway/tor-sasl/jpds) |
| 06:42:47 | × | szkl quits (uid110435@id-110435.uxbridge.irccloud.com) (Quit: Connection closed for inactivity) |
| 06:43:12 | → | acidjnk_new joins (~acidjnk@p200300d6e715c467d9596cc51d075b5b.dip0.t-ipconnect.de) |
| 06:43:54 | → | falafel joins (~falafel@2603-8000-d700-115c-a14b-5f58-a067-9cc9.res6.spectrum.com) |
| 06:50:12 | → | azimut joins (~azimut@gateway/tor-sasl/azimut) |
| 06:50:56 | × | ec quits (~ec@gateway/tor-sasl/ec) (Ping timeout: 240 seconds) |
| 06:52:40 | × | bitdex quits (~bitdex@gateway/tor-sasl/bitdex) (Remote host closed the connection) |
| 06:53:13 | → | ec joins (~ec@gateway/tor-sasl/ec) |
| 06:53:48 | → | bitdex joins (~bitdex@gateway/tor-sasl/bitdex) |
| 06:54:34 | × | stiell_ quits (~stiell@gateway/tor-sasl/stiell) (Remote host closed the connection) |
| 06:55:03 | → | stiell_ joins (~stiell@gateway/tor-sasl/stiell) |
| 07:01:24 | → | ddellacosta joins (~ddellacos@146.70.168.100) |
| 07:06:56 | → | gnalzo joins (~gnalzo@2a01:e0a:498:fd50:fcc6:bb5d:489a:ce8c) |
| 07:11:51 | × | falafel quits (~falafel@2603-8000-d700-115c-a14b-5f58-a067-9cc9.res6.spectrum.com) (Remote host closed the connection) |
| 07:12:16 | → | falafel joins (~falafel@2603-8000-d700-115c-9d8a-36a2-86b0-529b.res6.spectrum.com) |
| 07:17:08 | × | falafel quits (~falafel@2603-8000-d700-115c-9d8a-36a2-86b0-529b.res6.spectrum.com) (Ping timeout: 246 seconds) |
| 07:22:18 | × | FinnElija quits (~finn_elij@user/finn-elija/x-0085643) (Remote host closed the connection) |
| 07:22:19 | × | gehmehgeh quits (~user@user/gehmehgeh) (Remote host closed the connection) |
| 07:22:27 | × | thegeekinside quits (~thegeekin@189.180.38.222) (Remote host closed the connection) |
| 07:22:52 | → | FinnElija joins (~finn_elij@user/finn-elija/x-0085643) |
| 07:23:03 | → | gehmehgeh joins (~user@user/gehmehgeh) |
| 07:24:46 | × | ec quits (~ec@gateway/tor-sasl/ec) (Remote host closed the connection) |
| 07:25:07 | → | ec joins (~ec@gateway/tor-sasl/ec) |
| 07:34:08 | → | coot joins (~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba) |
| 07:46:56 | → | nate1 joins (~nate@98.45.169.16) |
| 07:48:05 | → | neohtetxyz[m] joins (~neohtetxy@2001:470:69fc:105::3:314c) |
| 07:50:46 | × | tcard quits (~tcard@2400:4051:5801:7500:cf17:befc:ff82:5303) (Remote host closed the connection) |
| 07:51:05 | → | tcard joins (~tcard@2400:4051:5801:7500:cf17:befc:ff82:5303) |
| 07:51:47 | × | nate1 quits (~nate@98.45.169.16) (Ping timeout: 246 seconds) |
| 07:53:31 | → | merijn joins (~merijn@c-001-001-006.client.esciencecenter.eduvpn.nl) |
| 07:54:05 | × | econo quits (uid147250@user/econo) (Quit: Connection closed for inactivity) |
| 07:55:12 | → | gurkenglas joins (~gurkengla@dynamic-046-114-176-011.46.114.pool.telefonica.de) |
| 08:18:23 | × | jespada_ quits (~jespada@cpc121308-nmal25-2-0-cust15.19-2.cable.virginm.net) (Quit: Textual IRC Client: www.textualapp.com) |
| 08:22:48 | × | czy quits (~user@host-140-24.ilcub310.champaign.il.us.clients.pavlovmedia.net) (Remote host closed the connection) |
| 08:25:39 | → | jespada joins (~jespada@cpc121308-nmal25-2-0-cust15.19-2.cable.virginm.net) |
| 08:27:08 | → | GerryH joins (~Brgaammin@p5b375702.dip0.t-ipconnect.de) |
| 08:33:59 | → | acidbong joins (6e5528b381@198.108.77.94) |
| 08:39:46 | → | _ht joins (~Thunderbi@82.174.52.28) |
| 08:46:29 | → | Inst joins (~Inst@2601:6c4:4081:54f0:7880:a3e7:2b04:1611) |
| 08:46:41 | × | trev quits (~trev@user/trev) (Quit: trev) |
| 08:51:51 | × | eggplantade quits (~Eggplanta@2600:1700:38c5:d800:d4d0:8bd2:d805:7ab6) (Remote host closed the connection) |
| 08:57:14 | × | merijn quits (~merijn@c-001-001-006.client.esciencecenter.eduvpn.nl) (Ping timeout: 246 seconds) |
| 08:57:47 | × | bontaq quits (~user@ool-45779b84.dyn.optonline.net) (Ping timeout: 250 seconds) |
| 09:03:34 | → | zeenk joins (~zeenk@2a02:2f04:a20f:5200::7fe) |
| 09:10:43 | → | Digitteknohippie joins (~user@user/digit) |
| 09:11:02 | → | Tuplanolla joins (~Tuplanoll@91-159-68-236.elisa-laajakaista.fi) |
| 09:11:35 | × | Digit quits (~user@user/digit) (Ping timeout: 246 seconds) |
| 09:15:47 | × | pyook quits (~puke@user/puke) (Ping timeout: 246 seconds) |
| 09:16:05 | → | merijn joins (~merijn@c-001-001-006.client.esciencecenter.eduvpn.nl) |
| 09:16:13 | Digitteknohippie | is now known as Digit |
| 09:16:27 | → | zmt01 joins (~zmt00@user/zmt00) |
| 09:19:28 | × | zmt00 quits (~zmt00@user/zmt00) (Ping timeout: 250 seconds) |
| 09:20:45 | × | merijn quits (~merijn@c-001-001-006.client.esciencecenter.eduvpn.nl) (Ping timeout: 240 seconds) |
| 09:22:19 | <Helle> | hrm, is there a canonically reasonable tool for linting Haskell, other then both the compiler and hlint ?, trying to make sure I didn't make a complete mess before continuing, heh |
| 09:25:01 | <geekosaur[m]> | hlint is pretty much it |
| 09:25:40 | <Helle> | shame |
| 09:26:11 | × | alexherbo2 quits (~alexherbo@2a02-842a-8180-4601-85e1-23ae-ea70-6ae4.rev.sfr.net) (Remote host closed the connection) |
| 09:26:13 | <Helle> | I mean the compiler gives more useful warnings then hlint for the most part (also surprised that hlint does not complain about bare imports) |
| 09:26:30 | <[exa]> | Helle: why would it complain when the compiler already complains? |
| 09:26:31 | → | Digitteknohippie joins (~user@user/digit) |
| 09:26:56 | <jade[m]> | hlint is integrated into HLS, right? |
| 09:26:56 | <Helle> | [exa]: because it generates nice reports |
| 09:27:12 | <[exa]> | ah. |
| 09:28:32 | <geekosaur> | HLS uses both pedantic compiler warnings and hlint, yes |
| 09:29:00 | × | Digit quits (~user@user/digit) (Ping timeout: 250 seconds) |
| 09:29:34 | <mauke> | (I like how what gcc calls "pedantic" warnings are the minimum diagnostics required by the C standard) |
| 09:29:37 | → | alexherbo2 joins (~alexherbo@2a02-842a-8180-4601-d5f7-1d09-2f8d-3550.rev.sfr.net) |
| 09:29:58 | <Helle> | mauke: don't get me started on other languages :P |
| 09:31:30 | Digitteknohippie | is now known as Digit |
| 09:38:42 | × | tzh quits (~tzh@24.21.73.154) (Quit: zzz) |
| 09:52:19 | → | eggplantade joins (~Eggplanta@2600:1700:38c5:d800:d4d0:8bd2:d805:7ab6) |
| 09:54:17 | × | GerryH quits (~Brgaammin@p5b375702.dip0.t-ipconnect.de) (Ping timeout: 246 seconds) |
| 09:56:44 | × | eggplantade quits (~Eggplanta@2600:1700:38c5:d800:d4d0:8bd2:d805:7ab6) (Ping timeout: 246 seconds) |
| 09:57:01 | gehmehgeh | is now known as gmg |
| 10:13:10 | × | zaquest quits (~notzaques@5.130.79.72) (Remote host closed the connection) |
| 10:24:51 | × | Sgeo quits (~Sgeo@user/sgeo) (Read error: Connection reset by peer) |
| 10:29:27 | <somerandomnick[m> | a linter is more congruent with a language like python or typescript, where the philosophy is: different coders solving the same problem shall come up with the same code |
| 10:30:21 | <somerandomnick[m> | haskell philosophy is dual to that, hosting the many different EDSL |
| 10:30:26 | <geekosaur> | but the original `lint` was for C |
| 10:31:04 | × | jmdaemon quits (~jmdaemon@user/jmdaemon) (Ping timeout: 252 seconds) |
| 10:31:25 | → | enoq joins (~enoq@2a05:1141:1f5:5600:b9c9:721a:599:bfe7) |
| 10:31:57 | <somerandomnick[m> | I did not know that |
| 10:32:36 | <somerandomnick[m> | anyways in haskell, id rather have the type system "lint" for me |
| 10:33:12 | <somerandomnick[m> | also what would a linter know about balancing out pointfree with pointful style |
| 10:33:41 | <mauke> | the original lint was for C because the compiler couldn't typecheck function calls |
| 10:36:04 | → | xff0x_ joins (~xff0x@fsa056e3ab.kytj202.ap.nuro.jp) |
| 10:42:08 | × | gurkenglas quits (~gurkengla@dynamic-046-114-176-011.46.114.pool.telefonica.de) (Ping timeout: 248 seconds) |
| 10:44:15 | → | GerryH joins (~Brgaammin@p5b375702.dip0.t-ipconnect.de) |
| 10:44:23 | × | Inst quits (~Inst@2601:6c4:4081:54f0:7880:a3e7:2b04:1611) (Ping timeout: 246 seconds) |
| 10:48:27 | × | enoq quits (~enoq@2a05:1141:1f5:5600:b9c9:721a:599:bfe7) (Quit: enoq) |
| 10:53:22 | ← | L29Ah parts (~L29Ah@wikipedia/L29Ah) () |
| 10:54:05 | × | erisco quits (~erisco@d24-141-66-165.home.cgocable.net) (Ping timeout: 240 seconds) |
| 10:55:07 | × | xff0x_ quits (~xff0x@fsa056e3ab.kytj202.ap.nuro.jp) (Ping timeout: 248 seconds) |
| 10:57:14 | → | xff0x_ joins (~xff0x@fsa056e3ab.kytj202.ap.nuro.jp) |
| 11:08:41 | × | zeenk quits (~zeenk@2a02:2f04:a20f:5200::7fe) (Quit: Konversation terminated!) |
| 11:14:20 | × | bitdex quits (~bitdex@gateway/tor-sasl/bitdex) (Quit: = "") |
| 11:16:39 | → | merijn joins (~merijn@c-001-001-006.client.esciencecenter.eduvpn.nl) |
| 11:19:23 | × | coot quits (~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba) (Quit: coot) |
| 11:20:10 | × | GerryH quits (~Brgaammin@p5b375702.dip0.t-ipconnect.de) (Ping timeout: 276 seconds) |
| 11:41:17 | → | nate1 joins (~nate@98.45.169.16) |
| 11:45:56 | × | nate1 quits (~nate@98.45.169.16) (Ping timeout: 246 seconds) |
| 11:50:50 | × | merijn quits (~merijn@c-001-001-006.client.esciencecenter.eduvpn.nl) (Ping timeout: 246 seconds) |
| 11:53:41 | → | stallmanator joins (~stallmana@user/stallmanator) |
| 11:56:16 | → | coot joins (~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba) |
| 11:56:30 | → | titibandit joins (~titibandi@user/titibandit) |
| 11:56:59 | × | coot quits (~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba) (Remote host closed the connection) |
| 11:59:28 | × | xff0x_ quits (~xff0x@fsa056e3ab.kytj202.ap.nuro.jp) (Ping timeout: 248 seconds) |
| 12:00:32 | × | stiell_ quits (~stiell@gateway/tor-sasl/stiell) (Ping timeout: 240 seconds) |
| 12:01:25 | → | xff0x_ joins (~xff0x@fsa056e3ab.kytj202.ap.nuro.jp) |
| 12:06:27 | → | stiell_ joins (~stiell@gateway/tor-sasl/stiell) |
| 12:06:51 | × | alexherbo2 quits (~alexherbo@2a02-842a-8180-4601-d5f7-1d09-2f8d-3550.rev.sfr.net) (Remote host closed the connection) |
| 12:07:19 | → | alexherbo2 joins (~alexherbo@2a02-842a-8180-4601-d5f7-1d09-2f8d-3550.rev.sfr.net) |
| 12:08:11 | → | tremon joins (~tremon@83.80.159.219) |
| 12:12:18 | × | gawen quits (~gawen@user/gawen) (Quit: cya) |
| 12:13:39 | → | gawen joins (~gawen@user/gawen) |
| 12:15:42 | → | Joao003 joins (~Joao003@2804:840:8311:b700:5c98:76bb:dd08:e1ad) |
| 12:17:33 | <Joao003> | Hello |
| 12:18:54 | <[exa]> | o/ |
| 12:21:27 | <Joao003> | [exa]: What |
| 12:22:33 | <[exa]> | wait I'll wave with the other hand, hope you'll see it then |
| 12:22:35 | <[exa]> | \o |
| 12:22:53 | <stallmanator> | hi |
| 12:24:15 | <Joao003> | Oh |
| 12:26:19 | × | gnalzo quits (~gnalzo@2a01:e0a:498:fd50:fcc6:bb5d:489a:ce8c) (Quit: WeeChat 3.8) |
| 12:26:21 | → | pyook joins (~puke@user/puke) |
| 12:26:55 | <Helle> | oooh, I'm already pushing the boundaries of the type system, always fun |
| 12:29:14 | <Helle> | I know I probably shouldn't be doing this |
| 12:29:27 | <[exa]> | Helle: traditionally I have to ask about what direction are you pushing, w.r.t. to the direction towards undecidability |
| 12:29:30 | <[exa]> | :D |
| 12:30:12 | <Helle> | [exa]: quite close, I am reminded that during my bachelor I found a bug in PostgreSQL's query planner that forced it to solve the halting planner |
| 12:30:20 | <Helle> | err, halting problem |
| 12:30:30 | <Helle> | that was fun when I finally realised why the query didn't work |
| 12:31:31 | <Helle> | let's see if I can phrase the question for this, and excuse my incorrect terminology, my Haskell is super rusty |
| 12:31:47 | → | coot joins (~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba) |
| 12:32:19 | <[exa]> | lol cool |
| 12:32:32 | <Joao003> | Halting Problem? Did you mean impossible? |
| 12:32:37 | <Helle> | Joao003: yes |
| 12:32:41 | <Joao003> | XD |
| 12:33:25 | <Helle> | it was also a bug in the query planner, it is supposed to be written in such a way that that never happens, but humans |
| 12:33:28 | <Helle> | anyway |
| 12:33:30 | × | coot quits (~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba) (Remote host closed the connection) |
| 12:35:28 | <Helle> | I have a variable of type Node, https://www.stackage.org/haddock/nightly-2023-04-28/xml-conduit-1.9.1.2/src/Text.XML.html#Node passed to a function, I need to work on only the ones of decomposed type Element and I want it to be an error (ideally a type error) to pass it any Node that has a different underlying type, I currently just pattern match it and pass back a Nothing, but ideally would like the type |
| 12:35:34 | <Helle> | system to help me and eliminate that |
| 12:36:47 | <Joao003> | Guys |
| 12:37:08 | <Helle> | but I am probably short some concept with the type declaration of the function |
| 12:37:18 | <Helle> | (as said, quite rusty) |
| 12:38:27 | <Joao003> | I just solved a kata in Codewars, and 4 people did the most clever thing possible: `Set.toList . Set.fromList` instead of `sort . nub` |
| 12:38:28 | <[exa]> | Helle: why not just go with Element? |
| 12:38:47 | × | pyook quits (~puke@user/puke) (Ping timeout: 246 seconds) |
| 12:39:38 | → | CiaoSen joins (~Jura@tmo-110-209.customers.d1-online.com) |
| 12:39:43 | <Helle> | [exa]: I didn't get to choose to be passed a Node (library function) instead of the Element |
| 12:39:51 | <ncf> | Joao003: nub doesn't need sorting |
| 12:40:41 | <Joao003> | ncf: It does |
| 12:40:50 | <Joao003> | Because of the kata's objective |
| 12:41:08 | <ncf> | ah, you're sorting after nub |
| 12:41:17 | <[exa]> | Helle: then you probably can't typecheck it easily, you'd need to decompose the library function to have the top of the structure represented in types |
| 12:41:49 | × | ft quits (~ft@p4fc2a88b.dip0.t-ipconnect.de) (Remote host closed the connection) |
| 12:42:15 | <[exa]> | (or at least annotated in types, but for that I guess there won't be enough polymorphism) |
| 12:42:43 | <Helle> | [exa]: yeah, I got the feeling that that would be the case |
| 12:43:20 | <[exa]> | (generally, valuechecking by types is hard) |
| 12:43:56 | <Helle> | mhm |
| 12:44:05 | <Joao003> | ncf: The objective of that kata was to get the longest lexicographically sorted string pulling characters from two input strings |
| 12:44:23 | <Joao003> | With distinct characters |
| 12:44:52 | <[exa]> | Helle: otoh you can easily patternmatch on the result and have a relatively sane error handling if not |
| 12:45:07 | × | Alex_test quits (~al_test@178.34.150.15) (Quit: ;-) |
| 12:45:28 | <Helle> | [exa]: yeah, but I can't have compile time checking in that case, right ? |
| 12:45:29 | × | AlexZenon quits (~alzenon@178.34.150.15) (Quit: ;-) |
| 12:45:53 | × | AlexNoo quits (~AlexNoo@178.34.150.15) (Quit: Leaving) |
| 12:45:56 | <[exa]> | Helle: yeah, I kinda guess you're trying to push the typechecker into doing input validation for you |
| 12:46:27 | <Helle> | [exa]: not even |
| 12:46:49 | <Helle> | although good point, that is why the issue exists |
| 12:47:01 | <Helle> | because the pattern is quite similar to that |
| 12:47:08 | → | pyook joins (~puke@user/puke) |
| 12:47:11 | <[exa]> | anyway in cases like this I usually just go for some shortcirtuiting monad like a Maybe that shortcuts when the patternmatch fails |
| 12:48:32 | <[exa]> | e.g. you can have the error handled literally by `x <- element input` where element returns `Maybe Element` |
| 12:48:45 | <Helle> | yep |
| 12:48:58 | <Helle> | literally what it does right now |
| 12:49:14 | <Helle> | (otoh, the underlying type in this case is knowable, but I seem to remember the type checker being forgetful on purpose in cases like this, gah, you are making me actually require some stuff I studied) |
| 12:50:02 | <Joao003> | Oh no |
| 12:50:34 | <Helle> | (Trying to recall if it was a performance choice, or for the exact same reason as why I bugged out the PostgreSQL query planner.....) |
| 12:50:42 | <Joao003> | In the Haskell solutions for a Kata in Codewars, someone didn't know about currying nor `id` XD |
| 12:50:51 | × | alexherbo2 quits (~alexherbo@2a02-842a-8180-4601-d5f7-1d09-2f8d-3550.rev.sfr.net) (Remote host closed the connection) |
| 12:51:13 | <Helle> | Joao003: I mean |
| 12:51:23 | → | alexherbo2 joins (~alexherbo@211.190.65.81.rev.sfr.net) |
| 12:51:24 | <Helle> | never blame someone for still solving it |
| 12:51:31 | Helle | looks at how bad her current code is |
| 12:52:17 | <Joao003> | Take a look at it for yourself |
| 12:53:21 | → | ft joins (~ft@p4fc2a88b.dip0.t-ipconnect.de) |
| 12:53:25 | <Joao003> | https://paste.tomsmeding.com/PELz6Ja5 |
| 12:53:29 | <[exa]> | Helle: anyway yeah the "forgetting" of the structure may be a blocker there, it's beneficial for keeping stuff simple for the compiler but you see, problems. |
| 12:54:47 | <[exa]> | Helle: it might be nicer if e.g. the package allowed you to pass in a functor or an applicative or so, you might then force it to remember stuff using say `MyFunctor Element a` |
| 12:55:05 | <[exa]> | but that gets unwieldy for the package implementors... |
| 12:57:43 | <Helle> | yep |
| 12:58:34 | <Hecate> | not using `id` means that you've spent too much time in your code and need to take a step back |
| 12:58:35 | <Helle> | anyway, I am enjoying running into limits and them turning out to be actual limitations, that shows that I atleast have some grasp of this :) |
| 13:01:32 | <Helle> | also, just remembered, I can make it hit an.... error |
| 13:01:46 | <Helle> | but I think I can produce a more userfriendly instructing some yelling at a dev |
| 13:03:51 | × | euandreh quits (~Thunderbi@189.6.18.7) (Ping timeout: 265 seconds) |
| 13:05:18 | <Hecate> | :D |
| 13:11:02 | <Helle> | (the only failure cases would be am incompatible library update, or new code that does incorrect stuff)w |
| 13:11:02 | <stallmanator> | does the let keyword do anything differently or is it just syntactic sugar? |
| 13:11:58 | × | xff0x_ quits (~xff0x@fsa056e3ab.kytj202.ap.nuro.jp) (Ping timeout: 276 seconds) |
| 13:12:40 | → | L29Ah joins (~L29Ah@wikipedia/L29Ah) |
| 13:13:40 | → | xff0x_ joins (~xff0x@fsa056e3ab.kytj202.ap.nuro.jp) |
| 13:14:17 | → | GerryH joins (~Brgaammin@p5b375702.dip0.t-ipconnect.de) |
| 13:14:46 | <Joao003> | Who uses `let ... in` outside of GHCI? |
| 13:14:57 | ski | |
| 13:15:45 | × | CiaoSen quits (~Jura@tmo-110-209.customers.d1-online.com) (Ping timeout: 240 seconds) |
| 13:16:05 | <ski> | stallmanator : `let' is not syntactic sugar |
| 13:16:27 | <ski> | (and differently from what ?) |
| 13:17:11 | <stallmanator> | the book I'm reading compares let x = 1 to x = 1 |
| 13:17:32 | <ski> | where ? |
| 13:18:24 | <stallmanator> | the part where it introduces let |
| 13:18:31 | ski | 's also delightfully surprised this use of monospace is not terminated by "clear all attributes" |
| 13:18:54 | <ski> | stallmanator : no, i mean, in which context is the book considering those two program fragments ? |
| 13:20:02 | <ski> | are those being placed as commands in a `do', as defining equations in a `where', in the top-level of a module (after its `where'), in the interactor (like GHCi), &c. ? |
| 13:20:02 | × | gmg quits (~user@user/gehmehgeh) (Remote host closed the connection) |
| 13:20:49 | → | gmg joins (~user@user/gehmehgeh) |
| 13:20:51 | <stallmanator> | I'm yet to encounter where but yes I think it's talking in context of ghci |
| 13:21:43 | × | myme quits (~myme@2a01:799:d60:e400:d3f8:a1c2:97a0:2fb) (Ping timeout: 260 seconds) |
| 13:21:46 | <ski> | ok. in *that* specific context, you can leave out the `let' (so the form without `let' could be seen as syntactic sugar) |
| 13:22:19 | <Joao003> | stallmanator: Have you seen `let ... in` yet? |
| 13:22:22 | <stallmanator> | I see, well really thanks help for the help :) |
| 13:22:23 | <ski> | (in other contexts, either the `let' is required, or it's not allowed) |
| 13:22:29 | <stallmanator> | Joao003: yeah I found the wiki page on hackage |
| 13:22:35 | → | myme joins (~myme@2a01:799:d60:e400:62e6:cfdd:2547:9938) |
| 13:23:04 | <stallmanator> | oh sorry my bad: https://wiki.haskell.org/Let_vs._Where this page |
| 13:23:24 | → | AlexNoo joins (~AlexNoo@178.34.150.15) |
| 13:23:28 | <stallmanator> | I heard hackage somewhere and it's been stuck in my head because sounds like a pretty cool name :) |
| 13:24:13 | <ski> | @where hackage |
| 13:24:14 | <lambdabot> | <http://hackage.haskell.org/packages>, also see `revdeps',`status' |
| 13:24:20 | → | AlexZenon joins (~alzenon@178.34.150.15) |
| 13:25:19 | <mauke> | @where revdeps |
| 13:25:19 | <lambdabot> | <http://packdeps.haskellers.com/reverse>,<http://packdeps.haskellers.com/>,<http://www.yesodweb.com/blog/2011/02/reverse-packdeps> |
| 13:25:25 | <mauke> | @where status |
| 13:25:26 | <lambdabot> | <https://status.haskell.org>,<http://auto-status.haskell.org/>,<https://twitter.com/haskellstatus> |
| 13:27:59 | → | Alex_test joins (~al_test@178.34.150.15) |
| 13:31:51 | → | [itchyjunk] joins (~itchyjunk@user/itchyjunk/x-7353470) |
| 13:35:09 | <somerandomnick[m> | ski: does it help the compiler to utilize referential transparency, to avoid re-evaluation? |
| 13:35:28 | <ski> | "it" being ? |
| 13:35:52 | <Joao003> | Is there a non-inclusive `enumFromTo`? |
| 13:36:04 | <ski> | not that i'm aware of |
| 13:36:20 | <ski> | > range (0,9) |
| 13:36:22 | <lambdabot> | [0,1,2,3,4,5,6,7,8,9] |
| 13:36:57 | <int-e> | ski: I've had so many off-by-one errors because of that |
| 13:37:10 | <ski> | `range' or `enumFromTo' ? |
| 13:37:14 | <int-e> | range |
| 13:38:04 | <ski> | > range ((0,2),(3,3)) |
| 13:38:06 | <lambdabot> | [(0,2),(0,3),(1,2),(1,3),(2,2),(2,3),(3,2),(3,3)] |
| 13:38:59 | → | acidjnk joins (~acidjnk@p200300d6e715c46789327d173b2333a9.dip0.t-ipconnect.de) |
| 13:39:05 | <int-e> | . o O ( >>> list(range(0,9)) --> [0, 1, 2, 3, 4, 5, 6, 7, 8] ) |
| 13:39:22 | <ski> | Python ? |
| 13:39:30 | <int-e> | Yes. |
| 13:39:44 | × | titibandit quits (~titibandi@user/titibandit) (Remote host closed the connection) |
| 13:40:00 | <int-e> | And recently, Rust. |
| 13:40:25 | <int-e> | Which has a 0..9 syntax for an iterator over 0,1,...,8 and 0..=9 for 0,1,...,9 |
| 13:40:27 | × | acidjnk_new quits (~acidjnk@p200300d6e715c467d9596cc51d075b5b.dip0.t-ipconnect.de) (Ping timeout: 248 seconds) |
| 13:40:48 | <int-e> | hmm, well, technically it's a range and it auto-converts into an iterator for loops |
| 13:42:26 | <ski> | i'm guessing it doesn't do multi-dimensional ranges |
| 13:42:32 | <ski> | hmm |
| 13:42:57 | → | coot_ joins (~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba) |
| 13:46:06 | × | coot_ quits (~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba) (Client Quit) |
| 13:47:25 | → | coot joins (~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba) |
| 13:47:31 | → | merijn joins (~merijn@c-001-001-006.client.esciencecenter.eduvpn.nl) |
| 13:47:44 | <Joao003> | > enumFromTo "aa" "zz" |
| 13:47:46 | <lambdabot> | error: |
| 13:47:46 | <lambdabot> | • No instance for (Enum [Char]) arising from a use of ‘enumFromTo’ |
| 13:47:46 | <lambdabot> | • In the expression: enumFromTo "aa" "zz" |
| 13:48:14 | <Joao003> | > enumFromTo ('a', 'a') ('z', 'z') |
| 13:48:15 | <lambdabot> | error: |
| 13:48:15 | <lambdabot> | • No instance for (Enum (Char, Char)) |
| 13:48:15 | <lambdabot> | arising from a use of ‘enumFromTo’ |
| 13:49:08 | × | Luj quits (~Luj@2a01:e0a:5f9:9681:5880:c9ff:fe9f:3dfb) (Quit: The Lounge - https://thelounge.chat) |
| 13:49:21 | <geekosaur> | there's at least two possible definitions for that |
| 13:49:37 | <probie> | > join (liftM2 (\x y -> [x,y])) (enumFromTo 'a' 'z') |
| 13:49:39 | <lambdabot> | ["aa","ab","ac","ad","ae","af","ag","ah","ai","aj","ak","al","am","an","ao",... |
| 13:49:39 | <geekosaur> | better to implement the one you want yourself |
| 13:49:59 | <ski> | total order (lexicographic) vs. partial order |
| 13:50:13 | <int-e> | Oh, the range *is* the iterator; it updates the start of the range as you iterate. So with that design it really can't do multi-dimensional ranges. A different design of the library could... |
| 13:50:45 | <int-e> | It's all apples and oranges, of course. |
| 13:50:53 | <ski> | > replicateM 2 ['a' .. 'z'] |
| 13:50:55 | <lambdabot> | ["aa","ab","ac","ad","ae","af","ag","ah","ai","aj","ak","al","am","an","ao",... |
| 13:51:03 | → | Luj joins (~Luj@2a01:e0a:5f9:9681:5880:c9ff:fe9f:3dfb) |
| 13:54:46 | <Joao003> | Who here hates list comprehensions? |
| 13:55:19 | <Joao003> | And how is `map` defined? |
| 13:55:22 | <Joao003> | @src map |
| 13:55:22 | <lambdabot> | map _ [] = [] |
| 13:55:22 | <lambdabot> | map f (x:xs) = f x : map f xs |
| 13:55:26 | <Joao003> | Cool. |
| 13:55:33 | <int-e> | (it's a lie) |
| 13:55:53 | → | eggplantade joins (~Eggplanta@2600:1700:38c5:d800:d4d0:8bd2:d805:7ab6) |
| 13:56:08 | <Joao003> | So it's actually `map f xs = [f x | x <- xs]`? |
| 13:57:27 | <int-e> | No. In fact, GHC.Base does contain that code verbatim. But most of the time, the compiler will rewrite `map f xs` to something else to enable list fusion. |
| 13:57:28 | <Joao003> | The difference between `foldl` and `foldr` can be annoying at times, specifically the folding function's arguments swapping |
| 13:58:06 | <int-e> | And list fusion in turn is essential for making list comprehension not suck. |
| 13:58:06 | <Joao003> | > foldl (-) [5..1] |
| 13:58:08 | <lambdabot> | error: |
| 13:58:08 | <lambdabot> | • No instance for (Num [Integer]) arising from a use of ‘e_151’ |
| 13:58:08 | <lambdabot> | • In the expression: e_151 |
| 13:58:18 | <Joao003> | > foldl (-) 0 [5..1] |
| 13:58:18 | × | Me-me quits (~Me-me@user/me-me) (Quit: Something has gone terribly, terribly wrong, that being that I'm not here any more.) |
| 13:58:19 | <lambdabot> | 0 |
| 13:58:26 | <int-e> | > [5..1] |
| 13:58:28 | <lambdabot> | [] |
| 13:58:32 | <Joao003> | > foldl (-) 0 [1..5] |
| 13:58:35 | <lambdabot> | -15 |
| 13:58:41 | <Joao003> | > foldr (-) 0 [1..5] |
| 13:58:44 | <lambdabot> | 3 |
| 13:58:46 | <Joao003> | Ugh |
| 13:58:58 | <int-e> | Joao003: you can message lambdabot privately too |
| 13:59:29 | <Joao003> | It became 1-(2-(3-(4-(5-0)))) |
| 13:59:42 | <int-e> | of course |
| 13:59:59 | <geekosaur> | easy to remember what foldr does, it replaces , with the operator/function and [] with the base case |
| 14:00:02 | <Joao003> | > foldr (flip (-)) 0 [1..5] |
| 14:00:02 | <int-e> | (what did you expect?) |
| 14:00:04 | <lambdabot> | -15 |
| 14:00:27 | × | eggplantade quits (~Eggplanta@2600:1700:38c5:d800:d4d0:8bd2:d805:7ab6) (Ping timeout: 260 seconds) |
| 14:00:44 | <Joao003> | > scanl (*) 1 [1..10] |
| 14:00:46 | <lambdabot> | [1,1,2,6,24,120,720,5040,40320,362880,3628800] |
| 14:00:49 | <Joao003> | Factorials |
| 14:01:02 | <geekosaur> | sorry replaces (:), you need to look at it in (:) form (the actual list) to understand it |
| 14:01:22 | <probie> | > foldr subtract 0 [1..5] |
| 14:01:27 | <lambdabot> | -15 |
| 14:01:36 | <int-e> | > fix (scanl (+) 0 . (1:)) |
| 14:01:38 | <lambdabot> | [0,1,1,2,3,5,8,13,21,34,55,89,144,233,377,610,987,1597,2584,4181,6765,10946,... |
| 14:01:46 | <Joao003> | > 1:2:3:4:[5] |
| 14:01:47 | <lambdabot> | [1,2,3,4,5] |
| 14:02:11 | <geekosaur> | > 1:2:3:4:5:[] |
| 14:02:13 | <lambdabot> | [1,2,3,4,5] |
| 14:02:43 | <Joao003> | > let snoc = reverse . (:) . reverse in foldl snoc [] [1..5] |
| 14:02:45 | <lambdabot> | error: |
| 14:02:45 | <lambdabot> | • Couldn't match type ‘[[a2]] -> [[a2]]’ with ‘[a3]’ |
| 14:02:45 | <lambdabot> | Expected type: [a2] -> [a3] |
| 14:02:49 | × | xff0x_ quits (~xff0x@fsa056e3ab.kytj202.ap.nuro.jp) (Ping timeout: 252 seconds) |
| 14:02:55 | <Joao003> | > let snoc = reverse . (:) . reverse in foldr snoc [] [1..5] |
| 14:02:57 | <lambdabot> | error: |
| 14:02:57 | <lambdabot> | • Couldn't match type ‘[[a2]] -> [[a2]]’ with ‘[a3]’ |
| 14:02:57 | <lambdabot> | Expected type: [a2] -> [a3] |
| 14:03:03 | <int-e> | Joao003: please experiment somewhere else |
| 14:03:12 | → | pyooque joins (~puke@user/puke) |
| 14:03:12 | puke | is now known as Guest8720 |
| 14:03:12 | × | Guest8720 quits (~puke@user/puke) (Killed (copper.libera.chat (Nickname regained by services))) |
| 14:03:12 | pyooque | is now known as puke |
| 14:03:49 | × | puke quits (~puke@user/puke) (Max SendQ exceeded) |
| 14:04:42 | → | xff0x_ joins (~xff0x@fsa056e3ab.kytj202.ap.nuro.jp) |
| 14:05:05 | → | puke joins (~puke@user/puke) |
| 14:05:52 | × | alexherbo2 quits (~alexherbo@211.190.65.81.rev.sfr.net) (Remote host closed the connection) |
| 14:05:52 | × | puke quits (~puke@user/puke) (Max SendQ exceeded) |
| 14:07:05 | → | puke joins (~puke@user/puke) |
| 14:07:31 | <int-e> | @pl \x xs -> reverse (x : reverse xs) |
| 14:07:32 | <lambdabot> | (reverse .) . (. reverse) . (:) |
| 14:07:42 | <int-e> | (almost pretty) |
| 14:08:34 | → | chomwitt joins (~chomwitt@2a02:587:7a1d:9d00:1ac0:4dff:fedb:a3f1) |
| 14:21:16 | <Helle> | *sigh* "Oh, I wonder where you'd really use id all that much" 10 minutes laters I found a pretty reasonable use for it, so I guess, right there |
| 14:21:41 | × | merijn quits (~merijn@c-001-001-006.client.esciencecenter.eduvpn.nl) (Ping timeout: 246 seconds) |
| 14:23:32 | <ski> | ooc, where did you use it ? |
| 14:25:56 | <Helle> | well, I also just removed it again, heh |
| 14:26:10 | <Helle> | so not that great |
| 14:27:37 | <Helle> | maybe default id, but fromMaybe does just that without requiring the id, though just as many characters :P |
| 14:27:56 | <Helle> | (thanks hlint) |
| 14:39:21 | jade[m] | uploaded an image: (512KiB) < https://libera.ems.host/_matrix/media/v3/download/matrix.org/GbfgntNYrnWgZtoCMUmcnDxN/image.png > |
| 14:39:21 | <jade[m]> | I made this by accident |
| 14:39:22 | <jade[m]> | looks kinda sick |
| 14:40:48 | <int-e> | :t foldMap id -- this one has a name though, `fold` |
| 14:40:49 | <lambdabot> | (Foldable t, Monoid m) => t m -> m |
| 14:44:00 | <int-e> | :t foldr (.) id |
| 14:44:01 | <lambdabot> | Foldable t => t (b -> b) -> b -> b |
| 14:47:49 | ← | L29Ah parts (~L29Ah@wikipedia/L29Ah) () |
| 14:48:22 | → | Square joins (~Square@user/square) |
| 14:51:32 | × | acidjnk quits (~acidjnk@p200300d6e715c46789327d173b2333a9.dip0.t-ipconnect.de) (Ping timeout: 252 seconds) |
| 14:52:29 | <fbytez> | In a statement like the following, does it ever make sense to use `deriving`?: `newtype Thing = Thing String` |
| 14:52:50 | <fbytez> | I was actually expecting a warning or something from the compiler. |
| 14:53:44 | <fbytez> | I was using `data` as I didn't know about `newtype`. |
| 14:54:07 | × | Joao003 quits (~Joao003@2804:840:8311:b700:5c98:76bb:dd08:e1ad) (Quit: Leaving) |
| 14:58:13 | <probie> | fbytez: why wouldn't it make sense to use deriving? |
| 14:58:58 | × | tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Read error: Connection reset by peer) |
| 15:00:23 | <fbytez> | I guess I thought it was closer to `type` than `data`. |
| 15:00:49 | <fbytez> | So, is basically like `data` but without any fields? |
| 15:00:49 | → | trev joins (~trev@user/trev) |
| 15:01:15 | <ski> | you can have `newtype Think = MkThing {getThing :: Spring}' |
| 15:03:49 | <fbytez> | Right. I just got `The constructor of a newtype must have exactly one field` in ghci. |
| 15:05:06 | <fbytez> | So, is there any technical reason to use `newtype` instead of `data`? |
| 15:05:32 | <ski> | there are semantic reasons |
| 15:05:39 | <ncf> | https://wiki.haskell.org/Newtype |
| 15:06:21 | <ski> | `newtype' doesn't add an extra bottom |
| 15:07:29 | <ncf> | @let newtype Thing = Thing String |
| 15:07:30 | <lambdabot> | /sandbox/tmp/.L.hs:165:1: error: |
| 15:07:30 | <lambdabot> | Multiple declarations of ‘Thing’ |
| 15:07:30 | <lambdabot> | Declared at: /sandbox/tmp/.L.hs:163:1 |
| 15:07:39 | <ncf> | > case error "no" of Thing _ -> "yes" |
| 15:07:41 | <lambdabot> | "yes" |
| 15:07:50 | <ncf> | @let data DataThing = Thing String |
| 15:07:51 | <lambdabot> | /sandbox/tmp/.L.hs:165:18: error: |
| 15:07:51 | <lambdabot> | Multiple declarations of ‘Thing’ |
| 15:07:51 | <lambdabot> | Declared at: /sandbox/tmp/.L.hs:163:17 |
| 15:07:57 | <ncf> | @let data DataThing = DataThing String |
| 15:07:59 | <lambdabot> | Defined. |
| 15:08:03 | <ncf> | > case error "no" of DataThing _ -> "yes" |
| 15:08:05 | <lambdabot> | "*Exception: no |
| 15:08:40 | <ski> | `newtype' data constructors are also always strict |
| 15:09:13 | <ski> | (but matching on them is a no-op, unlike matching on (all) `data' constructors) |
| 15:11:49 | <fbytez> | The wiki page that ncf shared seems informative but I don't quite get it yet. |
| 15:13:53 | <ski> | in terms of implementation, `data Foo = MkFoo Bar' adds some extra memory for `MkFoo', over the plain `Bar', but `newtype Foo = MkFoo Bar' doesn't, the representation for a `Foo' is the same as the one for a `Bar', so converting between the two is a no-op |
| 15:14:08 | → | econo joins (uid147250@user/econo) |
| 15:15:22 | → | gurkenglas joins (~gurkengla@dynamic-046-114-176-011.46.114.pool.telefonica.de) |
| 15:15:40 | <ski> | if `Bar' is `Bool', then the possible values for `Foo', if it's a `data' type, are `_|_',`MkFoo _|_',`MkFoo False',`MkFoo True'. but if `Foo' is a `newtype', then `_|_' and `MkFoo _|_' are not distinct |
| 15:16:13 | <ski> | (in case you're unsure, perhaps now is the time to ask about what `_|_' means) |
| 15:21:19 | <fbytez> | That's helpful, ski, thankyou. |
| 15:22:38 | × | GerryH quits (~Brgaammin@p5b375702.dip0.t-ipconnect.de) (Ping timeout: 246 seconds) |
| 15:22:54 | → | heraldo joins (~heraldo@user/heraldo) |
| 15:23:20 | <ncf> | it means someone doesn't know how to type ⊥ |
| 15:24:04 | <heraldo> | It means she shouldn't look over her shoulder at you when she walks away. |
| 15:25:58 | ← | heraldo parts (~heraldo@user/heraldo) () |
| 15:27:20 | × | trev quits (~trev@user/trev) (*.net *.split) |
| 15:27:20 | × | Alex_test quits (~al_test@178.34.150.15) (*.net *.split) |
| 15:27:20 | × | myme quits (~myme@2a01:799:d60:e400:62e6:cfdd:2547:9938) (*.net *.split) |
| 15:27:20 | × | tremon quits (~tremon@83.80.159.219) (*.net *.split) |
| 15:27:20 | × | werneta quits (~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net) (*.net *.split) |
| 15:27:20 | × | takuan quits (~takuan@178-116-218-225.access.telenet.be) (*.net *.split) |
| 15:27:20 | × | sus0 quits (zero@user/zeromomentum) (*.net *.split) |
| 15:27:20 | × | talismanick quits (~user@2601:204:ef80:6c80::a8e2) (*.net *.split) |
| 15:27:20 | × | vulpine quits (xfnw@tilde.team) (*.net *.split) |
| 15:27:20 | × | johnw quits (~johnw@76-234-69-149.lightspeed.frokca.sbcglobal.net) (*.net *.split) |
| 15:27:20 | × | ix quits (~ix@2a02:8012:281f:0:d65d:64ff:fe52:5efe) (*.net *.split) |
| 15:27:20 | × | PHO` quits (~pho@akari.cielonegro.org) (*.net *.split) |
| 15:27:20 | × | pieguy128_ quits (~pieguy128@bras-base-mtrlpq5031w-grc-56-65-92-162-12.dsl.bell.ca) (*.net *.split) |
| 15:27:20 | × | bgamari_ quits (~bgamari@64.223.233.113) (*.net *.split) |
| 15:27:20 | × | Philonous quits (~Philonous@user/philonous) (*.net *.split) |
| 15:27:20 | × | Unode quits (~Unode@fg-ext-220.embl.de) (*.net *.split) |
| 15:27:20 | × | yaroot quits (~yaroot@2400:4052:ac0:d900:1cf4:2aff:fe51:c04c) (*.net *.split) |
| 15:27:20 | × | telser quits (~quassel@user/telser) (*.net *.split) |
| 15:27:20 | × | Profpatsch quits (~Profpatsc@static.88-198-193-255.clients.your-server.de) (*.net *.split) |
| 15:27:20 | × | lambdabot quits (~lambdabot@haskell/bot/lambdabot) (*.net *.split) |
| 15:27:20 | × | sa quits (sid1055@id-1055.tinside.irccloud.com) (*.net *.split) |
| 15:27:20 | × | NiKaN quits (sid385034@id-385034.helmsley.irccloud.com) (*.net *.split) |
| 15:27:20 | × | megeve quits (sid523379@id-523379.hampstead.irccloud.com) (*.net *.split) |
| 15:27:20 | × | rubin55 quits (sid175221@id-175221.hampstead.irccloud.com) (*.net *.split) |
| 15:27:20 | × | astra quits (sid289983@user/amish) (*.net *.split) |
| 15:27:20 | × | welterde quits (welterde@thinkbase.srv.welterde.de) (*.net *.split) |
| 15:27:20 | × | TMA quits (tma@twin.jikos.cz) (*.net *.split) |
| 15:27:20 | × | energizer quits (~energizer@user/energizer) (*.net *.split) |
| 15:27:20 | × | dagit quits (~dagit@2001:558:6025:38:71c6:9d58:7252:8976) (*.net *.split) |
| 15:27:20 | × | SoF quits (~skius@user/skius) (*.net *.split) |
| 15:27:20 | × | kawzeg_ quits (kawzeg@2a01:7e01::f03c:92ff:fee2:ec34) (*.net *.split) |
| 15:27:20 | × | codedmart quits (~codedmart@li335-49.members.linode.com) (*.net *.split) |
| 15:27:20 | × | bonz060 quits (~quassel@2001:bc8:47a4:a23::1) (*.net *.split) |
| 15:27:20 | × | acro quits (~acro@user/acro) (*.net *.split) |
| 15:27:20 | × | acidsys quits (~crameleon@openSUSE/member/crameleon) (*.net *.split) |
| 15:27:20 | × | nonzen quits (~nonzen@user/nonzen) (*.net *.split) |
| 15:27:20 | × | aaronm04 quits (~user@user/aaronm04) (*.net *.split) |
| 15:27:20 | × | ames quits (~amelia@offtopia/offtopian/amelia) (*.net *.split) |
| 15:27:20 | × | haveo_ quits (~haveo@sl35.iuwt.fr) (*.net *.split) |
| 15:27:20 | × | xnbya2 quits (~xnbya@2a01:4f8:c17:cbdd::1) (*.net *.split) |
| 15:27:20 | × | Fangs quits (sid141280@id-141280.hampstead.irccloud.com) (*.net *.split) |
| 15:27:20 | × | mxs quits (~mxs@user/mxs) (*.net *.split) |
| 15:27:20 | × | rune quits (sid21167@id-21167.ilkley.irccloud.com) (*.net *.split) |
| 15:27:20 | × | fiddlerwoaroof quits (~fiddlerwo@user/fiddlerwoaroof) (*.net *.split) |
| 15:27:20 | × | jackdk quits (sid373013@cssa/jackdk) (*.net *.split) |
| 15:27:20 | × | mustafa quits (sid502723@rockylinux/releng/mustafa) (*.net *.split) |
| 15:27:20 | × | parseval quits (sid239098@id-239098.helmsley.irccloud.com) (*.net *.split) |
| 15:27:20 | × | T_S_ quits (sid501726@id-501726.uxbridge.irccloud.com) (*.net *.split) |
| 15:27:20 | × | bw quits (sid2730@user/betawaffle) (*.net *.split) |
| 15:27:20 | × | JSharp quits (sid4580@id-4580.lymington.irccloud.com) (*.net *.split) |
| 15:27:20 | × | buhman quits (sid411355@user/buhman) (*.net *.split) |
| 15:27:20 | × | mhatta quits (~mhatta@www21123ui.sakura.ne.jp) (*.net *.split) |
| 15:27:20 | × | integral quits (sid296274@user/integral) (*.net *.split) |
| 15:27:20 | × | bjs quits (sid190364@user/bjs) (*.net *.split) |
| 15:27:20 | × | Boarders___ quits (sid425905@2a03:5180:f:2::6:7fb1) (*.net *.split) |
| 15:27:20 | × | Kamuela quits (sid111576@2a03:5180:f::1:b3d8) (*.net *.split) |
| 15:27:20 | × | conjunctive quits (sid433686@2a03:5180:f:1::6:9e16) (*.net *.split) |
| 15:27:20 | × | gonz_______ quits (sid304396@2a03:5180:f:2::4:a50c) (*.net *.split) |
| 15:27:20 | × | hamishmack quits (sid389057@2a03:5180:f:4::5:efc1) (*.net *.split) |
| 15:27:20 | × | agander_m quits (sid407952@2a03:5180:f::6:3990) (*.net *.split) |
| 15:27:20 | × | sa1 quits (sid7690@id-7690.ilkley.irccloud.com) (*.net *.split) |
| 15:27:20 | × | jonrh quits (sid5185@id-5185.ilkley.irccloud.com) (*.net *.split) |
| 15:27:29 | → | xnbya joins (~xnbya@2a01:4f8:c17:cbdd::1) |
| 15:27:30 | → | lambdabot joins (~lambdabot@silicon.int-e.eu) |
| 15:27:30 | → | mxs joins (~mxs@user/mxs) |
| 15:27:34 | → | takuan joins (~takuan@178-116-218-225.access.telenet.be) |
| 15:27:34 | → | Unode joins (~Unode@fg-ext-220.embl.de) |
| 15:27:36 | → | parseval joins (sid239098@id-239098.helmsley.irccloud.com) |
| 15:27:37 | → | werneta joins (~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net) |
| 15:27:37 | → | TMA joins (tma@twin.jikos.cz) |
| 15:27:38 | → | codedmart joins (~codedmart@li335-49.members.linode.com) |
| 15:27:38 | → | johnw joins (~johnw@76-234-69-149.lightspeed.frokca.sbcglobal.net) |
| 15:27:39 | → | Alex_test joins (~al_test@178.34.150.15) |
| 15:27:40 | → | Fangs joins (sid141280@id-141280.hampstead.irccloud.com) |
| 15:27:41 | → | bonz060 joins (~quassel@2001:bc8:47a4:a23::1) |
| 15:27:46 | → | talismanick joins (~user@2601:204:ef80:6c80::a8e2) |
| 15:27:51 | → | rune joins (sid21167@id-21167.ilkley.irccloud.com) |
| 15:27:51 | × | lambdabot quits (~lambdabot@silicon.int-e.eu) (Changing host) |
| 15:27:51 | → | lambdabot joins (~lambdabot@haskell/bot/lambdabot) |
| 15:27:53 | → | kawzeg_ joins (kawzeg@2a01:7e01::f03c:92ff:fee2:ec34) |
| 15:27:56 | → | conjunctive joins (sid433686@id-433686.helmsley.irccloud.com) |
| 15:27:57 | → | myme joins (~myme@2a01:799:d60:e400:62e6:cfdd:2547:9938) |
| 15:27:57 | → | Profpatsch joins (~Profpatsc@static.88-198-193-255.clients.your-server.de) |
| 15:27:57 | → | jackdk joins (sid373013@id-373013.tinside.irccloud.com) |
| 15:27:58 | → | trev joins (~trev@109-252-34-44.nat.spd-mgts.ru) |
| 15:28:06 | → | bw_ joins (sid2730@user/betawaffle) |
| 15:28:07 | → | hamishmack joins (sid389057@id-389057.hampstead.irccloud.com) |
| 15:28:08 | → | Kamuela joins (sid111576@2a03:5180:f::1:b3d8) |
| 15:28:10 | → | jonrh joins (sid5185@id-5185.ilkley.irccloud.com) |
| 15:28:11 | → | sus0 joins (zero@user/zeromomentum) |
| 15:28:11 | → | gonz_______ joins (sid304396@id-304396.lymington.irccloud.com) |
| 15:28:12 | → | agander_m joins (sid407952@2a03:5180:f::6:3990) |
| 15:28:13 | → | megeve joins (sid523379@id-523379.hampstead.irccloud.com) |
| 15:28:15 | → | welterde joins (welterde@thinkbase.srv.welterde.de) |
| 15:28:15 | → | T_S_ joins (sid501726@id-501726.uxbridge.irccloud.com) |
| 15:28:16 | → | rubin55 joins (sid175221@id-175221.hampstead.irccloud.com) |
| 15:28:19 | → | ix joins (~ix@2a02:8012:281f:0:d65d:64ff:fe52:5efe) |
| 15:28:19 | → | bjs joins (sid190364@id-190364.helmsley.irccloud.com) |
| 15:28:19 | → | astra joins (sid289983@id-289983.hampstead.irccloud.com) |
| 15:28:19 | → | integral joins (sid296274@id-296274.lymington.irccloud.com) |
| 15:28:19 | → | mustafa joins (sid502723@id-502723.hampstead.irccloud.com) |
| 15:28:22 | → | Boarders___ joins (sid425905@id-425905.lymington.irccloud.com) |
| 15:28:31 | → | sa1 joins (sid7690@id-7690.ilkley.irccloud.com) |
| 15:28:33 | × | jackdk quits (sid373013@id-373013.tinside.irccloud.com) (Changing host) |
| 15:28:33 | → | jackdk joins (sid373013@cssa/jackdk) |
| 15:28:34 | → | acidsys joins (~crameleon@openSUSE/member/crameleon) |
| 15:28:34 | × | trev quits (~trev@109-252-34-44.nat.spd-mgts.ru) (Changing host) |
| 15:28:34 | → | trev joins (~trev@user/trev) |
| 15:28:44 | → | sa joins (sid1055@2a03:5180:f::41f) |
| 15:28:58 | → | buhman joins (sid411355@id-411355.tinside.irccloud.com) |
| 15:29:00 | → | JSharp joins (sid4580@id-4580.lymington.irccloud.com) |
| 15:29:01 | × | bjs quits (sid190364@id-190364.helmsley.irccloud.com) (Changing host) |
| 15:29:01 | → | bjs joins (sid190364@user/bjs) |
| 15:29:01 | × | integral quits (sid296274@id-296274.lymington.irccloud.com) (Changing host) |
| 15:29:01 | → | integral joins (sid296274@user/integral) |
| 15:29:04 | × | mustafa quits (sid502723@id-502723.hampstead.irccloud.com) (Changing host) |
| 15:29:04 | → | mustafa joins (sid502723@rockylinux/releng/mustafa) |
| 15:29:07 | → | bgamari joins (~bgamari@64.223.233.113) |
| 15:29:13 | × | buhman quits (sid411355@id-411355.tinside.irccloud.com) (Changing host) |
| 15:29:13 | → | buhman joins (sid411355@user/buhman) |
| 15:29:22 | → | NiKaN joins (sid385034@id-385034.helmsley.irccloud.com) |
| 15:29:23 | → | yaroot joins (~yaroot@2400:4052:ac0:d900:1cf4:2aff:fe51:c04c) |
| 15:29:33 | → | mhatta joins (~mhatta@www21123ui.sakura.ne.jp) |
| 15:29:36 | ix | is now known as Guest3954 |
| 15:29:41 | → | pieguy128 joins (~pieguy128@bas1-montreal02-65-92-162-12.dsl.bell.ca) |
| 15:29:52 | → | tremon joins (~tremon@83.80.159.219) |
| 15:29:53 | → | telser joins (~quassel@user/telser) |
| 15:29:58 | → | Philonous joins (~Philonous@user/philonous) |
| 15:30:19 | → | nonzen joins (~nonzen@user/nonzen) |
| 15:30:43 | → | PHO` joins (~pho@2406:da14:856:600:e03a:2c8f:39c:7838) |
| 15:30:44 | → | aaronm04 joins (~user@user/aaronm04) |
| 15:30:46 | → | energizer joins (~energizer@user/energizer) |
| 15:30:59 | × | ryantrinkle quits (~ryantrink@204.2.88.230) (Ping timeout: 246 seconds) |
| 15:31:13 | → | vulpine joins (xfnw@tilde.team) |
| 15:33:00 | → | haveo joins (~haveo@51.15.176.9) |
| 15:33:29 | → | acro joins (~acro@user/acro) |
| 15:33:59 | × | welterde quits (welterde@thinkbase.srv.welterde.de) (Quit: WeeChat 3.0.1) |
| 15:34:10 | → | welterde joins (welterde@thinkbase.srv.welterde.de) |
| 15:34:33 | → | fiddlerwoaroof joins (~fiddlerwo@user/fiddlerwoaroof) |
| 15:37:04 | × | gurkenglas quits (~gurkengla@dynamic-046-114-176-011.46.114.pool.telefonica.de) (Ping timeout: 248 seconds) |
| 15:37:52 | × | Profpatsch quits (~Profpatsc@static.88-198-193-255.clients.your-server.de) (Quit: WeeChat 3.8) |
| 15:38:06 | → | Profpatsch joins (~Profpatsc@static.88-198-193-255.clients.your-server.de) |
| 15:38:54 | → | gurkenglas joins (~gurkengla@dynamic-046-114-179-053.46.114.pool.telefonica.de) |
| 15:40:05 | × | xff0x_ quits (~xff0x@fsa056e3ab.kytj202.ap.nuro.jp) (Ping timeout: 246 seconds) |
| 15:43:10 | → | nate1 joins (~nate@98.45.169.16) |
| 15:46:05 | → | ryantrinkle joins (~ryantrink@204.2.88.230) |
| 15:47:42 | × | nate1 quits (~nate@98.45.169.16) (Ping timeout: 265 seconds) |
| 15:49:10 | → | gnalzo joins (~gnalzo@2a01:e0a:498:fd50:fcc6:bb5d:489a:ce8c) |
| 15:56:23 | → | JScript2 joins (~JScript@cpe-172-193-181-254.qld.foxtel.net.au) |
| 15:56:44 | → | alexherbo2 joins (~alexherbo@2a02-842a-8180-4601-d5f7-1d09-2f8d-3550.rev.sfr.net) |
| 16:00:58 | × | JScript quits (~JScript@45.248.77.142) (Ping timeout: 276 seconds) |
| 16:02:00 | → | harveypwca joins (~harveypwc@2601:246:c180:a570:3828:d8:e523:3f67) |
| 16:04:33 | → | ames joins (~amelia@offtopia/offtopian/amelia) |
| 16:09:31 | × | harveypwca quits (~harveypwc@2601:246:c180:a570:3828:d8:e523:3f67) (Quit: Leaving) |
| 16:12:35 | × | hammond quits (proscan@gateway02.insomnia247.nl) (Changing host) |
| 16:12:35 | → | hammond joins (proscan@user/hammond2) |
| 16:14:52 | → | nicm[m] joins (~nicmollel@2001:470:69fc:105::1:feeb) |
| 16:17:31 | × | gurkenglas quits (~gurkengla@dynamic-046-114-179-053.46.114.pool.telefonica.de) (Ping timeout: 240 seconds) |
| 16:18:06 | → | merijn joins (~merijn@c-001-001-006.client.esciencecenter.eduvpn.nl) |
| 16:34:40 | → | eggplantade joins (~Eggplanta@2600:1700:38c5:d800:d4d0:8bd2:d805:7ab6) |
| 16:35:00 | → | L29Ah joins (~L29Ah@wikipedia/L29Ah) |
| 16:37:29 | × | Square quits (~Square@user/square) (Ping timeout: 246 seconds) |
| 16:42:23 | × | chomwitt quits (~chomwitt@2a02:587:7a1d:9d00:1ac0:4dff:fedb:a3f1) (Remote host closed the connection) |
| 16:43:05 | → | swamp_ joins (~zmt00@user/zmt00) |
| 16:46:03 | × | zmt01 quits (~zmt00@user/zmt00) (Ping timeout: 248 seconds) |
| 16:47:27 | × | JScript2 quits (~JScript@cpe-172-193-181-254.qld.foxtel.net.au) (Read error: Connection reset by peer) |
| 16:47:54 | → | JScript joins (~JScript@103.137.12.21) |
| 16:48:13 | → | SoF joins (~skius@user/skius) |
| 16:50:10 | × | pavonia quits (~user@user/siracusa) (Quit: Bye!) |
| 16:52:45 | × | merijn quits (~merijn@c-001-001-006.client.esciencecenter.eduvpn.nl) (Ping timeout: 256 seconds) |
| 16:57:14 | → | tzh joins (~tzh@c-24-21-73-154.hsd1.or.comcast.net) |
| 17:00:16 | × | werneta quits (~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net) (Ping timeout: 248 seconds) |
| 17:02:11 | → | werneta joins (~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net) |
| 17:04:45 | × | coot quits (~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba) (Quit: coot) |
| 17:10:47 | → | fsestini joins (~fsestini@5.151.90.160) |
| 17:22:15 | <sm> | looks very nice |
| 17:22:22 | × | alexherbo2 quits (~alexherbo@2a02-842a-8180-4601-d5f7-1d09-2f8d-3550.rev.sfr.net) (Remote host closed the connection) |
| 17:22:37 | → | alexherbo2 joins (~alexherbo@2a02-842a-8180-4601-d5f7-1d09-2f8d-3550.rev.sfr.net) |
| 17:25:33 | × | alexherbo2 quits (~alexherbo@2a02-842a-8180-4601-d5f7-1d09-2f8d-3550.rev.sfr.net) (Remote host closed the connection) |
| 17:25:46 | → | alexherbo2 joins (~alexherbo@2a02-842a-8180-4601-d5f7-1d09-2f8d-3550.rev.sfr.net) |
| 17:33:34 | → | Guest|82 joins (~Guest|82@pd9e0ad5b.dip0.t-ipconnect.de) |
| 17:36:04 | × | alexherbo2 quits (~alexherbo@2a02-842a-8180-4601-d5f7-1d09-2f8d-3550.rev.sfr.net) (Remote host closed the connection) |
| 17:36:20 | → | alexherbo2 joins (~alexherbo@2a02-842a-8180-4601-d5f7-1d09-2f8d-3550.rev.sfr.net) |
| 17:40:37 | × | alexherbo2 quits (~alexherbo@2a02-842a-8180-4601-d5f7-1d09-2f8d-3550.rev.sfr.net) (Remote host closed the connection) |
| 17:41:28 | → | alexherbo2 joins (~alexherbo@2a02-842a-8180-4601-d5f7-1d09-2f8d-3550.rev.sfr.net) |
| 17:50:03 | × | ryantrinkle quits (~ryantrink@204.2.88.230) (Ping timeout: 260 seconds) |
| 17:51:26 | → | wootehfoot joins (~wootehfoo@user/wootehfoot) |
| 17:52:21 | jade[m] | uploaded an image: (186KiB) < https://libera.ems.host/_matrix/media/v3/download/matrix.org/rMfrmjpTVaUROQSFsHIpjytX/image.png > |
| 17:52:22 | <jade[m]> | Not sure if I'm happy with this code |
| 17:53:57 | → | extor joins (~extor@2001:41d0:1004:636::1) |
| 17:59:43 | × | alexherbo2 quits (~alexherbo@2a02-842a-8180-4601-d5f7-1d09-2f8d-3550.rev.sfr.net) (Remote host closed the connection) |
| 18:00:15 | → | alexherbo2 joins (~alexherbo@2a02-842a-8180-4601-d5f7-1d09-2f8d-3550.rev.sfr.net) |
| 18:03:02 | <geekosaur> | at some point you should learn to use a pastebin; it's really hard to cut and paste from an image |
| 18:04:02 | × | extor quits (~extor@2001:41d0:1004:636::1) (Quit: ZNC 1.8.2+deb2build5 - https://znc.in) |
| 18:06:20 | × | talismanick quits (~user@2601:204:ef80:6c80::a8e2) (Remote host closed the connection) |
| 18:08:10 | → | extor joins (~extor@ns3018124.ip-149-202-82.eu) |
| 18:13:09 | → | tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
| 18:14:34 | → | [_] joins (~itchyjunk@user/itchyjunk/x-7353470) |
| 18:14:41 | <[exa]> | (not to mention the font choices that don't really port across screens and viewing conditions) |
| 18:14:45 | × | [itchyjunk] quits (~itchyjunk@user/itchyjunk/x-7353470) (Remote host closed the connection) |
| 18:16:05 | × | pieguy128 quits (~pieguy128@bas1-montreal02-65-92-162-12.dsl.bell.ca) (Quit: ZNC 1.8.2 - https://znc.in) |
| 18:16:25 | → | pieguy128 joins (~pieguy128@bras-base-mtrlpq5031w-grc-56-65-92-162-12.dsl.bell.ca) |
| 18:18:33 | × | fsestini quits (~fsestini@5.151.90.160) (Ping timeout: 245 seconds) |
| 18:19:45 | → | zeenk joins (~zeenk@2a02:2f04:a20f:5200::7fe) |
| 18:24:21 | <somerandomnick[m> | it is pretty. |
| 18:24:23 | <somerandomnick[m> | you did it |
| 18:25:42 | <somerandomnick[m> | ll 16-12 is python style though |
| 18:26:03 | → | wroathe joins (~wroathe@207-153-38-140.fttp.usinternet.com) |
| 18:26:03 | × | wroathe quits (~wroathe@207-153-38-140.fttp.usinternet.com) (Changing host) |
| 18:26:03 | → | wroathe joins (~wroathe@user/wroathe) |
| 18:26:49 | somerandomnick[m | sent a code block: https://libera.ems.host/_matrix/media/v3/download/libera.chat/089612aff82d71194d8eac553c2eff5295660b5a |
| 18:26:55 | <somerandomnick[m> | what do you think about this style |
| 18:27:27 | → | coot joins (~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba) |
| 18:27:38 | <jade[m]> | It's what the lsp format did haha |
| 18:27:45 | <jade[m]> | I originally had it inline |
| 18:28:00 | → | Guest4285 joins (~Guest42@ip5f5be7a8.dynamic.kabel-deutschland.de) |
| 18:28:24 | <somerandomnick[m> | helpful tools being helpful as always |
| 18:28:33 | × | Guest4285 quits (~Guest42@ip5f5be7a8.dynamic.kabel-deutschland.de) (Client Quit) |
| 18:32:25 | × | hugo quits (znc@verdigris.lysator.liu.se) (Ping timeout: 276 seconds) |
| 18:40:11 | → | TonyStone joins (~TonyStone@cpe-74-76-57-186.nycap.res.rr.com) |
| 18:43:04 | [_] | is now known as [itchyjunk] |
| 18:43:33 | → | hugo joins (znc@verdigris.lysator.liu.se) |
| 18:47:28 | × | brettgilio quits (~brettgili@147.182.241.1) (Ping timeout: 248 seconds) |
| 18:56:48 | → | thejdoe joins (~thejdoe@201-35-245-62.user3p.brasiltelecom.net.br) |
| 18:57:45 | → | Guest7110 joins (~Guest71@201-35-245-62.user3p.brasiltelecom.net.br) |
| 18:59:08 | → | Bocaneri joins (~sauvin@user/Sauvin) |
| 18:59:31 | Bocaneri | is now known as Guest1315 |
| 19:00:59 | × | Sauvin quits (~sauvin@user/Sauvin) (Ping timeout: 246 seconds) |
| 19:05:31 | → | GerryH joins (~Brgaammin@ip-046-223-087-181.um13.pools.vodafone-ip.de) |
| 19:06:11 | × | GerryH quits (~Brgaammin@ip-046-223-087-181.um13.pools.vodafone-ip.de) (Client Quit) |
| 19:15:52 | × | wroathe quits (~wroathe@user/wroathe) (Quit: leaving) |
| 19:21:04 | → | michalz joins (~michalz@185.246.207.221) |
| 19:21:12 | → | Sgeo joins (~Sgeo@user/sgeo) |
| 19:22:36 | × | Guest7110 quits (~Guest71@201-35-245-62.user3p.brasiltelecom.net.br) (Quit: Client closed) |
| 19:26:30 | × | bitmapper quits (uid464869@id-464869.lymington.irccloud.com) (Quit: Connection closed for inactivity) |
| 19:29:28 | <monochrom> | I wonder how long it takes the young generation to realize that in response to our "pastebin not pics" they can reply "you can OCR if you need to". |
| 19:30:14 | <monochrom> | Cf. https://xkcd.com/763/ |
| 19:31:24 | <geekosaur> | they didn't even receive it (or yours), the bridge isn't relaying from irc to matrix |
| 19:31:41 | <geekosaur> | which I have just been informed is "operating normally: 😞 |
| 19:31:51 | <mauke> | ooh, secret chats |
| 19:32:11 | <mauke> | we call it information hiding |
| 19:32:21 | <monochrom> | Well, we don't actually want the young generation to see what I said there, right? >:) |
| 19:35:54 | <int-e> | geekosaur: Wait what? What's the bridge for then, just advertising the m*****x platform? |
| 19:36:09 | <geekosaur> | no clue |
| 19:36:28 | <geekosaur> | I'm not the only one seeing it either, nothing IRC-side is making it to matrix |
| 19:36:33 | <int-e> | I swear I've had discussions with [m] folks recently. |
| 19:36:53 | <geekosaur> | (I had some overnight, this only started a few hours ago |
| 19:38:08 | × | trev quits (~trev@user/trev) (Quit: trev) |
| 19:38:16 | <int-e> | maybe it's a late April Fool's joke |
| 19:38:42 | Guest1315 | is now known as Sauvin |
| 19:44:25 | → | nate1 joins (~nate@98.45.169.16) |
| 19:48:59 | × | michalz quits (~michalz@185.246.207.221) (Remote host closed the connection) |
| 19:49:19 | → | acidjnk joins (~acidjnk@p200300d6e715c46489327d173b2333a9.dip0.t-ipconnect.de) |
| 19:49:31 | × | nate1 quits (~nate@98.45.169.16) (Ping timeout: 260 seconds) |
| 19:50:23 | <remexre> | https://ghc.gitlab.haskell.org/ghc/doc/users_guide/exts/type_data.html |
| 19:50:40 | <remexre> | looks like someone forgot the syntax for comments lol |
| 19:50:53 | <remexre> | (the bottom two code blocks) |
| 19:51:25 | <geekosaur> | lol |
| 19:51:44 | <mauke> | I mean, it does say that the code is invalid |
| 19:55:51 | <hpc> | this is why i only use semicolon comments |
| 19:56:50 | → | gurkenglas joins (~gurkengla@dynamic-046-114-179-053.46.114.pool.telefonica.de) |
| 20:00:20 | → | pavonia joins (~user@user/siracusa) |
| 20:04:07 | × | puke quits (~puke@user/puke) (Quit: puke) |
| 20:05:15 | × | _ht quits (~Thunderbi@82.174.52.28) (Remote host closed the connection) |
| 20:08:59 | → | Guest7148 joins (~Guest71@201-35-245-62.user3p.brasiltelecom.net.br) |
| 20:25:35 | → | puke joins (~puke@user/puke) |
| 20:26:49 | × | Guest7148 quits (~Guest71@201-35-245-62.user3p.brasiltelecom.net.br) (Quit: Client closed) |
| 20:26:49 | × | thejdoe quits (~thejdoe@201-35-245-62.user3p.brasiltelecom.net.br) (Remote host closed the connection) |
| 20:31:55 | × | coot quits (~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba) (Quit: coot) |
| 20:35:15 | × | puke quits (~puke@user/puke) (Remote host closed the connection) |
| 20:49:34 | → | puke joins (~puke@user/puke) |
| 20:50:15 | → | fun-safe-math joins (~fun-safe-@c-24-22-94-205.hsd1.or.comcast.net) |
| 21:07:32 | × | gnalzo quits (~gnalzo@2a01:e0a:498:fd50:fcc6:bb5d:489a:ce8c) (Quit: WeeChat 3.8) |
| 21:14:15 | × | alexherbo2 quits (~alexherbo@2a02-842a-8180-4601-d5f7-1d09-2f8d-3550.rev.sfr.net) (Remote host closed the connection) |
| 21:14:30 | → | alexherbo2 joins (~alexherbo@2a02-842a-8180-4601-d5f7-1d09-2f8d-3550.rev.sfr.net) |
| 21:21:23 | × | Guest|82 quits (~Guest|82@pd9e0ad5b.dip0.t-ipconnect.de) (Quit: Connection closed) |
| 21:23:32 | × | c0c0 quits (~coco@212-51-146-137.fiber7.init7.net) (Quit: WeeChat 3.7.1) |
| 21:29:02 | × | fun-safe-math quits (~fun-safe-@c-24-22-94-205.hsd1.or.comcast.net) (Quit: Leaving) |
| 21:29:57 | → | bitdex joins (~bitdex@gateway/tor-sasl/bitdex) |
| 21:34:09 | → | jero98772 joins (~jero98772@2800:484:1d84:9000::3) |
| 21:43:28 | → | justsomeguy joins (~justsomeg@user/justsomeguy) |
| 21:45:58 | → | trev joins (~trev@user/trev) |
| 21:46:25 | × | wootehfoot quits (~wootehfoo@user/wootehfoot) (Quit: Leaving) |
| 21:51:32 | × | trev quits (~trev@user/trev) (Quit: trev) |
| 21:51:45 | → | jmdaemon joins (~jmdaemon@user/jmdaemon) |
| 21:54:11 | → | machinedgod joins (~machinedg@d198-53-218-113.abhsia.telus.net) |
| 21:58:20 | → | euandreh joins (~Thunderbi@189.6.18.7) |
| 21:59:44 | × | jpds2 quits (~jpds@gateway/tor-sasl/jpds) (Ping timeout: 240 seconds) |
| 22:06:59 | × | alexherbo2 quits (~alexherbo@2a02-842a-8180-4601-d5f7-1d09-2f8d-3550.rev.sfr.net) (Remote host closed the connection) |
| 22:08:26 | → | alexherbo2 joins (~alexherbo@2a02-842a-8180-4601-d5f7-1d09-2f8d-3550.rev.sfr.net) |
| 22:12:36 | × | puke quits (~puke@user/puke) (Quit: puke) |
| 22:12:50 | → | jpds2 joins (~jpds@gateway/tor-sasl/jpds) |
| 22:17:16 | → | puke joins (~puke@user/puke) |
| 22:21:20 | × | takuan quits (~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection) |
| 22:21:55 | × | masterbu1lder quits (~masterbui@user/masterbuilder) (Quit: leaving) |
| 22:26:55 | → | Square joins (~Square@user/square) |
| 22:27:48 | × | jpds2 quits (~jpds@gateway/tor-sasl/jpds) (Remote host closed the connection) |
| 22:28:09 | <Square> | Iirc there are some language extensions that can complicate your code a fair bit. Any comes to mind? |
| 22:28:36 | <Square> | (and I don't mean OverloadedLists or OverloadedStrings) |
| 22:29:12 | <justsomeguy> | So I just noticed that these are the same... :set -XTypeApplications; :type flip (concatMap @[]); :type (>>=) @[]; |
| 22:29:27 | <Square> | Suspects are FlexibleInstances, FlexibleContexts, UndecidableInstances, AllowAmbiguousTypes... |
| 22:29:38 | → | jpds2 joins (~jpds@gateway/tor-sasl/jpds) |
| 22:37:38 | × | justsomeguy quits (~justsomeg@user/justsomeguy) (Ping timeout: 246 seconds) |
| 22:38:44 | → | RED_cat_King joins (~RED_cat_K@2001:b07:a3d:74f4:11f4:5630:82d4:8e1f) |
| 22:42:11 | <geekosaur> | I think the two `Flexible` are considered pretty safe |
| 22:42:25 | → | fun-safe-math joins (~fun-safe-@c-24-22-94-205.hsd1.or.comcast.net) |
| 22:45:01 | <geekosaur> | UndecidableInstances means you accept the blame if the typechecker goes into an infinite loop. (It's OverlappingInstances and especially IncoherentInstances that are really problematic.) |
| 22:45:15 | × | gmg quits (~user@user/gehmehgeh) (Remote host closed the connection) |
| 22:46:00 | → | gmg joins (~user@user/gehmehgeh) |
| 22:46:08 | <geekosaur> | AllowAmbiguousTypes means you accept the responsibility to use TypeApplications to help the typechecker along |
| 22:47:32 | <geekosaur> | But it gets you out of situations where ghc can't figure out a type by itself and needs that help |
| 22:50:27 | <Square> | geekosaur, thanks. I think UndecidableInstances is what got me in trouble before. |
| 22:52:54 | <monochrom> | I guess I have a different idea of what "complicate" means. |
| 22:54:01 | <monochrom> | or rather, "complicate your code". (which is different from "complicate the language") |
| 22:56:36 | × | RED_cat_King quits (~RED_cat_K@2001:b07:a3d:74f4:11f4:5630:82d4:8e1f) (Quit: Client closed) |
| 23:06:11 | → | falafel joins (~falafel@2603-8000-d700-115c-a6c7-5a73-c391-763a.res6.spectrum.com) |
| 23:10:32 | × | azimut quits (~azimut@gateway/tor-sasl/azimut) (Ping timeout: 240 seconds) |
| 23:17:44 | → | caryhartline joins (~caryhartl@2600:1700:2d0:8d30:9843:3567:836:49e9) |
| 23:19:45 | × | fun-safe-math quits (~fun-safe-@c-24-22-94-205.hsd1.or.comcast.net) (Ping timeout: 240 seconds) |
| 23:22:41 | <Square> | monochrom, I this case I'm later using some constructed instances / classes to construct combined instances that. And I remember that was tricky once i involved UndecidableInstances. Could be my lacking know how that get's in the way. =D |
| 23:23:45 | × | burakcank quits (burakcank@has.arrived.and.is.ready-to.party) (Quit: fBNC - https://bnc4free.com) |
| 23:26:31 | × | jinsun quits (~jinsun@user/jinsun) (Read error: Connection reset by peer) |
| 23:27:00 | × | Batzy quits (~quassel@user/batzy) (Quit: https://quassel-irc.org - Chat comfortably. Anywhere.) |
| 23:27:22 | → | Batzy joins (~quassel@user/batzy) |
| 23:28:08 | × | werneta quits (~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net) (Remote host closed the connection) |
| 23:28:23 | → | jinsun joins (~jinsun@user/jinsun) |
| 23:37:58 | → | mauke_ joins (~mauke@user/mauke) |
| 23:39:19 | <fbytez> | Am I just writing an existing builtin function? ... |
| 23:39:24 | <fbytez> | ors :: [a -> Bool] -> a -> Bool |
| 23:39:25 | <fbytez> | ors [] a = False |
| 23:39:25 | <fbytez> | ors (f:fs) a = f a || ors fs a |
| 23:39:52 | × | mauke quits (~mauke@user/mauke) (Ping timeout: 276 seconds) |
| 23:39:52 | mauke_ | is now known as mauke |
| 23:41:28 | <monochrom> | It's a bit close to a library function but not obvious: ors fs a = any (\f -> f a) fs |
| 23:42:31 | <int-e> | :t (or .) . sequence |
| 23:42:32 | <lambdabot> | Traversable t => t (a -> Bool) -> a -> Bool |
| 23:44:35 | <int-e> | :t (getAny . ) . foldMap (Any .) |
| 23:44:36 | <lambdabot> | Foldable t => t (a -> Bool) -> a -> Bool |
| 23:44:45 | × | machinedgod quits (~machinedg@d198-53-218-113.abhsia.telus.net) (Ping timeout: 240 seconds) |
| 23:45:54 | <int-e> | I'd go with monochrom's except I'd write (\f -> f a) as ($ a) |
| 23:45:55 | → | nate1 joins (~nate@98.45.169.16) |
| 23:46:43 | → | son0p joins (~ff@181.136.122.143) |
| 23:46:56 | × | Tuplanolla quits (~Tuplanoll@91-159-68-236.elisa-laajakaista.fi) (Quit: Leaving.) |
| 23:47:26 | <int-e> | @pl ors fs a = any (\f -> f a) fs |
| 23:47:26 | <lambdabot> | ors = flip (any . flip id) |
| 23:47:39 | <int-e> | nice flips |
| 23:47:41 | <fbytez> | Does it short-circuit or evaluate all? |
| 23:47:49 | <monochrom> | short circuits |
| 23:48:02 | <fbytez> | Thanks very much. |
| 23:48:22 | <monochrom> | > any (\f -> f 0) ((== 0) : undefined) |
| 23:48:23 | <lambdabot> | True |
| 23:51:11 | × | nate1 quits (~nate@98.45.169.16) (Ping timeout: 264 seconds) |
| 23:51:43 | × | acidjnk quits (~acidjnk@p200300d6e715c46489327d173b2333a9.dip0.t-ipconnect.de) (Ping timeout: 260 seconds) |
| 23:57:51 | × | zeenk quits (~zeenk@2a02:2f04:a20f:5200::7fe) (Quit: Konversation terminated!) |
All times are in UTC on 2023-04-30.