Muitas das outras respostas se concentraram no lado do desempenho (paralelismo) da programação funcional, que acredito ser muito importante. No entanto, você perguntou especificamente sobre produtividade, como em: é possível programar a mesma coisa mais rapidamente em um paradigma funcional do que em um paradigma imperativo.
Na verdade, acho (por experiência pessoal) que a programação em F # corresponde à maneira como penso melhor e, portanto, é mais fácil. Eu acho que é a maior diferença. Eu programei em F # e C #, e há muito menos "lutando contra a linguagem" em F #, que eu amo. Você não precisa pensar nos detalhes em F #. Aqui estão alguns exemplos do que eu realmente gostei.
Por exemplo, mesmo que o F # seja digitado estaticamente (todos os tipos são resolvidos em tempo de compilação), a inferência de tipo descobre quais tipos você possui, para que você não precise dizer isso. E se não conseguir descobrir, ele automaticamente torna sua função / classe / qualquer que seja genérico. Portanto, você nunca precisa escrever nenhum genérico, tudo é automático. Acho que isso significa que estou gastando mais tempo pensando no problema e menos em como implementá-lo. De fato, sempre que volto ao C #, sinto muita falta dessa inferência de tipo, você nunca percebe o quão perturbador é até que não precise mais fazer isso.
Também em F #, em vez de escrever loops, você chama funções. É uma mudança sutil, mas significativa, porque você não precisa mais pensar na construção do loop. Por exemplo, aqui está um código que corresponderia a algo (não me lembro o quê, é de um quebra-cabeça de Euler do projeto):
let matchingFactors =
factors
|> Seq.filter (fun x -> largestPalindrome % x = 0)
|> Seq.map (fun x -> (x, largestPalindrome / x))
Sei que fazer um filtro e depois um mapa (que é uma conversão de cada elemento) em C # seria bastante simples, mas é preciso pensar em um nível inferior. Particularmente, você teria que escrever o loop em si e ter sua própria declaração if explícita e esse tipo de coisa. Desde que aprendi F #, percebi que achei mais fácil codificar da maneira funcional. Onde, se você deseja filtrar, escreve "filter" e, se deseja mapear, escreve "map", em vez de implementar cada um dos detalhes.
Também adoro o operador |>, que acho que separa o F # do ocaml e possivelmente outras linguagens funcionais. É o operador de pipe, permite "canalizar" a saída de uma expressão na entrada de outra expressão. Faz o código seguir como penso mais. Como no snippet de código acima, está dizendo: "pegue a sequência de fatores, filtre-a e mapeie-a". É um nível de pensamento muito alto, que você não consegue em uma linguagem de programação imperativa porque está muito ocupado escrevendo o loop e as declarações if. É a única coisa que mais sinto falta sempre que vou para outro idioma.
Portanto, em geral, mesmo que eu possa programar em C # e F #, acho mais fácil usar o F # porque você pode pensar em um nível superior. Eu diria que, como os detalhes menores são removidos da programação funcional (pelo menos em F #), sou mais produtivo.
Edit : Eu vi em um dos comentários que você pediu um exemplo de "estado" em uma linguagem de programação funcional. F # pode ser escrito imperativamente, então aqui está um exemplo direto de como você pode ter um estado mutável em F #:
let mutable x = 5
for i in 1..10 do
x <- x + i