====== [hemmerling] Functional Programming ====== ===== True Functional Programming Languages ===== *Experts told me their subjective order of easyness to learn: -[[http://en.wikipedia.org/wiki/Ocaml|EN.Wikipedia "Objective Caml"]], [[http://de.wikipedia.org/wiki/Ocaml|DE.Wikipedia "Objective CAML"]]. -[[http://en.wikipedia.org/wiki/Clojure|EN.Wikipedia "Clojure"]], [[http://de.wikipedia.org/wiki/Clojure|DE.Wikipedia "Clojure"]]. -[[http://en.wikipedia.org/wiki/Haskell_%28programming_language%29|EN.Wikipedia "Haskell (programming language)"]], [[http://de.wikipedia.org/wiki/Haskell_%28Programmiersprache%29|DE.Wikipedia "Haskell (Programmiersprache)"]]. ===== Some other Programming Languages with Functional Aspects ===== ==== Microsoft .NET Platform ==== === F# === *[[http://en.wikipedia.org/wiki/F_Sharp_%28programming_language%29|EN.Wikipedia "F Sharp (programming language)"]], [[http://de.wikipedia.org/wiki/F-Sharp|DE.Wikipedia "F-Sharp"]]. *[[http://research.microsoft.com/en-us/um/cambridge/projects/fsharp/release.aspx|Microsoft Research "F# Downloads"]]. === C# 4.0 on .NET 4.0 === *[[https://www.google.de/search?q=functional+programming+c%23|Google - Search for "functional programming c#"]]. ==== Java Runtime Platform ==== === Lambdas & Streams with Java 8 === == The Project == *[[http://openjdk.java.net/projects/lambda/|OpenJDK: Project Lambda]]. *[[http://www.slideshare.net/InfoQ/project-lambda-in-java-se-8|SlideShare "Daniel Smth, Java Language Designer: Project Lambda in Java SE 8"]]. *[[http://docs.oracle.com/javase/8/docs/|Oracle "Java Platform Standard Edition 8 Documentation"]]. *[[http://docs.oracle.com/javase/8/javafx/api/|Oracle Documentation "JavaFX8"]]. == Tools == *Eclipse. *[[http://wiki.eclipse.org/JDT/Eclipse_Java_8_Support_%28BETA%29|Eclipsepedia "JDT/Eclipse Java 8 Support (BETA)"]]. *[[http://wiki.eclipse.org/JDT_Core/Java8|Eclipsepedia "JDT Core/Java8"]]. *[[http://www.netbeans.org/|NetBeans IDE]] 8. *[[http://www.jetbrains.com/idea/download/|IntelliJ IDEA 13 Community Edition FREE]]. *[[http://confluence.jetbrains.com/display/IDEADEV/IDEA+13+EAP| IDEA 13 Community Edition EAP]] with Java8 support. == Training Events == *[[http://www.jaxenter.de/news/Java-Magazin-veranstaltet-Lambda-Tour-Java-8-Hackathons-in-Muenchen-Hamburg-Frankfurt-Duisburg-165736|JAXenter.de "Java Magazin veranstaltet Lambda Tour: Java-8-Hackathons in München, Hamburg, Frankfurt und Duisburg"]]. *[[http://www.angelikalanger.com/|Angelika Langer - Training & Consulting]]. *[[http://www.angelikalanger.com/Conferences/Abstracts/LambdasHackSession.htm|Angelika Langer - Training & Consulting "Programming with Lambdas & Streams in Java 8"]]. *[[http://www.angelikalanger.com/Lambdas/Lambdas.html|Angelika Langer - Training & Consulting "Lambda Expressions and Streams in Java - Tutorial & Reference"]]. *[[http://www.angelikalanger.com/Conferences/Slides/jf12_LambdasInJava8-1.pdf|Angelika Langer - Training & Consulting, Slides "Java 8 Lambda Expressions"]] ( PDF ). *[[http://www.youtube.com/watch?v=gkIgo892N_w|YouTube "Funktionale Programmierung für Java-Entwickler"]]. *[[http://www.vimeo.com/49385450|Vimeo "Lambdas in Java 8"]]. *[[http://www.twitter.com/AngelikaLanger|Twitter "Angelika Langer"]]. *[[http://www.jaxenter.de/Klaus-Kreft|Klaus Kreft]]. *[[http://www.nighthacking.com/|NightHacking]]. *[[http://www.meetup.com/nighthackingworldwide/|Meetup "NightHacking Worldwide"]] - "Lambdas Hacking with Brian Goetz", 2014-01-16. *[[http://www.facebook.com/nighthacking|Facebook "NightHacking"]]. *[[http://www.briangoetz.com/|Brian Goetz]]. *[[http://www.linkedin.com/in/briangoetz|LinkedIn "Brian Goetz"]]. *[[http://www.twitter.com/BrianGoetz|Twitter "Brian Goetz"]]. == Functional Frameworks & Libraries based on Java8 == *[[http://www.javaslang.com/|JavaSlang - Functional Library for Java 8+]], [[http://www.github.com/javaslang|GitHub "javaslang"]]. == Resources == *Language features: *Functional interfaces. *[[http://java.dzone.com/articles/introduction-functional-1|DZone Javalobby "Mohamed Sanaulla: Introduction to Functional Interfaces – A concept recreated in Java 8"]]. *An interface with one ( and just one ) implemented method. *Executive pattern - Execution of actions in a defined order. *Null pattern. *[[http://en.wikipedia.org/wiki/Null_Object_pattern|EN.Wikipedia "Null Object pattern"]], [[http://de.wikipedia.org/wiki/Nullobjekt_%28Entwurfsmuster%29|EN.Wikipedia "Nullobjekt (Entwurfsmuster)"]]. *[[http://cr.openjdk.java.net/~briangoetz/lambda/lambda-state-final.html|Brian Goetz "State of the Lambda"]], 2013-09. *[[http://de.slideshare.net/GuenterJantzen/|Slideshare - Günter Jantzen]]. *[[http://de.slideshare.net/GuenterJantzen/aots|Slideshare - Günter Jantzen "Art of the state - Funktionale Softwarearchitektur mit Plain Old Java"]]. *[[http://www.xing.com/profiles/Sven_Ruppert2|XING "Sven Ruppert"]], [[http://de.linkedin.com/in/svenruppert/|LinkedIn "Sven Ruppert"]]. *[[http://www.jaxenter.de/Sven-Ruppert-168244|JAXenter.de "Sven Ruppert"]]. *[[http://www.twitter.com/SvenRuppert|Twitter "Sven Ruppert, @SvenRuppert"]]. *The e-book [[http://www.amazon.de/exec/obidos/ASIN/B00HALCBMC/hemmerling-21|Sven Ruppert: Java 8 Streams (shortcuts)]]. *[[http://www.rapidpm.org/|RapidPM]]. *[[http://github.com/svenruppert|GitHub "svenruppert"]]. *The commercial course [[http://eppleton.de/java-8-kickstart|Eppleton IT Consulting "Java 8 Kickstart"]]. *[[http://blogs.oracle.com/thejavatutorials/entry/javaone_2013_lambda_expressions|The Java Tutorials' Weblog Blog for thejavatutorials "JavaOne 2013: Lambda Expressions"]]. *[[http://oracleus.activeevents.com/2013/connect/sessionDetail.ww?SESSION_ID=7942|Paul Sandoz "Java 8 Streams: Lambda in Top Gear"]]. *[[http://oracleus.activeevents.com/2013/connect/sessionDetail.ww?SESSION_ID=7962|Mike Duigou "Java 8 Collections and Concurrency"]]. *[[http://www.oracleus.activeevents.com/2013/connect/sessionDetail.ww?SESSION_ID=7504|Maurice Naftalin "Navigating the Streams API"]] #. *[[http://oracleus.activeevents.com/2013/connect/sessionDetail.ww?SESSION_ID=10173|Alexander Belokrylov "Retro Gaming with Lambdas"]]. *[[http://oracleus.activeevents.com/2013/connect/sessionDetail.ww?SESSION_ID=3877|Stuart Marks "Jump-starting Lambda Programming"]]. *[[http://www.oracle.com/technetwork/articles/java/lambda-1984522.html|Oracle, Deepak Vohra "Trying Out Lambda Expressions in the Eclipse IDE"]]. *[[http://www.jugbremen.de/2013/09/aktueller-stand-java-8.html|JUG Bremen "Aktueller Stand Java 8"]], 2013-09-17. === Frege === == The Language and its Implementaton == *[[http://www.frege-lang.org/|Frege]]. *The free online Frede IDE [[http://try.frege-lang.org/|Frege REPL]]. *[[http://www.github.com/Frege/frege|GitHub "Frege"]] - "Frege is a Haskell for the JVM. It brings purely functional programing to the Java platform". *Wiki [[http://github.com/Frege/frege/wiki|GitHub Wiki "Frege"]]. == Resources == *[[http://news.ycombinator.com/item?id=10056038|ycombinator "Frege: A Haskell-Like Language for the JVM"]]. *[[http://en.wikipedia.org/wiki/Frege_%28programming_language%29|EN.Wikipedia "Frege (programming language)"]]. === Scala === == The Language & Runtime == *[[http://www.scala-lang.org/|Scala]] - "The Scala Programming Language". *[[http://en.wikipedia.org/wiki/Scala_%28programming_language%29|EN.Wikipedia "Scala (programming language)"]]. == Testing == *See [[testing.html|Testing]]. == E-Learning == *[[http://www.coursera.org/course/progfun|Coursera "Martin Odersky: Functional Programming Principles in Scala"]]. ===== Software Tools ===== [[mathengineering.html#Mathcad|Mathematical Engineering]] - PTC Mathcad ===== Literature ===== ==== Java 8 ==== *Book [[http://www.amazon.de/exec/obidos/ASIN/1937785467/hemmerling-21|Venkat Subramaniam "Functional Programming in Java: Harnessing the Power of Java 8 Lambda Expressions"]] #. *[[http://pragprog.com/book/vsjava8/functional-programming-in-java|The Pragmatic Bookshelf "Functional Programming in Java"]]. *[[http://pragprog.com/titles/vsjava8/source_code|The Pragmatic Bookshelf "Functional Programming in Java" - Source code]]. *Book [[http://www.amazon.de/exec/obidos/ASIN/1449370772/hemmerling-21|Richard Warburton "Java 8 Lambdas: Pragmatic Functional Programming"]]. ==== Scala ==== *Book [[http://www.amazon.de/exec/obidos/ASIN/0981531644/hemmerling-21|Martin Odersky, Lex Spoon, Bill Venners "Programming In Scala"]]. *Book [[http://www.amazon.de/exec/obidos/ASIN/3446423990/hemmerling-21|Oliver Braun "Scala: Objektfunktionale Programmierung"]]. ===== Resources ===== *[[http://www.heise.de/developer/artikel/F-funktionales-Pendant-zu-C-1140553.html|heise Developer, Golo Roden "F# - funktionales Pendant zu C#"]]. *[[http://research.microsoft.com/en-us/um/cambridge/projects/fsharp/|Microsoft Research "F# at Microsoft Research"]]. *[[http://en.wikipedia.org/wiki/Currying|EN.Wikipedia "Currying"]], [[http://de.wikipedia.org/wiki/Currying|DE.Wikipedia "Currying"]]. *[[https://en.wikipedia.org/wiki/Partial_application|EN.Wikipedia "Partial application"]]. *[[http://en.wikipedia.org/wiki/Anonymous_function|EN.Wikipedia "Anonymous function"]], [[http://de.wikipedia.org/wiki/Anonyme_Funktion|DE.Wikipedia "Anonyme Funktion"]]. ===== Forums, Newsgroups ===== *[[http://devnet.jetbrains.net/community/idea/scala|JetBrains "Developer Community / IntelliJ IDEA / Scala"]] Forum. {{tag>"functional programming"}}.