{- | Copyright: (c) 2018-2020 Kowainik SPDX-License-Identifier: MPL-2.0 Maintainer: Kowainik <xrom.xkov@gmail.com> This module implements smart constructors for creating values of type 'Memory'. -} module Membrain.Constructors ( -- * Smart constructors bit , nibble , byte , kilobyte , megabyte , gigabyte , terabyte , petabyte , exabyte , zettabyte , yottabyte , kibibyte , mebibyte , gibibyte , tebibyte , pebibyte , exbibyte , zebibyte , yobibyte ) where import GHC.Natural (Natural) import Membrain.Memory (Memory (..), memory) import Membrain.Units (Bit, Byte, Exabyte, Exbibyte, Gibibyte, Gigabyte, Kibibyte, Kilobyte, Mebibyte, Megabyte, Nibble, Pebibyte, Petabyte, Tebibyte, Terabyte, Yobibyte, Yottabyte, Zebibyte, Zettabyte) {- $setup >>> import Membrain -} {- | Creates 'Memory' in 'Bit's from given 'Natural' as the number of bits. >>> showMemory $ bit 42 "42b" -} bit :: Natural -> Memory Bit bit = Memory {-# INLINE bit #-} {- | Creates 'Memory' in 'Nibble's from given 'Natural' as the number of nibbles. >>> showMemory $ nibble 42 "42n" -} nibble :: Natural -> Memory Nibble nibble = memory {-# INLINE nibble #-} {- | Creates 'Memory' in 'Byte's from given 'Natural' as the number of bytes. >>> showMemory $ byte 42 "42B" -} byte :: Natural -> Memory Byte byte = memory {-# INLINE byte #-} {- | Creates 'Memory' in 'Kilobyte's from given 'Natural' as the number of kilobytes. >>> showMemory $ kilobyte 42 "42kB" -} kilobyte :: Natural -> Memory Kilobyte kilobyte = memory {-# INLINE kilobyte #-} {- | Creates 'Memory' in 'Megabyte's from given 'Natural' as the number of megabytes. >>> showMemory $ megabyte 42 "42MB" -} megabyte :: Natural -> Memory Megabyte megabyte = memory {-# INLINE megabyte #-} {- | Creates 'Memory' in 'Gigabyte's from given 'Natural' as the number of gigabytes. >>> showMemory $ gigabyte 42 "42GB" -} gigabyte :: Natural -> Memory Gigabyte gigabyte = memory {-# INLINE gigabyte #-} {- | Creates 'Memory' in 'Terabyte's from given 'Natural' as the number of terabytes. >>> showMemory $ terabyte 42 "42TB" -} terabyte :: Natural -> Memory Terabyte terabyte = memory {-# INLINE terabyte #-} {- | Creates 'Memory' in 'Petabyte's from given 'Natural' as the number of petabytes. >>> showMemory $ petabyte 42 "42PB" -} petabyte :: Natural -> Memory Petabyte petabyte = memory {-# INLINE petabyte #-} {- | Creates 'Memory' in 'Exabyte's from given 'Natural' as the number of exabytes. >>> showMemory $ exabyte 42 "42EB" -} exabyte :: Natural -> Memory Exabyte exabyte = memory {-# INLINE exabyte #-} {- | Creates 'Memory' in 'Zettabyte's from given 'Natural' as the number of zettabytes. >>> showMemory $ zettabyte 42 "42ZB" -} zettabyte :: Natural -> Memory Zettabyte zettabyte = memory {-# INLINE zettabyte #-} {- | Creates 'Memory' in 'Yottabyte's from given 'Natural' as the number of yottabytes. >>> showMemory $ yottabyte 42 "42YB" -} yottabyte :: Natural -> Memory Yottabyte yottabyte = memory {-# INLINE yottabyte #-} {- | Creates 'Memory' in 'Kibibyte's from given 'Natural' as the number of kibibytes. >>> showMemory $ kibibyte 42 "42KiB" -} kibibyte :: Natural -> Memory Kibibyte kibibyte = memory {-# INLINE kibibyte #-} {- | Creates 'Memory' in 'Mebibyte's from given 'Natural' as the number of mebibytes. >>> showMemory $ mebibyte 42 "42MiB" -} mebibyte :: Natural -> Memory Mebibyte mebibyte = memory {-# INLINE mebibyte #-} {- | Creates 'Memory' in 'Gibibyte's from given 'Natural' as the number of gibibytes. >>> showMemory $ gibibyte 42 "42GiB" -} gibibyte :: Natural -> Memory Gibibyte gibibyte = memory {-# INLINE gibibyte #-} {- | Creates 'Memory' in 'Tebibyte's from given 'Natural' as the number of tebibytes. >>> showMemory $ tebibyte 42 "42TiB" -} tebibyte :: Natural -> Memory Tebibyte tebibyte = memory {-# INLINE tebibyte #-} {- | Creates 'Memory' in 'Pebibyte's from given 'Natural' as the number of pebibytes. >>> showMemory $ pebibyte 42 "42PiB" -} pebibyte :: Natural -> Memory Pebibyte pebibyte = memory {-# INLINE pebibyte #-} {- | Creates 'Memory' in 'Exbibyte's from given 'Natural' as the number of exbibytes. >>> showMemory $ exbibyte 42 "42EiB" -} exbibyte :: Natural -> Memory Exbibyte exbibyte = memory {-# INLINE exbibyte #-} {- | Creates 'Memory' in 'Zebibyte's from given 'Natural' as the number of zebibytes. >>> showMemory $ zebibyte 42 "42ZiB" -} zebibyte :: Natural -> Memory Zebibyte zebibyte = memory {-# INLINE zebibyte #-} {- | Creates 'Memory' in 'Yobibyte's from given 'Natural' as the number of yobibytes. >>> showMemory $ yobibyte 42 "42YiB" -} yobibyte :: Natural -> Memory Yobibyte yobibyte = memory {-# INLINE yobibyte #-}