1

私はHaskellで、日時であるByteStringを取得し、元のエンコーディングのタイムゾーンを考慮してUTC時間に変換する関数を作成しようとしています。私はHaskellを初めて使用するので、本当に基本的な間違いを犯している可能性があります。

convertStringToUtc s =
  do
    estTimeZone <- hoursToTimeZone -5
    time <- read $ B.unpack(s)
    localTimeToUTC estTimeZone time

私が得るエラーは次のとおりです。

Couldn't match expected type `Int -> b'
       against inferred type `UTCTime'
In the expression: localTimeToUTC estTimeZone time
In the expression:
    do { estTimeZone <- hoursToTimeZone - 5;
         time <- read $ B.unpack (s);
         localTimeToUTC estTimeZone time }
4

1 に答える 1

5

まず、-5を括弧で囲む必要があります。そうでない場合は、関数から5を減算しようとして解析されhoursToTimeZone、型エラーを説明します。

また、ここでのすべての関数は純粋であるため、モナディックである必要はありませんdo{...}letステップに明示的に名前を付ける場合は、式を使用するだけです。

convertStringToUtc s = 
    let estTimeZone = hoursToTimeZone (-5)
        time = read $ B.unpack s
    in  localTimeToUTC estTimeZone time
于 2010-05-02T01:05:07.927 に答える