@@ -31,6 +31,7 @@
3131#include <vector>
3232#include <unordered_map>
3333#include <stdexcept>
34+#include "map_key.hh"
3435
3536namespace PureScript {
3637
@@ -40,9 +41,6 @@ using nullptr_t = std::nullptr_t;
4041
4142const bool undefined = false;
4243
43−// TODO: deprecated -- remove
44−#define KEY(k) k
45−
4644// A variant data class designed to provide some features of dynamic typing.
4745//
4846class any {
@@ -69,7 +67,7 @@ class any {
6967 };
7068 static constexpr as_thunk unthunk = as_thunk{};
7169
72− using map = std::unordered_map<std::string, const any>;
70+ using map = std::unordered_map<map_key_t, const any, map_key_t::hasher, map_key_t::equal>;
7371 using vector = std::vector<any>;
7472 using fn = std::function<any(const any&)>;
7573 using eff_fn = std::function<any()>;
@@ -246,7 +244,7 @@ class any {
246244 operator const map&() const;
247245 operator const vector&() const;
248246
249− auto operator[](const char []) const -> const any&;
247+ auto operator[](const map_key_t&) const -> const any&;
250248 auto operator[](const vector::size_type) const -> const any&;
251249 auto operator[](const any&) const -> const any&;
252250