init
This commit is contained in:
50
app/Main.hs
Normal file
50
app/Main.hs
Normal 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!"
|
||||
|
||||
Reference in New Issue
Block a user