User loginNavigation |
Meta-ProgrammingLifted inference: normalizing loops by evaluation
Lifted inference: normalizing loops by evaluation. Oleg Kiselyov and Chung-chieh Shan. 2009 Workshop on Normalization by Evaluation.
Many loops in probabilistic inference map almost every individual in their domain to the same result. Running such loops symbolically takes time sublinear in the domain size. Using normalization by evaluation with first-class delimited continuations, we lift inference procedures to reap this speed-up without interpretive overhead. To express nested loops, we use multiple control delimiters for metacircular interpretation. To express loops over a powerset domain, we convert nested loops over a subset to unnested loops. The paper is a bit hard to follow, but there are enough little tricks here to merit attentive reading. Or better yet, read the code. The basic PLT idea might be summed as doing abstract interpretation on a shallowly embedded DSL using delimited continuations. By Ehud Lamm at 2009-08-14 02:34 | DSL | Functional | Implementation | Meta-Programming | 2 comments | other blogs | 10329 reads
Verified Programming in GuruVerified Programming in Guru is a tutorial introduction to Guru:
In comparison to Coq:
The tutorial is worth a read to anybody new to this style of programming as it is one of the most gentle introductions to dependent types and automated program verification that I've seen. By James Iry at 2009-08-05 02:59 | Logic/Declarative | Meta-Programming | Teaching & Learning | Type Theory | 4 comments | other blogs | 13646 reads
Fully-parameterized, first-class modules with hygienic macrosFully-parameterized, first-class modules with hygienic macros, dissertation by Martin Gasbichler, 2006.
A very readable, interesting, and useful work. Ziggurat
Strangely enough this project from Olin Shivers and David Fisher was not mentioned here before. Those with access may want to check out the paper on Ziggurat in the September 2008 double issue of JFP. By Ehud Lamm at 2009-01-20 07:35 | DSL | Meta-Programming | Software Engineering | 1 comment | other blogs | 11659 reads
Staging with Delimited Control
Yukiyoshi Kameyama, Oleg Kiselyov, Chung-chieh Shan, Shifting the Stage: Staging with Delimited Control. PEPM2009.
It is often hard to write programs that are ef?cient yet reusable. For example, an efficient implementation of Gaussian elimination should be specialized to the structure and known static properties of the input matrix. The most profitable optimizations, such as choosing the best pivoting or memoization, cannot be expected of even an advanced compiler because they are specific to the domain, but expressing these optimizations directly makes for ungainly source code. Instead, a promising and popular way to reconcile efficiency with reusability is for a domain expert to write code generators. Two pillars of this approach are types and effects. Typed multilevel languages such as MetaOCaml ensure safety: a well-typed code generator neither goes wrong nor generates code that goes wrong. Side effects such as state and control ease correctness: an effectful generator can resemble the textbook presentation of an algorithm, as is familiar to domain experts, yet insert let for memoization and if for bounds-checking, as is necessary for efficiency. However, adding effects blindly renders multilevel types unsound... Code generators have to be written in CPS or monadic style due to the need for let-insertion and if-insertion. This makes writing code generators unattractive to many programmers. The paper provides an alternative based on delimited continuations, and paper proposes a sound combination of staging and delimited continuations. The combination has been implemented. The authors show how pleasant it becomes to write interesting code generators (specializing dynamic programming and Gaussian elimination codes). The paper and the code for many generators is available online. I suggest reading the explanation of the problem, and then looking at the actual code generators. Factor: an extensible interactive languageFactor: an extensible interactive language, Google Tech Talk by Slava Pestov.
By Manuel J. Simoni at 2008-10-29 22:19 | Functional | Meta-Programming | OOP | 10 comments | other blogs | 24615 reads
Hardware Design and Functional Programming: a Perfect MatchHardware Design and Functional Programming: a Perfect Match by Mary Sheeran, Journal of Universal Computer Science, Special issue devoted to the Brazilian Symposium on Programming Languages, 2005.
COLA BrainfuckFrom the Software Architecture Group at the Hasso Plattner Institut:
Previously: COLA and Open, extensible object models; via neuraxon77. By Manuel J. Simoni at 2008-05-01 07:58 | DSL | Implementation | Meta-Programming | 4 comments | other blogs | 11000 reads
Scheme macro systems[Chicken-users] macro systems and chicken (long), Alex Shinn, Apr 2008.
A very nice post that provides a historical overview and implementations of a hygienic I didn't know syntactic closures before, and find their interface and implementation simple and easy to understand. Any reasons why they aren't used more in Scheme? By Manuel J. Simoni at 2008-04-07 02:47 | History | Meta-Programming | 4 comments | other blogs | 14357 reads
Applied Metamodelling: A Foundation for Language Driven DevelopmentApplied Metamodelling: A Foundation for Language Driven Development (2004) An excerpt:
In software engineering circles the term "language driven development" is synonymous with "language oriented programming", a term which LtU members are more familiar with (thanks to Martin Ward's article Language Oriented Programming which first appeared in 1994, and then Martin Fowler's essays on the topic). The book hasn't appeared on the radar here on LtU, despite 41 citations. I suspect this is due in part to only one citation at Citeseer, and the lack of cross-talk between computer scientists and software engineers. There are a lot of similarities between the XMF language (discussion at LtU) and that of the Katahdin language (discussion at LtU). Other related discussions here at LtU, include Language Workbenches: The Killer App for DSLs - about the essay by Martin Fowler, Ralph Johnson: Language workbenches - a response to Fowler's essay, XActium - Lightweight Language Engineering? - which discusses an essay about a previous version of XMF, Generating Interpreters? , Language Oriented Programming - discusses an essay by Jetbrain's Sergey Dmitriev, "Language Oriented Programming" Meta Programming System - discussion of the Jetbrain MPS system, The DSL, MDA, UML thing again... - an older discussion on the relationship between DSLs and MDA. (Disclaimer: Some may notice that I am mentioned on the XMF web site, but this is just because I subjected their XMF language to a number of grueling challenges which they passed with flying colors: see the language snippets in the documentation. I have no affiliation with their company.) By cdiggins at 2008-03-07 19:07 | DSL | Meta-Programming | Software Engineering | 18 comments | other blogs | 20266 reads
|
Browse archives
Active forum topics |
Recent comments
23 weeks 1 day ago
23 weeks 1 day ago
23 weeks 1 day ago
45 weeks 2 days ago
49 weeks 4 days ago
51 weeks 2 days ago
51 weeks 2 days ago
1 year 1 week ago
1 year 6 weeks ago
1 year 6 weeks ago