The very basic tool in programming is to be able to create a variable or a parameter that we can use in many contexts just by replacing it with different values. This is a strange way to say the definition of Lambda calculus which is the basis for most programming languages today. At least those languages that use functions.
The next few examples will show how we can go from value level functions to type level functions and how is this syntax "distinction" represented in languages like TypeScript, C#, Scala, Haskell and Idris.
Video: https://youtu.be/-p1QqAilZoI