metaclass: (Default)
metaclass ([personal profile] metaclass) wrote2012-08-03 12:49 pm
Entry tags:

Clojure.

(defn concat-inner-seqs
  "concat inner sequencies in sequence of tuples"
  [seq-of-seqs]
  (apply (partial map concat) seq-of-seqs))


(println
 (concat-inner-seqs [[[1] [2] [:a]]
                     [[3] [4] [:b]] 
                     [[5] [6] [:c]]]))

; ((1 3 5) (2 4 6) (:a :b :c))
А теперь вот это придется объяснить всем заинтересованным сотрудникам.
PS: Версия с мапами вместо туплов:
(defn concat-maps-seq
  "concat inner sequencies in sequence of maps"
  [seq-of-maps]
  (apply (partial merge-with concat) seq-of-maps))

(def test-data-maps
     [
      {:F1 [1 "b" "3"] :F2 [2 'aa] :F3 [:a :e] :F4 [3333]}
      {:F1 [3] :F4 [4] :F6 [:b] :Pauk "abc"} 
      {:F1 [5] :F3 [6] :F2 [:c] :Pauk "def"}
     ])

(println test-data-maps)
(println (concat-maps-seq test-data-maps))

Сделана заменой map на merge-with. Можно использовать именованные поля и разное их количество.

[identity profile] blackyblack.livejournal.com 2012-08-03 11:43 am (UTC)(link)
Ну я прочитал. И гугл прочитал. Без примера и репла результат вообще не ясен.

[identity profile] freiksenet.livejournal.com 2012-08-03 11:46 am (UTC)(link)
Это просто настолько стандартный пример с абсолютно стандартными функциями. Я помню даже на курсе по кложури в универе у нас такая задача была и я её именно так и решил.

[identity profile] blackyblack.livejournal.com 2012-08-03 11:48 am (UTC)(link)
Дак написать это одно, а прочитать совсем другое. Я тоже на кложури когда писал - ставил кучу скобочек и всё понятно. А когда читать стал, понял, что чё-то непонятно где что.

[identity profile] alexott.livejournal.com 2012-08-03 04:48 pm (UTC)(link)
а в каком это университете кложуре учат?

[identity profile] freiksenet.livejournal.com 2012-08-03 05:26 pm (UTC)(link)
Университет Хельсники. Наша студенческая организация Lambda делала в тот раз (https://wiki.helsinki.fi/display/lambda/Clojure-kurssi), потом еще раз делали в Metropolia University of Applied Science.

Весной еще Хаскель и проект по нему были, тоже от лябмды.

[identity profile] alexott.livejournal.com 2012-08-03 05:31 pm (UTC)(link)
классно вам...