Я просто начинаю на F#, и при проигрывании вокруг с перегрузкой оператора, я столкнулся с чем-то, что я не вполне понимаю. Теперь, я понимаю, что Вы не можете использовать, например, +*
как перегруженный префиксный оператор; это может только быть инфиксный оператор. Вот то, где я запутываюсь, однако:
let (+*) a = a + a * a;;
Если я работаю, это, fsi говорит мне что функция (+*)
int->int
. Большой, я могу вырыть это - это не перегруженный оператор, просто нормальная названная функция (+*)
. Так, если я делаю:
printf "%d" ((+*) 6)
Я доберусь 42, как я ожидаю. Однако, если я пробую:
printf "%d" (+*) 6
or
printf "%d" (+*)6
Это не скомпилирует. Я не могу поднять точную ошибку прямо сейчас, поскольку у меня нет доступа к компилятору F# в данный момент, но почему это? Что продолжает привязку здесь?