與下面這些函數的輸出轉換爲int如何將日期轉換爲int在Haskell
date :: IO (Integer,Int,Int)
date = getCurrentTime >>= return . toGregorian . utctDay
date' :: IO Integer
date' = getCurrentTime >>= return . toModifiedJulianDay . utctDay
基本上我想利用無論從輸出(只要可能,就不會發生),並將其變成一個整數。例如今天是20/4/11所以date
會給(2011,4,20)
和date'
會給55671
。
在一個理想的世界,我想了幾個功能,以拉平這些IO功能,給一個Int - (2011,4,20)
到2011420
和55671
(目前的類型IO整數),以55671
爲int
如果有,請告訴我是完成這個更好的方法!
編輯:很抱歉,如果它不是清楚的,我的意思是你怎麼日期(2011,4,20) :: IO (Integer,Int,Int)
的輸出轉換爲20110420 :: Int
如果你試圖從一個不純的函數中獲得一個純粹的值(也就是說你想用'date''來定義'date''來返回一個普通的'Integer'),那麼你最好放棄任何'重新做,並閱讀關於該主題的教程......即使是更糟糕的人通常都能夠清楚地陳述「分離IO和純代碼」的事情。 – delnan 2011-04-20 19:26:12
你的問題是如何將'(2011,4,20)'轉換爲'20110420',或者如何將一個'IO Integer'轉換爲普通的'Integer'? – sth 2011-04-20 19:27:34