Qual a utilidade dos operadores infix em uma linguagem de programação? Eles valem a complexidade extra que fornecem? Você pode fornecer alguns exemplos em que os operadores infix são mais adequados para o problema que não pode ser tratado apenas sobrecarregando os operadores normais?
programming-languages
syntax
operators
Casebash
fonte
fonte
arg1.method(arg2)
ao invés demethod(arg1, arg2)
.Respostas:
Eu acho que operadores de infix derivam da matemática.
Este:
é mais legível para a maioria das pessoas, do que
porque a maioria das pessoas está familiarizada com a matemática.
Interessante o suficiente em Haskell, você pode pular entre infix e prefixo. Isso está usando a mesma função "(+)":
e isso está usando a mesma função "elem":
fonte
(+ 1 2)
muito mais legível do que1 + 2
. No mínimo,(+ 1 2 3 4 5)
é melhor que1 + 2 + 3 + 4 + 5
.1 2 +
ou1 2 3 4 5 +
mais tipicamente para o último caso1 2 + 3 + 4 + 5 +
. Na verdade, há uma vantagem bacana para aqueles que modelam perfeitamente um sistema baseado em pilha e raramente (se é que alguma vez?) Precisa de parênteses para ajustar a precedência do operador.As linguagens de computador são projetadas para seres humanos e não para máquinas. E os humanos estão mais acostumados a infixar operadores do que pré ou pós-correções.
fonte
A única razão real para operadores de infix é que os humanos geralmente os acham mais fáceis de ler. Isso se deve em grande parte a dois fatos:
2 * 2 = 4
etc.(some complex expression) + (some other complex expression)
Do ponto de vista lógico / da máquina, os operadores infix realmente não agregam valor e, em alguns casos, são um incômodo:
(* 1 2 3 4 5)
no Lisp, por exemplo, é sem dúvida uma sintaxe muito mais limpa para multiplicar um conjunto de números.fonte