According to the Solidity docs, by default, function types are internal, so the internal keyword can be omitted. In contrast, contract functions themselves are public by default, only when used as the name of a type, the default is internal.
I have a doubt here. How is it possible that a function can be internal and public at the same time? Can somebody tell me the difference between internal-external, public-private in regards to the functions??