TL; Dr Это просто жаргон и означает то же самое. Функция, процедура и статический метод одинаковы в программировании.
Исторически функция в математическом смысле является отображением аргументов в результат. Процедура - это блок кода, который что-то делает, и его вывод не нужно привязывать к какому-либо конкретному вводу. Таким образом, можно сказать, что функция - это процедура без побочных эффектов.
Стандарт Схемы использует только термин процедура . Вы не найдете никаких подсказок о функции вообще. Исторически Racket является стандартной реализацией Scheme, созданной для образовательных целей, и по большей части все еще совместима со Scheme по большей части сегодня, но они разделились и не считают, что следуют стандарту Scheme. Как разрабатывать программы и много документации использует термин функция, и в этой документации он подразумевается как синоним процедуры.
Common Lisp использует термин «функция» последовательно и его предшественники, что предшествует Схеме.
Я думаю, что я даже перевел SO-ответ между языками и изменил код, а также просто переключил функции и процедуры для соответствия языковым языкам непосредственно. Мне бы очень хотелось, чтобы Ракет однажды вымылась и осталась с одним именем, чтобы управлять ими всеми.