changing func from [nat] to [positive]

- a more general way to solve this is by completely
  abstracting the definition of [Func] but that requires
  a bit more abstraction
  - there may also be issues with extensibility.