diff --git a/src/function.js b/src/function.js
index 1ef3e02..bea642e 100644
--- a/src/function.js
+++ b/src/function.js
@@ -1,6 +1,6 @@
import { curry, curryN } from './curry.js'
import { dispatch } from './fantasy-land.js'
-import { concat as iconcat, isIterable, iter, tail } from './list.js'
+import { head, concat as iconcat, isIterable, iter, tail } from './list.js'
/** @import { Fn, Morphism, InferredMorphism, Predicate } from './types.js' */
@@ -11,17 +11,6 @@ import { concat as iconcat, isIterable, iter, tail } from './list.js'
*/
export const id = x => x
-export const tap = curry((f, x) => {
- f(x)
- return x
-})
-
-/**
- * @param {...Fn} fns
- * @returns {(x: any) => any}
- */
-export const pipe = (...fns) => (...args) => tail(fns).reduce((v, f) => f(v), head(fns)(...args))
-
export const concat = dispatch(['fantasy-land/concat', 'concat'],
(b, a) => {
if (isIterable(a) || isIterable(b)) {
@@ -121,7 +110,6 @@ export const unless = curry(
* @template {Morphism} [F=Morphism]
* @typedef {(f: F, a: A) => B} StaticMorphism
*/
-
export const ap = dispatch(['fantasy-land/ap', 'ap'],
/**
* @template A, B
@@ -140,6 +128,8 @@ export const ap = dispatch(['fantasy-land/ap', 'ap'],
return [...xs]
})
+export const applyTo = flip(ap)
+
export const chain = dispatch(['fantasy-land/chain', 'chain'],
(f, a) => f(a)
)
@@ -167,3 +157,9 @@ export const tee = curry((f, x) => {
return x
})
+/**
+ * @param {...Fn} fns
+ * @returns {(x: any) => any}
+ */
+export const pipe = (...fns) => (...args) => reduce((v, f) => f(v), head(fns)(...args), tail(fns))
+