Если я правильно понял часть вашего вопроса, вам, в основном, нужна функция, скажем f
, такая, что f (123,456,789) = 123456789
, где все эти числа являются числами. Так что f :: (Integer, Int, Int) -> Integer
.
module Temp where
import Data.Time
import Data.Time.Calendar.WeekDate
date :: UTCTime -> (Integer, Int, Int)
date = toWeekDate . utctDay
f :: (Integer, Int, Int) -> Integer
f (a,b,c) = read $ show a ++ show b ++ show c
main = do
utcTime <- getCurrentTime
putStr "original format: " >> print (date utcTime)
putStr "flattened format: " >> print (f . date $ utcTime)
В ghci:
*Temp> main
original format: (2011,16,3)
flattened format: 2011163
edit: Пожалуйста, никогда не забывайте, что, по сути, нет функции (без чита) IO a -> a
. То, что вы хотите, невозможно, если вы не нарушите принципы чистоты. Пожалуйста, рассмотрите возможность использования функции fmap f :: IO (Integer, Int, Int) -> IO Integer
.