(($ <primcall> _ name args)
(and (effect-free-primitive? name)
(not (constructor-primitive? name))
- (not (accessor-primitive? name))
(types-check? name args)
- (every loop args)))
+ (if (accessor-primitive? name)
+ (every const? args)
+ (every loop args))))
(($ <call> _ ($ <lambda> _ _ body) args)
(and (loop body) (every loop args)))
(($ <seq> _ head tail)
(else
(make-primcall src name (list k (make-const #f elts))))))))
((name . args)
- (make-primcall src name args))))
+ (fold-constants src name args ctx))))
(($ <primcall> src (? effect-free-primitive? name) args)
(fold-constants src name (map for-value args) ctx))
(loop (1+ i)))
'())))))
(string->chars "yo"))
- (apply (primitive list) (const #\y) (const #\o)))
+ (primcall list (const #\y) (const #\o)))
(pass-if-peval
;; Primitives in module-refs are resolved (the expansion of `pmatch'