thanks for your thoughts!
On 27/09/2013, at 12:45 PM, Ryan Brush <rbr...@gmail.com> wrote: > Hey, I appreciate the thoughts. Funny how posting a project yields use cases > you've never thought of. I went ahead and logged an issue to track arbitrary > maps as facts here: > > https://github.com/rbrush/clara-rules/issues/6 > > I'm looking for ways to align with you needs, but I don't see an immediately > obvious way to do so. Out of respect for this mailing list, it probably seems > best to use the github issue to go deeper on this one. > > -Ryan > > On Thursday, September 26, 2013 5:03:24 PM UTC-5, zcaudate wrote: > Hi Ryan! > > Thanks for your response. I would love to see maps and nested maps as part of > the rules. I find that clara provides great syntax for defining inputs and > outputs and I would love to use it as a rules engine just beneath my front > end. > > However, most of my work is web based, data is javascript and so I'm > converting it into clojure maps and dispatching based on routes > > I'm not sure adding a :type field would be a good idea. I've implemented > something much simpler to work with arrays of elements with different ways > that elements can be selected and its better to work directly with the data > itself rather than tag…. > > I'm really hoping that something similar could be implemented in with routes > and data… something like: > > (defmaprule notify-client-rep > "Find the client represntative and send a notification of a support > request." > [:support/request [req] (== ?client (:client req)) > [:add/client/representive [req] ((req :clients) ?client) (== ?name (:name > req))] > => (println "Notify" ?name "that" ?client "has a support request") > ) > > > On 27/09/2013, at 12:23 AM, Ryan Brush <rbr...@gmail.com> wrote: > >> Not yet, although I would like to make use of simple maps natural. I had >> been toying with the idea of typing into the :type metadata that could be >> attached to a map, allowing expressions like: >> >> (defrule test-rule >> [:example/person-map-type (= "Alice" (:first-name this))] >> => >> (println "Hello, Alice!")) >> >> That way any map with that type annotation could be used in the rule. Today >> Clara does automatically bind "this" as a reference to the matched object, >> so functions can be called against it. (I'm not particularly thrilled by the >> implicit binding of "this", but it is common in rules engines so I included >> it here.) >> >> The advantage of records is they have a pre-defined type and pre-defined >> fields, so they are a natural alternative to facts and slots seen in other >> production systems. But since simple maps are so common in Clojure code I do >> want to incorporate them here, either by tapping into the type metadata as >> seen in the above example, or by doing something akin to how multimethods >> work, where the fact "type" is effectively defined by a function. >> >> I'd love to hear suggestions on this one. The goal is to get the advantages >> of a production system in a way that feels natural to Clojure developers. >> What would feel most natural to members of this group? >> >> On Wednesday, September 25, 2013, zcaudate wrote: >> Hi Ryan! >> >> Great work. Can normal clojure maps can be used instead of records? >> >> -- >> -- >> You received this message because you are subscribed to the Google >> Groups "Clojure" group. >> To post to this group, send email to clojure@googlegroups.com >> Note that posts from new members are moderated - please be patient with your >> first post. >> To unsubscribe from this group, send email to >> clojure+unsubscr...@googlegroups.com >> For more options, visit this group at >> http://groups.google.com/group/clojure?hl=en >> --- >> You received this message because you are subscribed to a topic in the >> Google Groups "Clojure" group. >> To unsubscribe from this topic, visit >> https://groups.google.com/d/topic/clojure/pfeFyZkoRdU/unsubscribe. >> To unsubscribe from this group and all its topics, send an email to >> clojure+unsubscr...@googlegroups.com. >> For more options, visit https://groups.google.com/groups/opt_out. >> >> -- >> -- >> You received this message because you are subscribed to the Google >> Groups "Clojure" group. >> To post to this group, send email to clo...@googlegroups.com >> Note that posts from new members are moderated - please be patient with your >> first post. >> To unsubscribe from this group, send email to >> clojure+u...@googlegroups.com >> For more options, visit this group at >> http://groups.google.com/group/clojure?hl=en >> --- >> You received this message because you are subscribed to a topic in the >> Google Groups "Clojure" group. >> To unsubscribe from this topic, visit >> https://groups.google.com/d/topic/clojure/pfeFyZkoRdU/unsubscribe. >> To unsubscribe from this group and all its topics, send an email to >> clojure+u...@googlegroups.com. >> For more options, visit https://groups.google.com/groups/opt_out. > > > -- > -- > You received this message because you are subscribed to the Google > Groups "Clojure" group. > To post to this group, send email to clojure@googlegroups.com > Note that posts from new members are moderated - please be patient with your > first post. > To unsubscribe from this group, send email to > clojure+unsubscr...@googlegroups.com > For more options, visit this group at > http://groups.google.com/group/clojure?hl=en > --- > You received this message because you are subscribed to a topic in the Google > Groups "Clojure" group. > To unsubscribe from this topic, visit > https://groups.google.com/d/topic/clojure/pfeFyZkoRdU/unsubscribe. > To unsubscribe from this group and all its topics, send an email to > clojure+unsubscr...@googlegroups.com. > For more options, visit https://groups.google.com/groups/opt_out. -- -- You received this message because you are subscribed to the Google Groups "Clojure" group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en --- You received this message because you are subscribed to the Google Groups "Clojure" group. To unsubscribe from this group and stop receiving emails from it, send an email to clojure+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.