aboutsummaryrefslogtreecommitdiffstats
path: root/src/tuplr.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/tuplr.hpp')
-rw-r--r--src/tuplr.hpp7
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;
}