История изменений
Исправление quasimoto, (текущая версия) :
Там вопрос был «продемонстрируй, что программы на tcl короче, чем на racket».
std::thread every(int sec, void(&f)())
{
std::thread t { [&f]() { while(1) { f(); sleep(sec); } } };
t.detach();
return t;
}
every(1, *[]() { puts("..."); });
... do stuff
every :: Int -> IO () -> IO (Async ())
every sec io = async $ forever $ io >> threadDelay (sec * 1000000)
every 1 $ putStrLn "..."
... do stuff
думаю, на Racket будет так же - в concurrency всё нужно есть. Разве что может быть интересно насколько «лёгкие» его потоки (= OS thread, или что-то своё + , собственно, свой же event loop для IO).
Исправление quasimoto, :
Там вопрос был «продемонстрируй, что программы на tcl короче, чем на racket».
std::thread every(int sec, void(&f)())
{
std::thread t { [&f]() { while(1) { sleep(sec); f(); } } };
t.detach();
return t;
}
every(1, *[]() { puts("..."); });
... do stuff
every :: Int -> IO () -> IO (Async ())
every sec io = async $ forever $ io >> threadDelay (sec * 1000000)
every 1 $ putStrLn "..."
... do stuff
думаю, на Racket будет так же - в concurrency всё нужно есть. Разве что может быть интересно насколько «лёгкие» его потоки (= OS thread, или что-то своё + , собственно, свой же event loop для IO).
Исходная версия quasimoto, :
Там вопрос был «продемонстрируй, что программы на tcl короче, чем на racket».
std::thread every(int sec, void(&f)())
{
std::thread t { [&f]() { while(1) { sleep(1); f(); } } };
t.detach();
return t;
}
every(1, *[]() { puts("..."); });
... do stuff
every :: Int -> IO () -> IO (Async ())
every sec io = async $ forever $ io >> threadDelay (sec * 1000000)
every 1 $ putStrLn "..."
... do stuff
думаю, на Racket будет так же - в concurrency всё нужно есть. Разве что может быть интересно насколько «лёгкие» его потоки (= OS thread, или что-то своё + , собственно, свой же event loop для IO).