Thanks, it gave me insight into that framework.
Unfortunately it doesn't look friendly in usage.
Looks like there is a place for a clojure lib or wrapper around
core.logic.
It would be nice if it could answer to questions also in terms of
truth.

On 5 Lis, 18:24, Ambrose Bonnaire-Sergeant
<abonnaireserge...@gmail.com> wrote:
> I gave the wildcard requirement a bit of thought, no inspiration at the
> moment.
>
> Maybe someone else can suggest a strategy.
>
> Ambrose
>
> On Sun, Nov 6, 2011 at 1:14 AM, Ambrose Bonnaire-Sergeant <
>
>
>
>
>
>
>
> abonnaireserge...@gmail.com> wrote:
> > Hey Michael,
>
> > Here's a solution using core.logic.
>
> > ;; We can define a "permission" relation with "defrel".
>
> > (defrel permission roles ops state)
>
> > ;; and a helper function to add each combination of permissions
>
> > (defn add-permision [roles ops states]
> >   (for [r roles
> >         o ops
> >         s states]
> >     (fact permission r o s)))
>
> > ;; Here is your first example
>
> > (add-permision #{:admin :operator} #{:reject :accept} #{:applied})
>
> > ;; Now lets ask what are the permissions for the :admin role
>
> > logic-introduction.perm=> (run* [q]
> >                                 (fresh [ops states]
> >                                        (permission :admin ops states)
> >                                        (== q [ops states])))
> > ([:reject :applied] [:accept :applied])
>
> > ;; Ask what permissions either a :admin or :operator role has
>
> > logic-introduction.perm=> (run* [q]
> >                                 (fresh [role ops states]
> >                                        (conde
> >                                          ((== role :admin))
> >                                          ((== role :operator)))
> >                                        (== q [ops states])
> >                                        (permission role ops states)))
> > ([:reject :applied] [:accept :applied] [:reject :applied] [:accept
> > :applied])
>
> > Thanks,
> > Ambrose
>
> > On Sun, Nov 6, 2011 at 12:51 AM, Michael Jaaka <
> > michael.ja...@googlemail.com> wrote:
>
> >> Hi,
>
> >> I would like to use logic programing to describe permissions. The
> >> definition is
>
> >> We have set of triples which looks like:
> >> Set of roles; set of operations; set of states
>
> >> Triples are defined in scope of some entity with states, wildcard is
> >> defined with _
>
> >> All I need is to answer on some operation invocation if given user
> >> with his role is able to execute that operation for particular entity
> >> which is in one of its states
>
> >> Example:
> >> Roles: admin, operator, auditor
> >> Entity: data form with states dirty, applied, rejected, executed
> >> Operations on data form: reject, acept, list, enter
> >> Triples of permissions:
> >> admin, operator; reject, accept; applied
> >> auditor, operator; list; _
> >> operator; enter; dirty
>
> >> The additional question beside checking permission is:
> >> What are operations avaiable for given role and given state of entity
>
> >> Any thoughts? Maybe core.logic? It seems that I know its purpose but
> >> don't know how to use it.
> >> Thanks in advance.
>
> >> --
> >> 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 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

Reply via email to