Paste number 64543: manorboy

Paste number 64543: manorboy
Pasted by: roller
When:11 months, 1 day ago
Share:Tweet this! | http://paste.lisp.org/+1DSV
Channel:None
Paste contents:
Raw Source | XML | Display As
-module(manorboy).
-export([manorboy/0, manorboy/1]).
-import(string).

kloop(K) ->
    receive
        {get, Pid} ->
            Pid ! K,
            kloop(K);
        decr ->
            kloop(K-1);
        done ->
            ok
    end.


a(KP1, X1, X2, X3, X4, X5) ->
    KP1 ! {get, self()},
    receive
        K -> 
            if 
                K =< 0  -> 
                    X4() + X5();
                true    ->
                    KP2 = spawn(fun() -> kloop(K) end),
                    B = fun (B) -> 
                                KP2 ! decr,
                                a(KP2, fun() -> B(B) end, X1, X2, X3, X4)
                        end,
                    Bres = B(B),
                    KP2 ! done,
                    Bres
            end
    end.


manorboy(N) ->                
    Kproc = spawn(fun() -> kloop(N) end),
    Res = a( Kproc,
             fun() -> 1 end, 
             fun() -> -1 end, 
             fun() -> -1 end,
             fun() -> 1 end,
             fun() -> 0 end ),
    Kproc ! done,
    Res.

manorboy() ->
    manorboy(10).

This paste has no annotations.

Colorize as:
Show Line Numbers

Lisppaste pastes can be made by anyone at any time. Imagine a fearsomely comprehensive disclaimer of liability. Now fear, comprehensively.