On Apr 20, 2005, at 10:04 PM, Alexandre Weffort Thenorio wrote:
As usual a beginner in Haskell. Trying to write a simple program in haskel
shown below
outputLine keyno key orgFile = do part1 <- getLeft keyno orgFile part2 <- getRight keyno orgFile total <- part1 ++ (strUpper key) ++ part2 ++ "\n"
This is just creating a new expression bound to total, not an action. Instead of <- use let =
let total = part1 ++ (strUpper key) ++ part2 ++ "\n"
Something about Lists [] also being a Monad gave a confusing error message to you
newHexFile <- openFileEx "newfile" (BinaryMode WriteMode)
hPutStrLn newHexFile (orgFile!!0 ++ "\n" ++ total ++ unlines (drop 2
orgFile))
strUpper :: String -> String strUpper [] = "" --strUpper x:xs = (toUpper x):(strUpper xs)
And I keep getting the error
changecode.hs:42: Couldn't match `[a]' against `Char' Expected type: [a] Inferred type: Char In the first argument of `(++)', namely `part1' In a 'do' expression: total <- part1 ++ ((strUpper key) ++ (part2 ++ "\n"))
I have tried thousands and thousand of modifications (Originally getLeft and
getRight didn't exist, the code was part of outputLine) but it keeps
thinking that orgFile is a String when clearlly it is a [String]. Also I can
get my function strUpper (Which simply puts strings to Upper case) to work.
Can anybody see what is wrong here?
Best Regards
Alex
_______________________________________________ Haskell mailing list Haskell@haskell.org http://www.haskell.org/mailman/listinfo/haskell
_______________________________________________ Haskell mailing list Haskell@haskell.org http://www.haskell.org/mailman/listinfo/haskell