Par certains côtés, Qi se veut une simplification du langage Lisp. Les fonctions utilisent la notation préfixée.
Un programme qui affiche Hello World sur la sortie standard :
(output "Hello, world~%")
Les listes se construisent avec [ .... ] et les éléments sont séparés par un caractère d'espace.
[76 trombones]
La fonction factorielle définie en utilisant le filtrage :
(define factorial
0 -> 1
N -> (* N (factorial (- N 1))))
Une fonction anonyme qui multiplie par 2.
(/. X (* X 2))
Une fonction membre utilisant le filtrage sur les listes (Qi suit la syntaxe conventionnelle
du Edinburgh Prolog pour le filtrage, sauf que des espaces sont utilisées au lieu de la virgule pour
séparer les éléments).
(define member
_ [] -> false
X [X | _] -> true
X [_ | Y] -> (member X Y))
Une fonction utilisant la garde qui cherche le premier nombre plus grand que N dans une liste.
(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 est une version du langage Prolog mise en œuvre en Qi, en utilisant la syntaxe standard d'Edinburgh.
Voici un exemple de base en Qi Prolog :