import type { Semigroup } from "@principia/prelude";
import * as A from "../Array";
import type { NonEmptyArray } from "./model";
/**
* ```haskell
* fold :: Semigroup s => s a -> NonEmptyArray a -> a
* ```
*/
export const fold = (S: Semigroup) => (as: NonEmptyArray): A => A.reduce_(as.slice(1), as[0], S.combine_);