2017
DOI: 10.1007/978-3-319-63139-4_6
|View full text |Cite
|
Sign up to set email alerts
|

A New Functional-Logic Compiler for Curry: Sprite

Abstract: Abstract. We introduce a new native code compiler for Curry codenamed Sprite. Sprite is based on the Fair Scheme, a compilation strategy that provides instructions for transforming declarative, non-deterministic programs of a certain class into imperative, deterministic code. We outline salient features of Sprite, discuss its implementation of Curry programs, and present benchmarking results. Sprite is the first-to-date operationally complete implementation of Curry. Preliminary results show that ensuring this… Show more

Help me understand this report

Search citation statements

Order By: Relevance

Paper Sections

Select...
1
1
1
1

Citation Types

0
7
0

Year Published

2019
2019
2023
2023

Publication Types

Select...
4
4

Relationship

1
7

Authors

Journals

citations
Cited by 10 publications
(7 citation statements)
references
References 21 publications
0
7
0
Order By: Relevance
“…The intermediate language ICurry [Antoy, Hanus, et al, 2020] is intended to compile Curry into imperative target languages. It has been used to translate Curry to LLVM code [Antoy and Jost, 2016], to C or Python programs [Wittorf, 2018], and to Julia programs [Hanus and Teegen, 2021]. A recent implementation, called Curry2Go 1 , compiles ICurry programs into Go 2 programs.…”
Section: Comparing Search Strategiesmentioning
confidence: 99%
“…The intermediate language ICurry [Antoy, Hanus, et al, 2020] is intended to compile Curry into imperative target languages. It has been used to translate Curry to LLVM code [Antoy and Jost, 2016], to C or Python programs [Wittorf, 2018], and to Julia programs [Hanus and Teegen, 2021]. A recent implementation, called Curry2Go 1 , compiles ICurry programs into Go 2 programs.…”
Section: Comparing Search Strategiesmentioning
confidence: 99%
“…2, the calltime choice semantics requires to share the values of non-deterministic arguments in a computation. We can implement this requirement by adding identifiers to choices and associating a "fingerprint" [11] to each task. A fingerprint is a (partial) mapping from choice identifiers to choice alternatives (Left or Right).…”
Section: Pull-tabbingmentioning
confidence: 99%
“…ICurry [9] is an intermediate language intended to translate Curry programs into imperative target languages. It has been used to translate Curry to LLVM code [11] and to C or Python programs [30]. The operational semantics of ICurry is specified in [9] by an abstract machine which performs pull-tab steps and uses a graph structure to represent expressions with sharing and a queue of tasks, where each task has its own fingerprint to implement the selection of consistent choices.…”
Section: Related Workmentioning
confidence: 99%
See 1 more Smart Citation
“…The translation into JSON is used by Sprite [9], a Curry system under development, whose target language is C ++ . The JSON format is more convenient when the client of ICurry code is not coded in Curry.…”
Section: Icurry Usementioning
confidence: 99%

ICurry

Antoy,
Hanus,
Jost
et al. 2019
Preprint
Self Cite