Я говорю в основном о функциональных языках программирования. Например, статья в Википедии для map имеет этот пример на языке Haskell-ish:
map square [1,2,3,4,5]
Откуда парсер / компилятор узнает, что мы хотим передать функцию square
в map
как функцию более высокого порядка, а не пытаться вызывать саму функцию? Для языков со статической типизацией выражение square [1,2,3,4,5]
, очевидно, не будет компилироваться, но будет ли компилятор действительно использовать это, чтобы определить, что это не то, что я имел в виду?
Или это просто плохой пример из Википедии, и лучший пример может выглядеть как map &square [1,2,3,4,5]
(с использованием ссылок на функции в стиле C)?