Hi,
well you're using the IO Monad all over the place. Instead I
suggest using it only in certain places (like main) and keep the
functions pure in general. One way to improve this might be to start
from the inside and first think about what functions you need and then
what the types should look like. For example you need a function to add a
student to the list, the type of pure function which does that looks
like this:
aadd :: [Student] -> Student -> [Student]
Then implement
this function and think from the outside: Given some user input, how
can I create a student? Take a look at this[1] page.. you'll find a
suggestion on how to improve your ashow function there.
Hola! Hallo!My question are:
I made my first program to understand lists and something about datat types. I have some question about the following code...
import Data.List data Student = Student { id :: Int, nombre :: String } deriving (Show, Eq) main :: IO () main = do putStrLn "---\nStudent Magnament Program\n---" loop [] ashow :: [Student] -> IO () ashow [] = putStrLn "Empty list" ashow [x] = putStrLn $ show x ashow (x:xs)= do putStrLn $ show x ashow xs aadd :: [Student] -> IO () aadd xs = do putStrLn "Enter the id" id <- getLine putStrLn "Enter name" name <- getLine loop $ (Student (read id) (read name) ) : xs aremove :: [Student] -> IO () aremove xs = do putStrLn "Enter the id" id <- getLine putStrLn "Enter name" name <- getLine loop $ delete (Student (read id) (read name) ) xs loop :: [Student] -> IO () loop xs = do putStr $ "\n-------\nSelect an option\n" ++ "1) Add student\n" ++ "2) Remove student\n" ++ "3) Show all students\n" ++ "4) Exit\n" ++ "\t Your option: " option <- getLine putStrLn "\n------" case read option of 1 -> aadd xs 2 -> aremove xs 3 -> do ashow xs loop xs 4 -> putStrLn "God bye!"
- When i ask for the data fof a student i repeat the code, cause i have to use fuctions using IO (), cuase i have to put something in the screen. Therefore i cant have a fuction that only return a Student.
- loop $ (Student $ read id $ read name), is wrong why?
- i think that there are best way to achive that i have done. Or is ok for a begginer that doesn't know functors or monads.
Sorry for my bad english, i am Argentinean.
Thanks in advance.
_______________________________________________
Beginners mailing list
Beginners@haskell.org
http://www.haskell.org/mailman/listinfo/beginners