@@ -144,12 +144,12 @@ namespace purescript {
145 }; // class boxed::weak
145 }; // class boxed::weak
147− class ref {
147+ class recur {
148 std::shared_ptr<boxed> sptr;
148 std::shared_ptr<boxed> sptr;
149 std::shared_ptr<boxed::weak> wptr;
149 std::shared_ptr<boxed::weak> wptr;
152− ref() : sptr(std::make_shared<boxed>())
152+ recur() : sptr(std::make_shared<boxed>())
153 , wptr(std::make_shared<boxed::weak>(*sptr)) {}
153 , wptr(std::make_shared<boxed::weak>(*sptr)) {}
155 operator const boxed&() const {
155 operator const boxed&() const {
@@ -169,7 +169,7 @@ namespace purescript {
171 template <typename T>
171 template <typename T>
172− auto operator=(T&& right) -> ref& {
172+ auto operator=(T&& right) -> recur& {
173 *sptr = std::forward<T>(right);
173 *sptr = std::forward<T>(right);
174 *wptr = *sptr;
174 *wptr = *sptr;
175 return *this;
175 return *this;
@@ -178,7 +178,7 @@ namespace purescript {
178 class weak {
178 class weak {
179 std::shared_ptr<boxed::weak> wptr;
179 std::shared_ptr<boxed::weak> wptr;
181− weak(const ref& r) : wptr(r.wptr) {}
181+ weak(const recur& r) : wptr(r.wptr) {}
183 operator boxed() const {
183 operator boxed() const {
184 return *wptr;
184 return *wptr;
@@ -191,8 +191,8 @@ namespace purescript {
191 auto operator()(const boxed& arg) const -> boxed {
191 auto operator()(const boxed& arg) const -> boxed {
192 return static_cast<boxed>(*wptr)(arg);
192 return static_cast<boxed>(*wptr)(arg);
194− }; // class ref::weak
194+ }; // class recur::weak
195− }; // class boxed::ref
195+ }; // class boxed::recur
197 }; // class boxed
197 }; // class boxed