func (al *ArrayLiteral) String() string {
	var out bytes.Buffer
	elements := []string{}
	for _, el := range al.Elements {
		elements = append(elements, el.String())
	}
	out.WriteString("[")
	out.WriteString(strings.Join(elements, ", "))
	out.WriteString("]")
	return out.String()
}
String - loops through the array literal's elements and prints them. Satisfies our Node interface
package ast
import (
	"bytes"
	"strings"
	"github.com/bradford-hamilton/monkey-lang/token"
)
type ArrayLiteral struct {
	Token    token.Token  
	Elements []Expression
}
func (al *ArrayLiteral) expressionNode() {}
func (al *ArrayLiteral) TokenLiteral() string { return al.Token.Literal }