El Miranda es un lenguaje de programación puramente funcional no-terminante desarrollado por el David Turner como sucesor a su de programación anterior SASL de los lenguajes y al KRC, usar algunos conceptos ml y de la esperanza . Puesto por Research Software Ltd. de Inglaterra, cuyo la palabra “Miranda” es una marca registrada, era la primera lengua puramente funcional que se pensará para el uso como herramienta comercial algo que para los propósitos académicos.

La solución a la mayoría de los problemas del ejemplo es orador y más simple en Miranda que en la mayoría de los lenguajes de programación de corriente excepto quizá el APL, y, como otras idiomas funcionales, sus usuarios divulgar que les permite producir programas más confiables con tiempos de desarrollo más cortos que con los lenguajes de programación imprescindible habían utilizado previamente.

Primero fue lanzado en 1985, como intérprete rápido en el C para el Unix - condimentar los sistemas operativos, con los lanzamientos subsecuentes en 1987 y 1989. El lenguaje de programación posterior de Haskell es similar en gran medida a Miranda.

Descripción

Miranda es un perezoso, lenguaje de programación puramente funcional del . Es decir, carece los efectos secundarios y las características programadas imprescindible . Un programa de Miranda (llamado una escritura del ) es un sistema de ecuaciones que que define las varias funciones matemáticas y los tipos de datos algebraicos el determinado del de la palabra es importante aquí: la orden de las ecuaciones es, generalmente inaplicable, y no hay necesidad de definir una entidad antes de su uso.

Desde el el análisis de algoritmo de hace el uso inteligente de la disposición (muesca), allí es raramente una necesidad de declaraciones que acorchetan y no se requiere ningunos adaptadores de la declaración. Esta característica también se utiliza en el occam y el Haskell y fue popularizada por el pitón .

El comentario es introducido en las escrituras regulares por el de los carácteres|| y continúan al extremo de la misma línea. Una convención de comentario alternativa afecta a un archivo entero del código fuente, conocido como " " que sabe leer y escribir de la escritura ;, en que cada línea se considera un comentario a menos que comience con un > muestra de .

Los tipos de datos básicos de Miranda son char, num y bool. Una serie de caracteres es simplemente una lista de char, mientras que num se convierte silenciosamente entre dos formas subyacentes: los números enteros arbitrary-precision (a. bignums) por abandono, y la coma flotante regular valora como sea necesario.

Los Tuples son secuencias de elementos de tipos potencialmente mezclados, análogos a los expedientes en el Pascal - como idiomas, y se escriben delimitado con paréntesis: this_employee = (" Folland, Mary", 10560, falsos, 35)

La lista en lugar de otro es la estructura de datos más de uso general de Miranda. Se escribe delimitado por los corchetes y con los elementos coma-separados, que deben ser del mismo tipo:

week_days = El encadenamiento de la lista es ++, substracción es --, construcción es : ¡, clasificando es # y el poner en un índice es ! , tan:

días = week_days ++ días = " Nil": días ¡días! 0 " del →; Nil" días = días -- #days → 7

Hay varios atajos del lista-edificio: . se utiliza para las listas cuyos elementos forman una serie aritmética, con la posibilidad de especificar un incremento con excepción de 1:

fac n = producto odd_sum = suma

Instalaciones más generales y más de gran alcance del lista-edificio son proporcionadas por el " Quot de las comprensiones de la lista; (conocido previamente como " Expressions" de ZF;), que vienen en dos formas principales: una expresión se aplicó a una serie de términos, e.:

cuadrados = n * n | n < - [1. ]

(se lee que: la lista de n ajustó donde n se toma de la lista de todos los números enteros positivos) y de una serie donde está una función cada término de el anterior, e.:

powers_of_2 = n | n < - 1, 2*n.

Mientras que estos dos ejemplos implican, Miranda permite listas con un número infinito de elementos, cuyo el más simple es la lista de todos los números enteros positivos:

La notación para el uso de la función es simplemente yuxtaposición, como en el sin x.

En Miranda, como en la mayoría de las otras idiomas puramente funcionales, las funciones son ciudadanos de primera clase, que es decir que él puede ser pasado como parámetros a otras funciones, ser vuelto como resultados, o ser incluido como elementos de las estructuras de datos. Por otra parte, una función que requiere dos o más parámetros puede ser el " parcialmente parameterised", o el curtió, suministrando menos que el número completo de parámetros. Esto da otra función que, dada los parámetros restantes, vuelva un resultado. Por ejemplo:

agregar b = a + b el incremento = agrega 1

es una manera de cruce giratorio de crear un " de la función; increment" cuál agrega uno a su discusión. En realidad, el add 4 7 toma la función add del dos-parámetro, la aplica a 4 que obtiene una función del solo-parámetro que agregue cuatro a su discusión, después aplica eso a 7.

Cualquier función que toma dos parámetros se puede dar vuelta en un operador de infijo (por ejemplo, dado la definición de la función de add arriba, el término $add está de cada manera equivalente al operador de +) y cada operador de infijo que toma dos parámetros puede ser dado vuelta en una función correspondiente. Así:

incremento = (+) 1

es la manera más breve de crear una función que agregue uno a su discusión. Semejantemente, adentro

medio = (/2) recíproco = (1/)

se generan dos funciones del solo-parámetro. El intérprete entiende en cada caso se esté suministrando que de los parámetros del operador dos de la divisoria, dando las funciones que dividen respectivamente un número por dos y vuelven su recíproco.

Aunque Miranda sea un lenguaje de programación Strongly-typed, no insiste en el tipo explícito declaraciones si el tipo de una función no se declara explícitamente, el intérprete que el deduce él del tipo de sus parámetros y cómo él se utiliza dentro de la función. Además de los tipos básicos (char, num, bool), incluye un " anything" mecanografiar donde no importa el tipo de un parámetro, como en la función de lista-inversión:

rev = rev (a: x) = rev x ++

cuál se puede aplicar a una lista de cualquier tipo de datos, para la cual el tipo declaración de la función explícita estaría:

rev: :->

Finalmente, tiene mecanismos para los módulos del programa que crean y de manejos cuyas funciones internas son invisibles a los programas que llaman esos módulos.

Código de la muestra

La escritura siguiente de Miranda determina el sistema de todos los subconjuntos de un sistema de números

subconjuntos = subsets (x: xs) = y < - y ++ ys ys de where = xs de los subconjuntos

y esto es una escritura que sabe leer y escribir para una función primes cuál da la lista de todos los números primeros

> || La lista infinita de todos los números primeros, por el tamiz de Eratosthenes. La lista de números primeros potenciales comienza como todos los números enteros del 2 hacia adelante; como se vuelve cada uno prima, todos los números siguientes que pueden exactamente estar dividido por ella se filtran fuera de la lista de candidatos. > prepara = tamiz > tamiz (p: x) = p: tamiz | n < - x; ~= 0 de la MOD p de n

.

  • Zenithic
  • Moving shock
    Random links:Lagos dayton, Tejas | Historia de la MUESTRA | Papa Mina II de Alexandría | Recopa Sudamericana

  • © 2007-2008 enciclopediaespana.com; article text available under the terms of GFDL, from en.wikipedia.org
    ="http://pagead2.googlesyndication.com/pagead/show_ads.js">