Practical foundations for programming languages /

"This book offers a fresh perspective on the fundamentals of programming languages through the use of type theory"

Detalhes bibliográficos
Autor principal: 572691 Harper, Robert
Formato:
Idioma:eng
Publicado em: Cambridge : Cambridge University Press, 2013
Assuntos:
_version_ 1826458296088788992
author 572691 Harper, Robert
author_facet 572691 Harper, Robert
author_sort 572691 Harper, Robert
collection OCEAN
description "This book offers a fresh perspective on the fundamentals of programming languages through the use of type theory"
first_indexed 2024-03-05T13:49:37Z
format
id KOHA-OAI-TEST:506478
institution Universiti Teknologi Malaysia - OCEAN
language eng
last_indexed 2024-03-05T13:49:37Z
publishDate 2013
publisher Cambridge : Cambridge University Press,
record_format dspace
spelling KOHA-OAI-TEST:5064782020-12-19T17:18:45ZPractical foundations for programming languages / 572691 Harper, Robert Cambridge : Cambridge University Press,2013eng"This book offers a fresh perspective on the fundamentals of programming languages through the use of type theory" "Syntactic Objects Programming languages are languages, a means of expressing computations in a form comprehensible to both people and machines. The syntax of a language specifies the means by which various sorts of phrases (expressions, commands, declarations, and so forth) may be combined to form programs. But what sort of thing are these phrases? What is a program made of? The informal concept of syntax may be seen to involve several distinct concepts. The surface, or concrete, syntax is concerned with how phrases are entered and displayed on a computer. The surface syntax is usually thought of as given by strings of characters from some alphabet (say, ASCII or Unicode). The structural, or abstract, syntax is concerned with the struc- 4 1.1 Abstract Syntax Trees ture of phrases, specifically how they are composed from other phrases. At this level a phrase is a tree, called an abstract syntax tree, whose nodes are operators that combine several phrases to form another phrase. The binding structure of syntax is concerned with the introduction and use of identifiers: how they are declared, and how declared identifiers are to be used. At this level phrases are abstract binding trees, which enrich abstract syntax trees with the concepts of binding and scope. We will not concern ourselves in this book with matters of concrete syntax, but will instead work at the level of abstract syntax. To prepare the ground for the rest of the book, we begin in this chapter by definin-ing abstract syntax trees and abstract binding trees and some functions and relations associated with them. The definitions are a bit technical, but are absolutely fundamental to what follows. It is probably best to skim this chapter on first reading, returning to it only as the need arises"Includes bibliographical references :p. [457]-463 and index.Machine generated contents note: Part I. Judgments and Rules: 1. Inductive definitions -- 2. Hypothetical judgments -- 3. Syntactic objects -- 4. Generic judgments; Part II. Levels of Syntax -- 5. Concrete syntax -- 6. Abstract syntax; Part III. Statics and Dynamics -- 7. Statics; 8. Dynamics -- 9. Type safety -- 10. Evaluation dynamics; Part IV. Function Types: 11. Function definitions and values -- 12. Godel's system T -- 13. Plotkin's PCF; Part V. Finite Data Types: 14. Product types; 15. Sum patterns -- 16. Pattern matching -- 17. Generic programming; Part VI. Infinite Data Types: 18. Inductive and co-inductive types; 19. Recursive types; Part VII. Dynamic Types -- 20. The untyped 1-calculus -- 21. Dynamic typing -- 22. Hybrid typing; Part VIII. Variable Types: 23. Girard's system F -- 24. Abstract types -- 25. Constructors and kinds; 26. Indexed families of types; Part IX. Subtyping -- 27. Subtyping -- 28. Singleton and dependent kinds; Part X. Classes and Methods: 29. Dynamic dispatch; 30. Inheritance; Part XI. Control Effects: 31. Control stacks -- 32. Exceptions -- 33. Continuations; Part XII. Types and Propositions -- 34. Constructive logic -- 35. Classical logic; Part XIII. Symbols -- 36. Symbols; 37. Fluid binding -- 38. Dynamic classification; Part XIV. Storage Effects -- 39. Modernized algol -- 40. Mutable data structures; Part XV. Laziness -- 41. Lazy evaluation -- 42. Polarization; Part XVI. Parallelism -- 43. Nested parallelism -- 44. Futures and speculation; Part XVII. Concurrency -- 45. Process calculus -- 46. Current algol -- 47. Distributed algol; Part XVIII. Modularity -- 48. Separate compilation and linking -- 49. Basic modules -- 50. Parameterized modules; Part XIX. Equivalence -- 51. Equational reasoning for T -- 52. Equational reasoning for PCF -- 53. Parametricity."This book offers a fresh perspective on the fundamentals of programming languages through the use of type theory" "Syntactic Objects Programming languages are languages, a means of expressing computations in a form comprehensible to both people and machines. The syntax of a language specifies the means by which various sorts of phrases (expressions, commands, declarations, and so forth) may be combined to form programs. But what sort of thing are these phrases? What is a program made of? The informal concept of syntax may be seen to involve several distinct concepts. The surface, or concrete, syntax is concerned with how phrases are entered and displayed on a computer. The surface syntax is usually thought of as given by strings of characters from some alphabet (say, ASCII or Unicode). The structural, or abstract, syntax is concerned with the struc- 4 1.1 Abstract Syntax Trees ture of phrases, specifically how they are composed from other phrases. At this level a phrase is a tree, called an abstract syntax tree, whose nodes are operators that combine several phrases to form another phrase. The binding structure of syntax is concerned with the introduction and use of identifiers: how they are declared, and how declared identifiers are to be used. At this level phrases are abstract binding trees, which enrich abstract syntax trees with the concepts of binding and scope. We will not concern ourselves in this book with matters of concrete syntax, but will instead work at the level of abstract syntax. To prepare the ground for the rest of the book, we begin in this chapter by definin-ing abstract syntax trees and abstract binding trees and some functions and relations associated with them. The definitions are a bit technical, but are absolutely fundamental to what follows. It is probably best to skim this chapter on first reading, returning to it only as the need arises"PSZJBLProgramming languages (Electronic computers)URN:ISBN:9781107029576 (hbk.)
spellingShingle Programming languages (Electronic computers)
572691 Harper, Robert
Practical foundations for programming languages /
title Practical foundations for programming languages /
title_full Practical foundations for programming languages /
title_fullStr Practical foundations for programming languages /
title_full_unstemmed Practical foundations for programming languages /
title_short Practical foundations for programming languages /
title_sort practical foundations for programming languages
topic Programming languages (Electronic computers)
work_keys_str_mv AT 572691harperrobert practicalfoundationsforprogramminglanguages