Haskell is a purely functional, lazy, statically-typed programming language with type inference.
Functional means that functions are first-class data types.
Purely Functional means (roughly) that there are no side effects. Every function will always return the same value for a given argument will do nothing else.
Lazy (a.k.a "non-strict") means that the compiler will put off evaluating a thing until absolutely neccessary. This lets you safely do weird stuff like operating on an infinite list--the language will only create it up to the last value you actually use.
Type inference means that the compiler will often figure out the type of an identifier by itself so you don't have to specify it. Scala and later versions of C# both do this.
Haskell syntax is beautiful and minimal. For example, here is an implemention of quicksort in 6 lines:
quicksort :: (Ord a) => [a] -> [a] quicksort  =  quicksort (x:xs) = let smallerSorted = quicksort [a | a <- xs, a <= x] biggerSorted = quicksort [a | a <- xs, a > x] in smallerSorted ++ [x] ++ biggerSorted
In addition, Haskell is standardized and has multiple high-quality implementations, some of which produce standalone native binaries. There is also a collection of free third-party libraries available and a package manager ("cabal") to automatically fetch them for you.
If you've downloaded the command-line client and have Haskell installed on your machine, then go ahead and fetch the first problem.
exercism fetch haskell
In order to be able to submit your solution, you'll need to configure the client with your Exercism API key.
exercism configure --key=YOUR_EXERCISM_KEY
When you've written a solution, submit it to the site. You'll have to configure the command-line client with your exercism API key before you can submit.
exercism submit PATH_TO_FILE