[Haskell-cafe] Newbie and working with IO Int and Int

Víctor A. Rodríguez victor at bit-man.com.ar
Tue Oct 17 13:37:18 EDT 2006


> What's wrong with doing it this way?
>
> -- ** UNTESTED CODE **
>
> verifyAdd :: Int -> Int -> Int -> Bool
> verifyAdd a b sum | a + b == sum = True
> otherwise = False
>
> testAddMundane :: Int -> Int -> Bool
> testAddMundane a b = verifyAdd a b (a + b)
>
> -- all the IO-dependent stuff is below this line --
>
> testAddRandom :: IO Bool
> testAddRandom = do a <- randomIO
> b <- randomIO
> return verifyAdd a b (a + b)
>
I discovered something worst yet :-P
Using the next code and calling verifyAdd or testAddMundane it says :

Program error: verifyAdd: ERROR

Instead calling testAddRandom only says :

:: IO Bool
(55 reductions, 92 cells)

---- CODE STARTS HERE, AND IS TESTED -----

import Random

verifyAdd :: Int -> Int -> Int -> Bool
verifyAdd a b sum = error "verifyAdd: ERROR"

testAddMundane :: Int -> Int -> Bool
testAddMundane a b = verifyAdd a b (a + b)

-- all the IO-dependent stuff is below this line --

testAddRandom :: IO Bool
testAddRandom = do a <- randomIO
b <- randomIO
return ( verifyAdd a b (a+b) )

--
Víctor A. Rodríguez (http://www.bit-man.com.ar)
El bit Fantasma (Bit-Man)
Perl Mongers Capital Federal (http://cafe.pm.org/)
GNU/Linux User Group - FCEyN - UBA (http://glugcen.dc.uba.ar/)



More information about the Haskell-Cafe mailing list