Home freenode/#haskell: Logs Calendar

Logs on 2021-02-15 (freenode/#haskell)

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

All times are in UTC on 2021-02-15.