Use asymmetric filters for some evt predicates

This commit is contained in:
Asumu Takikawa 2013-07-31 12:03:19 -04:00
parent 15e60c2da1
commit e67f7c9de4
2 changed files with 9 additions and 3 deletions

View File

@ -316,7 +316,7 @@
[never-evt (make-Evt (Un))] [never-evt (make-Evt (Un))]
[system-idle-evt (-> (make-Evt -Void))] [system-idle-evt (-> (make-Evt -Void))]
[alarm-evt (-> -Real (-mu x (make-Evt x)))] [alarm-evt (-> -Real (-mu x (make-Evt x)))]
[handle-evt? (make-pred-ty (make-Evt Univ))] [handle-evt? (asym-pred Univ B (-FS (-filter (make-Evt Univ) 0) -top))]
[current-evt-pseudo-random-generator [current-evt-pseudo-random-generator
(-Param -Pseudo-Random-Generator -Pseudo-Random-Generator)] (-Param -Pseudo-Random-Generator -Pseudo-Random-Generator)]
@ -327,7 +327,7 @@
[channel-try-get (-poly (a) ((-channel a) . -> . (Un a (-val #f))))] [channel-try-get (-poly (a) ((-channel a) . -> . (Un a (-val #f))))]
[channel-put (-poly (a) ((-channel a) a . -> . -Void))] [channel-put (-poly (a) ((-channel a) a . -> . -Void))]
[channel-put-evt (-poly (a) (-> (-channel a) a (-mu x (make-Evt x))))] [channel-put-evt (-poly (a) (-> (-channel a) a (-mu x (make-Evt x))))]
[channel-put-evt? (make-pred-ty (-mu x (make-Evt x)))] [channel-put-evt? (asym-pred Univ B (-FS (-filter (-mu x (make-Evt x)) 0) -top))]
;Section 3.3 ;Section 3.3
@ -2196,7 +2196,7 @@
[semaphore-try-wait? (-> -Semaphore B)] [semaphore-try-wait? (-> -Semaphore B)]
[semaphore-wait/enable-break (-> -Semaphore -Void)] [semaphore-wait/enable-break (-> -Semaphore -Void)]
[semaphore-peek-evt (-> -Semaphore (-mu x (make-Evt x)))] [semaphore-peek-evt (-> -Semaphore (-mu x (make-Evt x)))]
[semaphore-peek-evt? (make-pred-ty (-mu x (make-Evt x)))] [semaphore-peek-evt? (asym-pred Univ B (-FS (-filter (-mu x (make-Evt x)) 0) -top))]
;[call-with-semaphore ???] ;[call-with-semaphore ???]
;[call-with-semaphore/enable-break ???] ;[call-with-semaphore/enable-break ???]

View File

@ -1464,6 +1464,12 @@
(make-Evt -String)) (make-Evt -String))
(tc-e (guard-evt (inst make-channel String)) (tc-e (guard-evt (inst make-channel String))
(make-Evt -String)) (make-Evt -String))
(tc-err (let: ([a : (U (Evtof Any) String) always-evt])
(if (handle-evt? a) a (string->symbol a))))
(tc-err (let: ([a : (U (Evtof Any) String) always-evt])
(if (channel-put-evt? a) a (string->symbol a))))
(tc-err (let: ([a : (U (Evtof Any) String) always-evt])
(if (semaphore-peek-evt? a) a (string->symbol a))))
;Semaphores ;Semaphores
(tc-e (make-semaphore) -Semaphore) (tc-e (make-semaphore) -Semaphore)