Haskell Data Types and Functions

So, I'm still writing that parser I started on about a week ago, and now I need to define my own data types. Basically, I'm just trying to experiment with how Haskell handles Data types, since it seems to be very different from C++ and other OO languages.
I was going along fine until I wrote some code that gave me this error:

What I was trying to do was to make a data type called Node, which has a string and then a list of Nodes inside of it. Then I make a Node and return it from the function so that it can be modified/accessed elsewhere. Perhaps I'm understanding how Data types are supposed to function in Haskell?
Can you modify variables in a Data type that has been passed to a function and still have them modified in the place before they were passed to the function? I'm guessing not, but I haven't had a chance to try because of the above error....

Thanks in advance; hopefully it's not too much code to look through
-wyrmmage

You've declared processFile to return Node, then used "do" syntax, which means you're returning a value ("b" in the message) in some unspecified monad ("a" in the message). Get rid of the "do"s you don't intend, and fix the syntax accordingly, and it'll compile fine:

Incidentally, the reason I suggested you use Haskell for parsing is due to the existence of the Parsec parser combinator library. Obviously you can still benefit from learning the language a bit, but you probably want to switch to Parsec sooner or later.