2,521 research outputs found
The Racket Manifesto
The creation of a programming language calls for guiding principles that point the developers to goals. This article spells out the three basic principles behind the 20-year development of Racket. First, programming is about stating and solving problems, and this activity normally takes place in a context with its own language of discourse; good programmers ought to formulate this language as a programming language. Hence, Racket is a programming language for creating new programming languages. Second, by following this language-oriented approach to programming, systems become multi-lingual collections of interconnected components. Each language and component must be able to protect its specific invariants. In support, Racket offers protection mechanisms to implement a full language spectrum, from C-level bit manipulation to soundly typed extensions. Third, because Racket considers programming as problem solving in the correct language, Racket also turns extra-linguistic mechanisms into linguistic constructs, especially mechanisms for managing resources and projects. The paper explains these principles and how Racket lives up to them, presents the evaluation framework behind the design process, and concludes with a sketch of Racket\u27s imperfections and opportunities for future improvements
Report on a User Test and Extension of a Type Debugger for Novice Programmers
A type debugger interactively detects the expressions that cause type errors.
It asks users whether they intend the types of identifiers to be those that the
compiler inferred. However, it seems that novice programmers often get in
trouble when they think about how to fix type errors by reading the messages
given by the type debugger. In this paper, we analyze the user tests of a type
debugger and report problems of the current type debugger. We then extend the
type debugger to address these problems. Specifically, we introduce
expression-specific error messages and language levels. Finally, we show type
errors that we think are difficult to explain to novice programmers. The
subjects of the user tests were 40 novice students belonging to the department
of information science at Ochanomizu University.Comment: In Proceedings TFPIE 2014, arXiv:1412.473
Community music: history and current practice, its constructions of âcommunityâ, digital turns and future soundings
The UK has been a pivotal national player within the development of community music practice. In the UK community music developed broadly from the 1960s and had a significant burgeoning period in the 1980s. Community music nationally and internationally has gone on to build a set of practices, a repertoire, an infrastructure of organisations, qualifications and career paths. There are elements of cultural and debatably pedagogic innovations in community music. These have to date only partly been articulated and historicised within academic research.
This document brings together and reviews research under the headings of history and definitions; practice; repertoire; community; pedagogy; digital technology; health and therapy; policy and funding, and impact and evaluation. A 90-entry, 22,000 word annotated bibliography was also produced (McKay and Higham 2011). An informed group of 15 practitioners and academics reviewed the authorsâ initial findings at a knowledge exchange colloquium and advised on further investigation. Some of the gaps in research identified are: an authoritative history, an examination of repertoire, the relationship with other music (practice), the freelance practitioner career, evidence of impact and value, the potential for a pedagogy
From Macros to DSLs: The Evolution of Racket
The Racket language promotes a language-oriented style of programming. Developers create many domain-specific languages, write programs in them, and compose these programs via Racket code. This style of programming can work only if creating and composing little languages is simple and effective. While Racket\u27s Lisp heritage might suggest that macros suffice, its design team discovered significant shortcomings and had to improve them in many ways. This paper presents the evolution of Racket\u27s macro system, including a false start, and assesses its current state
Protection costs, transaction costs,and economic theory
Contractual reductionism takes market exchange as the ubiquitous form of economic organization throughout history. Transactions costs are accordingly regarded as the costs of running any economic system in general. This paper explores the nature of protection/aggression costs as specific costs of coordination through coercion which should be distinguished from transaction costs. Protection/aggression costs play a crucial role in deciding the frontiers between the state and firms as well as their alliance and networking. Our study shows that externalization or internalization of the state-type activities of the enterprise hinges upon the amount of protection/aggression costs compared to the sum total of tax plus transaction costs.Protection/aggression costs, Transaction costs, Contractual reductionism, Coordination through coercion, external and internal enforcement
- âŠ