[解決済み] Haskell - Ord aの型は何を意味するのでしょうか?
2022-02-05 13:53:12
質問
Haskellで再帰的なマージソート関数を作っています。私は評価の一部として、私は次のように型を定義しなければならないと言われました。
isort :: Ord a => [a] -> [a]
この関数は、入力として配列を期待し、配列を出力すると仮定しました。私が知っているのは
ord
はクラスです。
上の文脈では
Ord a
の意味は?
これは私の機能です。
isort :: Ord a => [a] -> [a]
isort [x] = [x]
isort (x:xs) = insert x (isort xs)
where
insert :: Int -> [Int] -> [Int]
insert a [] = []
insert a (b:c) | a < b = a:b:c
| otherwise = b : insert a c
関数ファイルをghciに読み込ませようとすると、エラーが発生します。
Couldn't match type ‘a’ with ‘Int’
‘a’ is a rigid type variable bound by
the type signature for isort :: Ord a => [a] -> [a]
at LabSheet2.hs:17:10
Expected type: [a]
Actual type: [Int]
...
解決方法は?
その
Ord a
は型クラス制約で、関数が任意の型に対して動作することを示します。
a
である限り
a
は比較可能である (
Ord
を消去することができます)。エラーメッセージが表示されるのは、外側の宣言が
Ord a => a
と、内側の
insert
に対してのみ機能すること。
Int
's.
関連
-
[解決済み】Haskellでの挿入ソート
-
[解決済み] C#のStringとstringの違いは何ですか?
-
[解決済み] オブジェクトの種類を決定しますか?
-
[解決済み] Pythonで型をチェックする標準的な方法は何ですか?
-
[解決済み] Pythonの旧スタイルのクラスと新スタイルのクラスの違いは何ですか?
-
[解決済み] モナドはエンドファンクタのカテゴリではただのモノイドですが、何か問題でも?
-
[解決済み】type()とisinstance()の違いは何ですか?)
-
[解決済み】Haskellの宣言におけるエクスクラメーションマークの意味とは?
-
[解決済み】Haskell/GHCの`forall`キーワードは何をするのですか?
-
[解決済み] 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 - Ord aの型は何を意味するのでしょうか?
-
[解決済み] Hindley-Milnerのどの部分が理解できないのでしょうか?
-
[解決済み] フリーモナドとは何ですか?
-
[解決済み] ghciで関数を複数行に渡って定義するには?
-
[解決済み] GHCはなぜこんなに大きいのか/大きいのか?
-
[解決済み] なぜ依存型でないのか?
-
[解決済み] Haskellでメモ化?
-
[解決済み] リーダーモナドの目的は何ですか?
-
[解決済み] TLSサーバーを実装するためのHsOpenSSL APIの適切な使用法
-
[解決済み] Haskellの関数合成(.)と関数応用($)イディオム:正しい使い方