User loginNavigation |
archivesCausal Commutative Arrows and Their OptimizationCausal Commutative Arrows and Their Optimization, Hai Liu. Eric Cheng. Paul Hudak. ICFP 2009.
One way of understanding what is going on in this paper is that in terms of dataflow programming, FRP programs correspond to programs with single-entry, single-exit dataflow graphs. This means that none of the internal dataflow nodes in an FRP program are actually necessary -- you can coalesce all those nodes into a single node while preserving the observable behavior. (They briefly touch on this point when they mention that synchronous languages try to compile to "single loop code".) What's very slick is that they have a nice normal form procedure that (a) is defined entirely in terms of their high-level language, and (b) always yields code corresponding to the the coalesced dataflow graph. It's an elegant demonstration of the power of equational reasoning. [ANN] Code Generation 2010 Call for SpeakersWith its focus on sharing practical experiences, Code Generation 2010 is the ideal opportunity for software practitioners to understand how to benefit from emerging tools, technologies and approaches in the broad area of Model-Driven Software Development. Accepted speakers have their conference fees waived. For full details and instructions on how to submit a session please visit: http://www.codegeneration.net/cg2010/speak.php Hear what participants thought about this year's conference in this short video clip: Call for Speakers: We are seeking high-quality session proposals covering topics in model-driven software development (including Domain-Specific Languages (DSLs), Model-Driven Architecture (MDA), Executable UML, Software Factories & Software Product Lines, Generative Programming and related areas). Sessions could cover topics such as: - Tool and technology development and adoption Case studies and interactive sessions based on these and related approaches are particularly encouraged although more theoretical sessions are also welcome. Take part in Code Generation 2010 and find out why it is Europe's leading event on Model-Driven Software Development. What people said about our previous events: "I've been working in domain-specific modelling for a dozen years … and in this time this has been the highest-quality conference on this topic that I've been to - and I've been to a few." "The combined—for that matter, individual—expertise present was remarkable, and presented a tremendous opportunity for knowledge exchange." "The presentations were all top quality, making it often difficult to decide between the concurrently running sessions. The wealth of MDD knowledge present at the event was impressive, not only from the presenters, but from the other delegates as well." Code Generation 2010 is organised by Software Acumen and supported by InfoQ.com, OMG, ACCU and SkillsMatter. By Mark Dalgarno at 2009-10-28 13:27 | LtU Forum | login or register to post comments | other blogs | 1276 reads
Desperately seeking monomorphic typingSuppose a small language with a few primitive types (number, boolean, string) and first-class procedures from and to these types with arbitrary but fixed arity, and the usual syntax (if, let, top-level definitions), but without type declarations. And suppose that the types of all primitive procedures (which are monomorphic) are given, and so is the type of the top-level procedure ("main", a procedure that is not invoked by any procedure, also monomorphic). The language is strict, if it matters. What I'd like to have is an algorithm that can find the unique monomorphic type of all other procedures in a closed program, or prove that there is none. For example, in Can anyone help? (Update: Actually, I'm wrong; that example is typeable. As I said, it's procedure-valued arguments that create problems.) π: a pattern languageπ - not to be confused with the π-calculus - is a pattern-based language being developed by the Software Technology group at Technische Universität Darmstadt. Quoting from the project website:
The basic idea here seems similar to the OMeta language, previously mentioned on LtU here, but based on EBNF instead of Parsing Expression Grammars (PEGs). Pattern definitions in π have the form declare_pattern name ≔ syntax ⇒ type ➞ meaning; Here's a trivial example of defining a pattern:
declare_pattern
integer_potentiation ≔ integer:i %W- "^" %W- integer:j ⇒ integer ➞
{
int result = i;
for (int k = 1; k <= j-1; k++)
result *= i;
return result;
};
The resulting pattern can then be used directly in expressions, such as More information about the language, as well as the implementation, can be found at http://www.pi-programming.org. There's an OOPSLA09 paper on π as well, but I haven't been able to find an open access version of it yet. [Update: the π team has made their OOPSLA article available here] By Allan McInnes at 2009-10-29 01:58 | DSL | Meta-Programming | 10 comments | other blogs | 7468 reads
Literate Programming: Retrospect and ProspectsLP has been mentioned a number of times on LtU but never featured as a topic of discussion in its own right. On the face of it, it seems like an eminently sensible way to program. Why hasn't it taken the whole world by storm? Knuth puts forward Jon Bentley's observation as one possible answer: "a small percentage of the world's population is good at programming, and a small percentage is good at writing; apparently [Knuth is] asking everybody to be in both subsets." To discuss this and other theories on their merits, a quick refresher on the basics of LP is in order. As usual, the relevant Wikipedia article is informative but bland. As Knuth pointed out, original sources are often best. Here are two good ones:
The second paper is the more interesting of the two. It contains a literate program by Knuth and a review of the same by McIlroy: Knuth has shown us here how to program intelligibly, but not wisely. I buy the discipline. I do not buy the result. He has fashioned a sort of industrial-strength Fabergé egg -- intricate, wonderfully worked, refined beyond all ordinary desires, a museum piece from the start. I, too, buy the discipline for programming in the small but can't really see how CWEB-like systems can be adapted to and adopted by multi-hacker teams working on very large code bases written in a mixture of different languages. Ramsey's Literate Programming on a Team Project enumerates some of the problems. Can LP be used for anything other than small-to-medium programs written by a single person in a single language? |
Browse archivesActive forum topics |