[Haskell-cafe] How to decide if a number is an integer?

Magicloud Magiclouds magicloud.magiclouds at gmail.com
Tue Sep 29 03:07:14 EDT 2009


Of course them are not. But that is why I need the detector....

2009/9/29 Thomas DuBuisson <thomas.dubuisson at gmail.com>:
> Unless I missed something, the function in question is:
>
> sqrt (a * a + 2 + 2 * num) - fromIntegral a
> where num = 10
>
> 1 -> sqrt (1 * 1 + 2 + 2 * 10) - 1 -> sqrt (1 + 2 + 20) - 1 -> sqrt
> (23) - 1 -> 3.79xxxxx
>
> the fractional will only ever come from the sqrt function.  Do any of
> the following actually look like square values to you?
>
> 26
> 31
> 38
> 47
> 58
> 71
> 86
> 103
> 122
>
> IMO, the code works and your expectations are a bit off.
>
> Thomas
>
> On Mon, Sep 28, 2009 at 11:54 PM, Magicloud Magiclouds
> <magicloud.magiclouds at gmail.com> wrote:
>> The original code is
>> givenSum num = map (\a ->
>>                      let l = (sqrt $ fromIntegral (a * a + 2 + 2 *
>> num)) - (fromIntegral a) in
>>                      case properFraction l of
>>                        (_, 0) ->
>>                          True
>>                        _ ->
>>                          False
>>                   ) $ take num [1..]
>> :t l is (Floating a) => a
>> Well, in ghci
>> *Main> givenSum 10
>> [False,False,False,False,False,False,False,False,False,False]
>>
>> On Tue, Sep 29, 2009 at 2:45 PM, Thomas DuBuisson
>> <thomas.dubuisson at gmail.com> wrote:
>>> On Mon, Sep 28, 2009 at 11:35 PM, Magicloud Magiclouds
>>> <magicloud.magiclouds at gmail.com> wrote:
>>>> It never matches to (_, 0.0)....
>>>> I mean
>>>> case properFraction l of
>>>>  (_, 0) -> l
>>>>  _ -> 0 -- always goes here.
>>>
>>> Odd, it works fine for me.
>>>
>>> f x =
>>>        case properFraction x of
>>>                (_,0) -> True
>>>                _     -> False
>>>
>>>
>>> *Main> f 5
>>> True
>>> *Main> f 5.5
>>> False
>>> *Main> f 4.0
>>> True
>>> *Main> f 4.00000001
>>> False
>>>
>>>
>>> Thomas
>>>
>>
>>
>>
>> --
>> 竹密岂妨流水过
>> 山高哪阻野云飞
>>
>



-- 
竹密岂妨流水过
山高哪阻野云飞


More information about the Haskell-Cafe mailing list