Clean up (#64)

* [readme] use valid haskell example

* [tree] Immediately return this expression instead of assigning it to the temporary variable "treeList".

* [tree] Use normal defensive copying for array fields
This commit is contained in:
Paul Campbell 2019-01-06 12:33:19 +00:00 committed by GitHub
parent 7f5657e8e8
commit b2fe2f4557
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 8 additions and 12 deletions

View file

@ -34,11 +34,12 @@
if you try and use them together. e.g.: if you try and use them together. e.g.:
#+BEGIN_SRC haskell #+BEGIN_SRC haskell
type PhoneNumber = String newtype PhoneNumber = PhoneNumber String
type Name = String newtype Name = Name String
type PhoneBook = [(Name,PhoneNumber)] newtype PhoneBookEntry = PhoneBookEntry (Name, PhoneNumber)
newtype PhoneBook = PhoneBook [PhoneBookEntry]
#+END_SRC #+END_SRC
In Java we don't have the ability to have that true alias, so TypeAlias is In Java we don't have the ability to have that true alias, so TypeAlias is
more of a type-wrapper. It's as close as I could get to a Haskell type alias more of a type-wrapper. It's as close as I could get to a Haskell type alias
in Java. in Java.

View file

@ -50,7 +50,7 @@ class GeneralisedTree<T> implements Tree<T>, TreeMapper<T> {
*/ */
GeneralisedTree(final T item, final Collection<Tree<T>> subTrees) { GeneralisedTree(final T item, final Collection<Tree<T>> subTrees) {
this.item = item; this.item = item;
this.subTrees = Collections.unmodifiableList(new ArrayList<>(subTrees)); this.subTrees = new ArrayList<>(subTrees);
} }
/** /**
@ -77,6 +77,6 @@ class GeneralisedTree<T> implements Tree<T>, TreeMapper<T> {
*/ */
@Override @Override
public List<Tree<T>> subTrees() { public List<Tree<T>> subTrees() {
return subTrees; return new ArrayList<>(subTrees);
} }
} }

View file

@ -29,7 +29,6 @@ import java.util.Collection;
import java.util.List; import java.util.List;
import java.util.function.Function; import java.util.function.Function;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import java.util.stream.Stream;
/** /**
* A mutable {@link Tree}. * A mutable {@link Tree}.
@ -126,12 +125,8 @@ class MutableTree<T> implements Tree<T>, TreeMapper<T> {
} }
@Override @Override
@SuppressWarnings("unchecked")
public List<Tree<T>> subTrees() { public List<Tree<T>> subTrees() {
final Stream<MutableTree<T>> mutableTreeStream = mySubTrees.stream(); return new ArrayList<>(mySubTrees);
final Stream<Tree<T>> treeStream = mutableTreeStream.map(Tree.class::cast);
final List<Tree<T>> treeList = treeStream.collect(Collectors.toList());
return treeList;
} }
/** /**