Qi (idioma)

Qi
Paradigmas funcional , lógico
Autor Mark Tarver
Desenvolvedores Mark Tarver et al.
Digitando estático , dinâmico
Influenciado por Haskell , ML , Lisp , Prolog
Sistema operacional Multi plataforma
Local na rede Internet http://www.lambdassociates.org/

Qi é uma linguagem de programação funcional criada por Mark Tarver, introduzida emAbril de 2005e distribuído sob a licença GPL. Qi é escrito em Lisp . Inclui a maioria dos recursos comuns à programação funcional: filtragem, currying , inferência de tipo , tipagem estática , tipagem dinâmica , a proteção e a aplicação parcial. Este idioma ganhou o Prêmio de Invenção Promissora de 2003 da Universidade Estadual de Nova York .

A base da linguagem Qi

De certa forma, Qi pretende ser uma simplificação da linguagem Lisp . As funções usam a notação prefixada.

Um programa que imprime Hello World na saída padrão:

(output "Hello, world~%")

As listas são construídas com [....] e os elementos são separados por um caractere de espaço.

[76 trombones]

A função fatorial definida usando filtragem  :

(define factorial 0 -> 1 N -> (* N (factorial (- N 1))))

Uma função anônima que multiplica por 2.

(/. X (* X 2))

Uma função de membro usando filtragem em listas (Qi segue a sintaxe convencional do Edinburgh Prolog para filtragem, exceto que espaços são usados ​​em vez de vírgulas para separar itens).

(define member _ [] -> false X [X | _] -> true X [_ | Y] -> (member X Y))

Uma função que usa o guarda que procura o primeiro número maior que N em uma lista.

(define find_greater N [] -> (error "no number greater than ~A.~%" N) N [M | _] -> M where (> M N) N [_ | Ns] -> (find_greater N Ns))

Qi Prolog

Qi Prolog é uma versão da linguagem Prolog implementada em Qi, usando a sintaxe padrão de Edimburgo. Aqui está um exemplo básico no Qi Prolog:

(defprolog "dog(snoopy). man(socrates). man(plato). mortal(X) :- man(X).")

E para consultar a base de conhecimento do Prolog:

(ask [ man plato ] ) (ask [ man snoopy ] ) (ask [ dog X ] ) (ask [ man M ] )

links externos