Home » Author Archives: Gavin King

Author Archives: Gavin King

Unique approach to observer/observable pattern in Ceylon

ceylon_logo

The essence of the famous observer/observable pattern is that you have an observable object that produces events of various kinds, and one or more observer objects that register themselves as interested in notification when these events occur. Of course, we represent each kind of event as a type, usually a class, though nothing prevents us from using an interface type ...

Read More »

Tuple and entry destructuring

ceylon_logo

The next release of Ceylon features an interesting range of new language features, including constructors, if and switch expression, let and object expressions, and destructuring of tuples and entries. In this post, I’m going to describe our new syntax for destructuring. A destructuring statement looks a lot like a normal value declaration, except that where we would expect to see ...

Read More »

Useless lying version ranges

ceylon_logo

A frequent request from the Ceylon community is support for version ranges in expressing module dependencies. There’s no doubt that our current module system is too inflexible in terms of dependency resolution in the face of version conflicts, and I have some reasonable ideas about how to address that problem without needing version ranges. But I would like to document ...

Read More »

Ceylon: Planning the future of Ceylon 1.x

ceylon_logo

With the release of Ceylon 1.1, we’ve reached a point where we need to do some serious thinking about what are our priorities for the development of Ceylon 1.1.5, 1.2, and beyond. I definitely don’t yet have a crystal clear vision of what is going to be in 1.2, so we’re also looking for community feedback on this. I do ...

Read More »

Typesafe APIs for the browser

ceylon_logo

A new feature in Ceylon 1.1, that I’ve not blogged about before, is dynamic interfaces. This was something that Enrique and I worked on together with Corbin Uselton, one of our GSoC students. Ordinarily, when we interact with JavaScript objects, we do it from within a dynamic block, where Ceylon’s usual scrupulous typechecking is suppressed. The problem with this approach ...

Read More »

Write in Ceylon, Deploy as OSGI, use in JEE

ceylon_logo

… or how to use Ceylon inside Java EE application servers. The Ceylon language is inherently modular, and is shipped with a complete infrastructure that allows leveraging this modularity out-of-the box. However Ceylon is not captive of its own infrastructure. After the Java and JS interoperability efforts, the 1.1.0 version has brought out-of-the-box compatibility with OSGI, which enables running Ceylon ...

Read More »

Ceylon 1.1.0 is now available

ceylon_logo

Ten whole months in the making, this is the biggest release of Ceylon so far! Ceylon 1.1.0 incorporates oodles of enhancements and bugfixes, with well over 1400 issues closed. Ceylon is a modern, modular, statically typed programming language for the Java and JavaScript virtual machines. The language features a flexible and very readable syntax, a unique and uncommonly elegant static ...

Read More »

Why I distrust wildcards and why we need them anyway

java-logo

In any programming language that combines subtype polymorphism (object orientation) with parametric polymorphism (generics), the question ofvariance arises. Suppose I have a list of strings, type List<String>. Can I pass that to a function which accepts List<Object>? Let’s start with this definition:             interface List<T> { void add(T element); Iterator<T> iterator(); ... } Broken covariance Intuitively, we might ...

Read More »

Ranges and slices

software-development-2-logo

I guess we’ve all seen Dijkstra’s famous argument that a range of natural numbers should be expressed using an inclusive lower bound and exclusive upper bound, and that, as a corollary, arrays should be indexed from 0. It’s a thought provoking little nugget of reasoning, though it fails to contemplate several objections, including that:               ...

Read More »

Object-oriented != imperative

software-development-2-logo

Dear FP community: one of the things I really like about you folks is the rigor you’ve brought to the field of programming language design. Compared to the kind of magical and folklore-based thinking we’ve grown accustomed to in the field of computing, your approach to problems is a massive breath of fresh air. But there’s one area where you ...

Read More »
Do you want to know how to develop your skillset and become a ...

Subscribe to our newsletter to start Rocking right now!

To get you started we give you our best selling eBooks for FREE!
Get ready to Rock!
To download the books, please verify your email address by following the instructions found on the email we just sent you.

THANK YOU!

Close