5

型アノテーション付きの関数を作成したいTime t => t -> BoolData.Timeのドキュメントを見ると、、、、などUTCTime、時間どおりに機能するいくつかの異なるタイプがありますがLocalTimeZonedTimeそれらを統合するタイプクラスは見つかりません。そのようなものはありますか、それとも時間を同じように扱う必要がありNumますか?(つまり、連続体)

4

5 に答える 5

8

vector-space パッケージには、アフィン空間 typeclassがあります。

Diff pここで、 は期間タイプ ( のインスタンスである必要がありますVectorSpace) であり、pは時点タイプです。Ord比較のために追加のインスタンスが必要になります。

これにより、時点間の線形補間が無料で提供されます。

于 2012-07-20T12:27:56.807 に答える
3

標準時ライブラリにはそのような型クラスはありませんが、自分で実装することは可能です。

UTCTimeただし、通常は、すべての時間ベースの計算に使用される方法でプログラム ロジックを構築する必要があります(これは Haskell 固有ではありません)。LocalTimeUTCとZonedTime、ユーザーに表示されるプレゼンテーション、または外部ソースからのデータとの間で相互に変換するためにのみ使用する必要があります。これがおそらく、ローカルおよびゾーン時間タイプの時間差と時間追加を計算するための既製の関数がない理由です。

于 2012-07-20T12:32:48.837 に答える
2

時間がちょっとおかしい。

時間は、特定の瞬間(例: 09:27 AM, 14 Feb 1821 AD) または期間(例: 6 分) を参照できます。

期間を加算および減算することは理にかなっています。時間内の 2 つの瞬間の合計を求めることは、実際には意味がありません。これは何を表しているでしょう?インスタントに期間を追加すると、別のインスタントが得られます。それは理にかなっている。そして、あるインスタンスを別のインスタンスから差し引くと、それらの間の期間が得られるはずです。

要約すると、時相演算は想像するほど単純ではありません。

さて、timeパッケージは何を提供しますか? 何も思いつきません。あなたが言及したすべての時間は、持続時間ではなく、瞬間のように聞こえます...

于 2012-07-20T12:18:33.517 に答える
1

time-lensパッケージのHasTimeクラスを見てください。

TimeOfDayこれらすべての構造のコンポーネントへの(読み取りと書き込みの両方の)アクセスを提供します。したがって、の関数を実装すると、、、およびTimeOfDayに簡単に一般化できます。LocalTimeZonedTimeUTCTime

于 2012-07-20T16:22:13.410 に答える
0

ドキュメント ( http://www.haskell.org/ghc/docs/7.0.2/html/libraries/time-1.2.0.3/Data-Time-Format.html ) によると、UTCTime、ZonedTime、および LocalTime はすべて型クラス FormatTime および ParseTime のインスタンス。それらはあなたが探しているものでなければなりません。

于 2012-07-20T10:59:49.180 に答える