effekt-lang / effekt-lang/effekt

Refactoring: Extract operation parameters

Open
#364 2 comments 1 reaction 0 assignees View on GitHub
refactoring
Dominant language
Scala
Stars
469
Forks
41
Avg merge
1d 16h
Merged PRs (30d)
23

Description

With the addition of block parameters to operations with #361, it might be worthwhile to extract the operation parameters into its own class for better readability:

```scala
case BlockLiteral(tparams: List[Id], vparams: List[ValueParam], bparams: List[BlockParam], body: Stmt)
...
case class Operation(id: IdDef, tparams: List[Id], vparams: List[ValueParam], bparams: List[BlockParam], ret: Effectful) extends Definition
...
case class OpClause(id: IdRef, tparams: List[Id], vparams: List[ValueParam], bparams: List[BlockParam], ret: Option[Effectful], body: Stmt, resume: IdDef) extends Reference
...
case FunDef(id: IdDef, tparams: List[Id], vparams: List[ValueParam], bparams: List[BlockParam], ret: Option[Effectful], body: Stmt)
...
case ExternDef(capture: CaptureSet, id: IdDef, tparams: List[Id], vparams: List[ValueParam], bparams: List[BlockParam], ret: Effectful, body: Template[Term]) extends Def
```

to

```scala
case BlockLiteral(params: Params, body: Stmt)
...
case class Operation(id: IdDef, params: Params, ret: Effectful) extends Definition
...
case class OpClause(id: IdRef, params: Params, ret: Option[Effectful], body: Stmt, resume: IdDef) extends Reference
...
case FunDef(id: IdDef, params: Params, ret: Option[Effectful], body: Stmt)
...
case ExternDef(capture: CaptureSet, id: IdDef, params: Params, ret: Effectful, body: Template[Term]) extends Def
...
case class Params(tparams: List[Id], vparams: List[ValueParam], bparams: List[BlockParam])
```

Contributor guide

No contributing guide indexed for this repository

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.