Ах, стандартный ML Нью-Джерси, как я скучаю по тебе ...
В любом случае, позвольте мне пройти этот шаг за шагом.Помните, что карри, в отличие от ужина передо мной (который, кстати, является блюдом с карри), - это в основном способ иметь дело только с одним аргументом за раз, чтобы вернуть новую функцию.Имея это в виду, примените первые 2 к данной функции.Поскольку соответствует только один шаблон, теперь у вас есть новая функция - давайте назовем ее «curry»:
curry n = n * pow 1 n
Обратите внимание, что теперь у вас есть «внутренняя» версия функции pow для адресации.При этом, опять же, один шаблон соответствует.Давайте назовем эту внутреннюю карри функцию «рис»:
rice n = n * pow 0 n
И еще один, «креветка» - но на этот раз другой шаблон соответствует:
shrimp n = 1
Рекурсия завершеназдесь, так что у вас есть:
rice n = n * 1
curry n = n * (n * 1)
Теперь, используйте вторые 2 в вашем исходном pow 2 2
с новой функцией curry
:
curry 2 = 2 * (2 * 1)
, что, конечно, равно 4.
Я сильно сомневаюсь, что SML называет карри функции таким образом, но я надеюсь, что это помогает понять концепцию.Я не несу ответственности, если это также заставляет вас голодать.