1 ! Copyright (C) 2004, 2008 Slava Pestov.
2 ! See http://factorcode.org/license.txt for BSD license.
3 USING: inference.backend inference.state inference.dataflow
4 inference.known-words inference.transforms inference.errors
5 kernel io effects namespaces sequences quotations vocabs
9 GENERIC: infer ( quot -- effect )
11 M: callable infer ( quot -- effect )
12 [ recursive-state get infer-quot ] with-infer drop ;
15 #! Safe to call from inference transforms.
16 infer effect>string print ;
18 GENERIC: dataflow ( quot -- dataflow )
21 #! Not safe to call from inference transforms.
22 [ f infer-quot ] with-infer nip ;
24 GENERIC# dataflow-with 1 ( quot stack -- dataflow )
26 M: callable dataflow-with
27 #! Not safe to call from inference transforms.
33 : forget-errors ( -- )
35 dup subwords [ f "cannot-infer" set-word-prop ] each
36 f "cannot-infer" set-word-prop