User Tools

Site Tools


fp:home

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Next revision
Previous revision
fp:home [2014/10/19 21:42]
djo created
fp:home [2017/07/12 21:41] (current)
djo [Lisps, more generally]
Line 1: Line 1:
-====== ​Functional Programming ​======+====== ​Clojure and Scala ======
  
-Why Functional Programming (FP)?+At the time I originally created this page, functional programming on the JVM was a controversial idea.  Today, Scala and Clojure are de-facto standards for large scale distributed systems development and in my current job we use both.  Here I index blogs and links on these topics.
  
-Put quite simply, a functional style of programming can be achieved in any programming language, from //Java// to //Scala//, or pretty much any language--yet it is not the usual style that is practiced.+===== Clojure(script) =====
  
-I do not oppose object oriented ​programming ​(and think that OO can coexist nicely ​with FP)ratherI believe that a style of programming that embraces the advantages of both OO and FP can realize significant benefits. ​ For example:+  * [[http://​hoplon.io|Hoplon]],​ the most innovative web programming ​environment I've seen in a long time 
 +  * [[https://​coconutpalm.github.io/​clj-boot/​|Boot Boot]], a batteries-included setup for easy library creation ​with Boot: 
 +    * Including live compile/​test followed by hot code reload 
 +    * Markdown to documentation with live browser reload 
 +    * and (optional) upload to gh-pages and Clojars 
 +  * **Perun** - static web sites using Clojure 
 +    * [[http://​deraen.github.io/​hello-world/​|Introductory blog]] 
 +    * [[http://​perun.io|Home page]] 
 +    * [[https://​github.com/​Deraen/​deraen.github.io/​blob/​blog/​build.boot|Example web site / blog using Perun]]
  
-  * Easier tests with fewer fixtures and mocksthat refactor cleanly with the production code +===== Lispsmore generally =====
-  * More natural parallelism. ​  +
-    * Using a functional architecture,​ often parallelism can be added automatically as a feature of the library, without requiring synchronization or locking. +
-    * With multiple cores being standard equipment on today'​s computers, having natural parallelism that you just switch on is a huge advantage.+
  
-In this space I'll index my writings on functional ​programmingand particularly on Monads.+  *[[http://​practicaltypography.com/​why-racket-why-lisp.html|Why Racket]] is an excellent blog describing benefits that the Lisp family of languages generally brings to programming
 +  *[[http://​www.lispcast.com/​idea-of-lisp|The Idea of Lisp]] provides useful context ​and history explaining why Lisp has endured and remains useful today. 
 +===== Scala ===== 
 + 
 +  * http://​noelmarkham.github.io/​scalaz-scala.io -- Excellent Scalaz presentation 
 + 
 +===== Java and FP (pre Java-8) =====
  
   * [[blog:​improvements_on_null_safety_for_java_and_eclipse|An Option Monad for Java]]   * [[blog:​improvements_on_null_safety_for_java_and_eclipse|An Option Monad for Java]]
Line 18: Line 29:
   * [[blog:​comprehensibly_comprehending_monads|An Informal Introduction to Monads for Java and Scala Programmers]]   * [[blog:​comprehensibly_comprehending_monads|An Informal Introduction to Monads for Java and Scala Programmers]]
   * [[blog:​java_and_scala_monad_tutorials|A list of Scala and Java monad tutorials]]   * [[blog:​java_and_scala_monad_tutorials|A list of Scala and Java monad tutorials]]
 +
  
fp/home.1413769374.txt.gz · Last modified: 2014/10/19 21:42 by djo