Веб Зображення Новини Групи Блоги Перекладач Gmail Ще »
Групи, які ви переглядали нещодавно | Довідка | Увійти
Головна сторінка Груп Google
Допис з розмови Newbie question...
Група, до якої ви додаєте допис, - група Usenet. Відтак, будь-хто в Інтернеті бачитиме вашу електронну адресу.
Вашу відповідь не було надіслано.
Ваш допис надіслано
 
Від:
Кому:
Копія:
Продолжить:
Додати копію: | Додати продовження: | Редагувати тему
Тема:
Підтвердження:
З метою підтвердження введіть символи, наведені на зображенні нижче, або числа, які чуєте, натиснувши значок доступу. Прослухайте і введіть цифри, що чуєте
 
Mark T.B. Carroll  
Переглянути профіль   Перекласти вказаною мовою: Перекладено (переглянути оригінал)
 Більше налаштувань 13 Чер, 15:28
Групи новин: comp.lang.haskell
Від: "Mark T.B. Carroll" <Mark.Carr...@Aetion.com>
Дата: Sat, 13 Jun 2009 08:28:15 -0400
Місцевий час: Сб 13 Чер 2009 15:28
Тема: Re: Newbie question...
maxino <max.korob...@gmail.com> writes:

(snip)

> proper_divisors :: Int -> [Int]
> proper_divisors n = [d | d <- [1 .. (floor . sqrt) n], mod n d == 0]
(snip)
>     No instance for (RealFrac Int)
>       arising from a use of `floor' at pd.hs:2:37-41
(snip)
>     No instance for (Floating Int)
>       arising from a use of `sqrt' at pd.hs:2:45-48

the (floor . sqrt) can't accept an n :: Int, because they need n's type
to be instances of Floating and RealFrac, and Int isn't.

Prelude> :type sqrt
sqrt :: (Floating a) => a -> a

... note that the return type is the same as the argument type. From a
commonsense point of view, one can see part of the reason for the
complaint about Int as being that for things like sqrt (2::Int) you
couldn't return an Int answer (at least a correct one!).

Of course,

Prelude> :type mod
mod :: (Integral a) => a -> a -> a

mod expects an integral n, and you already declared n to be Int.

How about,

proper_divisors n = [d | d <- [1 .. (floor . sqrt . fromIntegral) n], mod n d == 0]

By the way, though I actually much prefer your convention, upper and
lower camel case seem to have established themselves as the Haskell way,
so normally one would name your function properDivisors.

Mark


Ви мусите увійти перед публікацією повідомлень.
Аби надіслати допис, будь ласка, спочатку приєднайтеся до цієї групи.
Будь ласка, поновіть своє прізвисько на сторінці налаштування передплати перед тим, як надіслати свій допис.
У вас немає права надсилання дописів до цієї групи.

Створити групу - Групи Google - Домашня сторінка Google - Правила користування послугою - Заява про конфіденційність і нерозголошення інформації
©2009 Google