Closed jmvanel closed 11 years ago
For that the pattern matching would need to be quite invasive. We would need to ensure that success is not assigned anything after the if/else block.
It's not clear whether you write about the first , or the second fix I suggested. Anyway I don't see problem with assignments further down.
The fix I applied manually is :
val list = t1.cloneComponents()
var success =
if (t1.getClass == t2.getClass) list.addAll(t2.asInstanceOf[CompoundTerm].getComponents)
else list.add(t2)
(if (success) make(t1, list, memory) else null)
The corresponding Java is line 439 : https://open-nars.googlecode.com/svn/trunk/nars/language/CompoundTerm.java
Sorry, I was unclear. The default values for primitives have been fixed now. I might give the if/else merging a try later, but you can also try, if you are comfortable with that.
Released in 0.2.2
The Java source (line 439 ) :
https://open-nars.googlecode.com/svn/trunk/nars/language/CompoundTerm.java
The generated Scala :
COMMENT: moving up the val list declaration would be ideal solution, but maybe hard to implement ; maybe instead initialization to a neutral value like false for a Boolean and "" for a String will do . But NOTE : maybe this is intentional, because fixing like this would not be safe .
generated Scala, hand edited : https://open-nars.googlecode.com/svn/trunk/nars_core/src/main/scala/nars/language/CompoundTerm.scala