Я подозреваю, что это как-то связано с кортежами и карри. По сути, кортеж из одного предмета снова становится единичным, однако в двух других наших случаях мы имеем следующее:
Первый случай (f2
) на самом деле является функцией, которая принимает одно значение (x
) и возвращает значение, которое принимает еще одну единственную функцию. Здесь мы можем увидеть использование карри от f2
до add10
let add10 = f2 10
let myVal = add10 20
Мы получаем ошибку с кортежем, потому что мы не определили его таким образом, чтобы получить кортеж. Во втором примере у нас есть похожая проблема, когда мы определили функцию, принимающую кортеж из двух значений, и она знает, как обрабатывать эти значения, но теперь мы передали ей два значения вместо одного (кортежа), которое это ожидалось, и таким образом мы получаем ошибку.
Еще раз, в последнем случае, у нас есть кортеж из одного предмета, и поэтому f x
и f(x)
фактически одно и то же.
Я могу ошибаться в своих рассуждениях, но я верю, что именно поэтому вы получаете свои ошибки.