trealla-go 
import "github.com/trealla-prolog/go/trealla"
使用Trealla Prolog和Wasmer的Go的Prolog接口。 它相当快。虽然没有原生的Trealla那么快,但也是非常快的(比原生的慢2-5倍)。
开发状态: alpha 🤠
注意事项
- 阿尔法状态,API会改变。
- 查询是findall'd的,在查询结束前不会返回答案。
- 在Windows上不工作(wasmer-go问题)。
- 在WSL上工作很好。
- 目前,解释器是短暂的,所以你必须在每次查询时重新考虑一切(正在努力)。
使用方法
这个库使用WebAssembly来运行Trealla,在一个隔离的环境中执行Prolog查询:
import "github.com/trealla-prolog/go/trealla"
func main() {
// load the interpreter and (optionally) grant access to the current directory
pl := trealla.New(trealla.WithPreopen("."))
// run a query; cancel context to abort it
answer, err := pl.Query(ctx, "member(X, [1, foo(bar), c]).")
// get the second substitution (answer) for X
x := answer.Solutions[1]["X"] // trealla.Compound{Functor: "foo", Args: ["bar"]}
}