-3
機能構成に関するチェスナイトの問題を理解するのは苦労しました。エクササイズはジェネレータ/フィルタ/セレクタ のラッパー関数(knightProblem)を連鎖してすべてをまとめます。haskellチェスナイトツアー:機能構成
チェーン内の最初の作品としての機能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 :: ???
???
私はこの種の問題を処理する方法のヒントを探しています。
よろしくお願いいたします。
おかげknightProblem = kSelectorを介して取得するのに役立ちます。 kFilter。 kGeneratorチェーンの式。すべてのコンポーネント関数がkGenerator :: Job - > ...のように1つの引数しか持たないように複合データ型を導入することによって問題を "解決"しましたが、それは指定されたものではなく別の問題です。 – SnDnFn
関数を変更せずに引数を渡すことができます。例えば、 'kFilter'はタプル'(Position、[Moves]) 'を受け入れ、'(Position、[Moves]) 'を返すだけで、それを必要とする' kSelector'に位置を渡すだけです。 – 9000