Commit 313d2208 authored by Boris Mühmer's avatar Boris Mühmer
Browse files

added embedded prolog example

parent 63d82314
Loading
Loading
Loading
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.