Despacho de predicados
Polimorfismo |
---|
Polimorfismo ad hoc |
Polimorfismo paramétrico |
Subtipagem |
|
Na programação de computadores , o despacho de predicados é uma generalização do despacho múltiplo ("multimétodos") que permite que o método a ser chamado seja selecionado em tempo de execução com base em predicados lógicos decidíveis arbitrários e/ou correspondência de padrões anexados a uma declaração de método. [1] [2]
O Raku suporta despacho de predicados usando cláusulas "where" que podem executar código arbitrário em qualquer função ou parâmetro de método. [3]
Julia tem um pacote para isso com PatternDispatch.jl, mas, de outra forma, suporta nativamente despacho múltiplo.
Implementações experimentais foram criadas para Common LISP , [4] [5] e para Java (JPred [2] ).
Ela permite a extensão aberta de métodos previamente declarados em um nível refinado, mas múltiplas extensões com predicados idênticos ou sobrepostos criados por diferentes desenvolvedores podem interferir uns com os outros de maneiras não antecipadas. Nesse aspecto, é similar à programação orientada a aspectos .
Referências
- ^ Millstein, T. Despacho Prático de Predicados (PDF) . OOPSLA '05.
- ^ ab Millstein, T.; "Despacho de predicados expressivos e modulares para Java". Transações ACM em Linguagens de Programação e Sistemas . 31 (2): 1. CiteSeerX 10.1.1.212.4268 . doi :10.1145/1462166.1462168. S2CID 2150617.
- ^ "class Signature" . Recuperado em 2020-07-07 .
- ^ "Despacho de predicados no sistema de objetos Common Lisp" (PDF) .
- ^ "pcostanza/filtered-functions". GitHub . Recuperado em 2016-04-07 .
Links externos
- C2 wiki: Despacho de predicados