2023/04/30

2023-04-30 00:00:27 +0200 <jean-paul[m]> Rembane: They'll change a bit at a time
2023-04-30 00:01:05 +0200 <jean-paul[m]> int-e: So consider strict vs lazy early? Does that mean it's tricky to go back later and make lazy things strict?
2023-04-30 00:01:13 +0200 <Rembane> jean-paul[m]: So no huge garbage collections in the middle?
2023-04-30 00:01:44 +0200 <int-e> jean-paul[m]: it's tricky to figure out *where* things are insufficiently strict
2023-04-30 00:01:55 +0200 <somerandomnick[m> nono, write small, simple composable pieces
2023-04-30 00:01:56 +0200 <somerandomnick[m> then you can make those strict or lazy later
2023-04-30 00:05:57 +0200coot(~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba) (Quit: coot)
2023-04-30 00:07:12 +0200 <int-e> jean-paul[m]: It doesn't really matter when you do this I suppose... the main idea here is that making fields strict if evaluating subdata lazily won't ever pay off is better than forcing that same field all over the place.
2023-04-30 00:07:27 +0200 <int-e> going back and changing things later works both ways too
2023-04-30 00:07:52 +0200 <hammond> I'm calling this:
2023-04-30 00:07:54 +0200 <hammond> roundToStr :: (PrintfArg a, Floating a) => Int -> a -> String
2023-04-30 00:07:56 +0200 <hammond> roundToStr = printf "%0.*f"
2023-04-30 00:08:08 +0200 <hammond> with a Double and it works fine. why is that?
2023-04-30 00:08:18 +0200 <jean-paul[m]> Rembane: I'm not sure. That's one place where I don't feel like I have much of an intuition yet. If there's one large structure, will a small change to it create a huge amount of garbage? If it is immutable I could imagine this being the case.
2023-04-30 00:08:21 +0200 <hammond> how is Floating a Double?
2023-04-30 00:08:32 +0200 <int-e> It's a type class
2023-04-30 00:08:39 +0200 <hammond> k
2023-04-30 00:08:40 +0200 <int-e> Both Double and Float are instances of Floating
2023-04-30 00:08:55 +0200 <int-e> (I imagine Comples Double and Comples Float are as well)
2023-04-30 00:09:03 +0200 <int-e> *Complex
2023-04-30 00:09:32 +0200 <Rembane> jean-paul[m]: I usually assume that there's some magic in the RTS that handles that. There's probably a more formal explanation for how that works.
2023-04-30 00:10:21 +0200 <jade[m]> int-e: `ReaFloat a => Floating (Complex a)`
2023-04-30 00:10:29 +0200 <int-e> (But are there PrintfArg instances for Complex?)
2023-04-30 00:10:51 +0200 <jade[m]> s/ReaFloat/RealFloat/
2023-04-30 00:11:05 +0200 <int-e> (Answer, not by default.)
2023-04-30 00:12:05 +0200[itchyjunk](~itchyjunk@user/itchyjunk/x-7353470) (Ping timeout: 260 seconds)
2023-04-30 00:12:36 +0200 <hammond> whats that => thingie, I don't understand that in relation to currying.
2023-04-30 00:12:40 +0200 <hammond> :)
2023-04-30 00:12:58 +0200 <jean-paul[m]> int-e: Got it, thanks
2023-04-30 00:13:00 +0200 <jade[m]> It adds a constraint on the type
2023-04-30 00:13:02 +0200 <jean-paul[m]> Rembane: I love RTS magic. :)
2023-04-30 00:13:09 +0200 <Rembane> jean-paul[m]: It's the best kind of magic. :)
2023-04-30 00:13:27 +0200 <jade[m]> here it's a typeclass constraint (whatever a may be, it has to be an instance of the typeclass)
2023-04-30 00:13:59 +0200 <hammond> but it seems to turn into an Int.
2023-04-30 00:14:14 +0200 <jade[m]> hm?
2023-04-30 00:14:37 +0200 <hammond> i call the function like this roundToStr 2 someDoubleHere
2023-04-30 00:14:52 +0200 <hammond> why do i need all that.
2023-04-30 00:15:12 +0200 <jade[m]> I don't understand the question
2023-04-30 00:15:27 +0200 <hammond> I could have just defined the function Int->Double->String
2023-04-30 00:15:39 +0200 <monochrom> Yes.
2023-04-30 00:15:49 +0200 <geekosaur> "%.*f" means "print something in fixed floating point format, with a specified width (the *)"
2023-04-30 00:15:56 +0200 <geekosaur> the Int corresponds to the width
2023-04-30 00:16:17 +0200 <jade[m]> yes, you can make the function more narrow
2023-04-30 00:16:28 +0200 <jade[m]> but usually you don't want that
2023-04-30 00:16:50 +0200 <jade[m]> keeping things as general as possible is good most of the time
2023-04-30 00:16:52 +0200 <monochrom> If someone else want a more general and polymorphic version, they are not wrong. If you want a more concrete KISS version, you are not wrong either.
2023-04-30 00:16:53 +0200 <int-e> :t sort
2023-04-30 00:16:54 +0200 <lambdabot> Ord a => [a] -> [a]
2023-04-30 00:17:11 +0200 <geekosaur> jade[m], there's tradeoffs there
2023-04-30 00:17:13 +0200merijn(~merijn@c-001-001-006.client.esciencecenter.eduvpn.nl)
2023-04-30 00:17:18 +0200 <monochrom> There is not going to be an answer to "why must I do that?". Do whatever you want.
2023-04-30 00:17:32 +0200 <geekosaur> more general means slower and (usually) more complex error modes
2023-04-30 00:17:39 +0200 <geekosaur> more specific means less flexible
2023-04-30 00:17:53 +0200 <jade[m]> compile time errors that is?
2023-04-30 00:17:57 +0200 <geekosaur> yes
2023-04-30 00:18:07 +0200 <monochrom> If you are curious about "Floating a =>", read up on type classes.
2023-04-30 00:18:20 +0200 <hammond> ok
2023-04-30 00:18:28 +0200 <jade[m]> fair point, I think it strongly depends on the scope that the function will be used in
2023-04-30 00:18:43 +0200[itchyjunk](~itchyjunk@user/itchyjunk/x-7353470)
2023-04-30 00:19:16 +0200 <int-e> hammond: Type class constraints are used a lot in Haskell to give polymorphic functions access to useful operations on types. `sort` (see above), for example, needs to compare values, and that's what the `Ord` class is for. You (usually) don't have to worry about the constraint much... the compiler will infer it for you when possible. You will see type errors though when that fails. (Try...
2023-04-30 00:19:22 +0200 <int-e> ...`roundToStr 42 "abc"` and see what error you get...)
2023-04-30 00:19:43 +0200 <hammond> lemmi see
2023-04-30 00:20:23 +0200 <int-e> (Unfortunately those errors are not exactly pretty... they'll take a while to get used to.)
2023-04-30 00:22:29 +0200 <monochrom> If you keep seeing advanced generalizations in libraries, well that's because libraries need to be general, and besides the target audience is people who have finished learning Haskell.
2023-04-30 00:22:40 +0200 <monochrom> This is the same over all languages.
2023-04-30 00:22:41 +0200 <hammond> I'll read more on it.
2023-04-30 00:23:44 +0200 <jade[m]> monochrom: is there a finish to learning haskell? ;)
2023-04-30 00:23:57 +0200 <monochrom> An absolute C beginner who has barely started with "int foo(int i)" will look at a real world library and see "void *" all over the place and the correct response is "one step at a time".
2023-04-30 00:25:40 +0200cheater(~Username@user/cheater) (Quit: Going offline, see ya! (www.adiirc.com))
2023-04-30 00:31:44 +0200azimut(~azimut@gateway/tor-sasl/azimut) (Ping timeout: 240 seconds)
2023-04-30 00:33:29 +0200cheater(~Username@user/cheater)
2023-04-30 00:36:07 +0200cheater_(~Username@user/cheater)
2023-04-30 00:36:22 +0200cheater_(~Username@user/cheater) (Read error: Connection reset by peer)
2023-04-30 00:37:12 +0200cheater_(~Username@user/cheater)
2023-04-30 00:37:28 +0200cheater_(~Username@user/cheater) (Read error: Connection reset by peer)
2023-04-30 00:37:31 +0200wroathe(~wroathe@user/wroathe) (Ping timeout: 248 seconds)
2023-04-30 00:39:01 +0200cheater(~Username@user/cheater) (Ping timeout: 276 seconds)
2023-04-30 00:41:04 +0200takuan(~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection)
2023-04-30 00:47:14 +0200zeenk(~zeenk@2a02:2f04:a20f:5200::7fe) (Quit: Konversation terminated!)
2023-04-30 00:49:57 +0200bratwurst(~dfadsva@2604:3d09:207f:f650::9c24) (Quit: Leaving)
2023-04-30 00:50:20 +0200merijn(~merijn@c-001-001-006.client.esciencecenter.eduvpn.nl) (Ping timeout: 246 seconds)
2023-04-30 00:51:27 +0200wroathe(~wroathe@207-153-38-140.fttp.usinternet.com)
2023-04-30 00:51:27 +0200wroathe(~wroathe@207-153-38-140.fttp.usinternet.com) (Changing host)
2023-04-30 00:51:27 +0200wroathe(~wroathe@user/wroathe)
2023-04-30 00:53:08 +0200acidjnk_new(~acidjnk@p200300d6e715c468b4bf77e5a0595f20.dip0.t-ipconnect.de) (Ping timeout: 246 seconds)
2023-04-30 00:54:00 +0200wagle_wagle
2023-04-30 01:01:54 +0200tubogram44(~tubogram@user/tubogram) (Quit: Ping timeout (120 seconds))
2023-04-30 01:02:14 +0200tubogram44(~tubogram@user/tubogram)
2023-04-30 01:10:01 +0200tremon(~tremon@83.80.159.219) (Quit: getting boxed in)
2023-04-30 01:16:38 +0200gurkenglas(~gurkengla@dynamic-046-114-176-011.46.114.pool.telefonica.de) (Ping timeout: 246 seconds)
2023-04-30 01:25:53 +0200 <somerandomnick[m> jade: keep in mind that type class constraints can make your compiled program inefficient. When exposing an API I recommend the SPECIALIZE pragma.
2023-04-30 01:26:13 +0200 <somerandomnick[m> when using general functions in your code make sure GHC creates specialized instances of those functions
2023-04-30 01:26:31 +0200 <somerandomnick[m> or just dont call them "all the time"
2023-04-30 01:32:00 +0200falafel(~falafel@2603-8000-d700-115c-2fcd-f6bf-9b28-c84d.res6.spectrum.com)
2023-04-30 01:40:12 +0200mauke_(~mauke@user/mauke)
2023-04-30 01:41:47 +0200mauke(~mauke@user/mauke) (Ping timeout: 246 seconds)
2023-04-30 01:41:47 +0200mauke_mauke
2023-04-30 01:47:54 +0200falafel(~falafel@2603-8000-d700-115c-2fcd-f6bf-9b28-c84d.res6.spectrum.com) (Ping timeout: 250 seconds)
2023-04-30 01:48:27 +0200 <mmynsted[m]> How do I customize the files used by cabal init when I create a new project? For example the default Main.hs it creates for an executable?
2023-04-30 01:48:59 +0200cheater(~Username@user/cheater)
2023-04-30 01:51:34 +0200jmdaemon(~jmdaemon@user/jmdaemon)
2023-04-30 01:51:53 +0200cheater(~Username@user/cheater) (Read error: Connection reset by peer)
2023-04-30 01:53:51 +0200janus(janus@anubis.0x90.dk)
2023-04-30 01:57:51 +0200 <mmynsted[m]> It does not appear to be in or referenced in ~/.cabal/config
2023-04-30 01:58:10 +0200Me-me(~Me-me@user/me-me)
2023-04-30 02:02:50 +0200berberman(~berberman@user/berberman) (Quit: ZNC 1.8.2 - https://znc.in)
2023-04-30 02:04:18 +0200berberman(~berberman@user/berberman)
2023-04-30 02:05:13 +0200cheater(~Username@user/cheater)
2023-04-30 02:05:53 +0200cheater(~Username@user/cheater) (Read error: Connection reset by peer)
2023-04-30 02:08:06 +0200 <mmynsted[m]> I guess hard-coded into cabal. https://github.com/haskell/cabal/blob/3af1731c01c35614fd902ee5c1aec40f5587fde6/cabal-install/src/D…
2023-04-30 02:11:53 +0200Lord_of_Life(~Lord@user/lord-of-life/x-2819915) (Ping timeout: 246 seconds)
2023-04-30 02:13:27 +0200Lord_of_Life(~Lord@user/lord-of-life/x-2819915)
2023-04-30 02:21:22 +0200Albina_Pavlovna(~Albina_Pa@2603-7000-76f0-76e0-e9a1-4bc6-a339-90d3.res6.spectrum.com)
2023-04-30 02:28:00 +0200Tuplanolla(~Tuplanoll@91-159-68-236.elisa-laajakaista.fi) (Quit: Leaving.)
2023-04-30 02:40:42 +0200harveypwca(~harveypwc@2601:246:c180:a570:3828:d8:e523:3f67)
2023-04-30 02:41:23 +0200shailangsa(~shailangs@host165-120-169-78.range165-120.btcentralplus.com) (Remote host closed the connection)
2023-04-30 02:45:26 +0200nate1(~nate@98.45.169.16)
2023-04-30 02:47:12 +0200merijn(~merijn@86-86-29-250.fixed.kpn.net)
2023-04-30 02:47:45 +0200cheater(~Username@user/cheater)
2023-04-30 02:50:09 +0200cheater(~Username@user/cheater) (Read error: Connection reset by peer)
2023-04-30 02:54:58 +0200cheater(~Username@user/cheater)
2023-04-30 03:05:50 +0200cheater(~Username@user/cheater) (Read error: Connection reset by peer)
2023-04-30 03:11:09 +0200albet70(~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection)
2023-04-30 03:12:20 +0200Inst__(~Inst@2601:6c4:4081:54f0:9027:6f4:a9a6:93a0) (Ping timeout: 260 seconds)
2023-04-30 03:16:48 +0200gehmehgeh(~user@user/gehmehgeh)
2023-04-30 03:17:16 +0200albet70(~xxx@2400:8902::f03c:92ff:fe60:98d8)
2023-04-30 03:19:20 +0200gmg(~user@user/gehmehgeh) (Ping timeout: 240 seconds)
2023-04-30 03:21:25 +0200merijn(~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 240 seconds)
2023-04-30 03:34:30 +0200harveypwca(~harveypwc@2601:246:c180:a570:3828:d8:e523:3f67) (Quit: Leaving)
2023-04-30 03:37:59 +0200 <talismanick> Oh, how I wish there was a standard math notation equivalent to <$>...
2023-04-30 03:40:08 +0200Nic(~Nic@c-24-127-33-212.hsd1.mi.comcast.net)
2023-04-30 03:43:48 +0200 <int-e> f <$> x = F(f)(x) where F is the functor in question?
2023-04-30 03:45:42 +0200Nic(~Nic@c-24-127-33-212.hsd1.mi.comcast.net) (Quit: Connection closed)
2023-04-30 03:47:03 +0200xff0x_(~xff0x@fsa056e3ab.kytj202.ap.nuro.jp)
2023-04-30 03:47:21 +0200 <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.
2023-04-30 03:48:40 +0200 <johnjaye> Diophantus called the unknown Ϛ, even if there were a dozen unknowns to solve for.
2023-04-30 03:48:48 +0200nate1(~nate@98.45.169.16) (Ping timeout: 248 seconds)
2023-04-30 03:52:12 +0200 <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.
2023-04-30 03:52:45 +0200 <monochrom> Now imagine we further add <$> overloading and write "p . (h <$>) = (h <$>) . p" >:0
2023-04-30 03:57:47 +0200 <monochrom> Hrm let's code-golf that further!
2023-04-30 03:57:57 +0200 <monochrom> @pl \h -> p . fmap h
2023-04-30 03:57:58 +0200 <lambdabot> (p .) . fmap
2023-04-30 03:58:06 +0200 <monochrom> @pl \h -> fmap h . p
2023-04-30 03:58:07 +0200 <lambdabot> (. p) . fmap
2023-04-30 03:58:23 +0200 <monochrom> (p .) . fmap = (. p) . fmap
2023-04-30 03:58:30 +0200 <monochrom> This is profound. >:)
2023-04-30 03:58:47 +0200 <int-e> now replace (.) by fmap. Is it still true?
2023-04-30 03:59:08 +0200 <monochrom> I prefer replacing fmap by (.) hahaha
2023-04-30 03:59:19 +0200 <monochrom> "..."
2023-04-30 04:01:51 +0200 <monochrom> "Hi I saw on a blog f $ g $ x = f <$> g $ x so what's the difference between <$> and $?" >:)
2023-04-30 04:02:29 +0200 <int-e> <$> has more characters
2023-04-30 04:02:42 +0200 <monochrom> sharp edges :)
2023-04-30 04:02:54 +0200 <int-e> (if in doubt, answer such questions at the lexical level)
2023-04-30 04:05:06 +0200hgolden_(~hgolden@cpe-172-251-233-141.socal.res.rr.com) (Remote host closed the connection)
2023-04-30 04:07:00 +0200hgolden(~hgolden@cpe-172-251-233-141.socal.res.rr.com)
2023-04-30 04:16:42 +0200bitmapper(uid464869@id-464869.lymington.irccloud.com)
2023-04-30 04:23:29 +0200ryantrinkle(~ryantrink@204.2.88.230) (Ping timeout: 246 seconds)
2023-04-30 04:29:33 +0200falafel(~falafel@2603-8000-d700-115c-557c-00d7-83ff-43f9.res6.spectrum.com)
2023-04-30 04:30:52 +0200slack1256(~slack1256@186.11.41.76)
2023-04-30 04:39:23 +0200Albina_Pavlovna(~Albina_Pa@2603-7000-76f0-76e0-e9a1-4bc6-a339-90d3.res6.spectrum.com) (Quit: ZZZzzz…)
2023-04-30 04:41:32 +0200 <ski> clearly `p_h' is a more suitable notation for `p_B . F h' / `G h . p_A'
2023-04-30 04:44:03 +0200 <ski> talismanick : any particular functor in mind ?
2023-04-30 04:44:15 +0200xff0x_(~xff0x@fsa056e3ab.kytj202.ap.nuro.jp) (Ping timeout: 250 seconds)
2023-04-30 04:46:13 +0200xff0x_(~xff0x@fsa056e3ab.kytj202.ap.nuro.jp)
2023-04-30 04:46:49 +0200 <ski> (you could also write `(| p f ; h a |) : G B', if `(| f ; a |) : F A')
2023-04-30 04:48:16 +0200Square(~Square@user/square)
2023-04-30 04:50:38 +0200 <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.
2023-04-30 04:51:55 +0200 <ski> `instance Eq Foo where _ == _ = True' should be okay, i think ?
2023-04-30 04:52:56 +0200FinnElija(~finn_elij@user/finn-elija/x-0085643) (Ping timeout: 240 seconds)
2023-04-30 04:53:14 +0200td_(~td@i53870937.versanet.de) (Ping timeout: 246 seconds)
2023-04-30 04:53:33 +0200slac19128(~slack1256@191.125.26.100)
2023-04-30 04:54:05 +0200 <Square> ski, looks like always True to me?
2023-04-30 04:54:09 +0200 <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
2023-04-30 04:54:14 +0200 <ski> Square : yes
2023-04-30 04:54:31 +0200 <ski> s/only think/only thing/
2023-04-30 04:55:07 +0200td_(~td@i53870931.versanet.de)
2023-04-30 04:55:31 +0200FinnElija(~finn_elij@user/finn-elija/x-0085643)
2023-04-30 04:55:46 +0200 <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 ..
2023-04-30 04:55:49 +0200slack1256(~slack1256@186.11.41.76) (Ping timeout: 265 seconds)
2023-04-30 04:55:57 +0200 <int-e> ski: heh, I'm surprised that you didn't use ⦇ ⦈ there
2023-04-30 04:56:09 +0200 <ski> .. although, perhaps a better question would be : what are you trying to achieve here ?
2023-04-30 04:56:52 +0200 <ski> int-e : i was following suit with the Haskell-like syntax
2023-04-30 05:00:49 +0200 <ski> (i've also used that ascii approximation before, in this context, in the channel)
2023-04-30 05:00:54 +0200 <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]'
2023-04-30 05:01:20 +0200 <Square> sorry
2023-04-30 05:01:32 +0200 <Square> data Field = forall a. Eq a => FInt | Choice (Set a) | ...
2023-04-30 05:02:10 +0200 <Square> (really i was hoping on mashing more fields into the Choice type to support some sort of unpacking.)
2023-04-30 05:02:24 +0200 <ski> i presume you meant to attach that `forall a. Eq a =>' to the `Choice' data constructor
2023-04-30 05:02:36 +0200 <Square> yeah.. i guess i can move it
2023-04-30 05:03:22 +0200 <ski> how do you intend to use this set alternative of a field ?
2023-04-30 05:04:19 +0200 <ski> mashing them into it, how, in what sense ?
2023-04-30 05:04:26 +0200xff0x_(~xff0x@fsa056e3ab.kytj202.ap.nuro.jp) (Ping timeout: 246 seconds)
2023-04-30 05:04:26 +0200 <Square> a) for Generic type matches. b) to render field and read field input.
2023-04-30 05:04:51 +0200jero98772(~jero98772@2800:484:1d84:9000::2) (Remote host closed the connection)
2023-04-30 05:04:51 +0200 <ski> (also, is `FInt' intended to take any payload ? like maybe an `Int' or something ?)
2023-04-30 05:05:09 +0200 <Square> its just field definition, not the actual input.
2023-04-30 05:05:20 +0200 <Square> on "FInt"
2023-04-30 05:05:43 +0200 <ski> mhm
2023-04-30 05:05:51 +0200 <Square> The Set of Choice are the possible options
2023-04-30 05:06:20 +0200 <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
2023-04-30 05:06:39 +0200 <ski> you could call `size :: Set a -> Int' on it, i suppose
2023-04-30 05:07:11 +0200 <Square> I simplified the description of the problem here to make it clearer.
2023-04-30 05:07:32 +0200 <ski> unfortunately, the simplification was too radical
2023-04-30 05:07:39 +0200 <Square> Hashable?
2023-04-30 05:08:24 +0200 <ski> i'm assuming you're still thinking about `Eq Field' ? or some other class than `Eq' ?
2023-04-30 05:08:50 +0200 <Square> correct
2023-04-30 05:09:37 +0200 <Square> Eq seems to be the problematic one as it takes 2 arguments to ==
2023-04-30 05:09:39 +0200 <ski> perhaps some sample set example would help to see what you're after modelling
2023-04-30 05:10:35 +0200ryantrinkle(~ryantrink@204.2.88.230)
2023-04-30 05:10:49 +0200 <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
2023-04-30 05:12:11 +0200 <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)
2023-04-30 05:12:15 +0200 <Square> Gotcha. I was hoping you could produce some hash of both and use that for equality.
2023-04-30 05:13:13 +0200 <Square> I got Typeable on them and I compare types. But yeah. The actual values aren't comparable atm.
2023-04-30 05:14:14 +0200berberman(~berberman@user/berberman) (Ping timeout: 246 seconds)
2023-04-30 05:14:33 +0200 <ski> what else, apart from calling operations that require `Eq', do you want to do with `Field's ?
2023-04-30 05:18:16 +0200merijn(~merijn@c-001-001-006.client.esciencecenter.eduvpn.nl)
2023-04-30 05:18:22 +0200 <Square> Show..., maybe some To/FromJSON. Also for the Choice fields, I want Read for the actual type.
2023-04-30 05:18:26 +0200 <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
2023-04-30 05:18:49 +0200 <ski> `Read', but not, say, `Show' ?
2023-04-30 05:20:04 +0200 <ski> also `Read' sounds like it would be more important, when constructing `Field's, than when deconstructing them
2023-04-30 05:20:18 +0200 <Square> data Field = FInt | forall a. (Eq a, Show a, Typeable a, Read a, Ord a) => Choice a deriving (Show, Eq).
2023-04-30 05:20:28 +0200 <Square> would be more like it
2023-04-30 05:20:39 +0200 <ski> (`Ord a' implies `Eq a', btw)
2023-04-30 05:20:54 +0200 <Square> oh? i did not know.
2023-04-30 05:21:05 +0200 <ski> @src Ord
2023-04-30 05:21:05 +0200 <lambdabot> class (Eq a) => Ord a where
2023-04-30 05:21:05 +0200 <lambdabot> compare :: a -> a -> Ordering
2023-04-30 05:21:05 +0200 <lambdabot> (<), (<=), (>), (>=) :: a -> a -> Bool
2023-04-30 05:21:06 +0200 <lambdabot> max, min :: a -> a -> a
2023-04-30 05:21:42 +0200 <Square> Ord require Eq so to speak.
2023-04-30 05:21:49 +0200 <ski> yep
2023-04-30 05:23:01 +0200 <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))
2023-04-30 05:23:24 +0200 <Square> gotcha.
2023-04-30 05:24:42 +0200 <ski> how would you render fields ? (and was the input reading means to be done in tandem to that ?)
2023-04-30 05:24:46 +0200 <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.
2023-04-30 05:25:40 +0200 <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)
2023-04-30 05:26:39 +0200 <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
2023-04-30 05:27:13 +0200 <Square> case fld of ; Choice set -> fmap render set. And that would require some sort of 'Render a => Choice (Set a)'
2023-04-30 05:28:04 +0200 <ski> also, what are specific candidate types, which `a' could possibly be ?
2023-04-30 05:28:09 +0200 <Square> Q: "i'm still wondering why `forall a. (..a..)..." A: Cause "a" can be wildly different between Choice fields
2023-04-30 05:28:56 +0200 <Square> I'm thinking no-arg sum types. Enum?
2023-04-30 05:29:27 +0200 <ski> a single such type ? or multiple ones ?
2023-04-30 05:29:38 +0200mncheck-m(~mncheck@193.224.205.254) (Ping timeout: 246 seconds)
2023-04-30 05:30:08 +0200 <Square> Multiple... 100s of different.
2023-04-30 05:33:20 +0200 <Square> That's why its important I get the Eq implementation correct. I need to be able to tell if fld1 == fld2.
2023-04-30 05:34:29 +0200 <ski> and if two sets use different enumeration types, they're to be considered definitely different sets ?
2023-04-30 05:34:30 +0200 <Square> Choice (Set.fromList [A1,A2]) /= Choice (Set.fromList [B1,B2])
2023-04-30 05:34:53 +0200 <Square> exactly
2023-04-30 05:34:55 +0200 <ski> (the answer to that question isn't obviously "yes")
2023-04-30 05:35:36 +0200 <Square> maybe not, but for me its important.
2023-04-30 05:36:02 +0200 <ski> i guess you may want to use `Typeable', then
2023-04-30 05:36:55 +0200 <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)
2023-04-30 05:38:59 +0200 <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
2023-04-30 05:39:00 +0200 <lambdabot> (Typeable a, Typeable b, Eq a, Eq b) => S.Set a -> S.Set b -> Bool
2023-04-30 05:39:33 +0200 <Square> sweet!
2023-04-30 05:39:41 +0200 <Square> That looks helpful
2023-04-30 05:40:08 +0200 <ski> (you may still run into other difficulties with the existential, mind)
2023-04-30 05:41:07 +0200 <ski> (of course, nothing in the code of that `hetEqSet' is specific to it handling sets .. but that's the situation you had, so)
2023-04-30 05:41:07 +0200 <Square> I know I know. It's not good form. But yeah, in this case the total type isn't that important.
2023-04-30 05:41:26 +0200zmt00(~zmt00@user/zmt00)
2023-04-30 05:41:38 +0200 <Square> ski, thanks a bunch for helping me think along. Much appreciated.
2023-04-30 05:42:14 +0200 <ski> i'm still not convinced using existentials like this, or using `Typeable' here (in case the existential is warranted), is sensible
2023-04-30 05:42:50 +0200 <ski> but you may explore this option further down the road a bit, and perhaps discover some other roadblock later .. or not
2023-04-30 05:45:00 +0200 <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.
2023-04-30 05:45:28 +0200 <ski> i still only have a quite vague idea of what you're really doing, so it's hard to say
2023-04-30 05:45:44 +0200nate1(~nate@98.45.169.16)
2023-04-30 05:45:54 +0200 <Square> yeah. ill try this and we'll see. Thanks a bunch.
2023-04-30 05:46:17 +0200 <ski> have fun
2023-04-30 05:46:31 +0200slac19128slack1256
2023-04-30 05:50:07 +0200nate1(~nate@98.45.169.16) (Ping timeout: 252 seconds)
2023-04-30 05:50:37 +0200nattiestnate(~nate@202.138.250.62) (Quit: WeeChat 3.8)
2023-04-30 05:52:52 +0200merijn(~merijn@c-001-001-006.client.esciencecenter.eduvpn.nl) (Ping timeout: 252 seconds)
2023-04-30 05:53:42 +0200 <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)
2023-04-30 06:05:20 +0200Square(~Square@user/square) (Ping timeout: 246 seconds)
2023-04-30 06:07:26 +0200falafel(~falafel@2603-8000-d700-115c-557c-00d7-83ff-43f9.res6.spectrum.com) (Ping timeout: 246 seconds)
2023-04-30 06:17:34 +0200ddellacosta(~ddellacos@143.244.47.73) (Ping timeout: 252 seconds)
2023-04-30 06:26:18 +0200berberman(~berberman@user/berberman)
2023-04-30 06:40:19 +0200szkl(uid110435@id-110435.uxbridge.irccloud.com)
2023-04-30 06:43:02 +0200[itchyjunk](~itchyjunk@user/itchyjunk/x-7353470) (Remote host closed the connection)
2023-04-30 06:55:36 +0200berberman(~berberman@user/berberman) (Remote host closed the connection)
2023-04-30 06:55:56 +0200berberman(~berberman@user/berberman)
2023-04-30 07:12:43 +0200bilegeek(~bilegeek@2600:1008:b06c:a5bb:d8ca:a8ce:a1a:8895)
2023-04-30 07:25:52 +0200trev(~trev@user/trev)
2023-04-30 07:29:20 +0200JScript(~JScript@144.48.39.18) (Ping timeout: 246 seconds)
2023-04-30 07:36:04 +0200sgarcia_(sgarcia@swarm.znchost.com) (Quit: Hosted by www.ZNCHost.com)
2023-04-30 07:39:14 +0200sgarcia(sgarcia@swarm.znchost.com)
2023-04-30 07:42:36 +0200wroathe(~wroathe@user/wroathe) (Quit: leaving)
2023-04-30 07:44:37 +0200JScript(~JScript@45.248.77.142)
2023-04-30 07:46:53 +0200slack1256(~slack1256@191.125.26.100) (Remote host closed the connection)
2023-04-30 07:48:43 +0200merijn(~merijn@c-001-001-006.client.esciencecenter.eduvpn.nl)
2023-04-30 07:53:50 +0200FinnElija(~finn_elij@user/finn-elija/x-0085643) (Remote host closed the connection)
2023-04-30 07:53:50 +0200ec(~ec@gateway/tor-sasl/ec) (Remote host closed the connection)
2023-04-30 07:53:50 +0200bitdex(~bitdex@gateway/tor-sasl/bitdex) (Remote host closed the connection)
2023-04-30 07:53:51 +0200jpds2(~jpds@gateway/tor-sasl/jpds) (Remote host closed the connection)
2023-04-30 07:53:59 +0200thegeekinside(~thegeekin@189.180.38.222)
2023-04-30 07:54:14 +0200jpds2(~jpds@gateway/tor-sasl/jpds)
2023-04-30 07:54:20 +0200ec(~ec@gateway/tor-sasl/ec)
2023-04-30 07:54:25 +0200FinnElija(~finn_elij@user/finn-elija/x-0085643)
2023-04-30 07:54:58 +0200gehmehgeh(~user@user/gehmehgeh) (Remote host closed the connection)
2023-04-30 07:55:00 +0200bitdex(~bitdex@gateway/tor-sasl/bitdex)
2023-04-30 07:55:01 +0200chiselfuse(~chiselfus@user/chiselfuse) (Remote host closed the connection)
2023-04-30 07:55:27 +0200chiselfuse(~chiselfus@user/chiselfuse)
2023-04-30 07:55:44 +0200gehmehgeh(~user@user/gehmehgeh)
2023-04-30 08:04:08 +0200takuan(~takuan@178-116-218-225.access.telenet.be)
2023-04-30 08:07:09 +0200werneta(~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net) (Quit: Lost terminal)
2023-04-30 08:07:54 +0200werneta(~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net)
2023-04-30 08:15:01 +0200mei(~mei@user/mei) (Quit: mei)
2023-04-30 08:16:37 +0200mei(~mei@user/mei)
2023-04-30 08:21:04 +0200bilegeek(~bilegeek@2600:1008:b06c:a5bb:d8ca:a8ce:a1a:8895) (Quit: Leaving)
2023-04-30 08:22:14 +0200user363627(~user36362@146.70.198.100) (Ping timeout: 250 seconds)
2023-04-30 08:22:45 +0200merijn(~merijn@c-001-001-006.client.esciencecenter.eduvpn.nl) (Ping timeout: 240 seconds)
2023-04-30 08:25:36 +0200jpds2(~jpds@gateway/tor-sasl/jpds) (Remote host closed the connection)
2023-04-30 08:26:05 +0200jpds2(~jpds@gateway/tor-sasl/jpds)
2023-04-30 08:42:47 +0200szkl(uid110435@id-110435.uxbridge.irccloud.com) (Quit: Connection closed for inactivity)
2023-04-30 08:43:12 +0200acidjnk_new(~acidjnk@p200300d6e715c467d9596cc51d075b5b.dip0.t-ipconnect.de)
2023-04-30 08:43:54 +0200falafel(~falafel@2603-8000-d700-115c-a14b-5f58-a067-9cc9.res6.spectrum.com)
2023-04-30 08:50:12 +0200azimut(~azimut@gateway/tor-sasl/azimut)
2023-04-30 08:50:56 +0200ec(~ec@gateway/tor-sasl/ec) (Ping timeout: 240 seconds)
2023-04-30 08:52:40 +0200bitdex(~bitdex@gateway/tor-sasl/bitdex) (Remote host closed the connection)
2023-04-30 08:53:13 +0200ec(~ec@gateway/tor-sasl/ec)
2023-04-30 08:53:48 +0200bitdex(~bitdex@gateway/tor-sasl/bitdex)
2023-04-30 08:54:34 +0200stiell_(~stiell@gateway/tor-sasl/stiell) (Remote host closed the connection)
2023-04-30 08:55:03 +0200stiell_(~stiell@gateway/tor-sasl/stiell)
2023-04-30 09:01:24 +0200ddellacosta(~ddellacos@146.70.168.100)
2023-04-30 09:06:56 +0200gnalzo(~gnalzo@2a01:e0a:498:fd50:fcc6:bb5d:489a:ce8c)
2023-04-30 09:11:51 +0200falafel(~falafel@2603-8000-d700-115c-a14b-5f58-a067-9cc9.res6.spectrum.com) (Remote host closed the connection)
2023-04-30 09:12:16 +0200falafel(~falafel@2603-8000-d700-115c-9d8a-36a2-86b0-529b.res6.spectrum.com)
2023-04-30 09:17:08 +0200falafel(~falafel@2603-8000-d700-115c-9d8a-36a2-86b0-529b.res6.spectrum.com) (Ping timeout: 246 seconds)
2023-04-30 09:22:18 +0200FinnElija(~finn_elij@user/finn-elija/x-0085643) (Remote host closed the connection)
2023-04-30 09:22:19 +0200gehmehgeh(~user@user/gehmehgeh) (Remote host closed the connection)
2023-04-30 09:22:27 +0200thegeekinside(~thegeekin@189.180.38.222) (Remote host closed the connection)
2023-04-30 09:22:52 +0200FinnElija(~finn_elij@user/finn-elija/x-0085643)
2023-04-30 09:23:03 +0200gehmehgeh(~user@user/gehmehgeh)
2023-04-30 09:24:46 +0200ec(~ec@gateway/tor-sasl/ec) (Remote host closed the connection)
2023-04-30 09:25:07 +0200ec(~ec@gateway/tor-sasl/ec)
2023-04-30 09:34:08 +0200coot(~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba)
2023-04-30 09:46:56 +0200nate1(~nate@98.45.169.16)
2023-04-30 09:48:05 +0200neohtetxyz[m](~neohtetxy@2001:470:69fc:105::3:314c)
2023-04-30 09:50:46 +0200tcard(~tcard@2400:4051:5801:7500:cf17:befc:ff82:5303) (Remote host closed the connection)
2023-04-30 09:51:05 +0200tcard(~tcard@2400:4051:5801:7500:cf17:befc:ff82:5303)
2023-04-30 09:51:47 +0200nate1(~nate@98.45.169.16) (Ping timeout: 246 seconds)
2023-04-30 09:53:31 +0200merijn(~merijn@c-001-001-006.client.esciencecenter.eduvpn.nl)
2023-04-30 09:54:05 +0200econo(uid147250@user/econo) (Quit: Connection closed for inactivity)
2023-04-30 09:55:12 +0200gurkenglas(~gurkengla@dynamic-046-114-176-011.46.114.pool.telefonica.de)
2023-04-30 10:18:23 +0200jespada_(~jespada@cpc121308-nmal25-2-0-cust15.19-2.cable.virginm.net) (Quit: Textual IRC Client: www.textualapp.com)
2023-04-30 10:22:48 +0200czy(~user@host-140-24.ilcub310.champaign.il.us.clients.pavlovmedia.net) (Remote host closed the connection)
2023-04-30 10:25:39 +0200jespada(~jespada@cpc121308-nmal25-2-0-cust15.19-2.cable.virginm.net)
2023-04-30 10:27:08 +0200GerryH(~Brgaammin@p5b375702.dip0.t-ipconnect.de)
2023-04-30 10:33:59 +0200acidbong(6e5528b381@198.108.77.94)
2023-04-30 10:39:46 +0200_ht(~Thunderbi@82.174.52.28)
2023-04-30 10:46:29 +0200Inst(~Inst@2601:6c4:4081:54f0:7880:a3e7:2b04:1611)
2023-04-30 10:46:41 +0200trev(~trev@user/trev) (Quit: trev)
2023-04-30 10:51:51 +0200eggplantade(~Eggplanta@2600:1700:38c5:d800:d4d0:8bd2:d805:7ab6) (Remote host closed the connection)
2023-04-30 10:57:14 +0200merijn(~merijn@c-001-001-006.client.esciencecenter.eduvpn.nl) (Ping timeout: 246 seconds)
2023-04-30 10:57:47 +0200bontaq(~user@ool-45779b84.dyn.optonline.net) (Ping timeout: 250 seconds)
2023-04-30 11:03:34 +0200zeenk(~zeenk@2a02:2f04:a20f:5200::7fe)
2023-04-30 11:10:43 +0200Digitteknohippie(~user@user/digit)
2023-04-30 11:11:02 +0200Tuplanolla(~Tuplanoll@91-159-68-236.elisa-laajakaista.fi)
2023-04-30 11:11:35 +0200Digit(~user@user/digit) (Ping timeout: 246 seconds)
2023-04-30 11:15:47 +0200pyook(~puke@user/puke) (Ping timeout: 246 seconds)
2023-04-30 11:16:05 +0200merijn(~merijn@c-001-001-006.client.esciencecenter.eduvpn.nl)
2023-04-30 11:16:13 +0200DigitteknohippieDigit
2023-04-30 11:16:27 +0200zmt01(~zmt00@user/zmt00)
2023-04-30 11:19:28 +0200zmt00(~zmt00@user/zmt00) (Ping timeout: 250 seconds)
2023-04-30 11:20:45 +0200merijn(~merijn@c-001-001-006.client.esciencecenter.eduvpn.nl) (Ping timeout: 240 seconds)
2023-04-30 11:22:19 +0200 <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
2023-04-30 11:25:01 +0200 <geekosaur[m]> hlint is pretty much it
2023-04-30 11:25:40 +0200 <Helle> shame
2023-04-30 11:26:11 +0200alexherbo2(~alexherbo@2a02-842a-8180-4601-85e1-23ae-ea70-6ae4.rev.sfr.net) (Remote host closed the connection)
2023-04-30 11:26:13 +0200 <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)
2023-04-30 11:26:30 +0200 <[exa]> Helle: why would it complain when the compiler already complains?
2023-04-30 11:26:31 +0200Digitteknohippie(~user@user/digit)
2023-04-30 11:26:56 +0200 <jade[m]> hlint is integrated into HLS, right?
2023-04-30 11:26:56 +0200 <Helle> [exa]: because it generates nice reports
2023-04-30 11:27:12 +0200 <[exa]> ah.
2023-04-30 11:28:32 +0200 <geekosaur> HLS uses both pedantic compiler warnings and hlint, yes
2023-04-30 11:29:00 +0200Digit(~user@user/digit) (Ping timeout: 250 seconds)
2023-04-30 11:29:34 +0200 <mauke> (I like how what gcc calls "pedantic" warnings are the minimum diagnostics required by the C standard)
2023-04-30 11:29:37 +0200alexherbo2(~alexherbo@2a02-842a-8180-4601-d5f7-1d09-2f8d-3550.rev.sfr.net)
2023-04-30 11:29:58 +0200 <Helle> mauke: don't get me started on other languages :P
2023-04-30 11:31:30 +0200DigitteknohippieDigit
2023-04-30 11:38:42 +0200tzh(~tzh@24.21.73.154) (Quit: zzz)
2023-04-30 11:52:19 +0200eggplantade(~Eggplanta@2600:1700:38c5:d800:d4d0:8bd2:d805:7ab6)
2023-04-30 11:54:17 +0200GerryH(~Brgaammin@p5b375702.dip0.t-ipconnect.de) (Ping timeout: 246 seconds)
2023-04-30 11:56:44 +0200eggplantade(~Eggplanta@2600:1700:38c5:d800:d4d0:8bd2:d805:7ab6) (Ping timeout: 246 seconds)
2023-04-30 11:57:01 +0200gehmehgehgmg
2023-04-30 12:13:10 +0200zaquest(~notzaques@5.130.79.72) (Remote host closed the connection)
2023-04-30 12:24:51 +0200Sgeo(~Sgeo@user/sgeo) (Read error: Connection reset by peer)
2023-04-30 12:29:27 +0200 <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
2023-04-30 12:30:21 +0200 <somerandomnick[m> haskell philosophy is dual to that, hosting the many different EDSL
2023-04-30 12:30:26 +0200 <geekosaur> but the original `lint` was for C
2023-04-30 12:31:04 +0200jmdaemon(~jmdaemon@user/jmdaemon) (Ping timeout: 252 seconds)
2023-04-30 12:31:25 +0200enoq(~enoq@2a05:1141:1f5:5600:b9c9:721a:599:bfe7)
2023-04-30 12:31:57 +0200 <somerandomnick[m> I did not know that
2023-04-30 12:32:36 +0200 <somerandomnick[m> anyways in haskell, id rather have the type system "lint" for me
2023-04-30 12:33:12 +0200 <somerandomnick[m> also what would a linter know about balancing out pointfree with pointful style
2023-04-30 12:33:41 +0200 <mauke> the original lint was for C because the compiler couldn't typecheck function calls
2023-04-30 12:36:04 +0200xff0x_(~xff0x@fsa056e3ab.kytj202.ap.nuro.jp)
2023-04-30 12:42:08 +0200gurkenglas(~gurkengla@dynamic-046-114-176-011.46.114.pool.telefonica.de) (Ping timeout: 248 seconds)
2023-04-30 12:44:15 +0200GerryH(~Brgaammin@p5b375702.dip0.t-ipconnect.de)
2023-04-30 12:44:23 +0200Inst(~Inst@2601:6c4:4081:54f0:7880:a3e7:2b04:1611) (Ping timeout: 246 seconds)
2023-04-30 12:48:27 +0200enoq(~enoq@2a05:1141:1f5:5600:b9c9:721a:599:bfe7) (Quit: enoq)
2023-04-30 12:53:22 +0200L29Ah(~L29Ah@wikipedia/L29Ah) ()
2023-04-30 12:54:05 +0200erisco(~erisco@d24-141-66-165.home.cgocable.net) (Ping timeout: 240 seconds)
2023-04-30 12:55:07 +0200xff0x_(~xff0x@fsa056e3ab.kytj202.ap.nuro.jp) (Ping timeout: 248 seconds)
2023-04-30 12:57:14 +0200xff0x_(~xff0x@fsa056e3ab.kytj202.ap.nuro.jp)
2023-04-30 13:08:41 +0200zeenk(~zeenk@2a02:2f04:a20f:5200::7fe) (Quit: Konversation terminated!)
2023-04-30 13:14:20 +0200bitdex(~bitdex@gateway/tor-sasl/bitdex) (Quit: = "")
2023-04-30 13:16:39 +0200merijn(~merijn@c-001-001-006.client.esciencecenter.eduvpn.nl)
2023-04-30 13:19:23 +0200coot(~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba) (Quit: coot)
2023-04-30 13:20:10 +0200GerryH(~Brgaammin@p5b375702.dip0.t-ipconnect.de) (Ping timeout: 276 seconds)
2023-04-30 13:41:17 +0200nate1(~nate@98.45.169.16)
2023-04-30 13:45:56 +0200nate1(~nate@98.45.169.16) (Ping timeout: 246 seconds)
2023-04-30 13:50:50 +0200merijn(~merijn@c-001-001-006.client.esciencecenter.eduvpn.nl) (Ping timeout: 246 seconds)
2023-04-30 13:53:41 +0200stallmanator(~stallmana@user/stallmanator)
2023-04-30 13:56:16 +0200coot(~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba)
2023-04-30 13:56:30 +0200titibandit(~titibandi@user/titibandit)
2023-04-30 13:56:59 +0200coot(~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba) (Remote host closed the connection)
2023-04-30 13:59:28 +0200xff0x_(~xff0x@fsa056e3ab.kytj202.ap.nuro.jp) (Ping timeout: 248 seconds)
2023-04-30 14:00:32 +0200stiell_(~stiell@gateway/tor-sasl/stiell) (Ping timeout: 240 seconds)
2023-04-30 14:01:25 +0200xff0x_(~xff0x@fsa056e3ab.kytj202.ap.nuro.jp)
2023-04-30 14:06:27 +0200stiell_(~stiell@gateway/tor-sasl/stiell)
2023-04-30 14:06:51 +0200alexherbo2(~alexherbo@2a02-842a-8180-4601-d5f7-1d09-2f8d-3550.rev.sfr.net) (Remote host closed the connection)
2023-04-30 14:07:19 +0200alexherbo2(~alexherbo@2a02-842a-8180-4601-d5f7-1d09-2f8d-3550.rev.sfr.net)
2023-04-30 14:08:11 +0200tremon(~tremon@83.80.159.219)
2023-04-30 14:12:18 +0200gawen(~gawen@user/gawen) (Quit: cya)
2023-04-30 14:13:39 +0200gawen(~gawen@user/gawen)
2023-04-30 14:15:42 +0200Joao003(~Joao003@2804:840:8311:b700:5c98:76bb:dd08:e1ad)
2023-04-30 14:17:33 +0200 <Joao003> Hello
2023-04-30 14:18:54 +0200 <[exa]> o/
2023-04-30 14:21:27 +0200 <Joao003> [exa]: What
2023-04-30 14:22:33 +0200 <[exa]> wait I'll wave with the other hand, hope you'll see it then
2023-04-30 14:22:35 +0200 <[exa]> \o
2023-04-30 14:22:53 +0200 <stallmanator> hi
2023-04-30 14:24:15 +0200 <Joao003> Oh
2023-04-30 14:26:19 +0200gnalzo(~gnalzo@2a01:e0a:498:fd50:fcc6:bb5d:489a:ce8c) (Quit: WeeChat 3.8)
2023-04-30 14:26:21 +0200pyook(~puke@user/puke)
2023-04-30 14:26:55 +0200 <Helle> oooh, I'm already pushing the boundaries of the type system, always fun
2023-04-30 14:29:14 +0200 <Helle> I know I probably shouldn't be doing this
2023-04-30 14:29:27 +0200 <[exa]> Helle: traditionally I have to ask about what direction are you pushing, w.r.t. to the direction towards undecidability
2023-04-30 14:29:30 +0200 <[exa]> :D
2023-04-30 14:30:12 +0200 <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
2023-04-30 14:30:20 +0200 <Helle> err, halting problem
2023-04-30 14:30:30 +0200 <Helle> that was fun when I finally realised why the query didn't work
2023-04-30 14:31:31 +0200 <Helle> let's see if I can phrase the question for this, and excuse my incorrect terminology, my Haskell is super rusty
2023-04-30 14:31:47 +0200coot(~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba)
2023-04-30 14:32:19 +0200 <[exa]> lol cool
2023-04-30 14:32:32 +0200 <Joao003> Halting Problem? Did you mean impossible?
2023-04-30 14:32:37 +0200 <Helle> Joao003: yes
2023-04-30 14:32:41 +0200 <Joao003> XD
2023-04-30 14:33:25 +0200 <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
2023-04-30 14:33:28 +0200 <Helle> anyway
2023-04-30 14:33:30 +0200coot(~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba) (Remote host closed the connection)
2023-04-30 14:35:28 +0200 <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
2023-04-30 14:35:34 +0200 <Helle> system to help me and eliminate that
2023-04-30 14:36:47 +0200 <Joao003> Guys
2023-04-30 14:37:08 +0200 <Helle> but I am probably short some concept with the type declaration of the function
2023-04-30 14:37:18 +0200 <Helle> (as said, quite rusty)
2023-04-30 14:38:27 +0200 <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`
2023-04-30 14:38:28 +0200 <[exa]> Helle: why not just go with Element?
2023-04-30 14:38:47 +0200pyook(~puke@user/puke) (Ping timeout: 246 seconds)
2023-04-30 14:39:38 +0200CiaoSen(~Jura@tmo-110-209.customers.d1-online.com)
2023-04-30 14:39:43 +0200 <Helle> [exa]: I didn't get to choose to be passed a Node (library function) instead of the Element
2023-04-30 14:39:51 +0200 <ncf> Joao003: nub doesn't need sorting
2023-04-30 14:40:41 +0200 <Joao003> ncf: It does
2023-04-30 14:40:50 +0200 <Joao003> Because of the kata's objective
2023-04-30 14:41:08 +0200 <ncf> ah, you're sorting after nub
2023-04-30 14:41:17 +0200 <[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
2023-04-30 14:41:49 +0200ft(~ft@p4fc2a88b.dip0.t-ipconnect.de) (Remote host closed the connection)
2023-04-30 14:42:15 +0200 <[exa]> (or at least annotated in types, but for that I guess there won't be enough polymorphism)
2023-04-30 14:42:43 +0200 <Helle> [exa]: yeah, I got the feeling that that would be the case
2023-04-30 14:43:20 +0200 <[exa]> (generally, valuechecking by types is hard)
2023-04-30 14:43:56 +0200 <Helle> mhm
2023-04-30 14:44:05 +0200 <Joao003> ncf: The objective of that kata was to get the longest lexicographically sorted string pulling characters from two input strings
2023-04-30 14:44:23 +0200 <Joao003> With distinct characters
2023-04-30 14:44:52 +0200 <[exa]> Helle: otoh you can easily patternmatch on the result and have a relatively sane error handling if not
2023-04-30 14:45:07 +0200Alex_test(~al_test@178.34.150.15) (Quit: ;-)
2023-04-30 14:45:28 +0200 <Helle> [exa]: yeah, but I can't have compile time checking in that case, right ?
2023-04-30 14:45:29 +0200AlexZenon(~alzenon@178.34.150.15) (Quit: ;-)
2023-04-30 14:45:53 +0200AlexNoo(~AlexNoo@178.34.150.15) (Quit: Leaving)
2023-04-30 14:45:56 +0200 <[exa]> Helle: yeah, I kinda guess you're trying to push the typechecker into doing input validation for you
2023-04-30 14:46:27 +0200 <Helle> [exa]: not even
2023-04-30 14:46:49 +0200 <Helle> although good point, that is why the issue exists
2023-04-30 14:47:01 +0200 <Helle> because the pattern is quite similar to that
2023-04-30 14:47:08 +0200pyook(~puke@user/puke)
2023-04-30 14:47:11 +0200 <[exa]> anyway in cases like this I usually just go for some shortcirtuiting monad like a Maybe that shortcuts when the patternmatch fails
2023-04-30 14:48:32 +0200 <[exa]> e.g. you can have the error handled literally by `x <- element input` where element returns `Maybe Element`
2023-04-30 14:48:45 +0200 <Helle> yep
2023-04-30 14:48:58 +0200 <Helle> literally what it does right now
2023-04-30 14:49:14 +0200 <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)
2023-04-30 14:50:02 +0200 <Joao003> Oh no
2023-04-30 14:50:34 +0200 <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.....)
2023-04-30 14:50:42 +0200 <Joao003> In the Haskell solutions for a Kata in Codewars, someone didn't know about currying nor `id` XD
2023-04-30 14:50:51 +0200alexherbo2(~alexherbo@2a02-842a-8180-4601-d5f7-1d09-2f8d-3550.rev.sfr.net) (Remote host closed the connection)
2023-04-30 14:51:13 +0200 <Helle> Joao003: I mean
2023-04-30 14:51:23 +0200alexherbo2(~alexherbo@211.190.65.81.rev.sfr.net)
2023-04-30 14:51:24 +0200 <Helle> never blame someone for still solving it
2023-04-30 14:51:31 +0200Hellelooks at how bad her current code is
2023-04-30 14:52:17 +0200 <Joao003> Take a look at it for yourself
2023-04-30 14:53:21 +0200ft(~ft@p4fc2a88b.dip0.t-ipconnect.de)
2023-04-30 14:53:25 +0200 <Joao003> https://paste.tomsmeding.com/PELz6Ja5
2023-04-30 14:53:29 +0200 <[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.
2023-04-30 14:54:47 +0200 <[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`
2023-04-30 14:55:05 +0200 <[exa]> but that gets unwieldy for the package implementors...
2023-04-30 14:57:43 +0200 <Helle> yep
2023-04-30 14:58:34 +0200 <Hecate> not using `id` means that you've spent too much time in your code and need to take a step back
2023-04-30 14:58:35 +0200 <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 :)
2023-04-30 15:01:32 +0200 <Helle> also, just remembered, I can make it hit an.... error
2023-04-30 15:01:46 +0200 <Helle> but I think I can produce a more userfriendly instructing some yelling at a dev
2023-04-30 15:03:51 +0200euandreh(~Thunderbi@189.6.18.7) (Ping timeout: 265 seconds)
2023-04-30 15:05:18 +0200 <Hecate> :D
2023-04-30 15:11:02 +0200 <Helle> (the only failure cases would be am incompatible library update, or new code that does incorrect stuff)w
2023-04-30 15:11:02 +0200 <stallmanator> does the let keyword do anything differently or is it just syntactic sugar?
2023-04-30 15:11:58 +0200xff0x_(~xff0x@fsa056e3ab.kytj202.ap.nuro.jp) (Ping timeout: 276 seconds)
2023-04-30 15:12:40 +0200L29Ah(~L29Ah@wikipedia/L29Ah)
2023-04-30 15:13:40 +0200xff0x_(~xff0x@fsa056e3ab.kytj202.ap.nuro.jp)
2023-04-30 15:14:17 +0200GerryH(~Brgaammin@p5b375702.dip0.t-ipconnect.de)
2023-04-30 15:14:46 +0200 <Joao003> Who uses `let ... in` outside of GHCI?
2023-04-30 15:15:45 +0200CiaoSen(~Jura@tmo-110-209.customers.d1-online.com) (Ping timeout: 240 seconds)
2023-04-30 15:16:05 +0200 <ski> stallmanator : `let' is not syntactic sugar
2023-04-30 15:16:27 +0200 <ski> (and differently from what ?)
2023-04-30 15:17:11 +0200 <stallmanator> the book I'm reading compares let x = 1 to x = 1
2023-04-30 15:17:32 +0200 <ski> where ?
2023-04-30 15:18:24 +0200 <stallmanator> the part where it introduces let
2023-04-30 15:18:31 +0200ski's also delightfully surprised this use of monospace is not terminated by "clear all attributes"
2023-04-30 15:18:54 +0200 <ski> stallmanator : no, i mean, in which context is the book considering those two program fragments ?
2023-04-30 15:20:02 +0200 <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. ?
2023-04-30 15:20:02 +0200gmg(~user@user/gehmehgeh) (Remote host closed the connection)
2023-04-30 15:20:49 +0200gmg(~user@user/gehmehgeh)
2023-04-30 15:20:51 +0200 <stallmanator> I'm yet to encounter where but yes I think it's talking in context of ghci
2023-04-30 15:21:43 +0200myme(~myme@2a01:799:d60:e400:d3f8:a1c2:97a0:2fb) (Ping timeout: 260 seconds)
2023-04-30 15:21:46 +0200 <ski> ok. in *that* specific context, you can leave out the `let' (so the form without `let' could be seen as syntactic sugar)
2023-04-30 15:22:19 +0200 <Joao003> stallmanator: Have you seen `let ... in` yet?
2023-04-30 15:22:22 +0200 <stallmanator> I see, well really thanks help for the help :)
2023-04-30 15:22:23 +0200 <ski> (in other contexts, either the `let' is required, or it's not allowed)
2023-04-30 15:22:29 +0200 <stallmanator> Joao003: yeah I found the wiki page on hackage
2023-04-30 15:22:35 +0200myme(~myme@2a01:799:d60:e400:62e6:cfdd:2547:9938)
2023-04-30 15:23:04 +0200 <stallmanator> oh sorry my bad: https://wiki.haskell.org/Let_vs._Where this page
2023-04-30 15:23:24 +0200AlexNoo(~AlexNoo@178.34.150.15)
2023-04-30 15:23:28 +0200 <stallmanator> I heard hackage somewhere and it's been stuck in my head because sounds like a pretty cool name :)
2023-04-30 15:24:13 +0200 <ski> @where hackage
2023-04-30 15:24:14 +0200 <lambdabot> <http://hackage.haskell.org/packages>, also see `revdeps',`status'
2023-04-30 15:24:20 +0200AlexZenon(~alzenon@178.34.150.15)
2023-04-30 15:25:19 +0200 <mauke> @where revdeps
2023-04-30 15:25:19 +0200 <lambdabot> <http://packdeps.haskellers.com/reverse>,<http://packdeps.haskellers.com/>,<http://www.yesodweb.com/blog/2011/02/reverse-packdeps>
2023-04-30 15:25:25 +0200 <mauke> @where status
2023-04-30 15:25:26 +0200 <lambdabot> <https://status.haskell.org>,<http://auto-status.haskell.org/>,<https://twitter.com/haskellstatus>
2023-04-30 15:27:59 +0200Alex_test(~al_test@178.34.150.15)
2023-04-30 15:31:51 +0200[itchyjunk](~itchyjunk@user/itchyjunk/x-7353470)
2023-04-30 15:35:09 +0200 <somerandomnick[m> ski: does it help the compiler to utilize referential transparency, to avoid re-evaluation?
2023-04-30 15:35:28 +0200 <ski> "it" being ?
2023-04-30 15:35:52 +0200 <Joao003> Is there a non-inclusive `enumFromTo`?
2023-04-30 15:36:04 +0200 <ski> not that i'm aware of
2023-04-30 15:36:20 +0200 <ski> > range (0,9)
2023-04-30 15:36:22 +0200 <lambdabot> [0,1,2,3,4,5,6,7,8,9]
2023-04-30 15:36:57 +0200 <int-e> ski: I've had so many off-by-one errors because of that
2023-04-30 15:37:10 +0200 <ski> `range' or `enumFromTo' ?
2023-04-30 15:37:14 +0200 <int-e> range
2023-04-30 15:38:04 +0200 <ski> > range ((0,2),(3,3))
2023-04-30 15:38:06 +0200 <lambdabot> [(0,2),(0,3),(1,2),(1,3),(2,2),(2,3),(3,2),(3,3)]
2023-04-30 15:38:59 +0200acidjnk(~acidjnk@p200300d6e715c46789327d173b2333a9.dip0.t-ipconnect.de)
2023-04-30 15:39:05 +0200 <int-e> . o O ( >>> list(range(0,9)) --> [0, 1, 2, 3, 4, 5, 6, 7, 8] )
2023-04-30 15:39:22 +0200 <ski> Python ?
2023-04-30 15:39:30 +0200 <int-e> Yes.
2023-04-30 15:39:44 +0200titibandit(~titibandi@user/titibandit) (Remote host closed the connection)
2023-04-30 15:40:00 +0200 <int-e> And recently, Rust.
2023-04-30 15:40:25 +0200 <int-e> Which has a 0..9 syntax for an iterator over 0,1,...,8 and 0..=9 for 0,1,...,9
2023-04-30 15:40:27 +0200acidjnk_new(~acidjnk@p200300d6e715c467d9596cc51d075b5b.dip0.t-ipconnect.de) (Ping timeout: 248 seconds)
2023-04-30 15:40:48 +0200 <int-e> hmm, well, technically it's a range and it auto-converts into an iterator for loops
2023-04-30 15:42:26 +0200 <ski> i'm guessing it doesn't do multi-dimensional ranges
2023-04-30 15:42:32 +0200 <ski> hmm
2023-04-30 15:42:57 +0200coot_(~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba)
2023-04-30 15:46:06 +0200coot_(~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba) (Client Quit)
2023-04-30 15:47:25 +0200coot(~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba)
2023-04-30 15:47:31 +0200merijn(~merijn@c-001-001-006.client.esciencecenter.eduvpn.nl)
2023-04-30 15:47:44 +0200 <Joao003> > enumFromTo "aa" "zz"
2023-04-30 15:47:46 +0200 <lambdabot> error:
2023-04-30 15:47:46 +0200 <lambdabot> • No instance for (Enum [Char]) arising from a use of ‘enumFromTo’
2023-04-30 15:47:46 +0200 <lambdabot> • In the expression: enumFromTo "aa" "zz"
2023-04-30 15:48:14 +0200 <Joao003> > enumFromTo ('a', 'a') ('z', 'z')
2023-04-30 15:48:15 +0200 <lambdabot> error:
2023-04-30 15:48:15 +0200 <lambdabot> • No instance for (Enum (Char, Char))
2023-04-30 15:48:15 +0200 <lambdabot> arising from a use of ‘enumFromTo’
2023-04-30 15:49:08 +0200Luj(~Luj@2a01:e0a:5f9:9681:5880:c9ff:fe9f:3dfb) (Quit: The Lounge - https://thelounge.chat)
2023-04-30 15:49:21 +0200 <geekosaur> there's at least two possible definitions for that
2023-04-30 15:49:37 +0200 <probie> > join (liftM2 (\x y -> [x,y])) (enumFromTo 'a' 'z')
2023-04-30 15:49:39 +0200 <lambdabot> ["aa","ab","ac","ad","ae","af","ag","ah","ai","aj","ak","al","am","an","ao",...
2023-04-30 15:49:39 +0200 <geekosaur> better to implement the one you want yourself
2023-04-30 15:49:59 +0200 <ski> total order (lexicographic) vs. partial order
2023-04-30 15:50:13 +0200 <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...
2023-04-30 15:50:45 +0200 <int-e> It's all apples and oranges, of course.
2023-04-30 15:50:53 +0200 <ski> > replicateM 2 ['a' .. 'z']
2023-04-30 15:50:55 +0200 <lambdabot> ["aa","ab","ac","ad","ae","af","ag","ah","ai","aj","ak","al","am","an","ao",...
2023-04-30 15:51:03 +0200Luj(~Luj@2a01:e0a:5f9:9681:5880:c9ff:fe9f:3dfb)
2023-04-30 15:54:46 +0200 <Joao003> Who here hates list comprehensions?
2023-04-30 15:55:19 +0200 <Joao003> And how is `map` defined?
2023-04-30 15:55:22 +0200 <Joao003> @src map
2023-04-30 15:55:22 +0200 <lambdabot> map _ [] = []
2023-04-30 15:55:22 +0200 <lambdabot> map f (x:xs) = f x : map f xs
2023-04-30 15:55:26 +0200 <Joao003> Cool.
2023-04-30 15:55:33 +0200 <int-e> (it's a lie)
2023-04-30 15:55:53 +0200eggplantade(~Eggplanta@2600:1700:38c5:d800:d4d0:8bd2:d805:7ab6)
2023-04-30 15:56:08 +0200 <Joao003> So it's actually `map f xs = [f x | x <- xs]`?
2023-04-30 15:57:27 +0200 <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.
2023-04-30 15:57:28 +0200 <Joao003> The difference between `foldl` and `foldr` can be annoying at times, specifically the folding function's arguments swapping
2023-04-30 15:58:06 +0200 <int-e> And list fusion in turn is essential for making list comprehension not suck.
2023-04-30 15:58:06 +0200 <Joao003> > foldl (-) [5..1]
2023-04-30 15:58:08 +0200 <lambdabot> error:
2023-04-30 15:58:08 +0200 <lambdabot> • No instance for (Num [Integer]) arising from a use of ‘e_151’
2023-04-30 15:58:08 +0200 <lambdabot> • In the expression: e_151
2023-04-30 15:58:18 +0200 <Joao003> > foldl (-) 0 [5..1]
2023-04-30 15:58:18 +0200Me-me(~Me-me@user/me-me) (Quit: Something has gone terribly, terribly wrong, that being that I'm not here any more.)
2023-04-30 15:58:19 +0200 <lambdabot> 0
2023-04-30 15:58:26 +0200 <int-e> > [5..1]
2023-04-30 15:58:28 +0200 <lambdabot> []
2023-04-30 15:58:32 +0200 <Joao003> > foldl (-) 0 [1..5]
2023-04-30 15:58:35 +0200 <lambdabot> -15
2023-04-30 15:58:41 +0200 <Joao003> > foldr (-) 0 [1..5]
2023-04-30 15:58:44 +0200 <lambdabot> 3
2023-04-30 15:58:46 +0200 <Joao003> Ugh
2023-04-30 15:58:58 +0200 <int-e> Joao003: you can message lambdabot privately too
2023-04-30 15:59:29 +0200 <Joao003> It became 1-(2-(3-(4-(5-0))))
2023-04-30 15:59:42 +0200 <int-e> of course
2023-04-30 15:59:59 +0200 <geekosaur> easy to remember what foldr does, it replaces , with the operator/function and [] with the base case
2023-04-30 16:00:02 +0200 <Joao003> > foldr (flip (-)) 0 [1..5]
2023-04-30 16:00:02 +0200 <int-e> (what did you expect?)
2023-04-30 16:00:04 +0200 <lambdabot> -15
2023-04-30 16:00:27 +0200eggplantade(~Eggplanta@2600:1700:38c5:d800:d4d0:8bd2:d805:7ab6) (Ping timeout: 260 seconds)
2023-04-30 16:00:44 +0200 <Joao003> > scanl (*) 1 [1..10]
2023-04-30 16:00:46 +0200 <lambdabot> [1,1,2,6,24,120,720,5040,40320,362880,3628800]
2023-04-30 16:00:49 +0200 <Joao003> Factorials
2023-04-30 16:01:02 +0200 <geekosaur> sorry replaces (:), you need to look at it in (:) form (the actual list) to understand it
2023-04-30 16:01:22 +0200 <probie> > foldr subtract 0 [1..5]
2023-04-30 16:01:27 +0200 <lambdabot> -15
2023-04-30 16:01:36 +0200 <int-e> > fix (scanl (+) 0 . (1:))
2023-04-30 16:01:38 +0200 <lambdabot> [0,1,1,2,3,5,8,13,21,34,55,89,144,233,377,610,987,1597,2584,4181,6765,10946,...
2023-04-30 16:01:46 +0200 <Joao003> > 1:2:3:4:[5]
2023-04-30 16:01:47 +0200 <lambdabot> [1,2,3,4,5]
2023-04-30 16:02:11 +0200 <geekosaur> > 1:2:3:4:5:[]
2023-04-30 16:02:13 +0200 <lambdabot> [1,2,3,4,5]
2023-04-30 16:02:43 +0200 <Joao003> > let snoc = reverse . (:) . reverse in foldl snoc [] [1..5]
2023-04-30 16:02:45 +0200 <lambdabot> error:
2023-04-30 16:02:45 +0200 <lambdabot> • Couldn't match type ‘[[a2]] -> [[a2]]’ with ‘[a3]’
2023-04-30 16:02:45 +0200 <lambdabot> Expected type: [a2] -> [a3]
2023-04-30 16:02:49 +0200xff0x_(~xff0x@fsa056e3ab.kytj202.ap.nuro.jp) (Ping timeout: 252 seconds)
2023-04-30 16:02:55 +0200 <Joao003> > let snoc = reverse . (:) . reverse in foldr snoc [] [1..5]
2023-04-30 16:02:57 +0200 <lambdabot> error:
2023-04-30 16:02:57 +0200 <lambdabot> • Couldn't match type ‘[[a2]] -> [[a2]]’ with ‘[a3]’
2023-04-30 16:02:57 +0200 <lambdabot> Expected type: [a2] -> [a3]
2023-04-30 16:03:03 +0200 <int-e> Joao003: please experiment somewhere else
2023-04-30 16:03:12 +0200pyooque(~puke@user/puke)
2023-04-30 16:03:12 +0200pukeGuest8720
2023-04-30 16:03:12 +0200Guest8720(~puke@user/puke) (Killed (copper.libera.chat (Nickname regained by services)))
2023-04-30 16:03:12 +0200pyooquepuke
2023-04-30 16:03:49 +0200puke(~puke@user/puke) (Max SendQ exceeded)
2023-04-30 16:04:42 +0200xff0x_(~xff0x@fsa056e3ab.kytj202.ap.nuro.jp)
2023-04-30 16:05:05 +0200puke(~puke@user/puke)
2023-04-30 16:05:52 +0200alexherbo2(~alexherbo@211.190.65.81.rev.sfr.net) (Remote host closed the connection)
2023-04-30 16:05:52 +0200puke(~puke@user/puke) (Max SendQ exceeded)
2023-04-30 16:07:05 +0200puke(~puke@user/puke)
2023-04-30 16:07:31 +0200 <int-e> @pl \x xs -> reverse (x : reverse xs)
2023-04-30 16:07:32 +0200 <lambdabot> (reverse .) . (. reverse) . (:)
2023-04-30 16:07:42 +0200 <int-e> (almost pretty)
2023-04-30 16:08:34 +0200chomwitt(~chomwitt@2a02:587:7a1d:9d00:1ac0:4dff:fedb:a3f1)
2023-04-30 16:21:16 +0200 <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
2023-04-30 16:21:41 +0200merijn(~merijn@c-001-001-006.client.esciencecenter.eduvpn.nl) (Ping timeout: 246 seconds)
2023-04-30 16:23:32 +0200 <ski> ooc, where did you use it ?
2023-04-30 16:25:56 +0200 <Helle> well, I also just removed it again, heh
2023-04-30 16:26:10 +0200 <Helle> so not that great
2023-04-30 16:27:37 +0200 <Helle> maybe default id, but fromMaybe does just that without requiring the id, though just as many characters :P
2023-04-30 16:27:56 +0200 <Helle> (thanks hlint)
2023-04-30 16:39:21 +0200jade[m]uploaded an image: (512KiB) < https://libera.ems.host/_matrix/media/v3/download/matrix.org/GbfgntNYrnWgZtoCMUmcnDxN/image.png >
2023-04-30 16:39:21 +0200 <jade[m]> I made this by accident
2023-04-30 16:39:22 +0200 <jade[m]> looks kinda sick
2023-04-30 16:40:48 +0200 <int-e> :t foldMap id -- this one has a name though, `fold`
2023-04-30 16:40:49 +0200 <lambdabot> (Foldable t, Monoid m) => t m -> m
2023-04-30 16:44:00 +0200 <int-e> :t foldr (.) id
2023-04-30 16:44:01 +0200 <lambdabot> Foldable t => t (b -> b) -> b -> b
2023-04-30 16:47:49 +0200L29Ah(~L29Ah@wikipedia/L29Ah) ()
2023-04-30 16:48:22 +0200Square(~Square@user/square)
2023-04-30 16:51:32 +0200acidjnk(~acidjnk@p200300d6e715c46789327d173b2333a9.dip0.t-ipconnect.de) (Ping timeout: 252 seconds)
2023-04-30 16:52:29 +0200 <fbytez> In a statement like the following, does it ever make sense to use `deriving`?: `newtype Thing = Thing String`
2023-04-30 16:52:50 +0200 <fbytez> I was actually expecting a warning or something from the compiler.
2023-04-30 16:53:44 +0200 <fbytez> I was using `data` as I didn't know about `newtype`.
2023-04-30 16:54:07 +0200Joao003(~Joao003@2804:840:8311:b700:5c98:76bb:dd08:e1ad) (Quit: Leaving)
2023-04-30 16:58:13 +0200 <probie> fbytez: why wouldn't it make sense to use deriving?
2023-04-30 16:58:58 +0200tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Read error: Connection reset by peer)
2023-04-30 17:00:23 +0200 <fbytez> I guess I thought it was closer to `type` than `data`.
2023-04-30 17:00:49 +0200 <fbytez> So, is basically like `data` but without any fields?
2023-04-30 17:00:49 +0200trev(~trev@user/trev)
2023-04-30 17:01:15 +0200 <ski> you can have `newtype Think = MkThing {getThing :: Spring}'
2023-04-30 17:03:49 +0200 <fbytez> Right. I just got `The constructor of a newtype must have exactly one field` in ghci.
2023-04-30 17:05:06 +0200 <fbytez> So, is there any technical reason to use `newtype` instead of `data`?
2023-04-30 17:05:32 +0200 <ski> there are semantic reasons
2023-04-30 17:05:39 +0200 <ncf> https://wiki.haskell.org/Newtype
2023-04-30 17:06:21 +0200 <ski> `newtype' doesn't add an extra bottom
2023-04-30 17:07:29 +0200 <ncf> @let newtype Thing = Thing String
2023-04-30 17:07:30 +0200 <lambdabot> /sandbox/tmp/.L.hs:165:1: error:
2023-04-30 17:07:30 +0200 <lambdabot> Multiple declarations of ‘Thing’
2023-04-30 17:07:30 +0200 <lambdabot> Declared at: /sandbox/tmp/.L.hs:163:1
2023-04-30 17:07:39 +0200 <ncf> > case error "no" of Thing _ -> "yes"
2023-04-30 17:07:41 +0200 <lambdabot> "yes"
2023-04-30 17:07:50 +0200 <ncf> @let data DataThing = Thing String
2023-04-30 17:07:51 +0200 <lambdabot> /sandbox/tmp/.L.hs:165:18: error:
2023-04-30 17:07:51 +0200 <lambdabot> Multiple declarations of ‘Thing’
2023-04-30 17:07:51 +0200 <lambdabot> Declared at: /sandbox/tmp/.L.hs:163:17
2023-04-30 17:07:57 +0200 <ncf> @let data DataThing = DataThing String
2023-04-30 17:07:59 +0200 <lambdabot> Defined.
2023-04-30 17:08:03 +0200 <ncf> > case error "no" of DataThing _ -> "yes"
2023-04-30 17:08:05 +0200 <lambdabot> "*Exception: no
2023-04-30 17:08:40 +0200 <ski> `newtype' data constructors are also always strict
2023-04-30 17:09:13 +0200 <ski> (but matching on them is a no-op, unlike matching on (all) `data' constructors)
2023-04-30 17:11:49 +0200 <fbytez> The wiki page that ncf shared seems informative but I don't quite get it yet.
2023-04-30 17:13:53 +0200 <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
2023-04-30 17:14:08 +0200econo(uid147250@user/econo)
2023-04-30 17:15:22 +0200gurkenglas(~gurkengla@dynamic-046-114-176-011.46.114.pool.telefonica.de)
2023-04-30 17:15:40 +0200 <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
2023-04-30 17:16:13 +0200 <ski> (in case you're unsure, perhaps now is the time to ask about what `_|_' means)
2023-04-30 17:21:19 +0200 <fbytez> That's helpful, ski, thankyou.
2023-04-30 17:22:38 +0200GerryH(~Brgaammin@p5b375702.dip0.t-ipconnect.de) (Ping timeout: 246 seconds)
2023-04-30 17:22:54 +0200heraldo(~heraldo@user/heraldo)
2023-04-30 17:23:20 +0200 <ncf> it means someone doesn't know how to type ⊥
2023-04-30 17:24:04 +0200 <heraldo> It means she shouldn't look over her shoulder at you when she walks away.
2023-04-30 17:25:58 +0200heraldo(~heraldo@user/heraldo) ()
2023-04-30 17:27:20 +0200trev(~trev@user/trev) (*.net *.split)
2023-04-30 17:27:20 +0200Alex_test(~al_test@178.34.150.15) (*.net *.split)
2023-04-30 17:27:20 +0200myme(~myme@2a01:799:d60:e400:62e6:cfdd:2547:9938) (*.net *.split)
2023-04-30 17:27:20 +0200tremon(~tremon@83.80.159.219) (*.net *.split)
2023-04-30 17:27:20 +0200werneta(~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net) (*.net *.split)
2023-04-30 17:27:20 +0200takuan(~takuan@178-116-218-225.access.telenet.be) (*.net *.split)
2023-04-30 17:27:20 +0200sus0(zero@user/zeromomentum) (*.net *.split)
2023-04-30 17:27:20 +0200talismanick(~user@2601:204:ef80:6c80::a8e2) (*.net *.split)
2023-04-30 17:27:20 +0200vulpine(xfnw@tilde.team) (*.net *.split)
2023-04-30 17:27:20 +0200johnw(~johnw@76-234-69-149.lightspeed.frokca.sbcglobal.net) (*.net *.split)
2023-04-30 17:27:20 +0200ix(~ix@2a02:8012:281f:0:d65d:64ff:fe52:5efe) (*.net *.split)
2023-04-30 17:27:20 +0200PHO`(~pho@akari.cielonegro.org) (*.net *.split)
2023-04-30 17:27:20 +0200pieguy128_(~pieguy128@bras-base-mtrlpq5031w-grc-56-65-92-162-12.dsl.bell.ca) (*.net *.split)
2023-04-30 17:27:20 +0200bgamari_(~bgamari@64.223.233.113) (*.net *.split)
2023-04-30 17:27:20 +0200Philonous(~Philonous@user/philonous) (*.net *.split)
2023-04-30 17:27:20 +0200Unode(~Unode@fg-ext-220.embl.de) (*.net *.split)
2023-04-30 17:27:20 +0200yaroot(~yaroot@2400:4052:ac0:d900:1cf4:2aff:fe51:c04c) (*.net *.split)
2023-04-30 17:27:20 +0200telser(~quassel@user/telser) (*.net *.split)
2023-04-30 17:27:20 +0200Profpatsch(~Profpatsc@static.88-198-193-255.clients.your-server.de) (*.net *.split)
2023-04-30 17:27:20 +0200lambdabot(~lambdabot@haskell/bot/lambdabot) (*.net *.split)
2023-04-30 17:27:20 +0200sa(sid1055@id-1055.tinside.irccloud.com) (*.net *.split)
2023-04-30 17:27:20 +0200NiKaN(sid385034@id-385034.helmsley.irccloud.com) (*.net *.split)
2023-04-30 17:27:20 +0200megeve(sid523379@id-523379.hampstead.irccloud.com) (*.net *.split)
2023-04-30 17:27:20 +0200rubin55(sid175221@id-175221.hampstead.irccloud.com) (*.net *.split)
2023-04-30 17:27:20 +0200astra(sid289983@user/amish) (*.net *.split)
2023-04-30 17:27:20 +0200welterde(welterde@thinkbase.srv.welterde.de) (*.net *.split)
2023-04-30 17:27:20 +0200TMA(tma@twin.jikos.cz) (*.net *.split)
2023-04-30 17:27:20 +0200energizer(~energizer@user/energizer) (*.net *.split)
2023-04-30 17:27:20 +0200dagit(~dagit@2001:558:6025:38:71c6:9d58:7252:8976) (*.net *.split)
2023-04-30 17:27:20 +0200SoF(~skius@user/skius) (*.net *.split)
2023-04-30 17:27:20 +0200kawzeg_(kawzeg@2a01:7e01::f03c:92ff:fee2:ec34) (*.net *.split)
2023-04-30 17:27:20 +0200codedmart(~codedmart@li335-49.members.linode.com) (*.net *.split)
2023-04-30 17:27:20 +0200bonz060(~quassel@2001:bc8:47a4:a23::1) (*.net *.split)
2023-04-30 17:27:20 +0200acro(~acro@user/acro) (*.net *.split)
2023-04-30 17:27:20 +0200acidsys(~crameleon@openSUSE/member/crameleon) (*.net *.split)
2023-04-30 17:27:20 +0200nonzen(~nonzen@user/nonzen) (*.net *.split)
2023-04-30 17:27:20 +0200aaronm04(~user@user/aaronm04) (*.net *.split)
2023-04-30 17:27:20 +0200ames(~amelia@offtopia/offtopian/amelia) (*.net *.split)
2023-04-30 17:27:20 +0200haveo_(~haveo@sl35.iuwt.fr) (*.net *.split)
2023-04-30 17:27:20 +0200xnbya2(~xnbya@2a01:4f8:c17:cbdd::1) (*.net *.split)
2023-04-30 17:27:20 +0200Fangs(sid141280@id-141280.hampstead.irccloud.com) (*.net *.split)
2023-04-30 17:27:20 +0200mxs(~mxs@user/mxs) (*.net *.split)
2023-04-30 17:27:20 +0200rune(sid21167@id-21167.ilkley.irccloud.com) (*.net *.split)
2023-04-30 17:27:20 +0200fiddlerwoaroof(~fiddlerwo@user/fiddlerwoaroof) (*.net *.split)
2023-04-30 17:27:20 +0200jackdk(sid373013@cssa/jackdk) (*.net *.split)
2023-04-30 17:27:20 +0200mustafa(sid502723@rockylinux/releng/mustafa) (*.net *.split)
2023-04-30 17:27:20 +0200parseval(sid239098@id-239098.helmsley.irccloud.com) (*.net *.split)
2023-04-30 17:27:20 +0200T_S_(sid501726@id-501726.uxbridge.irccloud.com) (*.net *.split)
2023-04-30 17:27:20 +0200bw(sid2730@user/betawaffle) (*.net *.split)
2023-04-30 17:27:20 +0200JSharp(sid4580@id-4580.lymington.irccloud.com) (*.net *.split)
2023-04-30 17:27:20 +0200buhman(sid411355@user/buhman) (*.net *.split)
2023-04-30 17:27:20 +0200mhatta(~mhatta@www21123ui.sakura.ne.jp) (*.net *.split)
2023-04-30 17:27:20 +0200integral(sid296274@user/integral) (*.net *.split)
2023-04-30 17:27:20 +0200bjs(sid190364@user/bjs) (*.net *.split)
2023-04-30 17:27:20 +0200Boarders___(sid425905@2a03:5180:f:2::6:7fb1) (*.net *.split)
2023-04-30 17:27:20 +0200Kamuela(sid111576@2a03:5180:f::1:b3d8) (*.net *.split)
2023-04-30 17:27:20 +0200conjunctive(sid433686@2a03:5180:f:1::6:9e16) (*.net *.split)
2023-04-30 17:27:20 +0200gonz_______(sid304396@2a03:5180:f:2::4:a50c) (*.net *.split)
2023-04-30 17:27:20 +0200hamishmack(sid389057@2a03:5180:f:4::5:efc1) (*.net *.split)
2023-04-30 17:27:20 +0200agander_m(sid407952@2a03:5180:f::6:3990) (*.net *.split)
2023-04-30 17:27:20 +0200sa1(sid7690@id-7690.ilkley.irccloud.com) (*.net *.split)
2023-04-30 17:27:20 +0200jonrh(sid5185@id-5185.ilkley.irccloud.com) (*.net *.split)
2023-04-30 17:27:29 +0200xnbya(~xnbya@2a01:4f8:c17:cbdd::1)
2023-04-30 17:27:30 +0200lambdabot(~lambdabot@silicon.int-e.eu)
2023-04-30 17:27:30 +0200mxs(~mxs@user/mxs)
2023-04-30 17:27:34 +0200takuan(~takuan@178-116-218-225.access.telenet.be)
2023-04-30 17:27:34 +0200Unode(~Unode@fg-ext-220.embl.de)
2023-04-30 17:27:36 +0200parseval(sid239098@id-239098.helmsley.irccloud.com)
2023-04-30 17:27:37 +0200werneta(~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net)
2023-04-30 17:27:37 +0200TMA(tma@twin.jikos.cz)
2023-04-30 17:27:38 +0200codedmart(~codedmart@li335-49.members.linode.com)
2023-04-30 17:27:38 +0200johnw(~johnw@76-234-69-149.lightspeed.frokca.sbcglobal.net)
2023-04-30 17:27:39 +0200Alex_test(~al_test@178.34.150.15)
2023-04-30 17:27:40 +0200Fangs(sid141280@id-141280.hampstead.irccloud.com)
2023-04-30 17:27:41 +0200bonz060(~quassel@2001:bc8:47a4:a23::1)
2023-04-30 17:27:46 +0200talismanick(~user@2601:204:ef80:6c80::a8e2)
2023-04-30 17:27:51 +0200rune(sid21167@id-21167.ilkley.irccloud.com)
2023-04-30 17:27:51 +0200lambdabot(~lambdabot@silicon.int-e.eu) (Changing host)
2023-04-30 17:27:51 +0200lambdabot(~lambdabot@haskell/bot/lambdabot)
2023-04-30 17:27:53 +0200kawzeg_(kawzeg@2a01:7e01::f03c:92ff:fee2:ec34)
2023-04-30 17:27:56 +0200conjunctive(sid433686@id-433686.helmsley.irccloud.com)
2023-04-30 17:27:57 +0200myme(~myme@2a01:799:d60:e400:62e6:cfdd:2547:9938)
2023-04-30 17:27:57 +0200Profpatsch(~Profpatsc@static.88-198-193-255.clients.your-server.de)
2023-04-30 17:27:57 +0200jackdk(sid373013@id-373013.tinside.irccloud.com)
2023-04-30 17:27:58 +0200trev(~trev@109-252-34-44.nat.spd-mgts.ru)
2023-04-30 17:28:06 +0200bw_(sid2730@user/betawaffle)
2023-04-30 17:28:07 +0200hamishmack(sid389057@id-389057.hampstead.irccloud.com)
2023-04-30 17:28:08 +0200Kamuela(sid111576@2a03:5180:f::1:b3d8)
2023-04-30 17:28:10 +0200jonrh(sid5185@id-5185.ilkley.irccloud.com)
2023-04-30 17:28:11 +0200sus0(zero@user/zeromomentum)
2023-04-30 17:28:11 +0200gonz_______(sid304396@id-304396.lymington.irccloud.com)
2023-04-30 17:28:12 +0200agander_m(sid407952@2a03:5180:f::6:3990)
2023-04-30 17:28:13 +0200megeve(sid523379@id-523379.hampstead.irccloud.com)
2023-04-30 17:28:15 +0200welterde(welterde@thinkbase.srv.welterde.de)
2023-04-30 17:28:15 +0200T_S_(sid501726@id-501726.uxbridge.irccloud.com)
2023-04-30 17:28:16 +0200rubin55(sid175221@id-175221.hampstead.irccloud.com)
2023-04-30 17:28:19 +0200ix(~ix@2a02:8012:281f:0:d65d:64ff:fe52:5efe)
2023-04-30 17:28:19 +0200bjs(sid190364@id-190364.helmsley.irccloud.com)
2023-04-30 17:28:19 +0200astra(sid289983@id-289983.hampstead.irccloud.com)
2023-04-30 17:28:19 +0200integral(sid296274@id-296274.lymington.irccloud.com)
2023-04-30 17:28:19 +0200mustafa(sid502723@id-502723.hampstead.irccloud.com)
2023-04-30 17:28:22 +0200Boarders___(sid425905@id-425905.lymington.irccloud.com)
2023-04-30 17:28:31 +0200sa1(sid7690@id-7690.ilkley.irccloud.com)
2023-04-30 17:28:33 +0200jackdk(sid373013@id-373013.tinside.irccloud.com) (Changing host)
2023-04-30 17:28:33 +0200jackdk(sid373013@cssa/jackdk)
2023-04-30 17:28:34 +0200acidsys(~crameleon@openSUSE/member/crameleon)
2023-04-30 17:28:34 +0200trev(~trev@109-252-34-44.nat.spd-mgts.ru) (Changing host)
2023-04-30 17:28:34 +0200trev(~trev@user/trev)
2023-04-30 17:28:44 +0200sa(sid1055@2a03:5180:f::41f)
2023-04-30 17:28:58 +0200buhman(sid411355@id-411355.tinside.irccloud.com)
2023-04-30 17:29:00 +0200JSharp(sid4580@id-4580.lymington.irccloud.com)
2023-04-30 17:29:01 +0200bjs(sid190364@id-190364.helmsley.irccloud.com) (Changing host)
2023-04-30 17:29:01 +0200bjs(sid190364@user/bjs)
2023-04-30 17:29:01 +0200integral(sid296274@id-296274.lymington.irccloud.com) (Changing host)
2023-04-30 17:29:01 +0200integral(sid296274@user/integral)
2023-04-30 17:29:04 +0200mustafa(sid502723@id-502723.hampstead.irccloud.com) (Changing host)
2023-04-30 17:29:04 +0200mustafa(sid502723@rockylinux/releng/mustafa)
2023-04-30 17:29:07 +0200bgamari(~bgamari@64.223.233.113)
2023-04-30 17:29:13 +0200buhman(sid411355@id-411355.tinside.irccloud.com) (Changing host)
2023-04-30 17:29:13 +0200buhman(sid411355@user/buhman)
2023-04-30 17:29:22 +0200NiKaN(sid385034@id-385034.helmsley.irccloud.com)
2023-04-30 17:29:23 +0200yaroot(~yaroot@2400:4052:ac0:d900:1cf4:2aff:fe51:c04c)
2023-04-30 17:29:33 +0200mhatta(~mhatta@www21123ui.sakura.ne.jp)
2023-04-30 17:29:36 +0200ixGuest3954
2023-04-30 17:29:41 +0200pieguy128(~pieguy128@bas1-montreal02-65-92-162-12.dsl.bell.ca)
2023-04-30 17:29:52 +0200tremon(~tremon@83.80.159.219)
2023-04-30 17:29:53 +0200telser(~quassel@user/telser)
2023-04-30 17:29:58 +0200Philonous(~Philonous@user/philonous)
2023-04-30 17:30:19 +0200nonzen(~nonzen@user/nonzen)
2023-04-30 17:30:43 +0200PHO`(~pho@2406:da14:856:600:e03a:2c8f:39c:7838)
2023-04-30 17:30:44 +0200aaronm04(~user@user/aaronm04)
2023-04-30 17:30:46 +0200energizer(~energizer@user/energizer)
2023-04-30 17:30:59 +0200ryantrinkle(~ryantrink@204.2.88.230) (Ping timeout: 246 seconds)
2023-04-30 17:31:13 +0200vulpine(xfnw@tilde.team)
2023-04-30 17:33:00 +0200haveo(~haveo@51.15.176.9)
2023-04-30 17:33:29 +0200acro(~acro@user/acro)
2023-04-30 17:33:59 +0200welterde(welterde@thinkbase.srv.welterde.de) (Quit: WeeChat 3.0.1)
2023-04-30 17:34:10 +0200welterde(welterde@thinkbase.srv.welterde.de)
2023-04-30 17:34:33 +0200fiddlerwoaroof(~fiddlerwo@user/fiddlerwoaroof)
2023-04-30 17:37:04 +0200gurkenglas(~gurkengla@dynamic-046-114-176-011.46.114.pool.telefonica.de) (Ping timeout: 248 seconds)
2023-04-30 17:37:52 +0200Profpatsch(~Profpatsc@static.88-198-193-255.clients.your-server.de) (Quit: WeeChat 3.8)
2023-04-30 17:38:06 +0200Profpatsch(~Profpatsc@static.88-198-193-255.clients.your-server.de)
2023-04-30 17:38:54 +0200gurkenglas(~gurkengla@dynamic-046-114-179-053.46.114.pool.telefonica.de)
2023-04-30 17:40:05 +0200xff0x_(~xff0x@fsa056e3ab.kytj202.ap.nuro.jp) (Ping timeout: 246 seconds)
2023-04-30 17:43:10 +0200nate1(~nate@98.45.169.16)
2023-04-30 17:46:05 +0200ryantrinkle(~ryantrink@204.2.88.230)
2023-04-30 17:47:42 +0200nate1(~nate@98.45.169.16) (Ping timeout: 265 seconds)
2023-04-30 17:49:10 +0200gnalzo(~gnalzo@2a01:e0a:498:fd50:fcc6:bb5d:489a:ce8c)
2023-04-30 17:56:23 +0200JScript2(~JScript@cpe-172-193-181-254.qld.foxtel.net.au)
2023-04-30 17:56:44 +0200alexherbo2(~alexherbo@2a02-842a-8180-4601-d5f7-1d09-2f8d-3550.rev.sfr.net)
2023-04-30 18:00:58 +0200JScript(~JScript@45.248.77.142) (Ping timeout: 276 seconds)
2023-04-30 18:02:00 +0200harveypwca(~harveypwc@2601:246:c180:a570:3828:d8:e523:3f67)
2023-04-30 18:04:33 +0200ames(~amelia@offtopia/offtopian/amelia)
2023-04-30 18:09:31 +0200harveypwca(~harveypwc@2601:246:c180:a570:3828:d8:e523:3f67) (Quit: Leaving)
2023-04-30 18:12:35 +0200hammond(proscan@gateway02.insomnia247.nl) (Changing host)
2023-04-30 18:12:35 +0200hammond(proscan@user/hammond2)
2023-04-30 18:14:52 +0200nicm[m](~nicmollel@2001:470:69fc:105::1:feeb)
2023-04-30 18:17:31 +0200gurkenglas(~gurkengla@dynamic-046-114-179-053.46.114.pool.telefonica.de) (Ping timeout: 240 seconds)
2023-04-30 18:18:06 +0200merijn(~merijn@c-001-001-006.client.esciencecenter.eduvpn.nl)
2023-04-30 18:34:40 +0200eggplantade(~Eggplanta@2600:1700:38c5:d800:d4d0:8bd2:d805:7ab6)
2023-04-30 18:35:00 +0200L29Ah(~L29Ah@wikipedia/L29Ah)
2023-04-30 18:37:29 +0200Square(~Square@user/square) (Ping timeout: 246 seconds)
2023-04-30 18:42:23 +0200chomwitt(~chomwitt@2a02:587:7a1d:9d00:1ac0:4dff:fedb:a3f1) (Remote host closed the connection)
2023-04-30 18:43:05 +0200swamp_(~zmt00@user/zmt00)
2023-04-30 18:46:03 +0200zmt01(~zmt00@user/zmt00) (Ping timeout: 248 seconds)
2023-04-30 18:47:27 +0200JScript2(~JScript@cpe-172-193-181-254.qld.foxtel.net.au) (Read error: Connection reset by peer)
2023-04-30 18:47:54 +0200JScript(~JScript@103.137.12.21)
2023-04-30 18:48:13 +0200SoF(~skius@user/skius)
2023-04-30 18:50:10 +0200pavonia(~user@user/siracusa) (Quit: Bye!)
2023-04-30 18:52:45 +0200merijn(~merijn@c-001-001-006.client.esciencecenter.eduvpn.nl) (Ping timeout: 256 seconds)
2023-04-30 18:57:14 +0200tzh(~tzh@c-24-21-73-154.hsd1.or.comcast.net)
2023-04-30 19:00:16 +0200werneta(~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net) (Ping timeout: 248 seconds)
2023-04-30 19:02:11 +0200werneta(~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net)
2023-04-30 19:04:45 +0200coot(~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba) (Quit: coot)
2023-04-30 19:10:47 +0200fsestini(~fsestini@5.151.90.160)
2023-04-30 19:22:15 +0200 <sm> looks very nice
2023-04-30 19:22:22 +0200alexherbo2(~alexherbo@2a02-842a-8180-4601-d5f7-1d09-2f8d-3550.rev.sfr.net) (Remote host closed the connection)
2023-04-30 19:22:37 +0200alexherbo2(~alexherbo@2a02-842a-8180-4601-d5f7-1d09-2f8d-3550.rev.sfr.net)
2023-04-30 19:25:33 +0200alexherbo2(~alexherbo@2a02-842a-8180-4601-d5f7-1d09-2f8d-3550.rev.sfr.net) (Remote host closed the connection)
2023-04-30 19:25:46 +0200alexherbo2(~alexherbo@2a02-842a-8180-4601-d5f7-1d09-2f8d-3550.rev.sfr.net)
2023-04-30 19:33:34 +0200Guest|82(~Guest|82@pd9e0ad5b.dip0.t-ipconnect.de)
2023-04-30 19:36:04 +0200alexherbo2(~alexherbo@2a02-842a-8180-4601-d5f7-1d09-2f8d-3550.rev.sfr.net) (Remote host closed the connection)
2023-04-30 19:36:20 +0200alexherbo2(~alexherbo@2a02-842a-8180-4601-d5f7-1d09-2f8d-3550.rev.sfr.net)
2023-04-30 19:40:37 +0200alexherbo2(~alexherbo@2a02-842a-8180-4601-d5f7-1d09-2f8d-3550.rev.sfr.net) (Remote host closed the connection)
2023-04-30 19:41:28 +0200alexherbo2(~alexherbo@2a02-842a-8180-4601-d5f7-1d09-2f8d-3550.rev.sfr.net)
2023-04-30 19:50:03 +0200ryantrinkle(~ryantrink@204.2.88.230) (Ping timeout: 260 seconds)
2023-04-30 19:51:26 +0200wootehfoot(~wootehfoo@user/wootehfoot)
2023-04-30 19:52:21 +0200jade[m]uploaded an image: (186KiB) < https://libera.ems.host/_matrix/media/v3/download/matrix.org/rMfrmjpTVaUROQSFsHIpjytX/image.png >
2023-04-30 19:52:22 +0200 <jade[m]> Not sure if I'm happy with this code
2023-04-30 19:53:57 +0200extor(~extor@2001:41d0:1004:636::1)
2023-04-30 19:59:43 +0200alexherbo2(~alexherbo@2a02-842a-8180-4601-d5f7-1d09-2f8d-3550.rev.sfr.net) (Remote host closed the connection)
2023-04-30 20:00:15 +0200alexherbo2(~alexherbo@2a02-842a-8180-4601-d5f7-1d09-2f8d-3550.rev.sfr.net)
2023-04-30 20:03:02 +0200 <geekosaur> at some point you should learn to use a pastebin; it's really hard to cut and paste from an image
2023-04-30 20:04:02 +0200extor(~extor@2001:41d0:1004:636::1) (Quit: ZNC 1.8.2+deb2build5 - https://znc.in)
2023-04-30 20:06:20 +0200talismanick(~user@2601:204:ef80:6c80::a8e2) (Remote host closed the connection)
2023-04-30 20:08:10 +0200extor(~extor@ns3018124.ip-149-202-82.eu)
2023-04-30 20:13:09 +0200tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
2023-04-30 20:14:34 +0200[_](~itchyjunk@user/itchyjunk/x-7353470)
2023-04-30 20:14:41 +0200 <[exa]> (not to mention the font choices that don't really port across screens and viewing conditions)
2023-04-30 20:14:45 +0200[itchyjunk](~itchyjunk@user/itchyjunk/x-7353470) (Remote host closed the connection)
2023-04-30 20:16:05 +0200pieguy128(~pieguy128@bas1-montreal02-65-92-162-12.dsl.bell.ca) (Quit: ZNC 1.8.2 - https://znc.in)
2023-04-30 20:16:25 +0200pieguy128(~pieguy128@bras-base-mtrlpq5031w-grc-56-65-92-162-12.dsl.bell.ca)
2023-04-30 20:18:33 +0200fsestini(~fsestini@5.151.90.160) (Ping timeout: 245 seconds)
2023-04-30 20:19:45 +0200zeenk(~zeenk@2a02:2f04:a20f:5200::7fe)
2023-04-30 20:24:21 +0200 <somerandomnick[m> it is pretty.
2023-04-30 20:24:23 +0200 <somerandomnick[m> you did it
2023-04-30 20:25:42 +0200 <somerandomnick[m> ll 16-12 is python style though
2023-04-30 20:26:03 +0200wroathe(~wroathe@207-153-38-140.fttp.usinternet.com)
2023-04-30 20:26:03 +0200wroathe(~wroathe@207-153-38-140.fttp.usinternet.com) (Changing host)
2023-04-30 20:26:03 +0200wroathe(~wroathe@user/wroathe)
2023-04-30 20:26:49 +0200somerandomnick[msent a code block: https://libera.ems.host/_matrix/media/v3/download/libera.chat/089612aff82d71194d8eac553c2eff529566…
2023-04-30 20:26:55 +0200 <somerandomnick[m> what do you think about this style
2023-04-30 20:27:27 +0200coot(~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba)
2023-04-30 20:27:38 +0200 <jade[m]> It's what the lsp format did haha
2023-04-30 20:27:45 +0200 <jade[m]> I originally had it inline
2023-04-30 20:28:00 +0200Guest4285(~Guest42@ip5f5be7a8.dynamic.kabel-deutschland.de)
2023-04-30 20:28:24 +0200 <somerandomnick[m> helpful tools being helpful as always
2023-04-30 20:28:33 +0200Guest4285(~Guest42@ip5f5be7a8.dynamic.kabel-deutschland.de) (Client Quit)
2023-04-30 20:32:25 +0200hugo(znc@verdigris.lysator.liu.se) (Ping timeout: 276 seconds)
2023-04-30 20:40:11 +0200TonyStone(~TonyStone@cpe-74-76-57-186.nycap.res.rr.com)
2023-04-30 20:43:04 +0200[_][itchyjunk]
2023-04-30 20:43:33 +0200hugo(znc@verdigris.lysator.liu.se)
2023-04-30 20:47:28 +0200brettgilio(~brettgili@147.182.241.1) (Ping timeout: 248 seconds)
2023-04-30 20:56:48 +0200thejdoe(~thejdoe@201-35-245-62.user3p.brasiltelecom.net.br)
2023-04-30 20:57:45 +0200Guest7110(~Guest71@201-35-245-62.user3p.brasiltelecom.net.br)
2023-04-30 20:59:08 +0200Bocaneri(~sauvin@user/Sauvin)
2023-04-30 20:59:31 +0200BocaneriGuest1315
2023-04-30 21:00:59 +0200Sauvin(~sauvin@user/Sauvin) (Ping timeout: 246 seconds)
2023-04-30 21:05:31 +0200GerryH(~Brgaammin@ip-046-223-087-181.um13.pools.vodafone-ip.de)
2023-04-30 21:06:11 +0200GerryH(~Brgaammin@ip-046-223-087-181.um13.pools.vodafone-ip.de) (Client Quit)
2023-04-30 21:15:52 +0200wroathe(~wroathe@user/wroathe) (Quit: leaving)
2023-04-30 21:21:04 +0200michalz(~michalz@185.246.207.221)
2023-04-30 21:21:12 +0200Sgeo(~Sgeo@user/sgeo)
2023-04-30 21:22:36 +0200Guest7110(~Guest71@201-35-245-62.user3p.brasiltelecom.net.br) (Quit: Client closed)
2023-04-30 21:26:30 +0200bitmapper(uid464869@id-464869.lymington.irccloud.com) (Quit: Connection closed for inactivity)
2023-04-30 21:29:28 +0200 <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".
2023-04-30 21:30:14 +0200 <monochrom> Cf. https://xkcd.com/763/
2023-04-30 21:31:24 +0200 <geekosaur> they didn't even receive it (or yours), the bridge isn't relaying from irc to matrix
2023-04-30 21:31:41 +0200 <geekosaur> which I have just been informed is "operating normally: 😞
2023-04-30 21:31:51 +0200 <mauke> ooh, secret chats
2023-04-30 21:32:11 +0200 <mauke> we call it information hiding
2023-04-30 21:32:21 +0200 <monochrom> Well, we don't actually want the young generation to see what I said there, right? >:)
2023-04-30 21:35:54 +0200 <int-e> geekosaur: Wait what? What's the bridge for then, just advertising the m*****x platform?
2023-04-30 21:36:09 +0200 <geekosaur> no clue
2023-04-30 21:36:28 +0200 <geekosaur> I'm not the only one seeing it either, nothing IRC-side is making it to matrix
2023-04-30 21:36:33 +0200 <int-e> I swear I've had discussions with [m] folks recently.
2023-04-30 21:36:53 +0200 <geekosaur> (I had some overnight, this only started a few hours ago
2023-04-30 21:38:08 +0200trev(~trev@user/trev) (Quit: trev)
2023-04-30 21:38:16 +0200 <int-e> maybe it's a late April Fool's joke
2023-04-30 21:38:42 +0200Guest1315Sauvin
2023-04-30 21:44:25 +0200nate1(~nate@98.45.169.16)
2023-04-30 21:48:59 +0200michalz(~michalz@185.246.207.221) (Remote host closed the connection)
2023-04-30 21:49:19 +0200acidjnk(~acidjnk@p200300d6e715c46489327d173b2333a9.dip0.t-ipconnect.de)
2023-04-30 21:49:31 +0200nate1(~nate@98.45.169.16) (Ping timeout: 260 seconds)
2023-04-30 21:50:23 +0200 <remexre> https://ghc.gitlab.haskell.org/ghc/doc/users_guide/exts/type_data.html
2023-04-30 21:50:40 +0200 <remexre> looks like someone forgot the syntax for comments lol
2023-04-30 21:50:53 +0200 <remexre> (the bottom two code blocks)
2023-04-30 21:51:25 +0200 <geekosaur> lol
2023-04-30 21:51:44 +0200 <mauke> I mean, it does say that the code is invalid
2023-04-30 21:55:51 +0200 <hpc> this is why i only use semicolon comments
2023-04-30 21:56:50 +0200gurkenglas(~gurkengla@dynamic-046-114-179-053.46.114.pool.telefonica.de)
2023-04-30 22:00:20 +0200pavonia(~user@user/siracusa)
2023-04-30 22:04:07 +0200puke(~puke@user/puke) (Quit: puke)
2023-04-30 22:05:15 +0200_ht(~Thunderbi@82.174.52.28) (Remote host closed the connection)
2023-04-30 22:08:59 +0200Guest7148(~Guest71@201-35-245-62.user3p.brasiltelecom.net.br)
2023-04-30 22:25:35 +0200puke(~puke@user/puke)
2023-04-30 22:26:49 +0200Guest7148(~Guest71@201-35-245-62.user3p.brasiltelecom.net.br) (Quit: Client closed)
2023-04-30 22:26:49 +0200thejdoe(~thejdoe@201-35-245-62.user3p.brasiltelecom.net.br) (Remote host closed the connection)
2023-04-30 22:31:55 +0200coot(~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba) (Quit: coot)
2023-04-30 22:35:15 +0200puke(~puke@user/puke) (Remote host closed the connection)
2023-04-30 22:49:34 +0200puke(~puke@user/puke)
2023-04-30 22:50:15 +0200fun-safe-math(~fun-safe-@c-24-22-94-205.hsd1.or.comcast.net)
2023-04-30 23:07:32 +0200gnalzo(~gnalzo@2a01:e0a:498:fd50:fcc6:bb5d:489a:ce8c) (Quit: WeeChat 3.8)
2023-04-30 23:14:15 +0200alexherbo2(~alexherbo@2a02-842a-8180-4601-d5f7-1d09-2f8d-3550.rev.sfr.net) (Remote host closed the connection)
2023-04-30 23:14:30 +0200alexherbo2(~alexherbo@2a02-842a-8180-4601-d5f7-1d09-2f8d-3550.rev.sfr.net)
2023-04-30 23:21:23 +0200Guest|82(~Guest|82@pd9e0ad5b.dip0.t-ipconnect.de) (Quit: Connection closed)
2023-04-30 23:23:32 +0200c0c0(~coco@212-51-146-137.fiber7.init7.net) (Quit: WeeChat 3.7.1)
2023-04-30 23:29:02 +0200fun-safe-math(~fun-safe-@c-24-22-94-205.hsd1.or.comcast.net) (Quit: Leaving)
2023-04-30 23:29:57 +0200bitdex(~bitdex@gateway/tor-sasl/bitdex)
2023-04-30 23:34:09 +0200jero98772(~jero98772@2800:484:1d84:9000::3)
2023-04-30 23:43:28 +0200justsomeguy(~justsomeg@user/justsomeguy)
2023-04-30 23:45:58 +0200trev(~trev@user/trev)
2023-04-30 23:46:25 +0200wootehfoot(~wootehfoo@user/wootehfoot) (Quit: Leaving)
2023-04-30 23:51:32 +0200trev(~trev@user/trev) (Quit: trev)
2023-04-30 23:51:45 +0200jmdaemon(~jmdaemon@user/jmdaemon)
2023-04-30 23:54:11 +0200machinedgod(~machinedg@d198-53-218-113.abhsia.telus.net)
2023-04-30 23:58:20 +0200euandreh(~Thunderbi@189.6.18.7)
2023-04-30 23:59:44 +0200jpds2(~jpds@gateway/tor-sasl/jpds) (Ping timeout: 240 seconds)