Представленное определение имеет большую полезность.Вопрос в том, что именно представляет собой функция в Mathematica?Чистые функции и тому подобное легко классифицировать как функции, но как насчет определений, которые включают сопоставление с образцом?Подумайте:
h[g[x_]] ^:= x + 1
Можно ли считать h
функцией?Если это так, то это будет трудно определить, поскольку это повлечет за собой проверку значений каждого символа в системе, чтобы сделать это определение.g
- это функция?Он имеет повышенное значение, но g[x]
является инертным выражением.
А как насчет композиции головы:
f[x_][y_][z_] := x + y + z
Является ли f
функцией?Как насчет f[1]
или f[1][2]
?
А также существуют различные возможности, такие как JLink и NETLink :
Needs["JLink`"]
obj = JavaNew["java.util.Date"]
obj@toString[]
Isobj@toString
функция?
Я не хочу поднимать эти проблемы, не предлагая решений - но я хочу подчеркнуть, что вопрос о том, что представляет собой функция в контексте Mathematica, является сложным.Это непросто как с теоретической, так и с практической точек зрения.
Я думаю, что ответ на вопрос о том, завершен ли выставленный функциональный тест, действительно зависит от типов выражений, которые вы будете использовать в своем конкретном приложении.