В качестве альтернативы, вы можете использовать это как трамплин, чтобы начать использовать парсер:
λ import Text.Parsec
λ runParser (many (noneOf "-") `sepBy` char '-')() "example from question" "2016-01-43"
Right ["2016","01","43"]
λ import Data.List
λ intercalate "-" . take 2 <$> it
Right "2016-01"
Хорошей вещь о том, чтобы переключатель в настоящее время является то, что, как вы узнаете больше о вашем входе (и что он может и не может выглядеть), довольно легко обновить парсер, чтобы он соответствовал, где использование пользовательской функции может стать реальным hinky real fast.
Что должно произойти в вашем примере, если есть менее двух вхождений '-'? – Alec