
People, Here is a certain naive question about string setting in a Haskell program. I have the functions parseProgram :: String -> Program apply :: Program -> Term -> Term -- interpreter, and try to build the example modules for them as in the following example: ---------------------------------------------------------------- module Main where program = parseProgram " isOrdered nil -> true; isOrdered (X:nil) -> true; isOrdered (X:Y:Ys) -> isOrd (X > Y) (isOrdered (Y:Ys)); isOrd true bo -> false; isOrd false bo -> bo " main = let {data = ... :: Term; res = apply program data} in putStr $ concat ["data = ", shows data "\n", "res = ", shows res "\n"] ---------------------------------------------------------------- -- that is set a string (an object program example), parse it to a program, apply this program and print the result. But in reality, the above string must be set like this: (2) "\ \ isOrdered nil -> true;\ \ isOrdered (X:nil) -> true;\ \ isOrdered (X:Y:Ys) -> \ \ isOrd (X > Y) (isOrdered (Y:Ys));\ \\ \ isOrd true bo -> false;\ \ isOrd false bo -> bo\ \" -- because otherwise Haskell treats the NewLine characters in the above string in an unneeded way. But with (2), the program Main occurs hard to read. One could try to improve this by using readFile. Form the file data.txt -------------------------------- isOrdered nil -> true; isOrdered (X:nil) -> true; isOrdered (X:Y:Ys) -> isOrd (X > Y) (isOrdered (Y:Ys)); isOrd true bo -> false; isOrd false bo -> bo ----------------------------------------- and combine readFile "data.txt", the `do' construct, pearseProgram, apply, putStr. But this needs adding one more file, and this also changes the programming style in defining examples. Now, what is the difference? 1. readFile reads string from file, with treating NewLine as needed. 2. The Haskell compiler reads the expression parseProgram " isOrdered nil > true; ... " from the input Haskell program with treating NewLine in the string in a different way. I wonder: how to remove most of backslashes in the program (2) ? Thank you in advance for your comments. ----------------- Serge Mechveliani mechvel@botik.ru