Go 是否有围棋规则引擎/推理引擎

Go 是否有围棋规则引擎/推理引擎,go,rule-engine,Go,Rule Engine,我们希望使用Go实现我们的业务逻辑,但是我们找不到任何好的Go规则引擎/推理引擎的实现。有人有任何经验或建议吗?据我所知,这方面最好的例子是在许多标准库中采用的“表驱动”单元测试方法。比如, 除此之外,围棋是一种功能强大、富有表现力的语言。你到底需要什么?Go中有许多状态机实现的示例,以及许多具有声明性JSON配置的web框架 如果你指的是正确的逻辑编程,那么目前还没有流行的Go库。有一个项目旨在在Go中实现ISO Prolog编译器: 我还没有测试过它,但考虑到它实现了一些基本的Prol

我们希望使用Go实现我们的业务逻辑,但是我们找不到任何好的Go规则引擎/推理引擎的实现。有人有任何经验或建议吗?

据我所知,这方面最好的例子是在许多标准库中采用的“表驱动”单元测试方法。比如,

除此之外,围棋是一种功能强大、富有表现力的语言。你到底需要什么?Go中有许多状态机实现的示例,以及许多具有声明性JSON配置的web框架


如果你指的是正确的逻辑编程,那么目前还没有流行的Go库。

有一个项目旨在在Go中实现ISO Prolog编译器:

我还没有测试过它,但考虑到它实现了一些基本的Prolog,它应该是一个非常强大的基于规则的推理引擎AFAIS

否则,搜索at上的“规则”也会生成一组包:

看一看

它可以解析下一个表达式:

# Get the special price if
user.Group in ["good_customers", "collaborator"]

# Promote article to the homepage when
len(article.Comments) > 100 and article.Category not in ["misc"]

# Send an alert when
product.Stock < 15
#如果需要,可获得特价
用户组[“好客户”,“合作者”]
#当需要时,将文章升级到主页
len(article.Comments)>100和article.Category不在[“misc”]
#在需要时发送警报
产品库存<15
输入、检查并评估


代码也非常好:

如果您熟悉JBoss Drools,现在在Golang中也有类似的东西。 看看这个

它的DSL类似于Drools DRL,称为GRL

rule SlowDown "When testcar is slowing down we keep decreasing the speed." salience 10  {
    when
        TestCar.SpeedUp == false && TestCar.Speed > 0
    then
        TestCar.Speed = TestCar.Speed - TestCar.SpeedIncrement;
        DistanceRecord.TotalDistance = DistanceRecord.TotalDistance + TestCar.Speed;
}

这不是出于测试目的,我们只需要一个诱人的框架来处理规则描述文件中的布尔计算,而不是硬编码代码中的逻辑。查看godoc.org上的列表,godec()似乎很有趣,声称是“声明性golang数据和规则处理”。如何为“包含”编写规则GRL中的操作员?Rest我看过你的grool repo,喜欢你所做的。@Kartavya你可以轻松地在结构中创建任何函数,并将结构实例添加到数据上下文中。从GRL调用函数。此项目现在已存档。搬到