2016
DOI: 10.1145/3241625.2976015
|View full text |Cite
|
Sign up to set email alerts
|

High-performance client-side web applications through Haskell EDSLs

Abstract: We present Aplite, a domain-specific language embedded in Haskell for implementing performance-critical functions in client-side web applications. In Aplite, we apply partial evaluation, multi-stage programming and techniques adapted from machine code-targeting, high-performance EDSLs to the domain of web applications. We use Aplite to implement, among other benchmarks, procedural animation using Perlin noise, symmetrical encryption and K-means clustering, showing Aplite to be consistently faster than equivale… Show more

Help me understand this report

Search citation statements

Order By: Relevance

Paper Sections

Select...
1

Citation Types

0
2
0

Year Published

2019
2019
2020
2020

Publication Types

Select...
2

Relationship

0
2

Authors

Journals

citations
Cited by 2 publications
(2 citation statements)
references
References 17 publications
0
2
0
Order By: Relevance
“…A key concept behind ScalaLoci is that data transfer between tiers uses the reactive programming paradigm. Haste.App [11] is a Haskell EDSL allowing web applications to be written directly in Haskell. Since these are embedded DSLs or frameworks, it becomes possible to use the database functionality provided by other libraries, but are not aware of any work providing relational lenses as a library in any programming language.…”
Section: Related Workmentioning
confidence: 99%
“…A key concept behind ScalaLoci is that data transfer between tiers uses the reactive programming paradigm. Haste.App [11] is a Haskell EDSL allowing web applications to be written directly in Haskell. Since these are embedded DSLs or frameworks, it becomes possible to use the database functionality provided by other libraries, but are not aware of any work providing relational lenses as a library in any programming language.…”
Section: Related Workmentioning
confidence: 99%
“…P, R) ignores outputs(F) Set-Ignores (1) (12) set(λx . Q, R ′ ) ignores outputs(G) Set-Ignores (1)(13)T-Join-RL L j = join _ dl S 1 , S 2 as T ∈ {S 1 , S 2 } ⇔ {T }(6,7,11, 112,13) join M with N delete_left = Σ ⊎ ∆/L 1 ; L 2 ; L j /T def. • L 1 ; L2 ; L j ∈ Σ ⊎ ∆ ⇔ {T } T-Compose-RL □ C.3.4 Drop Lens.…”
mentioning
confidence: 99%