Чтобы попасть в путь Haskell, я выбрал книгу одним из ее создателей Худаком. Итак, я прохожу через нежное введение в Haskell.
Я застрял в попытке понять следующее утверждение:
С технической точки зрения, формальные параметры также являются шаблонами, но они никогда не перестают соответствовать значению.
Из моего небольшого, но относительно большого привыкания с такими языками, как C (или широко говоря, как нефункциональные языки), я мог бы сформировать, что формальные параметры являются аргументами в определении функции. Итак, предположим, что в C была функция, подобная приведенной ниже:
int func_add(int a, int d)
тогда передача значения какой-либо другой типа, такой как строка, будет ошибкой при сопоставлении с образцом, если я прав. Поэтому вызов func_add
как func_add("trs", 5)
является случаем несоответствия шаблона.
С большой возможностью неправильного понимания или интерпретации подобная ситуация может очень хорошо проявиться и в Haskell, когда часть кода вызывает функцию, передавая аргументы разных типов.
Итак, почему говорится, что формальные параметры Haskell являются неопровержимым сопоставлением шаблонов?