├── graph-w-legend.png
├── readme.txt
├── pom.xml
├── src
└── net
│ └── n01se
│ └── clojure_classes.clj
├── epl-v10.html
├── graph.dot
└── graph.svg
/graph-w-legend.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Chouser/clojure-classes/HEAD/graph-w-legend.png
--------------------------------------------------------------------------------
/readme.txt:
--------------------------------------------------------------------------------
1 | The code in src/net/n01se/clojure_classes.clj uses Clojure, the
2 | Clojure .java sources, and the Graphviz "dot" program to produce
3 | "graph.dot".
4 |
5 | I run it like:
6 | mvn clojure:run
7 |
8 | The "graph.svg" file is then produced using:
9 | dot -Tsvg < graph.dot > graph.svg
10 |
11 | Adjustments to line thickness in graph.svg were made by:
12 | sed -b 's/stroke:#\w*;/&stroke-width:1.5;/g' graph.svg
13 |
14 | Inkscape is used to add the legend and make other minor manual
15 | adjustments seen in "graph-w-legend.svg" and "graph-w-legend.png".
16 |
17 | The graph-w-legend.png has also been run through gimp to reduce the
18 | number of colors and therefore the file size.
19 |
20 | --Chouser, Feb 2009
21 | [updated Feb 2011]
22 |
--------------------------------------------------------------------------------
/pom.xml:
--------------------------------------------------------------------------------
1 |
Eclipse Public License - v 1.0
31 | 32 |THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE 33 | PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR 34 | DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS 35 | AGREEMENT.
36 | 37 |1. DEFINITIONS
38 | 39 |"Contribution" means:
40 | 41 |a) in the case of the initial Contributor, the initial 42 | code and documentation distributed under this Agreement, and
43 |b) in the case of each subsequent Contributor:
44 |i) changes to the Program, and
45 |ii) additions to the Program;
46 |where such changes and/or additions to the Program 47 | originate from and are distributed by that particular Contributor. A 48 | Contribution 'originates' from a Contributor if it was added to the 49 | Program by such Contributor itself or anyone acting on such 50 | Contributor's behalf. Contributions do not include additions to the 51 | Program which: (i) are separate modules of software distributed in 52 | conjunction with the Program under their own license agreement, and (ii) 53 | are not derivative works of the Program.
54 | 55 |"Contributor" means any person or entity that distributes 56 | the Program.
57 | 58 |"Licensed Patents" mean patent claims licensable by a 59 | Contributor which are necessarily infringed by the use or sale of its 60 | Contribution alone or when combined with the Program.
61 | 62 |"Program" means the Contributions distributed in accordance 63 | with this Agreement.
64 | 65 |"Recipient" means anyone who receives the Program under 66 | this Agreement, including all Contributors.
67 | 68 |2. GRANT OF RIGHTS
69 | 70 |a) Subject to the terms of this Agreement, each 71 | Contributor hereby grants Recipient a non-exclusive, worldwide, 72 | royalty-free copyright license to reproduce, prepare derivative works 73 | of, publicly display, publicly perform, distribute and sublicense the 74 | Contribution of such Contributor, if any, and such derivative works, in 75 | source code and object code form.
76 | 77 |b) Subject to the terms of this Agreement, each 78 | Contributor hereby grants Recipient a non-exclusive, worldwide, 79 | royalty-free patent license under Licensed Patents to make, use, sell, 80 | offer to sell, import and otherwise transfer the Contribution of such 81 | Contributor, if any, in source code and object code form. This patent 82 | license shall apply to the combination of the Contribution and the 83 | Program if, at the time the Contribution is added by the Contributor, 84 | such addition of the Contribution causes such combination to be covered 85 | by the Licensed Patents. The patent license shall not apply to any other 86 | combinations which include the Contribution. No hardware per se is 87 | licensed hereunder.
88 | 89 |c) Recipient understands that although each Contributor 90 | grants the licenses to its Contributions set forth herein, no assurances 91 | are provided by any Contributor that the Program does not infringe the 92 | patent or other intellectual property rights of any other entity. Each 93 | Contributor disclaims any liability to Recipient for claims brought by 94 | any other entity based on infringement of intellectual property rights 95 | or otherwise. As a condition to exercising the rights and licenses 96 | granted hereunder, each Recipient hereby assumes sole responsibility to 97 | secure any other intellectual property rights needed, if any. For 98 | example, if a third party patent license is required to allow Recipient 99 | to distribute the Program, it is Recipient's responsibility to acquire 100 | that license before distributing the Program.
101 | 102 |d) Each Contributor represents that to its knowledge it 103 | has sufficient copyright rights in its Contribution, if any, to grant 104 | the copyright license set forth in this Agreement.
105 | 106 |3. REQUIREMENTS
107 | 108 |A Contributor may choose to distribute the Program in object code 109 | form under its own license agreement, provided that:
110 | 111 |a) it complies with the terms and conditions of this 112 | Agreement; and
113 | 114 |b) its license agreement:
115 | 116 |i) effectively disclaims on behalf of all Contributors 117 | all warranties and conditions, express and implied, including warranties 118 | or conditions of title and non-infringement, and implied warranties or 119 | conditions of merchantability and fitness for a particular purpose;
120 | 121 |ii) effectively excludes on behalf of all Contributors 122 | all liability for damages, including direct, indirect, special, 123 | incidental and consequential damages, such as lost profits;
124 | 125 |iii) states that any provisions which differ from this 126 | Agreement are offered by that Contributor alone and not by any other 127 | party; and
128 | 129 |iv) states that source code for the Program is available 130 | from such Contributor, and informs licensees how to obtain it in a 131 | reasonable manner on or through a medium customarily used for software 132 | exchange.
133 | 134 |When the Program is made available in source code form:
135 | 136 |a) it must be made available under this Agreement; and
137 | 138 |b) a copy of this Agreement must be included with each 139 | copy of the Program.
140 | 141 |Contributors may not remove or alter any copyright notices contained 142 | within the Program.
143 | 144 |Each Contributor must identify itself as the originator of its 145 | Contribution, if any, in a manner that reasonably allows subsequent 146 | Recipients to identify the originator of the Contribution.
147 | 148 |4. COMMERCIAL DISTRIBUTION
149 | 150 |Commercial distributors of software may accept certain 151 | responsibilities with respect to end users, business partners and the 152 | like. While this license is intended to facilitate the commercial use of 153 | the Program, the Contributor who includes the Program in a commercial 154 | product offering should do so in a manner which does not create 155 | potential liability for other Contributors. Therefore, if a Contributor 156 | includes the Program in a commercial product offering, such Contributor 157 | ("Commercial Contributor") hereby agrees to defend and 158 | indemnify every other Contributor ("Indemnified Contributor") 159 | against any losses, damages and costs (collectively "Losses") 160 | arising from claims, lawsuits and other legal actions brought by a third 161 | party against the Indemnified Contributor to the extent caused by the 162 | acts or omissions of such Commercial Contributor in connection with its 163 | distribution of the Program in a commercial product offering. The 164 | obligations in this section do not apply to any claims or Losses 165 | relating to any actual or alleged intellectual property infringement. In 166 | order to qualify, an Indemnified Contributor must: a) promptly notify 167 | the Commercial Contributor in writing of such claim, and b) allow the 168 | Commercial Contributor to control, and cooperate with the Commercial 169 | Contributor in, the defense and any related settlement negotiations. The 170 | Indemnified Contributor may participate in any such claim at its own 171 | expense.
172 | 173 |For example, a Contributor might include the Program in a commercial 174 | product offering, Product X. That Contributor is then a Commercial 175 | Contributor. If that Commercial Contributor then makes performance 176 | claims, or offers warranties related to Product X, those performance 177 | claims and warranties are such Commercial Contributor's responsibility 178 | alone. Under this section, the Commercial Contributor would have to 179 | defend claims against the other Contributors related to those 180 | performance claims and warranties, and if a court requires any other 181 | Contributor to pay any damages as a result, the Commercial Contributor 182 | must pay those damages.
183 | 184 |5. NO WARRANTY
185 | 186 |EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS 187 | PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS 188 | OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION, 189 | ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY 190 | OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely 191 | responsible for determining the appropriateness of using and 192 | distributing the Program and assumes all risks associated with its 193 | exercise of rights under this Agreement , including but not limited to 194 | the risks and costs of program errors, compliance with applicable laws, 195 | damage to or loss of data, programs or equipment, and unavailability or 196 | interruption of operations.
197 | 198 |6. DISCLAIMER OF LIABILITY
199 | 200 |EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT 201 | NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT, 202 | INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING 203 | WITHOUT LIMITATION LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF 204 | LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING 205 | NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR 206 | DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED 207 | HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
208 | 209 |7. GENERAL
210 | 211 |If any provision of this Agreement is invalid or unenforceable under 212 | applicable law, it shall not affect the validity or enforceability of 213 | the remainder of the terms of this Agreement, and without further action 214 | by the parties hereto, such provision shall be reformed to the minimum 215 | extent necessary to make such provision valid and enforceable.
216 | 217 |If Recipient institutes patent litigation against any entity 218 | (including a cross-claim or counterclaim in a lawsuit) alleging that the 219 | Program itself (excluding combinations of the Program with other 220 | software or hardware) infringes such Recipient's patent(s), then such 221 | Recipient's rights granted under Section 2(b) shall terminate as of the 222 | date such litigation is filed.
223 | 224 |All Recipient's rights under this Agreement shall terminate if it 225 | fails to comply with any of the material terms or conditions of this 226 | Agreement and does not cure such failure in a reasonable period of time 227 | after becoming aware of such noncompliance. If all Recipient's rights 228 | under this Agreement terminate, Recipient agrees to cease use and 229 | distribution of the Program as soon as reasonably practicable. However, 230 | Recipient's obligations under this Agreement and any licenses granted by 231 | Recipient relating to the Program shall continue and survive.
232 | 233 |Everyone is permitted to copy and distribute copies of this 234 | Agreement, but in order to avoid inconsistency the Agreement is 235 | copyrighted and may only be modified in the following manner. The 236 | Agreement Steward reserves the right to publish new versions (including 237 | revisions) of this Agreement from time to time. No one other than the 238 | Agreement Steward has the right to modify this Agreement. The Eclipse 239 | Foundation is the initial Agreement Steward. The Eclipse Foundation may 240 | assign the responsibility to serve as the Agreement Steward to a 241 | suitable separate entity. Each new version of the Agreement will be 242 | given a distinguishing version number. The Program (including 243 | Contributions) may always be distributed subject to the version of the 244 | Agreement under which it was received. In addition, after a new version 245 | of the Agreement is published, Contributor may elect to distribute the 246 | Program (including its Contributions) under the new version. Except as 247 | expressly stated in Sections 2(a) and 2(b) above, Recipient receives no 248 | rights or licenses to the intellectual property of any Contributor under 249 | this Agreement, whether expressly, by implication, estoppel or 250 | otherwise. All rights in the Program not expressly granted under this 251 | Agreement are reserved.
252 | 253 |This Agreement is governed by the laws of the State of New York and 254 | the intellectual property laws of the United States of America. No party 255 | to this Agreement will bring a legal action under this Agreement more 256 | than one year after the cause of action arose. Each party waives its 257 | rights to a jury trial in any resulting litigation.
258 | 259 | 260 | 261 | 262 | -------------------------------------------------------------------------------- /graph.dot: -------------------------------------------------------------------------------- 1 | digraph { 2 | rankdir=LR; 3 | dpi=55; 4 | nodesep=0.10; 5 | ranksep=1.2; 6 | mclimit=2500.0; 7 | node[ fontname=Helvetica shape=box ]; 8 | 9 | subgraph cluster_legend { 10 | label="Legend" 11 | fontname="Helvetica Bold" 12 | fontsize=19 13 | bgcolor="#dddddd" 14 | "Clojure Interface" [ shape=octagon fillcolor="#ffffff" style=filled ]; 15 | "Java Interface" [ shape=diamond fillcolor="#ffffff" style=filled ]; 16 | "Clojure class" [ shape=oval fillcolor="#ffffff" style=filled ]; 17 | 18 | badges [ 19 | shape=record 20 | style=filled 21 | fillcolor="#ffffff" 22 | label="{{M|T|1|S|Z|R|N|=}|{IMeta|Iterable|Counted|Streamable|Serializable|Reversible|Named|Comparable}}" 23 | ] 24 | } 25 | "class clojure.lang.AFn" [ label="AFn" color="#76d700" shape="oval"]; 26 | "class clojure.lang.AFn" -> "interface clojure.lang.IFn" [ color="#76d700" ]; 27 | "class clojure.lang.AFunction" [ label="AFunction\n[MZ]" color="#d70000" shape="oval"]; 28 | "class clojure.lang.AFunction" -> "class clojure.lang.AFn" [ color="#d70000" ]; 29 | "class clojure.lang.AFunction" -> "interface clojure.lang.IObj" [ color="#d70000" ]; 30 | "class clojure.lang.AFunction" -> "interface java.util.Comparator" [ color="#d70000" ]; 31 | "class clojure.lang.AFunction" -> "interface clojure.lang.Fn" [ color="#d70000" ]; 32 | "class clojure.lang.AMapEntry" [ label="AMapEntry\n[T1ZR=]" color="#5a00d7" shape="oval"]; 33 | "class clojure.lang.AMapEntry" -> "class clojure.lang.APersistentVector" [ color="#5a00d7" ]; 34 | "class clojure.lang.AMapEntry" -> "interface clojure.lang.IMapEntry" [ color="#5a00d7" ]; 35 | "class clojure.lang.APersistentMap" [ label="APersistentMap\n[T1Z]" color="#b300d7" shape="oval"]; 36 | "class clojure.lang.APersistentMap" -> "class clojure.lang.AFn" [ color="#b300d7" ]; 37 | "class clojure.lang.APersistentMap" -> "interface clojure.lang.IPersistentMap" [ color="#b300d7" ]; 38 | "class clojure.lang.APersistentMap" -> "interface java.util.Map" [ color="#b300d7" ]; 39 | "class clojure.lang.APersistentMap" -> "interface clojure.lang.MapEquivalence" [ color="#b300d7" ]; 40 | "class clojure.lang.APersistentSet" [ label="APersistentSet\n[T1Z]" color="#5a00d7" shape="oval"]; 41 | "class clojure.lang.APersistentSet" -> "class clojure.lang.AFn" [ color="#5a00d7" ]; 42 | "class clojure.lang.APersistentSet" -> "interface clojure.lang.IPersistentSet" [ color="#5a00d7" ]; 43 | "class clojure.lang.APersistentSet" -> "interface java.util.Collection" [ color="#5a00d7" ]; 44 | "class clojure.lang.APersistentSet" -> "interface java.util.Set" [ color="#5a00d7" ]; 45 | "class clojure.lang.APersistentVector" [ label="APersistentVector\n[T1ZR=]" color="#b300d7" shape="oval"]; 46 | "class clojure.lang.APersistentVector" -> "class clojure.lang.AFn" [ color="#b300d7" ]; 47 | "class clojure.lang.APersistentVector" -> "interface clojure.lang.IPersistentVector" [ color="#b300d7" ]; 48 | "class clojure.lang.APersistentVector" -> "interface java.util.List" [ color="#b300d7" ]; 49 | "class clojure.lang.APersistentVector" -> "interface java.util.RandomAccess" [ color="#b300d7" ]; 50 | "class clojure.lang.ARef" [ label="ARef\n[M]" color="#00d0d7" shape="oval"]; 51 | "class clojure.lang.ARef" -> "class clojure.lang.AReference" [ color="#00d0d7" ]; 52 | "class clojure.lang.ARef" -> "interface clojure.lang.IRef" [ color="#00d0d7" ]; 53 | "class clojure.lang.AReference" [ label="AReference\n[M]" color="#d70000" shape="oval"]; 54 | "class clojure.lang.AReference" -> "interface clojure.lang.IReference" [ color="#d70000" ]; 55 | "class clojure.lang.ASeq" [ label="ASeq\n[MTZ]" color="#00d0d7" shape="oval"]; 56 | "class clojure.lang.ASeq" -> "class clojure.lang.Obj" [ color="#00d0d7" ]; 57 | "class clojure.lang.ASeq" -> "interface clojure.lang.ISeq" [ color="#00d0d7" ]; 58 | "class clojure.lang.ASeq" -> "interface clojure.lang.Sequential" [ color="#00d0d7" ]; 59 | "class clojure.lang.ASeq" -> "interface java.util.List" [ color="#00d0d7" ]; 60 | "class clojure.lang.ATransientMap" [ label="ATransientMap\n[1]" color="#d78100" shape="oval"]; 61 | "class clojure.lang.ATransientMap" -> "class clojure.lang.AFn" [ color="#d78100" ]; 62 | "class clojure.lang.ATransientMap" -> "interface clojure.lang.ITransientMap" [ color="#d78100" ]; 63 | "class clojure.lang.ATransientSet" [ label="ATransientSet\n[1]" color="#76d700" shape="oval"]; 64 | "class clojure.lang.ATransientSet" -> "class clojure.lang.AFn" [ color="#76d700" ]; 65 | "class clojure.lang.ATransientSet" -> "interface clojure.lang.ITransientSet" [ color="#76d700" ]; 66 | "class clojure.lang.Agent" [ label="Agent\n[M]" color="#00d764" shape="oval"]; 67 | "class clojure.lang.Agent" -> "class clojure.lang.ARef" [ color="#00d764" ]; 68 | "class clojure.lang.ArrayChunk" [ label="ArrayChunk\n[1Z]" color="#76d700" shape="oval"]; 69 | "class clojure.lang.ArrayChunk" -> "interface clojure.lang.IChunk" [ color="#76d700" ]; 70 | "class clojure.lang.ArraySeq" [ label="ArraySeq\n[MT1Z]" color="#5a00d7" shape="oval"]; 71 | "class clojure.lang.ArraySeq" -> "class clojure.lang.ASeq" [ color="#5a00d7" ]; 72 | "class clojure.lang.ArraySeq" -> "interface clojure.lang.IndexedSeq" [ color="#5a00d7" ]; 73 | "class clojure.lang.ArraySeq" -> "interface clojure.lang.IReduce" [ color="#5a00d7" ]; 74 | "interface clojure.lang.Associative" [ label="Associative\nassociative?" color="#76d700" shape="octagon"]; 75 | "interface clojure.lang.Associative" -> "interface clojure.lang.IPersistentCollection" [ color="#76d700" ]; 76 | "interface clojure.lang.Associative" -> "interface clojure.lang.ILookup" [ color="#76d700" ]; 77 | "class clojure.lang.Atom" [ label="Atom\n[M]" color="#b300d7" shape="oval"]; 78 | "class clojure.lang.Atom" -> "class clojure.lang.ARef" [ color="#b300d7" ]; 79 | "interface java.util.concurrent.Callable" [ label="Callable" color="#00d764" shape="diamond"]; 80 | "class clojure.lang.ChunkBuffer" [ label="ChunkBuffer\n[1]" color="#b300d7" shape="oval"]; 81 | "class clojure.lang.ChunkedCons" [ label="ChunkedCons\n[MTZ]" color="#5a00d7" shape="oval"]; 82 | "class clojure.lang.ChunkedCons" -> "class clojure.lang.ASeq" [ color="#5a00d7" ]; 83 | "class clojure.lang.ChunkedCons" -> "interface clojure.lang.IChunkedSeq" [ color="#5a00d7" ]; 84 | "interface java.util.Collection" [ label="Collection\n[T]" color="#00d764" shape="diamond"]; 85 | "interface java.util.Comparator" [ label="Comparator" color="#00d0d7" shape="diamond"]; 86 | "interface java.util.concurrent.ConcurrentMap" [ label="ConcurrentMap" color="#0061d7" shape="diamond"]; 87 | "interface java.util.concurrent.ConcurrentMap" -> "interface java.util.Map" [ color="#0061d7" ]; 88 | "class clojure.lang.Cons" [ label="Cons\n[MTZ]" color="#76d700" shape="oval"]; 89 | "class clojure.lang.Cons" -> "class clojure.lang.ASeq" [ color="#76d700" ]; 90 | "class clojure.lang.Delay" [ label="Delay\ndelay?" color="#5a00d7" shape="oval"]; 91 | "class clojure.lang.Delay" -> "interface clojure.lang.IDeref" [ color="#5a00d7" ]; 92 | "class clojure.lang.Delay" -> "interface clojure.lang.IPending" [ color="#5a00d7" ]; 93 | "interface java.util.Map$Entry" [ label="Entry" color="#d7009e" shape="diamond"]; 94 | "interface java.util.Enumeration" [ label="Enumeration" color="#5a00d7" shape="diamond"]; 95 | "class clojure.lang.EnumerationSeq" [ label="EnumerationSeq\n[MTZ]" color="#00d0d7" shape="oval"]; 96 | "class clojure.lang.EnumerationSeq" -> "class clojure.lang.ASeq" [ color="#00d0d7" ]; 97 | "interface clojure.lang.Fn" [ label="Fn\nfn?" color="#0061d7" shape="octagon"]; 98 | "class clojure.lang.FnLoaderThunk" [ label="FnLoaderThunk\n[MZ]" color="#76d700" shape="oval"]; 99 | "class clojure.lang.FnLoaderThunk" -> "class clojure.lang.RestFn" [ color="#76d700" ]; 100 | "interface java.util.concurrent.Future" [ label="Future" color="#5a00d7" shape="diamond"]; 101 | "interface clojure.lang.IBlockingDeref" [ label="IBlockingDeref" color="#5a00d7" shape="octagon"]; 102 | "interface clojure.lang.IChunk" [ label="IChunk\n[1]" color="#0061d7" shape="octagon"]; 103 | "interface clojure.lang.IChunk" -> "interface clojure.lang.Indexed" [ color="#0061d7" ]; 104 | "interface clojure.lang.IChunkedSeq" [ label="IChunkedSeq" color="#d70000" shape="octagon"]; 105 | "interface clojure.lang.IChunkedSeq" -> "interface clojure.lang.ISeq" [ color="#d70000" ]; 106 | "interface clojure.lang.IChunkedSeq" -> "interface clojure.lang.Sequential" [ color="#d70000" ]; 107 | "interface clojure.lang.IDeref" [ label="IDeref" color="#00d764" shape="octagon"]; 108 | "interface clojure.lang.IEditableCollection" [ label="IEditableCollection" color="#76d700" shape="octagon"]; 109 | "interface clojure.lang.IFn" [ label="IFn\nifn?" color="#0061d7" shape="octagon"]; 110 | "interface clojure.lang.IFn" -> "interface java.util.concurrent.Callable" [ color="#0061d7" ]; 111 | "interface clojure.lang.IFn" -> "interface java.lang.Runnable" [ color="#0061d7" ]; 112 | "interface clojure.lang.ILookup" [ label="ILookup" color="#00d764" shape="octagon"]; 113 | "interface clojure.lang.ILookupSite" [ label="ILookupSite" color="#00d764" shape="octagon"]; 114 | "interface clojure.lang.ILookupThunk" [ label="ILookupThunk" color="#00d0d7" shape="octagon"]; 115 | "interface clojure.lang.IMapEntry" [ label="IMapEntry" color="#00d0d7" shape="octagon"]; 116 | "interface clojure.lang.IMapEntry" -> "interface java.util.Map$Entry" [ color="#00d0d7" ]; 117 | "interface clojure.lang.IObj" [ label="IObj\n[M]" color="#0061d7" shape="octagon"]; 118 | "interface clojure.lang.IPending" [ label="IPending" color="#d70000" shape="octagon"]; 119 | "interface clojure.lang.IPersistentCollection" [ label="IPersistentCollection\ncoll?" color="#d7009e" shape="octagon"]; 120 | "interface clojure.lang.IPersistentCollection" -> "interface clojure.lang.Seqable" [ color="#d7009e" ]; 121 | "interface clojure.lang.IPersistentList" [ label="IPersistentList\nlist?" color="#5a00d7" shape="octagon"]; 122 | "interface clojure.lang.IPersistentList" -> "interface clojure.lang.Sequential" [ color="#5a00d7" ]; 123 | "interface clojure.lang.IPersistentList" -> "interface clojure.lang.IPersistentStack" [ color="#5a00d7" ]; 124 | "interface clojure.lang.IPersistentMap" [ label="IPersistentMap\nmap?\n[T1]" color="#d70000" shape="octagon"]; 125 | "interface clojure.lang.IPersistentMap" -> "interface clojure.lang.Associative" [ color="#d70000" ]; 126 | "interface clojure.lang.IPersistentSet" [ label="IPersistentSet\nset?\n[1]" color="#d7009e" shape="octagon"]; 127 | "interface clojure.lang.IPersistentSet" -> "interface clojure.lang.IPersistentCollection" [ color="#d7009e" ]; 128 | "interface clojure.lang.IPersistentStack" [ label="IPersistentStack" color="#00d764" shape="octagon"]; 129 | "interface clojure.lang.IPersistentStack" -> "interface clojure.lang.IPersistentCollection" [ color="#00d764" ]; 130 | "interface clojure.lang.IPersistentVector" [ label="IPersistentVector\nvector?\n[1R]" color="#d7009e" shape="octagon"]; 131 | "interface clojure.lang.IPersistentVector" -> "interface clojure.lang.Associative" [ color="#d7009e" ]; 132 | "interface clojure.lang.IPersistentVector" -> "interface clojure.lang.Sequential" [ color="#d7009e" ]; 133 | "interface clojure.lang.IPersistentVector" -> "interface clojure.lang.IPersistentStack" [ color="#d7009e" ]; 134 | "interface clojure.lang.IPersistentVector" -> "interface clojure.lang.Indexed" [ color="#d7009e" ]; 135 | "interface clojure.lang.IReduce" [ label="IReduce" color="#d7009e" shape="octagon"]; 136 | "interface clojure.lang.IRef" [ label="IRef" color="#b300d7" shape="octagon"]; 137 | "interface clojure.lang.IRef" -> "interface clojure.lang.IDeref" [ color="#b300d7" ]; 138 | "interface clojure.lang.IReference" [ label="IReference\n[M]" color="#d78100" shape="octagon"]; 139 | "interface clojure.lang.ISeq" [ label="ISeq\nseq?" color="#b300d7" shape="octagon"]; 140 | "interface clojure.lang.ISeq" -> "interface clojure.lang.IPersistentCollection" [ color="#b300d7" ]; 141 | "interface clojure.lang.ITransientAssociative" [ label="ITransientAssociative" color="#b300d7" shape="octagon"]; 142 | "interface clojure.lang.ITransientAssociative" -> "interface clojure.lang.ITransientCollection" [ color="#b300d7" ]; 143 | "interface clojure.lang.ITransientAssociative" -> "interface clojure.lang.ILookup" [ color="#b300d7" ]; 144 | "interface clojure.lang.ITransientCollection" [ label="ITransientCollection" color="#b300d7" shape="octagon"]; 145 | "interface clojure.lang.ITransientMap" [ label="ITransientMap\n[1]" color="#00d0d7" shape="octagon"]; 146 | "interface clojure.lang.ITransientMap" -> "interface clojure.lang.ITransientAssociative" [ color="#00d0d7" ]; 147 | "interface clojure.lang.ITransientSet" [ label="ITransientSet\n[1]" color="#00d764" shape="octagon"]; 148 | "interface clojure.lang.ITransientSet" -> "interface clojure.lang.ITransientCollection" [ color="#00d764" ]; 149 | "interface clojure.lang.ITransientVector" [ label="ITransientVector\n[1]" color="#d7009e" shape="octagon"]; 150 | "interface clojure.lang.ITransientVector" -> "interface clojure.lang.ITransientAssociative" [ color="#d7009e" ]; 151 | "interface clojure.lang.ITransientVector" -> "interface clojure.lang.Indexed" [ color="#d7009e" ]; 152 | "interface clojure.lang.Indexed" [ label="Indexed\n[1]" color="#00d0d7" shape="octagon"]; 153 | "interface clojure.lang.IndexedSeq" [ label="IndexedSeq\n[1]" color="#0061d7" shape="octagon"]; 154 | "interface clojure.lang.IndexedSeq" -> "interface clojure.lang.ISeq" [ color="#0061d7" ]; 155 | "interface clojure.lang.IndexedSeq" -> "interface clojure.lang.Sequential" [ color="#0061d7" ]; 156 | "interface java.lang.reflect.InvocationHandler" [ label="InvocationHandler" color="#b300d7" shape="diamond"]; 157 | "interface java.util.Iterator" [ label="Iterator" color="#5a00d7" shape="diamond"]; 158 | "class clojure.lang.IteratorSeq" [ label="IteratorSeq\n[MTZ]" color="#0061d7" shape="oval"]; 159 | "class clojure.lang.IteratorSeq" -> "class clojure.lang.ASeq" [ color="#0061d7" ]; 160 | "class clojure.lang.Keyword" [ label="Keyword\nkeyword?\n[ZN=]" color="#76d700" shape="oval"]; 161 | "class clojure.lang.Keyword" -> "interface clojure.lang.IFn" [ color="#76d700" ]; 162 | "class clojure.lang.KeywordLookupSite" [ label="KeywordLookupSite" color="#d70000" shape="oval"]; 163 | "class clojure.lang.KeywordLookupSite" -> "interface clojure.lang.ILookupSite" [ color="#d70000" ]; 164 | "class clojure.lang.KeywordLookupSite" -> "interface clojure.lang.ILookupThunk" [ color="#d70000" ]; 165 | "class clojure.lang.LazySeq" [ label="LazySeq\n[MTZ]" color="#d78100" shape="oval"]; 166 | "class clojure.lang.LazySeq" -> "class clojure.lang.Obj" [ color="#d78100" ]; 167 | "class clojure.lang.LazySeq" -> "interface clojure.lang.ISeq" [ color="#d78100" ]; 168 | "class clojure.lang.LazySeq" -> "interface clojure.lang.Sequential" [ color="#d78100" ]; 169 | "class clojure.lang.LazySeq" -> "interface java.util.List" [ color="#d78100" ]; 170 | "class clojure.lang.LazySeq" -> "interface clojure.lang.IPending" [ color="#d78100" ]; 171 | "interface java.util.List" [ label="List\n[T]" color="#00d764" shape="diamond"]; 172 | "interface java.util.List" -> "interface java.util.Collection" [ color="#00d764" ]; 173 | "interface java.util.Map" [ label="Map" color="#00d764" shape="diamond"]; 174 | "class clojure.lang.MapEntry" [ label="MapEntry\n[T1ZR=]" color="#0061d7" shape="oval"]; 175 | "class clojure.lang.MapEntry" -> "class clojure.lang.AMapEntry" [ color="#0061d7" ]; 176 | "interface clojure.lang.MapEquivalence" [ label="MapEquivalence" color="#d78100" shape="octagon"]; 177 | "class clojure.lang.MultiFn" [ label="MultiFn" color="#76d700" shape="oval"]; 178 | "class clojure.lang.MultiFn" -> "class clojure.lang.AFn" [ color="#76d700" ]; 179 | "class clojure.lang.Namespace" [ label="Namespace\n[MZ]" color="#76d700" shape="oval"]; 180 | "class clojure.lang.Namespace" -> "class clojure.lang.AReference" [ color="#76d700" ]; 181 | "class clojure.lang.Obj" [ label="Obj\n[MZ]" color="#00d764" shape="oval"]; 182 | "class clojure.lang.Obj" -> "interface clojure.lang.IObj" [ color="#00d764" ]; 183 | "class clojure.lang.PersistentArrayMap" [ label="PersistentArrayMap\n[MT1Z]" color="#5a00d7" shape="oval"]; 184 | "class clojure.lang.PersistentArrayMap" -> "class clojure.lang.APersistentMap" [ color="#5a00d7" ]; 185 | "class clojure.lang.PersistentArrayMap" -> "interface clojure.lang.IObj" [ color="#5a00d7" ]; 186 | "class clojure.lang.PersistentArrayMap" -> "interface clojure.lang.IEditableCollection" [ color="#5a00d7" ]; 187 | "class clojure.lang.PersistentHashMap" [ label="PersistentHashMap\n[MT1Z]" color="#0061d7" shape="oval"]; 188 | "class clojure.lang.PersistentHashMap" -> "class clojure.lang.APersistentMap" [ color="#0061d7" ]; 189 | "class clojure.lang.PersistentHashMap" -> "interface clojure.lang.IEditableCollection" [ color="#0061d7" ]; 190 | "class clojure.lang.PersistentHashMap" -> "interface clojure.lang.IObj" [ color="#0061d7" ]; 191 | "class clojure.lang.PersistentHashSet" [ label="PersistentHashSet\n[MT1Z]" color="#5a00d7" shape="oval"]; 192 | "class clojure.lang.PersistentHashSet" -> "class clojure.lang.APersistentSet" [ color="#5a00d7" ]; 193 | "class clojure.lang.PersistentHashSet" -> "interface clojure.lang.IObj" [ color="#5a00d7" ]; 194 | "class clojure.lang.PersistentHashSet" -> "interface clojure.lang.IEditableCollection" [ color="#5a00d7" ]; 195 | "class clojure.lang.PersistentList" [ label="PersistentList\n[MT1Z]" color="#76d700" shape="oval"]; 196 | "class clojure.lang.PersistentList" -> "class clojure.lang.ASeq" [ color="#76d700" ]; 197 | "class clojure.lang.PersistentList" -> "interface clojure.lang.IPersistentList" [ color="#76d700" ]; 198 | "class clojure.lang.PersistentList" -> "interface clojure.lang.IReduce" [ color="#76d700" ]; 199 | "class clojure.lang.PersistentList" -> "interface java.util.List" [ color="#76d700" ]; 200 | "class clojure.lang.PersistentQueue" [ label="PersistentQueue\n[MT1Z]" color="#0061d7" shape="oval"]; 201 | "class clojure.lang.PersistentQueue" -> "class clojure.lang.Obj" [ color="#0061d7" ]; 202 | "class clojure.lang.PersistentQueue" -> "interface clojure.lang.IPersistentList" [ color="#0061d7" ]; 203 | "class clojure.lang.PersistentQueue" -> "interface java.util.Collection" [ color="#0061d7" ]; 204 | "class clojure.lang.PersistentStructMap" [ label="PersistentStructMap\n[MT1Z]" color="#00d0d7" shape="oval"]; 205 | "class clojure.lang.PersistentStructMap" -> "class clojure.lang.APersistentMap" [ color="#00d0d7" ]; 206 | "class clojure.lang.PersistentStructMap" -> "interface clojure.lang.IObj" [ color="#00d0d7" ]; 207 | "class clojure.lang.PersistentTreeMap" [ label="PersistentTreeMap\n[MT1ZR]" color="#d78100" shape="oval"]; 208 | "class clojure.lang.PersistentTreeMap" -> "class clojure.lang.APersistentMap" [ color="#d78100" ]; 209 | "class clojure.lang.PersistentTreeMap" -> "interface clojure.lang.IObj" [ color="#d78100" ]; 210 | "class clojure.lang.PersistentTreeMap" -> "interface clojure.lang.Sorted" [ color="#d78100" ]; 211 | "class clojure.lang.PersistentTreeSet" [ label="PersistentTreeSet\n[MT1ZR]" color="#d70000" shape="oval"]; 212 | "class clojure.lang.PersistentTreeSet" -> "class clojure.lang.APersistentSet" [ color="#d70000" ]; 213 | "class clojure.lang.PersistentTreeSet" -> "interface clojure.lang.IObj" [ color="#d70000" ]; 214 | "class clojure.lang.PersistentTreeSet" -> "interface clojure.lang.Sorted" [ color="#d70000" ]; 215 | "class clojure.lang.PersistentVector" [ label="PersistentVector\n[MT1ZR=]" color="#d78100" shape="oval"]; 216 | "class clojure.lang.PersistentVector" -> "class clojure.lang.APersistentVector" [ color="#d78100" ]; 217 | "class clojure.lang.PersistentVector" -> "interface clojure.lang.IObj" [ color="#d78100" ]; 218 | "class clojure.lang.PersistentVector" -> "interface clojure.lang.IEditableCollection" [ color="#d78100" ]; 219 | "class clojure.lang.ProxyHandler" [ label="ProxyHandler" color="#0061d7" shape="oval"]; 220 | "class clojure.lang.ProxyHandler" -> "interface java.lang.reflect.InvocationHandler" [ color="#0061d7" ]; 221 | "interface java.util.RandomAccess" [ label="RandomAccess" color="#d7009e" shape="diamond"]; 222 | "class clojure.lang.Range" [ label="Range\n[MT1Z]" color="#00d0d7" shape="oval"]; 223 | "class clojure.lang.Range" -> "class clojure.lang.ASeq" [ color="#00d0d7" ]; 224 | "class clojure.lang.Range" -> "interface clojure.lang.IReduce" [ color="#00d0d7" ]; 225 | "class clojure.lang.Ratio" [ label="Ratio\nratio?\n[Z=]" color="#d78100" shape="oval"]; 226 | "class clojure.lang.Ref" [ label="Ref\n[M=]" color="#d78100" shape="oval"]; 227 | "class clojure.lang.Ref" -> "class clojure.lang.ARef" [ color="#d78100" ]; 228 | "class clojure.lang.Ref" -> "interface clojure.lang.IFn" [ color="#d78100" ]; 229 | "class clojure.lang.Ref" -> "interface clojure.lang.IRef" [ color="#d78100" ]; 230 | "class clojure.lang.RestFn" [ label="RestFn\n[MZ]" color="#0061d7" shape="oval"]; 231 | "class clojure.lang.RestFn" -> "class clojure.lang.AFunction" [ color="#0061d7" ]; 232 | "interface java.lang.Runnable" [ label="Runnable" color="#00d0d7" shape="diamond"]; 233 | "class clojure.lang.SeqEnumeration" [ label="SeqEnumeration" color="#0061d7" shape="oval"]; 234 | "class clojure.lang.SeqEnumeration" -> "interface java.util.Enumeration" [ color="#0061d7" ]; 235 | "class clojure.lang.SeqIterator" [ label="SeqIterator" color="#76d700" shape="oval"]; 236 | "class clojure.lang.SeqIterator" -> "interface java.util.Iterator" [ color="#76d700" ]; 237 | "interface clojure.lang.Seqable" [ label="Seqable" color="#d78100" shape="octagon"]; 238 | "interface clojure.lang.Sequential" [ label="Sequential\nsequential?" color="#d78100" shape="octagon"]; 239 | "interface java.util.Set" [ label="Set\n[T]" color="#00d0d7" shape="diamond"]; 240 | "interface java.util.Set" -> "interface java.util.Collection" [ color="#00d0d7" ]; 241 | "interface clojure.lang.Settable" [ label="Settable" color="#0061d7" shape="octagon"]; 242 | "interface clojure.lang.Sorted" [ label="Sorted\nsorted?" color="#5a00d7" shape="octagon"]; 243 | "class clojure.lang.StringSeq" [ label="StringSeq\n[MT1Z]" color="#d7009e" shape="oval"]; 244 | "class clojure.lang.StringSeq" -> "class clojure.lang.ASeq" [ color="#d7009e" ]; 245 | "class clojure.lang.StringSeq" -> "interface clojure.lang.IndexedSeq" [ color="#d7009e" ]; 246 | "class clojure.lang.Symbol" [ label="Symbol\nsymbol?\n[MZN=]" color="#0061d7" shape="oval"]; 247 | "class clojure.lang.Symbol" -> "class clojure.lang.AFn" [ color="#0061d7" ]; 248 | "class clojure.lang.Symbol" -> "interface clojure.lang.IObj" [ color="#0061d7" ]; 249 | "class clojure.lang.TransactionalHashMap" [ label="TransactionalHashMap" color="#d7009e" shape="oval"]; 250 | "class clojure.lang.TransactionalHashMap" -> "interface java.util.concurrent.ConcurrentMap" [ color="#d7009e" ]; 251 | "class clojure.lang.Var" [ label="Var\nvar?\n[M]" color="#00d0d7" shape="oval"]; 252 | "class clojure.lang.Var" -> "class clojure.lang.ARef" [ color="#00d0d7" ]; 253 | "class clojure.lang.Var" -> "interface clojure.lang.IFn" [ color="#00d0d7" ]; 254 | "class clojure.lang.Var" -> "interface clojure.lang.IRef" [ color="#00d0d7" ]; 255 | "class clojure.lang.Var" -> "interface clojure.lang.Settable" [ color="#00d0d7" ]; 256 | "class clojure.core$future_call$reify__5684" [ label="(future)\n[M]" color="#0061d7" shape="oval"]; 257 | "class clojure.core$future_call$reify__5684" -> "interface java.util.concurrent.Future" [ color="#0061d7" ]; 258 | "class clojure.core$future_call$reify__5684" -> "interface clojure.lang.IBlockingDeref" [ color="#0061d7" ]; 259 | "class clojure.core$future_call$reify__5684" -> "interface clojure.lang.IPending" [ color="#0061d7" ]; 260 | "class clojure.core$future_call$reify__5684" -> "interface clojure.lang.IDeref" [ color="#0061d7" ]; 261 | "class clojure.core$future_call$reify__5684" -> "interface clojure.lang.IObj" [ color="#0061d7" ]; 262 | } 263 | -------------------------------------------------------------------------------- /graph.svg: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 1325 | --------------------------------------------------------------------------------