160 research outputs found

    Migratory Typing: Ten Years Later

    Get PDF
    In this day and age, many developers work on large, untyped code repositories. Even if they are the creators of the code, they notice that they have to figure out the equivalent of method signatures every time they work on old code. This step is time consuming and error prone. Ten years ago, the two lead authors outlined a linguistic solution to this problem. Specifically they proposed the creation of typed twins for untyped programming languages so that developers could migrate scripts from the untyped world to a typed one in an incremental manner. Their programmatic paper also spelled out three guiding design principles concerning the acceptance of grown idioms, the soundness of mixed-typed programs, and the units of migration. This paper revisits this idea of a migratory type system as implemented for Racket. It explains how the design principles have been used to produce the Typed Racket twin and presents an assessment of the project\u27s status, highlighting successes and failures

    Well-Typed Programs Can’t Be Blamed

    Get PDF
    We introduce the blame calculus, which adds the notion of blame from Findler and Felleisen’s contracts to a system similar to Siek and Taha’s gradual types and Flanagan’s hybrid types. We characterise where positive and negative blame can arise by decomposing the usual notion of subtype into positive and negative subtypes, and show that these recombine to yield naive subtypes. Naive subtypes previously appeared in type systems that are unsound, but we believe this is the first time naive subtypes play a role in establishing type soundness

    A Simple and Practical Approach to Unit Testing: The JML and JUnit Way

    Get PDF
    Writing unit test code is labor-intensive, hence it is often not done as an integral part of programming. However, unit testing is a practical approach to increasing the correctness and quality of software; for example, the Extreme Programming approach relies on frequent unit testing. In this paper we present a new approach that makes writing unit tests easier. It uses a formal specification language\u27s runtime assertion checker to decide whether methods are working correctly, thus automating the writing of unit test oracles. These oracles can be easily combined with hand-written test data. Instead of writing testing code, the programmer writes formal specifications (e.g., pre- and postconditions). This makes the programmer\u27s task easier, because specifications are more concise and abstract than the equivalent test code, and hence more readable and maintainable. Furthermore, by using specifications in testing, specification errors are quickly discovered, so the specifications are more likely to provide useful documentation and inputs to other tools. We have implemented this idea using the Java Modeling Language (JML) and the JUnit testing framework, but the approach could be easily implemented with other combinations of formal specification languages and unit test tools

    A Simple and Practical Approach to Unit Testing: The JML and JUnit Way

    Get PDF
    Writing unit test code is labor-intensive, hence it is often not done as an integral part of programming. However, unit testing is a practical approach to increasing the correctness and quality of software; for example, the Extreme Programming approach relies on frequent unit testing. In this paper we present a new approach that makes writing unit tests easier. It uses a formal specification language\u27s runtime assertion checker to decide whether methods are working correctly, thus automating the writing of unit test oracles. These oracles can be easily combined with hand-written test data. Instead of writing testing code, the programmer writes formal specifications (e.g., pre- and postconditions). This makes the programmer\u27s task easier, because specifications are more concise and abstract than the equivalent test code, and hence more readable and maintainable. Furthermore, by using specifications in testing, specification errors are quickly discovered, so the specifications are more likely to provide useful documentation and inputs to other tools. We have implemented this idea using the Java Modeling Language (JML) and the JUnit testing framework, but the approach could be easily implemented with other combinations of formal specification languages and unit test tools

    Communicative Predictors of a Shared Family Identity: Comparison of Grandchildren’s Perceptions of Family-of-Origin Grandparents and Stepgrandparents

    Get PDF
    From an intergroup perspective on family relationships, the current study investigates family-of-origin grandparents and stepgrandparents to determine similarities and differences in communication and relational dimensions. Participants (N = 88) completed questionnaires on family-of-origin grandparents and stepgrandparent relationships. From the perspective of young adult grandchildren, the research explores the role of supportive communication, reciprocal self-disclosure, nonaccommodative communication, and parental encouragement in predicting a sense of shared family identity with each grandparent type. Results are discussed in terms of implications for intergroup research, grandparent-grandchild communication, and stepfamily relationships

    An unusual case of chronic meningitis

    Get PDF
    BACKGROUND: Chronic meningitis is defined as symptoms and signs of meningeal inflammation and persisting cerebrospinal fluid abnormalities such as elevated protein level and pleocytosis for at least one month. CASE PRESENTATION: A 62-year-old woman, of unremarkable past medical history, was admitted to hospital for investigation of a four-week history of vomiting, malaise an associated hyponatraemia. She had a low-grade pyrexia with normal inflammatory markers. A CT brain was unremarkable and a contrast MRI brain revealed sub-acute infarction of the right frontal cortex but with no evidence of meningeal enhancement. Due to increasing confusion and patient clinical deterioration a lumbar puncture was performed at 17 days post admission. This revealed gram-negative coccobacilli in the CSF, which was identified as Neisseria meningitidis group B. The patient made a dramatic recovery with high-dose intravenous ceftriaxone antibiotic therapy for meningococcal meningitis. CONCLUSIONS: 1) Chronic bacterial meningitis may present highly atypically, particularly in the older adult. 2) There may be an absent or reduced febrile response, without a rise in inflammatory markers, despite a very unwell patient. 3) Early lumbar puncture is to be encouraged as it is essential to confirm the diagnosis.4) Despite a delayed diagnosis appropriate antibiotic therapy can still lead to a good outcome

    Pascual López: autobiografía de un estudiante de medicina

    Get PDF
    We propose an integration of structural subtyping with boolean connectives and semantic subtyping to define a Java-like programming language that exploits the benefits of both techniques. Semantic subtyping is an approach to defining subtyping relation based on set-theoretic models, rather than syntactic rules. On the one hand, this approach involves some non trivial mathematical machinery in the background. On the other hand, final users of the language need not know this machinery and the resulting subtyping relation is very powerful and intuitive. While semantic subtyping is naturally linked to the structural one, we show how the framework can also accommodate the nominal subtyping. Several examples show the expressivity and the practical advantages of our proposal. © 2013 IFIP International Federation for Information Processing
    • …
    corecore