2011-04-01 13 views
-2

私の講師が私にこの質問からしたいことを理解することができません。誰かが私に何をしたいのかを説明するのを助けることができますか?高次機能

挿入ソートアルゴリズムの上位バージョンを定義します。それは 機能

insertBy :: Ord b => (a->b) -> a -> [a] -> [a] 

inssortBy :: Ord b => (a->b) -> [a] -> [a] 

を定義し、それは私が混乱しましたところ、このビットは次のとおりです。 inssortのF lは要素xがelementyif F X < F yを前に来るようにリストlをソートするようになっています。

答えて

1

数字をソートしていた場合は、x < yの意味が明確になります。しかし、あなたが手紙を並べ替えるならどうしますか?または顧客ですか?または何も明確な(コンピュータに)注文なしで?

したがって、ソート手順の順序を定義する関数f()を作成することになっています。 f()は、文字や顧客などを取り、コンピュータが実際に並べ替えることができる整数を返します。

少なくとも、問題がどのように記述されているかです。私は個人的にxとyという2つの項目を受け入れ、x < yの場合はブール値を返す述語を設計しました。しかし、どちらが良いですか。

+1

実際、この説明では整数については何も言及していません。ハスケル '(>)'は、型付けされた型(型指定子 'Ord'で表現されます)に使用できます。したがって、最初のパラメータは 'a'sを順序付けられた' b'sに変換する単なる関数です。 – chris

0

このコードでは、挿入ソートアルゴリズムを書き換えて、関数をパラメータとして使用して高次関数を使用する必要があります。

このコードは、ある種の大学で現在行われている作品から生まれたと思われますが、このページは「挿入並べ替えアルゴリズム」を検索している間に見つかりました。また、文書の中には用語も含まれています。

インターネットからのコードを探すことは危険なビジネスです。あなたがStackに置いたいくつかのクエリとは対照的に、挿入ソートアルゴリズムwikipediaエントリ、または講義スライドに提供されているHaskellコード(あなたは '挿入ソートアルゴリズム'と高次関数を探しています)をお勧めしますオーバーフロー?