Skip to content
EntityQ7135231· pop 8· linked from 155 articles

Polimorfismo paramétrico

Sign in to save

Also known as parametric typing, Parametric

basis of generic programming

Wikidata facts

Subclass of
polymorphism
Show 1 more fact
short name
parametrisk
Sources (1)

via Wikidata · CC0

Article · Português

Em linguagens de programação e teoria dos tipos, polimorfismo paramétrico é uma forma de se tornar uma linguagem mais expressiva, enquanto continua mantendo toda sua tipagem estática segura. Usando o polimorfismo paramétrico, a função ou tipo de dado pode ser escrita genericamente para que possa suportar valores idênticos sem depender de seu tipo. Essas funções e tipos de dados são chamados funções genéricas e tipos de dados genéricos respectivamente e formam a base da programação genérica. Por exemplo, a função append que junta duas listas pode ser construída para que não se preocupe com o tipo dos elementos: ela pode juntar listas de inteiros, listas de números reais, listas de strings, e assim por diante. Suponhamos que o tipo da variável a denota o tipo de elementos da lista. Então append pode ser escrito da forma [a] x [a] -> [a], onde [a] denota o tipo de listas cujos elementos são do tipo a. Dizemos que o tipo de append é parametrizado por a para todos os valores de a. (Note que como há apenas um único tipo de variável, a função não pode ser aplicada para qualquer par de listas: o par, assim como a lista resultante, deve consistir do mesmo tipo de elementos.) Para cada local no qual append é aplicado, o valor é decidido por a. De acordo com Christopher Strachey, o polimorfismo paramétrico pode ser posto em contraste com o polimorfismo ad-hoc, no qual uma única função polimórfica pode ter um número distinto e potencialmente heterogêneo de implementações dependendo do tipo do(s) argumento(s) para o(s) qual(is) ela é aplicada. Dessa forma, o polimorfismo ad-hoc pode apenas suportar um número limitados de tipos distintos, desde que seja provida uma implementação separada para cada tipo.

Abstract from DBpedia / Wikipedia · CC BY-SA

Available in 8 languages

via Wikidata sitelinks · CC0