В Cadence SKILL (проприетарный язык EDA, основанный на LISP & SCHEME) можно определить типы аргументов в процедуре.
Если будет задан неверный тип аргумента, произойдет ошибка. См. отчет оболочки ниже:
procedure( foo( ko "t" ) printf( "Hey %s\n" ko ) )
>foo
>foo("1")
>Hey 1
>t
foo(1)
>*Error* foo: argument #1 should be a string (type template = "t") - 1
Есть ли что-то столь же изящное в Ruby? То есть в определении интерфейса метода, а не в теле, делается проверка типов?
Спасибо.