Difference between revisions of "Code for Bob"
From HaskellWiki
Tomjaguarpaw (talk | contribs) (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