[JAVA] Le monde de Clara-Rules (1)

Une bibliothèque appelée clara-rules a soudainement été évoquée en moi, alors je l'ai résumée rapidement.

Aperçu / caractéristiques

--Une bibliothèque qui fournit une implémentation du moteur de règles

règle? moteur?

--L'origine du système expert «C'était populaire pendant un certain temps car il était intéressant que les utilisateurs professionnels puissent résoudre des problèmes sans passer par un programmeur quand il n'y avait pas assez de programmeurs, mais il y avait une limite. --clara-rules cible les programmeurs, pas les utilisateurs professionnels, du point de vue que pratiquement toute règle est du code.

Ce qui peut être résolu

session --Représenter l'état --Insérer / retirer pour ajouter ou supprimer des faits --Le fait est représenté par une instance de l'enregistrement Clojure

Macro defrule

--Macro pour écrire des règles --Il y a un côté droit et un côté gauche --Séparé par =>

Exemple simple

(defrecord Num  [number])
(defrule is-two
  [Num (= number 2)] => (println "Two!"))

(-> (mk-session)
    (insert (Num 4)))
    (fire-rules))
;;Two!

Requete?

Autres sentiments divers, etc.

――Bien que ce ne soit pas spécifié, je pense qu'il y a quelque chose que je veux faire d'abord appelé clara-rules, et j'ai choisi Clojure pour son implémentation. «Je ne sais pas à quel point je suis heureux avec juste un exemple simple, donc j'ai encore besoin d'apprendre. --Il semble que JavaScript ait des nools et Ruby a wongi. «J'ai estimé que la génération dynamique de règles n'était pas prise en charge. --Dans defrule, je me demandais si je pourrais utiliser la méthode de protocole du type sur le côté gauche, mais l'auteur m'a dit que c'est possible avec slack.

Thanks for the clarification ryanbrush!

(defprotocol IFoo
  (test-foo [this]))

(deftype Foo []
  IFoo
  (test-foo [this] true))

(defrule is-foo
  [Foo (test-foo this;;Cela ressemble à un symbole qui est automatiquement lié dans la portée
        )]
  => (println "is a foo"))

(-> (mk-session)
    (insert (Foo.))
    (fire-rules))
;;is a foo

Suite

Recommended Posts

Le monde de Clara-Rules (2)
Le monde de Clara-Rules (4)
Le monde de Clara-Rules (1)
Le monde de Clara-Rules (3)
Le monde de Clara-Rules (5)
Jugement du calendrier
L'idée du tri rapide
L'idée de jQuery
À propos de la gestion de Null
Surveillance Docker-expliquant les bases des bases-
À propos de la description de Docker-compose.yml
Le jeu d'instancier java.lang.Void
Valeur médiane de trois valeurs
L'illusion de l'orientation objet
À propos du comportement de ruby Hash # ==
[Java] Supprimer les éléments de la liste
Modifier seulement une partie du texte
Comprendre le mécanisme de base de log4j2.xml
À propos des bases du développement Android
'% 02d' Quel est le% de% 2?
[Rails] Vérifiez le contenu de l'objet
Remplacez le contenu du fichier Jar
[Édition Java] Histoire de la sérialisation
Vérifiez la version de Cent OS
Explication de l'ordre des itinéraires ferroviaires
J'ai lu la source de ArrayList que j'ai lu
Les bases de SpringBoot + MyBatis + MySQL
Essayez HelloWorld avec la configuration minimale de Heroku Java spring-boot
J'ai lu la source d'Integer
Ceci et cela de JDK
Vérifier l'état de migration des rails
L'histoire de @ViewScoped dévore la mémoire
Filtrer les fluctuations des données brutes
Expliquer les colonnes de Spree :: Taxonomie
Un mémorandum du problème FizzBuzz
J'ai lu la source de Long
Expliquez la colonne de Spree :: Product
Diverses méthodes de la classe String
À propos du rôle de la méthode initialize
Pensez aux 7 règles d'Optionnel
Obtenez l'ID de la numérotation automatique
J'ai lu la source de Short
J'ai lu la source de Byte
Ordre de traitement dans le programme
J'ai lu la source de String
L'origine des expressions Java lambda
[Ruby] Afficher le contenu des variables
Filtrer le résultat de BindingResult [Spring]
Débogage à distance du SDK Cognos
À propos du niveau de journalisation de java.util.logging.Logger
Obtenez l'accélération et l'orientation du système de coordonnées mondial sur Android