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