We are currently in the process of converting the website to the new design. Some pages, like this one, are still broken. We appreciate your patience.
Bitwise»Episode Guide
Type Checking/Inference, Constant Evaluation
?
?

Keyboard Navigation

Global Keys

[, < / ], > Jump to previous / next episode
W, K, P / S, J, N Jump to previous / next marker
t / T Toggle theatre / SUPERtheatre mode
V Revert filter to original state Y Select link (requires manual Ctrl-c)

Menu toggling

q Quotes r References f Filter y Link c Credits

In-Menu Movement

a
w
s
d
h j k l


Quotes and References Menus

Enter Jump to timecode

Quotes, References and Credits Menus

o Open URL (in new tab)

Filter Menu

x, Space Toggle category and focus next
X, ShiftSpace Toggle category and focus previous
v Invert topics / media as per focus

Filter and Link Menus

z Toggle filter / linking mode

Credits Menu

Enter Open URL (in new tab)
0:13Recap and set the stage for the day
🗩
0:13Recap and set the stage for the day
🗩
0:13Recap and set the stage for the day
🗩
0:47Explain why the approach to ordering the dependency graph implemented on the last stream didn't work
📖
0:47Explain why the approach to ordering the dependency graph implemented on the last stream didn't work
📖
0:47Explain why the approach to ordering the dependency graph implemented on the last stream didn't work
📖
5:17Describe the new approach, installing and resolving entities
📖
5:17Describe the new approach, installing and resolving entities
📖
5:17Describe the new approach, installing and resolving entities
📖
10:47The new ingredient: the notion of incomplete types, much like C
📖
10:47The new ingredient: the notion of incomplete types, much like C
📖
10:47The new ingredient: the notion of incomplete types, much like C
📖
12:09Describe complete_type() and related functions, with usage examples
📖
12:09Describe complete_type() and related functions, with usage examples
📖
12:09Describe complete_type() and related functions, with usage examples
📖
16:25Describe resolve_expr() and related functions
📖
16:25Describe resolve_expr() and related functions
📖
16:25Describe resolve_expr() and related functions
📖
20:44Show how it ends up working
🏃
20:44Show how it ends up working
🏃
20:44Show how it ends up working
🏃
25:24Note the pleasant absence of on-demand dependency resolution
📖
25:24Note the pleasant absence of on-demand dependency resolution
📖
25:24Note the pleasant absence of on-demand dependency resolution
📖
26:57Q&A
🗩
26:57Q&A
🗩
26:57Q&A
🗩
27:22ws_ubi pervognsen Are you recording the videos so I could watch it later?
🗪
27:22ws_ubi pervognsen Are you recording the videos so I could watch it later?
🗪
27:22ws_ubi pervognsen Are you recording the videos so I could watch it later?
🗪
27:55Summarise our notion of incomplete types, and its difference from that of C
📖
27:55Summarise our notion of incomplete types, and its difference from that of C
📖
27:55Summarise our notion of incomplete types, and its difference from that of C
📖
28:37orcnz29 pervognsen Would you be able to push the code you just explained?
🗪
28:37orcnz29 pervognsen Would you be able to push the code you just explained?
🗪
28:37orcnz29 pervognsen Would you be able to push the code you just explained?
🗪
29:06Commit "Code for day 8 prestream"
🗹
29:06Commit "Code for day 8 prestream"
🗹
29:06Commit "Code for day 8 prestream"
🗹
29:50dr_kegel Only one question where you asserted on lvalue only expr and you return a token-rvalue, I think it was a deref
🗪
29:50dr_kegel Only one question where you asserted on lvalue only expr and you return a token-rvalue, I think it was a deref
🗪
29:50dr_kegel Only one question where you asserted on lvalue only expr and you return a token-rvalue, I think it was a deref
🗪
30:50Consider enabling the type resolver to handle compound literals
🗩
30:50Consider enabling the type resolver to handle compound literals
🗩
30:50Consider enabling the type resolver to handle compound literals
🗩
32:28Introduce resolve_expr_compound()
32:28Introduce resolve_expr_compound()
32:28Introduce resolve_expr_compound()
39:02Run it to see that it works
🏃
39:02Run it to see that it works
🏃
39:02Run it to see that it works
🏃
39:06Add an incorrect type test in resolve_test()
39:06Add an incorrect type test in resolve_test()
39:06Add an incorrect type test in resolve_test()
39:24Run it to see that this gets caught
🏃
39:24Run it to see that this gets caught
🏃
39:24Run it to see that this gets caught
🏃
39:32Add tests in resolve_test() for fewer and more arguments provided in a compound literal declaration than there are values in the type
39:32Add tests in resolve_test() for fewer and more arguments provided in a compound literal declaration than there are values in the type
39:32Add tests in resolve_test() for fewer and more arguments provided in a compound literal declaration than there are values in the type
39:52Run it to see that it works as expected
🏃
39:52Run it to see that it works as expected
🏃
39:52Run it to see that it works as expected
🏃
40:06Enable resolve_expr_compound() to handle arrays
40:06Enable resolve_expr_compound() to handle arrays
40:06Enable resolve_expr_compound() to handle arrays
44:04Run it to see that it works as expected
🏃
44:04Run it to see that it works as expected
🏃
44:04Run it to see that it works as expected
🏃
44:26Add a test for arrays in resolve_test()
44:26Add a test for arrays in resolve_test()
44:26Add a test for arrays in resolve_test()
44:35Run it and crash in resolve_expr_compound()
🏃
44:35Run it and crash in resolve_expr_compound()
🏃
44:35Run it and crash in resolve_expr_compound()
🏃
44:46Fix the crash in resolve_expr_compound(), double-check that it's correct and rewrite the compound literal array test case in resolve_test()
44:46Fix the crash in resolve_expr_compound(), double-check that it's correct and rewrite the compound literal array test case in resolve_test()
44:46Fix the crash in resolve_expr_compound(), double-check that it's correct and rewrite the compound literal array test case in resolve_test()
47:33Run it to see that that does the trick
🏃
47:33Run it to see that that does the trick
🏃
47:33Run it to see that that does the trick
🏃
47:42Add tests in resolve_test() for fewer and more arguments provided in a compound literal array declaration than there are values in the type
47:42Add tests in resolve_test() for fewer and more arguments provided in a compound literal array declaration than there are values in the type
47:42Add tests in resolve_test() for fewer and more arguments provided in a compound literal array declaration than there are values in the type
47:58Run it to see that it works
🏃
47:58Run it to see that it works
🏃
47:58Run it to see that it works
🏃
48:06Add a test in resolve_test() that types unify
48:06Add a test in resolve_test() that types unify
48:06Add a test in resolve_test() that types unify
48:28Run it to see that it works
🏃
48:28Run it to see that it works
🏃
48:28Run it to see that it works
🏃
48:36Enable resolve_expr_compound() to handle expected types
48:36Enable resolve_expr_compound() to handle expected types
48:36Enable resolve_expr_compound() to handle expected types
56:17Add a test of our expected type code in resolve_test()
56:17Add a test of our expected type code in resolve_test()
56:17Add a test of our expected type code in resolve_test()
56:44Step through resolve_expr_compound() to see how it handles our expected type
🏃
56:44Step through resolve_expr_compound() to see how it handles our expected type
🏃
56:44Step through resolve_expr_compound() to see how it handles our expected type
🏃
57:26Add an expected struct type test in resolve_test()
57:26Add an expected struct type test in resolve_test()
57:26Add an expected struct type test in resolve_test()
57:40Run it to see that it works
🏃
57:40Run it to see that it works
🏃
57:40Run it to see that it works
🏃
58:16Add a test for unhandled resolving of expected function arguments in resolve_test()
58:16Add a test for unhandled resolving of expected function arguments in resolve_test()
58:16Add a test for unhandled resolving of expected function arguments in resolve_test()
59:55Run it to see that it parses but doesn't resolve
🏃
59:55Run it to see that it parses but doesn't resolve
🏃
59:55Run it to see that it parses but doesn't resolve
🏃
1:00:13Introduce resolve_decl_func()
1:00:13Introduce resolve_decl_func()
1:00:13Introduce resolve_decl_func()
1:03:08Run it to see that it correctly resolves the function declaration
🏃
1:03:08Run it to see that it correctly resolves the function declaration
🏃
1:03:08Run it to see that it correctly resolves the function declaration
🏃
1:03:57Introduce resolve_expr_call()
1:03:57Introduce resolve_expr_call()
1:03:57Introduce resolve_expr_call()
1:12:23Add function call tests in resolve_test(), and find that they work
🏃
🖮
1:12:23Add function call tests in resolve_test(), and find that they work
🏃
🖮
1:12:23Add function call tests in resolve_test(), and find that they work
🏃
🖮
1:14:19Note that we're not yet traversing the function body, and recap the day's work
🗩
1:14:19Note that we're not yet traversing the function body, and recap the day's work
🗩
1:14:19Note that we're not yet traversing the function body, and recap the day's work
🗩
1:15:48Q&A
🗩
1:15:48Q&A
🗩
1:15:48Q&A
🗩
1:17:31A few words on type inference
🗩
1:17:31A few words on type inference
🗩
1:17:31A few words on type inference
🗩
1:18:02buzzfizz64 pervognsen What’s the expected type thing again? I missed it
🗪
1:18:02buzzfizz64 pervognsen What’s the expected type thing again? I missed it
🗪
1:18:02buzzfizz64 pervognsen What’s the expected type thing again? I missed it
🗪
1:19:58How C handles expected types
🗩
1:19:58How C handles expected types
🗩
1:19:58How C handles expected types
🗩
1:21:53Passing separate data vs packed structs in C
🗩
1:21:53Passing separate data vs packed structs in C
🗩
1:21:53Passing separate data vs packed structs in C
🗩
1:23:52Wrap up the main stream
🗩
1:23:52Wrap up the main stream
🗩
1:23:52Wrap up the main stream
🗩