       (gen-raw-neighbours-by-row [row col] row-func))))
   
 (gen-neighbours-by-row [0 1] dec) ;; ()
+(gen-neighbours-by-row [0 1] inc) ;; ((1 0) (1 1) (1 2))
 (gen-neighbours-by-row [1 1] dec) ;; ((0 0) (0 1) (0 2))
 
 (defn gen-neighbours-for [[row col :as cell-coordinates]]

  (map #(str/split % #"") table))

(def matrix (table->matrix r))

[row col]
[0 0]:: [0 1] [1 0] [1 1]

[1 1]:: [0 0] [0 1] [0 2]
        [1 0]       [1 2]
        [2 0] [2 1] [2 2]


(defn gen-neighbours-by-row [[row col] row-func]

          (previous-row-func [coordinate] (dec coordinate))
          (next-row-func [coordinate] (inc coordinate))
          (current-row-func [coordinate] (identity coordinate))]
    ((comp vec concat)
      (map vec (gen-neighbours-by-row [row col] previous-row-func))
      (map vec (remove #(= cell-coordinates %) (gen-neighbours-by-row [row col] current-row-func)))
      (map vec (gen-neighbours-by-row [row col] next-row-func))
    )))
    
(gen-neighbours-for [0 1]) 
