| 848 | } |
| 849 | |
| 850 | static public Object contains(Object coll, Object key){ |
| 851 | if(coll == null) |
| 852 | return F; |
| 853 | else if(coll instanceof Associative) |
| 854 | return ((Associative) coll).containsKey(key) ? T : F; |
| 855 | else if(coll instanceof IPersistentSet) |
| 856 | return ((IPersistentSet) coll).contains(key) ? T : F; |
| 857 | else if(coll instanceof Map) { |
| 858 | Map m = (Map) coll; |
| 859 | return m.containsKey(key) ? T : F; |
| 860 | } |
| 861 | else if(coll instanceof Set) { |
| 862 | Set s = (Set) coll; |
| 863 | return s.contains(key) ? T : F; |
| 864 | } |
| 865 | else if(key instanceof Number && (coll instanceof String || coll.getClass().isArray())) { |
| 866 | int n = ((Number) key).intValue(); |
| 867 | return n >= 0 && n < count(coll); |
| 868 | } |
| 869 | else if(coll instanceof ITransientSet) |
| 870 | return ((ITransientSet)coll).contains(key) ? T : F; |
| 871 | else if(coll instanceof ITransientAssociative2) |
| 872 | return (((ITransientAssociative2)coll).containsKey(key)) ? T : F; |
| 873 | throw new IllegalArgumentException("contains? not supported on type: " + coll.getClass().getName()); |
| 874 | } |
| 875 | |
| 876 | static public Object find(Object coll, Object key){ |
| 877 | if(coll == null) |