- Abramsky and Jung "Domain Theory" http://www.cs.bham.ac.uk/~axj/pub/papers/handy1.pdf
- Appel, Andrew "Modern Compiler Implementation in ML"
- Cousot, Patrick "Abstract Interpretation Based Formal Methods and Future Challenges" http://www.di.ens.fr/~cousot/publications.www/Cousot-LNCS2000-sv-sb.pdf
- Darais, Might, and Van Horn "Galois Transformers and Modular Abstract Interpreters" http://arxiv.org/pdf/1411.3962v1.pdf
- Davey and Priestley, "Introduction To Lattices and Order"
- Friedman and Mendhekar, "Using an Abstracted Interpreter to Understand Abstract Interpretation" http://www.cs.indiana.*du/l/www/classes/b621/abiall.pdf
- Friedman and Wand, "Essentials of Programming Languages"
- Jones and Nielson, "Abstract Interpretation: a Semantics-Based Tool for Program Analysis" http://se.inf.ethz.ch/courses/2014b_fall/sv/reading/jones-nielson.pdf
- Livshits, Sridharan, Smaragdakis, et. al. "In Defense of Soundiness: A Manifesto" http://cgi.di.uoa.gr/~smaragd/Soundiness-CACM.pdf
- Might, Matt "Writing an inte
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
(defc numberc [x] | |
(number? x)) | |
(unifier '(?x) '(1) :when {'?x numberc}) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
(unifier/unify | |
{:as '{?x (?y ?z)} | |
:constraints {'?z (fnc [n] (number? n))} | |
'(?x ?a) '(["foo" 9] [1 2 3])) | |
;; previously you couldn't name '(?y ?z) | |
(unifier/unify | |
{:constraints {'?z (fnc [n] (number? n)}} | |
'((?y ?z) ?a) '(["foo" 9] [1 2 3])) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
(ns n01se.externs-for-cljs | |
(:require [clojure.java.io :as io] | |
[cljs.compiler :as comp] | |
[cljs.analyzer :as ana])) | |
(defn read-file [file] | |
(let [eof (Object.)] | |
(with-open [stream (clojure.lang.LineNumberingPushbackReader. (io/reader file))] | |
(vec (take-while #(not= % eof) | |
(repeatedly #(read stream false eof))))))) |
A list of commonly asked questions, design decisions, reasons why Clojure is the way it is as they were answered directly by Rich (even when from many years ago, those answers are pretty much valid today!). Feel free to point friends and colleagues here next time they ask (again). Answers are pasted verbatim (I've made small adjustments for readibility, but never changed a sentence) from mailing lists, articles, chats.
How to use:
- The link in the table of content jumps at the copy of the answer on this page.
- The link on the answer itself points back at the original post.