From 5a9cdd3cc89507d4d74f8bded56ce5e037b3b56e Mon Sep 17 00:00:00 2001 From: Trygve Laugstøl Date: Fri, 23 Feb 2024 07:08:18 +0100 Subject: wip --- learn-you-some-erlang/dog_fsm.erl | 42 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 learn-you-some-erlang/dog_fsm.erl (limited to 'learn-you-some-erlang/dog_fsm.erl') diff --git a/learn-you-some-erlang/dog_fsm.erl b/learn-you-some-erlang/dog_fsm.erl new file mode 100644 index 0000000..f784933 --- /dev/null +++ b/learn-you-some-erlang/dog_fsm.erl @@ -0,0 +1,42 @@ +-module(dog_fsm). +-export([start/0, squirrel/1, pet/1]). + +start() -> spawn(fun() -> bark() end). + +squirrel(Pid) -> Pid ! squirrel. + +pet(Pid) -> Pid ! pet. + +bark() -> + io:format("Dog says: BARK! BARK!~n"), + receive + pet -> + wag_tail(); + _ -> + io:format("Dog is confused~n"), + bark() + after 2000 -> + bark() + end. + +wag_tail() -> + io:format("Dog wags its tail~n"), + receive + pet -> + sit(); + _ -> + io:format("Dog is confused~n"), + wag_tail() + after 30000 -> + bark() + end. + +sit() -> + io:format("Dog is sitting. Gooooood boy!~n"), + receive + squirrel -> + bark(); + _ -> + io:format("Dog is confused~n"), + sit() + end. -- cgit v1.2.3