2021/02/15

2021-02-15 00:00:45 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Ping timeout: 240 seconds)
2021-02-15 00:02:53 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9)
2021-02-15 00:04:20 +0100nrh^(nrh@ip98-184-89-2.mc.at.cox.net) ()
2021-02-15 00:04:21 +0100usr25(~J@68.red-83-46-58.dynamicip.rima-tde.net) (Quit: Bye)
2021-02-15 00:06:53 +0100tromp(~tromp@dhcp-077-249-230-040.chello.nl)
2021-02-15 00:09:28 +0100bnbgg_(uid454564@gateway/web/irccloud.com/x-jxwbvqetgazmpwcn) (Quit: Connection closed for inactivity)
2021-02-15 00:09:39 +0100coot(~coot@37.30.55.141.nat.umts.dynamic.t-mobile.pl) (Quit: coot)
2021-02-15 00:11:00 +0100tromp(~tromp@dhcp-077-249-230-040.chello.nl) (Ping timeout: 246 seconds)
2021-02-15 00:11:30 +0100polyrain(~polyrain@124.177.21.171)
2021-02-15 00:13:54 +0100boxscape(4ff0baf3@gateway/web/cgi-irc/kiwiirc.com/ip.79.240.186.243) (Quit: Connection closed)
2021-02-15 00:16:37 +0100jedws(~jedws@101.184.202.248)
2021-02-15 00:18:33 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 265 seconds)
2021-02-15 00:19:45 +0100slack1256(~slack1256@pc-198-213-46-190.cm.vtr.net) (Ping timeout: 246 seconds)
2021-02-15 00:19:54 +0100shatriff(~vitaliish@176-52-216-242.irishtelecom.com)
2021-02-15 00:21:10 +0100Lowl3v3l(~Lowl3v3l@dslb-002-203-233-121.002.203.pools.vodafone-ip.de) (Remote host closed the connection)
2021-02-15 00:21:47 +0100heatsink(~heatsink@2600:1700:bef1:5e10:b101:b0cf:b14d:ce6b)
2021-02-15 00:24:21 +0100 <Squarism> Given a "class SomeConst a => AClass a". When you make an instance of AClass wo yet having declared SomeConst a you need to add "instant SomeConst SomeValue => AClass SomeValue". This gets a bit verbose so I wonder if you can "predefine" it per module?
2021-02-15 00:24:56 +0100 <Squarism> If say you have more instances that require SomeConst SomeValue so to speak.
2021-02-15 00:25:58 +0100Ariakenom(~Ariakenom@2001:9b1:efb:fc00:6820:5e7f:6476:59ce) (Quit: Leaving)
2021-02-15 00:26:46 +0100raehik1(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 265 seconds)
2021-02-15 00:26:52 +0100 <Axman6> I don't understand the question
2021-02-15 00:29:12 +0100dsrt^(dsrt@ip98-184-89-2.mc.at.cox.net)
2021-02-15 00:29:33 +0100raehik1(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
2021-02-15 00:30:17 +0100 <Squarism> Axman. You have "class SomeConst a => AClass a". You want to define an instance of "AClass Foo". But "SomeConst Foo" is not yet defined at that point in the compilation module dependency graph, but will higher up.
2021-02-15 00:30:39 +0100jpds(~jpds@gateway/tor-sasl/jpds) (Ping timeout: 268 seconds)
2021-02-15 00:31:39 +0100 <Squarism> I mean i can write "instance SomeConst Foo => AClass Foo" and it works. But i need to do it at every place "SomeConst Foo" is a constraint
2021-02-15 00:34:27 +0100mirrorbird(~psutcliff@2a00:801:44d:603d:d116:d5a1:4a2f:a08f) (Ping timeout: 272 seconds)
2021-02-15 00:37:11 +0100dhil(~dhil@80.208.56.181) (Ping timeout: 256 seconds)
2021-02-15 00:37:21 +0100s00pcan(~chris@075-133-056-178.res.spectrum.com)
2021-02-15 00:40:08 +0100 <monochrom> Huh, I would implement "instance SomeConst SomeValue" as well.
2021-02-15 00:40:46 +0100 <monochrom> I mean, no one does "instance Functor T => Applicative T". Everyone does both "instance Functor T where" and "instance Applicative T where".
2021-02-15 00:41:08 +0100jpds(~jpds@gateway/tor-sasl/jpds)
2021-02-15 00:42:01 +0100 <Axman6> yeah I didn't even know that was legal
2021-02-15 00:43:48 +0100 <monochrom> Perhaps legal under abuse of FlexibleContext.
2021-02-15 00:45:42 +0100Jd007(~Jd007@162.156.11.151) (Quit: Jd007)
2021-02-15 00:46:11 +0100 <Squarism> oh ok
2021-02-15 00:47:26 +0100zebrag(~inkbottle@aaubervilliers-654-1-112-148.w86-198.abo.wanadoo.fr) (Quit: Konversation terminated!)
2021-02-15 00:47:47 +0100zebrag(~inkbottle@aaubervilliers-654-1-112-148.w86-198.abo.wanadoo.fr)
2021-02-15 00:48:01 +0100son0p(~son0p@181.136.122.143) (Quit: Lost terminal)
2021-02-15 00:52:32 +0100fendor(~fendor@77.119.131.224.wireless.dyn.drei.com) (Remote host closed the connection)
2021-02-15 00:56:15 +0100 <NieDzejkob> http://dev.stephendiehl.com/hask/index.html#partial-functions this document claims that foldr and some other folds are partial for empty lists, but
2021-02-15 00:56:18 +0100 <NieDzejkob> > foldr (+) 3 []
2021-02-15 00:56:19 +0100 <lambdabot> 3
2021-02-15 00:56:23 +0100 <NieDzejkob> am I missing something?
2021-02-15 00:59:17 +0100alx741(~alx741@186.178.108.225)
2021-02-15 01:00:05 +0100seanparsons(~sean@cpc145088-gill21-2-0-cust281.20-1.cable.virginm.net) (Quit: ZNC 1.8.1 - https://znc.in)
2021-02-15 01:00:08 +0100atk(~Arch-TK@ircpuzzles/staff/Arch-TK) (Quit: Well this is unexpected.)
2021-02-15 01:00:29 +0100atk(~Arch-TK@ircpuzzles/staff/Arch-TK)
2021-02-15 01:01:01 +0100tromp(~tromp@dhcp-077-249-230-040.chello.nl)
2021-02-15 01:02:12 +0100gehmehgeh(~ircuser1@gateway/tor-sasl/gehmehgeh) (Quit: Leaving)
2021-02-15 01:02:46 +0100slack1256(~slack1256@dvc-186-186-101-190.movil.vtr.net)
2021-02-15 01:02:48 +0100 <alexfmpe> I don't see how foldr could be partial since it takes an initial value for the accumulator? Stuff like `maximum` is partial though
2021-02-15 01:03:07 +0100 <alexfmpe> "This server could not prove that it is gitlab.haskell.org; its security certificate expired in the last day." <-- uuuh where do I report this?
2021-02-15 01:03:28 +0100 <alexfmpe> browser gives me the big red triangle "Your connection is not private" screen
2021-02-15 01:03:59 +0100seanparsons(~sean@cpc145088-gill21-2-0-cust281.20-1.cable.virginm.net)
2021-02-15 01:04:34 +0100__monty__(~toonn@unaffiliated/toonn) (Quit: leaving)
2021-02-15 01:04:36 +0100m0rphism1(~m0rphism@HSI-KBW-085-216-104-059.hsi.kabelbw.de) (Ping timeout: 240 seconds)
2021-02-15 01:05:15 +0100tromp(~tromp@dhcp-077-249-230-040.chello.nl) (Ping timeout: 246 seconds)
2021-02-15 01:06:59 +0100tromp(~tromp@dhcp-077-249-230-040.chello.nl)
2021-02-15 01:07:19 +0100 <Axman6> alexfmpe: #haskell-infrastructure would be a good -place to start
2021-02-15 01:07:47 +0100tromp(~tromp@dhcp-077-249-230-040.chello.nl) (Read error: Connection reset by peer)
2021-02-15 01:08:04 +0100 <hpc> i don't think that's a haskell.org website though?
2021-02-15 01:08:16 +0100 <hpc> without looking at the page, maybe it was supposed to say foldr1?
2021-02-15 01:08:19 +0100tromp(~tromp@dhcp-077-249-230-040.chello.nl)
2021-02-15 01:08:25 +0100 <hpc> > foldr1 (+) []
2021-02-15 01:08:27 +0100 <lambdabot> *Exception: Prelude.foldr1: empty list
2021-02-15 01:11:52 +0100 <karasu1[m]> Hello, I am reading through certain parts of the Haskell Report 2010, like this part about ambiguous types: https://www.haskell.org/onlinereport/haskell2010/haskellch4.html#x10-790004.3.4
2021-02-15 01:12:01 +0100 <karasu1[m]> But I don't understand how this is justified: "We say that an expression e has an ambiguous type if, in its type ∀ u. cx ⇒ t, there is a type variable u in u that occurs in cx but not in t. Such types are invalid."
2021-02-15 01:12:13 +0100 <karasu1[m]> Why is this "ambiguous"?
2021-02-15 01:12:37 +0100 <karasu1[m]> (also not 100% sure I am understanding the notation correctly)
2021-02-15 01:12:43 +0100quinn(~quinn@c-73-223-224-163.hsd1.ca.comcast.net) (Quit: ZNC 1.8.1 - https://znc.in)
2021-02-15 01:12:50 +0100viluon(uid453725@gateway/web/irccloud.com/x-phgigjwjsbgranpk) (Quit: Connection closed for inactivity)
2021-02-15 01:12:53 +0100 <ski> because there's no way to determine which specific type to use in place of the tyvar `u'
2021-02-15 01:13:07 +0100 <ski> @type show . read
2021-02-15 01:13:08 +0100 <lambdabot> String -> String
2021-02-15 01:13:09 +0100 <monochrom> An example is "(Show a, Read a) => String".
2021-02-15 01:13:20 +0100 <Axman6> which a is that?
2021-02-15 01:13:34 +0100 <ski> (although GHCi will "solve" that particular example by defaulting `a' to `()')
2021-02-15 01:13:44 +0100 <Axman6> > show . read $ "()" -- This might actually work...
2021-02-15 01:13:46 +0100 <lambdabot> "()"
2021-02-15 01:14:05 +0100tromp(~tromp@dhcp-077-249-230-040.chello.nl) (Ping timeout: 240 seconds)
2021-02-15 01:14:10 +0100 <Axman6> > show . read $ "1.23" -- This won't, because the exprtession has defaulted a ~ ()
2021-02-15 01:14:12 +0100 <lambdabot> "*Exception: Prelude.read: no parse
2021-02-15 01:14:17 +0100 <karasu1[m]> Is this notation explained somewhere: ∀ u. cx ⇒ t? I am lost except for the ∀ symbol lol..
2021-02-15 01:14:30 +0100 <Axman6> I _think this behaviour is slightly different between ghci and compiled haskell
2021-02-15 01:15:15 +0100 <karasu1[m]> ∀ u. cx ⇒ t, is u supposed to represent a? In the haskell report, there's a bar on top of u
2021-02-15 01:15:35 +0100 <ski> it's supposed to represent a sequence of type variables
2021-02-15 01:15:43 +0100nhs(~nhs@c-24-20-87-79.hsd1.or.comcast.net) (Ping timeout: 256 seconds)
2021-02-15 01:15:52 +0100 <ski> (the bar indicates a sequence)*
2021-02-15 01:16:24 +0100 <karasu1[m]> What is the dot and cx supposed to represent?
2021-02-15 01:16:32 +0100 <karasu1[m]> cx are the instances of the sequence of u?
2021-02-15 01:17:05 +0100 <ski> `cx' is some type class constraint context, like `(Show a,Read a)' above
2021-02-15 01:17:36 +0100 <Axman6> the haskell equivalent would be forall u. C u => t
2021-02-15 01:17:52 +0100nhs(~nhs@c-24-20-87-79.hsd1.or.comcast.net)
2021-02-15 01:18:05 +0100 <karasu1[m]> ohhh..thanks! What about the dot after the u? as in ∀ u. cx ⇒ t?
2021-02-15 01:18:09 +0100 <karasu1[m]> Does that not have any meaning?
2021-02-15 01:18:16 +0100 <karasu1[m]> .
2021-02-15 01:18:20 +0100 <ski> it's just a separator, same as in `forall u.'
2021-02-15 01:18:25 +0100quinn(~quinn@c-73-223-224-163.hsd1.ca.comcast.net)
2021-02-15 01:19:09 +0100 <Axman6> read's type uis really read :: forall a. Read a => String -> a but foralls are usually inferred
2021-02-15 01:19:22 +0100 <monochrom> "4.1.4 Semantics of Types and Classes" explains the ∀ u. cx ⇒ t notation.
2021-02-15 01:20:12 +0100 <karasu1[m]> <monochrom ""4.1.4 Semantics of Types and Cl"> oh thank you, I was looking in the "Lexical Structure" chapter, no wonder I couldn't find it lol..
2021-02-15 01:20:38 +0100 <alexfmpe> > (unsafeCoerce (id :: Int -> Int) :: String -> String) "xyz"
2021-02-15 01:20:39 +0100 <lambdabot> error:
2021-02-15 01:20:39 +0100 <lambdabot> Variable not in scope:
2021-02-15 01:20:39 +0100 <lambdabot> unsafeCoerce :: (Int -> Int) -> String -> String
2021-02-15 01:20:52 +0100 <alexfmpe> this outputs "xyz" in ghci, and I have no idea why it works
2021-02-15 01:21:30 +0100 <Axman6> it's probably not guaranteed to work
2021-02-15 01:21:42 +0100 <koz_> In this case you lucked out because they're both lifted.
2021-02-15 01:21:59 +0100elfets(~elfets@ip-37-201-23-96.hsi13.unitymediagroup.de) (Quit: Leaving)
2021-02-15 01:22:02 +0100 <koz_> s/lifted/boxed
2021-02-15 01:22:45 +0100 <koz_> I _believe_ id can operate on unboxed values too, but if you tried coercing that way, you'd be in trouble possibly.
2021-02-15 01:23:29 +0100 <alexfmpe> `(unsafeCoerce (id :: Int# -> Int#) :: String -> String) "xyz"`
2021-02-15 01:23:29 +0100 <alexfmpe> <interactive>:9:16: error: • Couldn't match a lifted type with an unlifted type
2021-02-15 01:23:38 +0100 <Axman6> yeah that was my first thought too
2021-02-15 01:23:49 +0100 <koz_> Yeah, that doesn't surprise me much.
2021-02-15 01:24:26 +0100 <alexfmpe> was expecting this to only work when the input/output of the functions were coercible to the new ones
2021-02-15 01:24:55 +0100 <Axman6> when it comes to unsafeCoerce there is no notion of coercible, it's up to you to not do stupid things
2021-02-15 01:25:00 +0100 <alexfmpe> having trouble finding any docs on (unsafe) coerce & functions though
2021-02-15 01:25:11 +0100 <karasu1[m]> OK, I think I understand the notation, but I don't understand what the problem would be with ` let x = read "..." in show x`.. we're just printing out x as a String, and a String is well-typed right?
2021-02-15 01:25:16 +0100 <koz_> alexfmpe: The docs are 'lol plz don't'.
2021-02-15 01:25:20 +0100 <koz_> No seriously.
2021-02-15 01:25:43 +0100 <Axman6> koz_: what is the type of x?
2021-02-15 01:25:46 +0100 <koz_> karasu1[m]: show :: (Show a) => a -> String
2021-02-15 01:25:48 +0100 <Axman6> uh kqr*
2021-02-15 01:25:57 +0100 <koz_> Wtf is 'a' here without further indication?
2021-02-15 01:26:04 +0100 <Axman6> urgh, bloody dock coving my typing... karasu1[m]
2021-02-15 01:27:07 +0100DavidEichmann(~david@234.109.45.217.dyn.plus.net) (Ping timeout: 272 seconds)
2021-02-15 01:27:16 +0100 <koz_> Axman6: Fuzzy typing.
2021-02-15 01:27:25 +0100glguy(x@freenode/staff/haskell.developer.glguy) (Ping timeout: 600 seconds)
2021-02-15 01:27:36 +0100star_cloud(~star_clou@ec2-34-220-44-120.us-west-2.compute.amazonaws.com) (Ping timeout: 240 seconds)
2021-02-15 01:27:41 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Quit: Connection closed)
2021-02-15 01:27:44 +0100 <Axman6> and being lazy
2021-02-15 01:28:02 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9)
2021-02-15 01:28:06 +0100 <Axman6> never got out of the habit of <one letter><tab> from smaller channels
2021-02-15 01:28:09 +0100nhs(~nhs@c-24-20-87-79.hsd1.or.comcast.net) (Ping timeout: 265 seconds)
2021-02-15 01:28:15 +0100 <karasu1[m]> Wait, the type of `x` whatever `read "..."` returns
2021-02-15 01:28:25 +0100Tops2(~Tobias@dyndsl-095-033-023-209.ewe-ip-backbone.de) (Read error: Connection reset by peer)
2021-02-15 01:28:28 +0100 <karasu1[m]> This is the example used in the Haskell Report
2021-02-15 01:28:29 +0100 <karasu1[m]> https://www.haskell.org/onlinereport/haskell2010/haskellch4.html#x10-790004.3.4
2021-02-15 01:28:37 +0100 <koz_> karasu1[m]: read :: (Read a) => a
2021-02-15 01:28:48 +0100 <koz_> So without indication of what 'a' is, this can't do much for you.
2021-02-15 01:28:52 +0100 <Axman6> karasu1[m]: and _which_ type is that?
2021-02-15 01:28:57 +0100 <Axman6> it has to be _a_ type
2021-02-15 01:29:00 +0100 <koz_> The compiler can't mind-read your intent from a string representation.
2021-02-15 01:29:35 +0100 <Axman6> we would need depenant typing to even possibly be able to tell that when you pass in "1.23" you want a ~ Double, and when you pass in "()" you want a ~ ()
2021-02-15 01:29:47 +0100ezrakilty(~ezrakilty@75-172-120-208.tukw.qwest.net) (Remote host closed the connection)
2021-02-15 01:29:47 +0100 <koz_> Axman6: I don't think that'd be enough even.
2021-02-15 01:30:02 +0100 <Axman6> no
2021-02-15 01:30:30 +0100 <Axman6> but it might be feasible to in some cases determine the type at runtime
2021-02-15 01:30:47 +0100 <karasu1[m]> The docs have the example `read "..."`, but I don't know what type this returns. I tried it in GHCI, and it gives parse error
2021-02-15 01:31:05 +0100 <karasu1[m]> There's nothing about ambiguity yet, since this would result in parse error anyway
2021-02-15 01:31:05 +0100 <koz_> :t read "..."
2021-02-15 01:31:05 +0100geowiesnot(~user@i15-les02-ix2-87-89-181-157.sfr.lns.abo.bbox.fr)
2021-02-15 01:31:06 +0100 <lambdabot> Read a => a
2021-02-15 01:31:10 +0100 <Axman6> :t let f s = let x = read s in show x in f
2021-02-15 01:31:11 +0100 <lambdabot> String -> String
2021-02-15 01:31:34 +0100 <Axman6> > let f s = let x = read s in show x in f "1.23"
2021-02-15 01:31:36 +0100 <lambdabot> "*Exception: Prelude.read: no parse
2021-02-15 01:32:03 +0100 <Axman6> the compiler here _defaulted_ to a ~ ()
2021-02-15 01:32:16 +0100 <Axman6> > let f s = let x = read s in show x in f "()" -- the only thing that can work
2021-02-15 01:32:18 +0100 <lambdabot> "()"
2021-02-15 01:32:43 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Ping timeout: 256 seconds)
2021-02-15 01:32:49 +0100Tario(~Tario@201.192.165.173) (Ping timeout: 272 seconds)
2021-02-15 01:33:00 +0100 <Axman6> that code only works because the defaulting rules say that if you've got an ambiguous type, but () can work in that place, then pick ().
2021-02-15 01:33:13 +0100star_cloud(~star_clou@ec2-34-220-44-120.us-west-2.compute.amazonaws.com)
2021-02-15 01:33:19 +0100Tario(~Tario@201.192.165.173)
2021-02-15 01:33:27 +0100 <Axman6> :t let f s = let x = read s in show (x+1) in f
2021-02-15 01:33:29 +0100 <lambdabot> String -> String
2021-02-15 01:33:29 +0100Tuplanolla(~Tuplanoll@91-159-68-239.elisa-laajakaista.fi) (Quit: Leaving.)
2021-02-15 01:33:41 +0100 <Axman6> hmm, I actually expected that to fail
2021-02-15 01:33:47 +0100 <Axman6> oh, defaulting to Integer probably
2021-02-15 01:33:56 +0100 <Axman6> defaulting is such a pain
2021-02-15 01:34:49 +0100ezrakilty(~ezrakilty@75-172-120-208.tukw.qwest.net)
2021-02-15 01:35:11 +0100 <Axman6> :t let f s = let x = read s in show (fmap (+1) x) in f
2021-02-15 01:35:13 +0100 <lambdabot> error:
2021-02-15 01:35:13 +0100 <lambdabot> • Ambiguous type variable ‘f0’ arising from a use of ‘read’
2021-02-15 01:35:13 +0100 <lambdabot> prevents the constraint ‘(Read (f0 Integer))’ from being solved.
2021-02-15 01:37:22 +0100 <karasu1[m]> What is `f s`?
2021-02-15 01:37:24 +0100 <karasu1[m]> Is f a function?
2021-02-15 01:37:33 +0100 <Axman6> it's some Functor
2021-02-15 01:38:00 +0100 <Axman6> we used fmap on x, so therefore the value returned by read must be _some_ functor, but which one?
2021-02-15 01:38:19 +0100 <Axman6> it could be [], it could be Maybe, it could be Proxy, it could be Either String
2021-02-15 01:38:25 +0100 <karasu1[m]> I haven't explored Functors yet so I have no idea what they are lol..
2021-02-15 01:38:53 +0100 <karasu1[m]> But I will read more and come back
2021-02-15 01:38:57 +0100 <Axman6> well it doesn't matter too much, it was just a way to get us past the defaulting rules
2021-02-15 01:39:31 +0100ezrakilty(~ezrakilty@75-172-120-208.tukw.qwest.net) (Ping timeout: 256 seconds)
2021-02-15 01:40:30 +0100 <karasu1[m]> `let x = read "..." in show x` doesn't say anything about ambiguity though, it seems to fail due to a parse error instead..
2021-02-15 01:40:42 +0100 <karasu1[m]> Because `read "..."` fails
2021-02-15 01:40:59 +0100 <karasu1[m]> So I'm not sure why they used this example in the Haskell report
2021-02-15 01:41:19 +0100 <Axman6> yes, _because of defaulting_ the compiler is picking a ~ ()
2021-02-15 01:41:20 +0100nhs(~nhs@c-24-20-87-79.hsd1.or.comcast.net)
2021-02-15 01:41:30 +0100 <Axman6> it will _only_ work when you pass in "()"
2021-02-15 01:43:06 +0100 <Axman6> but if we change things so that a cannot be () (or Integer or Double) then it will fail to compile because it can't pick a tyoe
2021-02-15 01:43:15 +0100 <ski> > show (read "(())")
2021-02-15 01:43:17 +0100 <lambdabot> "()"
2021-02-15 01:45:31 +0100conal(~conal@64.71.133.70)
2021-02-15 01:45:40 +0100conal(~conal@64.71.133.70) (Client Quit)
2021-02-15 01:46:22 +0100nhs(~nhs@c-24-20-87-79.hsd1.or.comcast.net) (Ping timeout: 256 seconds)
2021-02-15 01:47:26 +0100zebrag(~inkbottle@aaubervilliers-654-1-112-148.w86-198.abo.wanadoo.fr) (Quit: Konversation terminated!)
2021-02-15 01:47:46 +0100zebrag(~inkbottle@aaubervilliers-654-1-112-148.w86-198.abo.wanadoo.fr)
2021-02-15 01:47:47 +0100Narinas(~Narinas@189.223.179.61.dsl.dyn.telnor.net) (Read error: Connection reset by peer)
2021-02-15 01:49:13 +0100Narinas(~Narinas@189.223.179.61.dsl.dyn.telnor.net)
2021-02-15 01:51:08 +0100Contessa(88385f6e@136.56.95.110)
2021-02-15 01:51:44 +0100nhs(~nhs@c-24-20-87-79.hsd1.or.comcast.net)
2021-02-15 01:53:21 +0100 <karasu1[m]> Is a better way of looking at it be that `read "..."` has type `Read a => a`, so it's just type `a`, where `a` has an instance of the `Read` typeclass. But, when you pass this type into `show`, `show` wants something of type `Show a => a`. But, there are many types that are instances of `Show`, and `Show` doesn't know which one to pick, so it can't get to a particular instance to execute. Because `show` can't decide on
2021-02-15 01:53:21 +0100 <karasu1[m]> which instance to use, it's ambiguous. Is this correct?
2021-02-15 01:56:23 +0100Contessa(88385f6e@136.56.95.110) (Quit: Connection closed)
2021-02-15 01:56:31 +0100 <ski> (no, `show' wants something of type `a', where `Show a' holds (no, that's not the same thing))
2021-02-15 01:56:52 +0100 <ski> apart from that, it sounds right, yes
2021-02-15 01:57:00 +0100droobertzka(cf993545@207-153-53-69.fttp.usinternet.com)
2021-02-15 02:01:20 +0100nhs(~nhs@c-24-20-87-79.hsd1.or.comcast.net) (Ping timeout: 272 seconds)
2021-02-15 02:01:29 +0100 <karasu1[m]> Is `Show a` supposed to return either true or false? I ask because I've never heard language about `TypeClass a` "holding", I've only heard "hold" in reference to boolean logic..
2021-02-15 02:02:38 +0100 <Axman6> it either exists or it doesn't, think of it as a fact
2021-02-15 02:03:11 +0100 <Axman6> foo :: Show a => ... -> a -> ... says it can accept any a, as long as there is an instance for Show for that a
2021-02-15 02:03:12 +0100 <karasu1[m]> OK, ty all
2021-02-15 02:03:52 +0100nhs(~nhs@c-24-20-87-79.hsd1.or.comcast.net)
2021-02-15 02:04:17 +0100mizu_no_oto(~textual@cpe-66-66-222-11.rochester.res.rr.com)
2021-02-15 02:04:21 +0100 <monochrom> I have no problem using boolean logic for "Int is a Show instance, Int->Int is not".
2021-02-15 02:04:22 +0100alx741(~alx741@186.178.108.225) (Quit: alx741)
2021-02-15 02:04:37 +0100 <monochrom> Afterall, what else would you use boolean logic for?
2021-02-15 02:05:23 +0100 <karasu1[m]> Int->Int is not a Show instance?
2021-02-15 02:05:25 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9)
2021-02-15 02:05:29 +0100 <ski> nope
2021-02-15 02:05:29 +0100 <karasu1[m]> Is `Int -> Int` a type?
2021-02-15 02:05:34 +0100 <ski> yes
2021-02-15 02:05:34 +0100ph88(~ph88@2a02:8109:9e00:7e5c:a5e6:eed6:171f:46a3)
2021-02-15 02:05:42 +0100 <karasu1[m]> Oh it's a function i see
2021-02-15 02:05:46 +0100 <monochrom> And if "Int is a Show instance" is a thing, and I want a succint notation, and Haskell is already going like "Show a", I feel no guilt in writing "Show Int".
2021-02-15 02:05:46 +0100 <karasu1[m]> makes sense
2021-02-15 02:05:54 +0100 <ski> no, it's a type of functions
2021-02-15 02:06:19 +0100 <koz_> As opposed to 'a type of function'.
2021-02-15 02:06:43 +0100 <monochrom> In fact, by the time you go FlexibleContext and MultiParamTypeClass, you have to accept that "Show" is a predicate and "Show Int" is a sentence.
2021-02-15 02:06:58 +0100 <karasu1[m]> nice
2021-02-15 02:07:21 +0100 <karasu1[m]> I always liked those truth tables (this is a lie)
2021-02-15 02:07:51 +0100geowiesnot(~user@i15-les02-ix2-87-89-181-157.sfr.lns.abo.bbox.fr) (Ping timeout: 256 seconds)
2021-02-15 02:09:36 +0100nhs(~nhs@c-24-20-87-79.hsd1.or.comcast.net) (Ping timeout: 240 seconds)
2021-02-15 02:09:36 +0100star_cloud(~star_clou@ec2-34-220-44-120.us-west-2.compute.amazonaws.com) (Ping timeout: 240 seconds)
2021-02-15 02:09:56 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Ping timeout: 240 seconds)
2021-02-15 02:11:04 +0100Jd007(~Jd007@162.156.11.151)
2021-02-15 02:11:19 +0100whataday(~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection)
2021-02-15 02:12:25 +0100whataday(~xxx@2400:8902::f03c:92ff:fe60:98d8)
2021-02-15 02:14:17 +0100clog(~nef@bespin.org)
2021-02-15 02:14:59 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-02-15 02:21:22 +0100nhs(~nhs@c-24-20-87-79.hsd1.or.comcast.net)
2021-02-15 02:21:22 +0100droobertzka(cf993545@207-153-53-69.fttp.usinternet.com) (Ping timeout: 240 seconds)
2021-02-15 02:25:36 +0100johnjay(~pi@38.120.10.99) (Ping timeout: 240 seconds)
2021-02-15 02:26:09 +0100nhs(~nhs@c-24-20-87-79.hsd1.or.comcast.net) (Ping timeout: 265 seconds)
2021-02-15 02:26:48 +0100jedws(~jedws@101.184.202.248) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2021-02-15 02:27:30 +0100elliott__(~elliott@pool-108-51-101-42.washdc.fios.verizon.net) (Ping timeout: 246 seconds)
2021-02-15 02:28:33 +0100 <karasu1[m]> <Axman6 "the haskell equivalent would be "> Hmm, where can I find the Haskell equivalents for this notation? Also, wouldn't we need to represent the bar above u somehow in this case?
2021-02-15 02:28:48 +0100 <karasu1[m]> ∀ u. cx ⇒ t
2021-02-15 02:29:26 +0100 <karasu1[m]> Is the original, but the bar above u would represent a sequence right? Does forall u. C u => t represent a sequence of `u`s?
2021-02-15 02:29:45 +0100boxscape(4ff0baf3@gateway/web/cgi-irc/kiwiirc.com/ip.79.240.186.243)
2021-02-15 02:34:00 +0100nhs(~nhs@c-24-20-87-79.hsd1.or.comcast.net)
2021-02-15 02:35:08 +0100 <ski> yes, like in `map :: forall a b. (a -> b) -> [a] -> [b]'
2021-02-15 02:35:55 +0100boxscape(4ff0baf3@gateway/web/cgi-irc/kiwiirc.com/ip.79.240.186.243) (Quit: Connection closed)
2021-02-15 02:35:59 +0100Guest_22(ad121326@173-18-19-38.client.mchsi.com)
2021-02-15 02:36:01 +0100 <karasu1[m]> Hmm, where do you find that? `:t map` gives me `map :: (a -> b) -> [a] -> [b]`
2021-02-15 02:36:07 +0100boxscape(4ff0baf3@gateway/web/cgi-irc/kiwiirc.com/ip.79.240.186.243)
2021-02-15 02:36:09 +0100Guest_22(ad121326@173-18-19-38.client.mchsi.com) (Client Quit)
2021-02-15 02:36:24 +0100 <ski> that's the form with the `forall' elided
2021-02-15 02:37:09 +0100 <karasu1[m]> Is there a way to make GHCi show the form including the `forall`?
2021-02-15 02:37:24 +0100jedws(~jedws@101.184.202.248)
2021-02-15 02:38:06 +0100 <karasu1[m]> Or is it just implied all the time?
2021-02-15 02:38:13 +0100 <ski> % :set -fprint-explicit-foralls
2021-02-15 02:38:13 +0100 <yahb> ski:
2021-02-15 02:38:16 +0100 <ski> % :t map
2021-02-15 02:38:16 +0100 <yahb> ski: forall {a} {b}. (a -> b) -> [a] -> [b]
2021-02-15 02:38:26 +0100 <ski> apparently it shows curly brackets around them, now
2021-02-15 02:40:33 +0100 <karasu1[m]> Is there a way to show the u with the bar on top of it in Haskell?
2021-02-15 02:40:51 +0100 <ski> no, because that's not Haskell
2021-02-15 02:40:52 +0100 <boxscape> % :t +v map
2021-02-15 02:40:52 +0100 <yahb> boxscape: forall a b. (a -> b) -> [a] -> [b]
2021-02-15 02:40:55 +0100 <karasu1[m]> I wanted a way to represent that in plain text
2021-02-15 02:41:24 +0100 <karasu1[m]> OK
2021-02-15 02:41:25 +0100 <boxscape> the curly brackets are because it infers the type of map if you type `:t map`, rather than taking the type declaration of the definition
2021-02-15 02:41:28 +0100 <ski> the bar is meta-notation, when talking about Haskell (or other programming languages)
2021-02-15 02:42:24 +0100mnrmnaughawk
2021-02-15 02:43:24 +0100tromp(~tromp@dhcp-077-249-230-040.chello.nl)
2021-02-15 02:43:35 +0100 <ski> the bar notation is only useful if you want to talk about arbitrary sequences of syntactical elements. in actual Haskell, you always have some specific definite number, so you you'd just spell `a b c' out instead of writing a meta-variable with a bar
2021-02-15 02:43:38 +0100polyrain(~polyrain@124.177.21.171) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2021-02-15 02:47:45 +0100tromp(~tromp@dhcp-077-249-230-040.chello.nl) (Ping timeout: 240 seconds)
2021-02-15 02:47:56 +0100inkbottle(~inkbottle@aaubervilliers-654-1-119-56.w86-198.abo.wanadoo.fr)
2021-02-15 02:49:01 +0100tromp(~tromp@dhcp-077-249-230-040.chello.nl)
2021-02-15 02:49:16 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds)
2021-02-15 02:49:54 +0100boxscape(4ff0baf3@gateway/web/cgi-irc/kiwiirc.com/ip.79.240.186.243) (Quit: Connection closed)
2021-02-15 02:50:28 +0100cole-h(~cole-h@c-73-48-197-220.hsd1.ca.comcast.net)
2021-02-15 02:51:57 +0100 <karasu1[m]> Aw man.... I do want to talk about arbitrary sequences of syntactical elements using meta variables.. I guess LaTeX it is..
2021-02-15 02:52:00 +0100zebrag(~inkbottle@aaubervilliers-654-1-112-148.w86-198.abo.wanadoo.fr) (Ping timeout: 272 seconds)
2021-02-15 02:53:47 +0100tromp(~tromp@dhcp-077-249-230-040.chello.nl) (Ping timeout: 272 seconds)
2021-02-15 02:55:42 +0100awkmnrmnaugh
2021-02-15 02:56:00 +0100boxscape(4ff0baf3@gateway/web/cgi-irc/kiwiirc.com/ip.79.240.186.243)
2021-02-15 02:59:40 +0100rajivr(uid269651@gateway/web/irccloud.com/x-jjwlibcbhlreeuhn)
2021-02-15 03:00:56 +0100Deide(~Deide@217.155.19.23) (Quit: Seeee yaaaa)
2021-02-15 03:01:09 +0100raehik1(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 264 seconds)
2021-02-15 03:02:25 +0100jedws(~jedws@101.184.202.248) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2021-02-15 03:04:10 +0100jedws(~jedws@101.184.202.248)
2021-02-15 03:06:33 +0100Wuzzy(~Wuzzy@p57a2e574.dip0.t-ipconnect.de) (Ping timeout: 272 seconds)
2021-02-15 03:09:29 +0100mizu_no_oto(~textual@cpe-66-66-222-11.rochester.res.rr.com) (Quit: Computer has gone to sleep.)
2021-02-15 03:10:43 +0100mizu_no_oto(~textual@cpe-66-66-222-11.rochester.res.rr.com)
2021-02-15 03:11:08 +0100mizu_no_oto(~textual@cpe-66-66-222-11.rochester.res.rr.com) (Client Quit)
2021-02-15 03:15:29 +0100bitmagie(~Thunderbi@200116b806799500c47356767c14074b.dip.versatel-1u1.de)
2021-02-15 03:15:43 +0100aaa_aaa(~BlackP@64.64.117.212)
2021-02-15 03:16:13 +0100average(uid473595@gateway/web/irccloud.com/x-rcnzlofithcjrydg)
2021-02-15 03:17:55 +0100aaa_aaa(~BlackP@64.64.117.212) ()
2021-02-15 03:17:56 +0100xff0x(~xff0x@2001:1a81:52f8:8e00:23fc:8648:28c:c2cd) (Ping timeout: 240 seconds)
2021-02-15 03:18:19 +0100elliott__(~elliott@pool-108-51-101-42.washdc.fios.verizon.net)
2021-02-15 03:19:59 +0100xff0x(~xff0x@2001:1a81:5334:9d00:2968:4660:12ed:e0e0)
2021-02-15 03:20:13 +0100bitmagie(~Thunderbi@200116b806799500c47356767c14074b.dip.versatel-1u1.de) (Client Quit)
2021-02-15 03:23:49 +0100alx741(~alx741@186.178.108.225)
2021-02-15 03:26:20 +0100olligobber(olligobber@gateway/vpn/privateinternetaccess/olligobber)
2021-02-15 03:27:36 +0100raym(~ray@45.64.220.98)
2021-02-15 03:29:56 +0100jedws(~jedws@101.184.202.248) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2021-02-15 03:30:16 +0100Jd007(~Jd007@162.156.11.151) (Quit: Jd007)
2021-02-15 03:31:05 +0100Lord_of_Life(~Lord@unaffiliated/lord-of-life/x-0885362) (Ping timeout: 240 seconds)
2021-02-15 03:31:52 +0100Lord_of_Life(~Lord@unaffiliated/lord-of-life/x-0885362)
2021-02-15 03:33:03 +0100Jd007(~Jd007@162.156.11.151)
2021-02-15 03:37:42 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-02-15 03:42:45 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds)
2021-02-15 03:43:20 +0100tromp(~tromp@dhcp-077-249-230-040.chello.nl)
2021-02-15 03:47:36 +0100tromp(~tromp@dhcp-077-249-230-040.chello.nl) (Ping timeout: 240 seconds)
2021-02-15 03:48:07 +0100abhixec(~abhixec@c-67-169-139-16.hsd1.ca.comcast.net)
2021-02-15 03:49:58 +0100gentauro(~gentauro@unaffiliated/gentauro) (Read error: Connection reset by peer)
2021-02-15 03:50:45 +0100gentauro(~gentauro@unaffiliated/gentauro)
2021-02-15 03:51:04 +0100tromp(~tromp@dhcp-077-249-230-040.chello.nl)
2021-02-15 03:53:56 +0100nhs(~nhs@c-24-20-87-79.hsd1.or.comcast.net) (Ping timeout: 240 seconds)
2021-02-15 03:55:16 +0100alx741(~alx741@186.178.108.225) (Quit: alx741)
2021-02-15 03:55:25 +0100tromp(~tromp@dhcp-077-249-230-040.chello.nl) (Ping timeout: 240 seconds)
2021-02-15 03:59:39 +0100renzhi(~renzhi@2607:fa49:6500:6f00::1e43) (Ping timeout: 272 seconds)
2021-02-15 04:02:38 +0100ezrakilty(~ezrakilty@75-172-120-208.tukw.qwest.net)
2021-02-15 04:04:57 +0100saitamaplus(uid272474@gateway/web/irccloud.com/x-zjttagjjvsylgivd) (Quit: Connection closed for inactivity)
2021-02-15 04:06:17 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9)
2021-02-15 04:06:53 +0100nhs(~nhs@c-24-20-87-79.hsd1.or.comcast.net)
2021-02-15 04:11:21 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Ping timeout: 264 seconds)
2021-02-15 04:13:39 +0100nhs(~nhs@c-24-20-87-79.hsd1.or.comcast.net) (Ping timeout: 256 seconds)
2021-02-15 04:16:18 +0100ystael(~ystael@209.6.50.55) (Read error: Connection reset by peer)
2021-02-15 04:16:43 +0100zaquest(~notzaques@5.128.210.178) (Remote host closed the connection)
2021-02-15 04:17:01 +0100ezrakilty(~ezrakilty@75-172-120-208.tukw.qwest.net) (Remote host closed the connection)
2021-02-15 04:21:58 +0100glguy(x@freenode/staff/haskell.developer.glguy)
2021-02-15 04:23:08 +0100Saukk(~Saukk@83-148-239-3.dynamic.lounea.fi)
2021-02-15 04:25:17 +0100boxscape(4ff0baf3@gateway/web/cgi-irc/kiwiirc.com/ip.79.240.186.243) (Quit: Connection closed)
2021-02-15 04:26:19 +0100nhs(~nhs@c-24-20-87-79.hsd1.or.comcast.net)
2021-02-15 04:27:05 +0100star_cloud(~star_clou@ec2-34-220-44-120.us-west-2.compute.amazonaws.com)
2021-02-15 04:28:16 +0100poscat1poscat
2021-02-15 04:28:50 +0100FinnElija(~finn_elij@gateway/tor-sasl/finnelija/x-67402716)
2021-02-15 04:28:50 +0100finn_elijaGuest68125
2021-02-15 04:28:50 +0100FinnElijafinn_elija
2021-02-15 04:32:00 +0100urodna(~urodna@unaffiliated/urodna) (Quit: urodna)
2021-02-15 04:32:04 +0100slack1256(~slack1256@dvc-186-186-101-190.movil.vtr.net) (Remote host closed the connection)
2021-02-15 04:32:21 +0100nhs(~nhs@c-24-20-87-79.hsd1.or.comcast.net) (Ping timeout: 264 seconds)
2021-02-15 04:32:45 +0100cheater(~user@unaffiliated/cheater) (Ping timeout: 240 seconds)
2021-02-15 04:32:57 +0100zaquest(~notzaques@5.128.210.178)
2021-02-15 04:33:00 +0100Guest68125(~finn_elij@gateway/tor-sasl/finnelija/x-67402716) (Ping timeout: 268 seconds)
2021-02-15 04:34:19 +0100 <edwardk> does anyone in here work at twitter? Someone hacked @kmett, and has been deleting my tweets for the last 24 hours. Attempts to contact anyone through the forms isn't working.
2021-02-15 04:34:52 +0100 <edwardk> The account quickly got locked, but it is now unlocked again, and they are still in control and still deleting my life.
2021-02-15 04:34:57 +0100alx741(~alx741@186.178.108.225)
2021-02-15 04:35:42 +0100cheater(~user@unaffiliated/cheater)
2021-02-15 04:39:31 +0100 <glguy> Yikes! I don't have any Twitter contacts, but that sucks.
2021-02-15 04:41:41 +0100 <pjb> edwardk: or forget it and move to telegram, vk, gab, etc.
2021-02-15 04:43:44 +0100 <edwardk> not really my first option
2021-02-15 04:43:52 +0100 <dmj`> pjb: he shouldn't have to, this isn't right. Twitter won't hard delete tweets.
2021-02-15 04:44:17 +0100nhs(~nhs@c-24-20-87-79.hsd1.or.comcast.net)
2021-02-15 04:45:12 +0100tromp(~tromp@dhcp-077-249-230-040.chello.nl)
2021-02-15 04:45:26 +0100theDon(~td@94.134.91.34) (Ping timeout: 256 seconds)
2021-02-15 04:45:57 +0100 <edwardk> dmj`: well i also can't access my account. they somehow managed to get the change of email through without ever emailing my main address
2021-02-15 04:46:10 +0100plutoniix(~q@184.82.197.199)
2021-02-15 04:46:56 +0100theDon(~td@muedsl-82-207-238-067.citykom.de)
2021-02-15 04:47:43 +0100 <edwardk> in other news the 'ad' overhaul is going pretty well. i managed to get .Double modes for all the different AD modes, which means a top level Numeric.AD.Double now works, and is more accurate _and_ faster all at the same time
2021-02-15 04:49:24 +0100nhs(~nhs@c-24-20-87-79.hsd1.or.comcast.net) (Ping timeout: 256 seconds)
2021-02-15 04:49:58 +0100tromp(~tromp@dhcp-077-249-230-040.chello.nl) (Ping timeout: 256 seconds)
2021-02-15 04:52:25 +0100 <dmj`> edwardk: did you use the web form to login?
2021-02-15 04:53:03 +0100 <edwardk> the web form wants to send an email to the shiny new email address they managed to swap in
2021-02-15 04:53:21 +0100 <edwardk> i filed an issue as well
2021-02-15 04:53:44 +0100 <edwardk> now i'm just in end user limbo
2021-02-15 04:53:52 +0100 <swarmcollective> Does Twitter support 2FA ?
2021-02-15 04:54:04 +0100 <edwardk> probably
2021-02-15 04:54:13 +0100 <edwardk> i'd switch it on... if i could get in ;)
2021-02-15 04:54:18 +0100rdivyanshu(uid322626@gateway/web/irccloud.com/x-suckjpgzxsxappip)
2021-02-15 04:57:42 +0100 <dmj`> there's gotta be at least one person at twitter on #haskell IRC
2021-02-15 05:01:56 +0100pieguy128_(~pieguy128@bras-base-mtrlpq5031w-grc-47-67-70-101-46.dsl.bell.ca)
2021-02-15 05:01:57 +0100nhs(~nhs@c-24-20-87-79.hsd1.or.comcast.net)
2021-02-15 05:02:01 +0100 <dmj`> @edwardk maybe tweeting @jack would work
2021-02-15 05:02:23 +0100 <edwardk> which requires me to set up another twitter account
2021-02-15 05:03:37 +0100 <dmj`> edwardk: well others can do this for you as well
2021-02-15 05:04:41 +0100pieguy128(~pieguy128@bras-base-mtrlpq5031w-grc-39-70-27-244-102.dsl.bell.ca) (Ping timeout: 265 seconds)
2021-02-15 05:04:45 +0100Wuzzy(~Wuzzy@p5b0df671.dip0.t-ipconnect.de)
2021-02-15 05:04:46 +0100Wuzzy(~Wuzzy@p5b0df671.dip0.t-ipconnect.de) (Remote host closed the connection)
2021-02-15 05:05:38 +0100ukari(~ukari@unaffiliated/ukari)
2021-02-15 05:06:19 +0100 <glguy> Well, we can get the word out https://twitter.com/glguy/status/1361164744007188481
2021-02-15 05:06:46 +0100 <dmj`> https://usercontent.irccloud-cdn.com/file/sJ1g0Jtg/image.png
2021-02-15 05:07:04 +0100justsomeguy(~justsomeg@unaffiliated/--/x-3805311)
2021-02-15 05:08:59 +0100 <dmj`> https://twitter.com/dmjio/status/1361165342840664065
2021-02-15 05:10:21 +0100berberman(~berberman@unaffiliated/berberman) (Quit: ZNC 1.8.2 - https://znc.in)
2021-02-15 05:10:49 +0100tromp(~tromp@dhcp-077-249-230-040.chello.nl)
2021-02-15 05:10:51 +0100berberman(~berberman@unaffiliated/berberman)
2021-02-15 05:10:56 +0100nhs(~nhs@c-24-20-87-79.hsd1.or.comcast.net) (Ping timeout: 256 seconds)
2021-02-15 05:11:02 +0100ubert1(~Thunderbi@p200300ecdf25d90be6b318fffe838f33.dip0.t-ipconnect.de)
2021-02-15 05:11:52 +0100ubert(~Thunderbi@p200300ecdf25d9afe6b318fffe838f33.dip0.t-ipconnect.de) (Ping timeout: 260 seconds)
2021-02-15 05:11:53 +0100ubert1ubert
2021-02-15 05:12:55 +0100zepheiryan(~zepheirya@178.239.168.171) (Remote host closed the connection)
2021-02-15 05:15:05 +0100tromp(~tromp@dhcp-077-249-230-040.chello.nl) (Ping timeout: 240 seconds)
2021-02-15 05:16:55 +0100 <dmj`> Gabriel worked at twitter right?
2021-02-15 05:17:34 +0100 <alp> yes
2021-02-15 05:18:16 +0100Mrbuck(~Mrbuck@gateway/tor-sasl/mrbuck)
2021-02-15 05:20:26 +0100 <Axman6> bgamari: ping
2021-02-15 05:20:42 +0100 <bgamari> is it quick?
2021-02-15 05:20:46 +0100 <bgamari> I'm on my way to bed
2021-02-15 05:21:09 +0100 <Axman6> yes, someone reported earlier the cert for gitlab.haskell.org has expired, and I was pointed to you
2021-02-15 05:21:46 +0100 <bgamari> yes, and I fixed it
2021-02-15 05:21:55 +0100 <bgamari> see ghc-devs
2021-02-15 05:21:58 +0100 <Axman6> (seems to be working for me though, so not sure if it was fixed elsewhere, but they were unable to load anything a few hours ago)
2021-02-15 05:22:16 +0100 <Axman6> great, thanks. Sleep well :)
2021-02-15 05:22:55 +0100nhs(~nhs@c-24-20-87-79.hsd1.or.comcast.net)
2021-02-15 05:23:08 +0100frozenErebus(~frozenEre@94.128.81.133)
2021-02-15 05:25:10 +0100shatriff(~vitaliish@176-52-216-242.irishtelecom.com) (Remote host closed the connection)
2021-02-15 05:25:23 +0100shatriff(~vitaliish@176.52.216.242)
2021-02-15 05:25:55 +0100shatriff(~vitaliish@176.52.216.242) (Remote host closed the connection)
2021-02-15 05:26:25 +0100 <dmj`> those east coast people are still up I bet
2021-02-15 05:26:27 +0100shatriff(~vitaliish@176-52-216-242.irishtelecom.com)
2021-02-15 05:27:53 +0100nhs(~nhs@c-24-20-87-79.hsd1.or.comcast.net) (Ping timeout: 265 seconds)
2021-02-15 05:29:20 +0100p8m(p8m@gateway/vpn/protonvpn/p8m) (Remote host closed the connection)
2021-02-15 05:29:46 +0100tlyu(~tlyu@185.163.110.108)
2021-02-15 05:34:22 +0100tribble2(~tribble2@unaffiliated/tribble2)
2021-02-15 05:38:34 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-02-15 05:39:02 +0100Tario(~Tario@201.192.165.173) (Read error: Connection reset by peer)
2021-02-15 05:39:15 +0100Tario(~Tario@201.192.165.173)
2021-02-15 05:39:25 +0100nhs(~nhs@c-24-20-87-79.hsd1.or.comcast.net)
2021-02-15 05:43:17 +0100Noldorin(~noldorin@unaffiliated/noldorin) (Quit: My MacBook Pro has gone to sleep. ZZZzzz…)
2021-02-15 05:43:57 +0100Tario(~Tario@201.192.165.173) (Read error: Connection reset by peer)
2021-02-15 05:44:05 +0100nhs(~nhs@c-24-20-87-79.hsd1.or.comcast.net) (Ping timeout: 240 seconds)
2021-02-15 05:44:13 +0100Tario(~Tario@201.192.165.173)
2021-02-15 05:47:21 +0100machinedgod(~machinedg@135-23-192-217.cpe.pppoe.ca) (Ping timeout: 264 seconds)
2021-02-15 05:48:33 +0100Tario(~Tario@201.192.165.173) (Ping timeout: 264 seconds)
2021-02-15 05:56:47 +0100myShoggoth(~myShoggot@75.164.34.42)
2021-02-15 05:56:55 +0100yianni(18390fbe@d24-57-15-190.home.cgocable.net)
2021-02-15 05:57:10 +0100yianni(18390fbe@d24-57-15-190.home.cgocable.net) (Client Quit)
2021-02-15 05:57:30 +0100nhs(~nhs@c-24-20-87-79.hsd1.or.comcast.net)
2021-02-15 05:57:52 +0100rslima_____(sid26145@gateway/web/irccloud.com/x-pzkyfbaauotfeqce) (Read error: Connection reset by peer)
2021-02-15 05:57:53 +0100m-renaud(sid333785@gateway/web/irccloud.com/x-khsxlpiktkditcef) (Read error: Connection reset by peer)
2021-02-15 05:57:53 +0100dani-(sid341953@gateway/web/irccloud.com/x-mtkabtckykigyffu) (Read error: Connection reset by peer)
2021-02-15 05:58:01 +0100rslima_____(sid26145@gateway/web/irccloud.com/x-aypulxwbltevibbl)
2021-02-15 05:58:03 +0100dani-(sid341953@gateway/web/irccloud.com/x-xwlfrrleofhiyzmn)
2021-02-15 05:58:07 +0100srhb(sid400352@NixOS/user/srhb) (Read error: Connection reset by peer)
2021-02-15 05:58:07 +0100jackdk(sid373013@gateway/web/irccloud.com/x-emzaacpvxlnxzzwe) (Read error: Connection reset by peer)
2021-02-15 05:58:11 +0100m-renaud(sid333785@gateway/web/irccloud.com/x-gyhpqquancngyzvf)
2021-02-15 05:58:21 +0100jackdk(sid373013@gateway/web/irccloud.com/x-doqzhuxhwcndskts)
2021-02-15 05:58:26 +0100srhb(sid400352@NixOS/user/srhb)
2021-02-15 05:58:37 +0100inkbottle(~inkbottle@aaubervilliers-654-1-119-56.w86-198.abo.wanadoo.fr) (Quit: Konversation terminated!)
2021-02-15 05:58:40 +0100kozowu(uid44796@gateway/web/irccloud.com/x-usimnzplijgfpzts) (Read error: Connection reset by peer)
2021-02-15 05:58:40 +0100typetetris(sid275937@gateway/web/irccloud.com/x-aryagoiaoesrafqs) (Read error: Connection reset by peer)
2021-02-15 05:58:40 +0100Kamuela(sid111576@gateway/web/irccloud.com/x-ctdjijrpijofxaqi) (Read error: Connection reset by peer)
2021-02-15 05:58:56 +0100kozowu(uid44796@gateway/web/irccloud.com/x-mwxxuoghbagtiqvu)
2021-02-15 05:58:56 +0100typetetris(sid275937@gateway/web/irccloud.com/x-jmpcyphyiunkizfv)
2021-02-15 05:59:02 +0100 <dmj`> @edwardk hang tight, I'm sure it will be recovered soon. My account was hacked 5+ years ago (couldn't login etc.) and I got it back so.
2021-02-15 05:59:02 +0100 <lambdabot> Unknown command, try @list
2021-02-15 05:59:06 +0100Kamuela(sid111576@gateway/web/irccloud.com/x-dslzrevvxrjnszte)
2021-02-15 05:59:35 +0100 <edwardk> its mostly the slow bleed of checking in every few hours to see more history deleted.
2021-02-15 06:00:36 +0100 <swarmcollective> Still no luck with contacting Twitter support? I wish I knew someone.
2021-02-15 06:01:21 +0100myShoggoth(~myShoggot@75.164.34.42) (Ping timeout: 272 seconds)
2021-02-15 06:02:27 +0100nhs(~nhs@c-24-20-87-79.hsd1.or.comcast.net) (Ping timeout: 256 seconds)
2021-02-15 06:03:06 +0100 <edwardk> on the plus side, the trip down the memory hole let me find things like this old visualization of the evolution of the lens source code https://www.youtube.com/watch?v=ADAprOOgi-A&feature=emb_logo
2021-02-15 06:03:50 +0100 <swarmcollective> Oh, interesting.
2021-02-15 06:04:33 +0100 <swarmcollective> This is a good reminder for me to continue to take backups of my online "stuff" ("property"?)
2021-02-15 06:04:44 +0100tromp(~tromp@dhcp-077-249-230-040.chello.nl)
2021-02-15 06:05:05 +0100alx741(~alx741@186.178.108.225) (Ping timeout: 240 seconds)
2021-02-15 06:05:12 +0100 <swarmcollective> I downloaded a 40gig backup a couple weeks ago.
2021-02-15 06:07:12 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9)
2021-02-15 06:07:21 +0100 <dmj`> edwardk: didn't know gource let you sub in an audio track :P
2021-02-15 06:07:47 +0100 <dmj`> this is pretty wild
2021-02-15 06:08:26 +0100 <edwardk> i'm amused at how my ADHD-like coding style comes off as super-aggressive in that video
2021-02-15 06:08:48 +0100 <edwardk> you're touching something? let me come over here and bully you away from it.
2021-02-15 06:09:03 +0100tromp(~tromp@dhcp-077-249-230-040.chello.nl) (Ping timeout: 246 seconds)
2021-02-15 06:09:29 +0100ph88(~ph88@2a02:8109:9e00:7e5c:a5e6:eed6:171f:46a3) (Ping timeout: 272 seconds)
2021-02-15 06:12:13 +0100 <Axman6> edwardk: I've pinged @TwitterSupport to see if there's anything they can do, can't hurt having someone else let them know I guess :\
2021-02-15 06:12:21 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Ping timeout: 265 seconds)
2021-02-15 06:12:42 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds)
2021-02-15 06:16:05 +0100nhs(~nhs@c-24-20-87-79.hsd1.or.comcast.net)
2021-02-15 06:19:05 +0100frozenErebus(~frozenEre@94.128.81.133) (Ping timeout: 272 seconds)
2021-02-15 06:19:13 +0100alx741(~alx741@186.178.108.16)
2021-02-15 06:21:03 +0100nhs(~nhs@c-24-20-87-79.hsd1.or.comcast.net) (Ping timeout: 265 seconds)
2021-02-15 06:23:50 +0100vicfred(~vicfred@unaffiliated/vicfred) (Quit: Leaving)
2021-02-15 06:24:11 +0100minoru_shiraeesh(~shiraeesh@46.34.207.228)
2021-02-15 06:24:57 +0100justsomeguy(~justsomeg@unaffiliated/--/x-3805311) (Quit: WeeChat 3.0)
2021-02-15 06:25:47 +0100 <dmj`> edwardk: there are plenty of accounts on twitter that should be hacked and destroyed, yours is not one of them
2021-02-15 06:25:53 +0100frozenErebus(~frozenEre@94.128.81.133)
2021-02-15 06:27:14 +0100cheater1(~user@unaffiliated/cheater)
2021-02-15 06:27:44 +0100 <swarmcollective> Hopefully they keep at least a few days backup; the question is whether or not they will be willing to do the work to restore from it..
2021-02-15 06:28:01 +0100tromp(~tromp@dhcp-077-249-230-040.chello.nl)
2021-02-15 06:29:05 +0100cheater(~user@unaffiliated/cheater) (Ping timeout: 240 seconds)
2021-02-15 06:29:09 +0100cheater1cheater
2021-02-15 06:29:23 +0100 <edwardk> u:w
2021-02-15 06:29:28 +0100 <edwardk> er wrong window
2021-02-15 06:30:45 +0100 <dmj`> swarmcollective: no company hard deletes, not even snap chat, it's all soft deletes
2021-02-15 06:31:14 +0100Orbstheorem(~roosember@hellendaal.orbstheorem.ch) (Ping timeout: 264 seconds)
2021-02-15 06:31:19 +0100 <dmj`> data is too precious
2021-02-15 06:31:47 +0100 <swarmcollective> Except for cases of "regulatory-compliance" :D
2021-02-15 06:32:27 +0100 <dmj`> well then you cut the CIA in on the deal and you're immune, problem solved.
2021-02-15 06:33:05 +0100ukari(~ukari@unaffiliated/ukari) (Ping timeout: 240 seconds)
2021-02-15 06:33:06 +0100hololeap(~hololeap@unaffiliated/hololeap) (Ping timeout: 256 seconds)
2021-02-15 06:34:06 +0100ukari(~ukari@unaffiliated/ukari)
2021-02-15 06:34:15 +0100nhs(~nhs@c-24-20-87-79.hsd1.or.comcast.net)
2021-02-15 06:34:31 +0100 <Axman6> One of the security podcasts I listen to usually ends with some funny line, and the other week it was "I don't bother backing up any of my data, because I know the NSA is doing it for me"
2021-02-15 06:34:53 +0100 <edwardk> yeah, but you have to go work for them to get it
2021-02-15 06:35:02 +0100hololeap(~hololeap@unaffiliated/hololeap)
2021-02-15 06:35:21 +0100tromp(~tromp@dhcp-077-249-230-040.chello.nl) (Ping timeout: 264 seconds)
2021-02-15 06:35:23 +0100 <Axman6> Or hope it ends up on wikileaks at some point :)
2021-02-15 06:36:48 +0100kam1(~kam1@83.123.64.17)
2021-02-15 06:37:38 +0100kam1(~kam1@83.123.64.17) (Read error: Connection reset by peer)
2021-02-15 06:39:25 +0100nhs(~nhs@c-24-20-87-79.hsd1.or.comcast.net) (Ping timeout: 265 seconds)
2021-02-15 06:42:15 +0100 <dmj`> doesn't matter, we're on the good side of Twitter, everything will be restored.
2021-02-15 06:43:42 +0100tmciver(~tmciver@cpe-172-101-40-226.maine.res.rr.com) (Ping timeout: 246 seconds)
2021-02-15 06:44:24 +0100tromp(~tromp@dhcp-077-249-230-040.chello.nl)
2021-02-15 06:45:41 +0100tmciver(~tmciver@cpe-172-101-40-226.maine.res.rr.com)
2021-02-15 06:48:25 +0100tromp(~tromp@dhcp-077-249-230-040.chello.nl) (Ping timeout: 240 seconds)
2021-02-15 06:50:25 +0100minoru_shiraeesh(~shiraeesh@46.34.207.228) (Ping timeout: 240 seconds)
2021-02-15 06:50:29 +0100nhs(~nhs@c-24-20-87-79.hsd1.or.comcast.net)
2021-02-15 06:51:05 +0100slack1256(~slack1256@dvc-186-186-101-190.movil.vtr.net)
2021-02-15 06:53:51 +0100heatsink(~heatsink@2600:1700:bef1:5e10:b101:b0cf:b14d:ce6b) (Remote host closed the connection)
2021-02-15 06:57:51 +0100heatsink(~heatsink@2600:1700:bef1:5e10:b101:b0cf:b14d:ce6b)
2021-02-15 07:06:08 +0100bandali(bandali@fsf/emeritus/bandali) (Quit: ZNC - https://znc.in)
2021-02-15 07:06:10 +0100Saukk(~Saukk@83-148-239-3.dynamic.lounea.fi) (Remote host closed the connection)
2021-02-15 07:09:03 +0100minoru_shiraeesh(~shiraeesh@46.34.207.228)
2021-02-15 07:09:05 +0100bandali(bandali@fsf/emeritus/bandali)
2021-02-15 07:09:53 +0100nhs(~nhs@c-24-20-87-79.hsd1.or.comcast.net) (Ping timeout: 256 seconds)
2021-02-15 07:10:17 +0100benkolera(sid285671@gateway/web/irccloud.com/x-gmncvsiyaolgodyc)
2021-02-15 07:12:31 +0100toorevitimirp(~tooreviti@117.182.183.159)
2021-02-15 07:13:55 +0100rdivyanshu(uid322626@gateway/web/irccloud.com/x-suckjpgzxsxappip) (Quit: Connection closed for inactivity)
2021-02-15 07:14:00 +0100nhs(~nhs@c-24-20-87-79.hsd1.or.comcast.net)
2021-02-15 07:15:26 +0100slack1256(~slack1256@dvc-186-186-101-190.movil.vtr.net) (Remote host closed the connection)
2021-02-15 07:16:12 +0100johnjay(~pi@38.120.10.99)
2021-02-15 07:16:57 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 246 seconds)
2021-02-15 07:17:36 +0100 <whataday> twitter is full of mob
2021-02-15 07:19:03 +0100nhs(~nhs@c-24-20-87-79.hsd1.or.comcast.net) (Ping timeout: 265 seconds)
2021-02-15 07:22:25 +0100elliott__(~elliott@pool-108-51-101-42.washdc.fios.verizon.net) (Ping timeout: 240 seconds)
2021-02-15 07:22:50 +0100tromp(~tromp@dhcp-077-249-230-040.chello.nl)
2021-02-15 07:23:35 +0100takuan(~takuan@178-116-218-225.access.telenet.be)
2021-02-15 07:24:27 +0100tzh(~tzh@c-24-21-73-154.hsd1.or.comcast.net) (Quit: zzz)
2021-02-15 07:26:01 +0100 <dmj`> whataday: it's important
2021-02-15 07:27:06 +0100tromp(~tromp@dhcp-077-249-230-040.chello.nl) (Ping timeout: 246 seconds)
2021-02-15 07:31:41 +0100nhs(~nhs@c-24-20-87-79.hsd1.or.comcast.net)
2021-02-15 07:31:45 +0100minoru_shiraeesh(~shiraeesh@46.34.207.228) (Ping timeout: 264 seconds)
2021-02-15 07:33:19 +0100tromp(~tromp@dhcp-077-249-230-040.chello.nl)
2021-02-15 07:34:39 +0100tromp_(~tromp@dhcp-077-249-230-040.chello.nl)
2021-02-15 07:34:39 +0100tromp(~tromp@dhcp-077-249-230-040.chello.nl) (Read error: Connection reset by peer)
2021-02-15 07:36:11 +0100forgottenone(~forgotten@176.42.30.133)
2021-02-15 07:36:12 +0100nhs(~nhs@c-24-20-87-79.hsd1.or.comcast.net) (Ping timeout: 246 seconds)
2021-02-15 07:37:23 +0100 <whataday> are there simple tools to clip mp4 videos?
2021-02-15 07:37:25 +0100nhs(~nhs@c-24-20-87-79.hsd1.or.comcast.net)
2021-02-15 07:38:08 +0100frozenErebus(~frozenEre@94.128.81.133) (Quit: leaving)
2021-02-15 07:38:31 +0100frozenErebus(~frozenEre@94.128.81.133)
2021-02-15 07:38:56 +0100tromp_(~tromp@dhcp-077-249-230-040.chello.nl) (Ping timeout: 240 seconds)
2021-02-15 07:39:03 +0100 <Axman6> whataday: is that a haskell question?
2021-02-15 07:40:58 +0100 <whataday> a haskell tool related to videos?
2021-02-15 07:41:24 +0100 <Axman6> is that what you want? I don't know of any that exist
2021-02-15 07:42:05 +0100nhs(~nhs@c-24-20-87-79.hsd1.or.comcast.net) (Ping timeout: 240 seconds)
2021-02-15 07:42:19 +0100 <whataday> ok
2021-02-15 07:42:23 +0100danvet(~Daniel@2a02:168:57f4:0:efd0:b9e5:5ae6:c2fa)
2021-02-15 07:45:32 +0100 <ephemient> there are ffmpeg bindings for haskell
2021-02-15 07:45:51 +0100 <dmj`> fuck dude, get kmett's twitter back
2021-02-15 07:47:36 +0100 <whataday> ephemient, aha
2021-02-15 07:52:13 +0100tromp(~tromp@dhcp-077-249-230-040.chello.nl)
2021-02-15 07:55:42 +0100nhs(~nhs@c-24-20-87-79.hsd1.or.comcast.net)
2021-02-15 08:00:21 +0100nhs(~nhs@c-24-20-87-79.hsd1.or.comcast.net) (Ping timeout: 246 seconds)
2021-02-15 08:00:25 +0100frozenErebus(~frozenEre@94.128.81.133) (Ping timeout: 240 seconds)
2021-02-15 08:06:52 +0100vchlup(~vchlup@nat.brnet.cz)
2021-02-15 08:07:15 +0100heatsink(~heatsink@2600:1700:bef1:5e10:b101:b0cf:b14d:ce6b) (Remote host closed the connection)
2021-02-15 08:08:03 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9)
2021-02-15 08:09:11 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-02-15 08:10:37 +0100nhs(~nhs@c-24-20-87-79.hsd1.or.comcast.net)
2021-02-15 08:12:10 +0100plutoniix(~q@184.82.197.199) (Read error: Connection reset by peer)
2021-02-15 08:12:30 +0100 <ukari> any frp library recommand?
2021-02-15 08:13:09 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Ping timeout: 264 seconds)
2021-02-15 08:15:07 +0100Orbstheorem(~roosember@hellendaal.orbstheorem.ch)
2021-02-15 08:15:44 +0100kav(~kari@dsl-hkibng42-56733f-225.dhcp.inet.fi) (Ping timeout: 258 seconds)
2021-02-15 08:15:56 +0100gioyik(~gioyik@gateway/tor-sasl/gioyik) (Quit: WeeChat 3.0)
2021-02-15 08:19:36 +0100nhs(~nhs@c-24-20-87-79.hsd1.or.comcast.net) (Ping timeout: 246 seconds)
2021-02-15 08:22:33 +0100m0rphism1(~m0rphism@HSI-KBW-085-216-104-059.hsi.kabelbw.de)
2021-02-15 08:24:35 +0100hal9001(~user@zz2017405567D30FFCD9.userreverse.dion.ne.jp)
2021-02-15 08:27:32 +0100Lowl3v3l(~Lowl3v3l@dslb-002-203-233-121.002.203.pools.vodafone-ip.de)
2021-02-15 08:30:27 +0100shatriff(~vitaliish@176-52-216-242.irishtelecom.com) (Remote host closed the connection)
2021-02-15 08:30:40 +0100 <dibblego> "good side of Twitter" — this is funny :)
2021-02-15 08:30:57 +0100shatriff(~vitaliish@176-52-216-242.irishtelecom.com)
2021-02-15 08:31:26 +0100shatriff(~vitaliish@176-52-216-242.irishtelecom.com) (Remote host closed the connection)
2021-02-15 08:31:30 +0100Varis(~Tadas@unaffiliated/varis)
2021-02-15 08:31:37 +0100nhs(~nhs@c-24-20-87-79.hsd1.or.comcast.net)
2021-02-15 08:31:40 +0100shatriff(~vitaliish@176-52-216-242.irishtelecom.com)
2021-02-15 08:32:11 +0100jpds(~jpds@gateway/tor-sasl/jpds) (Remote host closed the connection)
2021-02-15 08:32:13 +0100shatriff(~vitaliish@176-52-216-242.irishtelecom.com) (Remote host closed the connection)
2021-02-15 08:32:26 +0100puffnfre-(~puffnfres@45.76.124.5) (Quit: ZNC 1.8.0 - https://znc.in)
2021-02-15 08:32:32 +0100shatriff(~vitaliish@176-52-216-242.irishtelecom.com)
2021-02-15 08:32:34 +0100vchlup(~vchlup@nat.brnet.cz) (Remote host closed the connection)
2021-02-15 08:32:40 +0100jpds(~jpds@gateway/tor-sasl/jpds)
2021-02-15 08:32:59 +0100vchlup(~vchlup@nat.brnet.cz)
2021-02-15 08:33:01 +0100shatriff(~vitaliish@176-52-216-242.irishtelecom.com) (Remote host closed the connection)
2021-02-15 08:33:15 +0100shatriff(~vitaliish@176-52-216-242.irishtelecom.com)
2021-02-15 08:33:48 +0100shatriff(~vitaliish@176-52-216-242.irishtelecom.com) (Remote host closed the connection)
2021-02-15 08:35:09 +0100 <ij> ephemient, I was also wondering whether they do use the same repr.
2021-02-15 08:35:16 +0100dwt(~dwt@c-98-200-58-177.hsd1.tx.comcast.net) (Ping timeout: 240 seconds)
2021-02-15 08:35:27 +0100BIG_JIMMY_D(~jim@108.61.185.76) (Ping timeout: 256 seconds)
2021-02-15 08:36:38 +0100nhs(~nhs@c-24-20-87-79.hsd1.or.comcast.net) (Ping timeout: 256 seconds)
2021-02-15 08:37:17 +0100puffnfresh_(~puffnfres@45.76.124.5)
2021-02-15 08:40:09 +0100polyrain(~polyrain@2001:8003:e4d8:4101:c1c4:c9d6:1224:9fe6)
2021-02-15 08:40:17 +0100Mrbuck(~Mrbuck@gateway/tor-sasl/mrbuck) (Ping timeout: 268 seconds)
2021-02-15 08:40:58 +0100BIG_JIMMY_D(~jim@108.61.185.76)
2021-02-15 08:41:45 +0100cfricke(~cfricke@unaffiliated/cfricke)
2021-02-15 08:43:23 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds)
2021-02-15 08:43:31 +0100frozenErebus(~frozenEre@94.128.81.133)
2021-02-15 08:45:44 +0100kav(~kari@dsl-hkibng42-56733f-225.dhcp.inet.fi)
2021-02-15 08:46:35 +0100pera(~pera@unaffiliated/pera)
2021-02-15 08:46:46 +0100tlyu(~tlyu@185.163.110.108) (Remote host closed the connection)
2021-02-15 08:48:50 +0100pera(~pera@unaffiliated/pera) (Client Quit)
2021-02-15 08:48:58 +0100michalz(~user@185.246.204.79)
2021-02-15 08:49:14 +0100nhs(~nhs@c-24-20-87-79.hsd1.or.comcast.net)
2021-02-15 08:49:45 +0100polyrain(~polyrain@2001:8003:e4d8:4101:c1c4:c9d6:1224:9fe6) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2021-02-15 08:50:56 +0100Jd007(~Jd007@162.156.11.151) (Quit: Jd007)
2021-02-15 08:52:46 +0100Sgeo(~Sgeo@ool-18b98aa4.dyn.optonline.net) (Read error: Connection reset by peer)
2021-02-15 08:53:54 +0100nhs(~nhs@c-24-20-87-79.hsd1.or.comcast.net) (Ping timeout: 246 seconds)
2021-02-15 08:54:19 +0100 <dminuoso> ukari: Depends a bit what you intend to do. reflex enjoys wide usage
2021-02-15 08:54:32 +0100 <dminuoso> fsvo "wide"
2021-02-15 08:54:57 +0100polyrain(~polyrain@2001:8003:e4d8:4101:c1c4:c9d6:1224:9fe6)
2021-02-15 08:57:42 +0100Dufaer(4d38337f@77-56-51-127.dclient.hispeed.ch) (Ping timeout: 240 seconds)
2021-02-15 08:58:38 +0100cgfbee(~bot@oc1.itim-cj.ro) (Quit: cgfbee)
2021-02-15 08:59:55 +0100 <dmj`> dibblego: moral compass still exists
2021-02-15 09:01:12 +0100 <dibblego> dmj`: my compass goes all bonkers if I point it at twitter
2021-02-15 09:01:46 +0100sord937(~sord937@gateway/tor-sasl/sord937)
2021-02-15 09:04:47 +0100 <dmj`> @package elerea
2021-02-15 09:04:47 +0100 <lambdabot> https://hackage.haskell.org/package/elerea
2021-02-15 09:05:01 +0100 <dmj`> @ukari:
2021-02-15 09:05:01 +0100 <lambdabot> Unknown command, try @list
2021-02-15 09:05:38 +0100 <dmj`> @dibblego: they know
2021-02-15 09:05:39 +0100 <lambdabot> Unknown command, try @list
2021-02-15 09:06:55 +0100johnjay(~pi@38.120.10.99) (Ping timeout: 272 seconds)
2021-02-15 09:07:31 +0100 <dibblego> who? magnetic interference?
2021-02-15 09:07:38 +0100heatsink(~heatsink@2600:1700:bef1:5e10:b101:b0cf:b14d:ce6b)
2021-02-15 09:07:39 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-02-15 09:07:44 +0100nhs(~nhs@c-24-20-87-79.hsd1.or.comcast.net)
2021-02-15 09:07:49 +0100idhugo_(~idhugo@80-62-117-97-mobile.dk.customer.tdc.net)
2021-02-15 09:08:20 +0100plutoniix(~q@184.82.197.199)
2021-02-15 09:10:45 +0100Rudd0(~Rudd0@185.189.115.108) (Ping timeout: 264 seconds)
2021-02-15 09:11:21 +0100polyrain(~polyrain@2001:8003:e4d8:4101:c1c4:c9d6:1224:9fe6) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2021-02-15 09:11:52 +0100coco(~coco@85.195.206.253) (Quit: WeeChat 2.9)
2021-02-15 09:12:11 +0100abhixec(~abhixec@c-67-169-139-16.hsd1.ca.comcast.net) (Quit: leaving)
2021-02-15 09:12:38 +0100nhs(~nhs@c-24-20-87-79.hsd1.or.comcast.net) (Ping timeout: 272 seconds)
2021-02-15 09:12:38 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 272 seconds)
2021-02-15 09:13:53 +0100idhugo_(~idhugo@80-62-117-97-mobile.dk.customer.tdc.net) (Ping timeout: 272 seconds)
2021-02-15 09:14:17 +0100idhugo(~idhugo@80-62-117-86-mobile.dk.customer.tdc.net)
2021-02-15 09:15:47 +0100coot(~coot@37.30.55.141.nat.umts.dynamic.t-mobile.pl)
2021-02-15 09:18:45 +0100nhs(~nhs@c-24-20-87-79.hsd1.or.comcast.net)
2021-02-15 09:19:14 +0100heatsink(~heatsink@2600:1700:bef1:5e10:b101:b0cf:b14d:ce6b) (Ping timeout: 264 seconds)
2021-02-15 09:20:24 +0100kritzefitz(~kritzefit@fw-front.credativ.com)
2021-02-15 09:23:57 +0100nhs(~nhs@c-24-20-87-79.hsd1.or.comcast.net) (Ping timeout: 264 seconds)
2021-02-15 09:25:27 +0100nemesit|znc_(~nemesit@myriadvisuals.com) (Remote host closed the connection)
2021-02-15 09:25:44 +0100viluon(uid453725@gateway/web/irccloud.com/x-bizhpjepnxgymjot)
2021-02-15 09:25:46 +0100nemesit|znc(~nemesit@2a01:488:66:1000:2ea3:4eeb:0:1)
2021-02-15 09:32:00 +0100ph88(~ph88@2a02:8109:9e00:7e5c:a5f0:7da4:fcd6:f1eb)
2021-02-15 09:33:35 +0100saitamaplus(uid272474@gateway/web/irccloud.com/x-irdzpaiuvuekrsyx)
2021-02-15 09:35:26 +0100nhs(~nhs@c-24-20-87-79.hsd1.or.comcast.net)
2021-02-15 09:35:26 +0100xff0x(~xff0x@2001:1a81:5334:9d00:2968:4660:12ed:e0e0) (Ping timeout: 264 seconds)
2021-02-15 09:36:11 +0100xff0x(~xff0x@2001:1a81:5334:9d00:4786:d4f7:7834:be51)
2021-02-15 09:39:31 +0100berberman_(~berberman@unaffiliated/berberman)
2021-02-15 09:39:54 +0100cgfbee(~bot@oc1.itim-cj.ro)
2021-02-15 09:39:56 +0100chele(~chele@ip5b40237d.dynamic.kabel-deutschland.de)
2021-02-15 09:40:06 +0100nhs(~nhs@c-24-20-87-79.hsd1.or.comcast.net) (Ping timeout: 246 seconds)
2021-02-15 09:40:23 +0100berberman(~berberman@unaffiliated/berberman) (Ping timeout: 272 seconds)
2021-02-15 09:41:22 +0100kuribas(~user@ptr-25vy0i99dyv62vdc1ue.18120a2.ip6.access.telenet.be)
2021-02-15 09:42:57 +0100borne(~fritjof@200116b864008e00d8bba186ea6b909e.dip.versatel-1u1.de)
2021-02-15 09:44:04 +0100m0rphism1(~m0rphism@HSI-KBW-085-216-104-059.hsi.kabelbw.de) (Ping timeout: 256 seconds)
2021-02-15 09:47:58 +0100weikum(~weikum@90.218.153.39)
2021-02-15 09:50:43 +0100hekkaidekapus}(~tchouri@gateway/tor-sasl/hekkaidekapus)
2021-02-15 09:51:04 +0100nhs(~nhs@c-24-20-87-79.hsd1.or.comcast.net)
2021-02-15 09:51:47 +0100frozenErebus(~frozenEre@94.128.81.133) (Ping timeout: 265 seconds)
2021-02-15 09:52:14 +0100berberman_(~berberman@unaffiliated/berberman) (Quit: ZNC 1.8.2 - https://znc.in)
2021-02-15 09:53:11 +0100berberman(~berberman@unaffiliated/berberman)
2021-02-15 09:53:40 +0100hekkaidekapus{(~tchouri@gateway/tor-sasl/hekkaidekapus) (Ping timeout: 268 seconds)
2021-02-15 09:55:13 +0100Mrbuck(~Mrbuck@gateway/tor-sasl/mrbuck)
2021-02-15 09:56:08 +0100nhs(~nhs@c-24-20-87-79.hsd1.or.comcast.net) (Ping timeout: 265 seconds)
2021-02-15 09:56:17 +0100pavonia(~user@unaffiliated/siracusa) (Quit: Bye!)
2021-02-15 09:58:10 +0100jonathanx(~jonathan@h-176-109.A357.priv.bahnhof.se) (Remote host closed the connection)
2021-02-15 09:59:35 +0100wilkie(~wilkie@185.163.110.108)
2021-02-15 10:00:08 +0100ciderpunx[m](ciderpunxm@gateway/shell/matrix.org/x-nfhcjeegyfehqzkm) (Quit: Idle for 30+ days)
2021-02-15 10:02:26 +0100RusAlex(~Chel@unaffiliated/rusalex) (Quit: WeeChat 2.7.1)
2021-02-15 10:03:45 +0100jonathanx(~jonathan@h-176-109.A357.priv.bahnhof.se)
2021-02-15 10:03:50 +0100LKoen(~LKoen@96.252.88.92.rev.sfr.net)
2021-02-15 10:04:58 +0100berberman(~berberman@unaffiliated/berberman) (Quit: ZNC 1.8.2 - https://znc.in)
2021-02-15 10:06:14 +0100berberman(~berberman@unaffiliated/berberman)
2021-02-15 10:06:15 +0100raehik1(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
2021-02-15 10:08:10 +0100michalz(~user@185.246.204.79) (Remote host closed the connection)
2021-02-15 10:08:25 +0100michalz(~user@185.246.204.93)
2021-02-15 10:08:56 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9)
2021-02-15 10:12:49 +0100Liskni_si(~liskin@ackle.nomi.cz) ()
2021-02-15 10:13:42 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Ping timeout: 246 seconds)
2021-02-15 10:14:20 +0100nhs(~nhs@c-24-20-87-79.hsd1.or.comcast.net)
2021-02-15 10:14:40 +0100RusAlex(~Chel@unaffiliated/rusalex)
2021-02-15 10:14:43 +0100frozenErebus(~frozenEre@94.128.81.133)
2021-02-15 10:16:14 +0100berberman(~berberman@unaffiliated/berberman) (Ping timeout: 264 seconds)
2021-02-15 10:16:44 +0100berberman(~berberman@unaffiliated/berberman)
2021-02-15 10:18:38 +0100weikum(~weikum@90.218.153.39) (Read error: Connection reset by peer)
2021-02-15 10:18:38 +0100vchlup(~vchlup@nat.brnet.cz) (Remote host closed the connection)
2021-02-15 10:18:53 +0100chele(~chele@ip5b40237d.dynamic.kabel-deutschland.de) (Remote host closed the connection)
2021-02-15 10:18:55 +0100vchlup(~vchlup@nat.brnet.cz)
2021-02-15 10:18:56 +0100zariuq(~zar@fw1.ciirc.cvut.cz)
2021-02-15 10:18:57 +0100frozenErebus(~frozenEre@94.128.81.133) (Ping timeout: 246 seconds)
2021-02-15 10:19:04 +0100chele(~chele@ip5b40237d.dynamic.kabel-deutschland.de)
2021-02-15 10:19:04 +0100Jajik(xchlup2@gateway/shell/fi.muni.cz/x-wwrhdukwaxbktttf) (Quit: Ping timeout (120 seconds))
2021-02-15 10:19:04 +0100xsarnik0(xsarnik@gateway/shell/fi.muni.cz/x-jfjbrmgxfogbjeng) (Quit: Ping timeout (120 seconds))
2021-02-15 10:19:09 +0100nhs(~nhs@c-24-20-87-79.hsd1.or.comcast.net) (Ping timeout: 256 seconds)
2021-02-15 10:19:20 +0100weikum(~weikum@90.218.153.39)
2021-02-15 10:19:20 +0100Jajik(xchlup2@gateway/shell/fi.muni.cz/x-bsscdxcvqqdthevk)
2021-02-15 10:19:26 +0100russruss4(~russruss@my.russellmcc.com) (Quit: Ping timeout (120 seconds))
2021-02-15 10:19:29 +0100ahri(~ahri@178.209.40.84) (Quit: Ping timeout (120 seconds))
2021-02-15 10:19:45 +0100feuerbach_(~feuerbach@178.62.103.229) (Quit: ZNC 1.8.1 - https://znc.in)
2021-02-15 10:19:48 +0100russruss4(~russruss@my.russellmcc.com)
2021-02-15 10:19:49 +0100ahri(~ahri@178.209.40.84)
2021-02-15 10:19:54 +0100feuerbach(~feuerbach@unaffiliated/feuerbach)
2021-02-15 10:19:58 +0100blissful(~blissful@unaffiliated/azuline) (Remote host closed the connection)
2021-02-15 10:20:20 +0100blissful(~blissful@unaffiliated/azuline)
2021-02-15 10:20:21 +0100dminuoso(~dminuoso@unaffiliated/dminuoso) (Remote host closed the connection)
2021-02-15 10:20:28 +0100clynamen_(~clynamen@net-93-66-46-121.cust.vodafonedsl.it) (Quit: ZNC 1.7.5 - https://znc.in)
2021-02-15 10:20:30 +0100dustinm(~dustinm@static.38.6.217.95.clients.your-server.de) (Quit: Leaving)
2021-02-15 10:20:30 +0100Lord_of_Life(~Lord@unaffiliated/lord-of-life/x-0885362) (Quit: Laa shay'a waqi'un moutlaq bale kouloun moumkine)
2021-02-15 10:20:42 +0100NieDzejkob(~quassel@188.123.215.55) (Remote host closed the connection)
2021-02-15 10:20:47 +0100pfurla(~pfurla@ool-182ed2e2.dyn.optonline.net) (Ping timeout: 265 seconds)
2021-02-15 10:20:47 +0100gareth__(~gareth__@104.236.161.134) (Ping timeout: 265 seconds)
2021-02-15 10:20:48 +0100clynamen(~clynamen@net-93-66-46-121.cust.vodafonedsl.it)
2021-02-15 10:20:49 +0100zar(~zar@fw1.ciirc.cvut.cz) (Remote host closed the connection)
2021-02-15 10:20:52 +0100xsarnik0(xsarnik@gateway/shell/fi.muni.cz/x-wnxdqkgdvvnfetic)
2021-02-15 10:21:05 +0100wagle(~wagle@quassel.wagle.io) (Remote host closed the connection)
2021-02-15 10:21:06 +0100dminuoso(~dminuoso@unaffiliated/dminuoso)
2021-02-15 10:21:44 +0100dustinm(~dustinm@static.38.6.217.95.clients.your-server.de)
2021-02-15 10:21:45 +0100andjjj23(~irc@107.170.228.47) (Ping timeout: 265 seconds)
2021-02-15 10:21:50 +0100Lord_of_Life(~Lord@unaffiliated/lord-of-life/x-0885362)
2021-02-15 10:21:53 +0100NieDzejkob(~quassel@188.123.215.55)
2021-02-15 10:22:03 +0100andjjj23(~irc@107.170.228.47)
2021-02-15 10:22:15 +0100wagle(~wagle@quassel.wagle.io)
2021-02-15 10:22:22 +0100toorevitimirp(~tooreviti@117.182.183.159) (Remote host closed the connection)
2021-02-15 10:22:42 +0100pfurla(~pfurla@ool-182ed2e2.dyn.optonline.net)
2021-02-15 10:22:53 +0100gareth__(~gareth__@104.236.161.134)
2021-02-15 10:23:21 +0100__monty__(~toonn@unaffiliated/toonn)
2021-02-15 10:23:23 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-02-15 10:28:03 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 246 seconds)
2021-02-15 10:30:08 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-02-15 10:31:06 +0100nhs(~nhs@c-24-20-87-79.hsd1.or.comcast.net)
2021-02-15 10:31:36 +0100danza(~francesco@151.74.111.178)
2021-02-15 10:32:17 +0100rayyyy(~nanoz@gateway/tor-sasl/nanoz)
2021-02-15 10:35:46 +0100tromp(~tromp@dhcp-077-249-230-040.chello.nl) (Remote host closed the connection)
2021-02-15 10:36:04 +0100xff0x(~xff0x@2001:1a81:5334:9d00:4786:d4f7:7834:be51) (Ping timeout: 268 seconds)
2021-02-15 10:36:13 +0100nhs(~nhs@c-24-20-87-79.hsd1.or.comcast.net) (Ping timeout: 272 seconds)
2021-02-15 10:36:24 +0100xff0x(~xff0x@2001:1a81:5334:9d00:2035:d6b3:d6fb:5680)
2021-02-15 10:37:34 +0100rembo10(~rembo10@wally.codeshy.com) (Quit: ZNC 1.8.2 - https://znc.in)
2021-02-15 10:38:01 +0100rembo10(~rembo10@wally.codeshy.com)
2021-02-15 10:40:31 +0100Narinas(~Narinas@189.223.179.61.dsl.dyn.telnor.net) (Read error: Connection reset by peer)
2021-02-15 10:40:45 +0100Narinas(~Narinas@189.223.179.61.dsl.dyn.telnor.net)
2021-02-15 10:46:23 +0100rembo10(~rembo10@wally.codeshy.com) (Quit: ZNC 1.8.2 - https://znc.in)
2021-02-15 10:46:45 +0100fendor(~fendor@178.165.129.143.wireless.dyn.drei.com)
2021-02-15 10:47:51 +0100nhs(~nhs@c-24-20-87-79.hsd1.or.comcast.net)
2021-02-15 10:49:10 +0100rayyyy(~nanoz@gateway/tor-sasl/nanoz) (Ping timeout: 268 seconds)
2021-02-15 10:50:05 +0100rayyyy(~nanoz@gateway/tor-sasl/nanoz)
2021-02-15 10:50:38 +0100rembo10(~rembo10@wally.codeshy.com)
2021-02-15 10:51:50 +0100ulidtko|kk(~ulidtko@194.54.80.38)
2021-02-15 10:52:43 +0100nhs(~nhs@c-24-20-87-79.hsd1.or.comcast.net) (Ping timeout: 268 seconds)
2021-02-15 10:54:12 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-02-15 10:56:05 +0100tromp(~tromp@dhcp-077-249-230-040.chello.nl)
2021-02-15 10:58:45 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 240 seconds)
2021-02-15 10:58:49 +0100Guest_28(8b2f9951@139.47.153.81)
2021-02-15 11:03:14 +0100nhs(~nhs@c-24-20-87-79.hsd1.or.comcast.net)
2021-02-15 11:04:41 +0100p-core(~Thunderbi@2001:718:1e03:5128:3697:eeda:19aa:8e56)
2021-02-15 11:05:16 +0100Rudd0(~Rudd0@185.189.115.103)
2021-02-15 11:05:55 +0100hnOsmium0001(uid453710@gateway/web/irccloud.com/x-kpbpuzyuhnpbsdju) (Quit: Connection closed for inactivity)
2021-02-15 11:07:02 +0100Guest_28(8b2f9951@139.47.153.81) (Quit: Connection closed)
2021-02-15 11:07:54 +0100nhs(~nhs@c-24-20-87-79.hsd1.or.comcast.net) (Ping timeout: 272 seconds)
2021-02-15 11:07:54 +0100_ht(~quassel@82-169-194-8.biz.kpn.net)
2021-02-15 11:15:49 +0100gehmehgeh(~ircuser1@gateway/tor-sasl/gehmehgeh)
2021-02-15 11:18:12 +0100thc202(~thc202@unaffiliated/thc202)
2021-02-15 11:19:11 +0100cole-h(~cole-h@c-73-48-197-220.hsd1.ca.comcast.net) (Ping timeout: 272 seconds)
2021-02-15 11:19:51 +0100edwtjo(~edwtjo@fsf/member/edwtjo) (Ping timeout: 246 seconds)
2021-02-15 11:20:37 +0100rayyyy(~nanoz@gateway/tor-sasl/nanoz) (Ping timeout: 268 seconds)
2021-02-15 11:21:08 +0100nhs(~nhs@c-24-20-87-79.hsd1.or.comcast.net)
2021-02-15 11:23:18 +0100 <tomjaguarpaw> As I understand it, GHC 9.0 requires (unreleased) cabal 3.4. Does anyone know why?
2021-02-15 11:25:01 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-02-15 11:26:02 +0100nhs(~nhs@c-24-20-87-79.hsd1.or.comcast.net) (Ping timeout: 265 seconds)
2021-02-15 11:26:04 +0100haritz(~hrtz@unaffiliated/haritz) (Ping timeout: 256 seconds)
2021-02-15 11:28:38 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9)
2021-02-15 11:28:42 +0100 <merijn> tomjaguarpaw: Why it requires it or why it's unreleased?
2021-02-15 11:28:45 +0100wz1000(~wz1000@static.11.113.47.78.clients.your-server.de) (Ping timeout: 264 seconds)
2021-02-15 11:28:54 +0100 <arahael> I'd assume that GHC 9 is just that new.
2021-02-15 11:29:02 +0100 <tomjaguarpaw> Why it requires it
2021-02-15 11:29:11 +0100 <merijn> tomjaguarpaw: Support, presumably
2021-02-15 11:29:16 +0100 <tomjaguarpaw> I mean, which technical aspect of 3.4 does GHC rely on?
2021-02-15 11:29:22 +0100 <tomjaguarpaw> Support?
2021-02-15 11:29:24 +0100haritz(~hrtz@62.3.70.206)
2021-02-15 11:29:24 +0100haritz(~hrtz@62.3.70.206) (Changing host)
2021-02-15 11:29:24 +0100haritz(~hrtz@unaffiliated/haritz)
2021-02-15 11:29:43 +0100 <tomjaguarpaw> s/does GHC/does GHC 9.0/
2021-02-15 11:29:44 +0100tribble2(~tribble2@unaffiliated/tribble2) (Read error: Connection reset by peer)
2021-02-15 11:29:49 +0100 <merijn> tomjaguarpaw: Consider an other, old example: When cabal-install started using the global store, that required GHC's package database to be hash aware
2021-02-15 11:30:03 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 272 seconds)
2021-02-15 11:30:20 +0100 <merijn> tomjaguarpaw: I think you have causality reversed?
2021-02-15 11:30:29 +0100edwtjo(~edwtjo@fsf/member/edwtjo)
2021-02-15 11:30:42 +0100 <merijn> tomjaguarpaw: GHC 9 presumably does something/exposes an interface that requires new cabal code to deal with
2021-02-15 11:30:51 +0100 <merijn> tomjaguarpaw: So 3.2 and older can't deal with GHC 9
2021-02-15 11:31:19 +0100 <tomjaguarpaw> Ah, could be
2021-02-15 11:31:46 +0100 <tomjaguarpaw> Still, I'd be interested to know what that is
2021-02-15 11:31:54 +0100 <merijn> tomjaguarpaw: When docs says "GHC requires Cabal 3.4" you should interpret it as "older Cabal's don't support this GHC"
2021-02-15 11:34:03 +0100 <merijn> tomjaguarpaw: You'd probably have to ask in #ghc, I don't see anything obvious in the release notes
2021-02-15 11:34:30 +0100 <merijn> In general Cabal doesn't really try to be forward compatible, though. Only backwards compatible
2021-02-15 11:35:25 +0100jpds(~jpds@gateway/tor-sasl/jpds) (Ping timeout: 268 seconds)
2021-02-15 11:35:44 +0100 <merijn> tomjaguarpaw: ah
2021-02-15 11:35:50 +0100 <merijn> tomjaguarpaw: https://github.com/haskell/cabal/blob/master/release-notes/Cabal-3.4.0.0.md
2021-02-15 11:37:23 +0100nhs(~nhs@c-24-20-87-79.hsd1.or.comcast.net)
2021-02-15 11:37:38 +0100haritz(~hrtz@unaffiliated/haritz) (Ping timeout: 265 seconds)
2021-02-15 11:38:11 +0100wz1000(~wz1000@static.11.113.47.78.clients.your-server.de)
2021-02-15 11:38:58 +0100rayyyy(~nanoz@gateway/tor-sasl/nanoz)
2021-02-15 11:41:29 +0100Franciman(~francesco@host-82-49-79-189.retail.telecomitalia.it)
2021-02-15 11:41:36 +0100tsaka__(~torstein@athedsl-258913.home.otenet.gr) (Ping timeout: 240 seconds)
2021-02-15 11:42:19 +0100jpds(~jpds@gateway/tor-sasl/jpds)
2021-02-15 11:42:28 +0100nhs(~nhs@c-24-20-87-79.hsd1.or.comcast.net) (Ping timeout: 265 seconds)
2021-02-15 11:43:06 +0100haritz(~hrtz@62.3.70.206)
2021-02-15 11:43:06 +0100haritz(~hrtz@62.3.70.206) (Changing host)
2021-02-15 11:43:06 +0100haritz(~hrtz@unaffiliated/haritz)
2021-02-15 11:47:11 +0100frozenErebus(~frozenEre@94.128.81.133)
2021-02-15 11:48:08 +0100hal9001`(~user@zz2017405567D30FFCD9.userreverse.dion.ne.jp)
2021-02-15 11:48:33 +0100son0p(~son0p@181.58.39.182)
2021-02-15 11:49:45 +0100hal9001(~user@zz2017405567D30FFCD9.userreverse.dion.ne.jp) (Ping timeout: 240 seconds)
2021-02-15 11:54:48 +0100 <tomjaguarpaw> merijn: Thanks!
2021-02-15 11:55:24 +0100frozenErebus(~frozenEre@94.128.81.133) (Ping timeout: 272 seconds)
2021-02-15 11:55:30 +0100nhs(~nhs@c-24-20-87-79.hsd1.or.comcast.net)
2021-02-15 11:58:37 +0100weikum(~weikum@90.218.153.39) (Quit: Connection error?!)
2021-02-15 12:00:33 +0100nhs(~nhs@c-24-20-87-79.hsd1.or.comcast.net) (Ping timeout: 264 seconds)
2021-02-15 12:05:20 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Quit: Connection closed)
2021-02-15 12:05:41 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9)
2021-02-15 12:05:46 +0100frozenErebus(~frozenEre@94.128.81.133)
2021-02-15 12:07:10 +0100DavidEichmann(~david@234.109.45.217.dyn.plus.net)
2021-02-15 12:07:23 +0100haritz(~hrtz@unaffiliated/haritz) (Ping timeout: 256 seconds)
2021-02-15 12:10:02 +0100dhil(~dhil@80.208.56.181)
2021-02-15 12:11:07 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Ping timeout: 272 seconds)
2021-02-15 12:12:54 +0100 <__monty__> Hmm, this doesn't sound backwards compatible? "build-depends: thispkg:somesublib"
2021-02-15 12:13:15 +0100haritz(~hrtz@62.3.70.206)
2021-02-15 12:13:15 +0100haritz(~hrtz@62.3.70.206) (Changing host)
2021-02-15 12:13:15 +0100haritz(~hrtz@unaffiliated/haritz)
2021-02-15 12:13:21 +0100nhs(~nhs@c-24-20-87-79.hsd1.or.comcast.net)
2021-02-15 12:13:23 +0100 <__monty__> You need to specify the "thispkg" to get the behavior from before 3.4?
2021-02-15 12:14:01 +0100 <__monty__> Why not require the package specifier for external libraries instead? That way things'd be backwards compatible and still solve the issue?
2021-02-15 12:15:10 +0100minoru_shiraeesh(~shiraeesh@46.34.206.33)
2021-02-15 12:17:22 +0100heatsink(~heatsink@2600:1700:bef1:5e10:91f6:aac5:ae3f:98b4)
2021-02-15 12:17:40 +0100irc_user(uid423822@gateway/web/irccloud.com/x-ywgoyvpgklsytbwc) (Quit: Connection closed for inactivity)
2021-02-15 12:17:57 +0100nhs(~nhs@c-24-20-87-79.hsd1.or.comcast.net) (Ping timeout: 246 seconds)
2021-02-15 12:18:58 +0100coot(~coot@37.30.55.141.nat.umts.dynamic.t-mobile.pl) (Quit: coot)
2021-02-15 12:21:33 +0100minoru_shiraeesh(~shiraeesh@46.34.206.33) (Ping timeout: 264 seconds)
2021-02-15 12:21:47 +0100rfc08x001(~quassel@183.215.49.196)
2021-02-15 12:22:14 +0100heatsink(~heatsink@2600:1700:bef1:5e10:91f6:aac5:ae3f:98b4) (Ping timeout: 264 seconds)
2021-02-15 12:22:37 +0100Mrbuck(~Mrbuck@gateway/tor-sasl/mrbuck) (Quit: WeeChat 1.9.1)
2021-02-15 12:29:08 +0100idhugo(~idhugo@80-62-117-86-mobile.dk.customer.tdc.net) (Remote host closed the connection)
2021-02-15 12:29:33 +0100idhugo(~idhugo@80-62-117-86-mobile.dk.customer.tdc.net)
2021-02-15 12:30:29 +0100nhs(~nhs@c-24-20-87-79.hsd1.or.comcast.net)
2021-02-15 12:32:56 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 265 seconds)
2021-02-15 12:33:49 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-02-15 12:34:25 +0100shatriff(~vitaliish@176-52-216-242.irishtelecom.com)
2021-02-15 12:35:12 +0100nhs(~nhs@c-24-20-87-79.hsd1.or.comcast.net) (Ping timeout: 256 seconds)
2021-02-15 12:40:00 +0100frozenErebus(~frozenEre@94.128.81.133) (Ping timeout: 246 seconds)
2021-02-15 12:40:33 +0100Wojciech_K(~wojciechk@2001:41d0:a:5be4::449)
2021-02-15 12:40:47 +0100sord937(~sord937@gateway/tor-sasl/sord937) (Ping timeout: 268 seconds)
2021-02-15 12:41:52 +0100kam1(~kam1@83.123.64.17)
2021-02-15 12:42:22 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9)
2021-02-15 12:43:37 +0100kam1(~kam1@83.123.64.17) (Read error: Connection reset by peer)
2021-02-15 12:43:44 +0100sord937(~sord937@gateway/tor-sasl/sord937)
2021-02-15 12:44:26 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 264 seconds)
2021-02-15 12:44:27 +0100usr25(~usr25@unaffiliated/usr25)
2021-02-15 12:45:08 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-02-15 12:46:10 +0100kam1(~kam1@83.123.64.17)
2021-02-15 12:46:23 +0100nhs(~nhs@c-24-20-87-79.hsd1.or.comcast.net)
2021-02-15 12:47:05 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Ping timeout: 240 seconds)
2021-02-15 12:47:08 +0100idhugo(~idhugo@80-62-117-86-mobile.dk.customer.tdc.net) (Remote host closed the connection)
2021-02-15 12:47:34 +0100idhugo(~idhugo@80.62.117.86)
2021-02-15 12:47:49 +0100kam1(~kam1@83.123.64.17) (Read error: Connection reset by peer)
2021-02-15 12:50:05 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds)
2021-02-15 12:50:19 +0100rfc08x001(~quassel@183.215.49.196) ("https://quassel-irc.org - Chat comfortably. Anywhere.")
2021-02-15 12:50:43 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-02-15 12:50:57 +0100mnrmnaugh(~mnrmnaugh@unaffiliated/mnrmnaugh) (Ping timeout: 264 seconds)
2021-02-15 12:51:08 +0100idhugo(~idhugo@80.62.117.86) (Remote host closed the connection)
2021-02-15 12:51:34 +0100idhugo(~idhugo@80-62-117-86-mobile.dk.customer.tdc.net)
2021-02-15 12:51:35 +0100nhs(~nhs@c-24-20-87-79.hsd1.or.comcast.net) (Ping timeout: 265 seconds)
2021-02-15 12:54:07 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Client Quit)
2021-02-15 12:54:15 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-02-15 12:54:31 +0100 <merijn> __monty__: The cabal file format isn't backwards compatible
2021-02-15 12:54:38 +0100 <merijn> __monty__: cabal-install is
2021-02-15 12:54:58 +0100 <merijn> __monty__: The entire point of versioning the CABAL format is that it allows for backwards incompatible changes
2021-02-15 12:55:13 +0100weikum(~weikum@90.218.153.39)
2021-02-15 12:55:31 +0100mnrmnaugh(~mnrmnaugh@unaffiliated/mnrmnaugh)
2021-02-15 12:55:35 +0100jpds(~jpds@gateway/tor-sasl/jpds) (Ping timeout: 268 seconds)
2021-02-15 12:56:01 +0100 <__monty__> Ah, right.
2021-02-15 12:56:04 +0100 <__monty__> Thanks : )
2021-02-15 12:56:05 +0100 <merijn> __monty__: cabal-install is backwards compatible in that "newer versions will correctly parse packages using old specs"
2021-02-15 12:56:35 +0100 <__monty__> I forgot the cabal version is usually (always?) in the file.
2021-02-15 12:56:43 +0100 <merijn> It's mandatory
2021-02-15 12:57:15 +0100 <merijn> Although legacy syntax lets you put it somewhere other than the start, which required a whole complicated compat scheme :p
2021-02-15 12:57:55 +0100kam1(~kam1@83.123.64.17)
2021-02-15 12:58:06 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9)
2021-02-15 12:58:16 +0100kam1(~kam1@83.123.64.17) (Read error: Connection reset by peer)
2021-02-15 12:58:52 +0100 <merijn> __monty__: See: https://github.com/haskell/cabal/issues/4899
2021-02-15 12:58:53 +0100frozenErebus(~frozenEre@94.128.81.133)
2021-02-15 13:00:13 +0100 <__monty__> Ah, interesting read. Feels similar to protocol or marshalling versioning.
2021-02-15 13:00:31 +0100kam1(~kam1@83.123.64.17)
2021-02-15 13:00:41 +0100 <merijn> Yeah
2021-02-15 13:00:49 +0100 <merijn> There's 2 kinds of formats/protocols
2021-02-15 13:01:07 +0100 <merijn> Those with a version number at the very start and those who wish they'd be smart enough to do that ;)
2021-02-15 13:01:14 +0100kam1(~kam1@83.123.64.17) (Read error: Connection reset by peer)
2021-02-15 13:01:46 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-02-15 13:02:35 +0100Tops2(~Tobias@dyndsl-095-033-017-002.ewe-ip-backbone.de)
2021-02-15 13:02:46 +0100jpds(~jpds@gateway/tor-sasl/jpds)
2021-02-15 13:03:03 +0100 <merijn> Me: I know what I'm doing, I don't need versioning here.
2021-02-15 13:03:16 +0100 <merijn> Also me, 2 years later: FFS, what was I thinking?!?
2021-02-15 13:03:24 +0100nhs(~nhs@c-24-20-87-79.hsd1.or.comcast.net)
2021-02-15 13:04:58 +0100kam1(~kam1@83.123.64.17)
2021-02-15 13:05:32 +0100 <__monty__> Past us are so cocky : )
2021-02-15 13:05:47 +0100kam1(~kam1@83.123.64.17) (Read error: Connection reset by peer)
2021-02-15 13:06:56 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 256 seconds)
2021-02-15 13:07:38 +0100kam1(~kam1@83.123.64.17)
2021-02-15 13:08:00 +0100kam1(~kam1@83.123.64.17) (Read error: Connection reset by peer)
2021-02-15 13:08:52 +0100nhs(~nhs@c-24-20-87-79.hsd1.or.comcast.net) (Ping timeout: 272 seconds)
2021-02-15 13:11:23 +0100plutoniix(~q@184.82.197.199) (Quit: Leaving)
2021-02-15 13:18:03 +0100coot(~coot@37.30.55.141.nat.umts.dynamic.t-mobile.pl)
2021-02-15 13:18:05 +0100heatsink(~heatsink@2600:1700:bef1:5e10:91f6:aac5:ae3f:98b4)
2021-02-15 13:18:51 +0100kmein(~weechat@static.173.83.99.88.clients.your-server.de) (Quit: ciao kakao)
2021-02-15 13:19:07 +0100kmein(~weechat@static.173.83.99.88.clients.your-server.de)
2021-02-15 13:19:09 +0100lawr3nce(~lawr3nce@gateway/tor-sasl/lawr3nce)
2021-02-15 13:20:13 +0100nhs(~nhs@c-24-20-87-79.hsd1.or.comcast.net)
2021-02-15 13:22:26 +0100heatsink(~heatsink@2600:1700:bef1:5e10:91f6:aac5:ae3f:98b4) (Ping timeout: 240 seconds)
2021-02-15 13:25:25 +0100nhs(~nhs@c-24-20-87-79.hsd1.or.comcast.net) (Ping timeout: 265 seconds)
2021-02-15 13:25:26 +0100wilkie(~wilkie@185.163.110.108) (Remote host closed the connection)
2021-02-15 13:29:08 +0100geowiesnot(~user@87-89-181-157.abo.bbox.fr)
2021-02-15 13:30:08 +0100idhugo(~idhugo@80-62-117-86-mobile.dk.customer.tdc.net) (Remote host closed the connection)
2021-02-15 13:30:36 +0100idhugo(~idhugo@80-62-117-86-mobile.dk.customer.tdc.net)
2021-02-15 13:32:40 +0100boxscape(4ff0baf3@gateway/web/cgi-irc/kiwiirc.com/ip.79.240.186.243)
2021-02-15 13:35:00 +0100tsaka__(~torstein@2a02:587:1b14:d00:5ec3:abec:812c:b3e2)
2021-02-15 13:35:42 +0100kam1(~kam1@83.123.64.17)
2021-02-15 13:36:06 +0100Moe_Epsilon(~Moe_Epsil@195.140.213.38)
2021-02-15 13:36:14 +0100kam1(~kam1@83.123.64.17) (Read error: Connection reset by peer)
2021-02-15 13:36:48 +0100nhs(~nhs@c-24-20-87-79.hsd1.or.comcast.net)
2021-02-15 13:37:22 +0100kam1(~kam1@83.123.64.17)
2021-02-15 13:37:50 +0100kam1(~kam1@83.123.64.17) (Read error: Connection reset by peer)
2021-02-15 13:41:51 +0100nhs(~nhs@c-24-20-87-79.hsd1.or.comcast.net) (Ping timeout: 265 seconds)
2021-02-15 13:44:32 +0100olligobber(olligobber@gateway/vpn/privateinternetaccess/olligobber) (Remote host closed the connection)
2021-02-15 13:45:44 +0100Tario(~Tario@201.192.165.173)
2021-02-15 13:51:24 +0100usr25(~usr25@unaffiliated/usr25) (Read error: Connection reset by peer)
2021-02-15 13:55:03 +0100tremon(~aschuring@217-63-61-89.cable.dynamic.v4.ziggo.nl)
2021-02-15 13:55:26 +0100nhs(~nhs@c-24-20-87-79.hsd1.or.comcast.net)
2021-02-15 13:59:24 +0100lawr3nce(~lawr3nce@gateway/tor-sasl/lawr3nce) (Quit: Leaving)
2021-02-15 14:00:09 +0100nhs(~nhs@c-24-20-87-79.hsd1.or.comcast.net) (Ping timeout: 256 seconds)
2021-02-15 14:03:18 +0100LKoen_(~LKoen@96.252.88.92.rev.sfr.net)
2021-02-15 14:05:18 +0100LKoen(~LKoen@96.252.88.92.rev.sfr.net) (Ping timeout: 256 seconds)
2021-02-15 14:07:18 +0100machinedgod(~machinedg@135-23-192-217.cpe.pppoe.ca)
2021-02-15 14:08:06 +0100bitmagie(~Thunderbi@200116b806b8a300e0c422df71fa9953.dip.versatel-1u1.de)
2021-02-15 14:09:17 +0100sagax(~sagax_nb@213.138.71.146) (Remote host closed the connection)
2021-02-15 14:12:10 +0100nhs(~nhs@c-24-20-87-79.hsd1.or.comcast.net)
2021-02-15 14:12:56 +0100frozenErebus(~frozenEre@94.128.81.133) (Ping timeout: 240 seconds)
2021-02-15 14:14:08 +0100geekosaur(82650c7a@130.101.12.122)
2021-02-15 14:16:57 +0100nhs(~nhs@c-24-20-87-79.hsd1.or.comcast.net) (Ping timeout: 246 seconds)
2021-02-15 14:18:48 +0100heatsink(~heatsink@2600:1700:bef1:5e10:91f6:aac5:ae3f:98b4)
2021-02-15 14:19:12 +0100Sheilong(uid293653@gateway/web/irccloud.com/x-ptedpsphubsivqqo)
2021-02-15 14:19:48 +0100geowiesnot(~user@87-89-181-157.abo.bbox.fr) (Ping timeout: 272 seconds)
2021-02-15 14:22:14 +0100sagax(~sagax_nb@213.138.71.146)
2021-02-15 14:24:02 +0100heatsink(~heatsink@2600:1700:bef1:5e10:91f6:aac5:ae3f:98b4) (Ping timeout: 264 seconds)
2021-02-15 14:24:08 +0100pavonia(~user@unaffiliated/siracusa)
2021-02-15 14:25:24 +0100son0p(~son0p@181.58.39.182) (Quit: Lost terminal)
2021-02-15 14:29:58 +0100zebrag(~inkbottle@aaubervilliers-654-1-119-56.w86-198.abo.wanadoo.fr)
2021-02-15 14:30:00 +0100nhs(~nhs@c-24-20-87-79.hsd1.or.comcast.net)
2021-02-15 14:30:04 +0100son0p(~son0p@181.58.39.182)
2021-02-15 14:32:17 +0100bitmagie(~Thunderbi@200116b806b8a300e0c422df71fa9953.dip.versatel-1u1.de) (Quit: bitmagie)
2021-02-15 14:34:27 +0100tromp(~tromp@dhcp-077-249-230-040.chello.nl) (Remote host closed the connection)
2021-02-15 14:34:48 +0100nhs(~nhs@c-24-20-87-79.hsd1.or.comcast.net) (Ping timeout: 246 seconds)
2021-02-15 14:36:38 +0100idhugo(~idhugo@80-62-117-86-mobile.dk.customer.tdc.net) (Remote host closed the connection)
2021-02-15 14:37:02 +0100idhugo(~idhugo@80-62-117-86-mobile.dk.customer.tdc.net)
2021-02-15 14:40:25 +0100rayyyy(~nanoz@gateway/tor-sasl/nanoz) (Ping timeout: 268 seconds)
2021-02-15 14:41:27 +0100Noldorin(~noldorin@unaffiliated/noldorin)
2021-02-15 14:44:08 +0100 <dminuoso> Is there a reason fromList from containers replaces an already existing item?
2021-02-15 14:44:23 +0100 <dminuoso> % Data.Set.fromList [F 1 "foo", F 1 "bar"] -- Here Eq/Ord is defined on the first field only
2021-02-15 14:44:23 +0100 <yahb> dminuoso: fromList [F {foo = 1, bar = "bar"}]
2021-02-15 14:45:01 +0100shutdown_-h_now(~arjan@2001:1c06:2d0b:2312:40b3:9495:b829:f8f6) (Ping timeout: 272 seconds)
2021-02-15 14:46:38 +0100idhugo(~idhugo@80-62-117-86-mobile.dk.customer.tdc.net) (Remote host closed the connection)
2021-02-15 14:47:06 +0100idhugo(~idhugo@80-62-117-86-mobile.dk.customer.tdc.net)
2021-02-15 14:48:08 +0100nhs(~nhs@c-24-20-87-79.hsd1.or.comcast.net)
2021-02-15 14:50:44 +0100shutdown_-h_now(~arjan@2001:1c06:2d0b:2312:e4b5:89f2:f8c9:6ba7)
2021-02-15 14:52:15 +0100tromp(~tromp@dhcp-077-249-230-040.chello.nl)
2021-02-15 14:52:26 +0100rayyyy(~nanoz@gateway/tor-sasl/nanoz)
2021-02-15 14:53:22 +0100nhs(~nhs@c-24-20-87-79.hsd1.or.comcast.net) (Ping timeout: 272 seconds)
2021-02-15 14:54:35 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Quit: Connection closed)
2021-02-15 14:55:04 +0100 <merijn> dminuoso: Because you are violating the assumption of Ord being a total order?
2021-02-15 14:56:13 +0100 <merijn> Map has a defined behaviour for duplicate keys, because duplicate keys with different values need some sort of logical handling
2021-02-15 14:56:32 +0100 <merijn> dminuoso: There's no reason for Set to account for that because equal elements are, well, equal?
2021-02-15 14:56:47 +0100 <dminuoso> merijn: Its not a complaint, I was just curious.
2021-02-15 14:57:04 +0100jpds(~jpds@gateway/tor-sasl/jpds) (Remote host closed the connection)
2021-02-15 14:57:09 +0100 <dminuoso> Im just using Set for a quick sorted nubOrd
2021-02-15 14:57:25 +0100 <dminuoso> (I cant keep sets, because I need ordered lists shortly afterwards again)
2021-02-15 14:57:26 +0100 <merijn> dminuoso: It's presumably an artifact of fromList having a linear time on sorted input?
2021-02-15 14:57:49 +0100 <dminuoso> Ah
2021-02-15 14:58:00 +0100Deide(~Deide@217.155.19.23)
2021-02-15 14:59:41 +0100 <dminuoso> merijn: Nevermind, I think I found it. It seems because in the un-ordered case, it does a simple `foldl'`
2021-02-15 14:59:42 +0100dhouthoo(~dhouthoo@ptr-eitgbj2w0uu6delkbrh.18120a2.ip6.access.telenet.be)
2021-02-15 15:00:48 +0100alx741(~alx741@186.178.108.16) (Quit: alx741)
2021-02-15 15:01:51 +0100jpds(~jpds@gateway/tor-sasl/jpds)
2021-02-15 15:03:46 +0100coot(~coot@37.30.55.141.nat.umts.dynamic.t-mobile.pl) (Quit: coot)
2021-02-15 15:04:11 +0100Sgeo(~Sgeo@ool-18b98aa4.dyn.optonline.net)
2021-02-15 15:04:13 +0100nhs(~nhs@c-24-20-87-79.hsd1.or.comcast.net)
2021-02-15 15:04:45 +0100raehik1(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 272 seconds)
2021-02-15 15:06:07 +0100raehik1(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
2021-02-15 15:08:30 +0100carlomagno(~cararell@148.87.23.11)
2021-02-15 15:08:36 +0100nhs(~nhs@c-24-20-87-79.hsd1.or.comcast.net) (Ping timeout: 240 seconds)
2021-02-15 15:14:42 +0100geekosaur(82650c7a@130.101.12.122) (Ping timeout: 240 seconds)
2021-02-15 15:15:34 +0100jpds(~jpds@gateway/tor-sasl/jpds) (Ping timeout: 268 seconds)
2021-02-15 15:16:28 +0100geekosaur(82650c7a@130.101.12.122)
2021-02-15 15:21:06 +0100xelxebar_(~xelxebar@gateway/tor-sasl/xelxebar)
2021-02-15 15:21:07 +0100xelxebar(~xelxebar@gateway/tor-sasl/xelxebar) (Ping timeout: 268 seconds)
2021-02-15 15:21:20 +0100nhs(~nhs@c-24-20-87-79.hsd1.or.comcast.net)
2021-02-15 15:25:18 +0100rdivyanshu(uid322626@gateway/web/irccloud.com/x-khsbgkvcrzwdbncz)
2021-02-15 15:25:38 +0100frozenErebus(~frozenEre@94.128.81.133)
2021-02-15 15:26:18 +0100nhs(~nhs@c-24-20-87-79.hsd1.or.comcast.net) (Ping timeout: 272 seconds)
2021-02-15 15:26:47 +0100jpds(~jpds@gateway/tor-sasl/jpds)
2021-02-15 15:30:05 +0100takuan(~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection)
2021-02-15 15:32:55 +0100bnbgg_(uid454564@gateway/web/irccloud.com/x-wmmvfcpjvawodsxk)
2021-02-15 15:36:52 +0100coot(~coot@37.30.55.141.nat.umts.dynamic.t-mobile.pl)
2021-02-15 15:37:07 +0100urodna(~urodna@unaffiliated/urodna)
2021-02-15 15:38:14 +0100nhs(~nhs@c-24-20-87-79.hsd1.or.comcast.net)
2021-02-15 15:41:20 +0100shatriff(~vitaliish@176-52-216-242.irishtelecom.com) (Remote host closed the connection)
2021-02-15 15:41:36 +0100shatriff(~vitaliish@176-52-216-242.irishtelecom.com)
2021-02-15 15:42:56 +0100shatriff(~vitaliish@176-52-216-242.irishtelecom.com) (Remote host closed the connection)
2021-02-15 15:43:05 +0100mimi_vx(~mimi@2a01:490:16:1026:54d:93e0:a239:fb65) (Quit: WeeChat 3.0.1)
2021-02-15 15:43:20 +0100nhs(~nhs@c-24-20-87-79.hsd1.or.comcast.net) (Ping timeout: 256 seconds)
2021-02-15 15:47:28 +0100zebrag(~inkbottle@aaubervilliers-654-1-119-56.w86-198.abo.wanadoo.fr) (Quit: Konversation terminated!)
2021-02-15 15:47:47 +0100zebrag(~inkbottle@aaubervilliers-654-1-119-56.w86-198.abo.wanadoo.fr)
2021-02-15 15:53:10 +0100Wuzzy(~Wuzzy@p5b0df671.dip0.t-ipconnect.de)
2021-02-15 15:54:11 +0100nhs(~nhs@c-24-20-87-79.hsd1.or.comcast.net)
2021-02-15 15:54:51 +0100geekosaur(82650c7a@130.101.12.122) (Quit: Connection closed)
2021-02-15 15:58:16 +0100raym(~ray@45.64.220.98) (Quit: leaving)
2021-02-15 15:58:31 +0100raym(~ray@45.64.220.98)
2021-02-15 15:58:45 +0100nhs(~nhs@c-24-20-87-79.hsd1.or.comcast.net) (Ping timeout: 240 seconds)
2021-02-15 15:59:05 +0100mud(~mud@unaffiliated/kadoban) (Ping timeout: 240 seconds)
2021-02-15 16:01:39 +0100elfets(~elfets@ip-37-201-23-96.hsi13.unitymediagroup.de)
2021-02-15 16:01:54 +0100kritzefitz(~kritzefit@fw-front.credativ.com) (Remote host closed the connection)
2021-02-15 16:02:24 +0100caubert(~caubert@207.246.80.112) (Ping timeout: 272 seconds)
2021-02-15 16:02:33 +0100ep1ctetus(~epictetus@ip72-194-215-136.sb.sd.cox.net)
2021-02-15 16:03:20 +0100p-core(~Thunderbi@2001:718:1e03:5128:3697:eeda:19aa:8e56) (Read error: Connection reset by peer)
2021-02-15 16:03:38 +0100p-core(~Thunderbi@2001:718:1e03:5128:3697:eeda:19aa:8e56)
2021-02-15 16:04:38 +0100idhugo(~idhugo@80-62-117-86-mobile.dk.customer.tdc.net) (Remote host closed the connection)
2021-02-15 16:05:04 +0100idhugo(~idhugo@80-62-117-86-mobile.dk.customer.tdc.net)
2021-02-15 16:10:47 +0100nhs(~nhs@c-24-20-87-79.hsd1.or.comcast.net)
2021-02-15 16:14:13 +0100 <zebrag> I struggle figuring what would be the counit-epsilon with free/forgetful adjunction with monoids. The unit-eta is `return` of the list-monad. And epsilon is not a morphism in Hask. And then I'm stuck.
2021-02-15 16:14:34 +0100idhugo_(~idhugo@130.225.16.16)
2021-02-15 16:15:02 +0100jneira(501ca940@gateway/web/cgi-irc/kiwiirc.com/ip.80.28.169.64)
2021-02-15 16:15:13 +0100 <zebrag> Even the "take underlying set" operation, I'm not sure of.
2021-02-15 16:15:16 +0100nhs(~nhs@c-24-20-87-79.hsd1.or.comcast.net) (Ping timeout: 240 seconds)
2021-02-15 16:15:54 +0100 <zebrag> Is zero part of the underlying set?
2021-02-15 16:16:56 +0100idhugo(~idhugo@80-62-117-86-mobile.dk.customer.tdc.net) (Ping timeout: 240 seconds)
2021-02-15 16:18:08 +0100idhugo_(~idhugo@130.225.16.16) (Remote host closed the connection)
2021-02-15 16:18:35 +0100idhugo_(~idhugo@130.225.16.16)
2021-02-15 16:19:02 +0100idhugo_(~idhugo@130.225.16.16) (Max SendQ exceeded)
2021-02-15 16:19:34 +0100idhugo_(~idhugo@130.225.16.16)
2021-02-15 16:20:06 +0100heatsink(~heatsink@2600:1700:bef1:5e10:91f6:aac5:ae3f:98b4)
2021-02-15 16:20:07 +0100geowiesnot(~user@i15-les02-ix2-87-89-181-157.sfr.lns.abo.bbox.fr)
2021-02-15 16:21:33 +0100frozenErebus(~frozenEre@94.128.81.133) (Ping timeout: 246 seconds)
2021-02-15 16:24:26 +0100nhs(~nhs@c-24-20-87-79.hsd1.or.comcast.net)
2021-02-15 16:24:56 +0100 <dminuoso> zebrag: "take the underlying set of a structure" is meant in a handwavy/suggestive sense.
2021-02-15 16:25:14 +0100heatsink(~heatsink@2600:1700:bef1:5e10:91f6:aac5:ae3f:98b4) (Ping timeout: 264 seconds)
2021-02-15 16:25:32 +0100 <dminuoso> or perhaps, if you read the wiki article, then something else is meant
2021-02-15 16:25:37 +0100 <merijn> All of Hask is handwavy and suggestive :p
2021-02-15 16:26:08 +0100 <dminuoso> zebrag: If you were referring to the wiki article, then it means something along the lines of "a forgetful functor" takes a monoid to just a set.
2021-02-15 16:26:13 +0100 <zebrag> I don't see something obvious from `[Int]` to `Int`, where `Int` is natural number monoid with plus and zero. The problem is with `[]` and `[0]`, they will be mapped to the same element
2021-02-15 16:26:26 +0100 <dminuoso> (a monoid is a set with some extra "structure", and the forgetful functor forgets about that "extra structure")
2021-02-15 16:26:53 +0100 <dminuoso> zebrag: Yeah you need to think bigger here.
2021-02-15 16:27:16 +0100 <zebrag> My best guess is `[]` is not part of the free monoid generated from `Int`
2021-02-15 16:27:25 +0100 <dminuoso> zebrag: Start off, perhaps, with the categories Set (where objects are sets and morphisms are functions between sets) and Mon (where objects are monoids, and arrows are monoid homomorphisms)
2021-02-15 16:28:43 +0100kam1(~kam1@83.123.64.17)
2021-02-15 16:29:21 +0100nhs(~nhs@c-24-20-87-79.hsd1.or.comcast.net) (Ping timeout: 264 seconds)
2021-02-15 16:29:26 +0100p-core(~Thunderbi@2001:718:1e03:5128:3697:eeda:19aa:8e56) (Quit: p-core)
2021-02-15 16:29:45 +0100kam1(~kam1@83.123.64.17) (Read error: Connection reset by peer)
2021-02-15 16:30:55 +0100Jd007(~Jd007@162.156.11.151)
2021-02-15 16:31:40 +0100m0rphism1(~m0rphism@HSI-KBW-085-216-104-059.hsi.kabelbw.de)
2021-02-15 16:33:14 +0100maier(~maier@i59F67B70.versanet.de)
2021-02-15 16:34:28 +0100 <zebrag> epsilon seems to be a sort of eval function, from https://unapologetic.wordpress.com/2007/07/17/the-unit-and-counit-of-an-adjunction/
2021-02-15 16:34:41 +0100 <zebrag> I'll stick to that for the present and move on
2021-02-15 16:34:57 +0100 <zebrag> Thanks a lot for the help
2021-02-15 16:36:31 +0100cr3(~cr3@192-222-143-195.qc.cable.ebox.net)
2021-02-15 16:38:28 +0100kam1(~kam1@83.123.64.17)
2021-02-15 16:39:37 +0100notzmv`notzmv
2021-02-15 16:39:52 +0100notzmv(~user@191.13.168.188) (Changing host)
2021-02-15 16:39:52 +0100notzmv(~user@unaffiliated/zmv)
2021-02-15 16:39:57 +0100caubert(~caubert@136.244.111.235)
2021-02-15 16:40:04 +0100deviantfero(~deviantfe@190.150.27.58)
2021-02-15 16:40:22 +0100jamm_(~jamm@unaffiliated/jamm)
2021-02-15 16:40:38 +0100vicfred(~vicfred@unaffiliated/vicfred)
2021-02-15 16:40:53 +0100nhs(~nhs@c-24-20-87-79.hsd1.or.comcast.net)
2021-02-15 16:41:05 +0100berberman(~berberman@unaffiliated/berberman) (Quit: ZNC 1.8.2 - https://znc.in)
2021-02-15 16:41:46 +0100berberman(~berberman@unaffiliated/berberman)
2021-02-15 16:43:07 +0100minoru_shiraeesh(~shiraeesh@46.34.207.245)
2021-02-15 16:46:00 +0100nhs(~nhs@c-24-20-87-79.hsd1.or.comcast.net) (Ping timeout: 265 seconds)
2021-02-15 16:47:28 +0100zebrag(~inkbottle@aaubervilliers-654-1-119-56.w86-198.abo.wanadoo.fr) (Quit: Konversation terminated!)
2021-02-15 16:47:47 +0100zebrag(~inkbottle@aaubervilliers-654-1-119-56.w86-198.abo.wanadoo.fr)
2021-02-15 16:48:51 +0100Sgeo(~Sgeo@ool-18b98aa4.dyn.optonline.net) (Ping timeout: 246 seconds)
2021-02-15 16:49:18 +0100rayyyy(~nanoz@gateway/tor-sasl/nanoz) (Ping timeout: 268 seconds)
2021-02-15 16:50:37 +0100frozenErebus(~frozenEre@94.128.81.133)
2021-02-15 16:54:50 +0100 <maerwald> any streamly experts know how to do: t m [a] -> t m a?
2021-02-15 16:55:22 +0100 <Franciman> something like
2021-02-15 16:55:30 +0100 <Franciman> yield
2021-02-15 16:55:34 +0100 <sshine> if I'm doing 'stack install', that places a binary executable in ~/.local/bin, but what if that program depends on a textfile, e.g. one you might have placed in /usr/local/share, is there a way to install non-executable files into some common location? maybe ~/.local/share?
2021-02-15 16:55:35 +0100 <Franciman> ?
2021-02-15 16:55:39 +0100 <Franciman> i.e.
2021-02-15 16:55:42 +0100 <Franciman> supposing it is a monad
2021-02-15 16:55:49 +0100 <Franciman> res <- stream
2021-02-15 16:55:57 +0100 <Franciman> yield for each res
2021-02-15 16:56:06 +0100 <maerwald> yield :: IsStream t => a -> t m a
2021-02-15 16:56:09 +0100cr3(~cr3@192-222-143-195.qc.cable.ebox.net) (Ping timeout: 265 seconds)
2021-02-15 16:56:10 +0100 <maerwald> I cannot follow
2021-02-15 16:56:18 +0100 <Franciman> ah it is a real lib
2021-02-15 16:56:19 +0100 <Franciman> wait
2021-02-15 16:56:23 +0100 <maerwald> yes
2021-02-15 16:56:31 +0100 <Franciman> I was on delphi's 26 years history page
2021-02-15 16:56:52 +0100 <merijn> sshine: data-files should be installed somewhere accessible
2021-02-15 16:57:28 +0100nhs(~nhs@c-24-20-87-79.hsd1.or.comcast.net)
2021-02-15 16:57:58 +0100 <Franciman> :t sequenceA_
2021-02-15 16:57:59 +0100 <lambdabot> (Foldable t, Applicative f) => t (f a) -> f ()
2021-02-15 16:58:01 +0100 <sshine> merijn, I've never tried to distribute an executable, and I've never tried that it depends on another file. I don't suppose 'stack install' is really a favorite package manager for non-developers, so maybe one wants to think of other installation mechanisms, kinda like how pandoc gets bundled with OS package managers. but at the same time, I really just want a simplest possible solution.
2021-02-15 16:58:08 +0100idhugo_(~idhugo@130.225.16.16) (Ping timeout: 256 seconds)
2021-02-15 16:58:11 +0100 <Franciman> :t sequenceA
2021-02-15 16:58:12 +0100 <lambdabot> (Traversable t, Applicative f) => t (f a) -> f (t a)
2021-02-15 16:58:24 +0100 <Franciman> ok, I don't know
2021-02-15 16:59:07 +0100 <merijn> sshine: tbh, stack doesn't really have an interface for packaging things for, say, OS package managers
2021-02-15 16:59:33 +0100 <sshine> merijn, so I could do a PPA for Ubuntu, and I could use AUR for Arch... but eh. I think some people use npm/npx simply because that's something a lot of people have? E.g. Elm and PureScript use that, IIRC?
2021-02-15 16:59:34 +0100 <merijn> sshine: That's what the Setup.hs interface to Cabal (note: not cabal-install) is intended for
2021-02-15 16:59:34 +0100goepsilongo(~goepsilon@2603-7000-ab00-62ed-0000-0000-0000-0c67.res6.spectrum.com)
2021-02-15 16:59:48 +0100 <Franciman> maerwald, what is the type of yield x >> yield x ?
2021-02-15 17:00:18 +0100 <sshine> merijn, ah. so Setup.hs is the installer. I've literally ignored that file for years. :-D
2021-02-15 17:00:22 +0100 <merijn> sshine: The way to access read-only data from code is: https://cabal.readthedocs.io/en/latest/cabal-package.html#accessing-data-files-from-package-code
2021-02-15 17:00:38 +0100 <sshine> merijn, thx!
2021-02-15 17:00:43 +0100 <maerwald> Franciman: yield creates a singleton stream
2021-02-15 17:00:47 +0100 <merijn> sshine: Well, it's not so much an installer as it is "the interface that packagers wrap to control installation"
2021-02-15 17:01:14 +0100 <Franciman> if you do yielad x >> yield x, do you get a stream returning two items?
2021-02-15 17:01:26 +0100 <maerwald> you can also just include static data files in your binary
2021-02-15 17:01:36 +0100 <maerwald> that's pretty popular in rust for example
2021-02-15 17:01:39 +0100 <merijn> sshine: Setup.hs exposes a flag to specify the target directory for data files and the Paths_<x> interface makes sure the runtime code gets access to that compile time path
2021-02-15 17:02:03 +0100 <sshine> merijn, you're being very helpful. thanks.
2021-02-15 17:02:06 +0100nhs(~nhs@c-24-20-87-79.hsd1.or.comcast.net) (Ping timeout: 256 seconds)
2021-02-15 17:02:37 +0100 <merijn> sshine: So if you instal via stack/cabal-install your code will access the default locations ~/.cabal/store/.../your-package and whatever stack uses
2021-02-15 17:02:58 +0100 <merijn> sshine: If someone creates a distro package using Setup.hs then your code will use whatever they specify during packaging
2021-02-15 17:03:04 +0100nhs(~nhs@c-24-20-87-79.hsd1.or.comcast.net)
2021-02-15 17:03:12 +0100 <Franciman> merijn, is the Setup.hs a standardized thing?
2021-02-15 17:03:50 +0100 <sshine> Franciman, it's in the Cabal package which both `stack` and `cabal-install` use, so sorta.
2021-02-15 17:04:07 +0100 <merijn> Franciman: Setup.hs *is* the spec of CABAL (in the sense of #1 here: https://gist.github.com/merijn/8152d561fb8b011f9313c48d876ceb07)
2021-02-15 17:04:33 +0100 <Franciman> tusen takk
2021-02-15 17:04:51 +0100ep1ctetus(~epictetus@ip72-194-215-136.sb.sd.cox.net) (Ping timeout: 265 seconds)
2021-02-15 17:05:20 +0100 <merijn> Franciman: See also: https://cabal.readthedocs.io/en/latest/setup-commands.html
2021-02-15 17:05:56 +0100 <Franciman> I want to create my own package manager
2021-02-15 17:05:57 +0100 <maerwald> I don't see where Setup.hs is *specced*
2021-02-15 17:06:09 +0100goepsilongo(~goepsilon@2603-7000-ab00-62ed-0000-0000-0000-0c67.res6.spectrum.com) (Quit: WeeChat 3.0)
2021-02-15 17:06:17 +0100 <Franciman> and have a universal way of building
2021-02-15 17:06:22 +0100 <Franciman> so Setup.hs is cool
2021-02-15 17:06:26 +0100 <Franciman> ty
2021-02-15 17:07:06 +0100 <maerwald> it looks implementation defined to me
2021-02-15 17:08:09 +0100 <merijn> maerwald: Currently, yes, because no one has kept the original spec up to date, afaik
2021-02-15 17:08:17 +0100 <merijn> maerwald: The original is here: https://www.haskell.org/cabal/proposal/pkg-spec.pdf
2021-02-15 17:08:19 +0100 <Franciman> is it my understanding that cabal-install is just a build system?
2021-02-15 17:08:22 +0100 <Franciman> and not a package manager?
2021-02-15 17:08:44 +0100 <maerwald> those terms are not as well defined as you might want anyway
2021-02-15 17:08:58 +0100 <sshine> Franciman, https://gist.github.com/merijn/8152d561fb8b011f9313c48d876ceb07 :-D
2021-02-15 17:09:56 +0100 <maerwald> cabal-install is more of a package manager, since it's the cli tool
2021-02-15 17:10:20 +0100 <maerwald> the build system is .cabal file format (and Setup.hs etc)
2021-02-15 17:10:33 +0100 <maerwald> thank god we have the same name for 5 different things
2021-02-15 17:10:57 +0100 <Franciman> :)
2021-02-15 17:11:08 +0100 <sshine> maerwald, you mean cabal, cabal-install, Cabal, CABAL, and The Haskell Cabal? :-D
2021-02-15 17:11:34 +0100 <sshine> wait, .cabal.
2021-02-15 17:11:48 +0100 <Franciman> ok I understand
2021-02-15 17:11:50 +0100 <Franciman> ty
2021-02-15 17:12:04 +0100 <sshine> I like how you said "I understand" after I just mentioned 6 things that are all named the same, haha.
2021-02-15 17:12:36 +0100 <maerwald> it means "ok, shut up, I'm back to netflix", but in a polite way :)
2021-02-15 17:12:59 +0100 <maerwald> also, cabal.project... what is that?
2021-02-15 17:13:10 +0100 <maerwald> now its cabal. instead of .cabal
2021-02-15 17:13:24 +0100 <Franciman> LOL
2021-02-15 17:13:41 +0100 <maerwald> "how do we name project files...?" hmmm
2021-02-15 17:13:43 +0100 <Franciman> nono I was finishing the reading of your comments
2021-02-15 17:13:55 +0100 <merijn> maerwald: Well, do you have a better name?
2021-02-15 17:14:07 +0100 <merijn> Naming thing's hard >.>
2021-02-15 17:14:08 +0100 <Franciman> stack.yaml
2021-02-15 17:14:12 +0100 <maerwald> merijn: cabal.yaml
2021-02-15 17:14:12 +0100 <Franciman> *flame starts*
2021-02-15 17:14:21 +0100frozenErebus(~frozenEre@94.128.81.133) (Ping timeout: 264 seconds)
2021-02-15 17:14:28 +0100 <merijn> YAML is never better than anything
2021-02-15 17:14:37 +0100 <sshine> maerwald, we definitely need two different project files, foo.cabal and cabal.project, that work slightly differently. also, we want package.json and stack.yaml, just so we have Cabal (the file format), YAML *and* JSON.
2021-02-15 17:14:41 +0100 <merijn> YAML is a *god* awful format
2021-02-15 17:14:57 +0100 <maerwald> sshine: my brain shut off half way through your sentence, but I agree :D
2021-02-15 17:15:19 +0100sshinelooks around the room for obligatory Dhall remark.
2021-02-15 17:15:25 +0100 <merijn> sshine: "work slightly differently"? In what way is the function of cabal.project and .cabal remotely related?
2021-02-15 17:15:43 +0100 <maerwald> merijn: ah, it's marvellous, you can specify ghc options in both
2021-02-15 17:15:54 +0100 <merijn> maerwald: Sure. So?
2021-02-15 17:15:55 +0100 <maerwald> and let the user figure out which one is active in what circumtance
2021-02-15 17:15:57 +0100 <Franciman> I think the best format is Scheme
2021-02-15 17:15:59 +0100 <Franciman> _change my mind_
2021-02-15 17:16:18 +0100 <merijn> maerwald: Users should never deal with cabal.project
2021-02-15 17:16:20 +0100 <sshine> merijn, I have no idea! I just read the docs saying "The general syntax of a cabal.project file is similar to that of a Cabal file: there are a number of fields, some of which live inside stanzas: ..." and assumed they live in the same domain and share syntax 🤷
2021-02-15 17:16:24 +0100 <merijn> If they are, that's on you
2021-02-15 17:16:33 +0100 <maerwald> merijn: I'm a user
2021-02-15 17:16:40 +0100 <Franciman> lulz
2021-02-15 17:16:52 +0100 <sshine> merijn, it's just funny: cabal.project isn't a Cabal file? :-D
2021-02-15 17:16:59 +0100 <sshine> who's on first base?
2021-02-15 17:17:18 +0100 <merijn> sshine: The distinction is this: .cabal files specify a package/how to build, in the abstract sense for long term packaging (like Hackage)
2021-02-15 17:17:46 +0100 <maerwald> sshine: yeah, they basically invented 3 new file extensions: project, freeze and local
2021-02-15 17:17:50 +0100 <maerwald> and none of them make much sense
2021-02-15 17:17:55 +0100 <merijn> sshine: cabal.project is a file that specify "a specific build setup on a specific machine" (i.e. it is for developers of a package, not users)
2021-02-15 17:18:31 +0100 <dcoutts> One has to remember that there are two roles: package author and package builder. Sometimes you're one person filling both roles, but often they're different people.
2021-02-15 17:18:53 +0100 <merijn> sshine: As developer tool/environment, cabal.project lets you override/change/whatever the details of the .cabal file in ways that are useful/good for *developers* but not for *users*
2021-02-15 17:19:26 +0100 <maerwald> merijn: in reality, users (builders) will make use of cabal.project as well
2021-02-15 17:19:29 +0100 <merijn> sshine: For example, as a package developer, I may want my unreleased development version to depend on other unreleased development versions
2021-02-15 17:19:57 +0100 <dcoutts> Package builders use the project file. Package authors use the package file. If you fill both roles you'll use both.
2021-02-15 17:20:16 +0100 <merijn> sshine: Which is what cabal.project lets you do, but .cabal won't, because depending on unreleased packages is obviously not something that makes sense for users of a package
2021-02-15 17:20:46 +0100 <maerwald> merijn: you're assuming that hackage works and doesn't require you to constantly fork stuff
2021-02-15 17:21:25 +0100goepsilongo(~goepsilon@2603-7000-ab00-62ed-0000-0000-0000-0c67.res6.spectrum.com)
2021-02-15 17:21:38 +0100 <merijn> maerwald: I'm well aware that your approach to Haskell is "fork everything personally and make your own copy", but lots of people don't seem to have that problem.
2021-02-15 17:21:45 +0100 <merijn> maerwald: I'm not assuming anything
2021-02-15 17:21:46 +0100 <maerwald> merijn: erm no
2021-02-15 17:22:02 +0100 <merijn> I'm saying "there's two different roles which have their own file"
2021-02-15 17:22:23 +0100 <maerwald> merijn: I provided PRs to all the libs I used for e.g. ghcup, but most of them never got a reply
2021-02-15 17:22:35 +0100 <maerwald> also see the thread on the ML
2021-02-15 17:22:37 +0100 <maerwald> it's a known issue
2021-02-15 17:22:52 +0100 <sshine> it is a problem. it is kinda demotivating.
2021-02-15 17:24:02 +0100 <merijn> Trying to combat open source maintainer burnout by complaining about unresponsiveness of burned out maintainers seems an interesting strategy, unlikely to succeed :)
2021-02-15 17:24:34 +0100 <sshine> I attended a Perl conference in 2018 or 2019 where, prior to the conference, there had been a hackathon aimed at improving various things. in that hackathon, authors of something like 20-25% of all packages on CPAN were present in one room. I think that is both impressive and scary. I guess we have a different problem in the Haskell package ecosystem :)
2021-02-15 17:24:35 +0100 <maerwald> merijn: that's not what I said. The solution is to appoint co-maintainers before you figure out you're burned out
2021-02-15 17:24:57 +0100 <maerwald> edward does that since years and it works well, other maintainers don't
2021-02-15 17:26:25 +0100 <merijn> maerwald: That problem is entirely orthogonal to tooling, though
2021-02-15 17:26:44 +0100 <maerwald> yeah, I've no idea why we're talking about this
2021-02-15 17:26:50 +0100 <maerwald> :D
2021-02-15 17:27:02 +0100 <merijn> We were talking tooling and different roles, then you complained about Hackage not working and requiring people to fork stuff
2021-02-15 17:27:28 +0100 <merijn> None of which seems relevant to the role separation related to .cabal and cabal.project
2021-02-15 17:27:35 +0100frozenErebus(~frozenEre@94.128.81.133)
2021-02-15 17:27:56 +0100coot(~coot@37.30.55.141.nat.umts.dynamic.t-mobile.pl) (Quit: coot)
2021-02-15 17:28:10 +0100 <maerwald> we're talking en passe, I guess
2021-02-15 17:30:08 +0100 <merijn> maerwald: Well, the only reason behind your comment I can figure out "but I usually have to be both roles", but "I am usually both roles" seems like a poor reason not to separate the concerns of both roles into different files
2021-02-15 17:30:56 +0100 <maerwald> merijn: I wasn't arguing against the separation
2021-02-15 17:31:08 +0100 <maerwald> just pointing out that users are exposed to both, imo
2021-02-15 17:31:23 +0100 <maerwald> in a lot of cases, at least
2021-02-15 17:31:34 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-02-15 17:33:29 +0100borne(~fritjof@200116b864008e00d8bba186ea6b909e.dip.versatel-1u1.de) (Ping timeout: 272 seconds)
2021-02-15 17:33:59 +0100borne(~fritjof@200116b864008e00d8bba186ea6b909e.dip.versatel-1u1.de)
2021-02-15 17:39:46 +0100ixaxaar(~ixaxaar@49.207.197.94)
2021-02-15 17:39:47 +0100Narinas(~Narinas@189.223.179.61.dsl.dyn.telnor.net) (Read error: Connection reset by peer)
2021-02-15 17:40:49 +0100Narinas(~Narinas@189.223.179.61.dsl.dyn.telnor.net)
2021-02-15 17:41:35 +0100LKoen_(~LKoen@96.252.88.92.rev.sfr.net) (Remote host closed the connection)
2021-02-15 17:42:05 +0100idhugo_(~idhugo@80-62-117-97-mobile.dk.customer.tdc.net)
2021-02-15 17:45:36 +0100idhugo__(~idhugo@130.225.16.16)
2021-02-15 17:45:58 +0100ep1ctetus(~epictetus@ip72-194-215-136.sb.sd.cox.net)
2021-02-15 17:46:22 +0100LKoen(~LKoen@96.252.88.92.rev.sfr.net)
2021-02-15 17:47:28 +0100zebrag(~inkbottle@aaubervilliers-654-1-119-56.w86-198.abo.wanadoo.fr) (Quit: Konversation terminated!)
2021-02-15 17:47:46 +0100zebrag(~inkbottle@aaubervilliers-654-1-119-56.w86-198.abo.wanadoo.fr)
2021-02-15 17:48:00 +0100idhugo_(~idhugo@80-62-117-97-mobile.dk.customer.tdc.net) (Ping timeout: 246 seconds)
2021-02-15 17:48:05 +0100ep1ctetus(~epictetus@ip72-194-215-136.sb.sd.cox.net) (Read error: Connection reset by peer)
2021-02-15 17:48:41 +0100borne(~fritjof@200116b864008e00d8bba186ea6b909e.dip.versatel-1u1.de) (Ping timeout: 272 seconds)
2021-02-15 17:50:02 +0100Sgeo(~Sgeo@ool-18b98aa4.dyn.optonline.net)
2021-02-15 17:50:35 +0100idhugo_(~idhugo@130.225.16.16)
2021-02-15 17:50:47 +0100geekosaur(82650c7a@130.101.12.122)
2021-02-15 17:50:58 +0100ep1ctetus(~epictetus@ip72-194-215-136.sb.sd.cox.net)
2021-02-15 17:51:54 +0100conal(~conal@64.71.133.70)
2021-02-15 17:52:56 +0100idhugo__(~idhugo@130.225.16.16) (Ping timeout: 240 seconds)
2021-02-15 17:53:57 +0100heatsink(~heatsink@2600:1700:bef1:5e10:91f6:aac5:ae3f:98b4)
2021-02-15 17:54:11 +0100 <sshine> merijn, so is the idea that I run e.g. 'stack install --some-param=/usr/local/share' and then getDataDir :: IO FilePath resolves to that?
2021-02-15 17:54:18 +0100nhs(~nhs@c-24-20-87-79.hsd1.or.comcast.net) (Ping timeout: 246 seconds)
2021-02-15 17:56:24 +0100tzh(~tzh@c-24-21-73-154.hsd1.or.comcast.net)
2021-02-15 17:57:02 +0100bitmapper(uid464869@gateway/web/irccloud.com/x-jugdutpahsvcqbpy) (Quit: Connection closed for inactivity)
2021-02-15 17:59:27 +0100ph88(~ph88@2a02:8109:9e00:7e5c:a5f0:7da4:fcd6:f1eb) (Ping timeout: 268 seconds)
2021-02-15 17:59:56 +0100zaquest(~notzaques@5.128.210.178) (Ping timeout: 240 seconds)
2021-02-15 18:02:18 +0100nhs(~nhs@c-24-20-87-79.hsd1.or.comcast.net)
2021-02-15 18:06:51 +0100Nahra(~Nahra@unaffiliated/nahra)
2021-02-15 18:06:59 +0100mupf(~micha@v22017094964653601.ultrasrv.de) (Quit: WeeChat 2.9)
2021-02-15 18:07:29 +0100boristheblade(~boristheb@37-219-251-173.nat.bb.dnainternet.fi)
2021-02-15 18:07:29 +0100mupf(~micha@v22017094964653601.ultrasrv.de)
2021-02-15 18:08:49 +0100conal(~conal@64.71.133.70) (Read error: Connection reset by peer)
2021-02-15 18:10:46 +0100 <gentauro> sshine: «… authors of something like 20-25% ofall packages on CPAN were present in one room …» Isn't it the same for the event in Switzerland done by Jasper?
2021-02-15 18:11:14 +0100nhs(~nhs@c-24-20-87-79.hsd1.or.comcast.net) (Ping timeout: 256 seconds)
2021-02-15 18:11:16 +0100cr3(~cr3@192-222-143-195.qc.cable.ebox.net)
2021-02-15 18:11:30 +0100zaquest(~notzaques@5.128.210.178)
2021-02-15 18:13:23 +0100 <danza> sshine, if you want static files to be shared between different packages, probably the solution is to handle this in your application logic
2021-02-15 18:13:23 +0100gentaurodone by Jasper and many others
2021-02-15 18:14:00 +0100conal(~conal@64.71.133.70)
2021-02-15 18:14:03 +0100 <danza> if you want just to add some static files to be used by a single package, then there is no need for options passed to `stack install`
2021-02-15 18:14:08 +0100 <Franciman> hi danza
2021-02-15 18:14:17 +0100 <danza> hey Franciman :)
2021-02-15 18:14:23 +0100 <Franciman> :)
2021-02-15 18:16:31 +0100coot(~coot@37.30.55.141.nat.umts.dynamic.t-mobile.pl)
2021-02-15 18:17:23 +0100maier(~maier@i59F67B70.versanet.de) (Quit: Lost terminal)
2021-02-15 18:19:06 +0100bitmagie(~Thunderbi@200116b806b8a300e0c422df71fa9953.dip.versatel-1u1.de)
2021-02-15 18:19:27 +0100bitmagie(~Thunderbi@200116b806b8a300e0c422df71fa9953.dip.versatel-1u1.de) (Client Quit)
2021-02-15 18:20:10 +0100bitmagie(~Thunderbi@200116b806b8a300e0c422df71fa9953.dip.versatel-1u1.de)
2021-02-15 18:20:36 +0100bitmagie(~Thunderbi@200116b806b8a300e0c422df71fa9953.dip.versatel-1u1.de) (Client Quit)
2021-02-15 18:21:04 +0100goepsilongo(~goepsilon@2603-7000-ab00-62ed-0000-0000-0000-0c67.res6.spectrum.com) (Quit: WeeChat 3.0)
2021-02-15 18:22:18 +0100nhs(~nhs@c-24-20-87-79.hsd1.or.comcast.net)
2021-02-15 18:23:24 +0100jamm_(~jamm@unaffiliated/jamm) (Remote host closed the connection)
2021-02-15 18:25:05 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds)
2021-02-15 18:26:19 +0100bitmagie(~Thunderbi@200116b806b8a300e0c422df71fa9953.dip.versatel-1u1.de)
2021-02-15 18:26:49 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-02-15 18:27:01 +0100nhs(~nhs@c-24-20-87-79.hsd1.or.comcast.net) (Ping timeout: 265 seconds)
2021-02-15 18:28:19 +0100bitmagie(~Thunderbi@200116b806b8a300e0c422df71fa9953.dip.versatel-1u1.de) (Client Quit)
2021-02-15 18:28:23 +0100kuribas(~user@ptr-25vy0i99dyv62vdc1ue.18120a2.ip6.access.telenet.be) (Remote host closed the connection)
2021-02-15 18:29:35 +0100nhs(~nhs@c-24-20-87-79.hsd1.or.comcast.net)
2021-02-15 18:30:14 +0100Franciman(~francesco@host-82-49-79-189.retail.telecomitalia.it) (Quit: Leaving)
2021-02-15 18:31:56 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds)
2021-02-15 18:33:01 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-02-15 18:36:17 +0100nhs(~nhs@c-24-20-87-79.hsd1.or.comcast.net) (Ping timeout: 272 seconds)
2021-02-15 18:38:02 +0100boxscape(4ff0baf3@gateway/web/cgi-irc/kiwiirc.com/ip.79.240.186.243) (Quit: Connection closed)
2021-02-15 18:38:02 +0100xff0x(~xff0x@2001:1a81:5334:9d00:2035:d6b3:d6fb:5680) (Ping timeout: 260 seconds)
2021-02-15 18:38:37 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 265 seconds)
2021-02-15 18:38:38 +0100xff0x(~xff0x@2001:1a81:5334:9d00:bb11:df35:e496:c5c1)
2021-02-15 18:38:49 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-02-15 18:38:52 +0100nhs(~nhs@c-24-20-87-79.hsd1.or.comcast.net)
2021-02-15 18:41:15 +0100puffnfresh_(~puffnfres@45.76.124.5) (Quit: ZNC 1.8.0 - https://znc.in)
2021-02-15 18:42:51 +0100puffnfresh_(~puffnfres@45.76.124.5)
2021-02-15 18:45:01 +0100coot(~coot@37.30.55.141.nat.umts.dynamic.t-mobile.pl) (Quit: coot)
2021-02-15 18:45:31 +0100coot(~coot@37.30.55.141.nat.umts.dynamic.t-mobile.pl)
2021-02-15 18:45:48 +0100nhs(~nhs@c-24-20-87-79.hsd1.or.comcast.net) (Ping timeout: 256 seconds)
2021-02-15 18:45:59 +0100slack1256(~slack1256@45.4.2.52)
2021-02-15 18:46:30 +0100tromp(~tromp@dhcp-077-249-230-040.chello.nl) (Remote host closed the connection)
2021-02-15 18:46:36 +0100whitten(c75a9d0b@199.90.157.11)
2021-02-15 18:47:27 +0100zebrag(~inkbottle@aaubervilliers-654-1-119-56.w86-198.abo.wanadoo.fr) (Quit: Konversation terminated!)
2021-02-15 18:47:46 +0100zebrag(~inkbottle@aaubervilliers-654-1-119-56.w86-198.abo.wanadoo.fr)
2021-02-15 18:49:45 +0100coot(~coot@37.30.55.141.nat.umts.dynamic.t-mobile.pl) (Ping timeout: 240 seconds)
2021-02-15 18:50:41 +0100tromp(~tromp@dhcp-077-249-230-040.chello.nl)
2021-02-15 18:51:43 +0100hseg(~gesh@IGLD-84-228-239-97.inter.net.il)
2021-02-15 18:53:15 +0100son0p(~son0p@181.58.39.182) (Quit: Lost terminal)
2021-02-15 18:53:28 +0100cfricke(~cfricke@unaffiliated/cfricke) (Quit: WeeChat 3.0.1)
2021-02-15 18:54:05 +0100slack1256(~slack1256@45.4.2.52) (Ping timeout: 265 seconds)
2021-02-15 18:57:48 +0100nhs(~nhs@c-24-20-87-79.hsd1.or.comcast.net)
2021-02-15 18:58:22 +0100mupf(~micha@v22017094964653601.ultrasrv.de) (Quit: WeeChat 3.0)
2021-02-15 19:00:42 +0100mupf(~micha@v22017094964653601.ultrasrv.de)
2021-02-15 19:01:14 +0100srhb(sid400352@NixOS/user/srhb) (Ping timeout: 264 seconds)
2021-02-15 19:01:23 +0100dani-(sid341953@gateway/web/irccloud.com/x-xwlfrrleofhiyzmn) (Ping timeout: 260 seconds)
2021-02-15 19:01:26 +0100 <sm[m]> sshine: another approach, and the most practical one IMHO, is to embed data files in your executable. That way it can work without depending on a particular install method
2021-02-15 19:01:44 +0100ghuntley(sid16877@gateway/web/irccloud.com/x-sdjwqtshmjczadqw) (Ping timeout: 268 seconds)
2021-02-15 19:01:51 +0100ocharles(sid30093@musicbrainz/user/ocharles) (Read error: Connection reset by peer)
2021-02-15 19:01:53 +0100 <sm[m]> and can keep working without depending on particular filesystem state
2021-02-15 19:01:58 +0100Kamuela(sid111576@gateway/web/irccloud.com/x-dslzrevvxrjnszte) (Ping timeout: 260 seconds)
2021-02-15 19:01:58 +0100milessabin(sid86799@gateway/web/irccloud.com/x-gczjgphsfdxbizpq) (Ping timeout: 260 seconds)
2021-02-15 19:02:02 +0100tromp(~tromp@dhcp-077-249-230-040.chello.nl) (Remote host closed the connection)
2021-02-15 19:02:05 +0100ocharles(sid30093@musicbrainz/user/ocharles)
2021-02-15 19:02:07 +0100srhb(sid400352@NixOS/user/srhb)
2021-02-15 19:02:31 +0100dani-(sid341953@gateway/web/irccloud.com/x-opdkvfjmdgjlowks)
2021-02-15 19:03:33 +0100milessabin(sid86799@gateway/web/irccloud.com/x-uhwnuarrughueshe)
2021-02-15 19:03:45 +0100carlomagno1(~cararell@148.87.23.11)
2021-02-15 19:03:56 +0100idhugo_(~idhugo@130.225.16.16) (Ping timeout: 240 seconds)
2021-02-15 19:03:58 +0100ghuntley(sid16877@gateway/web/irccloud.com/x-vtpfnlotgnkvkxhw)
2021-02-15 19:03:59 +0100Kamuela(sid111576@gateway/web/irccloud.com/x-irfjzeihbihfpcqu)
2021-02-15 19:04:27 +0100carlomagno(~cararell@148.87.23.11) (Ping timeout: 256 seconds)
2021-02-15 19:05:51 +0100mud(~mud@unaffiliated/kadoban)
2021-02-15 19:09:32 +0100tromp(~tromp@dhcp-077-249-230-040.chello.nl)
2021-02-15 19:11:19 +0100ph88(~ph88@2a02:8109:9e00:7e5c:a5f0:7da4:fcd6:f1eb)
2021-02-15 19:11:33 +0100bitmapper(uid464869@gateway/web/irccloud.com/x-gappxernotuudgxa)
2021-02-15 19:13:10 +0100 <NieDzejkob> I'm reading this document on typechecking with GADTs. Since the parse function is implemented in Template Haskell, does this mean that the typechecker described has a runtime dependency on GHC? http://okmij.org/ftp/tagless-final/typed-compilation.html
2021-02-15 19:14:08 +0100tromp(~tromp@dhcp-077-249-230-040.chello.nl) (Ping timeout: 256 seconds)
2021-02-15 19:15:58 +0100 <merijn> NieDzejkob: Template Haskell is compile time
2021-02-15 19:16:04 +0100 <merijn> So, no
2021-02-15 19:16:23 +0100rajivr(uid269651@gateway/web/irccloud.com/x-jjwlibcbhlreeuhn) (Quit: Connection closed for inactivity)
2021-02-15 19:17:43 +0100deja(~deja@213162080090.public.t-mobile.at) (Quit: requested)
2021-02-15 19:19:16 +0100hnOsmium0001(uid453710@gateway/web/irccloud.com/x-xzxwzcbrnrsklakp)
2021-02-15 19:20:20 +0100deja(~deja@213162080090.public.t-mobile.at)
2021-02-15 19:21:46 +0100bnbgg_(uid454564@gateway/web/irccloud.com/x-wmmvfcpjvawodsxk) (Quit: Connection closed for inactivity)
2021-02-15 19:21:52 +0100 <monochrom> With staged and/or meta programming, you now have two "compile time"s and two "run time"s.
2021-02-15 19:22:29 +0100 <NieDzejkob> oh, I think I see what's happening. Their example runs the parser at compile time
2021-02-15 19:22:37 +0100 <merijn> monochrom: Eh, you're underestimating
2021-02-15 19:22:53 +0100 <merijn> monochrom: With staged compilation we can have as many compile times as we like!
2021-02-15 19:23:06 +0100 <monochrom> Yeah yeah details.
2021-02-15 19:23:14 +0100 <merijn> monochrom: The limitation to just one stage in Template Haskell is fairly arbitrary and sad :(
2021-02-15 19:23:21 +0100 <NieDzejkob> is there a way of lifting an untyped expression into a GADT typed expression without a run of GHC in the middle?
2021-02-15 19:23:53 +0100 <merijn> NieDzejkob: Depends what you mean?
2021-02-15 19:24:54 +0100rdivyanshu(uid322626@gateway/web/irccloud.com/x-khsbgkvcrzwdbncz) (Quit: Connection closed for inactivity)
2021-02-15 19:25:30 +0100raehik1(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 265 seconds)
2021-02-15 19:25:39 +0100 <NieDzejkob> I guess I'd like to write something like parse :: String -> Expr and typecheck :: Expr -> Either TypeError (TExpr ty)
2021-02-15 19:25:41 +0100 <monochrom> Have no untyped expressions in the first place? Then there is nothing to run, any time.
2021-02-15 19:26:12 +0100 <merijn> NieDzejkob: That is, generally, a recipe for pain :)
2021-02-15 19:26:18 +0100 <merijn> NieDzejkob: You'd have to CPS it
2021-02-15 19:26:32 +0100 <NieDzejkob> as in continuation passing?
2021-02-15 19:26:55 +0100 <merijn> "Expr -> (forall ty . TExpr ty -> Either TypeError Foo) -> Either TypeError Foo" <- something like that
2021-02-15 19:26:55 +0100 <NieDzejkob> perhaps there's some ghc extension to do that for me?
2021-02-15 19:26:59 +0100 <monochrom> Pretty sure "Expr -> Either TypeError (TExpr ty)" is the wrong type.
2021-02-15 19:27:14 +0100 <NieDzejkob> yeah, I'd need something like exists ty. TExpr ty
2021-02-15 19:28:03 +0100 <merijn> NieDzejkob: Yeah, either you do an existential wrapping of TExpr via "data SomeExpr = forall ty . SomeExpr (TExpr ty)" or you take the Rank2 CPS approach I mentioned before
2021-02-15 19:28:11 +0100 <merijn> NieDzejkob: Those are your only options
2021-02-15 19:28:37 +0100Aquazi(uid312403@gateway/web/irccloud.com/x-hwiundvvsjogiwru)
2021-02-15 19:29:52 +0100turion(~turion@2a02:810d:8abf:c4a8:ec49:8e35:b593:1422)
2021-02-15 19:32:33 +0100natechan(~natechan@108-233-125-227.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 272 seconds)
2021-02-15 19:33:08 +0100 <NieDzejkob> okay, say I do the wrapping like that and now I want to 'lift' a forall ty. TExpr ty -> TExpr ty -> TExpr ty into a SomeExpr -> SomeExpr -> Either TypesDiffer SomeExpr. Is that possible?
2021-02-15 19:33:08 +0100 <monochrom> I think the section "Typed compilation to HOAS as emulation of staging" doesn't use TH?
2021-02-15 19:36:50 +0100 <NieDzejkob> looks like the first link of Typed compilation via GADTs doesn't either
2021-02-15 19:37:56 +0100xff0x(~xff0x@2001:1a81:5334:9d00:bb11:df35:e496:c5c1) (Ping timeout: 240 seconds)
2021-02-15 19:38:48 +0100Tuplanolla(~Tuplanoll@91-159-68-239.elisa-laajakaista.fi)
2021-02-15 19:38:51 +0100xff0x(~xff0x@2001:1a81:5334:9d00:9872:1d01:b37b:25f0)
2021-02-15 19:39:21 +0100DirefulSalt(DirefulSal@gateway/vpn/privateinternetaccess/direfulsalt)
2021-02-15 19:39:52 +0100tromp(~tromp@dhcp-077-249-230-040.chello.nl)
2021-02-15 19:42:34 +0100Wuzzy(~Wuzzy@p5b0df671.dip0.t-ipconnect.de) (Read error: Connection reset by peer)
2021-02-15 19:45:15 +0100Lord_of_Life(~Lord@unaffiliated/lord-of-life/x-0885362) (Ping timeout: 246 seconds)
2021-02-15 19:46:03 +0100superstar64(6ccefa7c@108-206-250-124.lightspeed.miamfl.sbcglobal.net)
2021-02-15 19:46:38 +0100 <superstar64> i just realized you can use operators as arguments `f (!) a b = a ! b`
2021-02-15 19:46:56 +0100 <merijn> superstar64: Correct :)
2021-02-15 19:47:24 +0100 <superstar64> how useful is it though?
2021-02-15 19:47:27 +0100zebrag(~inkbottle@aaubervilliers-654-1-119-56.w86-198.abo.wanadoo.fr) (Quit: Konversation terminated!)
2021-02-15 19:47:33 +0100 <merijn> "it depends"
2021-02-15 19:47:46 +0100zebrag(~inkbottle@aaubervilliers-654-1-119-56.w86-198.abo.wanadoo.fr)
2021-02-15 19:50:04 +0100thongpv87(~thongpv87@103.6.151.121)
2021-02-15 19:50:31 +0100heatsink(~heatsink@2600:1700:bef1:5e10:91f6:aac5:ae3f:98b4) (Remote host closed the connection)
2021-02-15 19:51:47 +0100Helena(d9498b5b@gateway/web/cgi-irc/kiwiirc.com/ip.217.73.139.91)
2021-02-15 19:52:24 +0100natechan(~natechan@108-233-125-227.lightspeed.sntcca.sbcglobal.net)
2021-02-15 19:53:10 +0100tromp(~tromp@dhcp-077-249-230-040.chello.nl) (Remote host closed the connection)
2021-02-15 19:53:13 +0100elliott__(~elliott@pool-108-51-101-42.washdc.fios.verizon.net)
2021-02-15 19:55:19 +0100mastarija(~mastarija@93-136-136-241.adsl.net.t-com.hr)
2021-02-15 19:55:28 +0100 <swarmcollective> Useful for pattern matching? A special implementation when a specific operator is passed?
2021-02-15 19:55:42 +0100geekosaur(82650c7a@130.101.12.122) (Ping timeout: 240 seconds)
2021-02-15 19:55:57 +0100 <merijn> swarmcollective: No
2021-02-15 19:56:04 +0100 <merijn> swarmcollective: That doesn't check for specific operators
2021-02-15 19:56:20 +0100 <merijn> swarmcollective: It's just defining a function argument whose variable name is an operator
2021-02-15 19:56:41 +0100 <merijn> :t let foo (!) x y = x ! y in foo
2021-02-15 19:56:42 +0100 <lambdabot> (t1 -> t2 -> t3) -> t1 -> t2 -> t3
2021-02-15 19:56:50 +0100 <merijn> > let foo (!) x y = x ! y in foo (+) 3 5
2021-02-15 19:56:52 +0100 <lambdabot> 8
2021-02-15 19:57:05 +0100 <merijn> > let foo (!) x y = x ! y in foo elem 3 [1..5]
2021-02-15 19:57:06 +0100 <lambdabot> True
2021-02-15 19:57:27 +0100 <merijn> > let foo (!) x y = x ! y in foo const 3 True
2021-02-15 19:57:28 +0100 <lambdabot> 3
2021-02-15 19:57:28 +0100 <swarmcollective> Ahhh! :D
2021-02-15 19:58:16 +0100 <merijn> That's the same as "let foo f x y = f x y", except we get to use an operator :)
2021-02-15 19:58:26 +0100 <swarmcollective> :t const
2021-02-15 19:58:27 +0100 <lambdabot> a -> b -> a
2021-02-15 19:59:13 +0100saitamaplus(uid272474@gateway/web/irccloud.com/x-irdzpaiuvuekrsyx) (Quit: Connection closed for inactivity)
2021-02-15 19:59:50 +0100turion(~turion@2a02:810d:8abf:c4a8:ec49:8e35:b593:1422) (Quit: Leaving.)
2021-02-15 20:00:02 +0100Helena(d9498b5b@gateway/web/cgi-irc/kiwiirc.com/ip.217.73.139.91) (Quit: http://www.kiwiirc.com/ - A hand crafted IRC client)
2021-02-15 20:00:47 +0100Lord_of_Life(~Lord@unaffiliated/lord-of-life/x-0885362)
2021-02-15 20:03:28 +0100berberman_(~berberman@unaffiliated/berberman)
2021-02-15 20:04:51 +0100berberman(~berberman@unaffiliated/berberman) (Ping timeout: 272 seconds)
2021-02-15 20:05:14 +0100Ariakenom(~Ariakenom@2001:9b1:efb:fc00:5936:de4c:8779:9728)
2021-02-15 20:08:19 +0100thc202(~thc202@unaffiliated/thc202) (Quit: thc202)
2021-02-15 20:08:27 +0100tromp(~tromp@dhcp-077-249-230-040.chello.nl)
2021-02-15 20:10:01 +0100DTZUZU_(~DTZUZU@207.81.119.43)
2021-02-15 20:11:03 +0100DTZUZU(~DTZUZU@205.ip-149-56-132.net) (Read error: Connection reset by peer)
2021-02-15 20:11:35 +0100DTZUZU__(~DTZUZU@205.ip-149-56-132.net)
2021-02-15 20:12:05 +0100frozenErebus(~frozenEre@94.128.81.133) (Ping timeout: 240 seconds)
2021-02-15 20:14:04 +0100LKoen(~LKoen@96.252.88.92.rev.sfr.net) (Read error: Connection reset by peer)
2021-02-15 20:14:25 +0100DTZUZU_(~DTZUZU@207.81.119.43) (Ping timeout: 240 seconds)
2021-02-15 20:14:32 +0100LKoen(~LKoen@96.252.88.92.rev.sfr.net)
2021-02-15 20:17:53 +0100geekosaur(82650c7a@130.101.12.122)
2021-02-15 20:18:46 +0100coot(~coot@37.30.55.141.nat.umts.dynamic.t-mobile.pl)
2021-02-15 20:22:12 +0100tromp(~tromp@dhcp-077-249-230-040.chello.nl) (Remote host closed the connection)
2021-02-15 20:23:23 +0100shatriff(~vitaliish@176-52-216-242.irishtelecom.com)
2021-02-15 20:23:37 +0100mizu_no_oto(~textual@cpe-66-66-222-11.rochester.res.rr.com)
2021-02-15 20:23:58 +0100jamm_(~jamm@unaffiliated/jamm)
2021-02-15 20:24:30 +0100mizu_no_oto(~textual@cpe-66-66-222-11.rochester.res.rr.com) (Client Quit)
2021-02-15 20:25:42 +0100mastarija(~mastarija@93-136-136-241.adsl.net.t-com.hr) (Remote host closed the connection)
2021-02-15 20:26:04 +0100mastarija(~mastarija@93-136-136-241.adsl.net.t-com.hr)
2021-02-15 20:28:17 +0100jamm_(~jamm@unaffiliated/jamm) (Ping timeout: 260 seconds)
2021-02-15 20:28:55 +0100tromp(~tromp@dhcp-077-249-230-040.chello.nl)
2021-02-15 20:32:38 +0100mastarija(~mastarija@93-136-136-241.adsl.net.t-com.hr) (Quit: Leaving)
2021-02-15 20:34:19 +0100raehik1(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
2021-02-15 20:35:39 +0100 <monochrom> I think "foldr (!) z (x:xs) = x ! foldr (!) z xs" can read pretty nicely. Or any symbol you prefer.
2021-02-15 20:38:51 +0100 <geekosaur> there's a few other examples like that too
2021-02-15 20:38:56 +0100 <geekosaur> @src on
2021-02-15 20:38:56 +0100 <lambdabot> (*) `on` f = \x y -> f x * f y
2021-02-15 20:39:32 +0100 <geekosaur> but it's not especially widespread, possibly because it's not that well known
2021-02-15 20:40:12 +0100 <merijn> About as well known as whitespace escaping in string literals :p
2021-02-15 20:40:39 +0100 <monochrom> liftA2 (!) (Just x) (Just y) = Just (x ! y)
2021-02-15 20:40:57 +0100danvet(~Daniel@2a02:168:57f4:0:efd0:b9e5:5ae6:c2fa) (Ping timeout: 272 seconds)
2021-02-15 20:43:09 +0100frozenErebus(~frozenEre@94.128.81.133)
2021-02-15 20:45:44 +0100Narinas(~Narinas@189.223.179.61.dsl.dyn.telnor.net) (Read error: Connection reset by peer)
2021-02-15 20:46:16 +0100raehik1(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 240 seconds)
2021-02-15 20:46:17 +0100Narinas(~Narinas@189.223.179.61.dsl.dyn.telnor.net)
2021-02-15 20:47:23 +0100 <zzz> c
2021-02-15 20:47:27 +0100zebrag(~inkbottle@aaubervilliers-654-1-119-56.w86-198.abo.wanadoo.fr) (Quit: Konversation terminated!)
2021-02-15 20:47:46 +0100 <geekosaur> d
2021-02-15 20:47:47 +0100zebrag(~inkbottle@aaubervilliers-654-1-119-56.w86-198.abo.wanadoo.fr)
2021-02-15 20:48:50 +0100 <monochrom> /ban you all
2021-02-15 20:49:12 +0100 <Clint> :-O
2021-02-15 20:49:23 +0100 <monochrom> y'all. https://www.smbc-comics.com/comic/second-strike >:)
2021-02-15 20:49:32 +0100heatsink(~heatsink@2600:1700:bef1:5e10:91f6:aac5:ae3f:98b4)
2021-02-15 20:50:35 +0100conal(~conal@64.71.133.70) (Quit: Computer has gone to sleep.)
2021-02-15 20:51:24 +0100lawid(~quassel@dslb-090-186-198-195.090.186.pools.vodafone-ip.de) (Ping timeout: 246 seconds)
2021-02-15 20:51:51 +0100chele(~chele@ip5b40237d.dynamic.kabel-deutschland.de) (Remote host closed the connection)
2021-02-15 20:52:10 +0100raehik1(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
2021-02-15 20:52:29 +0100lawid(~quassel@dslb-090-186-198-195.090.186.pools.vodafone-ip.de)
2021-02-15 20:52:51 +0100 <tomsmeding> My new PC can detect bad parallelisation in haskell. When I run a single-threaded Haskell program with +RTS -N, so using the parallel GC, it uses lots of CPU and my PC makes noise. If I add -qg to disable parallel GC, it uses one core of CPU as expected and makes no noise.
2021-02-15 20:54:04 +0100Lycurgus(~niemand@cpe-45-46-139-165.buffalo.res.rr.com)
2021-02-15 20:54:48 +0100 <hololeap> i'm having a hard time figuring out the status of -XLinearTypes. is it merged into a version of GHC yet?
2021-02-15 20:55:06 +0100 <Lycurgus> the latest
2021-02-15 20:55:07 +0100 <geekosaur> 9.0
2021-02-15 20:55:15 +0100 <geekosaur> aka the latest
2021-02-15 20:55:32 +0100 <monochrom> Please use liquid cooling to reduce fan noise. >:)
2021-02-15 20:55:59 +0100 <Lycurgus> early adopters
2021-02-15 20:56:24 +0100 <geekosaur> pretty much. also note that a decent chunk of hackage doesn't work with it yet
2021-02-15 20:56:55 +0100 <monochrom> Please use "ghcup install ghc 9.0.1" to obtain linear types. :)
2021-02-15 20:57:16 +0100 <monochrom> And yeah it doesn't build current Cabal or something.
2021-02-15 20:57:36 +0100 <geekosaur> it requires cabal 3.4 but that should be released at this point
2021-02-15 20:57:45 +0100 <hololeap> ok, i can wait, but it's good to know that's where i can find it
2021-02-15 20:57:59 +0100Lycurgusdon't ever need the hs bleeding edge
2021-02-15 20:58:58 +0100ixaxaar(~ixaxaar@49.207.197.94) (Ping timeout: 256 seconds)
2021-02-15 20:59:45 +0100gehmehgeh(~ircuser1@gateway/tor-sasl/gehmehgeh) (Quit: Leaving)
2021-02-15 20:59:45 +0100lawid(~quassel@dslb-090-186-198-195.090.186.pools.vodafone-ip.de) (Ping timeout: 240 seconds)
2021-02-15 21:00:01 +0100epicte7us(~epictetus@ip72-194-215-136.sb.sd.cox.net)
2021-02-15 21:00:17 +0100Mrbuck(~Mrbuck@gateway/tor-sasl/mrbuck)
2021-02-15 21:00:25 +0100 <tomsmeding> monochrom: I have liquid cooling and the fans are not the issue :p
2021-02-15 21:01:09 +0100 <monochrom> Hrm, the kind of noise that electronic components make when working hard?
2021-02-15 21:01:22 +0100lawid(~quassel@ipservice-092-219-052-231.092.219.pools.vodafone-ip.de)
2021-02-15 21:01:26 +0100 <tomsmeding> I think it's coil whine, which is I guess what you're going at
2021-02-15 21:02:01 +0100 <monochrom> Yeah that.
2021-02-15 21:02:23 +0100 <tomsmeding> running prime95 (all-core continuous utilisation) gives no noise, but running a busy-loop on each core that sleeps for 1 microsecond every ~10000 iterations gives lots of noise
2021-02-15 21:02:47 +0100 <tomsmeding> I deduce that parallel GC on a single-threaded haskell program does lots of synchronisation :)
2021-02-15 21:02:52 +0100__minoru__shirae(~shiraeesh@109.166.59.64)
2021-02-15 21:02:57 +0100minoru_shiraeesh(~shiraeesh@46.34.207.245) (Ping timeout: 264 seconds)
2021-02-15 21:02:57 +0100ep1ctetus(~epictetus@ip72-194-215-136.sb.sd.cox.net) (Ping timeout: 246 seconds)
2021-02-15 21:03:28 +0100 <tomsmeding> I shall use this in the future to alert me that I've forgotten -qg
2021-02-15 21:04:56 +0100 <geekosaur> just in time for it to not be needed any more? (supposedly it's becoming the default iirc)
2021-02-15 21:04:59 +0100carlomagno1(~cararell@148.87.23.11) (Remote host closed the connection)
2021-02-15 21:05:01 +0100frozenErebus(~frozenEre@94.128.81.133) (Quit: leaving)
2021-02-15 21:05:03 +0100petersen(~petersen@redhat/juhp) (Ping timeout: 246 seconds)
2021-02-15 21:05:23 +0100 <sshine> merijn, okay, so 'appie_datadir=~/tmp ~/.local/bin/appie' does make getDataDir :: IO FilePath spit out ~/tmp, but is there a way to provide another default when compiling the executable? I thought, actually, that the appie_datadir variable was one you provided when building the app, not when running it. I thought: when the packager compiles the program for distribution, they want to be able to specify
2021-02-15 21:05:29 +0100 <sshine> e.g. /usr/local/share or ~/.local/share, or whatever, and then Setup.hs would move local files to that directory...
2021-02-15 21:05:38 +0100 <tomsmeding> geekosaur: ooh that would be very nice
2021-02-15 21:05:48 +0100shatriff(~vitaliish@176-52-216-242.irishtelecom.com) (Remote host closed the connection)
2021-02-15 21:06:22 +0100shatriff(~vitaliish@176-52-216-242.irishtelecom.com)
2021-02-15 21:06:31 +0100mnrmnaughslartibatfast
2021-02-15 21:06:40 +0100carlomagno(~cararell@148.87.23.11)
2021-02-15 21:06:59 +0100slartibatfastslartibartfast
2021-02-15 21:07:02 +0100 <merijn> sshine: No, you specify either via flags at compile time or overload with env variable at runtime
2021-02-15 21:07:12 +0100petersen(~petersen@redhat/juhp)
2021-02-15 21:07:13 +0100slartibartfastmnrmnaugh
2021-02-15 21:08:14 +0100 <monochrom> This is great. The phenomenon is bidirectional, sound can cause EM activity too, basically the loudspeaker-microphone duality.
2021-02-15 21:08:15 +0100conal(~conal@64.71.133.70)
2021-02-15 21:08:18 +0100finn_elija(~finn_elij@gateway/tor-sasl/finnelija/x-67402716) (Ping timeout: 268 seconds)
2021-02-15 21:08:49 +0100 <monochrom> "Real programmers speak very focusedly to the CPU" bwahahahahaha
2021-02-15 21:09:05 +0100 <tomsmeding> real programmers use a dog whistle
2021-02-15 21:09:15 +0100 <monochrom> Heh that's even better
2021-02-15 21:09:37 +0100finn_elija(~finn_elij@gateway/tor-sasl/finnelija/x-67402716)
2021-02-15 21:10:01 +0100 <monochrom> No wonder real programmers whine all the time.
2021-02-15 21:11:42 +0100 <tomsmeding> :D
2021-02-15 21:12:37 +0100 <merijn> tomsmeding: parallel GC in multi-threaded Haskell is basically just as worthless :p
2021-02-15 21:13:38 +0100lawid_(~quassel@ipservice-092-219-052-231.092.219.pools.vodafone-ip.de)
2021-02-15 21:13:45 +0100lawid(~quassel@ipservice-092-219-052-231.092.219.pools.vodafone-ip.de) (Ping timeout: 264 seconds)
2021-02-15 21:14:12 +0100deviantfero(~deviantfe@190.150.27.58) (Quit: WeeChat 3.0)
2021-02-15 21:14:16 +0100tromp(~tromp@dhcp-077-249-230-040.chello.nl) (Remote host closed the connection)
2021-02-15 21:16:56 +0100lawid(~quassel@dslb-002-202-157-179.002.202.pools.vodafone-ip.de)
2021-02-15 21:17:09 +0100 <hololeap> "Real programmers speak very focusedly to the CPU" -- can we make this a quote?
2021-02-15 21:17:38 +0100Lycurgus(~niemand@cpe-45-46-139-165.buffalo.res.rr.com) (Quit: Exeunt)
2021-02-15 21:18:11 +0100 <geekosaur> @remember monochrom Real programmers speak very focusedly to the CPU
2021-02-15 21:18:11 +0100 <lambdabot> I will never forget.
2021-02-15 21:18:41 +0100 <monochrom> I think the dog whistle version is better.
2021-02-15 21:18:53 +0100 <monochrom> @remember tomsmeding real programmers use a dog whistle
2021-02-15 21:18:53 +0100 <lambdabot> Good to know.
2021-02-15 21:19:01 +0100kmein(~weechat@static.173.83.99.88.clients.your-server.de) (Quit: ciao kakao)
2021-02-15 21:19:13 +0100 <tomsmeding> \o/ my first quote
2021-02-15 21:19:16 +0100kmein(~weechat@static.173.83.99.88.clients.your-server.de)
2021-02-15 21:19:32 +0100 <hololeap> of course, the context is what makes it funny, but it has been ensconced
2021-02-15 21:20:31 +0100 <monochrom> also, even my version, s/speak very focusedly to the CPU/whine at the machine/ would be an infinite improvement
2021-02-15 21:20:36 +0100lawid_(~quassel@ipservice-092-219-052-231.092.219.pools.vodafone-ip.de) (Ping timeout: 240 seconds)
2021-02-15 21:21:11 +0100 <hololeap> ensconced i say!
2021-02-15 21:21:27 +0100 <monochrom> the pun on "whine" being both human whine and coil whine
2021-02-15 21:25:18 +0100deviantfero(~deviantfe@190.150.27.58)
2021-02-15 21:30:59 +0100ph88(~ph88@2a02:8109:9e00:7e5c:a5f0:7da4:fcd6:f1eb) (Ping timeout: 272 seconds)
2021-02-15 21:32:39 +0100louk(~louk@216.164.51.248)
2021-02-15 21:33:16 +0100 <louk> Hi, noob here.
2021-02-15 21:33:24 +0100 <louk> map head [[1], [2], [3]]
2021-02-15 21:33:28 +0100 <louk> [1,2,3]
2021-02-15 21:33:35 +0100usr25(~usr25@unaffiliated/usr25)
2021-02-15 21:33:39 +0100 <louk> (sum . map) head [[1], [2], [3]]
2021-02-15 21:33:42 +0100 <Uniaika> > map head [[1], [2], [3]]
2021-02-15 21:33:43 +0100 <louk> error
2021-02-15 21:33:44 +0100 <lambdabot> [1,2,3]
2021-02-15 21:33:49 +0100 <louk> why?
2021-02-15 21:33:56 +0100 <sshine> > sum (map head [[1], [2], [3]])
2021-02-15 21:33:58 +0100 <lambdabot> 6
2021-02-15 21:33:58 +0100 <Uniaika> louk: you combine sum and head on each element, not on the result
2021-02-15 21:34:10 +0100 <sshine> > sum $ map head [[1], [2], [3]]
2021-02-15 21:34:11 +0100 <lambdabot> 6
2021-02-15 21:34:14 +0100 <Uniaika> let's see what the error says
2021-02-15 21:34:16 +0100 <Uniaika> > (sum . map) head [[1], [2], [3]]
2021-02-15 21:34:18 +0100 <lambdabot> error:
2021-02-15 21:34:18 +0100 <lambdabot> • Couldn't match type ‘[b0]’ with ‘[[a0]] -> t’
2021-02-15 21:34:18 +0100 <lambdabot> Expected type: ([b0] -> b0) -> [[b0]] -> [[a0]] -> t
2021-02-15 21:34:24 +0100 <sshine> > sum $ map head $ [[1], [2], [3]]
2021-02-15 21:34:26 +0100 <lambdabot> 6
2021-02-15 21:34:26 +0100 <Uniaika> yeah that one is not great
2021-02-15 21:34:30 +0100 <sshine> > sum . map head $ [[1], [2], [3]]
2021-02-15 21:34:32 +0100 <lambdabot> 6
2021-02-15 21:34:42 +0100 <sshine> > (sum . map head) [[1], [2], [3]]
2021-02-15 21:34:44 +0100 <lambdabot> 6
2021-02-15 21:34:45 +0100 <sshine> sorry for spam :)
2021-02-15 21:35:16 +0100 <monochrom> Huh what error?
2021-02-15 21:35:49 +0100 <monochrom> OK I see, nevermind.
2021-02-15 21:36:31 +0100 <hololeap> :t sum . map
2021-02-15 21:36:31 +0100 <Uniaika> louk: is that clearer?
2021-02-15 21:36:32 +0100 <lambdabot> (Foldable ((->) [a]), Num [b]) => (a -> b) -> [b]
2021-02-15 21:36:39 +0100 <sshine> :t map head
2021-02-15 21:36:40 +0100 <lambdabot> [[b]] -> [b]
2021-02-15 21:36:47 +0100 <louk> sort of
2021-02-15 21:37:05 +0100 <roconnor> anyone know if Wren is still around?
2021-02-15 21:37:10 +0100 <louk> this (sum . map head) [[1], [2], [3]]
2021-02-15 21:37:10 +0100 <louk> was what I was looking for
2021-02-15 21:37:43 +0100 <Uniaika> roconnor: nope :/
2021-02-15 21:38:01 +0100 <monochrom> My algebraic perspective: (sum . map) head xs = ((sum . map) head) xs = (sum (map head)) xs = nonsense
2021-02-15 21:38:18 +0100 <sshine> louk, so 'map head' is a function that takes a list of lists of b's, and produces a list of b's. 'sum (map head xss)' takes the sum of the heads of xss, and when you compose functions, 'f (g x)' becomes '(f . g) x'...
2021-02-15 21:38:30 +0100 <louk> But I expected sum . map to create a function which applies map to "head" and a list first and then applies sum
2021-02-15 21:38:31 +0100 <roconnor> oh wren is on twitter.
2021-02-15 21:38:54 +0100 <louk> this doesn't work either: sum . (map head) [[1], [2], [3]]
2021-02-15 21:39:05 +0100turion(~turion@2a02:810d:8abf:c4a8:ec49:8e35:b593:1422)
2021-02-15 21:39:45 +0100 <glguy> sum . (map head) [[1], [2], [3]] --parses as-- sum . ((map head) [[1], [2], [3]])
2021-02-15 21:39:48 +0100 <geekosaur> that's no different, because function application is already the highest precedence thing there
2021-02-15 21:40:09 +0100 <Uniaika> yep', it's better to explictly put the parens, like glguy showed you
2021-02-15 21:40:11 +0100 <tomsmeding> louk: that works for single-argument functions
2021-02-15 21:40:28 +0100 <tomsmeding> map takes two arguments before it produces something you can sum
2021-02-15 21:40:42 +0100 <hololeap> louk: that's the same as: \x -> sum ((map head) [[1], [2], [3]] x)
2021-02-15 21:40:48 +0100 <louk> @tomsmedinq but I expect (map head) to create func of one arg
2021-02-15 21:40:48 +0100 <lambdabot> Unknown command, try @list
2021-02-15 21:40:58 +0100 <tomsmeding> louk: true!
2021-02-15 21:41:04 +0100 <louk> true? but...?
2021-02-15 21:41:11 +0100 <monochrom> Do the algebra.
2021-02-15 21:41:19 +0100 <sshine> louk, if you expect 'map head' to be a function of one arg, you'd be right!
2021-02-15 21:41:43 +0100 <tomsmeding> but '(sum . map) head [[1],[2],[3]]' is the same as 'sum (map head) [[1],[2],[3]]'
2021-02-15 21:42:06 +0100 <tomsmeding> whereas you want 'sum (map head [[1],[2],[3]])', which you can write as '(sum . map head) [[1],[2],[3]]'
2021-02-15 21:42:06 +0100 <sshine> louk, that means to convert 'sum (map head xss)' using the 'f (g x) = (f . g) x' rule, you'd want both f and g to be functions of one argument, so f = sum and g = map head?
2021-02-15 21:42:13 +0100 <louk> @tomsmedinq no:
2021-02-15 21:42:13 +0100 <lambdabot> Unknown command, try @list
2021-02-15 21:42:13 +0100 <louk> 'sum (map head) [[1],[2],[3]]
2021-02-15 21:42:17 +0100 <louk> sum (map head) [[1],[2],[3]]
2021-02-15 21:42:38 +0100 <louk> • Couldn't match type ‘[b0]’ with ‘[[Integer]] -> t’
2021-02-15 21:42:38 +0100 <louk> Expected type: [[b0]] -> [[Integer]] -> t
2021-02-15 21:42:38 +0100 <louk> Actual type: [[b0]] -> [b0]
2021-02-15 21:42:49 +0100 <louk> so they are somehow different
2021-02-15 21:42:56 +0100 <tomsmeding> which doesn't work, because that's passing two arguments to sum: 'map head' and '[[1],[2],[3]]'
2021-02-15 21:42:57 +0100 <monochrom> VERY DIFFERENT
2021-02-15 21:43:10 +0100 <hololeap> louk: `sum (map head)` is very different from `sum . (map head)`
2021-02-15 21:43:37 +0100 <monochrom> f g x = (f g) x ≠ f (g x)
2021-02-15 21:43:38 +0100tromp(~tromp@dhcp-077-249-230-040.chello.nl)
2021-02-15 21:43:58 +0100 <monochrom> sum (map head) xs = (sum (map head)) xs ≠ sum ((map head) xs)
2021-02-15 21:44:01 +0100 <monochrom> Sleep on that.
2021-02-15 21:44:36 +0100 <monochrom> Sleep on that until you believe it.
2021-02-15 21:44:54 +0100 <hololeap> louk, maybe this would help? https://stackoverflow.com/questions/940382/what-is-the-difference-between-dot-and-dollar-sign?nore…
2021-02-15 21:45:15 +0100Robin[m]2(robinrobin@gateway/shell/matrix.org/x-vxihtgxkxfbpdtry)
2021-02-15 21:46:00 +0100 <hololeap> there's a big difference between function application and function composition. they might seem similar at first, but once you understand that the answer will be obvious
2021-02-15 21:47:00 +0100 <monochrom> I didn't find them similar at all. Not even when I was a beginner.
2021-02-15 21:47:07 +0100 <hololeap> `sum (map head)` is _applying_ `(map head)` to the `sum` function
2021-02-15 21:47:20 +0100 <merijn> I would say the reverse
2021-02-15 21:47:33 +0100 <merijn> I would say it's applying "sum" to (map head)
2021-02-15 21:47:35 +0100 <louk> @hololeap I understand theres difference between application and composition. the discussion somehow moved to that but it's not what I want
2021-02-15 21:47:35 +0100 <lambdabot> Unknown command, try @list
2021-02-15 21:47:36 +0100weikum(~weikum@90.218.153.39) (Ping timeout: 240 seconds)
2021-02-15 21:47:38 +0100 <louk> loop
2021-02-15 21:47:39 +0100Franciman(~francesco@host-82-49-79-189.retail.telecomitalia.it)
2021-02-15 21:47:47 +0100 <monochrom> It's only that today's beginners learn from "f $ g $ h $ x" and "f . g . h $ x" and get confused. I blame it on $.
2021-02-15 21:47:54 +0100 <louk> sum . (map head) [[1], [2], [3]]
2021-02-15 21:47:59 +0100 <louk> this won'e work
2021-02-15 21:48:02 +0100 <louk> and (sum . (map head)) [[1], [2], [3]]
2021-02-15 21:48:05 +0100 <louk> that is ok
2021-02-15 21:48:15 +0100 <monochrom> With "f (g (h x))" and "(f . g . h) x" it is pretty clear what's going on.
2021-02-15 21:48:23 +0100 <merijn> louk: The precedence of prefix function application is *always* higher than infix operators
2021-02-15 21:48:29 +0100 <louk> so to me dot had more priority than application
2021-02-15 21:48:38 +0100 <geekosaur> you are composing sum with ((map head) [[1], [2], [3]])
2021-02-15 21:48:38 +0100 <dolio> Well, it doesn't.
2021-02-15 21:48:38 +0100 <ski> application, or `$' ?
2021-02-15 21:48:44 +0100 <hololeap> no, nothing has higher priority than application
2021-02-15 21:48:54 +0100 <geekosaur> record updates do
2021-02-15 21:49:03 +0100 <hololeap> geekosaur: shush
2021-02-15 21:49:03 +0100 <monochrom> Or at least, pretty clear the parse trees are different. (And then we get to talk about semantic equality.)
2021-02-15 21:49:04 +0100 <louk> so a . b c is in fact:
2021-02-15 21:49:09 +0100 <louk> a . (b c)?
2021-02-15 21:49:12 +0100 <hololeap> yes
2021-02-15 21:49:13 +0100 <merijn> louk: Yes
2021-02-15 21:49:23 +0100 <geekosaur> but it also matters what follows it
2021-02-15 21:49:28 +0100 <louk> how?
2021-02-15 21:49:38 +0100 <merijn> "by definition"
2021-02-15 21:49:55 +0100 <louk> ok, I got my answer thanks
2021-02-15 21:50:00 +0100 <louk> will dig deeper
2021-02-15 21:50:32 +0100Nahra(~Nahra@unaffiliated/nahra) (Quit: leaving)
2021-02-15 21:50:49 +0100 <merijn> louk: (.) is just a function like any other, and per the Haskell Report infix operators are, by definition, lower precedence then prefix function application
2021-02-15 21:51:04 +0100 <hololeap> a . b c d = a . (b c d) ≠ (a . b c) d
2021-02-15 21:51:38 +0100 <louk> how does that work with >>=?
2021-02-15 21:51:56 +0100 <merijn> "the same"?
2021-02-15 21:52:07 +0100 <hololeap> % :i (>>=)
2021-02-15 21:52:08 +0100 <yahb> hololeap: type Monad :: (* -> *) -> Constraint; class Applicative m => Monad m where; (>>=) :: forall a b. m a -> (a -> m b) -> m b; ...; -- Defined in `GHC.Base'; infixl 1 >>=
2021-02-15 21:53:00 +0100 <hololeap> infixl 1 means it has precedence level 1 (very low)
2021-02-15 21:53:28 +0100 <ephemient> $ is lower (infixr 0)
2021-02-15 21:54:02 +0100 <hololeap> and infixl means it's left-associative
2021-02-15 21:54:43 +0100 <monochrom> Show an example actual code you don't understand.
2021-02-15 21:55:05 +0100 <ephemient> although `ma >>= \a -> f $ a` does work out "as expected", due to \
2021-02-15 21:55:25 +0100 <louk> main = getArgs >>= sum . (map (read :: String -> Int))
2021-02-15 21:55:32 +0100 <louk> heres how I interpret this code
2021-02-15 21:55:47 +0100 <louk> geArgs returns "IO [String]"
2021-02-15 21:56:09 +0100 <ephemient> but `ma >>= f $ b` is almost certainly not correct, because it parses like `(ma >>= f) $ (b)`
2021-02-15 21:56:27 +0100 <monochrom> OK >>= is level 1, . is level 9, . has higher precedence.
2021-02-15 21:56:30 +0100 <louk> then >>= converts that to "[String]" and at the same time supplies it to composite function of sum . (...)
2021-02-15 21:56:45 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 240 seconds)
2021-02-15 21:56:49 +0100 <monochrom> getArgs >>= (sum . map (read :: ...))
2021-02-15 21:56:55 +0100 <ski> main = (getArgs >>= (sum . (map (read :: String -> Int)))) -- how that's parsed, since `.' binds tighter than `>>='
2021-02-15 21:57:12 +0100 <monochrom> Stop thinking. Look up the predence table for real.
2021-02-15 21:57:45 +0100 <hololeap> louk, what's the type of `sum . (map (read :: String -> Int))` ?
2021-02-15 21:57:45 +0100 <ephemient> `getArgs :: IO [String]`, `(>>=) :: Monad m => m a -> (a -> m b) -> m b`, therefore `getArgs >>= f` requires `f :: [String] -> IO b`
2021-02-15 21:57:52 +0100 <ski> ("then >>= converts that to \"[String]\"" is also rather .. inaccurate)
2021-02-15 21:58:01 +0100 <monochrom> If you parse it wrong, all the rest of your thinking is just make-believe.
2021-02-15 21:58:15 +0100jpds(~jpds@gateway/tor-sasl/jpds) (Ping timeout: 268 seconds)
2021-02-15 21:58:18 +0100 <monochrom> Building on sand not solid foundation.
2021-02-15 21:58:21 +0100 <louk> I expect that type is function which takes list and returns int
2021-02-15 21:58:22 +0100_ht(~quassel@82-169-194-8.biz.kpn.net) (Remote host closed the connection)
2021-02-15 21:58:37 +0100ski. o O ( "order of operations" )
2021-02-15 21:58:51 +0100 <hololeap> louk, can you show it as it's written in haskell?
2021-02-15 21:59:14 +0100 <louk> here:
2021-02-15 21:59:28 +0100 <louk> :t map (read :: String -> Int)
2021-02-15 21:59:29 +0100 <louk> map (read :: String -> Int) :: [String] -> [Int]
2021-02-15 21:59:30 +0100 <lambdabot> [String] -> [Int]
2021-02-15 21:59:34 +0100 <ephemient> (>>=) :: m a -> (a -> m b) -> m b. in order to apply it to IO [String], m = IO and a = [String], therefore the next argument is [String] -> IO b
2021-02-15 21:59:40 +0100 <louk> it takes list of strings and returns list of ints
2021-02-15 21:59:47 +0100 <louk> and then this is applied to "sum"
2021-02-15 21:59:54 +0100 <louk> sum [int] -> int?
2021-02-15 21:59:56 +0100jpds(~jpds@gateway/tor-sasl/jpds)
2021-02-15 22:00:01 +0100 <hololeap> ok, so `[String] -> Int`
2021-02-15 22:00:21 +0100 <louk> yes, so I expect the above to be [String] -> [Int]
2021-02-15 22:00:26 +0100 <ephemient> [String] -> [Int] =/= [String] -> IO b
2021-02-15 22:00:26 +0100 <louk> yes, so I expect the above to be [String] -> Int
2021-02-15 22:00:42 +0100 <louk> I understand the error message says that
2021-02-15 22:00:44 +0100 <louk> but
2021-02-15 22:00:44 +0100 <hololeap> what is (>>=) expecting on its right-hand side?
2021-02-15 22:00:57 +0100 <monochrom> What ephemient said.
2021-02-15 22:01:06 +0100 <monochrom> When are you going to listen, for a change?
2021-02-15 22:01:19 +0100borne(~fritjof@200116b864008e00d8bba186ea6b909e.dip.versatel-1u1.de)
2021-02-15 22:01:23 +0100 <monochrom> Why do you ask, if you won't read answers?
2021-02-15 22:01:23 +0100 <louk> I think >>= takes IO [String] and on the right side calls function with that [String]
2021-02-15 22:01:26 +0100weikum(~weikum@90.218.153.39)
2021-02-15 22:01:36 +0100 <louk> it's not easy to comprehend those answers
2021-02-15 22:01:57 +0100 <monochrom> Then you ask "what does your answer mean?" not pretend they never happened.
2021-02-15 22:02:05 +0100 <monochrom> I'm done.
2021-02-15 22:02:23 +0100 <hololeap> louk, in this case, since the left hand is `IO [String]`, the right side is expected to be `[String] -> IO a`
2021-02-15 22:02:43 +0100 <tomsmeding> (where a = Int in this case)
2021-02-15 22:02:52 +0100 <turion> louk: Don't worry :) it takes some time
2021-02-15 22:03:22 +0100 <hololeap> `sum . (map (read :: String -> Int))` :: [String] -> Int
2021-02-15 22:03:43 +0100 <hololeap> but we need a function of the type `String -> IO Int`
2021-02-15 22:04:02 +0100 <louk> Okay this is another thing which I was missing
2021-02-15 22:04:03 +0100 <NieDzejkob> okay, I read some more about GADTs. Is there a way of handling type variables in the guest language? I think I would need a way of generating type-level tokens at runtime
2021-02-15 22:04:04 +0100 <louk> (>>=) :: m a -> (a -> m b) -> m b
2021-02-15 22:04:09 +0100 <louk> -> ... m b
2021-02-15 22:04:30 +0100 <hololeap> louk: do you know how to convert a function of the type `[String] -> Int` to a function of the type `[String] -> IO Int` ?
2021-02-15 22:04:31 +0100 <louk> so if I have IO [String] then I must return IO something
2021-02-15 22:04:44 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-02-15 22:05:13 +0100 <ski> to use `>>=', yes the right operand must then be a function computing an `IO'-action as result
2021-02-15 22:05:17 +0100 <ephemient> yes. you cannot* escape IO
2021-02-15 22:05:46 +0100 <hololeap> hint: how do you convert `Int` to `IO Int` (really `Int` to `m Int`, where `m` is any Monad) ?
2021-02-15 22:06:13 +0100 <louk> hololeap: [String] -> IO Int was another thing I am looking how to do. I was searching for "constructor" like IO value
2021-02-15 22:06:15 +0100 <ski> @quote escape.having
2021-02-15 22:06:15 +0100 <lambdabot> shachaf says: You can never escape having learned monads. If you learn two monads, though, you can go back to only knowing one.
2021-02-15 22:06:28 +0100 <hololeap> what function has the signature `Monad m => a -> m a`
2021-02-15 22:06:43 +0100 <xsperry> :t return
2021-02-15 22:06:45 +0100 <lambdabot> Monad m => a -> m a
2021-02-15 22:06:50 +0100 <louk> return?
2021-02-15 22:07:13 +0100 <ski> `IO' is an abstract data type (like `Int',`Integer',`Float',`Double',`Char',`(->)',`Array',..), there are no data constructors exported
2021-02-15 22:07:16 +0100hseg(~gesh@IGLD-84-228-239-97.inter.net.il) (Quit: WeeChat 3.0)
2021-02-15 22:07:20 +0100 <ephemient> or `pure :: Applicative f => a -> f a` but yeah, same deal
2021-02-15 22:07:23 +0100 <superstar64> louk `pure` works too
2021-02-15 22:07:24 +0100usr25_tm(~usr25@unaffiliated/usr25)
2021-02-15 22:07:42 +0100 <tomsmeding> and in fact, pure = return
2021-02-15 22:08:24 +0100raehik1(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Quit: WeeChat 3.0)
2021-02-15 22:08:44 +0100jpds(~jpds@gateway/tor-sasl/jpds) (Ping timeout: 268 seconds)
2021-02-15 22:08:58 +0100 <hololeap> louk: correct, so how would you take your function: `sum . (map (read :: String -> Int))` :: [String] -> Int
2021-02-15 22:09:20 +0100 <hololeap> and combine it with `return`, to create a function with the signature `[String] -> IO Int`
2021-02-15 22:09:45 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 256 seconds)
2021-02-15 22:10:50 +0100 <superstar64> `(return .) :: Monad m => (a1 -> a2) -> a1 -> m a2`
2021-02-15 22:11:05 +0100usr25(~usr25@unaffiliated/usr25) (Ping timeout: 240 seconds)
2021-02-15 22:11:39 +0100 <louk> main = getArgs >>= return . sum . (map (read :: String -> Int))
2021-02-15 22:11:45 +0100 <louk> this is what compiled
2021-02-15 22:11:54 +0100 <louk> but where the return value went?
2021-02-15 22:12:02 +0100 <louk> I expected it to be program exit code
2021-02-15 22:12:06 +0100 <superstar64> return value?
2021-02-15 22:12:07 +0100 <louk> but
2021-02-15 22:12:12 +0100 <louk> it's main
2021-02-15 22:12:22 +0100 <louk> so I expected return code of main to be visible from shell
2021-02-15 22:12:41 +0100 <tomsmeding> the name 'return' has nothing to do with the 'return' you know from C, C++, Java, Python, Ruby, whatever
2021-02-15 22:12:53 +0100 <tomsmeding> its function is literally: wrap this thing in an IO value
2021-02-15 22:12:58 +0100 <tomsmeding> it does nothing more
2021-02-15 22:13:01 +0100 <louk> I understand
2021-02-15 22:13:03 +0100 <geekosaur> and in any case, the result of main is discarded, only side effects are retained
2021-02-15 22:13:03 +0100 <superstar64> you have to explicitily exit with System.Exit for that https://hackage.haskell.org/package/base-4.14.1.0/docs/System-Exit.html
2021-02-15 22:13:03 +0100 <louk> but
2021-02-15 22:13:15 +0100 <geekosaur> most commonly we do main :: IO ()
2021-02-15 22:13:18 +0100 <louk> ah ok, so main is discared
2021-02-15 22:13:40 +0100 <louk> ah ok, so result from main is discared
2021-02-15 22:13:41 +0100 <ski> only the result of its execution is discarded
2021-02-15 22:13:57 +0100 <monochrom> could be useful if I run main in ghci. I sometimes take advantage of that.
2021-02-15 22:13:59 +0100 <geekosaur> but occasionally it's useful to make main a recursive == looping action, so any return type is permitted
2021-02-15 22:14:25 +0100 <geekosaur> I should say result type ot avoid confusing it with `return`
2021-02-15 22:14:33 +0100 <superstar64> louk, try doing `print .` instead of `return .` to make your program have output
2021-02-15 22:14:42 +0100conal(~conal@64.71.133.70) (Quit: Computer has gone to sleep.)
2021-02-15 22:14:53 +0100 <ski> @hoogle exitWith
2021-02-15 22:14:54 +0100 <lambdabot> System.Exit exitWith :: ExitCode -> IO a
2021-02-15 22:14:54 +0100 <lambdabot> Protolude exitWith :: () => ExitCode -> IO a
2021-02-15 22:14:54 +0100 <lambdabot> BasePrelude exitWith :: () => ExitCode -> IO a
2021-02-15 22:15:02 +0100 <ski> @hoogle Int -> ExitCode
2021-02-15 22:15:04 +0100 <lambdabot> System.Exit ExitFailure :: Int -> ExitCode
2021-02-15 22:15:04 +0100 <lambdabot> GHC.IO.Exception ExitFailure :: Int -> ExitCode
2021-02-15 22:15:04 +0100 <lambdabot> Protolude ExitFailure :: Int -> ExitCode
2021-02-15 22:15:41 +0100jpds(~jpds@gateway/tor-sasl/jpds)
2021-02-15 22:16:01 +0100 <ski> @type System.Exit.exitWith . System.Exit.ExitFailure =<< readLn
2021-02-15 22:16:02 +0100 <lambdabot> IO b
2021-02-15 22:17:41 +0100fendor_(~fendor@178.165.129.143.wireless.dyn.drei.com)
2021-02-15 22:17:55 +0100 <ephemient> exitWith is effectively limited to 8 bits (that's all that POSIX will pass on to the parent process)
2021-02-15 22:17:57 +0100fendor(~fendor@178.165.129.143.wireless.dyn.drei.com) (Remote host closed the connection)
2021-02-15 22:18:24 +0100 <ephemient> that limitation has nothing to do with Haskell though
2021-02-15 22:18:59 +0100son0p(~son0p@181.136.122.143)
2021-02-15 22:19:30 +0100fendor_fendor
2021-02-15 22:19:58 +0100 <merijn> ephemient: Haskell's Report isn't limited to such petty things as posix, though...
2021-02-15 22:20:12 +0100 <ephemient> as an experiment, you can try `main = exitWith (ExitFailure {-various values-})`, then running your program in a shell, followed by `echo $?` which will print the exit code
2021-02-15 22:21:30 +0100fendor_(~fendor@178.165.129.143.wireless.dyn.drei.com)
2021-02-15 22:21:41 +0100jpds(~jpds@gateway/tor-sasl/jpds) (Ping timeout: 268 seconds)
2021-02-15 22:22:31 +0100 <ephemient> I'm not sure how to print exit status on Windows (don't have one lying around) but in theory those are 32-bit. not sure if the CRT function that GHC RTS calls retains that though
2021-02-15 22:23:16 +0100jedws(~jedws@101.184.202.248)
2021-02-15 22:23:18 +0100 <ski> % catch (exitWith (ExitFailure 257)) (\(ExitFailure n) -> return n)
2021-02-15 22:23:18 +0100 <yahb> ski: 257
2021-02-15 22:24:11 +0100Moe_Epsilon(~Moe_Epsil@195.140.213.38) (Remote host closed the connection)
2021-02-15 22:25:05 +0100jpds(~jpds@gateway/tor-sasl/jpds)
2021-02-15 22:25:54 +0100forgottenone(~forgotten@176.42.30.133) (Remote host closed the connection)
2021-02-15 22:27:16 +0100 <NieDzejkob> Oh looks like I'm looking for DataKinds
2021-02-15 22:27:36 +0100 <ski> for your GADTs ?
2021-02-15 22:30:05 +0100conal(~conal@64.71.133.70)
2021-02-15 22:30:43 +0100 <koala_man> how can I specify that a cabal dependency is on disk, so that cabal won't download and try to compile an older version?
2021-02-15 22:31:13 +0100 <koala_man> I want to build my code with ghc9, but to do that I have to make changes to regex-base and cabal "helpfully" downloads and tries to install the old version
2021-02-15 22:31:28 +0100 <dcoutts> koala_man: list it in your cabal.project file, e.g. point to the local directory or tarball.
2021-02-15 22:31:29 +0100 <sclv> you can use cabal.project files to vendor dependencies
2021-02-15 22:31:44 +0100 <sclv> also head.hackage as a repo often has fixed stuff already
2021-02-15 22:33:17 +0100 <NieDzejkob> ski: yeah, that way the guest type a -> b can correspond to Haskell type TyVar "a" -> TyVar "b"
2021-02-15 22:33:35 +0100fendor(~fendor@178.165.129.143.wireless.dyn.drei.com) (Remote host closed the connection)
2021-02-15 22:33:35 +0100Varis(~Tadas@unaffiliated/varis) (Remote host closed the connection)
2021-02-15 22:33:56 +0100 <ski> sounds painful
2021-02-15 22:34:04 +0100fendor_fendor
2021-02-15 22:34:14 +0100fendor(~fendor@178.165.129.143.wireless.dyn.drei.com) (Read error: Connection reset by peer)
2021-02-15 22:34:30 +0100superstar64(6ccefa7c@108-206-250-124.lightspeed.miamfl.sbcglobal.net) (Quit: Connection closed)
2021-02-15 22:34:50 +0100leah2(~leah@vuxu.org) (Ping timeout: 264 seconds)
2021-02-15 22:35:06 +0100 <koala_man> nice, thanks
2021-02-15 22:35:25 +0100fendor(~fendor@178.165.129.143.wireless.dyn.drei.com)
2021-02-15 22:36:15 +0100 <NieDzejkob> or, actually, I just need other code to not be able to prove to GHC that the two type variables are the same haskell type...
2021-02-15 22:36:51 +0100borne(~fritjof@200116b864008e00d8bba186ea6b909e.dip.versatel-1u1.de) (Ping timeout: 272 seconds)
2021-02-15 22:38:42 +0100 <NieDzejkob> I'm probably overengineering this
2021-02-15 22:40:12 +0100louk(~louk@216.164.51.248) (Quit: Leaving)
2021-02-15 22:40:37 +0100BitcoinMarkets(~BitcoinMa@217.146.82.202)
2021-02-15 22:42:39 +0100jpds(~jpds@gateway/tor-sasl/jpds) (Ping timeout: 268 seconds)
2021-02-15 22:43:02 +0100leah2(~leah@vuxu.org)
2021-02-15 22:43:14 +0100 <monochrom> koala_man: https://cabal.readthedocs.io/en/3.4/installing-packages.html#local-no-index-repositories can also be handy, in which case you don't need cabal.project and you can override hackage.
2021-02-15 22:43:48 +0100dhouthoo(~dhouthoo@ptr-eitgbj2w0uu6delkbrh.18120a2.ip6.access.telenet.be) (Quit: WeeChat 3.0)
2021-02-15 22:45:40 +0100justsomeguy(~justsomeg@unaffiliated/--/x-3805311)
2021-02-15 22:46:59 +0100 <koala_man> it was a single line cabal.project which worked well for testing
2021-02-15 22:47:26 +0100zebrag(~inkbottle@aaubervilliers-654-1-119-56.w86-198.abo.wanadoo.fr) (Quit: Konversation terminated!)
2021-02-15 22:47:47 +0100zebrag(~inkbottle@aaubervilliers-654-1-119-56.w86-198.abo.wanadoo.fr)
2021-02-15 22:49:40 +0100jpds(~jpds@gateway/tor-sasl/jpds)
2021-02-15 22:51:57 +0100geekosaur(82650c7a@130.101.12.122) (Quit: Connection closed)
2021-02-15 22:54:45 +0100geowiesnot(~user@i15-les02-ix2-87-89-181-157.sfr.lns.abo.bbox.fr) (Ping timeout: 240 seconds)
2021-02-15 22:55:05 +0100pie_(~pie_bnc]@unaffiliated/pie-/x-0787662) (Ping timeout: 256 seconds)
2021-02-15 22:55:07 +0100conal(~conal@64.71.133.70) (Quit: Computer has gone to sleep.)
2021-02-15 22:55:08 +0100vancz(~vancz@unaffiliated/vancz) (Ping timeout: 256 seconds)
2021-02-15 23:00:35 +0100nhs(~nhs@c-24-20-87-79.hsd1.or.comcast.net) (Ping timeout: 265 seconds)
2021-02-15 23:02:43 +0100 <edwardk> NieDzejkob: to generate type variables use quantification. this is how ST does it. How reflection does it.
2021-02-15 23:02:54 +0100Deide1(~Deide@217.155.19.23)
2021-02-15 23:02:59 +0100 <edwardk> runST :: (forall s. ST s a) -> a
2021-02-15 23:03:17 +0100 <edwardk> there's no other type that will typecheck as equal to that 's'.
2021-02-15 23:03:36 +0100 <edwardk> reify :: a -> (forall s. Reifies s a => Proxy s -> r) -> r
2021-02-15 23:03:41 +0100conal(~conal@64.71.133.70)
2021-02-15 23:03:45 +0100 <edwardk> same thing
2021-02-15 23:04:00 +0100 <edwardk> which is what makes reflect :: Reifies s a => proxy s -> a -- sound
2021-02-15 23:04:08 +0100 <NieDzejkob> how about named type constructors. Same thing?
2021-02-15 23:04:16 +0100Deide(~Deide@217.155.19.23) (Ping timeout: 240 seconds)
2021-02-15 23:04:49 +0100 <edwardk> yes, though you'll want do to it more like the cps'd style of reify than runST.
2021-02-15 23:05:26 +0100 <edwardk> niedzejkob :: (forall (s :: MyKind). Proxy s -> r) -> r
2021-02-15 23:05:35 +0100 <edwardk> now 's' looks like a type that inhabits kind MyKind
2021-02-15 23:06:19 +0100 <edwardk> niedzejkob f = f Proxy -- the implementation is also boring
2021-02-15 23:06:37 +0100turion(~turion@2a02:810d:8abf:c4a8:ec49:8e35:b593:1422) (Ping timeout: 272 seconds)
2021-02-15 23:06:47 +0100elfets(~elfets@ip-37-201-23-96.hsi13.unitymediagroup.de) (Quit: Leaving)
2021-02-15 23:06:48 +0100pavonia(~user@unaffiliated/siracusa) (Read error: Connection reset by peer)
2021-02-15 23:07:01 +0100 <edwardk> you need to work inside the call to that function with the 'fresh' type variable, hence the cps'd style
2021-02-15 23:07:20 +0100 <edwardk> well, you can package it up into a GADT
2021-02-15 23:07:58 +0100nhs(~nhs@c-24-20-87-79.hsd1.or.comcast.net)
2021-02-15 23:08:03 +0100 <edwardk> data Box where Box :: forall (s :: MyKind). Proxy s -> Box
2021-02-15 23:08:05 +0100fresheyeball(~isaac@ec2-35-155-97-88.us-west-2.compute.amazonaws.com)
2021-02-15 23:08:10 +0100dhil(~dhil@80.208.56.181) (Ping timeout: 256 seconds)
2021-02-15 23:08:31 +0100 <edwardk> and then case mybox of Box (Proxy :: Proxy s) -> ... gives you access to 's' in local scope.
2021-02-15 23:08:50 +0100 <edwardk> and you can make one with 'niedzejkob Box'
2021-02-15 23:08:54 +0100 <fresheyeball> is there a nice tool for automatically providing the church encoding for a given type?
2021-02-15 23:09:04 +0100 <edwardk> or just calling 'Box Proxy'
2021-02-15 23:09:45 +0100 <edwardk> fresheyeball: sounds like a fun project for GHC.Generics
2021-02-15 23:09:48 +0100 <tromp> is there a function Eq a => [a] -> [(Int,a)] that counts number of each element occuring ?
2021-02-15 23:10:05 +0100greety(bab7262d@186.183.38.45)
2021-02-15 23:10:35 +0100pavonia(~user@ip5f5bd527.dynamic.kabel-deutschland.de)
2021-02-15 23:10:37 +0100pavoniaGuest4963
2021-02-15 23:10:44 +0100 <edwardk> if the occurrences of each a's are in run you can use map length . group -- otherwise you're going to need to write something that gathers them
2021-02-15 23:11:06 +0100borne(~fritjof@200116b864008e00d8bba186ea6b909e.dip.versatel-1u1.de)
2021-02-15 23:11:30 +0100 <edwardk> in the discrimination package, rather than Data.List the 'group' function it offers does such non-adjacent gathering, but requires a stronger constraint than Eq, because with Eq you are stuck O(n^2)
2021-02-15 23:11:34 +0100 <tromp> that would just give the [Int]. but indeed they're not in runs
2021-02-15 23:11:34 +0100cole-h(~cole-h@c-73-48-197-220.hsd1.ca.comcast.net)
2021-02-15 23:11:49 +0100 <tromp> yes, can assme Ord
2021-02-15 23:11:55 +0100 <tromp> assume
2021-02-15 23:11:55 +0100 <edwardk> map (length &&& head) . betterGroup
2021-02-15 23:11:57 +0100 <edwardk> ok
2021-02-15 23:12:06 +0100 <edwardk> with Ord its easy enough
2021-02-15 23:12:49 +0100 <tromp> ok, can define that myself. just wondered if it's in some existing module
2021-02-15 23:14:16 +0100 <__monty__> Oh, so this is what happens when Europe goes to bed. edwardk just takes over answering *all* the questions. : )
2021-02-15 23:15:08 +0100 <edwardk> i think its in one of those foo-extras packages that has 5000 unrelated functions someone needed in their life (john goerzen has one i think, but meh)
2021-02-15 23:15:44 +0100 <edwardk> > toList $ fromListWith (+) ((,1) <$> ["hi","hi","bye","hi"])
2021-02-15 23:15:46 +0100 <lambdabot> error:
2021-02-15 23:15:46 +0100 <lambdabot> Ambiguous occurrence ‘toList’
2021-02-15 23:15:46 +0100 <lambdabot> It could refer to
2021-02-15 23:15:54 +0100 <edwardk> > Data.Foldable.toList $ fromListWith (+) ((,1) <$> ["hi","hi","bye","hi"])
2021-02-15 23:15:56 +0100 <lambdabot> error:
2021-02-15 23:15:56 +0100 <lambdabot> • Variable not in scope:
2021-02-15 23:15:56 +0100 <lambdabot> fromListWith :: (a0 -> a0 -> a0) -> [([Char], t1)] -> t0 a
2021-02-15 23:16:02 +0100 <edwardk> > Data.Foldable.toList $ M.fromListWith (+) ((,1) <$> ["hi","hi","bye","hi"])
2021-02-15 23:16:04 +0100 <lambdabot> [1,3]
2021-02-15 23:16:14 +0100 <edwardk> > M.toList $ M.fromListWith (+) ((,1) <$> ["hi","hi","bye","hi"])
2021-02-15 23:16:16 +0100 <lambdabot> [("bye",1),("hi",3)]
2021-02-15 23:16:26 +0100 <edwardk> feel free to flip
2021-02-15 23:16:39 +0100 <edwardk> > fmap Data.Tuple.swap $ M.toList $ M.fromListWith (+) ((,1) <$> ["hi","hi","bye","hi"])
2021-02-15 23:16:42 +0100 <lambdabot> [(1,"bye"),(3,"hi")]
2021-02-15 23:16:49 +0100 <fresheyeball> is it possible to make a church encoded type pattern matchable with pattern synonyms"
2021-02-15 23:16:51 +0100 <fresheyeball> ?
2021-02-15 23:16:59 +0100 <edwardk> fresheyeball: yes
2021-02-15 23:17:04 +0100 <tromp> thx, edwardk !
2021-02-15 23:17:22 +0100 <edwardk> though with current pattern synonyms you won't be able to check completeness of the patterns
2021-02-15 23:17:43 +0100 <fresheyeball> that's ok for now
2021-02-15 23:18:06 +0100 <fresheyeball> it's only worth it to do this if I get a performance bump by switiching to church encoding
2021-02-15 23:18:12 +0100 <fresheyeball> right now that is not yet determined
2021-02-15 23:18:16 +0100Guest4963(~user@ip5f5bd527.dynamic.kabel-deutschland.de) (Changing host)
2021-02-15 23:18:16 +0100Guest4963(~user@unaffiliated/siracusa)
2021-02-15 23:18:27 +0100 <fresheyeball> edwardk: what would that look like?
2021-02-15 23:18:37 +0100 <edwardk> one sec. let me write the library
2021-02-15 23:18:48 +0100 <fresheyeball> lol
2021-02-15 23:18:49 +0100 <dolio> Pattern matching on Church encodings is basically the worst operation.
2021-02-15 23:19:01 +0100 <fresheyeball> dolio: can you expand on that?
2021-02-15 23:19:12 +0100 <fresheyeball> I only want to do this so I can get to compiling faster
2021-02-15 23:19:37 +0100__monty__(~toonn@unaffiliated/toonn) (Quit: leaving)
2021-02-15 23:20:53 +0100 <edwardk> church encoding builds a big recursive data type. if you use something like scott-encoding you can peel a single layer off
2021-02-15 23:21:06 +0100 <fresheyeball> I have never heard of scott-encoding
2021-02-15 23:21:12 +0100 <edwardk> pattern matching one layer in church means rebuilding everything in the layers underneath
2021-02-15 23:21:49 +0100 <fresheyeball> I just want to avoid the intemediate data type here
2021-02-15 23:21:55 +0100 <edwardk> think of a list. do you define it church style? List a = forall r. (a -> r -> r) -> r -> r
2021-02-15 23:21:57 +0100 <dolio> Church encoding optimizes some recursive operations at the expense of making one-step pattern matching bad. To peel off the outer layer of an encoded type you must rebuild the rest of the structure.
2021-02-15 23:22:15 +0100 <dolio> It's not just an everything-is-just-faster thing.
2021-02-15 23:22:28 +0100 <fresheyeball> ok so
2021-02-15 23:22:30 +0100 <fresheyeball> newtype Maybe a = Maybe { unMaybe :: forall r. r -> (a -> r) -> r }
2021-02-15 23:22:34 +0100 <fresheyeball> is a church maybe for example
2021-02-15 23:22:36 +0100 <edwardk> or do you define it like data List a = List (forall r. (a -> List a -> r) -> r -> r)
2021-02-15 23:22:39 +0100 <fresheyeball> what would a scott maybe look like?
2021-02-15 23:22:46 +0100 <edwardk> it is both the scott and the church encoding for that type
2021-02-15 23:22:49 +0100 <dolio> For non-recursive types they're the same.
2021-02-15 23:22:58 +0100coot(~coot@37.30.55.141.nat.umts.dynamic.t-mobile.pl) (Quit: coot)
2021-02-15 23:23:26 +0100 <fresheyeball> https://gitlab.com/fresheyeball/Shpadoinkle/-/blob/master/core/Shpadoinkle/Core.hs#L91
2021-02-15 23:23:32 +0100 <fresheyeball> so nitty gritty here
2021-02-15 23:23:38 +0100 <fresheyeball> this is the type in question
2021-02-15 23:23:39 +0100 <edwardk> notice how 'r' occurs double negated in Church but not explicitly so in Mogensen-Scott?
2021-02-15 23:23:45 +0100Guest4963pavonia
2021-02-15 23:23:57 +0100 <fresheyeball> I did some profiling and learned that a good bit of performance is eaten up building this type
2021-02-15 23:24:06 +0100 <fresheyeball> and then traversing it to encode it as another encoding for JavaScript
2021-02-15 23:24:08 +0100Deide1Deide
2021-02-15 23:24:21 +0100 <edwardk> if you need to case analyze on it with patterns church is bad.
2021-02-15 23:24:22 +0100 <fresheyeball> I thought perhaps church encoding the thing, would avoid this overhead
2021-02-15 23:24:31 +0100 <fresheyeball> so let's say Scott encoding
2021-02-15 23:24:41 +0100 <fresheyeball> does my approach sound reasonable to you?
2021-02-15 23:24:47 +0100 <edwardk> if you just need to write a function that is defined by cases and recurses the same way all the way down and you can just sort of describe that as a fold like operation its fine
2021-02-15 23:24:51 +0100 <dolio> Scott encodings are equivalent to data types.
2021-02-15 23:25:14 +0100 <fresheyeball> Am I off base thinking that if I changing to a function based encoding with `newtype` will make this go faster?
2021-02-15 23:25:25 +0100average(uid473595@gateway/web/irccloud.com/x-rcnzlofithcjrydg) (Quit: Connection closed for inactivity)
2021-02-15 23:25:26 +0100 <fresheyeball> is there something else you might recommend to get some speedup here?
2021-02-15 23:26:00 +0100 <edwardk> ChurchHtml m a = forall r. ((Text -> [(Text, Prop m a)] -> [r] -> r) -> JSM RawNode -> Text -> r)
2021-02-15 23:26:10 +0100 <edwardk> then don't use patterns to access it
2021-02-15 23:26:15 +0100 <edwardk> use the big eliminator you have there
2021-02-15 23:26:21 +0100sord937(~sord937@gateway/tor-sasl/sord937) (Quit: sord937)
2021-02-15 23:26:25 +0100 <edwardk> if you can do it in one pass like that, then church might be a win
2021-02-15 23:26:51 +0100 <edwardk> if you have to look at the outer most constructor then totally change control flow and decide whether you are doing more susbtitution or more pattern matching? then church will be a loss.
2021-02-15 23:27:01 +0100 <fresheyeball> edwardk: the only functions that really use patterns are in that same file
2021-02-15 23:27:28 +0100 <fresheyeball> it's just map and hoist stuff, can those be refactored to not use patterns?
2021-02-15 23:27:31 +0100 <fresheyeball> right now I think yes
2021-02-15 23:27:52 +0100 <edwardk> cataH is already a conversion to church encoding
2021-02-15 23:28:00 +0100 <edwardk> just with the arguments flipped
2021-02-15 23:28:11 +0100 <edwardk> pull the last arg to the front and you get out a church encoded Html m a
2021-02-15 23:28:15 +0100 <fresheyeball> that's a neat observation
2021-02-15 23:28:22 +0100 <dolio> Encoding is only going to make things better if the way it's going to allow you to make some operations asymptotically faster, or not store something in memory or similar.
2021-02-15 23:28:25 +0100 <fresheyeball> I know there is some relationship between church encodings and catamorphisms
2021-02-15 23:28:37 +0100 <dolio> It's not an optimization because the in-memory representation is more efficient than a data type.
2021-02-15 23:28:39 +0100 <fresheyeball> dolio: right
2021-02-15 23:28:51 +0100 <fresheyeball> I don't know if this helps or not yet
2021-02-15 23:29:04 +0100 <fresheyeball> and I don't have the experience to infer
2021-02-15 23:29:21 +0100 <edwardk> hoistHtml is cheap on the church encoded rep
2021-02-15 23:29:52 +0100 <edwardk> as is map
2021-02-15 23:30:03 +0100 <fresheyeball> well that's good
2021-02-15 23:30:06 +0100 <edwardk> both are 'whole expression at a time' kinda things that church encoding is good at
2021-02-15 23:30:09 +0100 <fresheyeball> because that is most of what uses patterns
2021-02-15 23:30:34 +0100 <fresheyeball> wait, are you THEE edwardk?
2021-02-15 23:30:47 +0100 <edwardk> not sure about THEE, but i write a lot of haskell, yes
2021-02-15 23:30:58 +0100 <fresheyeball> k is kmett I mean
2021-02-15 23:31:01 +0100 <edwardk> yes
2021-02-15 23:31:10 +0100 <fresheyeball> well you rock
2021-02-15 23:31:14 +0100 <edwardk> thanks!
2021-02-15 23:31:42 +0100 <fresheyeball> nubProps is a bad one
2021-02-15 23:31:58 +0100 <fresheyeball> I know some ways to improve it by using `Map` instead
2021-02-15 23:32:09 +0100 <fresheyeball> what does your intuition say about church on that function?
2021-02-15 23:32:44 +0100 <fresheyeball> also I don't understand how your ChurchHtml manages to not be recursive
2021-02-15 23:32:54 +0100 <edwardk> go look at list first
2021-02-15 23:33:00 +0100 <edwardk> before jumping in the deep end
2021-02-15 23:33:03 +0100conal(~conal@64.71.133.70) (Quit: Computer has gone to sleep.)
2021-02-15 23:33:18 +0100 <edwardk> List a = forall r. (a -> r -> r) -> r -> r -- is defining a list in terms of what foldr for that list is
2021-02-15 23:33:20 +0100 <edwardk> :t foldr
2021-02-15 23:33:21 +0100 <lambdabot> Foldable t => (a -> b -> b) -> b -> t a -> b
2021-02-15 23:33:33 +0100 <edwardk> :t \l f z -> foldr f z l
2021-02-15 23:33:34 +0100 <lambdabot> Foldable t => t a -> (a -> b -> b) -> b -> b
2021-02-15 23:33:41 +0100 <fresheyeball> hmm
2021-02-15 23:33:59 +0100 <edwardk> you tell me what you want if you see a cons and what you want if you see a nil.
2021-02-15 23:34:00 +0100conal(~conal@64.71.133.70)
2021-02-15 23:34:02 +0100 <fresheyeball> edwardk: you are not hirable are you? lol
2021-02-15 23:34:11 +0100 <edwardk> probably not in your price range ;)
2021-02-15 23:34:15 +0100 <fresheyeball> this process is going to take me alot of time it seems
2021-02-15 23:34:42 +0100pfurla(~pfurla@ool-182ed2e2.dyn.optonline.net) (Quit: gone to sleep. ZZZzzz…)
2021-02-15 23:35:03 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-02-15 23:35:37 +0100epicte7us(~epictetus@ip72-194-215-136.sb.sd.cox.net) (Read error: Connection reset by peer)
2021-02-15 23:35:57 +0100monochromcries
2021-02-15 23:37:00 +0100 <Franciman> edwardk, I can hire you and pay 200k a year
2021-02-15 23:37:09 +0100 <monochrom> I have [e| MyCtor $(f x)|] and I was wondering why the semantics changes between TemplateHaskell and TemplateHaskellQuotes
2021-02-15 23:37:10 +0100 <Franciman> but we would be doing react + js
2021-02-15 23:37:28 +0100 <Franciman> + cleaning bathrooms
2021-02-15 23:37:50 +0100 <Franciman> maybe 200k a year is too little in the US
2021-02-15 23:37:58 +0100 <edwardk> franciman: wait until bitcoin crashes and i'm poor
2021-02-15 23:38:01 +0100 <monochrom> "Clearly", it is a syntactic change in the first place. Under TemplateHaskellQuotes, we're looking at [e| MyCtor $ (f x)|], where "$" is just Prelude.$
2021-02-15 23:38:25 +0100 <Franciman> edwardk, lol I hope not
2021-02-15 23:40:37 +0100 <monochrom> edwardk registered himself on one of those "get a tutor" websites, and quoted an astronomical rate.
2021-02-15 23:40:47 +0100 <Franciman> :)
2021-02-15 23:40:54 +0100 <edwardk> monochrom: didn't stop people from paying it
2021-02-15 23:41:01 +0100 <monochrom> "I can teach you Haskell for $5e10 per hour" or something.
2021-02-15 23:41:21 +0100greety(bab7262d@186.183.38.45) ()
2021-02-15 23:41:31 +0100 <edwardk> monochrom: at that price you only need one hit ;)
2021-02-15 23:43:01 +0100tekacs(tekacs@2a01:7e00::f03c:91ff:fe93:43aa)
2021-02-15 23:45:52 +0100usr25_tm(~usr25@unaffiliated/usr25) (Read error: Connection reset by peer)
2021-02-15 23:46:27 +0100usr25(~usr25@unaffiliated/usr25)
2021-02-15 23:47:27 +0100zebrag(~inkbottle@aaubervilliers-654-1-119-56.w86-198.abo.wanadoo.fr) (Quit: Konversation terminated!)
2021-02-15 23:47:46 +0100zebrag(~inkbottle@aaubervilliers-654-1-119-56.w86-198.abo.wanadoo.fr)
2021-02-15 23:48:22 +0100 <edwardk> i think the rate was actually something on the order of a few hundred/hour or so, which is honestly a reasonable consulting rate for most, but doing it as a one-off is not worth billing. Folks just have level set an expectation that tutoring is an activity that you get done for cheap.
2021-02-15 23:48:22 +0100b4er(~b4er@193.27.14.109) (Remote host closed the connection)
2021-02-15 23:49:28 +0100 <edwardk> https://www.lesswrong.com/posts/MzKKi7niyEqkBPnyu/your-cheerful-price
2021-02-15 23:52:14 +0100 <hololeap> the linear-types implementation page talks about Multiplicity which can either be One or Omega
2021-02-15 23:52:37 +0100michalz(~user@185.246.204.93) (Remote host closed the connection)
2021-02-15 23:52:37 +0100 <hololeap> can someone show me an example of each in practice?
2021-02-15 23:52:42 +0100 <Franciman> omega means infinite
2021-02-15 23:52:47 +0100 <hololeap> i'm not very familiar with linear types in general
2021-02-15 23:52:47 +0100 <Franciman> it is the regular usage
2021-02-15 23:52:55 +0100 <Franciman> you can use any time you want
2021-02-15 23:53:15 +0100 <Franciman> (omega is the smallest "natural number" that is infinite)
2021-02-15 23:53:35 +0100 <Franciman> an example of a thing that you can't write if a variable is marked as One
2021-02-15 23:53:38 +0100 <Franciman> is
2021-02-15 23:53:41 +0100 <Franciman> a -> (a, a)
2021-02-15 23:53:44 +0100 <Franciman> it would be
2021-02-15 23:53:48 +0100 <Franciman> f :: a -> (a, a)
2021-02-15 23:53:51 +0100 <Franciman> f a = (a, a)
2021-02-15 23:53:53 +0100 <Franciman> but inside f
2021-02-15 23:53:59 +0100 <Franciman> you can use a at most once
2021-02-15 23:54:03 +0100 <Franciman> if its multiplicity is One
2021-02-15 23:54:10 +0100 <edwardk> hololeap: omega is 'what you use day to day. one would be something like a file handle you want to ensure the user closes at the end, but are willing to thread through intermediate operations by hand
2021-02-15 23:54:34 +0100 <edwardk> ooh, i should go update my transients code to use linear haskell. no users, can move it to ghc 9
2021-02-15 23:54:45 +0100 <monochrom> haha
2021-02-15 23:54:52 +0100 <hololeap> ok
2021-02-15 23:55:40 +0100 <hololeap> so would this be valid? `const :: a # One -> b # Omega -> a`
2021-02-15 23:56:44 +0100 <Franciman> what is the implementation?
2021-02-15 23:56:48 +0100 <Franciman> const a b = a
2021-02-15 23:56:49 +0100cr3(~cr3@192-222-143-195.qc.cable.ebox.net) (Quit: leaving)
2021-02-15 23:56:49 +0100 <hololeap> and equivalent to `const a #-> b -> a` ?
2021-02-15 23:56:54 +0100 <Franciman> how many times do you use a ?
2021-02-15 23:56:55 +0100 <hololeap> https://gitlab.haskell.org/ghc/ghc/-/wikis/linear-types/implementation
2021-02-15 23:57:46 +0100 <hololeap> Franciman: i'm using the standard definition of const: \a _ -> a
2021-02-15 23:57:49 +0100 <Franciman> ok
2021-02-15 23:57:56 +0100 <Franciman> so how many times do you use a in the body of the lambda?
2021-02-15 23:58:06 +0100 <hololeap> exactly once
2021-02-15 23:58:19 +0100 <Franciman> how many times are you using b (you called it _) ?
2021-02-15 23:58:24 +0100 <hololeap> zero
2021-02-15 23:58:37 +0100 <Franciman> now the multiplicity
2021-02-15 23:58:44 +0100 <Franciman> indicates the Max amount of times you can use a var
2021-02-15 23:58:47 +0100 <Franciman> right?
2021-02-15 23:58:49 +0100 <Franciman> so it typechecks
2021-02-15 23:59:08 +0100 <hololeap> ok, just confirming
2021-02-15 23:59:16 +0100vicfred(~vicfred@unaffiliated/vicfred) (Quit: Leaving)
2021-02-15 23:59:34 +0100 <Franciman> the -#> arrow
2021-02-15 23:59:36 +0100Axman6races to become edwardk's first transients user
2021-02-15 23:59:42 +0100 <Franciman> is basically:
2021-02-15 23:59:47 +0100 <Franciman> a # One -> b