One of my goals for #mollytime is to avoid introducing a concept of errors into the language.
-
@aeva hehe.
LRDL has strong types but also relational inference. you can leave out types for the most part and it figures it out. that makes it much easier to write a valid program by accident.
it's the bureaucracy that murders flow. making you restate information that is obvious. good as a guard, but not every door inside a home needs a padlock. the C(++) folks eventually gave in and added auto. not that it would ever be enough.
@lritter I do like C++ for being something that strikes an ok-ish balance between making me stop and think, and letting me iterate quickly.
-
@lritter I do like C++ for being something that strikes an ok-ish balance between making me stop and think, and letting me iterate quickly.
@aeva i do like C++ for allowing me to write LRDL in it. (which acts as a DSL for C++)
-
anyways that got me wondering if the worth of a strongly typed language is that it is simply hard to write a valid program on accident, and nothing else
@aeva To paraphrase one of my favorite professor: "there is a tradeoff between how many correct programs you exclude, and how many incorrect programs you can exclude"
-
@aeva have you ever seen ProGraph
@glyph no. what is it?
-
anyways that got me wondering if the worth of a strongly typed language is that it is simply hard to write a valid program on accident, and nothing else
@aeva I think one of the benefits is that declarations are more self documented. In statically typed languages, I can go read a function signature or variable declaration and know all the information about it. I don’t need to go read the return statement of a function to know what type a variable will have. I don’t need to research what arguments are valid for a function, it just says it in the prototype.
-
@aeva certainly my experience - in essence, the function of most types of compile-time checking is to intentionally increase the minimum Hamming distance in the set of inputs the compiler accepts
@rygorous @aeva which is at odds with the design goal of decreasing the levenshtein distance to making a meaningful change to the program.
i guess it boils down to: what's the worst harm a typo can do in your language?
funny then to consider the shell which has no types and permits casual mistakes of devastating proportions.
-
@aeva I think one of the benefits is that declarations are more self documented. In statically typed languages, I can go read a function signature or variable declaration and know all the information about it. I don’t need to go read the return statement of a function to know what type a variable will have. I don’t need to research what arguments are valid for a function, it just says it in the prototype.
@Camwin oh yeah totally like, this is super obvious:
float Fnord(float A, float B, float C, float& D, void*** E, int F);
-
@Camwin oh yeah totally like, this is super obvious:
float Fnord(float A, float B, float C, float& D, void*** E, int F);
-
@rygorous @aeva which is at odds with the design goal of decreasing the levenshtein distance to making a meaningful change to the program.
i guess it boils down to: what's the worst harm a typo can do in your language?
funny then to consider the shell which has no types and permits casual mistakes of devastating proportions.
-
@morten_skaaning @rygorous @aeva isn't that a big part of every compiler?
-
@morten_skaaning @rygorous @aeva isn't that a big part of every compiler?
-
@morten_skaaning @lritter @rygorous can you check if it halts while you're at it?
-
@morten_skaaning @lritter @rygorous can you check if it halts while you're at it?
@aeva @morten_skaaning @lritter The Halting Problem is oversold.
1. It's not actually generally hard to prove whether any particular invocation will halt. (Just hard to give a single approach that works on everything.)
2. The HP is not even theoretically hard if you expand the set of valid answers to be { yes, no, not sure }
3. practically speaking, the answer is always yes because at some point there will be a sufficiently long power outage or, more likely, forced OS update -
@rygorous @aeva which is at odds with the design goal of decreasing the levenshtein distance to making a meaningful change to the program.
i guess it boils down to: what's the worst harm a typo can do in your language?
funny then to consider the shell which has no types and permits casual mistakes of devastating proportions.
-
@JamesWidman @lritter @rygorous that'll definitely save me from accidentally transposing the source and destination paths on various commands to exciting effect
-
@JamesWidman @lritter @rygorous that'll definitely save me from accidentally transposing the source and destination paths on various commands to exciting effect
@aeva @JamesWidman @lritter see, if this was typesafe with proper constructors that could not happen:
cp(ThisIsTheSourcePath("foo"), ThisIsTheDestinationPath("bar"));