2,521 research outputs found

    The Racket Manifesto

    Get PDF
    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

    Full text link
    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

    Get PDF
    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

    Get PDF
    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

    Get PDF
    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
    • 

    corecore