19 Include vs. Open

Include and open seem very similar at first, and they do have similarities, but also many differences. Here's a simple example. Let's define a module M:

Okay, now let's implement N and M, including and opening M respectfully:

Note that these modules have different signatures! Module N has two values, x and y, while module O has one value, just y.

Include is including all the definitions from module N in M; however, we open rather than include. We open them for use internally, but we don't export them.