Packages
doma_quark
2.3.3-doma
Common combinators for Elixir, forked by doma for maintenance and testing packagesets by doma.
Current section
Files
Jump to
Current section
Files
lib/quark.ex
defmodule Quark do
@moduledoc ~S"""
Top-level module. Provides a convenient `use` macro for importing the most
commonly used functions and macros.
Due to performance reasons, many of the combinators are given non-combinatory
implementations (ie: not everything is expressed in terms `s` and `k`)
"""
defmacro __using__(_) do
quote do
import unquote(__MODULE__)
import Quark.Curry
import Quark.Partial
import Quark.Pointfree
end
end
defdelegate compose(a), to: Quark.Compose
defdelegate compose(a, b), to: Quark.Compose
defdelegate fix(fun), to: Quark.FixedPoint
defdelegate flip(fun), to: Quark.BCKW
defdelegate constant(a, b), to: Quark.SKI
defdelegate id(a), to: Quark.SKI
defdelegate first(a, b), to: Quark.SKI
defdelegate second(a, b), to: Quark.SKI
defdelegate self_apply(a), to: Quark.M
defdelegate origin(a), to: Quark.Sequence
defdelegate succ(a), to: Quark.Sequence
defdelegate pred(a), to: Quark.Sequence
end