Fork me on GitHub
#clojure-russia
<
2017-10-30
>
misha08:10:22

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

misha08:10:32

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

y.khmelevskii22:10:04

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

(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))
но у меня все благополучно падает с непонятным эксепшеном.

misha22:10:16

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

misha23:10:46

(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"