関数と2つの入力を受け取り、関数を最大化する引数を返す関数を記述しようとしています。この私が使用する設定です。たとえば関数による最大化
max :: Eq a => (a -> Int) -> a -> a -> a
次のように、機能は動作するはずです:
maximize (+3) 5 10 = 10
(3 + 5)<(3 + 10)ため
私は私はこのような何かをする必要があると考えています:
maximize :: Eq a => (a -> Int) -> a -> a -> a
maximize f x y = max (f x) (f y)
このアプローチはうまくいかないようです。何か助けてくれてありがとう!
'maximize f x y = maximumBy(xを比較する)[x、y]' – user2407038
'Eq a'制約はあなたにとって役に立たないことに注意してください。引数が等しいかどうかを確認する必要はなく、比較する必要があるのは結果だけなので、その制約を省略することもできます。しかし、あなたは関数の_result_でそれを多相にすることができます。そして、あなたはそのような制約を必要としますが、 'Eq'では十分ではありません。' Ord b =>(a - > b) a-> a-> a'となる。 – leftaroundabout
ここで私たちはこの質問にお答えしますか?あなたはあなたの答えを受け取りましたか? –