2017-01-29 1 views
0

Je voudrais le code prétraiter d'une autre langue comme ceci:code source étrangère pré-traitement avec Clojure

Predicate1(X) => Predicate2(Y) 
<% (clojure-func "Predicate3" "X" "Y") %> 

Fondamentalement, ce qui est entre crochets à l'intérieur est exécuté et la sortie de chaîne émise insérée dans la chaîne. Je vois qu'il y a des bibliothèques de templates HTML. Je me demande si je peux me débrouiller avec quelque chose comme les macros de Clojure. Il est possible que je ne suis pas au courant des avantages fournis par une bibliothèque de modèles comme Fleet ou , et ont besoin de conseils.

Dans l'exemple ci-dessus, je veux créer des combinaisons de plusieurs expressions:

Predicate3(X_a) => Predicate2(Y) 
Predicate3(X_b) => Predicate2(Y) 

En fin de compte, j'ai besoin de garder une trace des variables de la langue étrangère. À cette fin, le pré-traitement peut être une mauvaise approche et je préfère faire du code complet.

P.S .: Pour ceux d'entre vous se demandent que j'essaie d'étendre le langage de Markov Logic Networks (MLN).

Répondre

1

Les macros Clojure ne vous aideront pas directement dans cette tâche. Les macros nécessitent toujours que les expressions soient dans une syntaxe lisible essentiellement par Clojure avec des invocations de la forme (macro arg1 arg...).

D'autres langages vous permettent d'étendre la syntaxe lisible avec les macros de lecteurs, mais Clojure a décidé de ne pas les autoriser.

+0

Le monde de Clojure est petit. J'étais sur ton blog l'autre jour :) – m33lky