Type systems: strong vs. weak, dynamic vs. static, and degrees of expressivity.


Notes

Talking about type systems! A broad and wide-ranging discussion about type systems in general, with specific examples from languages like PHP, JavaScript, Python, C, C++, Java, C♯, Haskell, and Rust!

What is a type system?
What are the kinds of things we get out of type systems?
What are the tradeoffs with different type systems?
What is Rust’s type system like?
What is especially attractive about Rust’s type system?

A comment on the C integer/character string addition example: what’s actually happening there is that the character string is an array “under the covers,” and as such has an address. C silently switches to using the memory address, which is of course just an integer, when you try to add the two together. As I said on the show: the result is nonsense (unless you’re using this as a way of operating on memory addresses), but it’s compileable nonsense. In a stricter and stronger type system, memory addresses and normal numbers shouldn’t be addable!


Links

Rust 1.7 released

HashMap changes

Introduction to Type Theory
Visualizing Rust’s type-system
The Many Kinds of Code Reuse in Rust

Sponsors

Aleksey Pirogov
Chris Palmer
Derek Morr
Hamza Sheikh
Lachlan Collins
Leif Arne Storset
Luca Schmid
Micael Bergeron
Pascal
Ralph Giles (“rillian”)
Ralph “FriarTech” Loizzo
reddraggone9
Ryan Ollos
William Roe

Become a sponsor

Patreon
Venmo
Dwolla
Cash.me

Contact

New Rustacean:

Twitter: @newrustacean
Email: [email protected]

Chris Krycho

GitHub: chriskrycho
Twitter: @chriskrycho

Twitter Mentions