In Clojure haben wir die identity
Funktion. Es is used as follows:Funktioniert die Identitätsfunktion in Clojure genauso wie die ID-Funktion in Haskell?
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))
Von dem, was ich in Haskell sehen - id
is used when using lenses und ist used in other higher order functions.
Meine Frage ist (abgesehen von der offensichtlichen Art Systemunterschiede) Ist die identity
Funktion in Clojure die gleiche Nutzung und Zweck wie die in Haskell id
Funktion hat?
Warum, frage ich, wenn ich bei the following example eines Lens in Clojure aussehen - wir sehen Id
in Bezug auf functor
definiert:
(defprotocol Functor
(fmap [functor f] "fmap :: f a -> (a -> b) -> f b"))
;; data Id a = Id { runId :: a }
(defrecord Id [runId]
Functor
(fmap [functor f]
(Id. (f (:runId functor)))))
So fühle ich mich wie ich etwas fehlt bin.
Die Definition von 'Id' in clojure entspricht dem Identitätsfunktor in Haskell. – bennofs