summaryrefslogtreecommitdiff
path: root/src/Data.hs
diff options
context:
space:
mode:
authorTom Smeding <tom@tomsmeding.com>2025-03-26 15:11:48 +0100
committerTom Smeding <tom@tomsmeding.com>2025-03-26 15:11:48 +0100
commita00234388d1b4e14481067d030bf90031258b756 (patch)
tree501b6778fc5779ce220aba1e22f56ae60f68d970 /src/Data.hs
parent7971f6dff12bc7b66a5d4ae91a6791ac08872c31 (diff)
D2[Array] now has a Maybe instead of zero-size for zero
Remaining problem: 'add' in Compile doesn't use the D2 stuff
Diffstat (limited to 'src/Data.hs')
-rw-r--r--src/Data.hs5
1 files changed, 5 insertions, 0 deletions
diff --git a/src/Data.hs b/src/Data.hs
index 60afdd0..e7b3148 100644
--- a/src/Data.hs
+++ b/src/Data.hs
@@ -11,6 +11,7 @@
module Data (module Data, (:~:)(Refl)) where
import Data.Functor.Product
+import Data.Some
import Data.Type.Equality
import Unsafe.Coerce (unsafeCoerce)
@@ -85,6 +86,10 @@ unSNat :: SNat n -> Nat
unSNat SZ = Z
unSNat (SS n) = S (unSNat n)
+reSNat :: Nat -> Some SNat
+reSNat Z = Some SZ
+reSNat (S n) | Some n' <- reSNat n = Some (SS n')
+
fromNat :: Nat -> Int
fromNat Z = 0
fromNat (S m) = succ (fromNat m)