User loginNavigation |
"C Is Not a Low-level Language"David Chisnall, "C Is Not a Low-level Language. Your computer is not a fast PDP-11.", ACM Queue, Volume 16, issue 2.
Includes a discussion of various ways in which modern processors break the C abstract machine, as well as some interesting speculation on what a "non-C processor" might look like. The latter leads to thinking about what a low-level language for such a processor should look like. By Allan McInnes at 2018-07-04 03:09 | History | Implementation | Parallel/Distributed | 12 comments | other blogs | 39815 reads
The Gentle Art of Levitation
The Gentle Art of Levitation
2010 by James Chapman, Pierre-Evariste Dagand, Conor McBride, Peter Morrisy We present a closed dependent type theory whose inductive types are given not by a scheme for generative declarations, but by encoding in a universe. Each inductive datatype arises by interpreting its description—a first-class value in a datatype of descriptions. Moreover, the latter itself has a description. Datatype-generic programming thus becomes ordinary programming. We show some of the resulting generic operations and deploy them in particular, useful ways on the datatype of datatype descriptions itself. Surprisingly this apparently self-supporting setup is achievable without paradox or infinite regress.It's datatype descriptions all the way down. By Andris Birkmanis at 2018-05-11 19:26 | Semantics | Type Theory | 1 comment | other blogs | 37849 reads
Comprehending Ringads
Comprehending Ringads
2016 by Jeremy Gibbons Ringad comprehensions represent a convenient notation for expressing database queries. The ringad structure alone does not provide a good explanation or an efficient implementation of relational joins; but by allowing heterogeneous comprehensions, involving both bag and indexed table ringads, we show how to accommodate these too.Indexed/parametric/graded monads are the key (read the paper to understand the pun). By Andris Birkmanis at 2018-05-05 02:59 | Category Theory | Semantics | Type Theory | login or register to post comments | other blogs | 37733 reads
Sequent Calculus as a Compiler Intermediate LanguageSequent Calculus as a Compiler Intermediate Language
By Andris Birkmanis at 2018-04-02 17:06 | Functional | General | Lambda Calculus | Semantics | Type Theory | 2 comments | other blogs | 45571 reads
How to Write Seemingly Unhygienic and Referentially Opaque Macros with Syntax-rules
How to Write Seemingly Unhygienic and Referentially
Opaque Macros with Syntax-rules
By Oleg Kiselyov This paper details how folklore notions of hygiene and referential transparency of R5RS macros are defeated by a systematic attack. We demonstrate syntax-rules that seem to capture user identifiers and allow their own identifiers to be captured by the closest lexical bindings. In other words, we have written R5RS macros that accomplish what commonly believed to be impossible. By Andris Birkmanis at 2018-03-22 02:22 | Fun | Meta-Programming | 37 comments | other blogs | 46082 reads
Why Is SQLite Coded In CWe are nearing the day someone quips that C is an improvement on most of its successors (smirk). So reading this page from the SQLite website is instructive, as is reading the page on the tooling and coding practices that make this approach work. I think none of this is news, and these approaches have been on the books for quite a bit. But still, as I said: an improvement on most of its successors. Hat tip: HN discussion. Resource PolymorphismResource Polymorphism, by Guillaume Munch-Maccagnoni:
An ambitious goal, and it would be an incredibly useful addition to OCaml. Might even displace Rust in some places, since you can theoretically avoid triggering the GC, but you have the excellent GC available when needed. This is definitely a pain point for Rust. By naasking at 2018-03-08 14:40 | Functional | login or register to post comments | other blogs | 45088 reads
The Left Hand of EqualsThe Left Hand of Equals, by James Noble, Andrew P. Black, Kim B. Bruce, Michael Homer, Mark S. Miller:
This covers a lot of ground, not only historical, but conceptual, like the meaning of equality and objects. For instance, they consider Ralph Johnson on what object oriented programming means:
And constrast with William Cook's autognosis/procedural-abstraction view, which we've discussed here before. The paper's goal then becomes clear: "What can we do to provide an equality operator for a pure, autognostic object-oriented language?" They answer this question in the context of the Grace programming language. As you might expect from some of the authors, security and trust are important considerations. Site migrationUpdate: The migration of LtU to new servers is complete. If you notice any issues with the site, please post in this thread (if you can), or email me at antonvs8 at (gmail domain). Original announcement appears below:
By Anton van Straaten at 2018-02-04 20:03 | Site Discussion | 11 comments | other blogs | 35118 reads
Compiling a Subset of APL Into a Typed Intermediate Language
Compiling a Subset of APL Into
a Typed Intermediate Language
by Martin Elsman, Martin Dybdal Traditionally, APL is an interpreted language ... In this paper, we present a compiler that compiles a subset of APL into a typed intermediate representation, which should serve as a practical and well-defined intermediate format for targeting parallel-architectures through a large number of existing tools and frameworks. The intermediate language is conceptually close to the language Repa. It supports shape-polymorphic functions and types that classify shapes. The compiler takes a simplified approach to certain aspects of APL. Following other APL compilation approaches, the compiler is based on lexical (i.e., static) identifier scoping and has no support for dynamic compilation (APL execute).Terseness of APL is legendary, for good or bad. I keep finding more and more papers by Haskell community (and especially GHC contributors) working on efficient (parallel) arrays in Haskell. |
Browse archives
Active forum topics |
Recent comments
22 weeks 6 days ago
22 weeks 6 days ago
22 weeks 6 days ago
45 weeks 23 hours ago
49 weeks 2 days ago
51 weeks 2 hours ago
51 weeks 2 hours ago
1 year 1 week ago
1 year 6 weeks ago
1 year 6 weeks ago