[isabelle-dev] ADTs in Scala
Makarius
makarius at sketis.net
Sat Apr 14 21:14:56 CEST 2012
On Sat, 14 Apr 2012, Alexander Krauss wrote:
>> Accordingly the solution in Scala is:
>>
>> final class Graph[Key, A] private(rep: SortedMap[Key, (A,
>> (SortedSet[Key], SortedSet[Key]))])
>> ^^^^^^^
>
> In Java:
>
> public final class Graph {
>
> private final SortedMap<...> rep;
>
> // private constructor:
>
> private Graph(SortedMap<...> rep) {
> this.rep = rep;
> }
>
> // public static "factory methods"
>
> public static Graph empty() {
>
>
> }
>
> ...
> }
>
>
> Note that the so-called "default constructor" is only added when no
> constructor is defined explicitly. So the above is fine, modulo the usual
> Java verbosity.
OK, this means that Odersky did not introduce another workaround for a
Java problem, but merely provide his own short notion for what was there
already.
> For good contemporary Java coding practices, Joshua Bloch is the
> reference:
> http://www.amazon.com/Effective-Java-Edition-Joshua-Bloch/dp/0321356683/
I did not mean to engage in Java. For me it is just the accidental
implementation language of some JVM-based frameworks that are used in
Isabelle/Scala.
Makarius
More information about the isabelle-dev
mailing list