User loginNavigation |
Object-FunctionalTool Demo: Scala-Virtualized
Scala has always had a quite good EDSL story thanks to implicits, dot- and paren-inference, and methods-as-operators. Lately there are proposals to provide it with both macros-in-the-camlp4-sense and support for multi-stage programming. This paper goes into some depth on the foundations of the latter subject. By Paul Snively at 2012-05-26 22:28 | DSL | Implementation | Meta-Programming | Object-Functional | Scala | Semantics | Type Theory | login or register to post comments | other blogs | 12775 reads
Deca, an LtU-friendly bare metal systems programming languageThe Deca programming language is "a language designed to provide the advanced features of sophisticated, high-level programming languages while still programming as close as possible to the bare metal. It brings in the functional, object-oriented, and generic programming paradigms without requiring a garbage collector or a threading system, so programmers really only pay in performance for the features they use." The latter link provides a list of features that Deca does, will, and won't provide. Features provided include type inference, universally- and existentially- quantified types, and "a strong region-and-effect system that prohibits unsafe escaping pointers and double-free errors". The Deca language and ideas behind it are documented in a thesis, The design and implementation of a modern systems programming language (PDF):
The source code for the Deca compiler, decac, is available here. The compiler is implemented in Scala and generates LLVM bytecode. (The author points out in the comments below that this implementation is a work in progress.) The author of Deca is LtU member Eli Gottlieb, who back in 2008 posted in the forum asking for feedback on his language: Practical Bits of Making a Compiler for a New Language. There's some more discussion of Deca over at Hacker News. By Anton van Straaten at 2012-01-02 02:40 | Implementation | Lambda Calculus | Object-Functional | Type Theory | 52 comments | other blogs | 44365 reads
ThornThorn is
Thorn is implemented by a compiler targeting the JVM and a Java interpreter, and syntactically resembles Scala, at least superficially. One of those "features" is a unique (as far as I know) soft type system:
Concurrency is also a little odd:
A couple of papers are linked to the home page; "Thorn - Robust, Concurrent, Extensible Scripting on the JVM", by Bard Bloom, et. al., is a general description of the language, from which come the quotes above; and "Integrating Typed and Untyped Code in a Scripting Language", by Tobias Wrigstad, et. al., with more information about like types. I have not seen Thorn here before. Apologies if I have just missed it. By Tommy McGuire at 2010-09-22 22:22 | Cross language runtimes | Object-Functional | Parallel/Distributed | 4 comments | other blogs | 19770 reads
Type Classes as Objects and ImplicitsType Classes as Objects and Implicits
Martin Odersky and team's design decisions around how to do type classes in a unified OO and FP language continue to bear fascinating fruit. Implicits look less and less like "poor man's type classes," and more and more like an improvement upon type classes, in my opinion given a quick read of this paper. By Paul Snively at 2010-08-04 22:25 | Implementation | Object-Functional | Scala | Type Theory | 50 comments | other blogs | 41250 reads
Objects to Unify Type Classes and GADTsObjects to Unify Type Classes and GADTs, by Bruno C. d. S. Oliveira and Martin Sulzmann:
A very interesting paper on generalizing and unifying type classes and GADTs. Classes are now first-class values, resulting in a language that resembles a traditional, albeit more elegant, object-oriented language, and which supports a form of first-class "lightweight modules". The language supports the traditional use of implicit type class dispatch, but also supports explicit dispatch, unlike Haskell. The authors suggest this could eliminate much of the duplication in the Haskell standard library of functions that take a type class or an explicit function, eg. insert/insertBy and sort/sortBy, although some syntactic sugar is needed to make this more concise. Classes are open to extension by default, although a class can also be explicitly specified as "sealed", in which case extension is forbidden and you can pattern match on the cases. Furthermore, GADTs can now also carry methods, thus introducing dispatch to algebraic types. This fusion does not itself solve the expression problem, though it does ease the burden through the first-class support of both types of extension. You can see the Scala influences here. I found this paper via the Haskell sub-reddit, which also links to a set of slides. The authors acknowledge Scala as an influence, and as future work, suggest extensions like type families and to support more module-like features, such as nesting and opaque types. By naasking at 2010-02-22 21:51 | Functional | Object-Functional | OOP | Theory | Type Theory | 19 comments | other blogs | 23681 reads
ActorScript(TM): Industrial strength integration of local and nonlocal concurrency for Client-cloud Computing
ActorScript(TM): Industrial strength integration of local and nonlocal concurrency for Client-cloud Computing
by Carl Hewitt, 2009.
ActorScript is based on a mathematical model of computation that treats “Actors†as the universal primitives of concurrent digital computation [Hewitt, Bishop, and Steiger 1973; Hewitt 1977]. Actors been used both as a framework for a theoretical understanding of concurrency, and as the theoretical basis for several practical implementations of concurrent systems.I hope I do not need to introduce Carl Hewitt or his Actor model. This paper is a modern attempt to expose that model via a practical PL. By Andris Birkmanis at 2009-12-14 13:47 | Logic/Declarative | Object-Functional | 8 comments | other blogs | 15319 reads
Factor MixinsMixins, a very interesting post from Slava Pestov's Factor blog.
That's pretty much what I want from an object-functional language. By Manuel J. Simoni at 2009-06-18 04:00 | Object-Functional | Software Engineering | 11 comments | other blogs | 10368 reads
Capabilities for External UniquenessPhilipp Haller and Martin Odersky have submitted Capabilities for External Uniqueness to OOPSLA'09.
A prototype plugin for the Scala compiler can be found on the same page. By James Iry at 2009-04-09 16:26 | Object-Functional | Parallel/Distributed | Type Theory | 3 comments | other blogs | 10016 reads
Generics of a Higher KindGenerics of a Higher Kind. Adriaan Moors, Frank Piessens, and Martin Odersky.
Many readers will already be aware that Scala has added support for higher-kinded generics, related to Haskell's type constructor classes. I believe Scala is the first language to provide this capability in an OO "generics" framework. This ECOOP submission presents this work, with many practical examples. (Consider this penance for my last post...) By Matt Hellige at 2007-12-20 19:54 | Object-Functional | Scala | 3 comments | other blogs | 46588 reads
OCaml Light: A Formal Semantics For a Substantial Subset of the Objective Caml LanguageOCaml Light: a formal semantics for a substantial subset of the Objective Caml language.
From a team including Peter Sewell (Acute, HashCaml, Ott). I continue to believe that things are heating up nicely in mechanized metatheory, which, in the multicore/multiprocessor world in which we now live, is extremely good news. By Paul Snively at 2007-11-26 18:33 | Functional | General | Implementation | Object-Functional | Semantics | Theory | Type Theory | 2 comments | other blogs | 10337 reads
|
Browse archives
Active forum topics |
Recent comments
24 weeks 4 days ago
24 weeks 4 days ago
24 weeks 4 days ago
46 weeks 5 days ago
51 weeks 15 hours ago
1 year 3 days ago
1 year 3 days ago
1 year 3 weeks ago
1 year 7 weeks ago
1 year 7 weeks ago