Skip to content

Instantly share code, notes, and snippets.

<?hh
function f(?int $x): ?int {
if ($x === null) return $x;
else return $x * 2;
}
function x(): ?int {
return null;
}
FROM ubuntu
ENV DEBIAN_FRONTEND noninteractive
RUN apt-get -y install wget
RUN wget -O - http://dl.hhvm.com/conf/hhvm.gpg.key | apt-key add -
RUN echo deb http://dl.hhvm.com/ubuntu trusty main | tee /etc/apt/sources.list.d/hhvm.list
RUN apt-get update
RUN apt-get -y install hhvm
<?hh
function addOne(int $x): int {
return $x + 1;
}
function main() {
addOne(42);
addOne('foo');
}
<?php
mb_internal_encoding("UTF-8");
function λ($fn) {
list($args, $body) = explode('=>', $fn, 2);
$args = trim($args);
$args = ltrim($args, '(');
$args = rtrim($args, ')');
@asm89
asm89 / a.php
Created February 19, 2014 21:40
Generators in HHVM and PHP
<?php
function xs() {
$i = 0;
while (true) {
yield $i++;
}
}
$xs = xs();
@asm89
asm89 / gist:8622724
Created January 25, 2014 20:08
Memory leak in hhvm?
<?php
class Foo
{
private $bar;
public function __construct(Bar $bar)
{
$this->bar = $bar;
}
}
<?php
$xs = array(42);
foreach ($xs as $x) {}
var_dump(current($xs));
$ys = array(42);
foreach ($ys as &$y) {}
var_dump(current($ys));
$it = new ArrayIterator([42]);
@asm89
asm89 / gist:8386608
Created January 12, 2014 16:12
"Inside out" approach to sqrt with convergence as described in https://news.ycombinator.com/item?id=7043943
<?php
function _sqrt($n) {
$x = 1.0;
$y = 0.5 * (1.0 + 1.0/$n);
$z = 1e-10;
while (abs($x/$y - 1) > $z) {
$x = $y;
$y = (0.5 * ($y + $n/$y));
<?php
class App
{
public $callables = [];
public function __construct()
{
register_shutdown_function([$this, 'run']);
}