Curry: An Integrated Functional Logic Language
Curry: An Integrated Functional Logic Language
Curry: An Integrated Functional Logic Language
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
Contents<br />
1 Introduction 3<br />
2 Programs 3<br />
2.1 Datatype Declarations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3<br />
2.2 Type Synonym Declarations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4<br />
2.3 Function Declarations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5<br />
2.3.1 Functions vs. Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6<br />
2.3.2 Conditional Equations with Boolean Guards . . . . . . . . . . . . . . . . . . 7<br />
2.4 Local Declarations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7<br />
2.5 Free Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9<br />
2.6 Constraints and Equality . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10<br />
2.7 Higher-order Features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11<br />
3 Operational Semantics 12<br />
4 Types 14<br />
4.1 Built-in Types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14<br />
4.1.1 Boolean Values . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14<br />
4.1.2 Constraints . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15<br />
4.1.3 Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16<br />
4.1.4 Integers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16<br />
4.1.5 Floating Point Numbers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17<br />
4.1.6 Lists . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17<br />
4.1.7 Characters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17<br />
4.1.8 Strings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18<br />
4.1.9 Tuples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18<br />
4.2 Type System . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18<br />
5 Expressions 20<br />
5.1 Arithmetic Sequences . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20<br />
5.2 List Comprehensions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21<br />
5.3 Case Expressions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22<br />
6 Modules 23<br />
7 Input/Output 27<br />
7.1 Monadic I/O . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27<br />
7.2 Do Notation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28<br />
8 Encapsulated Search 29<br />
8.1 Search Goals and Search Operators . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29<br />
8.2 Local Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31<br />
8.3 Predefined Search Operators . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32<br />
8.4 Choice . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33<br />
1