| | 93 | === Other (FP) languages === |
| | 94 | |
| | 95 | If you know of other relevant language implementations, please add them! |
| | 96 | |
| | 97 | [http://www.cse.unsw.edu.au/~benl/papers/thesis/lippmeier-impure-world.pdf thesis] section 2.7 - 2.7.4 pages 115 - 119 |
| | 98 | |
| | 99 | The Opa language (functional, focused on web development) states that its modules are a special case of records. |
| | 100 | |
| | 101 | The Agda language [http://wiki.portal.chalmers.se/agda/pmwiki.php?n=ReferenceManual.Records generates a module (name space) for each record and also allows a record, like any module to be placed into the global scope by the programmer (opened in Agada terms)]. |
| | 102 | |
| | 103 | Other FP languages where I looked for a record implementation but it appeared they have no solution for records with the same fields (my information could be wrong/out-dated) ocaml, oz. However, the O in OCaml is for objects, and objects have structural typing that supports abstraction over fields. |
| | 104 | |
| | 105 | I couldn't find great specific information on record implementation ML variants. Best I can tell, SML does not allow records in the same module with the same field. Records from other modules require name-spacing or must be opened up similar to Agda. SML# supports [http://www.pllab.riec.tohoku.ac.jp/smlsharp/?FeatureRecordPolymorphism abstraction over fields] as per the overloaded records implementation. |
| | 106 | |
| | 107 | [http://roy.brianmckenna.org/ Roy], a functional language that targets only javascript, also has structural typing which prevents clashes and allows abstraction over fields. |