2017-12-23 12 views
0

私はHaskellで簡単な関数を書いていますが、数字が小文字であるかどうかチェックしたいと思います。私はどのようにどのようにしてsqrt型のfloorをIntegral型にすることができますか

roundSqrt :: Integral -> Integral 
roundSqrt x = floor (sqrt (fromIntegral x)) 


isPrime :: Integral t => t -> Bool 
isPrime n = [i | i <- [2..k], n `mod` i == 0] == [] 
      where k = roundSqrt(n) 
+0

だから、そのコードに何が問題なのですか?わたしにはできる。 roundSqrt ::インテグラ: - 「roundSqrt」の型シグネチャで 'タイプ期待 「インテグラル」が、「インテグラル」は種類「> GHC.Prim.Constraint *」に1つの以上の引数を期待: – arrowd

+0

私はエラーを取得します - > Integral' – woljako

+0

ああ、Integral t => t - > t'でなければなりません。また、すべての型名を削除することもできます。 – arrowd

答えて

0

Integralは型クラスで正しいroundSqrtに書くために、任意のアイデアを持っていないので、タイプとして使用すべきではありません。 isPrime型アノテーションで正しく使用さえしました。だから、それを動作させるには、あなたが書く必要があります

roundSqrt :: Integral t => t -> t 
関連する問題