User loginNavigation |
Who's onlineEarlier today I enabled a drupal feature that list the names of users currently online. It was on the bottom of the right-hand navigation bar, and looked something like this: Who's online Matt M Some might see this as a privacy violation or otherwise object. Since I heard complaints I disabled this feature. What do you think? What is the most bizarre thing you have seen done with TeX?A fun thread at stackexhange. By Ehud Lamm at 2013-03-27 07:46 | Fun | login or register to post comments | other blogs | 10925 reads
Dependent Types for JavaScriptDependent Types for JavaScript, by Ravi Chugh, David Herman, Ranjit Jhala:
Some good progress on inferring types for a very dynamic language. Explicit type declarations are placed in comments that start with "/*:".
/*: x∶Top → {ν ∣ite Num(x) Num(ν) Bool(ν)} */
function negate(x) {
if (typeof x == "number") { return 0 - x; }
else { return !x; }
}
By naasking at 2013-03-23 15:08 | Object-Functional | Theory | Type Theory | 128 comments | other blogs | 13835 reads
Concurrent RevisionsConcurrent Revisions is a Microsoft Research project doing interesting work in making concurrent programming scalable and easier to reason about. These papers work have been mentioned a number of times here on LtU, but none of them seem to have been officially posted as stories. Concurrent Revisions are a distributed version control-like abstraction [1] for concurrently mutable state that requires clients to specify merge functions that make fork-join deterministic, and so make concurrent programs inherently composable. The library provide default merge behaviour for various familiar objects like numbers and lists, and it seems somewhat straightforward to provide a merge function for many other object types. They've also extended the work to seamlessly integrate incremental and parallel computation [2] in a fairly intuitive fashion, in my opinion. Their latest work [3] extends these concurrent revisions to distributed scenarios with disconnected operations, which operate much like distributed version control works with source code, with guarantees of eventual consistency. All in all, a very promising approach, and deserving of wider coverage. [1] Sebastian Burckhardt and Daan Leijen, Semantics of Concurrent Revisions, in European Symposium on Programming (ESOP'11), Springer Verlag, Saarbrucken, Germany, March 2011 By naasking at 2013-03-18 13:29 | Implementation | OOP | Parallel/Distributed | 13 comments | other blogs | 9037 reads
Feature-Oriented Programming with Object AlgebrasFeature-Oriented Programming with Object Algebras, by Bruno C.d.S. Oliveira, Tijs van der Storm, Alex Loh, William R. Cook:
A follow-up to Object Algebras, this new paper addresses a few of the limitations described in that LtU thread by adding type constructor polymorphism to increase their safety. The paper describes an implementation in Scala, which is the only widely available statically typed OOP language with a sufficiently powerful type system needed to support FOP. This new work also describes some composition mechanisms for object algebras in the context of more expressive languages. By naasking at 2013-03-16 14:53 | Implementation | OOP | login or register to post comments | other blogs | 7141 reads
Twenty Reasons Why You Should Use Boxer (Instead of LOGO)An old paper on boxer that I found while reviewing related work for a paper I'm writing, abstract:
As an early graphical language, it is quite interesting. It is one of the first works I know of that dive into concreteness (they call naive realism):
As well as one of the first languages to use spatial relationships in programming (the only other I know being...agent sheets):
But what I really like is this notion of pokability:
And so on.... How OCaml type checker works -- or what polymorphism and garbage collection have in commonHow OCaml type checker works -- or what polymorphism and garbage collection have in common
As usual with Oleg, there's a lot going on here. Personally, I see parallels with "lambda with letrec" and "call-by-push-value," although making the connection with the latter takes some squinting through some of Levy's work other than his CBPV thesis. Study this to understand OCaml type inference and/or MLF, or for insights into region typing, or, as the title suggests, for suggestive analogies between polymorphism and garbage collection. By Paul Snively at 2013-03-10 16:25 | Functional | Implementation | Type Theory | 1 comment | other blogs | 10996 reads
Socio-PLT: Principles for Programming Language AdoptionIn their survey paper and their website, Leo Meyerovich and Ari Rabkin take Jared Diamond approach to explaining Programming Language adoption.
There are also videos of talks available from Splash 2012 and Google Tech Talks. See also previous discussions. By bashyal at 2013-02-27 03:49 | General | Teaching & Learning | 1 comment | other blogs | 7097 reads
Simple Generators v. Lazy EvaluationOleg Kiselyov, Simon Peyton-Jones and Amr Sabry: Simple Generators:
This is fascinating work that shows how to gain the benefits of lazy evaluation - decoupling of producers, transformers, and consumers of data, and producing only as much data as needed - in a strict, effectful setting that works well with resources that need to be disposed of once computation is done, e.g. file handles. The basic idea is that of Common Lisp signal handling: use a hierarchical, dynamically-scoped chain of handler procedures, which get called - on the stack, without unwinding it - to parameterize code. In this case, the producer code (which e.g. reads a file character by character) is the parameterized code: every time data (a character) is produced, it calls the dynamically innermost handler procedure with the data (it yields the data to the handler). This handler is the data consumer (it could e.g. print the received character to the console). Through dynamic scoping, each handler may also have a super-handler, to which it may yield data. In this way, data flows containing multiple transformers can be composed. I especially like the OCaml version of the code, which is just a page of code, implementing a dynamically-scoped chain of handlers. After that we can already write map and fold in this framework (fold using a loop and a state cell, notably.) There's more sample code. This also ties in with mainstream yield. By Manuel J. Simoni at 2013-02-21 13:30 | Fun | Paradigms | Software Engineering | 10 comments | other blogs | 10647 reads
Photoshop 1.0 Source CodeSome people are amazed that it's in Pascal... HN discussion is here. |
Browse archivesActive forum topics |
Recent comments
6 hours 26 min ago
8 hours 9 min ago
8 hours 38 min ago
10 hours 43 min ago
11 hours 22 min ago
14 hours 33 min ago
15 hours 17 min ago
16 hours 53 min ago
21 hours 7 min ago
1 day 2 hours ago