Home liberachat/#haskell: Logs Calendar

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.