diff --git a/CHANGELOG.md b/CHANGELOG.md
index 296107a18..c61bcb6c0 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -4,6 +4,17 @@ All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](http://keepachangelog.com/).
## [Unreleased]
+### Added
+- `IterableLens#mapping`, an `Iso` that maps values
+
+### Changed
+- `TypeSafeKey.Simple` now has a default `#apply` implementation
+
+### Fixed
+- mapped `TypeSafeKey` instances can be used for initial put in an `HMap`, and the base key can be used to retrieve them
+- Merged pull request fixing issue storing values at mapped `TypeSafeKey` in `singletonHMap`
+
+## [3.0.1] - 2018-05-13
### Changed
- `ToMap` accepts an `Iterable` covariant in `Map.Entry`
- `RecursiveResult#invert` is also a `RecursiveResult`
@@ -312,7 +323,8 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/).
- `Monadic/Dyadic/TriadicFunction`, `Predicate`, `Tuple2`, `Tuple3`
- `Functor`, `BiFunctor`, `ProFunctor`
-[Unreleased]: https://github.com/palatable/lambda/compare/lambda-3.0.0...HEAD
+[Unreleased]: https://github.com/palatable/lambda/compare/lambda-3.0.1...HEAD
+[3.0.1]: https://github.com/palatable/lambda/compare/lambda-3.0.0...lambda-3.0.1
[3.0.0]: https://github.com/palatable/lambda/compare/lambda-2.1.1...lambda-3.0.0
[2.1.1]: https://github.com/palatable/lambda/compare/lambda-2.1.0...lambda-2.1.1
[2.1.0]: https://github.com/palatable/lambda/compare/lambda-2.0.0...lambda-2.1.0
diff --git a/README.md b/README.md
index 5d8eff2e7..a08d8dcc8 100644
--- a/README.md
+++ b/README.md
@@ -57,14 +57,14 @@ Add the following dependency to your:
com.jnape.palatablelambda
- 3.0.0
+ 3.0.1
```
`build.gradle` ([Gradle](https://docs.gradle.org/current/userguide/dependency_management.html)):
```gradle
-compile group: 'com.jnape.palatable', name: 'lambda', version: '3.0.0'
+compile group: 'com.jnape.palatable', name: 'lambda', version: '3.0.1'
```
Examples
diff --git a/pom.xml b/pom.xml
index 21483d5fe..ac48a3a91 100644
--- a/pom.xml
+++ b/pom.xml
@@ -9,7 +9,7 @@
lambda
- 3.0.1
+ 3.0.2jarLambda
diff --git a/src/main/java/com/jnape/palatable/lambda/adt/hmap/HMap.java b/src/main/java/com/jnape/palatable/lambda/adt/hmap/HMap.java
index 83fc47f11..e2e3fd3c1 100644
--- a/src/main/java/com/jnape/palatable/lambda/adt/hmap/HMap.java
+++ b/src/main/java/com/jnape/palatable/lambda/adt/hmap/HMap.java
@@ -196,7 +196,7 @@ public static HMap emptyHMap() {
* @return a singleton HMap
*/
public static HMap singletonHMap(TypeSafeKey, V> key, V value) {
- return new HMap(singletonMap(key, value));
+ return emptyHMap().put(key, value);
}
/**
diff --git a/src/main/java/com/jnape/palatable/lambda/adt/hmap/TypeSafeKey.java b/src/main/java/com/jnape/palatable/lambda/adt/hmap/TypeSafeKey.java
index a71e4c04c..8bae70949 100644
--- a/src/main/java/com/jnape/palatable/lambda/adt/hmap/TypeSafeKey.java
+++ b/src/main/java/com/jnape/palatable/lambda/adt/hmap/TypeSafeKey.java
@@ -6,6 +6,8 @@
import com.jnape.palatable.lambda.lens.Iso;
import com.jnape.palatable.lambda.lens.LensLike;
+import java.util.Objects;
+
/**
* An interface representing a parametrized key for use in {@link HMap}s. Additionally, every {@link TypeSafeKey} is an
* {@link Iso} from the type the value is stored as to the type it's viewed and set as (on the way in / on the way out).
@@ -88,10 +90,8 @@ public boolean equals(Object obj) {
static Simple typeSafeKey() {
return new TypeSafeKey.Simple() {
@Override
- @SuppressWarnings("unchecked")
- public