-- SPDX-FileCopyrightText: 2021 Oxhead Alpha
-- SPDX-License-Identifier: LicenseRef-MIT-OA

-- | This module essentially replaces the default "Prelude" with "Universum".
--
-- It works because we are using the @base-noprelude@ package instead of @base@.

module Prelude
  ( module Control.Lens
  , module Universum
  , for
  -- * Converters from @Integral@ types
  , module FromIntegral
  -- * Overloaded boolean operators
  , module Boolean
  -- * Unsafe conversions
  , Unsafe.fromInteger
  -- * Safer @show@
  , module Show
  -- * Oddly sized @Word@ types
  , module Word

  -- * Re-exports
  , Unsafe.unsafe
  , Unsafe.unsafeM
  ) where

import Control.Lens
  (Lens, Lens', Traversal, Traversal', _1, _2, _3, _4, _5, over, preuse, preview, set, use, view,
  (%~), (&), (.~), (<&>), (^.), (^..), (^?))
import Data.Traversable (for)
import Morley.Prelude.Boolean as Boolean
import Morley.Prelude.FromIntegral as FromIntegral
import Morley.Prelude.Show as Show
import Morley.Prelude.Word as Word
import Universum hiding
  (Key, Lens, Lens', Nat, Traversal, Traversal', Val, _1, _2, _3, _4, _5, fromInteger, fromIntegral,
  over, preuse, preview, readFile, set, show, use, view, writeFile, (%~), (&&), (&), (.~), (<&>),
  (^.), (^..), (^?), (||))
import Unsafe qualified (fromInteger, unsafe, unsafeM)