corth-lang / Corth

A self-hosted stack based language like Forth
MIT License
7 stars 1 forks source link

Procedure overloading #48

Open HuseyinSimsek7904 opened 6 months ago

HuseyinSimsek7904 commented 6 months ago

Procedure overloading is being able to define multiple procedures with same name but different argument signatures. This feature would make many definitions quite simpler in Corth.

For example:

proc say ptr -> in
  putcs
end

proc say int -> in
  putu
end

These two procedures have the same name but different signatures. This allows the compiler to distinguish them from each other. If the stack has an integer in the local stack, it will understand that the call should be made to the second function.

This however has some limitations for procedures that have different argument signatures but which procedure is wanted to be called can not be decided. For example:

proc say int int -> in
  putu " " putu
end

proc say int -> in
  putu
end

If the stack contains two integers, then it is undecidable which one of these procedures should be called. This means that this should not be allowed by the compiler.

Utkub24 commented 3 months ago

If the stack contains two integers, then it is undecidable which one of these procedures should be called. This means that this should not be allowed by the compiler.

This sounds like a problem to be solved rather than an error state :thinking: