Formalismo de Bird-Meertens


El formalismo de Bird-Meertens ( BMF ) es un cálculo para derivar programas a partir de especificaciones (en un entorno de programación funcional ) mediante un proceso de razonamiento ecuacional. Fue ideado por Richard Bird y Lambert Meertens como parte de su trabajo dentro del Grupo de Trabajo 2.1 de IFIP .

A veces se hace referencia en las publicaciones como BMF, como un guiño a la forma Backus-Naur . En broma, también se le conoce como Squiggol , como un guiño a ALGOL , que también estaba en el ámbito de WG 2.1, y debido a los símbolos "garabatos" que utiliza. Una variante de nombre menos utilizada, pero en realidad la primera sugerida, es SQUIGOL .

Map es una función de segundo orden bien conocida que aplica una función dada a cada elemento de una lista; en BMF, está escrito :

Asimismo, reduce es una función que colapsa una lista en un solo valor mediante la aplicación repetida de un operador binario . Está escrito / en BMF. Tomando como operador binario adecuado con elemento neutro e , tenemos

Usando esos dos operadores y las primitivas (como la suma habitual) y (para la concatenación de listas), podemos expresar fácilmente la suma de todos los elementos de una lista y la función aplanar , como y , en estilo sin puntos . Tenemos:

De manera similar, escribiendo para composición funcional y para conjunción , es fácil escribir una función que pruebe que todos los elementos de una lista satisfacen un predicado p , simplemente como :


Derivación del algoritmo de Kadane [1]
Ley de promoción de mapas [2]
Ley de promoción de pliegues [2]
Regla de Horner generalizada [3]
Escanear lema [4]
Ley de fusión de escaneo de pliegues [4]