I found the library myself, and i already put the code in that site: http://hpaste.org/48277
That's what i have tried to do for making the task by calling the one string function by another one: include kursovazadacha parse :: [a] -> [a] parse [] = [] parse (x:xs) = eval (x:xs) The error from the compiler: ERROR file:.\list.hs:3 - Syntax error in declaration (unexpected `;', possibly due to bad layout) On Fri, Jun 24, 2011 at 11:20 PM, Daniel Patterson <lists.hask...@dbp.mm.st> wrote: > What have you tried to do in order to make it work for the list, and what > error results? What is confusing about the error message? More generally, how > could you transform an operation on a single string into one that does the > same thing to a list of strings? You've probably talked about higher order > functions in your class - would any of the common ones (filter, map, foldr) > be helpful here? Would any encapsulate what you are trying to do? > > If you include these kinds of things, I think you'll find this community to > be very helpful; without that (showing what your thought process is, why it > isn't working, what seems confusing about what the haskell compiler is > telling you, etc), you are not going to get help here. People here are very > friendly and willing to help people learn; this is not a place to come to get > an assignment finished :) > > Also, could you put the library you are using (I'm assuming that this is > provided by your university) and the code on somewhere like hpaste.org, so > that the formatting is not messed up by email, and it is syntax highlighted? > > On Jun 24, 2011, at 3:57 PM, Stoyan Peev wrote: > >> Hello all, >> >> I am experiencing some issues to do my course task in university. >> >> I have to write a calculator- function in Haskell. The function >> argument is a list of strings and also form such list, as each string >> of the argument made definite action: >> - If the string has the form of an arithmetic _expression_ - calculate >> this _expression_. The string result becomes part of the list-result. >> If the _expression_ contains a variable which is not assigned value, >> the result is displayed "undefined". >> - If the string has the form- Name = value calculated from the last >> _expression_ is assigned to the variable with the corresponding name >> in the list, and in the result list is formed a string with type >> - If there is not a calculated _expression_ to be assigned to form a >> string "no value". >> - If the string is non-blank, but there is a species different from >> the above two case, form the string "error". >> - If the string is empty, incl. when it contains only spaces, in the >> result there is not form a string. >> >> Expressions consist of integers without sign variables, operations + >> (Addition), - (subtraction), * (multiplication) and / (divide) and >> parentheses. Where no brackets, the operations are performed from left >> to right, but * and / precede the + and -. Implementation of any >> operation gives integer; in the division rejected the fractional part, >> if any. >> Variables have names of one letter - from the Latin small letter. In >> the beginning, end or between the elements of each row can have spaces >> - they are irrelevant to its correctness. >> Example: the list-argument >> ["3 +7 / 2" "2 + x", "= s", "2 * s +4", "", "2 + +4 / 5] >> function should provide a result-list >> ["6", "undefined", "s = 6", "16", "error"]. >> >> >> I say another person have the same task, but he didn't do anything. I >> started doing this task myself but i get stuck in the middle. Then i >> started searching for something that could help me and find out you :) >> >> The code i have written so far uses the library file "Parsing.lhs" >> but what i have written is taking those actions that i already >> described, only for a string. I cannot modify it to work for list of >> string, and complete the whole task. >> >> I'll be glad to finish the task myself, but i am going to need some help. >> >> Here is the code i have already written: >> >> >> import Parsing >> >> expr :: Parser Int >> expr = do t <- term >> do symbol "+" >> e <- expr >> return (t+e) >> +++ do symbol "-" >> e <- expr >> return (t-e) >> +++ return t >> term :: Parser Int >> term = do f <- factor >> do symbol "*" >> t <- term >> return (f * t) >> +++ do symbol "/" >> t <- term >> return (f-t) >> +++ return f >> factor :: Parser Int >> factor = do symbol "(" >> e <- expr >> symbol ")" >> return e >> +++ natural >> eval :: String -> Int >> eval xs = case (parse expr xs) of >> [(n,[])] -> n >> [(_,out)] -> error ("undefined") >> [] -> error "error" >> >> >> >> Thanks all in advance :) >> >> -- >> Best Wishes >> Stoyan Peev >> >> _______________________________________________ >> Haskell-Cafe mailing list >> Haskell-Cafe@haskell.org >> http://www.haskell.org/mailman/listinfo/haskell-cafe > > -- Поздрави, Стоян Пеев _______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe