diff options
Diffstat (limited to 'src/tuplr.hpp')
-rw-r--r-- | src/tuplr.hpp | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/src/tuplr.hpp b/src/tuplr.hpp index 02d79af..7494cdb 100644 --- a/src/tuplr.hpp +++ b/src/tuplr.hpp @@ -242,6 +242,7 @@ struct ATuple : public AST { _vec = newvec; } const AST* head() const { assert(_len > 0); return _vec[0]; } + AST* head() { assert(_len > 0); return _vec[0]; } const AST* at(size_t i) const { assert(i < _len); return _vec[i]; } AST*& at(size_t i) { assert(i < _len); return _vec[i]; } size_t size() const { return _len; } @@ -290,7 +291,7 @@ struct AType : public ATuple { bool concrete() const { switch (kind) { case VAR: return false; - case PRIM: return at(0)->str() != "Nothing"; + case PRIM: return head()->str() != "Nothing"; case EXPR: FOREACH(const_iterator, t, *this) { AType* kid = (*t)->to<AType*>(); @@ -307,7 +308,7 @@ struct AType : public ATuple { else switch (kind) { case VAR: return id == rt->id; - case PRIM: return at(0)->str() == rt->at(0)->str(); + case PRIM: return head()->str() == rt->head()->str(); case EXPR: return ATuple::operator==(rhs); } return false; // never reached @@ -398,7 +399,7 @@ struct ADef : public ACall { if (!sym) { const ATuple* tup = at(1)->to<const ATuple*>(); if (tup && !tup->empty()) - return tup->at(0)->to<const ASymbol*>(); + return tup->head()->to<const ASymbol*>(); } return sym; } |