From 19a80801037a28bfdf0220b0399049d679a78029 Mon Sep 17 00:00:00 2001 From: Justin Ethier Date: Wed, 8 Jun 2016 23:51:58 -0400 Subject: [PATCH] Added (prim:mutates? exp) --- scheme/cyclone/primitives.sld | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/scheme/cyclone/primitives.sld b/scheme/cyclone/primitives.sld index 71e58e8c..1db5f07c 100644 --- a/scheme/cyclone/primitives.sld +++ b/scheme/cyclone/primitives.sld @@ -17,6 +17,7 @@ prim/data-arg? prim/c-var-assign prim/cvar? + prim:mutates? prim:cont? prim:cont/no-args? prim:arg-count? @@ -25,6 +26,22 @@ ; prim? : exp -> boolean (define (prim? exp) (member exp *primitives*)) + + ;; Does primitive mutate any of its arguments? + (define (prim:mutates? exp) + (member + exp + '( + Cyc-set-cvar! + Cyc-spawn-thread! + Cyc-end-thread! + set-global! + set-cell! + set-car! + set-cdr! + string-set! + bytevector-u8-set! + vector-set!))) (define *primitives* '( Cyc-global-vars