<html><body><div>I have a simple function </div><div><br></div><div><div>fmove::Char->(Char,Char)->Char</div><div> fmove s (x,y)</div><div> | s == x = y</div><div> | otherwise = s</div></div><div><br></div><div>If I say fmove 'a' ('a','b') it will move to 'b'</div><div>If I say fmove 'a' ('d','c') it will stay at 'a'</div><div><br></div><div>Now I am trying to use this for graph, coz one move can result in multiple result nodes. For example in graphs you can have move from a to b and a to c. So I was trying something like this,</div><div><br></div><div>:t (map fmove s) where s is the set of possible start nodes "abcd"</div><div><br></div><div>(map fmove s) :: [(Char, Char) -> Char]</div><div><br></div><div>Now I want to be able to pass the graph to this function and get all possible list of endings. For example my graph can be like [('a','b'),('b','c'),('c','a'),('c','d'),('e','a')]. You can see that both 'a' and 'd' are possible from node 'c'. </div><div><br></div><div>I can see that above type signature is wrong for passing the whole graph coz it accepts <span style="line-height: 1.5;">[(Char, Char) -> Char]. I initially started with foldl but problem is recursion on top of foldl. The actual objective of the problem is to figure out if a node is reachable from a start node or not. Hope the problem is clear, can anyone suggest how to convert the map function to accept the graph? </span></div><div><span style="line-height: 1.5;"><br></span></div><div><span style="line-height: 1.5;">For each of the possible start nodes (accumulating at each step) it should apply it to the same graph. </span></div><div><span style="line-height: 1.5;"><br></span></div><div><span style="line-height: 1.5;">-Animesh</span></div><div><br></div><div><br></div></body></html>