[Haskell-beginners] Function Composition/Map

Animesh Saxena animeshsaxena at icloud.com
Fri Mar 6 06:33:00 UTC 2015


btw here's my ugly solution

type Node = Char
type Arc  = (Node, Node)

solve [] arcs =	[]
solve (x:xs) arcs = (filter (/= ' ') $ map (fmove x) arcs) ++ (solve (filter (/= ' ') $ map (fmove x) arcs) arcs)

fmove::Char->(Char,Char)->Char
fmove s (x,y)
    | s == x = y
    | otherwise = ' '

isGraph s e arcs = (length $ filter (==e) (take 20  $ solve [s] arcs)) > 0

This last check for isGraph should not use this evil number....."20"...coz of infinite list...Hopefully should be able to figure it out..

-Animesh

On Mar 05, 2015, at 09:59 PM, Animesh Saxena <animeshsaxena at icloud.com> wrote:

I have a simple function 

fmove::Char->(Char,Char)->Char
     fmove s (x,y)
     | s == x = y
     | otherwise = s

If I say fmove 'a' ('a','b') it will move to 'b'
If I say fmove 'a' ('d','c') it will stay at 'a'

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,

:t (map fmove s) where s is the set of possible start nodes "abcd"

(map fmove s) :: [(Char, Char) -> Char]

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'. 

I can see that above type signature is wrong for passing the whole graph coz it accepts [(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? 

For each of the possible start nodes (accumulating at each step) it should apply it to the same graph. 

-Animesh


_______________________________________________
Beginners mailing list
Beginners at haskell.org 
http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners 
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.haskell.org/pipermail/beginners/attachments/20150306/5027fc2c/attachment.html>


More information about the Beginners mailing list