Re: core.logic - explaining transitive relationships

2012-12-18 Thread Tassilo Horn
Stathis Sideris side...@gmail.com writes: Hi Stathis, With the code below you can query transitive relationships between entities successfully. Is there any way to use core.logic explain the relationship? Specifically, is there any way to write a function explain so that: (explain :pitbull

Re: core.logic - explaining transitive relationships

2012-12-18 Thread Stathis Sideris
Hello David, Yes, I wasn't expecting for this to be built-in. Your example is exactly what I was looking for, thanks a lot! I'll to need to spend some time to figure it out :-) Stathis On Tuesday, 18 December 2012 15:52:47 UTC, David Nolen wrote: There is no general explain functionality.

Re: core.logic - explaining transitive relationships

2012-12-18 Thread Stathis Sideris
Thanks for this. I didn't think about that! On Tuesday, 18 December 2012 15:51:55 UTC, Tassilo Horn wrote: Stathis Sideris sid...@gmail.com javascript: writes: Hi Stathis, With the code below you can query transitive relationships between entities successfully. Is there any way to use

Re: core.logic - explaining transitive relationships

2012-12-18 Thread David Nolen
;; there is a transitive relationship between x z if there is a ;; relationship between x some y and some y z (defn transitive [r] (fn t ;; if passed only two args create the path logic var ([x z] (t x z (lvar))) ;; take an x, z, and a path from x to z ([x z path]

Re: == is not transitive?

2012-10-06 Thread Jean Niklas L'orange
On Friday, October 5, 2012 7:17:50 PM UTC+2, Ben wrote: I'm not sure what you mean by this. Transitivity means that for all x, y, and z, (Fxy Fyz) = Fxz. But there are values of x, y, and z for which that does not hold. Yeah, sorry. What I meant was that == is only commutative if you

Re: == is not transitive?

2012-10-05 Thread Jean Niklas L'orange
On Friday, October 5, 2012 2:39:05 AM UTC+2, Ben wrote: user [(== 0 0.0) (== 0.0 0.0M) (== 0.0M 0)] [true true false] When passing two arguments to ==, == will be transitive. user [(== 0 0.0 0.0M) (== 0 0.0M 0.0) (== 0.0 0 0.0M) (== 0.0 0.0M 0) (== 0.0M 0.0 0) (== 0.0M 0 0.0)]

Re: == is not transitive?

2012-10-05 Thread Ben Smith-Mannschott
On Fri, Oct 5, 2012 at 11:08 AM, Jean Niklas L'orange jeann...@hypirion.com wrote: On Friday, October 5, 2012 2:39:05 AM UTC+2, Ben wrote: user [(== 0 0.0) (== 0.0 0.0M) (== 0.0M 0)] [true true false] When passing two arguments to ==, == will be transitive. user [(== 0 0.0 0.0M) (== 0

Re: == is not transitive?

2012-10-05 Thread Patrick Houk
I was bitten by this a year ago and posted here: http://groups.google.com/group/clojure/browse_frm/thread/9091ad790fc96b24 My workaround is to call BigDecimal#stripTrailingZeros before passing it to code that might compare it to some other number. user (== 1 (.stripTrailingZeros 1.0M)) true

Re: == is not transitive?

2012-10-05 Thread Ben Wolfson
On Fri, Oct 5, 2012 at 2:08 AM, Jean Niklas L'orange jeann...@hypirion.com wrote: On Friday, October 5, 2012 2:39:05 AM UTC+2, Ben wrote: user [(== 0 0.0) (== 0.0 0.0M) (== 0.0M 0)] [true true false] When passing two arguments to ==, == will be transitive. I'm not sure what you mean by

Re: == is not transitive?

2012-10-04 Thread JvJ
The only reason for this that I can think of is incomplete rules for casting numbers. On Thursday, 4 October 2012 20:39:05 UTC-4, Ben wrote: user [(== 0 0.0) (== 0.0 0.0M) (== 0.0M 0)] [true true false] user [(== 0 0.0 0.0M) (== 0 0.0M 0.0) (== 0.0 0 0.0M) (== 0.0 0.0M 0) (== 0.0M 0.0 0)