Logs: freenode/#haskell
| 2020-09-23 21:54:37 | <EvanR> | if constructors are functions, then they are surely inject. ... right |
| 2020-09-23 21:54:44 | <EvanR> | injective |
| 2020-09-23 21:55:02 | <monochrom> | Nat(Z, S) is also lifted by DataKinds, that's your subwoofer. Also it's "higher" not "lower", so I guess tweezer? |
| 2020-09-23 21:55:14 | <dolio> | Constructors of existential types aren't injective necessarily. |
| 2020-09-23 21:55:31 | <EvanR> | how so |
| 2020-09-23 21:55:52 | <EvanR> | monochrom you mean tweeter? |
| 2020-09-23 21:56:13 | <dolio> | Well, `data E where MkE :: a -> E` only has one value, according to parametricity. |
| 2020-09-23 21:56:22 | × | kip quits (sid71464@gateway/web/irccloud.com/x-jxtgcqbxtilezygb) (Ping timeout: 260 seconds) |
| 2020-09-23 21:56:29 | <dolio> | So it can't be injective. |
| 2020-09-23 21:56:41 | <EvanR> | 'the count according to parametricity' always tripped me up |
| 2020-09-23 21:56:58 | × | wpcarro quits (sid397589@gateway/web/irccloud.com/x-rezhuutabpzihnck) (Ping timeout: 260 seconds) |
| 2020-09-23 21:56:58 | × | jackdk quits (sid373013@gateway/web/irccloud.com/x-lcbyflyjffmioate) (Ping timeout: 260 seconds) |
| 2020-09-23 21:57:42 | → | ixlun joins (~matthew@213.205.241.18) |
| 2020-09-23 21:57:58 | <EvanR> | if you specialize E so a is Bool, MkE True = MkE False ? |
| 2020-09-23 21:58:01 | → | wpcarro joins (sid397589@gateway/web/irccloud.com/x-qorfieghthxovgmb) |
| 2020-09-23 21:58:08 | <dolio> | Yes. |
| 2020-09-23 21:58:12 | <phadej> | no |
| 2020-09-23 21:58:13 | → | jackdk joins (sid373013@gateway/web/irccloud.com/x-rtjmdlcvnejwwxlz) |
| 2020-09-23 21:58:18 | <EvanR> | round 1 fight |
| 2020-09-23 21:58:19 | <monochrom> | Yeah tweeters. |
| 2020-09-23 21:58:30 | → | kip joins (sid71464@gateway/web/irccloud.com/x-dstccjprfxvtgpru) |
| 2020-09-23 21:58:35 | → | W3BV1P3R joins (~W3BV1P3R@c-73-5-91-226.hsd1.tn.comcast.net) |
| 2020-09-23 21:58:38 | × | W3BV1P3R quits (~W3BV1P3R@c-73-5-91-226.hsd1.tn.comcast.net) (Max SendQ exceeded) |
| 2020-09-23 21:58:42 | <phadej> | Haskell just doesnt' allow us to extract types of existentials (sigma types) |
| 2020-09-23 21:58:48 | <int-e> | monochrom: Not "twits"? |
| 2020-09-23 21:58:54 | <phadej> | but Sigma Bool True /= Sigma Bool False |
| 2020-09-23 21:58:54 | <dolio> | That's why they're the same. |
| 2020-09-23 21:59:00 | <dolio> | Existential types aren't sigma types. |
| 2020-09-23 21:59:05 | <EvanR> | "the same" ... |
| 2020-09-23 21:59:20 | <monochrom> | A loudspeaker specialized for high pitches. |
| 2020-09-23 21:59:34 | <EvanR> | i think this is where the convo sinks below the surface of the sand trap |
| 2020-09-23 21:59:46 | <monochrom> | The opposite of subwoofer (loudspeaker specialized for low bass). |
| 2020-09-23 21:59:47 | <int-e> | Oh. |
| 2020-09-23 22:00:02 | <phadej> | ok sorry, indeed existential is `Sigma Type id` |
| 2020-09-23 22:00:14 | <ixlun> | Hi all, I'm trying to bootstrap cabal-install and I'm getting this error: http://ix.io/2yyb |
| 2020-09-23 22:00:23 | <ixlun> | Just wondered if anyone has any ideas? |
| 2020-09-23 22:00:29 | → | nbloomf joins (~nbloomf@2600:1700:83e0:1f40:a8a2:2518:6bde:e621) |
| 2020-09-23 22:01:06 | → | parsnip joins (sid147265@gateway/web/irccloud.com/x-ruqytqnmciyoyqlr) |
| 2020-09-23 22:01:17 | <monochrom> | Are you sure you must bootstrap cabal-install? |
| 2020-09-23 22:01:29 | → | W3BV1P3R joins (~W3BV1P3R@c-73-5-91-226.hsd1.tn.comcast.net) |
| 2020-09-23 22:01:33 | × | W3BV1P3R quits (~W3BV1P3R@c-73-5-91-226.hsd1.tn.comcast.net) (Max SendQ exceeded) |
| 2020-09-23 22:01:35 | <parsnip> | lazy question: Couldn't match type ‘JsonResponse a0’ with ‘Value’ |
| 2020-09-23 22:02:03 | <parsnip> | expected Req Value, actual Req (JsonResponse a0) |
| 2020-09-23 22:02:05 | <monochrom> | ghc-9.1 release candidate?! |
| 2020-09-23 22:02:06 | <dolio> | They are extensionally equal. |
| 2020-09-23 22:02:09 | <EvanR> | you basically claimed that the existential above effectively loses information |
| 2020-09-23 22:02:24 | <dolio> | Yes, hiding information is the purpose of existential types. |
| 2020-09-23 22:02:25 | × | thecoffemaker quits (~thecoffem@unaffiliated/thecoffemaker) (Ping timeout: 240 seconds) |
| 2020-09-23 22:02:32 | <EvanR> | but if you add another method to recover hidden info from an extistentially typed value, how could it be lost |
| 2020-09-23 22:02:37 | <ixlun> | monochrom: Yep, I don |
| 2020-09-23 22:02:56 | <ixlun> | don't have any haskell packages on this system |
| 2020-09-23 22:02:59 | <EvanR> | i think we need stephen hawking for this one |
| 2020-09-23 22:03:13 | <ixlun> | so I've built GHC and I'm trying to build cabal to get up and running |
| 2020-09-23 22:03:40 | → | thecoffemaker joins (~thecoffem@unaffiliated/thecoffemaker) |
| 2020-09-23 22:04:19 | × | Raito_Bezarius quits (~Raito_Bez@unaffiliated/raito-bezarius/x-8764578) (Quit: WeeChat 2.9) |
| 2020-09-23 22:04:22 | <phadej> | https://gist.github.com/phadej/828a8e8daf3ec4d90f694f5bafa79356 <- existentials as sigma types |
| 2020-09-23 22:04:30 | <phadej> | and in agda you can tell them appart easilty |
| 2020-09-23 22:04:38 | <phadej> | so MkE True /= MkE False |
| 2020-09-23 22:04:40 | <dolio> | Haskell isn't Agda. |
| 2020-09-23 22:04:48 | <monochrom> | I don't know whether this is an incompatibility betweeh GHC 9.1.0-RC and cabal-install-3.2, or it is a deeper problem. |
| 2020-09-23 22:04:52 | <phadej> | dolio: soon it will be |
| 2020-09-23 22:05:01 | <EvanR> | in Haskell you could include a way of recovering hidden info as part of your API |
| 2020-09-23 22:05:09 | <int-e> | ixlun: "hecking installed packages for ghc-9.1.0.20200923"... probably not a good idea to use an unrelease ghc, but if you do you probably need a development version of Cabal/cabal-install as well. |
| 2020-09-23 22:05:12 | → | W3BV1P3R joins (~W3BV1P3R@c-73-5-91-226.hsd1.tn.comcast.net) |
| 2020-09-23 22:05:16 | × | W3BV1P3R quits (~W3BV1P3R@c-73-5-91-226.hsd1.tn.comcast.net) (Max SendQ exceeded) |
| 2020-09-23 22:05:24 | × | chaosmasttter quits (~chaosmast@p200300c4a714f1015045819720a2acdb.dip0.t-ipconnect.de) (Quit: WeeChat 2.9) |
| 2020-09-23 22:05:44 | → | W3BV1P3R joins (~W3BV1P3R@c-73-5-91-226.hsd1.tn.comcast.net) |
| 2020-09-23 22:05:48 | × | W3BV1P3R quits (~W3BV1P3R@c-73-5-91-226.hsd1.tn.comcast.net) (Max SendQ exceeded) |
| 2020-09-23 22:05:54 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 2020-09-23 22:06:16 | <parsnip> | would you recommend http-client or req library? |
| 2020-09-23 22:06:19 | <phadej> | dolio: have you better argumented explanation how Haskell's existential types are different from that Agda encoding. sans that just hasn't internal power to reason about them |
| 2020-09-23 22:06:21 | <monochrom> | I am also skeptical about the inference "no haskell package, therefore must build from source", but I guess I don't know your system. |
| 2020-09-23 22:06:25 | <int-e> | ixlun: if you built ghc from source (as you said) you can look under libraries/Cabal for sources of those |
| 2020-09-23 22:06:32 | × | hyperisco_ quits (~hyperisco@d192-186-117-226.static.comm.cgocable.net) (Ping timeout: 260 seconds) |
| 2020-09-23 22:06:52 | × | ubert quits (~Thunderbi@91.141.1.30.wireless.dyn.drei.com) (Ping timeout: 272 seconds) |
| 2020-09-23 22:07:06 | × | lisq quits (~quassel@lis.moe) (Quit: lisq) |
| 2020-09-23 22:07:12 | <ixlun> | Yeah, that's what confuses me, GHC's version of cabal was fine |
| 2020-09-23 22:07:17 | → | lisq joins (~quassel@lis.moe) |
| 2020-09-23 22:07:23 | <ixlun> | As you say, I probably need a dev version of cabal-install. |
| 2020-09-23 22:07:37 | <monochrom> | Must you use 9.1? |
| 2020-09-23 22:08:22 | × | falafel quits (~falafel@2605:e000:1527:d491:f090:20fe:cddf:2a1a) (Ping timeout: 260 seconds) |
| 2020-09-23 22:08:22 | <int-e> | ixlun: But it's saner to just use ghc-8.10.2 for now. |
| 2020-09-23 22:08:33 | <EvanR> | extensional equality is apparently relative to a world of things you're allowed to try and check for a difference |
| 2020-09-23 22:08:48 | × | ahmr88 quits (~ahmr88@cpc85006-haye22-2-0-cust131.17-4.cable.virginm.net) (Remote host closed the connection) |
| 2020-09-23 22:09:03 | <monochrom> | Eqaulity itself already is. |
| 2020-09-23 22:10:03 | <EvanR> | extensional equality being a subequality of "equality itself" ... xD |
| 2020-09-23 22:10:14 | <monochrom> | Leibniz law "if x equals y then for all f, f x equals f y". The devil of the detail is what kind of f's you are allowed. |
| 2020-09-23 22:10:31 | <EvanR> | ok, leibniz equality |
| 2020-09-23 22:11:07 | <glguy> | reasoning starts to get hard when you admit things because they are true in other languages, or when you pull aside the runtime-abstractions the language attempts to provide and look into the RTS |
| 2020-09-23 22:11:14 | <monochrom> | "I have not observed any unobservable inequality." http://www.vex.net/~trebla/humour/tautologies.html #9 :) |
| 2020-09-23 22:11:45 | <EvanR> | nothing unreal exists |
| 2020-09-23 22:12:15 | <ixlun> | int-e: I'd prefer that, but I can't get an aarch64 version of ghc-8.10.2 built |
| 2020-09-23 22:12:25 | <ixlun> | there must have been a fix post then for aarch64 |
| 2020-09-23 22:12:36 | <monochrom> | In a nutshell, Leibniz equality is a way to say that inequality has to be observable inequality, you must have an f that tells the difference. |
| 2020-09-23 22:12:55 | <monochrom> | Think of f as an accessor. |
| 2020-09-23 22:13:04 | <EvanR> | doesn't that make it a negatively defined notion |
| 2020-09-23 22:13:13 | <phadej> | glguy: with dataToTag# I can differ `Exists True` and `Exists False` quite easily |
| 2020-09-23 22:13:25 | <EvanR> | equality = no method here to see any difference |
| 2020-09-23 22:13:26 | <phadej> | and I wouldn't even feel dirty |
| 2020-09-23 22:13:53 | <glguy> | phadej: then you're just not reasoning at the level of the language, you're doing something else |
All times are in UTC.