构建 FGL 中定义的 UNode 和 LNode 时出现问题 Data.Graph.Inductive.Graph
Problems building UNode and LNode defined in FGL Data.Graph.Inductive.Graph
我正在努力学习使用 FGL。
我不明白为什么我不能使用 UNode
、LNode
、LEdge
和 UEdge
。这些类型对于 ghci 来说似乎是未知的,尽管当我输入 :t mkGraph
时它明确地使用了它们。
λ: import Data.Graph.Inductive.Graph
λ: :t UNode
<interactive>:1:1: Not in scope: data constructor `UNode'
λ: :t LNode
<interactive>:1:1: Not in scope: data constructor `LNode'
λ: :t mkGraph
mkGraph :: Graph gr => [LNode a] -> [LEdge b] -> gr a b
我忘了做什么?
我正在尝试从 Int 创建 UNode 和 LNode,但不知道该怎么做。
UNode
和 LNode
已经活在类型级别了,所以问他们的类型有点奇怪。也许您想知道它们的种类,在这种情况下,您可以使用 :k[ind]
而不是 :t[ype]
。
Prelude Data.Graph.Inductive.Graph> :k UNode
UNode :: *
Prelude Data.Graph.Inductive.Graph> :k LNode
LNode :: * -> *
或者您可能想知道如何构建其中之一,在这种情况下,您可以使用 :i[nfo]
了解更多信息:
Prelude Data.Graph.Inductive.Graph> :i UNode
type UNode = LNode () -- Defined in ‘Data.Graph.Inductive.Graph’
Prelude Data.Graph.Inductive.Graph> :i LNode
type LNode a = (Node, a)
-- Defined in ‘Data.Graph.Inductive.Graph’
Prelude Data.Graph.Inductive.Graph> :i Node
type Node = Int -- Defined in ‘Data.Graph.Inductive.Graph’
Prelude Data.Graph.Inductive.Graph> :i (,)
data (,) a b = (,) a b -- Defined in ‘GHC.Tuple’
-- [editor's note: many instances snipped here]
现在我们终于知道如何构建一个 UNode
,如果有点费力的话:
Prelude Data.Graph.Inductive.Graph> (32, ()) :: UNode
(32,())
我正在努力学习使用 FGL。
我不明白为什么我不能使用 UNode
、LNode
、LEdge
和 UEdge
。这些类型对于 ghci 来说似乎是未知的,尽管当我输入 :t mkGraph
时它明确地使用了它们。
λ: import Data.Graph.Inductive.Graph
λ: :t UNode
<interactive>:1:1: Not in scope: data constructor `UNode'
λ: :t LNode
<interactive>:1:1: Not in scope: data constructor `LNode'
λ: :t mkGraph
mkGraph :: Graph gr => [LNode a] -> [LEdge b] -> gr a b
我忘了做什么?
我正在尝试从 Int 创建 UNode 和 LNode,但不知道该怎么做。
UNode
和 LNode
已经活在类型级别了,所以问他们的类型有点奇怪。也许您想知道它们的种类,在这种情况下,您可以使用 :k[ind]
而不是 :t[ype]
。
Prelude Data.Graph.Inductive.Graph> :k UNode
UNode :: *
Prelude Data.Graph.Inductive.Graph> :k LNode
LNode :: * -> *
或者您可能想知道如何构建其中之一,在这种情况下,您可以使用 :i[nfo]
了解更多信息:
Prelude Data.Graph.Inductive.Graph> :i UNode
type UNode = LNode () -- Defined in ‘Data.Graph.Inductive.Graph’
Prelude Data.Graph.Inductive.Graph> :i LNode
type LNode a = (Node, a)
-- Defined in ‘Data.Graph.Inductive.Graph’
Prelude Data.Graph.Inductive.Graph> :i Node
type Node = Int -- Defined in ‘Data.Graph.Inductive.Graph’
Prelude Data.Graph.Inductive.Graph> :i (,)
data (,) a b = (,) a b -- Defined in ‘GHC.Tuple’
-- [editor's note: many instances snipped here]
现在我们终于知道如何构建一个 UNode
,如果有点费力的话:
Prelude Data.Graph.Inductive.Graph> (32, ()) :: UNode
(32,())