<div dir="ltr"><div><div><div><div><div><div>If you pass a program into this instruction, if it sees a shoot, it will modify it slightly, if it is some other instruction, it will simply leave the instruction unchanged, and then call itself on the rest of the program.  Use pattern matching to do this (untested code):<br><br></div>adjust :: Direction -> Program -> Direction<br></div>adjust dir (Shoot point next) = Shoot (adjustPoint dir point) $ adjust dir next<br></div><div>  where<br></div><div>    adjustPoint :: Dir -> Point -> Point<br>    adjustPoint N (x,y) = (x, y+1)<br>    adjustPoint ... = ...<br><br></div><div>adjust dir (Move d next) = Move d $ adjust dir next<br></div><div>adjust ... = ...<br></div><div>adjust _ (Surrender) = Surrender<br></div><div><br></div><br></div></div></div></div><div class="gmail_extra"><br><div class="gmail_quote">On Mon, Jun 22, 2015 at 12:08 PM, Bruno Sotelo Klinec <span dir="ltr"><<a href="mailto:janus_1118@outlook.com" target="_blank">janus_1118@outlook.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">


<div><div dir="ltr">Hi there! I was hoping you could help me a bit here with making a function. I am asked to write functions to make a mini robot game, which uses these data and types: <br><br>data Program = Move Direction Program<br>                |Radar (Robot -> Point) Program<br>                |Shoot Point Program<br>                |Surrender<br>data Direction = N|S|E|O<br>type Point = (Int,Int)<br>data Robot = R1|R2<br><br>And then I have to write functions like this: <br>prog1::Program<br>prog1 = Move E $ Radar R1 (2,4) $ Radar R2 (5,6) $ Shoot (5,7) prog1<br><br>My problem is the function adjust::Direction->Program->Program that takes one direction and a program and moves every shot in that program one unit in the given direction. I can't figure out how to do this, I would really appreciate you could help me, thanks!<br>                                      </div></div>
<br>_______________________________________________<br>
Beginners mailing list<br>
<a href="mailto:Beginners@haskell.org">Beginners@haskell.org</a><br>
<a href="http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners" rel="noreferrer" target="_blank">http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners</a><br>
<br></blockquote></div><br></div>