8 research outputs found

    Foundations of Implicit Function Types

    Get PDF
    Implicit parameters are used pervasively in Scala and are also present in a number of other programming and theorem proving languages. This paper describes a generalization of implicit parameters as they are currently found in Scala to implicit function types. We motivate the construct by a series of examples and provide formal foundations that closely follow the semantics implemented by the Scala compiler

    Simplicitly: Foundations and Applications of Implicit Function Types

    Get PDF
    Understanding a program entails understanding its context; dependencies, configurations and even implementations are all forms of contexts. Modern programming languages and theorem provers offer an array of constructs to define contexts, implicitly. Scala offers implicit parameters which are used pervasively, but which cannot be abstracted over. This paper describes a generalization of implicit parameters to implicit function types, a powerful way to abstract over the context in which some piece of code is run. We provide a formalization based on bidirectional type-checking that closely follows the semantics implemented by the Scala compiler. To demonstrate their range of abstraction capabilities, we present several applications that make use of implicit function types. We show how to encode the builder pattern, tagless interpreters, reader and free monads and we assess the performance of the monadic structures presented

    Type-Level Programming with Match Types

    No full text
    Type-level programming is becoming more and more popular in the realm of functional programming. However, the combination of type-level programming and subtyping remains largely unexplored in practical programming languages. This paper presents \emph{match types}, a type-level equivalent of pattern matching. Match types integrate seamlessly into programming languages with subtyping and, despite their simplicity, offer significant additional expressiveness. We formalize the feature of match types in a calculus based on System F sub and prove its soundness. We practically evaluate our system by implementing match types in the Scala 3 reference compiler, thus making type-level programming readily available to a broad audience of programmers

    A Scalable Approach to Harvest Modern Weblogs

    No full text
    Blogs are one of the most prominent means of communication on the web. Their content, interconnections and influence constitute a unique socio-technical artefact of our times which needs to be preserved. The BlogForever project has established best practices and developed an innovative system to harvest, preserve, manage and reuse blog content. This paper presents the latest developments of the blog crawler which is a key component of the BlogForever platform. More precisely, our work concentrates on techniques to automatically extract content such as articles, authors, dates and comments from blog posts. To achieve this goal, we introduce a simple yet robust and scalable algorithm to generate extraction rules based on string matching using the blog's web feed in conjunction with blog hypertext. Furthermore, we present a system architecture which is characterised by efficiency, modularity, scalability and interoperability with third-party systems. Finally, we conduct thorough evaluations of the performance and accuracy of our system

    Contribution of host species and pathogen clade to snake fungal disease hotspots in Europe.

    Get PDF
    Infectious diseases are influenced by interactions between host and pathogen, and the number of infected hosts is rarely homogenous across the landscape. Areas with elevated pathogen prevalence can maintain a high force of infection and may indicate areas with disease impacts on host populations. However, isolating the ecological processes that result in increases in infection prevalence and intensity remains a challenge. Here we elucidate the contribution of pathogen clade and host species in disease hotspots caused by Ophidiomyces ophidiicola, the pathogen responsible for snake fungal disease, in 21 species of snakes infected with multiple pathogen strains across 10 countries in Europe. We found isolated areas of disease hotspots in a landscape where infections were otherwise low. O. ophidiicola clade had important effects on transmission, and areas with multiple pathogen clades had higher host infection prevalence. Snake species further influenced infection, with most positive detections coming from species within the Natrix genus. Our results suggest that both host and pathogen identity are essential components contributing to increased pathogen prevalence
    corecore