
On Sunday 17 February 2002 08:20, christophe certain wrote:
Hi,
I'm a poor lonesome newbie in Haskell world, and I would like to add a string typed on the prompt to a list of strings which is already defined.
It would look like something like :
type Path = [String]
currentPath::Path currentPath = []
getpiece ::IO String getpiece = do c <-getLine return c
putpiece:: String->Path putpiece a = a:currentPath
and then I could combine the two functions, but obviously it doesn't work. I dare understand that it's impossible isn't it ?
Maybe the only way is to create a new [String] each time I want to add a new string ? No ?
Christophe Certain
You seem to expect currentPath to be updated by putpiece? This won't happen in Haskell. Once you've declared currentPath=[] it will always be []. Values never change. If you want the functional equivalent of accumulator variables they have to be an argument of a recursive function. So try this.. getPath :: Path -> IO Path getPath currentPath = do piece <- getLine if piece == "" then return currentPath else getPath (piece:currentPath) initialCurrentPath::Path initialCurrentPath = [] main :: IO () main = do path <- getPath initialCurrentPath putStrLn (show path) Regards -- Adrian Hey