-
-
Notifications
You must be signed in to change notification settings - Fork 0
Open
Description
Split to:
- boot strap compiler compiled ghc
- self hosted compiler compiled simply Haskell self hosted
Quarters: Steps for backend:
- Full Haskell
- Reduced Haskell (System F)
- Untyped lambda
- Indexed lambda
- Terms
Terms:
- SKI
- SK
- SKIBCT
- SKIBCT and many others (APY)
- Shit: Simple Haskell Instruction Transpiler
Steps for frontend:
- function compiler: s -> (s, a)
- data compiler: State s a
- transformer compiler: StateT Maybe s a
- Alternative / MonadPlus / MonadError compiler: StateMonad m
- Choice / ArrowPlus / ArrowError Compiler: ArrowState s a
Projects to use:
- hs2lazy
- hs2bf
- compiler quest
- thih
- Interpreter for Nano (condensed version of Haskell)
- Micro Haskell
- MiniHaskell Compiler
- helium
- Hugs for functions dependencies
- MicroHs: Haskell 2010: still alive
Internal for self compiling
data World = (Stream , Stream)
# probably it will not work. we will have to use simpler structure
data IO a = StateT World (Either String) a
# data IO a = State World (Either String a)
# type IO a = World -> ((Either String a), World)
data Parser a = StateT String (Either String) a
# data Parser a = State String (Either String a)
# type Parser a = String -> ((Either String a , String)
data RIO e a = ReaderT e IO a
# data RIO e a = Reader e (IO a)
# type RIO e a = e -> IO aReactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels