Símbolos de APL: atribuição

Patrícia Villela - Nov 4 '22 - - Dev Community

AVISO! Essa série de artigos usará exemplos rodados em Dyalog APL, a implementação da Dyalog.

AVISO 2! Esse artigo contém exemplos de código. Se você quiser rodá-los, copie e cole as linhas identadas à direita (as linhas identadas à esquerda são os resultados) nesse site: https://tryapl.org

O primeiro símbolo que vou apresentar é .

Esse é o símbolo de "atribuição" ("Assignment" na documentação). A maioria das linguagens de programação usam o símbolo = para esse fim. Em APL, = é reservado para comparação de igualdade.

      a←1
      a
1
Enter fullscreen mode Exit fullscreen mode

A primeira linha atribui o valor 1 para a variável a e a segunda linha a exibe. A terceira linha é o retorno da segunda.

A atribuição não é restrita a valores escalares (que em APL são arrays com uma dimensão).

      a←1 2 3 4
      a
1 2 3 4
Enter fullscreen mode Exit fullscreen mode

A atribuição também serve para outras coisas, como redirecionamento para o display usando o caracter (é um quadrado mesmo, chamado "Quad", não é erro de encoding. Esse símbolo será elaborado em outro artigo).

      ⎕←a←1
1
Enter fullscreen mode Exit fullscreen mode

Assim como em linguagens mais populares hoje em dia, é possível atribuir uma modificação, como por exemplo um incremento.

      a
1
      a+←1
      a
2
      a-←1
      a
1
      a×←10
      a
10
Enter fullscreen mode Exit fullscreen mode

Também é possível fazer atribuição de arrays de mesmas dimensões. O efeito disso é a distribuição dos valores nas variáveis listadas.

      a b c←1 2 3
      a
1
      b
2
      c
3
Enter fullscreen mode Exit fullscreen mode

Por enquanto é isso. Em resumo pode-se entender esse símbolo como um símbolo de transferência de valor, tanto para uma variável, quanto para o display.

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .