What does it mean for a function $f\colon M → N$ between *any* sets $M, N$ to be computable? In our lecture notes on lamdba calculus, I encountered the sentence:


  Let $M$ be a set and $f\colon ℕ → M$ be computable.


Does this even make sense? Don’t we need aditional structure on $ℕ$ and $M$ to talk about computability and decidability? How can I make sense of this statement?
One convention is as follows. Your sets $\mathbb{N}$ and $M$ come with (injective) encodings as strings. In that way, you can think of $\mathbb{N}$ and $M$ simply as subsets of $\Sigma^*$.

One can think of many other equivalent conventions. For example, you can treat the input as a bona fide natural number, and use the C programming language rather than the string-based Turing machine. All reasonable definitions will result in the same notion of computable function. 

In terms of computational complexity, the exact encoding (or other convention) used can be important. For example, graphs can be encoded either using adjacency matrices or as adjacency lists, and this can affect the complexity of algorithms operation on them.