Skip to content

Instantly share code, notes, and snippets.

View mathiasverraes's full-sized avatar

Mathias Verraes mathiasverraes

View GitHub Profile
@mathiasverraes
mathiasverraes / flatten.php
Last active August 29, 2015 13:55
simple way to flatten an array
<?php
function flatten(array $array)
{
return call_user_func_array('array_merge', $array);
}
<?php
final class Number // Immutable value object
{
/**
* @param int $arabic
* @throws InvalidArgumentException
*/
public function __construct($arabic) { /* ... */ }
/**
#!/bin/bash
GIT_PS1_SHOWDIRTYSTATE=true
GIT_BRANCH_COLOR="\[\033[38;5;155m\]\[\033[48;5;235m\]"
PS1_EXIT_RED="\[\033[38;5;208m\]\[\033[48;5;52m\]"
# === Initializing static variables ===========================================
case $TERM in
xterm* | screen)
CORNER_TOP="\[\033(0l\033(B\]"
@mathiasverraes
mathiasverraes / example.erl
Last active August 29, 2015 14:01
event sourced aggregate
c(order).
History1 = order:add_orderline([], 15).
History2 = order:add_orderline(History1, 50).
History3 = order:pay_for_order(History2, 20).
% ** exception throw: {payment_amount_is_too_small,{price,65}}
History3 = order:pay_for_order(History2, 65).
History3.
[TestFixture]
public class AuthorizationSpecifications
{
[Test]
public void WhoAreYouGonnaCall()
{
new AuthorizationScenario().
Given(events).
When(command).
InvokedBy(subject/identity).
@mathiasverraes
mathiasverraes / implementation.php
Last active August 29, 2015 14:03
More functional experiments
<?php
define('map', 'map');
function map($collection, $fn) { return array_map($fn, $collection); }
define('fold', 'fold');
function fold($collection, $fn, $initial) { return array_reduce($collection, $fn, $initial); }
define('filter', 'filter');
function filter($collection, $fn) { return array_filter($collection, $fn);}
function compose(array $collection, $fn, $args)
### Keybase proof
I hereby claim:
* I am mathiasverraes on github.
* I am mathiasverraes (https://keybase.io/mathiasverraes) on keybase.
* I have a public key whose fingerprint is 3BCD D69A 3CBA E8EE 380A BA63 C938 C231 E989 3D78
To claim this, I am signing this object:
<?php
final class Basket implements RecordsEvents
{
private $basketCanOnlyContainFiveProducts;
private function __construct()
{
$this->basketCanOnlyContainFiveProducts = new BasketCanOnlyContainFiveProducts();
}
@mathiasverraes
mathiasverraes / gist:b557d4013718a905d8b7
Created August 15, 2014 09:32
The Little Schemer continuation example ported to Erlang
-module(bla).
-compile(export_all).
a_friend(_, []) -> false;
a_friend(_, _) -> true.
main() ->
multiremberco(tuna, [strawberries, tuna, swordfish], fun a_friend/2).
multiremberco(_Atom, [], Cont) ->
<?php
require_once __DIR__ . '/../src/Verraes/Lambdalicious/load.php';
// non generic, only deals with functions with arity=2
function curry($f) {
return function($x) use($f) {
return function($y) use($f, $x) {
return $f($x, $y);
};
};