; Eclipse Public License, Version 1.0 (EPL-1.0) (plain text) THE ACCOMPANYING ; PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE PUBLIC LICENSE ; ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION OF THE PROGRAM ; CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT. ; ; 1. DEFINITIONS ; ; "Contribution" means: ; ; a) in the case of the initial Contributor, the initial code and ; documentation distributed under this Agreement, and b) in the case of each ; subsequent Contributor: i) changes to the Program, and ii) additions to the ; Program; where such changes and/or additions to the Program originate from ; and are distributed by that particular Contributor. A Contribution ; 'originates' from a Contributor if it was added to the Program by such ; Contributor itself or anyone acting on such Contributor's behalf. ; Contributions do not include additions to the Program which: (i) are ; separate modules of software distributed in conjunction with the Program ; under their own license agreement, and (ii) are not derivative works of the ; Program. "Contributor" means any person or entity that distributes the ; Program. ; ; "Licensed Patents " mean patent claims licensable by a Contributor which are ; necessarily infringed by the use or sale of its Contribution alone or when ; combined with the Program. ; ; "Program" means the Contributions distributed in accordance with this ; Agreement. ; ; "Recipient" means anyone who receives the Program under this Agreement, ; including all Contributors. ; ; 2. GRANT OF RIGHTS ; ; a) Subject to the terms of this Agreement, each Contributor hereby grants ; Recipient a non-exclusive, worldwide, royalty-free copyright license to ; reproduce, prepare derivative works of, publicly display, publicly perform, ; distribute and sublicense the Contribution of such Contributor, if any, and ; such derivative works, in source code and object code form. b) Subject to ; the terms of this Agreement, each Contributor hereby grants Recipient a ; non-exclusive, worldwide, royalty-free patent license under Licensed Patents ; to make, use, sell, offer to sell, import and otherwise transfer the ; Contribution of such Contributor, if any, in source code and object code ; form. This patent license shall apply to the combination of the Contribution ; and the Program if, at the time the Contribution is added by the ; Contributor, such addition of the Contribution causes such combination to be ; covered by the Licensed Patents. The patent license shall not apply to any ; other combinations which include the Contribution. No hardware per se is ; licensed hereunder. c) Recipient understands that although each Contributor ; grants the licenses to its Contributions set forth herein, no assurances are ; provided by any Contributor that the Program does not infringe the patent or ; other intellectual property rights of any other entity. Each Contributor ; disclaims any liability to Recipient for claims brought by any other entity ; based on infringement of intellectual property rights or otherwise. As a ; condition to exercising the rights and licenses granted hereunder, each ; Recipient hereby assumes sole responsibility to secure any other ; intellectual property rights needed, if any. For example, if a third party ; patent license is required to allow Recipient to distribute the Program, it ; is Recipient's responsibility to acquire that license before distributing ; the Program. d) Each Contributor represents that to its knowledge it has ; sufficient copyright rights in its Contribution, if any, to grant the ; copyright license set forth in this Agreement. ; ; 3. REQUIREMENTS ; ; A Contributor may choose to distribute the Program in object code form under ; its own license agreement, provided that: ; ; a) it complies with the terms and conditions of this Agreement; and b) its ; license agreement: i) effectively disclaims on behalf of all Contributors ; all warranties and conditions, express and implied, including warranties or ; conditions of title and non-infringement, and implied warranties or ; conditions of merchantability and fitness for a particular purpose; ii) ; effectively excludes on behalf of all Contributors all liability for ; damages, including direct, indirect, special, incidental and consequential ; damages, such as lost profits; iii) states that any provisions which differ ; from this Agreement are offered by that Contributor alone and not by any ; other party; and iv) states that source code for the Program is available ; from such Contributor, and informs licensees how to obtain it in a ; reasonable manner on or through a medium customarily used for software ; exchange. When the Program is made available in source code form: ; ; a) it must be made available under this Agreement; and b) a copy of this ; Agreement must be included with each copy of the Program. Contributors may ; not remove or alter any copyright notices contained within the Program. Each ; Contributor must identify itself as the originator of its Contribution, if ; any, in a manner that reasonably allows subsequent Recipients to identify ; the originator of the Contribution. ; ; 4. COMMERCIAL DISTRIBUTION ; ; Commercial distributors of software may accept certain responsibilities with ; respect to end users, business partners and the like. While this license is ; intended to facilitate the commercial use of the Program, the Contributor ; who includes the Program in a commercial product offering should do so in a ; manner which does not create potential liability for other Contributors. ; Therefore, if a Contributor includes the Program in a commercial product ; offering, such Contributor ("Commercial Contributor") hereby agrees to ; defend and indemnify every other Contributor ("Indemnified Contributor") ; against any losses, damages and costs (collectively "Losses") arising from ; claims, lawsuits and other legal actions brought by a third party against ; the Indemnified Contributor to the extent caused by the acts or omissions of ; such Commercial Contributor in connection with its distribution of the ; Program in a commercial product offering. The obligations in this section do ; not apply to any claims or Losses relating to any actual or alleged ; intellectual property infringement. In order to qualify, an Indemnified ; Contributor must: a) promptly notify the Commercial Contributor in writing ; of such claim, and b) allow the Commercial Contributor to control, and ; cooperate with the Commercial Contributor in, the defense and any related ; settlement negotiations. The Indemnified Contributor may participate in any ; such claim at its own expense. ; ; For example, a Contributor might include the Program in a commercial product ; offering, Product X. That Contributor is then a Commercial Contributor. If ; that Commercial Contributor then makes performance claims, or offers ; warranties related to Product X, those performance claims and warranties are ; such Commercial Contributor's responsibility alone. Under this section, the ; Commercial Contributor would have to defend claims against the other ; Contributors related to those performance claims and warranties, and if a ; court requires any other Contributor to pay any damages as a result, the ; Commercial Contributor must pay those damages. ; ; 5. NO WARRANTY ; ; EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS PROVIDED ON ; AN "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER ; EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR ; CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A ; PARTICULAR PURPOSE. Each Recipient is solely responsible for determining the ; appropriateness of using and distributing the Program and assumes all risks ; associated with its exercise of rights under this Agreement , including but ; not limited to the risks and costs of program errors, compliance with ; applicable laws, damage to or loss of data, programs or equipment, and ; unavailability or interruption of operations. ; ; 6. DISCLAIMER OF LIABILITY ; ; EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT NOR ANY ; CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL, ; SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION ; LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN ; CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ; ARISING IN ANY WAY OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE ; EXERCISE OF ANY RIGHTS GRANTED HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY ; OF SUCH DAMAGES. ; ; 7. GENERAL ; ; If any provision of this Agreement is invalid or unenforceable under ; applicable law, it shall not affect the validity or enforceability of the ; remainder of the terms of this Agreement, and without further action by the ; parties hereto, such provision shall be reformed to the minimum extent ; necessary to make such provision valid and enforceable. ; ; If Recipient institutes patent litigation against any entity (including a ; cross-claim or counterclaim in a lawsuit) alleging that the Program itself ; (excluding combinations of the Program with other software or hardware) ; infringes such Recipient's patent(s), then such Recipient's rights granted ; under Section 2(b) shall terminate as of the date such litigation is filed. ; ; All Recipient's rights under this Agreement shall terminate if it fails to ; comply with any of the material terms or conditions of this Agreement and ; does not cure such failure in a reasonable period of time after becoming ; aware of such noncompliance. If all Recipient's rights under this Agreement ; terminate, Recipient agrees to cease use and distribution of the Program as ; soon as reasonably practicable. However, Recipient's obligations under this ; Agreement and any licenses granted by Recipient relating to the Program ; shall continue and survive. ; ; Everyone is permitted to copy and distribute copies of this Agreement, but ; in order to avoid inconsistency the Agreement is copyrighted and may only be ; modified in the following manner. The Agreement Steward reserves the right ; to publish new versions (including revisions) of this Agreement from time to ; time. No one other than the Agreement Steward has the right to modify this ; Agreement. The Eclipse Foundation is the initial Agreement Steward. The ; Eclipse Foundation may assign the responsibility to serve as the Agreement ; Steward to a suitable separate entity. Each new version of the Agreement ; will be given a distinguishing version number. The Program (including ; Contributions) may always be distributed subject to the version of the ; Agreement under which it was received. In addition, after a new version of ; the Agreement is published, Contributor may elect to distribute the Program ; (including its Contributions) under the new version. Except as expressly ; stated in Sections 2(a) and 2(b) above, Recipient receives no rights or ; licenses to the intellectual property of any Contributor under this ; Agreement, whether expressly, by implication, estoppel or otherwise. All ; rights in the Program not expressly granted under this Agreement are ; reserved. ; ; This Agreement is governed by the laws of the State of New York and the ; intellectual property laws of the United States of America. No party to this ; Agreement will bring a legal action under this Agreement more than one year ; after the cause of action arose. Each party waives its rights to a jury ; trial in any resulting litigation. (ns koans.23-meta (:require [koan-engine.core :refer :all])) (def giants (with-meta 'Giants {:league "National League"})) (meditations "Some objects can be tagged using the with-meta function" (= __ (meta giants)) "Or more succinctly with a reader macro" (= __ (meta '^{:division "West"} Giants)) "While others can't" (= __ (try (with-meta 2 {:prime true}) (catch ClassCastException e "This doesn't implement the IObj interface"))) "Notice when metadata carries over" (= __ (meta (merge '^{:foo :bar} {:a 1 :b 2} {:b 3 :c 4}))) "And when it doesn't" (= __ (meta (merge {:a 1 :b 2} '^{:foo :bar} {:b 3 :c 36rCRAZY}))) "Metadata can be used as a type hint to avoid reflection during runtime" (= __ (#(.charAt ^String % 0) "Cast me")) "You can directly update an object's metadata" (= 0xFF (let [giants (with-meta 'Giants {:world-series-titles (atom 7)})] (swap! (:world-series-titles (meta giants)) __) @(:world-series-titles (meta giants)))) "You can also create a new object from another object with metadata" (= {:league "National League" :park "AT&T Park"} (meta (vary-meta giants assoc __ __))) "But it won't affect behavior like equality" (= __ (vary-meta giants dissoc :league)) "Or the object's printed representation" (= __ (pr-str (vary-meta giants dissoc :league))))