2 The Prelude
(require algebraic/prelude) | package: algebraic |
The bindings documented in this section are provided by algebraic/prelude and algebraic/racket/base. These functions and function aliases add consistency to the functional Racket programming experience and encourage compact code. They are used extensively throughout the collection.
In addition to the bindings documented below, this module re-provides Racket’s const and negate functions.
2.1 Functions
syntax
(values-> f expr)
procedure
(flip f) → procedure?
f : procedure?
procedure
(twice f) → procedure?
f : procedure?
procedure
f : procedure? x : any/c
Equivalent to (λ (f x ...) ($ f (list x ...))).
procedure
(>> f x ...) → procedure?
f : procedure? x : any/c
The >> function does not self-curry. Use >>* to
procedure
(<< f x ...) → procedure?
f : procedure? x : any/c
The << function, unlike curryr, is not self-curried.
procedure
(>>* f) → (-> any/c ... procedure?)
f : procedure?
Equivalent to (curry f).
procedure
(<<* f) → (-> any/c ... procedure?)
f : procedure?
Equivalent to (curryr f).
value
id : procedure? = values
value
:: : procedure? = cons
value
::* : procedure? = list*
value
++ : procedure? = append
value
.. : procedure? = compose
value
&& : procedure? = conjoin
value
|| : procedure? = disjoin
value
$ : procedure? = apply
2.2 Lists
procedure
(free-member-of x ...) → (-> identifier? (or/c list? #f))
x : identifier?
> ((free-member-of #'x #'y) #'x) '(#<syntax:eval:13:0 x> #<syntax:eval:13:0 y>)
> ((free-member-of #'x #'y) #'a) #f