Qi (dil)

Qi
Paradigmalar işlevsel , mantıklı
Yazar Mark Tarver
Geliştiriciler Mark Tarver vd.
Yazıyor statik , dinamik
Tarafından etkilenmiş Haskell , ML , Lisp , Prolog
İşletim sistemi Çoklu platform
İnternet sitesi http://www.lambdassociates.org/

Qi , Mark Tarver tarafından oluşturulan işlevsel bir programlama dilidir .Nisan 2005ve GPL lisansı altında dağıtılır. Qi, Lisp ile yazılmıştır . İşlevsel programlamada ortak olan özelliklerin çoğunu içerir: filtreleme, currying , tür çıkarımı , statik yazım , dinamik yazım , koruma ve kısmi uygulama. Bu dil 2003 kazandı Umut verici Buluş Ödülü dan New York Eyalet Üniversitesi .

Qi dilinin temeli

Bazı yönlerden Qi, Lisp dilinin basitleştirilmesi anlamına gelir . Fonksiyonlar önekli gösterimi kullanır.

Hello World'ü standart çıktıya yazdıran bir program :

(output "Hello, world~%")

Listeler [....] ile oluşturulur ve öğeler bir boşluk karakteriyle ayrılır.

[76 trombones]

Filtreleme kullanılarak tanımlanan faktöriyel işlev  :

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

2 ile çarpılan anonim bir işlev .

(/. X (* X 2))

Listelerde filtreleme kullanan bir üye işlevi (Qi , öğeleri ayırmak için virgül yerine boşlukların kullanılması dışında, filtreleme için geleneksel Edinburgh Prolog sözdizimini izler ).

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

Bir listede N'den büyük ilk sayıyı arayan korumayı kullanan bir işlev .

(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, Edinburgh standart sözdizimi kullanılarak Qi'de uygulanan Prolog dilinin bir sürümüdür . İşte Qi Prolog'daki temel bir örnek:

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

Prolog bilgi tabanını sorgulamak için:

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

Dış bağlantılar