emilypi / emilypi/pact-core

Define Term Language

Open
#2 0 comments 0 reactions 0 assignees View on GitHub
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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.