Esclarecimento sobre operadores
AvatarHurden opened this issue · comments
Nessa etapa precisamos saber qual o comportamento de cada um dos operadores da linguagem (unários, binários e ternário). Em nenhum momento, porém, foi dito o que eles fazem ou em quais tipos operam. Dessa forma, segue a lista de dúvidas que tive sobre cada um:
-
Quais são os tipos que podem ser comparados por igualdade? Por padrão, presumi que seriam quaisquer tipos, desde que sejam iguais ou numéricos (
float
,int
ebool
). -
De forma similar, quais podem ser comparados por desigualdade? Dessa vez, presumi que apenas os numéricos e
chars
. -
Em que tipos podem operar
&
(Bitwise AND) e|
(Bitwise OR)? -
Os pipes devem verificar que os tipos das funções são coerentes? Ou seja, é preciso que o tipo de retorno da primeira função seja usado no input da segunda? Caso a segunda função não use o retorno da primeira (com o
.
), isso deve ser considerado um erro? -
Sobre pipes, qual exatamente é a diferença entre os dois tipos?
-
Os operadores unários
*
e&
, se forem iguais ao do C, operam sobre ponteiros. Na linguagem, porém, não existe o conceito de ponteiros. O que fazem esses operadores, então, e quais são os tipos que aceitam? -
O que faz o operador
#
?
Vamos lá novamente @AvatarHurden:
- Quaisquer tipos
- Quaisquer tipos
- Quaisquer tipos
- Sim, devemos verificar a coerência (veja também a resposta ao item 3 do #70). O uso do
.
não é obrigatório no que vem depois do pipe. - Eles se inspiram de pacotes da linguagem R.
- Sem uso por enquanto (no léxico defino um superset grande de tokens para ter uma liberdade maior na especificação da linguagem das etapas seguintes)
- Nada, por enquanto.