Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Работа с процессами 
:(
    Опции темы
iiukyr4uk
Дата 25.4.2013, 19:05 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 14.4.2013

Репутация: нет
Всего: нет



Ребятки, помоги кто нить!!!

Надо создать процесс-"эхо", который ожидает сообщения
1) если получен атом stop, то он заканчивает работу; 
2) если получено {print, Term}, то выводит Term

Работать должен примерно так:
> echo:start().
Started <0.33.0>
ok
> echo:print(1).
1
ok
> echo:print(stop).
stop
ok
> echo:stop().
Stopped!
ok


Это сообщение отредактировал(а) iiukyr4uk - 25.4.2013, 20:39
PM MAIL   Вверх
beroal
Дата 29.4.2013, 20:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 212
Регистрация: 18.1.2003
Где: Украина

Репутация: нет
Всего: 3



Укажите язык программирования. Почему вопрос именно в разделе языков функционального программирования?

В общем-то, get line, put line, ничего сложного быть не должно.
PM WWW   Вверх
k0rvin
Дата 30.4.2013, 13:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 442
Регистрация: 24.1.2010

Репутация: нет
Всего: 5



Цитата(beroal @  29.4.2013,  20:47 Найти цитируемый пост)
Укажите язык программирования. Почему вопрос именно в разделе языков функционального программирования?

Erlang же.
http://www.erlang.org/doc/getting_started/conc_prog.html

Это сообщение отредактировал(а) k0rvin - 30.4.2013, 13:28


--------------------
“Object-oriented design is the roman numerals of computing.” — Rob Pike
All software sucks
PM MAIL   Вверх
Бонифаций
Дата 1.5.2013, 21:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 827
Регистрация: 15.9.2005
Где: Brisbane

Репутация: нет
Всего: 40



Цитата(iiukyr4uk @ 26.4.2013,  02:05)
Ребятки, помоги кто нить!!!

Надо создать процесс-"эхо", который ожидает сообщения
1) если получен атом stop, то он заканчивает работу; 
2) если получено {print, Term}, то выводит Term

ну прям такая сложная задача!

Код

-module(echo).
-export([start/0,init/1, print/1,stop/0]).

start() ->
    spawn(echo, init, [self()]).

init(From) ->
    register(echo,self()),
    loop(From).

loop(From) ->
    receive
    stop        -> io:format("Stopped~n"), ok;
        {print,Msg} -> io:format("~p~n",[Msg]), loop(From);
    _ -> loop(From)
    end.

print(X) -> print(X, whereis(echo)).

print(_,undefined) -> {error, echo_is_not_started};
print(Msg,Pid)     -> Pid ! {print,Msg},ok.

stop() -> stop(whereis(echo)).

stop(undefined) -> {error, echo_is_not_started};
stop(Pid)       -> Pid ! stop, ok.



И все. Проверяем.

1> c("/home/walrus/echo", [{outdir, "/home/walrus/"}]).
{ok,echo}
2> echo:start().
<0.39.0>
3> echo:print(1).
1
ok
4> echo:print(stop).
stop
ok
5> echo:stop().
Stopped
ok
6> echo:stop().
{error,echo_is_not_started}



--------------------
 Бонифаций.
 
PM MAIL ICQ Skype GTalk Jabber YIM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума «Функциональные языки: общие вопросы»
Void
  • Пожалуйста, создавайте темы с содержательными названиями. Если у Вас вопрос по конкретному языку, укажите его в заголовке, например: «[Haskell] Как использовать монаду State».
  • Уважаемые учащиеся, здесь всегда рады помочь Вам, но не делать за Вас вашу работу. У вас гораздо больше шансов получить помощь, если Вы приложите усилия и поделитесь с нами проблемами и результатами. В противном случае добро пожаловать в раздел Центр Помощи.
  • Получив ответ на интересующий Вас вопрос, не забудьте пометить его как решённый.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Void.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Функциональные языки: общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1092 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.