[解決済み] Haskellにおける除算
2022-02-27 10:53:28
質問
Haskellでリストの偶数個だけを半分にする関数を作っているのですが、問題が発生しました。コンパイラを実行すると、intの除算はできない、fractional intの型宣言が必要だと文句を言われます。型宣言をfloatに変更してみましたが、別のエラーが発生するだけでした。以下に関数のコードを記載しますが、どのような形であれ、助けを求めています。
halfEvens :: [Int] -> [Int]
halfEvens [] = []
halfEvens (x:xs) | odd x = halfEvens xs
| otherwise = x/2:halfEvens xs
お読みいただきありがとうございました。
どのように解決するのですか?
使用方法
div
整数の除算を行う。
halfEvens :: [Int] -> [Int]
halfEvens [] = []
halfEvens (x:xs) | odd x = halfEvens xs
| otherwise = x `div` 2 : halfEvens xs
は
(/)
関数は,型が Fractional クラスである引数を必要とし,標準的な除算を行う。 そのため
div
関数は Integral クラスの引数を必要とし、整数の除算を行います。
より正確には
div
と
mod
は負の無限大に向かって丸くなる。 その従兄弟たち。
quot
と
rem
と同じように動作します。
C言語での整数除算
で、ゼロに向けて丸める。
div
と
mod
は通常、モジュール演算を行う場合(例えば、日付から曜日を計算する場合)には正しいのに対して
quot
と
rem
の方が若干速い(と思う)。
GHCiでちょっと遊んでみる。
> :t div
div :: Integral a => a -> a -> a
> :t (/)
(/) :: Fractional a => a -> a -> a
> 3 / 5
0.6
> 3 `div` 5
0
> (-3) `div` 5
-1
> (-3) `quot` 5
0
> [x `mod` 3 | x <- [-10..10]]
[2,0,1,2,0,1,2,0,1,2,0,1,2,0,1,2,0,1,2,0,1]
> [x `rem` 3 | x <- [-10..10]]
[-1,0,-2,-1,0,-2,-1,0,-2,-1,0,1,2,0,1,2,0,1,2,0,1]
関連
-
[解決済み] Haskellでwhileループに相当する文は何ですか?
-
[解決済み] Haskellにおける除算
-
[解決済み] Haskell takeWhile + 1
-
[解決済み] 除算を強制的に浮動小数点にするにはどうしたらいいですか?除算は0に切り捨てられ続けますか?
-
[解決済み] Project Eulerとの速度比較。CとPythonとErlangとHaskellの比較
-
[解決済み】代数的なデータ型の代数を悪用する - なぜこれが有効なのか?
-
[解決済み】Haskellの宣言におけるエクスクラメーションマークの意味とは?
-
[解決済み】Haskell: リスト、配列、ベクトル、シーケンス
-
[解決済み】一般的なHaskellの演算子で発音可能な名前はありますか?[クローズド]
-
[解決済み】Haskellの入門編
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] 整数の割り算の動作はどうなっていますか?
-
[解決済み] Haskellでwhileループに相当する文は何ですか?
-
[解決済み] Haskellの[]と':'とは何ですか?
-
[解決済み] Haskellにおける除算
-
[解決済み] HaskellでIntからsqrtを取得する
-
[解決済み】Template Haskellの何がそんなに悪いのか?
-
[解決済み】Not a Functor/Functor/Applicative/Monadの良い例?
-
[解決済み】-XAllowAmbiguousTypesはいつが適切ですか?
-
[解決済み】なぜモナドが必要なのか?
-
[解決済み】Haskell の `data` と `newtype` の違いについて