ghc-experimental 9.1003.0 → 9.1201.0
raw patch · 4 files changed
+69/−8 lines, 4 filesdep ~basedep ~ghc-internaldep ~ghc-prim
Dependency ranges changed: base, ghc-internal, ghc-prim
Files
- ghc-experimental.cabal +8/−7
- src/Data/Tuple/Experimental.hs +1/−1
- src/GHC/TypeLits/Experimental.hs +24/−0
- src/GHC/TypeNats/Experimental.hs +36/−0
ghc-experimental.cabal view
@@ -6,7 +6,7 @@ name: ghc-experimental -- The project is ghc's version plus ghc-experimental's version suffix. -- For example, for ghc=9.10.1, ghc-experimental's version will be 9.1001.0.-version: 9.1003.0+version: 9.1201.0 synopsis: Experimental features of GHC's standard library description: This package is where experimental GHC standard library interfaces start@@ -29,17 +29,18 @@ library import: warnings exposed-modules:+ Data.Sum.Experimental+ Data.Tuple.Experimental GHC.PrimOps GHC.Profiling.Eras- Data.Tuple.Experimental- Data.Sum.Experimental+ GHC.TypeLits.Experimental+ GHC.TypeNats.Experimental Prelude.Experimental if arch(wasm32) exposed-modules: GHC.Wasm.Prim other-extensions:- build-depends: base ^>=4.20,- ghc-internal == 9.1003.*,- ghc-prim >= 0.11 && < 0.13+ build-depends: base >=4.20 && < 4.22,+ ghc-internal == 9.1201.*,+ ghc-prim >= 0.11 && < 0.14 hs-source-dirs: src default-language: Haskell2010- ghc-options: -this-unit-id ghc-experimental
src/Data/Tuple/Experimental.hs view
@@ -21,7 +21,7 @@ -- * Unboxed tuples Unit#,- Solo#,+ Solo#(..), Tuple0#, Tuple1#, Tuple2#,
+ src/GHC/TypeLits/Experimental.hs view
@@ -0,0 +1,24 @@+{-# LANGUAGE DataKinds #-}+{-# LANGUAGE NoStarIsType #-}+{-# LANGUAGE TypeOperators #-}+module GHC.TypeLits.Experimental (+ appendSSymbol,+ consSSymbol,+ sCharToSNat,+ sNatToSChar,+) where++import GHC.Internal.TypeLits+import Data.Char (ord, chr)++appendSSymbol :: SSymbol a -> SSymbol b -> SSymbol (AppendSymbol a b)+appendSSymbol (UnsafeSSymbol a) (UnsafeSSymbol b) = UnsafeSSymbol (a ++ b)++consSSymbol :: SChar a -> SSymbol b -> SSymbol (ConsSymbol a b)+consSSymbol (UnsafeSChar a) (UnsafeSSymbol b) = UnsafeSSymbol (a : b)++sCharToSNat :: SChar a -> SNat (CharToNat a)+sCharToSNat (UnsafeSChar a) = UnsafeSNat (fromIntegral (ord a))++sNatToSChar :: (n <= 1114111) => SNat n -> SChar (NatToChar n)+sNatToSChar (UnsafeSNat n) = UnsafeSChar (chr (fromIntegral n))
+ src/GHC/TypeNats/Experimental.hs view
@@ -0,0 +1,36 @@+{-# LANGUAGE DataKinds #-}+{-# LANGUAGE NoStarIsType #-}+{-# LANGUAGE TypeOperators #-}+module GHC.TypeNats.Experimental (+ plusSNat,+ timesSNat,+ powerSNat,+ minusSNat,+ divSNat,+ modSNat,+ log2SNat,+) where++import GHC.Internal.TypeNats+import GHC.Num.Natural (naturalLog2)++plusSNat :: SNat n -> SNat m -> SNat (n + m)+plusSNat (UnsafeSNat n) (UnsafeSNat m) = UnsafeSNat (n + m)++timesSNat :: SNat n -> SNat m -> SNat (n * m)+timesSNat (UnsafeSNat n) (UnsafeSNat m) = UnsafeSNat (n * m)++powerSNat :: SNat n -> SNat m -> SNat (n ^ m)+powerSNat (UnsafeSNat n) (UnsafeSNat m) = UnsafeSNat (n ^ m)++minusSNat :: (m <= n) => SNat n -> SNat m -> SNat (n - m)+minusSNat (UnsafeSNat n) (UnsafeSNat m) = UnsafeSNat (n - m)++divSNat :: (1 <= m) => SNat n -> SNat m -> SNat (Div n m)+divSNat (UnsafeSNat n) (UnsafeSNat m) = UnsafeSNat (div n m)++modSNat :: (1 <= m) => SNat n -> SNat m -> SNat (Mod n m)+modSNat (UnsafeSNat n) (UnsafeSNat m) = UnsafeSNat (mod n m)++log2SNat :: (1 <= n) => SNat n -> SNat (Log2 n)+log2SNat (UnsafeSNat n) = UnsafeSNat (fromIntegral (naturalLog2 n))