@@ -150,12 +150,12 @@ namespace purescript {
151 }; // class boxed::weak
151 }; // class boxed::weak
153− class ref {
153+ class recur {
154 std::shared_ptr<boxed> sptr;
154 std::shared_ptr<boxed> sptr;
155 std::shared_ptr<boxed::weak> wptr;
155 std::shared_ptr<boxed::weak> wptr;
158− ref() : sptr(std::make_shared<boxed>())
158+ recur() : sptr(std::make_shared<boxed>())
159 , wptr(std::make_shared<boxed::weak>(*sptr)) {}
159 , wptr(std::make_shared<boxed::weak>(*sptr)) {}
161 operator const boxed&() const {
161 operator const boxed&() const {
@@ -175,7 +175,7 @@ namespace purescript {
177 template <typename T>
177 template <typename T>
178− auto operator=(T&& right) -> ref& {
178+ auto operator=(T&& right) -> recur& {
179 *sptr = std::forward<T>(right);
179 *sptr = std::forward<T>(right);
180 *wptr = *sptr;
180 *wptr = *sptr;
181 return *this;
181 return *this;
@@ -184,7 +184,7 @@ namespace purescript {
184 class weak {
184 class weak {
185 std::shared_ptr<boxed::weak> wptr;
185 std::shared_ptr<boxed::weak> wptr;
187− weak(const ref& r) : wptr(r.wptr) {}
187+ weak(const recur& r) : wptr(r.wptr) {}
189 operator boxed() const {
189 operator boxed() const {
190 return *wptr;
190 return *wptr;
@@ -197,8 +197,8 @@ namespace purescript {
197 auto operator()(const boxed& arg) const -> boxed {
197 auto operator()(const boxed& arg) const -> boxed {
198 return static_cast<boxed>(*wptr)(arg);
198 return static_cast<boxed>(*wptr)(arg);
200− }; // class ref::weak
200+ }; // class recur::weak
201− }; // class boxed::ref
201+ }; // class boxed::recur
203 }; // class boxed
203 }; // class boxed