rename x/just to x/first

This commit is contained in:
Christophe Grand 2015-09-16 13:25:57 +02:00
parent 378ea13118
commit 50587dd35e

View file

@ -1,7 +1,7 @@
(ns net.cgrand.xforms (ns net.cgrand.xforms
"Extra transducers for Clojure" "Extra transducers for Clojure"
{:author "Christophe Grand"} {:author "Christophe Grand"}
(:refer-clojure :exclude [reduce into count for partition str juxt]) (:refer-clojure :exclude [reduce into count for partition str juxt first])
(:require [clojure.core :as clj])) (:require [clojure.core :as clj]))
(defmacro for (defmacro for
@ -36,7 +36,7 @@
(defmacro kvrf [name? & fn-bodies] (defmacro kvrf [name? & fn-bodies]
(let [name (if (symbol? name?) name? (gensym '_)) (let [name (if (symbol? name?) name? (gensym '_))
fn-bodies (if (symbol? name?) fn-bodies (cons name? fn-bodies)) fn-bodies (if (symbol? name?) fn-bodies (cons name? fn-bodies))
fn-bodies (if (vector? (first fn-bodies)) (list fn-bodies) fn-bodies)] fn-bodies (if (vector? (clj/first fn-bodies)) (list fn-bodies) fn-bodies)]
`(reify `(reify
clojure.lang.Fn clojure.lang.Fn
KvRfable KvRfable
@ -290,7 +290,7 @@
([acc] (zipmap keys (f acc))) ([acc] (zipmap keys (f acc)))
([acc x] (f acc x))))) ([acc x] (f acc x)))))
(defn just (defn first
"Reducing function that returns the first value or nil if none." "Reducing function that returns the first value or nil if none."
([] nil) ([] nil)
([x] x) ([x] x)
@ -302,10 +302,10 @@
Returns a transducer when coll is omitted." Returns a transducer when coll is omitted."
([xforms-map] ([xforms-map]
(let [[f args] (if (vector? xforms-map) (let [[f args] (if (vector? xforms-map)
[juxt (map #(% just))] [juxt (map #(% first))]
[juxt-map (comp (by-key (map #(% just))) cat)])] [juxt-map (comp (by-key (map #(% first))) cat)])]
(fn [rf] (fn [rf]
((reduce (apply f (sequence args xforms-map))) rf)))) ((reduce (apply f (sequence args xforms-map))) rf))))
([xforms-map coll] ([xforms-map coll]
(transduce (transjuxt xforms-map) just coll))) (transduce (transjuxt xforms-map) first coll)))