3 class HList implements IteratorAggregate{
4 public function __construct() {
5 if(!php_Boot::$skip_constructor) {
8 public function getIterator() {
9 return $this->iterator();
11 public function map($f) {
17 $b->add(call_user_func_array($f, array($v)));
22 public function filter($f) {
28 if(call_user_func_array($f, array($v))) {
35 public function join($sep) {
45 $s .= Std::string($l[0]);
50 public function toString() {
60 $s .= Std::string($l[0]);
63 return "{" . $s . "}";
65 public function iterator() {
66 return new _hx_list_iterator($this);
68 public function remove($v) {
78 if(($this->q === $l)) {
89 public function clear() {
94 public function isEmpty() {
95 return $this->h === null;
97 public function pop() {
98 if($this->h === null) {
102 $this->h = $this->h[1];
103 if($this->h === null) {
109 public function last() {
110 return HList_0($this);
112 public function first() {
113 return HList_1($this);
115 public function push($item) {
116 $x = array($item, &$this->h);
118 if($this->q === null) {
123 public function add($item) {
124 $x = array($item, null);
125 if($this->h === null) {
136 public function __call($m, $a) {
137 if(isset($this->$m) && is_callable($this->$m))
138 return call_user_func_array($this->$m, $a);
139 else if(isset($this->»dynamics[$m]) && is_callable($this->»dynamics[$m]))
140 return call_user_func_array($this->»dynamics[$m], $a);
141 else if('toString' == $m)
142 return $this->__toString();
144 throw new HException('Unable to call «'.$m.'»');
146 function __toString() { return $this->toString(); }
148 function HList_0(&$»this) {
149 if($»this->q === null) {
155 function HList_1(&$»this) {
156 if($»this->h === null) {