値のタプルで自分自身を返す関数を作成しようとしています。基本的には、呼び出し元が変換された値を、新しい (カリー化された) バージョンの関数と共に取得して、処理でさらに使用するという考え方です。
しかし、現時点では、この関数のノーオペレーション (つまり何もしない) バージョンを考え出そうとして行き詰まっています。したがって、次のスニペットは明らかに問題ありません。これは、それ自体を返さないノーオペレーションです。
noOp s as xs = (s, as, xs)
しかし、これに変更すると:
noOp s as xs = (s, as, xs, noOp)
「無限型」エラーが発生します。
Occurs check: cannot construct the infinite type:
t3 = t0 -> t1 -> t2 -> (t0, t1, t2, t3)
In the expression: noop
In the expression: (s, as, xs, noop)
In an equation for `noop': noop s as xs = (s, as, xs, noop)
無限型エラーの処理については、SO に関する多くの議論がありますが、私の問題に適用する方法がよくわかりません。
どんなアドバイスでも歓迎...