helvm / helvm/helps

Development - refactor

Open
#32 0 comments 0 reactions 0 assignees View on GitHub
Dominant language
Haskell
Stars
6
Forks
0
PR merge metrics
No merged PRs in 30d

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

```haskell
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 a
```

Contributor guide

Open the contributing guide

Research direction

No source files, tests, or entry points are named. Start by reviewing the listed compiler projects and the backend and frontend stages to determine which single refactoring is in scope. Done should be defined as one agreed compiler split with an identified implementation location and verification step.

Written by the indexing model from the issue text.

Assessment

Tech stack
haskell
Domain
compilers
Issue type
Refactor
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
15/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.