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.