@xianc78 It has nothing to do with the paradigm.
Go is mostly imperative, functions returns a nullable string for errors, like in some C APIs.
Elixir is mostly functional, often APIs follow {:ok, data} on success, {:error, message} with message being a string on error.
I guess the OOP-style is raising exceptions, which is a model I hate even more than returning integers because then it's impossible to know that errors are handled when they should.
Only other one I know with (unsigned) integers for errors is shell and that's a whole other kind of mess.