Clojure has an identity function. This is used as follows:
user=> (filter identity [1 2 3 nil 4 false true 1234]) (1 2 3 4 true 1234) user=> (partition-by identity (sort "abcdaabccc")) ((\a \a \a) (\b \b) (\c \c \c \c) (\d))
From what I see in Haskell, id used when using lenses and is used in other higher-order functions .
My question is (besides the obvious differences in the system) Does the identity function in Clojure have the same purpose and purpose as the id function in Haskell?
Why do I ask when I look at the following Lens example in Clojure - we see the id defined in terms of functor :
(defprotocol Functor (fmap [functor f] "fmap :: fa -> (a -> b) -> fb")) ;; data Id a = Id { runId :: a } (defrecord Id [runId] Functor (fmap [functor f] (Id. (f (:runId functor)))))
So, I feel that something is missing.
source share