[erlang-questions] General advice on FP (& Erlang)
Milen Georgiev Dzhumerov
gamehack@REDACTED
Sat Aug 11 20:41:55 CEST 2007
Hi all,
I've got a couple of questions. I'm probably not the first person who
is struggling to switch to a functional mindset. So, hopefully, any
replies to my questions will help other people too!
The way I got started is by reading the "Programming Erlang" book by
Joe (great book btw). As I was reading the book, everything seemed so
obvious and easy but when I'm trying to do something myself - I just
can't. I always go back to my "shared state" mind and don't seem to
be able come up with a design and a plan on how to implement it.
So, what are you guys (who get FP) suggesting I do? I think the
problem comes from having C hardwired into my brain and I can't get
it out.
And I definitely have got to ask this - how are we supposed to mutate
state? Using processes? Function calls? I just can't wrap my head
around how some C code is going to be translated.
Let's take a simple example. I'm writing a network app in Erlang
which accepts "messages" on a socket, where a "message" is defined as
length:content. If I was to do this in C, I would have a function
which gets called every time bytes arrive on the socket and then
depending on which state I'm in, I'm either going to append the bytes
to a length buffer and when I reach the ":" character, I'll change
the state and start appending to the content buffer (while
decrementing the number of bytes still left to be read).
Now all of this depends on having access to mutable buffers (& a
counter) outside the scope of the functions - at this point I'm lost
on how to do it in Erlang. How would guys start solving this problem?
Obviously, the more experience you have, the less thinking you're
going to put into this and the solution is going to come up
naturally, but what about people who haven't had any real world
experience with FP?
Thanks,
Milen
-------------- next part --------------
A non-text attachment was scrubbed...
Name: smime.p7s
Type: application/pkcs7-signature
Size: 2419 bytes
Desc: not available
URL: <http://erlang.org/pipermail/erlang-questions/attachments/20070811/a8481f8a/attachment.bin>
More information about the erlang-questions
mailing list