1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93
//! Sean Griffin on type systems and hopes for Rust's future
//!
//! - **Date:** February 25, 2016
//! - **Subject:** Type system strengths and weaknesses, and the weird corners
//! of Rust (with some hopes for its future)
//! - [**Audio**][mp3]
//!
//! [mp3]: https://www.podtrac.com/pts/redirect.mp3/cdn.newrustacean.com/file/newrustacean/interview/1/part_2.mp3
//!
//! <audio style="width: 100%" title="Interview 1, Part 2" controls preload=metadata><source src="https://www.podtrac.com/pts/redirect.mp3/cdn.newrustacean.com/file/newrustacean/interview/1/part_2.mp3"></audio>
//!
//!
//! Notes
//! -----
//!
//! Chris chats with Sean Griffin about the tradeoffs between mental overhead
//! and type safety, the expressiveness of different type systems, and some of
//! the places where Rust currently falls down.
//!
//!
//! ### Corrigenda
//!
//! Sean noted he could be wrong about `IEnumerable<T>` not having a `Sum`
//! method in C♯, and post-show research indicated that he was (it's possible it
//! was added after he had stopped doing .NET work, of course). See the
//! [documentation][c1] for details on how `IEnumerable<T>.Sum` it behaves in C♯
//! if you're curious.
//!
//! As a related note, I (Chris) have done a little bit of digging on C♯ in the
//! interval and it's fair to say that while a lot of the "ceremony" involved in
//! writing C♯ is annoying, it's much more than just a "slightly nicer Java",
//! and indeed is a much nicer language than my previous, limited exposure had
//! led me to believe. It's no Rust or F♯, but its type system is substantially
//! more capable than Java's.
//!
//! [c1]: https://msdn.microsoft.com/library/bb919210(v=vs.90).aspx
//!
//!
//! Links
//! -----
//!
//! - fmap
//! + [Discussion of `fmap` with `Optional` in Swift][l1]
//! + [In Haskell][l2]
//! - Rust:
//! + [Trait objects][l3]
//! + [Specialization RFC][l4]
//! * [Implementation][l5]
//! - [Diesel][l6]
//!
//! [l1]: https://robots.thoughtbot.com/functional-swift-for-dealing-with-optional-values
//! [l2]: http://learnyouahaskell.com/functors-applicative-functors-and-monoids
//! [l3]: https://doc.rust-lang.org/book/trait-objects.html
//! [l4]: https://github.com/rust-lang/rfcs/pull/1210
//! [l5]: https://github.com/rust-lang/rust/issues/31844
//! [l6]: https://github.com/sgrif/diesel
//!
//!
//! Sponsors
//! --------
//!
//! - Aleksey Pirogov
//! - Chris Palmer
//! - [Derek Morr][s3]
//! - Hamza Sheikh
//! - Leif Arne Storset
//! - Luca Schmid
//! - Micael Bergeron
//! - Ralph Giles ("rillian")
//! - reddraggone9
//! - Ryan Ollos
//! - [William Roe][s11]
//!
//! [s3]: https://twitter.com/derekmorr
//! [s11]: http://willroe.me
//!
//! ### Become a sponsor
//!
//! - <a href="https://www.patreon.com/newrustacean" rel="payment">Patreon</a>
//! - [Venmo](https://venmo.com/chriskrycho)
//! - [Dwolla](https://www.dwolla.com/hub/chriskrycho)
//! - [Cash.me](https://cash.me/$chriskrycho)
//!
//!
//! Follow
//! ------
//!
//! - New Rustacean:
//! + Twitter: [@newrustacean](https://www.twitter.com/newrustacean)
//! + Email: [hello@newrustacean.com](mailto:hello@newrustacean.com)
//! - Chris Krycho
//! + GitHub: [chriskrycho](https://github.com/chriskrycho)
//! + Twitter: [@chriskrycho](https://www.twitter.com/chriskrycho)