Define Term Language
- Dominant language
- Haskell
- Stars
- 1
- Forks
- 2
- PR merge metrics
- No merged PRs in 30d
Description
Currently, the term language is this:
```haskell
data Term a
= Var a {-# UNPACK #-} !Text
-- ^ named variable
| Let a {-# UNPACK #-} !Text (Type a) (Term a)
-- ^ let bindings. Note: 'let x:y = m in n' desugars to
-- (\x:y -> n) m, hence we just make use of lam and app
| App a (NonEmpty (Term a)) (Term a)
-- ^ β-reduction
| Fun a FunPosition (Type a) (Term a)
-- ^ function terms
| Lit a (Literal a)
-- ^ constant terms
| Annot a (Term a) (Type a)
-- ^ type annotation
| Row a RowSort (Type a) (HashMap Text (Term a))
-- ^ row terms as used in bindings, schema/table decls
-- In practice there is a semantic difference between declaring a row
-- and binding var names to row entries
| Error a (Type a)
-- ^ the type of error terms
deriving (Show, Functor, Generic, NFData)
```
What else should we add or consider before calling it a day? Performance optimization suggestions?
Contributor guide
No contributing guide indexed for this repository
Research direction
Start with the Term definition shown in the issue and review the related Type, Row, Literal, and FunPosition representations. Compare the current constructors with the intended Pact 4.0 language requirements, then evaluate the requested performance considerations. Done requires an agreed Term design and a documented decision about any additions or optimizations.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- haskell
- Domain
- compilers
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Stale
- Clarity
- Needs clarification
- Newbie friendliness
- 25/100