Is there a medium-size Clojure sample application available?
I recommend cow-blog by Brian Carper. According to the author it was written with your purpose in mind.
I recommend cow-blog by Brian Carper. According to the author it was written with your purpose in mind.
I’m going to disagree with other answers: The fixed-point (Y) combinator does have practical applications, but it takes a very imaginative mind to find them. Like Bruce McAdam. Here’s the abstract from his paper That About Wraps it Up: The Y combinator for computing fixed points can be expressed in Standard ML. It is frequently …
4clojure was launched recently. It takes a lot of inspiration from Functional Koans, and several of the puzzles from 99 Lisp Problems; but it improves on both by providing a learning experience for which you need only your browser. Problems vary in difficulty from language tutorials like What is the second element of this list? …
As far as I know (I’m no expert), SOLID principles do not tell anything about state. They should be applicable as well in a functional programming languages. They’re more advice about how to achieve modularity. Some of them are rather obvious or at least well-known. Single-responsibility is the UNIX principle “do one thing and do …
Clojure is not statically typed, so doesn’t need the strict this/that/whatever type declarations that are necessary in haskell (and, I gather, Scala). If you want to return a string, you return a string; if you return nil instead, that’s okay too. “Functional” does not correspond exactly to “strict compile-time typing”. They are orthogonal concepts, and …
The data in Elixir is still immutable, but there are couple of shorthands, that let you type less or don’t worry about finding new names. In Erlang, you could often see code like this: SortedList = sort(List), FilteredList = filter(SortedList), List3 = do_something_with(FilteredList), List4 = another_thing_with(List3) In Elixir, you could just write: list = sort(list) …
You might check out how Martin Erwig’s Haskell functional graph library does things. For instance, its shortest-path functions are all pure, and you can see the source code for how it’s implemented. Another option, like fmark mentioned, is to use an abstraction which allows you to implement pure functions in terms of state. He mentions …
I am going to answer for a medium-sized project in the conditions that I am familiar with, that is between 100K and 1M lines of source code and up to 10 developers. This is what we are using now, for a project started two months ago in August 2013. Build system and code organization: one …
TL;DR A functional implementation can be faster than your original procedural implementation, in certain cases. Why is the functional style so much slower than the imperative style? Is there some problem with the functional implementation which is causing such a huge slowdown? As Matthieu M. already pointed out, the important thing to note is that …
Purity is only violated if you observe the exception, and make a decision based on it that changes the control flow. Actually throwing an exception value is referentially transparent — it is semantically equivalent to non-termination or other so-called bottom values. If a (pure) function is not total, then it evaluates to a bottom value. …