]> gitweb.factorcode.org Git - factor.git/blob - core/inference/inference.factor
Merge branch 'master' of git://factorcode.org/git/factor
[factor.git] / core / inference / inference.factor
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
6 generic words ;
7 IN: inference
8
9 GENERIC: infer ( quot -- effect )
10
11 M: callable infer ( quot -- effect )
12     [ recursive-state get infer-quot ] with-infer drop ;
13
14 : infer. ( quot -- )
15     #! Safe to call from inference transforms.
16     infer effect>string print ;
17
18 GENERIC: dataflow ( quot -- dataflow )
19
20 M: callable dataflow
21     #! Not safe to call from inference transforms.
22     [ f infer-quot ] with-infer nip ;
23
24 GENERIC# dataflow-with 1 ( quot stack -- dataflow )
25
26 M: callable dataflow-with
27     #! Not safe to call from inference transforms.
28     [
29         V{ } like meta-d set
30         f infer-quot
31     ] with-infer nip ;
32
33 : forget-errors ( -- )
34     all-words [
35         dup subwords [ f "cannot-infer" set-word-prop ] each
36         f "cannot-infer" set-word-prop
37     ] each ;