- Allow deref of shared queues
- Added (realized? obj) as a stub
This commit is contained in:
Justin Ethier 2019-07-11 11:12:52 -04:00
parent 6e8c0b6088
commit 7c6be060af

View file

@ -16,6 +16,7 @@
(export (export
;; Generic Concurrency ;; Generic Concurrency
deref deref
realized?
;; Atoms ;; Atoms
make-atom make-atom
atom atom
@ -61,8 +62,18 @@
(cond (cond
((atom? obj) (atom-deref obj)) ((atom? obj) (atom-deref obj))
((future? obj) (future-deref obj)) ((future? obj) (future-deref obj))
((shared-queue? obj) (shared-queue-remove! obj))
(else obj))) (else obj)))
;; TODO: (realized? obj) - see clojure docs
;; Returns true if a value has been produced for a promise, delay, future or lazy sequence.
(define (realized? obj)
(cond
;; TODO: ((future? obj)
;; TODO: ((shared-delay? obj)
;; TODO: ((shared-promise? obj)
(else #f)))
(define-c atom? (define-c atom?
"(void *data, int argc, closure _, object k, object obj)" "(void *data, int argc, closure _, object k, object obj)"
" object result = Cyc_is_atomic(obj); " object result = Cyc_is_atomic(obj);