あなたが何を望んでいるのかわかりませんが、それは単なる構文エラーです。等価性をチェックしたいかもしれません (==
代わりに を使用します=
)。Bool
しかし、そうではない可能性があります。なぜなら、戻り値の型はではなくであるべきだからString
です。weekday
また、関数のすべての引数がその定義で使用されているわけではないため、この例は奇妙に見えます。
アップデート
あなたのコードは次のようになるはずです:
weekday :: Int -> Int -> Int -> String
weekday jahr monat tag =
let name = (mod ( tag + x + (div ( 31 * m ) 12 )) 7 )
in
case name of
0 -> "Sonntag"
1 -> "Montag"
2 -> "Dienstag"
3 -> "Mittwoch"
4 -> "Donnerstag"
5 -> "Freitag"
6 -> "Samstag"
where
y = jahr - ( div ( 14 - monat ) 12 )
x = y + ( div y 4 ) - ( div y 100 ) + ( div y 400 )
m = monat + (12 * ( div ( 14 - monat ) 12 )) - 2
それも機能します(結果は確認していませんが):http://ideone.com/YAKXTU
let
基本的な Haskell 構成要素およびの意味についてもう少し学ぶ必要がwhere
あります。「Learn You a Haskell for Great Good!」という優れた本があります。私がお勧めします。幸運を!