Type-Directed TDD in Rust
A case study using FizzBuzz Franklin Chen http://franklinchen.com/ July 21, 2014 Pittsburgh Code and Supply
Franklin Chen http://franklinchen.com/ Type-Directed TDD in Rust Pittsburgh Code and Supply 1 / 78
Type-Directed TDD in Rust A case study using FizzBuzz Franklin Chen - - PowerPoint PPT Presentation
Type-Directed TDD in Rust A case study using FizzBuzz Franklin Chen http://franklinchen.com/ July 21, 2014 Pittsburgh Code and Supply Franklin Chen http://franklinchen.com/ Type-Directed TDD in Rust Pittsburgh Code and Supply 1 / 78 Outline
Franklin Chen http://franklinchen.com/ Type-Directed TDD in Rust Pittsburgh Code and Supply 1 / 78
Franklin Chen http://franklinchen.com/ Type-Directed TDD in Rust Pittsburgh Code and Supply 2 / 78
Franklin Chen http://franklinchen.com/ Type-Directed TDD in Rust Pittsburgh Code and Supply 3 / 78
◮ test-driven ◮ type-directed
◮ project build process ◮ testing frameworks ◮ all the code
◮ problem: easy to understand ◮ modifications: easy to understand ◮ fun!
◮ Recently, Apple ditched Objective C for its new language Swift! Franklin Chen http://franklinchen.com/ Type-Directed TDD in Rust Pittsburgh Code and Supply 4 / 78
Franklin Chen http://franklinchen.com/ Type-Directed TDD in Rust Pittsburgh Code and Supply 5 / 78
Franklin Chen http://franklinchen.com/ Type-Directed TDD in Rust Pittsburgh Code and Supply 6 / 78
Franklin Chen http://franklinchen.com/ Type-Directed TDD in Rust Pittsburgh Code and Supply 8 / 78
Franklin Chen http://franklinchen.com/ Type-Directed TDD in Rust Pittsburgh Code and Supply 9 / 78
Franklin Chen http://franklinchen.com/ Type-Directed TDD in Rust Pittsburgh Code and Supply 10 / 78
Franklin Chen http://franklinchen.com/ Type-Directed TDD in Rust Pittsburgh Code and Supply 11 / 78
Franklin Chen http://franklinchen.com/ Type-Directed TDD in Rust Pittsburgh Code and Supply 12 / 78
Franklin Chen http://franklinchen.com/ Type-Directed TDD in Rust Pittsburgh Code and Supply 13 / 78
Franklin Chen http://franklinchen.com/ Type-Directed TDD in Rust Pittsburgh Code and Supply 14 / 78
Franklin Chen http://franklinchen.com/ Type-Directed TDD in Rust Pittsburgh Code and Supply 16 / 78
Franklin Chen http://franklinchen.com/ Type-Directed TDD in Rust Pittsburgh Code and Supply 17 / 78
Franklin Chen http://franklinchen.com/ Type-Directed TDD in Rust Pittsburgh Code and Supply 19 / 78
Franklin Chen http://franklinchen.com/ Type-Directed TDD in Rust Pittsburgh Code and Supply 20 / 78
Franklin Chen http://franklinchen.com/ Type-Directed TDD in Rust Pittsburgh Code and Supply 21 / 78
Franklin Chen http://franklinchen.com/ Type-Directed TDD in Rust Pittsburgh Code and Supply 23 / 78
Franklin Chen http://franklinchen.com/ Type-Directed TDD in Rust Pittsburgh Code and Supply 24 / 78
Franklin Chen http://franklinchen.com/ Type-Directed TDD in Rust Pittsburgh Code and Supply 25 / 78
Franklin Chen http://franklinchen.com/ Type-Directed TDD in Rust Pittsburgh Code and Supply 27 / 78
Franklin Chen http://franklinchen.com/ Type-Directed TDD in Rust Pittsburgh Code and Supply 28 / 78
Franklin Chen http://franklinchen.com/ Type-Directed TDD in Rust Pittsburgh Code and Supply 30 / 78
Franklin Chen http://franklinchen.com/ Type-Directed TDD in Rust Pittsburgh Code and Supply 31 / 78
◮ such as 4 and 7
◮ such as "Moo" and "Quack" Franklin Chen http://franklinchen.com/ Type-Directed TDD in Rust Pittsburgh Code and Supply 32 / 78
Franklin Chen http://franklinchen.com/ Type-Directed TDD in Rust Pittsburgh Code and Supply 33 / 78
Franklin Chen http://franklinchen.com/ Type-Directed TDD in Rust Pittsburgh Code and Supply 34 / 78
Franklin Chen http://franklinchen.com/ Type-Directed TDD in Rust Pittsburgh Code and Supply 35 / 78
Franklin Chen http://franklinchen.com/ Type-Directed TDD in Rust Pittsburgh Code and Supply 36 / 78
Franklin Chen http://franklinchen.com/ Type-Directed TDD in Rust Pittsburgh Code and Supply 37 / 78
Franklin Chen http://franklinchen.com/ Type-Directed TDD in Rust Pittsburgh Code and Supply 38 / 78
◮ Exceptions are evil because they escape the type system.
Franklin Chen http://franklinchen.com/ Type-Directed TDD in Rust Pittsburgh Code and Supply 39 / 78
Franklin Chen http://franklinchen.com/ Type-Directed TDD in Rust Pittsburgh Code and Supply 41 / 78
Franklin Chen http://franklinchen.com/ Type-Directed TDD in Rust Pittsburgh Code and Supply 42 / 78
Franklin Chen http://franklinchen.com/ Type-Directed TDD in Rust Pittsburgh Code and Supply 43 / 78
Franklin Chen http://franklinchen.com/ Type-Directed TDD in Rust Pittsburgh Code and Supply 44 / 78
Franklin Chen http://franklinchen.com/ Type-Directed TDD in Rust Pittsburgh Code and Supply 45 / 78
Franklin Chen http://franklinchen.com/ Type-Directed TDD in Rust Pittsburgh Code and Supply 47 / 78
Franklin Chen http://franklinchen.com/ Type-Directed TDD in Rust Pittsburgh Code and Supply 48 / 78
Franklin Chen http://franklinchen.com/ Type-Directed TDD in Rust Pittsburgh Code and Supply 49 / 78
Franklin Chen http://franklinchen.com/ Type-Directed TDD in Rust Pittsburgh Code and Supply 51 / 78
Franklin Chen http://franklinchen.com/ Type-Directed TDD in Rust Pittsburgh Code and Supply 53 / 78
Franklin Chen http://franklinchen.com/ Type-Directed TDD in Rust Pittsburgh Code and Supply 54 / 78
Franklin Chen http://franklinchen.com/ Type-Directed TDD in Rust Pittsburgh Code and Supply 55 / 78
Franklin Chen http://franklinchen.com/ Type-Directed TDD in Rust Pittsburgh Code and Supply 56 / 78
◮ (Empty “fizz” and “buzz” word strings). Franklin Chen http://franklinchen.com/ Type-Directed TDD in Rust Pittsburgh Code and Supply 57 / 78
Franklin Chen http://franklinchen.com/ Type-Directed TDD in Rust Pittsburgh Code and Supply 58 / 78
Franklin Chen http://franklinchen.com/ Type-Directed TDD in Rust Pittsburgh Code and Supply 59 / 78
Franklin Chen http://franklinchen.com/ Type-Directed TDD in Rust Pittsburgh Code and Supply 60 / 78
Franklin Chen http://franklinchen.com/ Type-Directed TDD in Rust Pittsburgh Code and Supply 61 / 78
Franklin Chen http://franklinchen.com/ Type-Directed TDD in Rust Pittsburgh Code and Supply 62 / 78
Franklin Chen http://franklinchen.com/ Type-Directed TDD in Rust Pittsburgh Code and Supply 63 / 78
Franklin Chen http://franklinchen.com/ Type-Directed TDD in Rust Pittsburgh Code and Supply 64 / 78
Franklin Chen http://franklinchen.com/ Type-Directed TDD in Rust Pittsburgh Code and Supply 67 / 78
Franklin Chen http://franklinchen.com/ Type-Directed TDD in Rust Pittsburgh Code and Supply 68 / 78
◮ There is an identity element (None). ◮ There is a binary associative operator (add_option). ◮ Fantastically important in practice! Franklin Chen http://franklinchen.com/ Type-Directed TDD in Rust Pittsburgh Code and Supply 69 / 78
Franklin Chen http://franklinchen.com/ Type-Directed TDD in Rust Pittsburgh Code and Supply 70 / 78
◮ Four at leaves. ◮ Two “middle managers” each handling two leaves. ◮ One top-level manager handling two middle managers.
Franklin Chen http://franklinchen.com/ Type-Directed TDD in Rust Pittsburgh Code and Supply 71 / 78
Franklin Chen http://franklinchen.com/ Type-Directed TDD in Rust Pittsburgh Code and Supply 72 / 78
Franklin Chen http://franklinchen.com/ Type-Directed TDD in Rust Pittsburgh Code and Supply 73 / 78
Franklin Chen http://franklinchen.com/ Type-Directed TDD in Rust Pittsburgh Code and Supply 76 / 78
Franklin Chen http://franklinchen.com/ Type-Directed TDD in Rust Pittsburgh Code and Supply 77 / 78