Liking cljdoc? Tell your friends :D

robertluo.fun-map

fun-map Api

fun-map Api
raw docstring

closeableclj/s

(closeable r close-fn)

Returns a wrapped plain value, which implements IDref and Closeable, the close-fn is an effectual function with no argument.

When used inside a life cycle map, its close-fn when get called when closing the map.

Returns a wrapped plain value, which implements IDref and Closeable,
the close-fn is an effectual function with no argument.

When used inside a life cycle map, its close-fn when get called when
closing the map.
sourceraw docstring

fnkcljmacro

(fnk args & body)

A shortcut for fw macro. Returns a simple FunctionWrapper which depends on args key of the fun-map, it will focus on the keys also.

A shortcut for `fw` macro. Returns a simple FunctionWrapper which depends on
`args` key of the fun-map, it will *focus* on the keys also.
sourceraw docstring

fun-mapclj/s

(fun-map m & {:keys [trace-fn keep-ref]})

Returns a new fun-map.

A fun-map is a special map which will automatically unwrap a value if it's a wrapper when accessed by key. A wrapper is anything which wrapped a ordinary value inside. Many clojure data structures are wrapper, such as atom, ref, future, delay, agent etc. In fact, anything implements clojure.lang.IDRef interface is a wrapper.

FuntionWrapper is another wrapper can be used in a fun-map, which wraps a function, it will be called with the fun-map itself as the argument.

Map m is the underlying storage of a fun-map, fun-map does not change its property except accessing values.

Options:

  • ::trace-fn An Effectful function for globally FunctionWrapper calling trace which accept key and value as its argument.

Example:

(fun-map {:a 35 :b (delay (println "hello from b!"))}

Returns a new fun-map.

A fun-map is a special map which will automatically *unwrap* a value if it's a
wrapper when accessed by key. A wrapper is anything which wrapped a ordinary value
inside. Many clojure data structures are wrapper, such as atom, ref, future, delay,
agent etc. In fact, anything implements clojure.lang.IDRef interface is a wrapper.

FuntionWrapper is another wrapper can be used in a fun-map, which wraps a function,
it will be called with the fun-map itself as the argument.

Map m is the underlying storage of a fun-map, fun-map does not change its property
except accessing values.

Options:

 - ::trace-fn An Effectful function for globally FunctionWrapper calling trace which
   accept key and value as its argument.

Example:

  (fun-map {:a 35 :b (delay (println "hello from b!"))}
sourceraw docstring

fun-map?clj/s

(fun-map? m)

If m is a fun-map

If m is a fun-map
sourceraw docstring

fwcljmacro

(fw arg-map & body)

Returns a FunctionWrapper of an anonymous function defined by body.

Since a FunctionWrapper's function will be called with the map itself as the argument, this macro using a map arg-map as its argument. It follows the same syntax of clojure's associative destructure. You may use :keys, :as, :or inside.

Special key :wrappers specify additional wrappers of function wrapper:

  • [] for naive one, no cache, no trace.
  • default to specable cached traceable implementation. which supports special keys:
    • :focus A form that will be called to check if the function itself need to be called. It must be pure functional and very effecient.
    • :trace A trace function, if the value updated, it will be called with key and the function's return value.

Special option :par? true will make dependencies accessing parallel.

Example:

(fw {:keys [a b] :as m :trace (fn [k v] (println k v)) :focus (select-keys m [:a :b])} (+ a b))

Returns a FunctionWrapper of an anonymous function defined by body.

Since a FunctionWrapper's function will be called with the map itself as the
argument, this macro using a map `arg-map` as its argument. It follows the
same syntax of clojure's associative destructure. You may use `:keys`, `:as`,
`:or` inside.

Special key `:wrappers` specify additional wrappers of function wrapper:

 - `[]` for naive one, no cache, no trace.
 - default to specable cached traceable implementation. which supports special keys:
   - `:focus` A form that will be called to check if the function itself need
     to be called. It must be pure functional and very effecient.
   - `:trace` A trace function, if the value updated, it will be called with key
     and the function's return value.

Special option `:par? true` will make dependencies accessing parallel.

Example:

 (fw {:keys  [a b]
      :as    m
      :trace (fn [k v] (println k v))
      :focus (select-keys m [:a :b])}
   (+ a b))
sourceraw docstring

Haltableclj/sprotocol

Life cycle protocol, signature just like java.io.Closeable, being a protocol gives user ability to extend

Life cycle protocol, signature just like java.io.Closeable,
being a protocol gives user ability to extend

halt!clj/s

(halt! this)
sourceraw docstring

life-cycle-mapclj/s

(life-cycle-map m)

returns a fun-map can be shutdown orderly.

Any FunctionWrapper supports Closeable in this map will be considered as a component, its close method will be called in reversed order of its creation when the map itself closing.

Notice only accessed components will be shutdown.

returns a fun-map can be shutdown orderly.

Any FunctionWrapper supports `Closeable` in this map will be considered
as a component, its `close` method will be called in reversed order of its
creation when the map itself closing.

Notice only accessed components will be shutdown.
sourceraw docstring

lookupclj

(lookup f)

Returns a ILookup object for calling f on k

Returns a ILookup object for calling f on k
sourceraw docstring

touchclj/s

(touch m)

Forcefully evaluate all entries of a map and returns itself.

Forcefully evaluate all entries of a map and returns itself.
sourceraw docstring

cljdoc is a website building & hosting documentation for Clojure/Script libraries

× close