| Yes, Rust does indeed and a long time before that it was Pascal. I really love Pascal's syntax, it makes a lot of sense when you approach it with a math background. - '=' is for equality only - assignment is ':=' which is the next best symbol you can find in math for that purpose - numeric data types are 'integer' and 'real', no single/double nonsense - 'functions' are for returning values, 'procedures' for side effects - Function and procedure definitions can be nested. I can't tell you what shock it was for me to discover that's not a thing in C. - There is a native 'set' type - It has product types (records) and sum types (variants). - Range Types! Love'em! You need a number between 0 and 360? You can easily express that in Pascal's type system. - Array indexing is your choice. Start at 0? Start at 1? Start at 100? It's up to you. - To switch between call-by-value and call-by
-reference all you have to do is change your function/procedure signature. No changes at the call sites or inside the function/procedure body. Another bummer for me when I learned C. Pascal wasn't perfect but I really wish modern languages had syntax based on Wirth's languages instead of being based on BCPL, B and C. |