Events: Difference between revisions

Content added Content deleted
(Added Elixir)
m (→‎{{header|LFE}}: Tweaked for LFE)
Line 468: Line 468:


=={{header|LFE}}==
=={{header|LFE}}==
<lang lisp>
;;;
;;; This is a straight port from the Erlang version.
;;;
;;; You can run this in the LFE REPL by slurping the file:
;;;
;;; > (slurp "events.lfe")
;;; > (main)
;;;
(defmodule events
(export all))


{{trans|Erlang}}

Paste in the REPL:

<lang lisp>
(defun log (msg)
(defun log (msg)
(let (((tuple h m s) (erlang:time)))
(let ((`#(,h ,m ,s) (erlang:time)))
(lfe_io:format "~2.B:~2.B:~2.B => ~s~n" (list h m s msg))))
(lfe_io:format "~2.B:~2.B:~2.B => ~s~n" `(,h ,m ,s ,msg))))


(defun task ()
(defun task ()
Line 490: Line 484:
(log "Task resumed"))
(log "Task resumed"))


(defun main ()
(defun run ()
(log "Program start")
(log "Program start")
(let ((pid (spawn (lambda () (task)))))
(let ((pid (spawn (lambda () (task)))))
Line 501: Line 495:
</lang>
</lang>


Usage:
However, OTP comes with a gen_event behavior that is more robust and resilient than this version.

<pre>
> (run)
18:34:53 => Program start
18:34:53 => Program sleeping
18:34:53 => Task start
18:34:54 => Program signalling event
18:34:54 => Task resumed
ok
</pre>
OTP comes with a <code>gen_even</code>t behavior that is more robust and resilient than this version. That is what should be used for any non-toy example or project.


=={{header|JavaScript}}==
=={{header|JavaScript}}==