This commit is contained in:
2026-04-24 14:46:10 -06:00
commit 0ab53a25a7
8 changed files with 836 additions and 0 deletions

50
app/Main.hs Normal file
View File

@@ -0,0 +1,50 @@
{-# LANGUAGE RequiredTypeArguments #-}
{-# LANGUAGE TypeFamilies #-}
module Main
(main)
where
import Language.QBE
import Data.Text qualified as T
import Data.Text (Text)
import Effectful.State.Static.Local
import Effectful
import Data.List (List)
import Data.Proxy (Proxy (Proxy))
import GHC.TypeLits
type Name = Text
data Expr
= Var Name
| App Expr (List Expr)
| Lam Name Expr
| Progn (List Expr)
| UsePrim Prim
deriving (Show)
data Prim = PrimAdd | PrimSub | PrimMul | PrimDiv
deriving (Show)
type Unique = State Int
type family SigilChar (s :: Sigil) :: Char where
SigilChar AggregateTy = ':'
SigilChar Global = '$'
SigilChar Temporary = '%'
SigilChar Label = '@'
hmm :: forall (s :: Sigil). Proxy s -> Proxy (SigilChar s)
hmm Proxy = Proxy
sigilChar :: forall (s :: Sigil). Proxy s -> Char
-- sigilChar x = charVal (hmm x)
sigilChar x = _
unique :: forall s es. (Unique :> es) => Eff es (Ident s)
unique = _
main :: IO ()
main = putStrLn "Hello, Haskell!"