You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: README.md
+4Lines changed: 4 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -2,6 +2,8 @@
2
2
3
3
CP is a *compositional programming* language, founded on a core calculus named *Fi+*. The next-gen CP is shipped with more features and implemented in [PureScript](https://www.purescript.org) (a Haskell-like language that compiles to JavaScript).
4
4
5
+
A crash course in CP can be found in Chapter 3 of Yaozhu Sun's PhD thesis [*Compositional Programming in Action*](https://github.com/yzyzsun/PhD-thesis/blob/main/Thesis.pdf).
6
+
5
7
## Language Features
6
8
7
9
- A typed lambda calculus with five base types (`Int``Double``String``Bool``()`), built-in arrays (`[1; 2; 3] : [Int]`), and references[^Ref];
@@ -12,6 +14,7 @@ CP is a *compositional programming* language, founded on a core calculus named *
12
14
- Generalized record operations with type difference[^TypeDiff];
13
15
- Named and optional arguments via a blend of intersection and union types[^IU];
14
16
- Type-directed operational semantics for *Fi+*[^Fi+] with {HOAS,substitution,closure}-based {big,small}-step variants;
17
+
- A compiler targeting JavaScript, which features type-safe compilation of dynamic inheritance[^Comp];
15
18
- A compositionally embedded DSL for document authoring called ExT[^ExT].
16
19
17
20
[^Merge]: Jana Dunfield. [Elaborating Intersection and Union Types](https://research.cs.queensu.ca/home/jana/papers/intcomp-jfp/Dunfield14_elaboration.pdf). *JFP 2014*.
@@ -26,6 +29,7 @@ CP is a *compositional programming* language, founded on a core calculus named *
26
29
[^TypeDiff]: Han Xu, Xuejing Huang, and Bruno C. d. S. Oliveira. [Making a Type Difference](https://i.cs.hku.hk/~bruno/papers/popl23making.pdf). *POPL 2023*.
27
30
[^Ref]: Wenjia Ye, Yaozhu Sun, and Bruno C. d. S. Oliveira. [Imperative Compositional Programming](https://i.cs.hku.hk/~bruno/papers/oopsla24_imperative.pdf). *OOPSLA 2024*.
28
31
[^IU]: Yaozhu Sun and Bruno C. d. S. Oliveira. [Named Arguments as Intersections, Optional Arguments as Unions](https://i.cs.hku.hk/~bruno/papers/esop25named.pdf). *ESOP 2025*.
32
+
[^Comp]: Yaozhu Sun, Xuejing Huang, and Bruno C. d. S. Oliveira. [Type-Safe Compilation of Dynamic Inheritance via Merging](https://yzsun.me/files/CPC-draft.pdf). Unpublished.
0 commit comments