関数のジェネレーターを作りたいです。
実際に値のジェネレーターがあることに気付きましたがIFn
、関数ドメインが無限の場合 (そして値が厳密であるため)、それらを関数のジェネレーターとして使用することは一般的に実用的ではありません。
この機能は存在しますか、それとも自分で実装する必要がありますか?
関数のジェネレーターを作りたいです。
実際に値のジェネレーターがあることに気付きましたがIFn
、関数ドメインが無限の場合 (そして値が厳密であるため)、それらを関数のジェネレーターとして使用することは一般的に実用的ではありません。
この機能は存在しますか、それとも自分で実装する必要がありますか?
より完全なソリューションへの gfredericks の回答に基づいて構築します。
(defn fn-gen
([result-gen results-n result-scale]
(gen/fmap
(fn [results] (fn [& args] (get results (mod (apply + (map hash args)) results-n))))
(gen/vector (gen/scale (partial + result-scale) result-gen) results-n)))
([result-gen result-n] (fn-gen result-gen result-n 10))
([result-gen] (fn-gen result-gen 10)))