Newest at the top
2025-02-01 04:57:43 +0100 | bitdex | (~bitdex@gateway/tor-sasl/bitdex) bitdex |
2025-02-01 04:57:05 +0100 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 248 seconds) |
2025-02-01 04:54:25 +0100 | alfiee | (~alfiee@user/alfiee) (Ping timeout: 248 seconds) |
2025-02-01 04:50:13 +0100 | alfiee | (~alfiee@user/alfiee) alfiee |
2025-02-01 04:48:48 +0100 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn |
2025-02-01 04:43:13 +0100 | td_ | (~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 +0100 | merijn | (~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 +0100 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn |
2025-02-01 04:29:14 +0100 | hughjfchen | (~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 +0100 | merijn | (~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 +0100 | merijn | (~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 +0100 | alfiee | (~alfiee@user/alfiee) (Ping timeout: 246 seconds) |
2025-02-01 04:04:21 +0100 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 248 seconds) |
2025-02-01 04:01:30 +0100 | alfiee | (~alfiee@user/alfiee) alfiee |
2025-02-01 04:01:19 +0100 | ezzieyguywuf | (~Unknown@user/ezzieyguywuf) ezzieyguywuf |