As usual a beginner in Haskell. Trying to write a simple program in haskel
shown below

main :: IO()
main =catch (do
  hexFile <- readFile "file"
  putStr "What is the key number (0 or 1)?\n"
  keyno <- getLine
  putStr "Input key.\n"
  key <- getLine
  newLine <- outputLine keyno key (lines(hexFile))
  bla bla bla........

 getLeft :: String -> String -> String
getLeft _ [] = ""
getLeft key line
 |key == "0" = take 9 line
 |otherwise = take 25 line

getRight :: String ->String -> String
getRight _ [] = ""
getRight key line
 |key == "0" = drop 25 line
 |otherwise = drop 41 line

outputLine keyno key orgFile = do
    part1 <- getLeft keyno orgFile
    part2 <- getRight keyno orgFile
    total <- part1 ++ (strUpper key) ++ part2 ++ "\n"
    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

Reply via email to