Inspired by "Parsing CSS with Parsec".
Just quick notes and code that you can play with in REPL.
By @kachayev
| OSProcess thisOSProcess environment |
| (ns weighted-rand | |
| (:import clojure.lang.PersistentQueue)) | |
| (defprotocol Rand | |
| (nextr [_ rng])) | |
| ;; Vose's alias method | |
| ;; http://www.keithschwarz.com/darts-dice-coins/ | |
| (deftype Vose [n ^ints alias ^doubles prob] |
Inspired by "Parsing CSS with Parsec".
Just quick notes and code that you can play with in REPL.
By @kachayev
| (require '[datomic.api :as d]) | |
| (defn entity-changes | |
| "Return transaction history for an entity and its components. | |
| Returns a sequence of maps, each is the transaction map (tx metadata) plus a | |
| key `:entity-changes`, which is a nested map of keys: entity id, attribute | |
| ident, `:db/add` or `:db/retract`, and the value added or retracted, e.g.: | |
| {12345678910 {:long-card-1-attr {:db/retract 1 | |
| :db/add 0} | |
| :long-card-many-attr {:db/add #{0}} |
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:
| (ns typehint.core) | |
| ;; A little type hint hint... | |
| (set! *warn-on-reflection* true) | |
| ;; There are two ways to type hint the return value of a function, but one is | |
| ;; (technically) wrong: | |
| (defn ^String as-string0 |
| /** | |
| * Export all data from an IndexedDB database | |
| * | |
| * @param {IDBDatabase} idbDatabase The database to export from | |
| * @return {Promise<string>} | |
| */ | |
| export function exportToJson(idbDatabase) { | |
| return new Promise((resolve, reject) => { | |
| const exportObject = {} | |
| if (idbDatabase.objectStoreNames.length === 0) { |
Peter Naur's classic 1985 essay "Programming as Theory Building" argues that a program is not its source code. A program is a shared mental construct (he uses the word theory) that lives in the minds of the people who work on it. If you lose the people, you lose the program. The code is merely a written representation of the program, and it's lossy, so you can't reconstruct
| <!DOCTYPE html> | |
| <html lang="en"> | |
| <head> | |
| <meta charset="utf-8" /> | |
| <meta name="viewport" content="width=device-width, initial-scale=1" /> | |
| <title>*scratch*</title> | |
| <style> | |
| body { | |
| font-family: Hack, Menlo, Monaco, 'Droid Sans Mono', 'Courier New', monospace; | |
| white-space: pre; |