Re: JESS: Good grief

2010-08-16 Thread Wolfgang Laun
On 16 August 2010 05:37, Donald Winston satchwins...@yahoo.com wrote:

 I guess you got to use toArray and as-list all the time for any kind of
 array.

 Not quite. And the remaining todo's can be nicely abstracted into a couple
of deffunctions for doing the puts and gets:

(deffunction putIntoMap (?map ?key $?val)
  (if (= 1 (length$ $?val))
   then (call ?map put ?key (nth$ 1 $?val))
   else (call ?map put ?key $?val)))

(deffunction getFromMap (?map ?key)
  (bind ?val (call ?map get ?key))
  (bind ?strep (call String valueOf ?val))
  (if (and (eq ?strep null) (= ?val nil))
   then (return nil)
   else (bind ?clname ((call ?val getClass) getName))
(if (= [ (call ?clname substring 0 1))
 then (return (as-list ?val))
 else (return ?val

(bind ?myMap (new java.util.HashMap))

(bind ?string string-of-char)
(bind ?strings (list un deux trois))
(bind ?number 42)
(bind ?numbers (list 1001 64 3.14159))

(putIntoMap ?myMap string  ?string)
(putIntoMap ?myMap strings ?strings)
(putIntoMap ?myMap nephews Huey Dewey Louie)
(putIntoMap ?myMap number  ?number)
(putIntoMap ?myMap numbers ?numbers)
(putIntoMap ?myMap primes 2 3 5 7 11 13)

(foreach ?key (?myMap keySet)
;(list string strings nephews number numbers primes foo)
  (bind ?val (getFromMap ?myMap ?key))
  (if (listp ?val)
   then (printout t ?key  (list):  ?val crlf)
   else (printout t ?key  (scalar):  ?val crlf)))

This is the output:

numbers (list): (1001 64 3.14159)
string (scalar): string-of-char
number (scalar): 42
strings (list): (un deux trois)
primes (list): (2 3 5 7 11 13)
nephews (list): (Huey Dewey Louie)

(IMHO, Java Arrays aren't first choice in an application such as the one
you've described. YMMV.)
-W


JESS: Good grief

2010-08-15 Thread Donald Winston
Hmmm. Stuff does not work as expected.


(bind ?n (list a b c) toArray) ;this sort of works 
Java-Object:[Ljava.lang.Object; ???
(printout t ?n crlf)


(bind ?s (new String[]) ;does not work

((fetch aMap) get ?key) ;;if it's a String[] then what?



JESS: Good grief

2010-08-15 Thread Donald Winston
I guess you got to use toArray and as-list all the time for any kind of array.




To unsubscribe, send the words 'unsubscribe jess-users y...@address.com'
in the BODY of a message to majord...@sandia.gov, NOT to the list
(use your own address!) List problems? Notify owner-jess-us...@sandia.gov.