clojure-russia

Работа и релокейт: #jobs-rus | #clojure-russia-offtop Телеграм-чат https://t.me/clojure_ru
misha 2017-10-30T08:09:22.000002Z

Заверни всё, что возвращает mycomp, в функцию одного аргумента

misha 2017-10-30T08:10:32.000052Z

(Верни из майкомп функцию одного аргумента)

y.khmelevskii 2017-10-30T22:29:04.000017Z

что-то я никак не могу понять что не так. Сейчас я возвращаю функцию одного аргумента (вроде ничего не напутал)

(defn mycomp
  [& hocs]
  (let [func (apply comp
                    (map #(partial apply %)
                         (reverse hocs)))]
    (fn [component] (func component))))
ну и собственно вызов уже без partial
(def hoc
  (mycomp
           hoc-foo
           hoc-bar
           hoc-xyz))
но у меня все благополучно падает с непонятным эксепшеном.

misha 2017-10-30T22:59:16.000184Z

А зачем тебе внутри мапить паршл аплай на все хоки?

misha 2017-10-30T23:09:46.000093Z

(defn mycomp [& hocs]
  (apply comp (reverse hocs)))

(defn h1 [c] (str c "+h1"))
(defn h2 [c] (str c "+h2"))
(def h (mycomp h1 h2))

(h "comp")
;;=> "comp+h1+h2"