@codefolio
>no type declarations => you're not violating a type declaration
I disagree! LSP isn’t about violating declarations; it’s about violating contracts. Ruby still has types aplenty, and contracts; it’s just that they’re implicit. In this fn:
def foo(num)
num.abs * 3
end
…the type of num is “thing that has an abs method that returns a thing with a * method that accepts 3.” That’s a type! And there may be some implicit type assumptions on the programmer’s part not explicit in code.