私はSevenLanguages in Seven Weeksの本を読み、Haskellと協力しています。
私は問題に苦しんでいます:
リストと、その2つの引数を比較して、ソートされたリストを返す関数を受け取るソートを記述します。
オンラインでヘルプを検索して解決策を見つけましたが、実際の型エラーが予想されるため、解決策を実行することすらできません。
これが私が試したコードです:
module Main where
import Data.List
sortList :: (Ord a) => (a -> a -> Ordering) -> [a] -> [a]
sortList comparator list = sortBy comparator list
エラーは次のとおりです。
*Main> sortList [5,4,2,7,8,1]
<interactive>:1:10:
Couldn't match expected type `a -> a -> Ordering'
with actual type `[t]'
In the first argument of `sortList', namely `[5, 4, 2, 7, ....]'
In the expression: sortList [5, 4, 2, 7, ....]
In an equation for `it': it = sortList [5, 4, 2, ....]
私の考えと試み:
たぶん私は関数を間違って呼び出していますか?私はHaskellにかなり慣れていません。IIも多くの検索を試みました。私が結論付けることができるのは、どこかでタイプが一致していないということだけです。スクリプトの説明とガイダンスは私にとって非常に役立つと思います。
関数のシグネチャは次のように述べています。
「sortListは次の関数を取ります:」
- タイプ「a」の2つの要素を取り、「順序付け」を返す関数(a-> a-> Ordering)[これはコンパレータです]
- 渡すアイテムのリスト 'a'([a])
- アイテムのリストを返します 'a'([a])
次のように呼んでみてください。
sortList compare [3,2,1]
詳細については、https://hackage.haskell.org/package/base-4.8.2.0/docs/Data-Ord.htmlをご覧ください。
そしてここ:http://zvon.org/other/haskell/Outputprelude/compare_f.html
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加