我想为图表实现一些功能。
类型声明是:
type Graph = Knoten -> [Knoten]
对于一个函数,我必须通过列表[Knoten]
。我有正确的算法,但不知道如何访问[Knoten]
。
以下是我的尝试:
ist_minimal :: Graph -> Bool
ist_minimal g = minimalHelp g
minimalHelp :: Knoten -> [Knoten] -> Bool
minimalHelp _ [] = True
minimalHelp k (m:ms)
| elem m ms = False
| otherwise = minimalHelp k ms
ist_minimal :: Graph -> Bool
ist_minimal (k ks) = minimalHelp (k ks) --k=Knoten, ks=[Knoten]
minimalHelp :: Knoten -> [Knoten] -> Bool
minimalHelp _ [] = True
minimalHelp k (m:ms)
| elem m ms = False
| otherwise = minimalHelp k ms
我的考虑是,当
时Graph = Knoten -> [Knoten]
可以将图形编写为Knoten [Knoten]
答案 0 :(得分:1)
那不会奏效。 Knoten -> [Knoten] -> Bool
表示Knoten -> ([Knoten] -> Bool)
,而Graph -> Bool
表示(Knoten -> [Knoten]) -> Bool
,而且这些类型非常不同。
基本上你唯一可以使用Knoten -> [Knoten]
(以及Graph
这样做)是在Knoten
上调用它,所以你的函数需要从这个构建操作。例如。调用ist_minimal :: Graph -> Knoten
的一个minimal_help
可能是
ist_minimal g = minimal_help k (g k)
where k = ...
和...
需要填写,以便为您提供Knoten
类型的内容:g k
类型为[Knoten]
,因此此代码会传递Knoten
以及[Knoten]
到minimal_help
,其类型需要。