Created
October 9, 2010 08:57
-
-
Save kiwanami/618038 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
;; generator | |
(setq fib-list nil) | |
(setq fib-gen | |
(lexical-let ((a1 0) (a2 1)) | |
(cc:generator | |
(lambda (x) (push x fib-list)) | |
(yield a1) | |
(yield a2) | |
(while t | |
(let ((next (+ a1 a2))) | |
(setq a1 a2 | |
a2 next) | |
(yield next)))))) | |
(funcall fib-gen) | |
fib-list | |
;; thread | |
(lexical-let | |
((count 0) (anm "-/|\\-") | |
(end 50) (pos (point))) | |
(cc:thread | |
60 | |
(message "Animation started.") | |
(while (> end (incf count)) | |
(save-excursion | |
(when (< 1 count) | |
(goto-char pos) (delete-char 1)) | |
(insert (char-to-string | |
(aref anm (% count (length anm))))))) | |
(save-excursion | |
(goto-char pos) (delete-char 1)) | |
(message "Animation finished."))) | |
;; semaphore | |
(setq smp (cc:semaphore-create 1)) | |
(deferred:nextc (cc:semaphore-aquire smp) | |
(lambda(x) | |
(message "go1"))) | |
(deferred:nextc (cc:semaphore-aquire smp) | |
(lambda(x) | |
(message "go2"))) | |
(deferred:nextc (cc:semaphore-aquire smp) | |
(lambda(x) | |
(message "go3"))) | |
(cc:semaphore-release smp) | |
(cc:semaphore-waiting-deferreds smp) | |
(cc:semaphore-release-all smp) | |
(cc:semaphore-waiting-deferreds smp) | |
;; Dataflow | |
(setq dfenv-parent (cc:dataflow-environment)) | |
(cc:dataflow-set dfenv-parent "aaa" 256) | |
(setq dfenv (cc:dataflow-environment dfenv-parent)) | |
(cc:dataflow-get-sync dfenv "aaa") | |
(deferred:$ | |
(cc:dataflow-get dfenv "abc") | |
(deferred:nextc it | |
(lambda (x) (message "Got abc : %s" x)))) | |
(cc:dataflow-set dfenv "abc" 256) | |
(cc:dataflow-get-sync dfenv "abc") | |
(cc:dataflow-clear dfenv "abc") | |
(cc:dataflow-get-sync dfenv "abc") | |
(deferred:$ | |
(cc:dataflow-get dfenv '("http://example.com/a.jpg" 300)) | |
(deferred:nextc it | |
(lambda (x) (message "a.jpg:300 OK %s" x)))) | |
(cc:dataflow-set dfenv '("http://example.com/a.jpg" 300) 'jpeg) | |
(deferred:$ | |
(deferred:parallel | |
(cc:dataflow-get dfenv "abc") | |
(cc:dataflow-get dfenv "def")) | |
(deferred:nextc it | |
(lambda (values) | |
(apply 'message "Got values : %s, %s" values) | |
(apply '+ values))) | |
(deferred:nextc it | |
(lambda (x) (insert (format ">> %s" x))))) | |
(cc:dataflow-get-waiting-keys dfenv) | |
(cc:dataflow-get-avalable-pairs dfenv) | |
(cc:dataflow-set dfenv "abc" 128) | |
(cc:dataflow-set dfenv "def" 256) | |
(cc:dataflow-get-avalable-pairs dfenv) | |
(cc:dataflow-clear-all dfenv) | |
(cc:dataflow-get-avalable-pairs dfenv) | |
;; Signal | |
(progn | |
(setq parent-channel (cc:signal-channel "parent")) | |
(cc:signal-connect | |
parent-channel 'parent-load | |
(lambda (event) (message "Parent Signal : %s" event))) | |
(cc:signal-connect | |
parent-channel t | |
(lambda (event) (message "Parent Listener : %s" event))) | |
(setq channel (cc:signal-channel "child" parent-channel)) | |
(cc:signal-connect | |
channel 'window-load | |
(lambda (event) (message "Signal : %s" event))) | |
(cc:signal-connect | |
channel t | |
(lambda (event) (message "Listener : %s" event))) | |
(deferred:$ | |
(cc:signal-connect channel 'window-load) | |
(deferred:nextc it | |
(lambda (x) (message "Deferred Signal : %s" x)))) | |
) | |
(cc:signal-send channel 'window-load "hello signal!") | |
(cc:signal-send channel 'some "some signal!") | |
(cc:signal-send parent-channel 'parent-load "parent hello!") | |
(cc:signal-send parent-channel 'window-load "parent hello!") | |
(cc:signal-send parent-channel 'some "parent some hello!") | |
(cc:signal-send-global channel 'some "parent some hello!") | |
(cc:signal-disconnect-all channel) | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment