if there is a `map` function defined for that box type with the type given above. This
has to obey the following Map Laws:
- TODO LAWS
+ <code>map (id : α -> α) = (id : <u>α</u> -> <u>α</u>)</code>
+ <code>map (g ○ f) = (map g) ○ (map f)</code>
+
+ Essentially these say that `map` is a homomorphism from `(α -> β, ○, id)` to <code>(<u>α</u> -> <u>β</u>, ○', id')</code>, where `○'` and `id'` are `○` and `id` restricted to arguments of type <code><u>_</u></code>.
+
* ***MapNable*** (in Haskelese, "Applicatives") A Mappable box type is *MapNable*
if there are in addition `map2`, `mid`, and `mapply`. (Given either