programming language that you can start from scratch thanks to the free book "yet another haskell tutorial". http://www.cs.utah.edu/~hal/docs/daume02yaht.pdf
let's implement the famous quicksort algorithm (with haskell): qs  =  qs (first:rest) = qs smaller ++ [first] ++ qs larger where smaller = [ a | a<-rest, a<=first] larger = [ b | b<-rest, b >first] succinctly. (see: quicksort/#25948418)
is a language that doesn't care about you (even if we want to calculate factorial): prelude> (x -> foldr (*) 1 [x, x-1 .. 1]) 4 24 prelude> (x -> foldr (*) 1 [x, x-1 .. 1]) 5 120 preludes> (x -> foldr (*) 1 [x, x-1 .. 1]) 42 1405006117752879898543142606244511569936384000000000 preludes> (x -> foldr (*) 1 [x, x-1 .. 1]) 69 17112245242814131137246833888127283909227054489352036939364804092325727975414064742400000000000 mis.
(see: [https://www.quora.com/…-haskell/review/edward-kmett https://www.quora.com/…-haskell/review/edward-kmett])
for a resource that teaches while entertaining, see http://learnyouahaskell.com/