*Should* isInteger be returning True for any numbers generated by this
code?  If so, can you simplify this test down to that example, so that
it's obvious what the test should do, and that it's not doing it (if it in
fact is not doing as it should)? In any case, it would help to divide this
block of code into more manageable pieces.

isInteger should have the type Fractional a => a -> Boolean.

> The properFaction part is correct. So I posted the whole code, since
> "isInteger" should accept any reasonable incoming types. Well, in this
> one situation, it does not. And I cannot figure out why....
>
> On Tue, Sep 29, 2009 at 3:07 PM, Jimmy Hartzell <j...@shareyourgifts.net>
> wrote:
>> Did you test the properFraction-based code in isolation? If code is
>> broken, it's important to figure out which part of it is broken. Also,
>> this function is not divided into constituent parts, but is a long
>> unruly
>> mess. Dividing it into parts would make it much much more readable, and
>> you would then be able to test the parts individually.
>>
>> Jimmy
>>
>>> 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.dubuis...@gmail.com> wrote:
>>>> On Mon, Sep 28, 2009 at 11:35 PM, Magicloud Magiclouds
>>>> <magicloud.magiclo...@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
>>>>
>>>
>>>
>>>
>>> --
>>> 竹密岂妨流水过
>>> 山高哪阻野云飞
>>>
>>
>>
>>
>
>
>
> --
> 竹密岂妨流水过
> 山高哪阻野云飞
>


_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to