Loading ai/ai.go 0 → 100644 +1 −0 Original line number Diff line number Diff line package ai ai/ai_test.go 0 → 100644 +37 −0 Original line number Diff line number Diff line package ai import ( _ "embed" "testing" "github.com/ichiban/prolog" ) var ( //go:embed example.pl example string ) func TestProlog(t *testing.T) { p := prolog.New(nil, nil) if err := p.Exec(example); err != nil { t.Fatalf("prolog.Exec() failed with: %s", err) } sols, err := p.Query(`mortal(Who).`) if err != nil { t.Fatalf("p.Query() failed with: %s", err) } defer sols.Close() for sols.Next() { var s struct { Who string } if err := sols.Scan(&s); err != nil { t.Errorf("prolog.solutions.Scan() failed with: %s", err) } t.Logf("Who = %s", s.Who) } } ai/example.pl 0 → 100644 +3 −0 Original line number Diff line number Diff line human(socrates). % This is a fact. mortal(X) :- human(X). % This is a rule. Loading
ai/ai_test.go 0 → 100644 +37 −0 Original line number Diff line number Diff line package ai import ( _ "embed" "testing" "github.com/ichiban/prolog" ) var ( //go:embed example.pl example string ) func TestProlog(t *testing.T) { p := prolog.New(nil, nil) if err := p.Exec(example); err != nil { t.Fatalf("prolog.Exec() failed with: %s", err) } sols, err := p.Query(`mortal(Who).`) if err != nil { t.Fatalf("p.Query() failed with: %s", err) } defer sols.Close() for sols.Next() { var s struct { Who string } if err := sols.Scan(&s); err != nil { t.Errorf("prolog.solutions.Scan() failed with: %s", err) } t.Logf("Who = %s", s.Who) } }
ai/example.pl 0 → 100644 +3 −0 Original line number Diff line number Diff line human(socrates). % This is a fact. mortal(X) :- human(X). % This is a rule.