関数合成に関するチェスナイトの問題を理解するのに苦労しました。演習は、すべてを結合する特定のラッパー関数 (knightProblem) を使用したジェネレーター/フィルター/セレクター チェーンです。
チェーンの最初の部分としての関数 kGenerator が複数のパラメーターをどのように処理する必要があるかは、私にはわかりません。
-- Chess Knight Problem: Generate all Knight moves of length NrMoves
-- that end at the target position
knightProblem :: StartPos -> NrMoves -> TargetPos -> [Moves]
knightProblem = kSelector . kFilter . kGenerator
-- kGenerator: needs StartPos, NrMoves, generates all sequences of length NrMoves
-- kFilter: remove all moves which contain invalid positions
-- kSelector: keep all moves which terminate at TargetPos
kGenerator :: ???
???
この種の問題を処理する方法についてのヒントを探しています。
よろしくお願いします。