[Haskell-beginners] Designing complex Haskell programs

Courtney Robinson courtney at crlog.info
Fri Jan 3 17:57:25 UTC 2014


Thanks to both of you for your reply.
I have something similar to your example Bob, wasn't sure if it was a good
way forward. Plus it fell apart when I tried contacting multiple hosts on
different threads using forkIO. But with Daniel's response I'll look into
MVars.

Thanks again


On Fri, Jan 3, 2014 at 5:16 PM, Bob Ippolito <bob at redivi.com> wrote:

> Generally speaking, state lives on the call stack in functional
> programming languages that have tail call elimination. Modification of the
> state is done by recursion with a new value for the state. This is more or
> less equivalent to a "do while" loop in imperative programming.
>
> myServer :: State -> IO ()
> myServer state = do
>   state' <- updateState state
>   myServer state'
>
> For the concurrency, Control.Concurrent or Cloud Haskell (for a higher
> level Erlang-like approach) is probably the way to go here. Parallel and
> Concurrent Programming in Haskell is a great resource:
> http://chimera.labs.oreilly.com/books/1230000000929
>
>
> On Fri, Jan 3, 2014 at 8:45 AM, Courtney Robinson <courtney at crlog.info>wrote:
>
>> I'm trying to take the training wheels of and moving more of my code base
>> to Haskell from C++ but finding it increasingly tricky.
>>
>> I have a subset of a gossip protocol written in C++.
>> When a server comes online it connects to 1 or more nodes already in the
>> cluster and get data from them about other nodes they know of.
>>
>> The new node merges the information and keeps a copy of the merged view.
>> Every so often it contacts the nodes it knows about and refreshes the
>> merged view. It also must have the up to date view ready to be sent in
>> response to a new node joining.
>>
>> I currently can't wrap my head around how to maintain this state. How
>> would a more experienced Haskeller approach this problem? Code is OK if it
>> demonstrates a particular point but I'm more interested in the line of
>> thought that would go into designing a solution as I suspect that'll be
>> more useful as I get further into the migration.
>>
>> As a gauge to you for my current level in Haskell. I read and understand
>> most Haskell programs fine. I write some but currently heavily rely on
>> hackage/hoogle docs for APIs, even some common ones.
>>
>> Thanks
>>
>> _______________________________________________
>> Beginners mailing list
>> Beginners at haskell.org
>> http://www.haskell.org/mailman/listinfo/beginners
>>
>>
>
> _______________________________________________
> Beginners mailing list
> Beginners at haskell.org
> http://www.haskell.org/mailman/listinfo/beginners
>
>


-- 
Courtney Robinson
courtney at crlog.info
http://crlog.info
07535691628 (No private #s)
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.haskell.org/pipermail/beginners/attachments/20140103/91b8534b/attachment.html>


More information about the Beginners mailing list