Haskell:
日付を比較する
How to: (やり方)
Haskellで日付を比較する例を見てみましょう。以下は、Data.Time
モジュールを使った簡単なコードです。
import Data.Time
main :: IO ()
main = do
let date1 = fromGregorian 2023 3 15 -- 2023年3月15日
let date2 = fromGregorian 2023 4 1 -- 2023年4月1日
print (date1 == date2) -- False、日付が同じかどうか
print (date1 < date2) -- True、date1がdate2より前かどうか
print (date1 > date2) -- False、date1がdate2より後かどうか
出力は以下の通りです:
False
True
False
Deep Dive (詳細情報)
Haskellでは日付の比較が簡単です。Data.Time
モジュールがあり、標準で日付操作をサポートしています。Haskellがこれを可能にしているのは、UTCTime
や LocalTime
のデータ型が Ord
クラスのインスタンスであるため、比較演算子が使えるからです。
歴史的に見ると、Haskellは標準的な日付操作を長らく提供してきましたが、初期のライブラリは現在ほど洗練されていませんでした。今日、Data.Time
は広く使用され、強力な機能を提供しています。
比較の代替方法として、カスタムの比較関数を書くことも可能です。しかし、ほとんどの場合、Data.Time
の機能で十分です。
実装の詳細としては、Data.Time
はタイムゾーンをサポートし、日付と時刻の計算も可能です。「ZonedTime」や「TimeZone」のような型を使います。
See Also (関連情報)
- Haskell
Data.Time
ドキュメント: https://hackage.haskell.org/package/time-1.9.3/docs/Data-Time.html - Haskell
utctDay
関数の紹介: https://hackage.haskell.org/package/time-1.9.3/docs/Data-Time-Clock.html#g:2 - Haskell Wikiの日付と時刻: https://wiki.haskell.org/Working_with_time
それぞれのリンク先で、より詳細な情報を得ることができます。日付の比較は頻繁に行われるので、Data.Time
モジュールの機能をよく理解しておくと便利です。