Re: [Haskell-beginners] [Haskell-cafe] parser error in pattern

I didnt understand properly but made changes according to what I understood..Its still giving me the same error eval1(If t1 t2 t3) = case (If t1 t2 t3) of eval1(If t1 t2 t3) -> Just t1 On Mon, Oct 17, 2011 at 4:10 PM, Ivan Lazar Miljenovic < ivan.miljenovic@gmail.com> wrote:
On 18 October 2011 09:08, kolli kolli
wrote: actual error message is
homework2.lhs:137:20: parse error on input `where'
data Term = Tru | Fls | If Term Term Term | Zero | Succ Term | Pred Term | IsZero Term deriving Eq
As I said, the error is from your incorrect usage of the case statement; it _should_ look something like:
case foo of bar -> baz bar' -> baz'
On Mon, Oct 17, 2011 at 4:03 PM, Ivan Lazar Miljenovic
wrote: On 18 October 2011 08:56, kolli kolli
wrote: after parsing a string i am evaluating it... string if t1 then t2 else t3 my code is eval1 :: Term -> Maybe Term eval1(If Tru t2 t3) = Just t2 eval1(If Fls t2 t3) = Just t3 eval1(If t1 t2 t3) = case eval t1 where eval1(If t1 t2 t3) = Just t1
eval :: Term -> Term eval (IsZero Zero) = Tru eval (Zero) = Zero eval(Pred Zero) = Pred Zero
Your case statement is incomplete for starters...
Can you please provide the actual error message as well? Your definition of Term would also be useful.
On Mon, Oct 17, 2011 at 3:46 PM, Ivan Lazar Miljenovic
wrote: On 18 October 2011 08:43, kolli kolli
wrote:
hey can anyone tell me what is parser error in parser??Plz help me out
It's when the parser can't parse what it's provided.... providing the code that caused the problem and the actual error message is required for a more detailed explanation.
-- Ivan Lazar Miljenovic Ivan.Miljenovic@gmail.com IvanMiljenovic.wordpress.com
-- Ivan Lazar Miljenovic Ivan.Miljenovic@gmail.com IvanMiljenovic.wordpress.com
-- Ivan Lazar Miljenovic Ivan.Miljenovic@gmail.com IvanMiljenovic.wordpress.com

I'm finding it really hard to grok what this is even supposed to do but you have: eval1(If t1 t2 t3) = case (If t1 t2 t3) of eval1(If t1 t2 t3) -> Just t1 Case doesn't work that way. It would be something like: eval1 (If t1 t2 t3) = case (some expression) of pattern1 -> somevalue pattern2 -> anothervalue I don't see the intent of pattern matching the exact argument to eval1. What is the type of eval1? Also, your filename is homework2.hs. Please read this page on the Haskell wiki: http://www.haskell.org/haskellwiki/Homework_help That's not to say you shouldn't ask these questions here but note that most of us will not do your homework for you. We will provide hints, but you should be doing your due diligence to try to understand what your code is doing and possible reasons why it isn't working. -- Michael Xavier http://www.michaelxavier.net LinkedIn http://www.linkedin.com/pub/michael-xavier/13/b02/a26
participants (2)
-
kolli kolli
-
Michael Xavier