Newest at the top
| 2026-05-20 11:27:28 +0000 | <ski> | (of course, you could, if you wanted to, imagine an analysis which tracked each call, to figure out the actual concrete types, and perhaps specialize the code for `map' wrt that. however, this can't be done, in general, in Haskell, due to "polymorphic recursion", and also (if you enable that extensions) existentials) |
| 2026-05-20 11:27:26 +0000 | <mesaoptimizer> | that's a very lucid answer (given my current understanding of things), thanks |
| 2026-05-20 11:27:15 +0000 | puke | (~puke@user/puke) (Read error: error:0A000139:SSL routines::record layer failure) |
| 2026-05-20 11:26:02 +0000 | <ski> | still, they *are* assigned this abstract type (and the input list to have the partially abstract type `[a]'), which is their compile-time type, it's just that it omits some information (generalizes over it, in order to be able to call `map' from different contexts, with different types) |
| 2026-05-20 11:24:41 +0000 | <ski> | callback results) will have, in a particular call to `map' |
| 2026-05-20 11:24:35 +0000 | <ski> | e.g. in `map :: (a -> b) -> [a] -> [b]', it is not determined what type the individual input elements (nor the results of calling the callback) "really" has, at compile-time, in the sense that the input elements are determined to have type `a' (and the callback results to have type `b'), but these are abstract/opaque/hidden/forgotten/skolem, only a placeholder name for whichever type the actual elements (and |
| 2026-05-20 11:22:07 +0000 | <ski> | mesaoptimizer : yes (upto things like polymorphism / existentials. that does not mean they're really determined (as in actually found out) at run-time, though) |
| 2026-05-20 11:17:53 +0000 | <dutchie> | https://paste.tomsmeding.com/vXIxg2HR |
| 2026-05-20 11:13:43 +0000 | vanishingideal | (~vanishing@user/vanishingideal) vanishingideal |
| 2026-05-20 11:10:59 +0000 | <dutchie> | and then the compiler has proven that a value can only be True or False so it knows all cases are covered |
| 2026-05-20 11:10:25 +0000 | <dutchie> | hmm. my interpretation was that e.g. Bool doesn't exist, but True and False do |
| 2026-05-20 11:10:06 +0000 | wickedjargon | (~user@64.114.24.74) wickedjargon |
| 2026-05-20 11:09:53 +0000 | wickedjargon | (~user@64.114.24.74) (Read error: Connection reset by peer) |
| 2026-05-20 11:09:52 +0000 | <gentauro> | however, the `newtype` "wrapper" gets abstracted away (less memory usage per element) |
| 2026-05-20 11:09:01 +0000 | <gentauro> | dutchie: they are. How would you handle the cases for sum types (tagged unions) otherwise? |
| 2026-05-20 11:05:10 +0000 | danza | (~danza@user/danza) (Remote host closed the connection) |
| 2026-05-20 11:04:32 +0000 | fgarcia | (~lei@user/fgarcia) fgarcia |
| 2026-05-20 11:04:02 +0000 | fun-safe-math | (~fun-safe-@97-120-35-225.ptld.qwest.net) fun-safe-math |
| 2026-05-20 11:01:53 +0000 | fun-safe-math | (~fun-safe-@97-120-35-225.ptld.qwest.net) () |
| 2026-05-20 10:58:57 +0000 | nhar | (~noah@76.33.110.8) (Ping timeout: 245 seconds) |
| 2026-05-20 10:54:29 +0000 | nhar | (~noah@76.33.110.8) |
| 2026-05-20 10:40:37 +0000 | nhar | (~noah@76.33.110.8) (Ping timeout: 245 seconds) |
| 2026-05-20 10:39:51 +0000 | wickedjargon | (~user@64.114.24.74) wickedjargon |
| 2026-05-20 10:38:48 +0000 | Square2 | (~Square4@user/square) Square |
| 2026-05-20 10:36:20 +0000 | nhar | (~noah@76.33.110.8) |
| 2026-05-20 10:29:56 +0000 | bggd_ | (~bgg@2a01:e0a:fd5:f510:8bd7:8b66:ece0:ae9f) (Remote host closed the connection) |
| 2026-05-20 10:25:53 +0000 | <dutchie> | it's all just passing around instance dictionaries at most |
| 2026-05-20 10:25:47 +0000 | <dutchie> | Haskell types don't even exist at runtime, do they? |
| 2026-05-20 10:16:50 +0000 | fun-safe-math | (~fun-safe-@97-120-35-225.ptld.qwest.net) fun-safe-math |
| 2026-05-20 10:16:34 +0000 | fun-safe-math | (~fun-safe-@97-120-35-225.ptld.qwest.net) (Server closed connection) |
| 2026-05-20 10:08:55 +0000 | Pixi | (~Pixi@user/pixi) (Ping timeout: 272 seconds) |
| 2026-05-20 10:08:47 +0000 | yin_ | yin |
| 2026-05-20 10:08:22 +0000 | yin | (~zero@user/zero) (Ping timeout: 265 seconds) |
| 2026-05-20 10:08:10 +0000 | yin_ | (~zero@user/zero) zero |
| 2026-05-20 10:07:28 +0000 | nhar | (~noah@76.33.110.8) (Ping timeout: 256 seconds) |
| 2026-05-20 10:07:00 +0000 | Pixi` | (~Pixi@user/pixi) Pixi |
| 2026-05-20 10:06:02 +0000 | <mesaoptimizer> | merijn: I agree with that sentiment, but I still am unsure as to whether this holds for Haskell or not |
| 2026-05-20 10:06:00 +0000 | tremon | (~tremon@83.80.159.219) tremon |
| 2026-05-20 10:02:49 +0000 | nhar | (~noah@76.33.110.8) |
| 2026-05-20 09:48:32 +0000 | peterbecich | (~Thunderbi@71.84.33.135) (Ping timeout: 245 seconds) |
| 2026-05-20 09:44:47 +0000 | nhar | (~noah@76.33.110.8) (Ping timeout: 245 seconds) |
| 2026-05-20 09:44:20 +0000 | peterbecich | (~Thunderbi@71.84.33.135) peterbecich |
| 2026-05-20 09:44:02 +0000 | peterbecich | (~Thunderbi@71.84.33.135) (Quit: peterbecich) |
| 2026-05-20 09:43:57 +0000 | Guest54 | (~Guest54@2600:1700:4c00:68f0:c786:9a89:b897:4427) (Ping timeout: 245 seconds) |
| 2026-05-20 09:40:32 +0000 | <merijn> | mesaoptimizer: As opposed to what the dynamic languages have popularized as "types", which is merely a runtime tag indicated what kind of data a value has |
| 2026-05-20 09:40:13 +0000 | nhar | (~noah@76.33.110.8) |
| 2026-05-20 09:39:36 +0000 | <merijn> | mesaoptimizer: As a type theory pedantist it's impossible for "type of every expression is determined at compile time", because the entire definition of types is that they're static derived properties of source code, meaning that they're static derivability at compile time is a hard required of types |
| 2026-05-20 09:37:53 +0000 | <merijn> | If you're using lookup you should probably be using lookup of a different datatype |
| 2026-05-20 09:37:25 +0000 | <merijn> | zip, min, max, fst, and snd are all used all the time. curry/uncurry less frequently but still a lot |
| 2026-05-20 09:32:07 +0000 | CiaoSen | (~Jura@dynamic-046-114-156-027.46.114.pool.telefonica.de) (Ping timeout: 264 seconds) |