グラフ用の関数をいくつか実装したいと思います。Haskell:Typedeclarationとしての機能
型宣言がある:一つの機能については
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
私の配慮だった、Knoten [Knoten]
関数に 'Applicative'インスタンスを使用して、' ist_minimal g = minimal_help <*> g'にも注意してください。 – chepner
@chepner私は、このような質問をする人にとって、それはあまりにも早すぎて気を散らすと思う:) –
それを使うべきではないと示唆していないが、私が与えられたパターン実際にはより高い抽象化によって捕らえられている)。他に何もない場合は、「Applicative」の仕組みに対する直感を高めるのに役立つもう一つの例です。 – chepner