Difference between revisions of "Code for Bob"

From HaskellWiki
Jump to: navigation, search
(Deleted old dead page)
m (Reverted edits by Tomjaguarpaw (talk) to last revision by Quale)
 
Line 1: Line 1:
 +
[[Category:Code]]
 +
<haskell>
 +
#!/usr/local/bin/runhugs
 +
import "/home/ralf/hudak_soe/HUnit-1.0/HUnit"
 +
newtype Lover a = Lover {loverDiary :: (Name,a)}
 +
    deriving Show
 +
type Name = String
  
 +
createLover :: Name -> a -> (Lover a)
 +
createLover name times = Lover (name,times)
 +
 +
chainAffairs :: Num a => Lover a -> Lover a -> Lover a
 +
chainAffairs (Lover (names, oldtimes)) (Lover (newlady, newtimes)) =
 +
    Lover ((newlady ++ names), (oldtimes + newtimes))
 +
 +
startAffairWith :: Num a => Name -> Lover b -> Lover a
 +
startAffairWith name (Lover (names,times)) = Lover (name,0)
 +
 +
jenny = startAffairWith "Jenny "
 +
luisa = startAffairWith "Luisa "
 +
antonia = startAffairWith "Antonia "
 +
 +
bob = createLover "Paula " 5
 +
 +
oneMoreTime :: Num a => Lover a -> Lover a
 +
oneMoreTime (Lover (name, times)) = Lover (name, times+1)
 +
 +
test1 = TestCase (assertEqual "this test" ("Lover{loverDiary=(\"Paula \",5)}")
 +
  (show bob))
 +
--test1 = TestCase (assertEqual "this test" () ())
 +
tests = TestList [TestLabel "test1" test1]
 +
 +
main = do runTestTT tests
 +
  do
 +
  let
 +
  bob' = (oneMoreTime bob)
 +
  test2 = TestCase (assertEqual
 +
    "this test" ("Lover{loverDiary=(\"Paula \",6)}")
 +
    (show bob'))
 +
  tests2 = TestList [TestLabel "test2" test2]
 +
  in
 +
  runTestTT tests2
 +
</haskell>

Latest revision as of 15:16, 6 February 2021

#!/usr/local/bin/runhugs
import "/home/ralf/hudak_soe/HUnit-1.0/HUnit"
newtype Lover a = Lover {loverDiary :: (Name,a)}
    deriving Show 
type Name = String

createLover :: Name -> a -> (Lover a)
createLover name times = Lover (name,times)

chainAffairs :: Num a => Lover a -> Lover a -> Lover a
chainAffairs (Lover (names, oldtimes)) (Lover (newlady, newtimes)) = 
    Lover ((newlady ++ names), (oldtimes + newtimes))

startAffairWith :: Num a => Name -> Lover b -> Lover a
startAffairWith name (Lover (names,times)) = Lover (name,0)

jenny = startAffairWith "Jenny "
luisa = startAffairWith "Luisa "
antonia = startAffairWith "Antonia "

bob = createLover "Paula " 5

oneMoreTime :: Num a => Lover a -> Lover a
oneMoreTime (Lover (name, times)) = Lover (name, times+1)

test1 = TestCase (assertEqual "this test" ("Lover{loverDiary=(\"Paula \",5)}") 
		  (show bob))
--test1 = TestCase (assertEqual "this test" () ())
tests = TestList [TestLabel "test1" test1]

main = do runTestTT tests
	  do
	  let
	  bob' = (oneMoreTime bob)
	  test2 = TestCase (assertEqual 
			    "this test" ("Lover{loverDiary=(\"Paula \",6)}") 
			    (show bob'))
	  tests2 = TestList [TestLabel "test2" test2]
	  in
	  runTestTT tests2