【问题标题】:library for binary relations in haskellhaskell 中的二元关系库
【发布时间】:2011-11-09 01:26:50
【问题描述】:

我在 google 上搜索,在 google 上搜索“site:haskell.org”,然后使用 hoogle。但我什么也没找到。语法框架 gf 中有一些代码引用了“Data.Relation”,但我找不到更多信息。

haskell 中有二进制关系库吗?

(我只想做一些基本的事情,比如找到传递闭包。)

ps:在agda中,很容易在标准库中找到关系

=== 编辑:===
我只需要有限的关系。
只是一个获取所有相关事物(数学对象)的函数。这也是关系的传递闭包。

最新更新:
我刚刚在 github 上找到了 Binary Relations 的源代码:
https://github.com/fmaste/hgraph/blob/master/src/Data/Collection/Relation/Binary.hs

https://github.com/fmaste/hgraph/blob/master/src/Data/Collection/Relation/Binary/Simple.hs https://github.com/search?langOverride=&language=Haskell&q=relation&repo=&start_value=1&type=Code&x=0&y=0

【问题讨论】:

  • 我什么都不知道。你需要什么样的观察?例如。 type Rel a b = a -> b -> Bool 代表可判定的关系,但你不能。枚举其域。如果您只需要有限的关系,这很容易,但除此之外,设计空间很微妙。
  • 感谢 luqui 的评论。那么关系应该如何实现呢?使用 Rel a b 类型,使用 Data.Set 还是使用箭头?
  • 更新,我刚刚在github上发现了一些东西:github.com/fmaste/hgraph/blob/…
  • 这就是我的问题所在。这取决于您需要他们提供什么。你说你需要计算传递闭包,但是你想如何观察传递闭包?有序对的列表?一个布尔值告诉你什么时候有一对?这些东西在数学上是等价的,但在计算上是等价的。你为什么想要一个二元关系库——这将有助于回答这个问题。
  • 我正在使用 SKOS(语义网)。一个 skos 概念可以有多个更广泛的概念,我需要一些数据结构来表示 skos 概念。一个 skos 概念也可以与多个其他 skos 概念和其他特征相关。详情请看我的另一个问题:stackoverflow.com/questions/8032731/…

标签: haskell


【解决方案1】:
【解决方案2】:

我想我现在只是回答我的问题。

github上有二元关系:
https://github.com/fmaste/hgraph/blob/master/src/Data/Collection/Relation/Binary/Simple.hs

它应该可以满足我的需要。 图书馆 hgraph 似乎很有趣,但不幸的是它不是在 hackage 上。所以我错过了。

所以吸取的教训是:
在github上搜索(直接在网站上)非常重要。似乎 github 也不是谷歌很好的索引,因为搜索“二进制关系 haskell 站点:github.com”并没有得到我想要的结果(甚至搜索“二进制关系”Simple.hs“站点:github.com”)。 com' 不起作用。)

【讨论】:

    【解决方案3】:

    nponeccop 链接到的库已翻译成英文,可在 Hackage 上找到: http://hackage.haskell.org/package/relation

    这很简单,可以完成工作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-05-22
      • 2017-09-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多