From 7c6be060af4c4dd2a75ca346f5d1240856ff472d Mon Sep 17 00:00:00 2001 From: Justin Ethier Date: Thu, 11 Jul 2019 11:12:52 -0400 Subject: [PATCH] Tweaks - Allow deref of shared queues - Added (realized? obj) as a stub --- libs/cyclone/concurrent.sld | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/libs/cyclone/concurrent.sld b/libs/cyclone/concurrent.sld index b73a4c93..55541dc7 100644 --- a/libs/cyclone/concurrent.sld +++ b/libs/cyclone/concurrent.sld @@ -16,6 +16,7 @@ (export ;; Generic Concurrency deref + realized? ;; Atoms make-atom atom @@ -61,8 +62,18 @@ (cond ((atom? obj) (atom-deref obj)) ((future? obj) (future-deref obj)) + ((shared-queue? obj) (shared-queue-remove! 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? "(void *data, int argc, closure _, object k, object obj)" " object result = Cyc_is_atomic(obj);