User loginNavigation |
FunctionalPractical Implementation of a Dependently Typed Functional Programming LanguageThis blog post about Idris led me to Edwin C. Brady's 2005 PhD thesis, Practical Implementation of a Dependently Typed Functional Programming Language.
What's the current state of the art in optimization of dependently typed languages? Ensuring Correct-by-Construction Resource Usage by using Full-Spectrum Dependent TypesEnsuring Correct-by-Construction Resource Usage by using Full-Spectrum Dependent Types
More ammunition for the importance of embedded domain-specific languages, dependent types, and correctness-by-construction. By Paul Snively at 2009-03-04 17:17 | DSL | Functional | Implementation | Type Theory | 3 comments | other blogs | 7634 reads
Denotational design with type class morphismsDenotational design with type class morphisms. Conal Elliott.
To continue in our new all-Conal format... This paper brings together a bunch of things that Conal's been talking about lately, and "algebra of programming" fans will probably like his approach. (I have a hunch that what he calls a "type class morphism" could be described using standard categorical jargon, but I haven't given it much thought. Suggestions?) By Matt Hellige at 2009-02-19 21:35 | Functional | Semantics | 12 comments | other blogs | 14748 reads
DanaLuke Palmer and Nick Szabo can shoot me for this if they want, but I think this is warranted, and I want to connect a couple of dots as well. Luke is one of a number of computer scientists, with Conal Elliott probably being the best known, who have devoted quite a bit of attention to Functional Reactive Programming, or FRP. FRP has been discussed on LtU off and on over the years, but, unusually for LtU IMHO, does not seem to have gotten the traction that some other similarly abstruse subjects have. In parallel, LtU has had a couple of interesting threads about Second Life's economy, smart contracts, usage control, denial of service, technical vs. legal remedies, and the like. I would particularly like to call attention to this post by Nick Szabo, in which he discusses a contract language that he designed:
In recent private correspondence, Nick commented that he'd determined that he was reinventing synchronous programming à la Esterel, and mentioned "Reactive" programming. Ding! To make a potentially long entry somewhat shorter, Luke is working on a new language, Dana, which appears to have grown out of some frustration with existing FRP systems, including Conal Elliot's Reactive, currently perhaps the lynchpin of FRP research. Luke's motivating kickoff post for the Dana project can be found here, and there are several follow-up posts, including links to experimental source code repositories. Of particularly motivating interest, IMHO, is this post, where Luke discusses FRP's interaction with garbage collection succinctly but nevertheless in some depth. Luke's most recent post makes the connection from Dana, which Luke has determined needs to have a dependently-typed core, to Illative Combinatory Logic, explicit, and offers a ~100 line type checker for the core. I find this very exciting, as I believe strongly in the project of being able to express computation centered on time, in the sense of Nick's contract language, in easy and safe ways extremely compelling. I've intuited for some time now that FRP represents a real breakthrough in moving us past the Von Neumann runtime paradigm in fundamental ways, and between Conal Elliott's and Luke's work (and no doubt that of others), it seems to me that my sense of this may be borne out, with Nick's contract language, or something like it, as an initial application realm. So I wanted to call attention to Luke's work, and by extension recapitulate Conal's and Nick's, both for the PLT aspects that Luke's clearly represents, but also as a challenge to the community to assist in the realization of Nick's design efforts, if at all possible. By Paul Snively at 2009-02-18 21:55 | Functional | General | Implementation | Lambda Calculus | Semantics | Theory | Type Theory | 17 comments | other blogs | 16147 reads
Functional Pearl: Type-safe pattern combinatorsFunctional Pearl: Type-safe pattern combinators, by Morten Rhiger:
This approach relies on continuation-passing style for a full encoding of pattern matching. Tullsen's First-Class Patterns relies on a monadic encoding of pattern matching to achieve abstraction over patterns. Given the relationship between CPS and monads, the two approaches likely share an underlying structure. Abstracting over patterns yields a whole new level of abstraction, which could significantly improve code reuse. The only concern is compiling these more flexible structures to the same efficient pattern matching code we get when the language natively supports patterns. Section 4.9 discusses the efficiency concerns, and suggests that partial evaluation can completely eliminate the overhead. By naasking at 2008-12-22 16:35 | Functional | Type Theory | 11 comments | other blogs | 11531 reads
PinS and RWH are Jolt FinalistsBooks on two of the languages that get a lot of airplay on LtU have made the finalist list for this year's Jolt awards.
Congratulations to Martin, Lex, Bill, John, Bryan, and Don! Whether or not either book wins, it's quite a sea change that two sophisticated, statically typed functional programming languages with research origins are getting so much mainstream attention. From the FAQ
Programmable Concurrency in a Pure and Lazy LanguageProgrammable Concurrency in a Pure and Lazy Language, Peng Li's 2008 PhD dissertation, is a bit more implementation focused than is common on LtU. The paper does touch on a wide range of concurrency mechanisms so it might have value to any language designer considering ways to tackle the concurrency beast.
The paper's summary explains what I like most about it:
Even if concurrency isn't your thing, section 6.3 describes the author's findings on the pros and cons of both purity and laziness in a systems programming context. By James Iry at 2008-12-15 03:00 | Functional | Implementation | Parallel/Distributed | 11 comments | other blogs | 17921 reads
The Genuine Sieve of Eratosthenes
Melissa E. O’Neill, The Genuine Sieve of Eratosthenes.
A much beloved and widely used example showing the elegance and simplicity of lazy functional programming represents itself as "The Sieve of Eratosthenes." This paper shows that this example is not the sieve and presents an implementation that actually is.
Starting with the classic one-liner She notes that "Some readers may feel that despite all of these concerns, the earlier algorithm is somehow “morally†the Sieve of Eratosthenes. I would argue, however, that they are confusing a mathematical abstraction drawn from the Sieve of Eratosthenes with the actual algorithm. The algorithmic details, such as how you remove all the multiples of 17, matter." A fun read. Type inference for correspondence typesType inference for correspondence types
That's a mouthful. The part of the paper that perked my virtual ears up:
[9] is A type discipline for authorization policies, which is followed up by Type-checking zero knowledge. The upshot is that it might be possible to have reasonable type inference support for a dependent type- and effect system with cryptographic operations supporting some of the most powerful privacy and security primitives and protocols currently known. I find this very exciting! By Paul Snively at 2008-12-09 18:10 | Functional | Implementation | Type Theory | 1 comment | other blogs | 7914 reads
Qi IIQi II has been released. Qi is a functional programming language built on top of Common Lisp. It has an optional static type system based on sequent calculus and a general focus on logic based programming. For version II, see the what's new page. Rule closures in particular look very interesting.
Also with this release is a new book: Funcitonal Programming in Qi. Earlier versions of Qi have been mentioned on LtU here and here. By James Iry at 2008-11-29 23:20 | Functional | Logic/Declarative | 4 comments | other blogs | 15158 reads
|
Browse archives
Active forum topics |
Recent comments
23 weeks 3 days ago
23 weeks 3 days ago
23 weeks 3 days ago
45 weeks 4 days ago
49 weeks 6 days ago
51 weeks 3 days ago
51 weeks 3 days ago
1 year 2 weeks ago
1 year 6 weeks ago
1 year 6 weeks ago