Per definizione di linguaggi dichiarativi, non possono essere eseguiti nella loro forma puramente dichiarativa; vedere per es. il Un sistema intelligente può e deve usare la conoscenza dichiarativa in modo efficiente J.Pitrat o più voci del suo blog es. "interrompi programmazione!" , " CAIA, il mio collega ", " so te stesso ", ecc.
Quindi un sistema dichiarativo sta trasformando la conoscenza dichiarativa in procedure eseguibili, o interpretandola proceduralmente, o spesso un mix di entrambi gli approcci.
Il mentro di J.Pitrat è che tale lavoro sulla conoscenza dichiarativa può e deve essere espresso in modo dichiarativo (attraverso una meta-conoscenza dichiarativa che può essere applicata a se stesso), con un bootstrap sistema.
BTW, il suo sistema CAIA ha molte conoscenze dichiarative ed è bootstrap, quindi si è tradotto in centinaia di migliaia di righe di C.
Potresti seguire il suo esempio e lavorare su un sistema dichiarativo che genera codice Java, ma è un lungo viaggio ... Il tuo sistema avrà quindi una parte "compiler", che è qualcosa che traduce contestualmente alcune conoscenze dichiarative in eseguibili Codice Java
Allo stesso modo, Haskell può trasformare (cioè compilare) alcune espressioni in diverse forme di codice, a seconda del contesto, ecc ...