When comparing Clojure vs F#, the Slant community recommends Clojure for most people. In the question“What is the best programming language to learn first?”Clojure is ranked 17th while F# is ranked 32nd. The most important reason people chose Clojure is:

Clojure programmers are highly encouraged to use immutable data in their code. Therefore, most data will be immutable by default.
State change is handled by functions (for transformations) and atoms (an abstraction that encapsulates the idea of some entity having an identity).

Pros

Pro

Immutability is the default

Clojure programmers are highly encouraged to use immutable data in their code. Therefore, most data will be immutable by default.State change is handled by functions (for transformations) and atoms (an abstraction that encapsulates the idea of some entity having an identity).

Pro

Minimal syntax

Being a LISP, programs are simple: they're just functions and data. That it doesn't get bogged down with syntax or the loftier FP concepts like monads makes it one of most approachable functional languages for beginners.

Pro

Good for writing concurrent programs

Since Clojure is designed for concurrency, it offers things like Software Transaction Memory, functional programming without side-effects and immutable data structures right out of the box. This means that the development team can focus their energies on developing features instead of concurrency details.

Pro

Huge ecosystem of libraries to work with

There's a very large ecosystem of high-quality Clojure libraries which developers can use. One example is Incanter. It's a great data analytics library and a very powerful tool for dealing with matrices, datasets and csv files.

Pro

Tries to solve problems as simply as possible

Simplicity is one of the pillars on which Clojure is built. Clojure tries to solve many problems in software development as simply as possible. Instead of building complex interfaces, objects or factories, it uses immutability and simple data structures.

Pro

Dynamic language

A superb data processing language. While rich type and specification systems are available they are optional.

Pro

Cross platform

Clojure compiles to JVM bytecode and runs inside the JVM. This means that applications written in Clojure are cross-platform out of the box.

Pro

Rich Hickey

The creator is so awesome, he's a feature. Just look up his talks and see why.

Pro

Extensible

Clojure has an elegant macro system which enables language additions, Domain-specific languages (DSLs), to be created much easier than most other languages (with the exception of Racket, perhaps).

Pro

Great tool used in automating, configuring and managing dependencies available

Leiningen is a very useful tool for Clojure developers. It helps wiht automation, configuration and dependency management. It's basically a must for every Clojure project.

Pro

Game is available with which you can learn Clojure

Nightmod is a tool used to make "live-moddable" games. It displays the game's code while you are playing and allows you to inject new code using Clojure. This can be a fun and useful experience for people trying to learn Clojure.

Pro

No C/Java syntax

Refreshing, BTW!

Pro

Concise syntax

F#'s syntax tends to be terse while remaining very readable and easy to understand without being a chore to write.

Pro

Easier transition from other paradigms

Since F# is not a purely functional language, it lends itself to being more easily picked up by programmers that have experience with other paradigms.

Pro

.NET Interoperability

Since F# runs on the Common Language Runtime or CLR, it has access to the entire .NET Framework, as well as libraries written in other .NET languages such as C#, VB.NET, and C++/CLI.

Pro

Multiplatform, it runs on .Net Core

Forget Xamarin and Mono. F# now runs on the multiplatform .Net Core!

Pro

Natively supported by Visual Studio

This is a .Net language natively supported by Visual Studio. Though it is not as tooled up as C# the support is still substantial. In particular, C# deployment scenarios can be enabled for it with small C# wrapper projects. Integration with Visual Studio provides: IntelliSense, debugging, projects an other features.

Pro

You can run F# in the browser

Thanks to a project like Fable, you can write and run your client app in F# and run it over JavaScript. It allows you to share code between your server and client.

Pro

Fall into the pit of success

F# directs you into a workflow where the right way is the path of least resistance.

Coming from a C# background, its restrictions might feel arbitrary at first (e.g., what do you mean my code has to be in dependency order!? Arbitrary alphabetical or bust!), but you'll soon realize that your code is cohesive, concise and consistent in a way that it never was before - and you can compile and run with confidence!

Pro

F# is supported by Xamarin

Thanks to Xamarin, F# is a functional language that you can use to build for iOS, Android and Windows.

Ad

Cons

Con

Confusing error messages

Clojure's error messages more often than not are very confusing. They usually involve stack traces that do not thoroughly explain where the error was caused or what caused it.

Con

Tied to the JVM and it's limitations.

Some language constructs were obviously created as workarounds for JVM limitations. This makes the language much less elegant than it could have been.Also, the JVM has a very cumbersome FFI.

Con

Syntax can be alien / jarring for those used to other Lisps

Perhaps some may consider this attribute an advantage, but I do not. Clojure does not attempt to maintain significant compatibility with other Lisps. So, if you already know a Lisp or are used to the way Lisp works in general, you'll probably be confused if you take a look at Clojure. See these resources for more details on this subject:

Con

Has no ad-hoc polymorphism (á la Type Classes)

You have generics, you have interfaces, you have inheritance, you have a lot of things at your disposal but you don't have Type Clases. They can be emulated using some clever constructs but there's nothing like having the real thing.

Alternative Products

Each month, over 2.8 million people use Slant to find the best products and share their knowledge. Pick the tags you’re passionate about to get a personalized feed and begin contributing your knowledge.