2025/02/01

Newest at the top

2025-02-01 04:57:43 +0100bitdex(~bitdex@gateway/tor-sasl/bitdex) bitdex
2025-02-01 04:57:05 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 248 seconds)
2025-02-01 04:54:25 +0100alfiee(~alfiee@user/alfiee) (Ping timeout: 248 seconds)
2025-02-01 04:50:13 +0100alfiee(~alfiee@user/alfiee) alfiee
2025-02-01 04:48:48 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-02-01 04:43:13 +0100td_(~td@i5387092E.versanet.de) (Ping timeout: 248 seconds)
2025-02-01 04:41:41 +0100 <euouae> :P
2025-02-01 04:41:41 +0100 <euouae> I'm good
2025-02-01 04:41:35 +0100 <EvanR> haskell is illogical so you're good
2025-02-01 04:41:28 +0100 <EvanR> type theory has to do with logic
2025-02-01 04:41:18 +0100 <euouae> perhaps only interested as it pertains to my purposes of writing software
2025-02-01 04:41:01 +0100 <euouae> I'm not super interested in the crazy type theory stuff; I already had some exposure with Coq so at least I saw it in action elsewhere
2025-02-01 04:40:26 +0100 <EvanR> but with rank N types and ScopedTypeVariables you need explicit forall for reasons
2025-02-01 04:40:19 +0100 <euouae> there was a lot of hype back then
2025-02-01 04:40:13 +0100 <euouae> yes I did
2025-02-01 04:40:07 +0100 <int-e> or is that forall b a. :-)
2025-02-01 04:39:57 +0100 <EvanR> there's really a forall a b . at the beginning of that
2025-02-01 04:39:45 +0100 <EvanR> map :: (a -> b) -> [a] -> [b]
2025-02-01 04:39:36 +0100 <EvanR> normally it's understood and not written in a type sig
2025-02-01 04:39:17 +0100 <EvanR> forall is how you introduce type variables for polymorphism purposes
2025-02-01 04:39:03 +0100 <int-e> Hmm. So you hit the brief window when there were half a dozen actively developed Haskell implementations? Maybe it was just four.
2025-02-01 04:37:30 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds)
2025-02-01 04:36:41 +0100 <euouae> I had attempted to learn haskell around 18 years ago I think
2025-02-01 04:36:32 +0100 <euouae> Well, I do remember when Hugs was a thing
2025-02-01 04:35:33 +0100 <int-e> (There was a time when hugs and GHC shared most of the base libraries but that's in the distant past. Like, over 2 decades ago.)
2025-02-01 04:34:50 +0100 <euouae> I see
2025-02-01 04:34:45 +0100 <int-e> The `base` that comes with GHC in particular is tied to GHC.
2025-02-01 04:34:30 +0100 <Leary> All type variables are implicitly or explicitly introduced with `forall`, though you need to enable language extensions so GHC will accept it.
2025-02-01 04:34:22 +0100 <int-e> What's your definition of "legal"? A lot of Haskell code only works with GHC.
2025-02-01 04:34:18 +0100 <euouae> Monomorphic value is fine; I'm just trying to say how I think CSE would be manually done if desired as an optimization (ensuring the value is monomorphic with type annotations)
2025-02-01 04:33:20 +0100 <euouae> e.g. stuff in Base
2025-02-01 04:33:15 +0100 <euouae> how come `forall` pops up in Haskell source code? is it legal haskell?
2025-02-01 04:30:42 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-02-01 04:29:14 +0100hughjfchen(~hughjfche@vmi556545.contaboserver.net) (Ping timeout: 272 seconds)
2025-02-01 04:26:51 +0100 <Leary> euouae: The question is somewhat confused. Perhaps you want to describe values, not types, with 'monomorphic' for `1 :: Int` and 'polymorphic' for `1 :: forall a. Num a => a`. That somewhat incidentally ends up capturing whether or not the value is expecting a constraint, since GHC ensures known constraints are supplied.
2025-02-01 04:19:54 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds)
2025-02-01 04:18:50 +0100 <int-e> You can cook up terminology like "instance-dependent value" but I don't think we have any standard terminology for this.
2025-02-01 04:18:04 +0100 <ncf> i suggest calling the former Num a => a and the latter a. don't make up words
2025-02-01 04:17:38 +0100 <int-e> Cop-out: it's a value. (Functions are values.)
2025-02-01 04:17:36 +0100 <ncf> a is all but concrete!
2025-02-01 04:15:19 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-02-01 04:14:38 +0100 <euouae> `Num a => a` versus `a`. Is it OK to call it concrete type (the latter) or do I call it something else? Wah is the former called?
2025-02-01 04:14:11 +0100 <euouae> because 1 as a type is .. a kind? not a type?
2025-02-01 04:14:00 +0100 <euouae> what is a type that is not like that called?
2025-02-01 04:11:34 +0100 <euouae> One would think `let x = 1 in (x, x)` is doing CSE by hand but... classes :D tricky stuff
2025-02-01 04:11:15 +0100 <euouae> <https://wiki.haskell.org/GHC_optimisations#Common_subexpression_elimination> "Long story short: "If you care about CSE, do it by hand." "
2025-02-01 04:05:39 +0100alfiee(~alfiee@user/alfiee) (Ping timeout: 246 seconds)
2025-02-01 04:04:21 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 248 seconds)
2025-02-01 04:01:30 +0100alfiee(~alfiee@user/alfiee) alfiee
2025-02-01 04:01:19 +0100ezzieyguywuf(~Unknown@user/ezzieyguywuf) ezzieyguywuf