User loginNavigation |
TheoryWhat good is Strong Normalization in Programming Languages?There's a neat thread about strong normalization happening on The Types Forum.
Termination is good:
Termination is good!
Termination is good and with fixpoints is turing complete?
Terminating reductions allows exhaustive applications of optimizations:
Rene Vestergaard also gave a link to a 2004 discussion of strong normalization on the rewriting list. By shapr at 2005-11-17 12:31 | Implementation | Lambda Calculus | Theory | Type Theory | 15 comments | other blogs | 11126 reads
Mechanizing Language Definitions
The problem: Most languages don't have formal specifications.
The solution (maybe): Make specification easier by using mechanized tools (for example, use Twelf). The presentation: here (Robert Harper, ICFP'05). The conclusion: You decide. Zipper-based file server/OS
zfs-talk: Expanded talk with the demo. It was originally presented as an extra demo at the Haskell Workshop 2005 By shapr at 2005-10-08 10:10 | Fun | Functional | Implementation | Theory | 21 comments | other blogs | 39983 reads
The essence of Dataflow Programming by Tarmo Uustalu and Varmo VeneThe Essence of Dataflow Programming
If you've ever wondered about dataflow or comonads, this paper is a good read. It begins with short reviews of monads, arrows, and comonads and includes an implementation. One feature that stood out is the idea of a higher-order dataflow language. By shapr at 2005-09-21 22:23 | Functional | Implementation | Logic/Declarative | Theory | 12 comments | other blogs | 29491 reads
Generic implementation of all four *F* operators: from control0 to shiftUnlike the previous approaches, the latest implementation is generic. Shift and control share all the same code, and differ in only one boolean flag. Therefore, it becomes possible to mix different control operators in the same program. Furthermore, the latest implementation is direct rather than emulation (in terms of an object-level shift), therefore, it has the best performance. The code is surprisingly simple, compared with the previous implementation of 'control' by Sitaram and Felleisen, and does not require equality on continuations. All four delimited control operations do indeed reduce to call/cc and one global mutable cell, and hence have a quite simple CPS transform. That has been known since the paper by Chung-chieh Shan (Scheme Workshop, 2004). The current code shows that result more directly. Oleg's implementation provides all four Friedman-Felleisen delimited control operators: from -F- (similar to cupto) to +F- (aka control) to +F+ (aka shift). The R5RS Scheme code is parameterized by two boolean flags: is-shift and keep-delimiter-upon-effect. All four combinations of the two flags correspond to four delimited control operators. 'Information and Computation' Open Access
I found this in my mail.
Those of a more theoretical bent will find lots of interesting articles there. Trampolining Architectures
Trampolining Architectures
A trampolining architecture is a special case and extension of a monad which is useful in implementing multiprogramming. Five trampolining architectures, operating over the range of two trampolining translations, are presented. The effects of the architectures are cumulative. Some increase the breadth of multiprogramming facilities provided. Others demonstrate the potential for more efficient implementation. Finally, we demonstrate the applicability of trampolining to languages without closures.We discussed more than once Trampolined Style, but never this paper by the same authors (except Wand). Published one year later, it discusses more options, and more importantly, shows relations between trampolines and monads. If you are interested in design and implementation of PLs, and you never heard about tramplines - you should. Causal Nets
Causal Nets
The network approach to computation is more direct and "physical" than the one based on some specific computing devices (like Turing machines). However, the size of a usual -- e.g., Boolean -- network does not reflect the complexity of computing the corresponding function, since a small network may be very hard to find even if it exists. A history of the work of a particular computing device can be described as a network satisfying some restrictions. The size of this network reflects the complexity of the problem, but the restrictions are usually somewhat arbitrary and even awkward. Causal nets are restricted only by determinism (causality) and locality of interaction. Their geometrical characteristics do reflect computational complexities. And various imaginary computer devices are easy to express in their terms. The elementarity of this concept may help bringing geometrical and algebraic (and maybe even physical) methods into the theory of computations. This hope is supported by the grouptheoretical criterion given in this paper for computability from symmetrical initial configurations.The nets of this paper are different from belief nets or Bayesian nets, which are also known under name "causal nets". No doubt, modeling the history of computation rather than the current state is nothing new, but this paper tries to find new applications for that. Accurate step counting
Accurate step counting. Catherine Hope and Graham Hutton.
Starting with an evaluator for a language, an abstract machine for the same language can be mechanically derived using successive program transformations. This has relevance to studying both the space and time properties of programs because these can be estimated by counting transitions of the abstract machine and measuring the size of the additional data structures needed, such as environments and stacks. In this article we use this process to derive a function that accurately counts the number of steps required to evaluate expressions in a simple language. Somewhat related to a recent discussion (in which I mentioned EOPL1's scetion on deriving a compiler and machine from an interpreter). The paper is, of course, worth checking out regardless. By Ehud Lamm at 2005-06-18 16:19 | Functional | Implementation | Theory | 1 comment | other blogs | 5590 reads
On the Unusual Effectiveness of Logic in Computer Science
In 2001, Moshe Vardi organised a workshop devoted to a the topic of The Unusual Effectiveness of Logic in Computer Science with papers presented covering such topics as "Logic as the calculus of computer science" (Vardi) and "Descriptive complexity" (Immerman), and later a gang consisting of Halpern, Harper, Immerman, Kolaitis, Vardi, and Vianu published a likewise named 24 page article in the July 2002 issue of the Bulletin of Symbolic Logic.
The title is derived from Wigner's famous article on The Unreasonable Effectiveness of Mathematics in the Natural Sciences, which was devoted to raising and attempting to answer the important question: why should mathematics have been so useful to natural scientists? With respect to logic, my answer for the effectiveness of LICS is that, while computation is a physical phenomenon, it is a phenomenon that is best understood via powerful abstractions, and the most powerful abstractions we have at the moment are abstractions in mathematical logic, because of the fundamental relationship of Turing completeness to Goedelian incompleteness. Links derived from Richard Zach's Motivating Intro Logic for Philosophy majors (and others). |
Browse archives
Active forum topics |
Recent comments
1 week 5 days ago
1 week 6 days ago
2 weeks 13 hours ago
2 weeks 13 hours ago
2 weeks 5 days ago
2 weeks 5 days ago
2 weeks 5 days ago
5 weeks 6 days ago
6 weeks 4 days ago
6 weeks 4 days ago