RWH の第 3 章の質問 5 の要求に基づいて、パディンドロームの存在をテストする関数を作成します。
書いたけど動かない
pCheck :: (Eq a) => [a] -> Bool;
pCheck a = take n a == ( take n $ reverse a )
where n = floor ( length a / 2 )
実行しようとすると、次のエラーが表示されます。
No instance for (RealFrac Int)
arising from a use of `floor' at len.hs:13:11-32
Possible fix: add an instance declaration for (RealFrac Int)
In the expression: floor (length a / 2)
In the definition of `n': n = floor (length a / 2)
In the definition of `pCheck':
pCheck a = take n a == (take n $ reverse a)
where
n = floor (length a / 2)
私は何が間違っているのですか?パディンドロームは でテストできることはわかっていますがa == reverse a
、今は自分のやり方でエラーを見つけたいと思っています。
更新: コードのエラーの 1 つが正義の提案によって修正されました。残りの問題を反映するように質問が更新されました。