
I havent done much IO at all in haskell, only within the function itself. However I want to get the input from the interface for the function and havent done this before. // Say I have this as my data type and list of films data Film = Film String String Int [String] -- List of films testDatabase :: [Film] testDatabase = [(Film "Casino Royale" "Martin Campbell" 2006 ["Garry", "Dave", "Zoe"]) ] // with functions such as: becomeFan :: String -> String -> [Film] -> [Film] becomeFan _ _ [] = [] becomeFan filmName fanName ((Film title director year fans):xs) | filmName == title = (Film title director year fanName:fans) : xs | otherwise = (Film title director year fans) : becomeFan filmName fanName xs filmsInGivenYear :: Int -> [Film] -> [String] filmsInGivenYear filmYear films = [ title | (Film title director year fans) <- films, year == filmYear] // I want to ask the user what function they want to use, I have this so far main :: IO() do putStr "Hi there! what is your name: " fanName = getLine do putStr "1 = Insert film, 2 = Become a Fan, 3 = The number of fans of a film, 4 = Film released in a year: " input = getLine read input :: Int (if input == 1 then main x = insertFilm [] else if input == 2 then main x = becomeFan [] else if input == 3 then main x = numberOfFans []) // I thought using the if statement would work, but now I cant think how to gather the needed input for the function they have chosen? thanks apple _________________________________________________________________ Beyond Hotmail — see what else you can do with Windows Live. http://clk.atdmt.com/UKM/go/134665375/direct/01/

Ashley Banks wrote:
I havent done much IO at all in haskell, only within the function itself. However I want to get the input from the interface for the function and havent done this before.
// Say I have this as my data type and list of films data Film = Film String String Int [String] -- List of films
testDatabase :: [Film] testDatabase = [(Film "Casino Royale" "Martin Campbell" 2006 ["Garry", "Dave", "Zoe"]) ]
// with functions such as:
becomeFan :: String -> String -> [Film] -> [Film] becomeFan _ _ [] = [] becomeFan filmName fanName ((Film title director year fans):xs) | filmName == title = (Film title director year fanName:fans) : xs | otherwise = (Film title director year fans) : becomeFan filmName fanName xs
filmsInGivenYear :: Int -> [Film] -> [String] filmsInGivenYear filmYear films = [ title | (Film title director year fans) <- films, year == filmYear]
// I want to ask the user what function they want to use, I have this so far
main :: IO() do putStr "Hi there! what is your name: " fanName = getLine do putStr "1 = Insert film, 2 = Become a Fan, 3 = The number of fans of a film, 4 = Film released in a year: " input = getLine read input :: Int (if input == 1 then main x = insertFilm [] else if input == 2 then main x = becomeFan [] else if input == 3 then main x = numberOfFans [])
that part is kind of confusing. My Suggestion: separate functions for the "submenus". And a main function calling them: submenu "2" fanName = do putStr "What film you want to become a fan of? " filmName <- getLine putStr (show (becomeFan filmName fanName testDatabase)) return () submenu _ _ = do putStr "The function is not supported yet." return () main :: IO() main = do putStr "Hi there! what is your name: " fanName <- getLine putStr "1 = Insert film, 2 = Become a Fan, 3 = The number of fans of a film, 4 = Film released in a year, 5 = Exit: " input <- getLine (if input /= "5" then do submenu input fanName main else return ()) The example should work, but is not very useful, for just adding yourself to the fan list of a movie in testDatabase. You might need to pass around the database. It's not like manipulating a global object as you might do in imperative languages.
// I thought using the if statement would work, but now I cant think how to gather the needed input for the function they have chosen?
thanks
apple
------------------------------------------------------------------------ Get the New Internet Explore 8 Optimised for MSN. Download Now http://extras.uk.msn.com/internet-explorer-8/?ocid=T010MSN07A0716U
------------------------------------------------------------------------
_______________________________________________ Beginners mailing list Beginners@haskell.org http://www.haskell.org/mailman/listinfo/beginners
participants (2)
-
Ashley Banks
-
Daniel Seidel