In our meetup, programmers and non-programmer alike sat down and read through the Clojure docs to understand how functional programming could help us.
- As a data scientist I have found it useful to describe complex transformations. Twitter currently uses Scala.
- Potential alternative to Java (for Android) or JavaScript (for web development)
- Lisp, Scheme, ML, Clojure very similar. Learn one, get others for free.
- Emacs
- Compiles to Java or JavaScript
- trycoljure.com
- clojurescript koans
- clojure tutorial
- Himera online REPL (Read-Eval-Print-Loop) hosted on Heroku
- Intro to Clojure Youtube with Rich
- Clojure: Functional Programming for the JVM
The form 'foo is simply a faster way to type the special form
(quote foo)
which is to say, "do not evaluate the name foo and replace it with its value; I really mean the name foo".
- Structure and Interpretation in Computer Programs
- computer science textbook for MIT freshmen
- in
Scheme
(close enough)
- tutorials are short. fork and make your own
- clojurescript koans on GitHub
- tryclojure on GitHub
- Leiningen "for automating Clojure projects without setting your hair on fire"
- Clojure web frameworks (StackOverflow)
- Algebrid
- Oscar Boykin (@posco) responds on StackOverflow: What use are groups, monoids and rings in database computations ?
- SICP has sequel: Structure and Interpretation of Classical Mechanics
- make awesome simulations
- has yet another sequel Functional Differential Geometry "calculus-indexed"
- C2 is a Clojure port of d3.js
D3 is written in JavaScript and C2 is written in Clojure. Clojure is a richer language than JavaScript, with features like destructuring, lazy evaluation, namespaces, and macros, which JavaScript does not provide. Since Clojure runs on the Java Virtual Machine, it’s possible to work with much larger data sets than JavaScript can handle, directly access datastores, and perform advanced computations (in parallel).
'
comilla"
comillas;
punto-y-coma-
guion_
underscore
Thanks to Jośe Padilla @ Blimp for hosting is at Puerto Rico Science and Technology Trust.
Clojure (pronounced like "closure"[3]) is a dialect of the Lisp programming language created by Rich Hickey. Clojure is a functional general-purpose language, and runs on the Java Virtual Machine, Common Language Runtime, and JavaScript engines. Like other Lisps, Clojure treats code as data and has a sophisticated macro system.
Clojure's focus on programming with immutable values and explicit progression-of-time constructs are intended to facilitate the development of more robust programs, particularly multithreaded ones.
In computer science, functional programming is a programming paradigm, a style of building the structure and elements of computer programs, that treats computation as the evaluation of mathematical functions and avoids state and mutable data. Functional programming emphasizes functions that produce results that depend only on their inputs and not on the program state—i.e. pure mathematical functions. It is a declarative programming paradigm, which means programming is done with expressions...
Functional programming has its roots in lambda calculus, a formal system developed in the 1930s to investigate computability, the Entscheidungsproblem, function definition, function application, and recursion. Many functional programming languages can be viewed as elaborations on the lambda calculus, where computation is treated as the evaluation of mathematical functions and avoids state and mutable data...
In contrast, imperative programming changes state with commands in the source language, the most simple example is the assignment. Functions do exist, not in the mathematical sense, but the sense of subroutine. They can have side effects that may change the value of program state. Functions without return value therefore make sense. Because of this, they lack referential transparency, i.e. the same language expression can result in different values at different times depending on the state of the executing program.
- purists
- too much extra work, Object Oriented Programming (OOP) works great
- unreadable
- maybe Scala?
- Ruby?
- Python?
- Lisp is on its way out in favor of R and Julia