The tutorial does a great job of explaining why this is interesting: http://hackage.haskell.org/package/turtle-1.0.0/docs/Turtle-...
For example, the pwd function returns a FilePath type rather than a String:
Prelude Turtle> :type pwd
pwd :: IO Turtle.FilePath
The datefile function is also typed: Prelude Turtle> :type datefile
datefile :: Turtle.FilePath -> IO UTCTime
So this really does seem to structure the data passed between commands, instead of the "stringly typing" unix shells have historically been known for.