Skip to content

Instantly share code, notes, and snippets.

@frabbit
frabbit / Main.hx
Last active December 31, 2015 22:39
Monad Transformers
using FunctorSyntax;
using ArrayT;
enum Either<L,R> {
Left(l:L);
Right(r:R);
}
interface Functor<F> {
public function fmap<A,B>(x:F<A>, f:A->B):F<B>;
@frabbit
frabbit / Test.hx
Last active January 1, 2016 14:29
TCP in Haxe
using Using;
class Using {
public static function fmap <M,A,B>(x:Of<M, A>, f:A->B, functor:Functor<M>):M<B> {...}
}
var x : Of<Map<Int, In>, String> = [ 1 => "foo" ];
x.| // completion (field access) here (Map functions like exists, get etc. and from using fmap, because we "follow" first (because lifting is nonambigious here, because we always apply the In type from the right)
class MyMacros {
macro public static function configX (a:Expr):ExprFunc<Void->Expr> {
return function ():Expr {
return macro ($a);
}
}
macro public static function configPlus (a:Expr):ExprFunc<Expr->Expr> {
return function (x:Expr):Expr {
return switch (Type.typeof(v)) {
case TObject, TClass(_): true;
case _ : false;
}
// becomes something like:
_g = Type.typeof(v);
return switch ((@:exhaustive _g.index)) {
interface T1<X> {
public function foo <A>(a:X, c:A):Void;
}
abstract A1<X>(X) {
public function new (x:Dynamic) this = x;
}
class U1 implements T1<A1<Dynamic>> {
Fatal error: exception Not_found
Raised at file "hashtbl.ml", line 97, characters 23-32
Called from file "gencommon.ml", line 4544, characters 30-60
Called from file "type.ml", line 1670, characters 27-31
Called from file "type.ml", line 1654, characters 11-15
Called from file "type.ml", line 1713, characters 26-30
Called from file "type.ml", line 1672, characters 32-38
Called from file "type.ml", line 1694, characters 11-15
Called from file "list.ml", line 57, characters 20-23
Called from file "type.ml", line 1680, characters 26-41
@frabbit
frabbit / Test
Last active August 29, 2015 14:00
class Foo {
using MyModule;
import MyObject;
public static function main () {
import MyObject;
using MyModule2;
import MyStatics.myMethod;
myMethod(4);
}
Test.hx:240: Generated at: 2014-05-01 17:58:08
Test.hx:242: START
Test.hx:224: ABORTED : IndexError('string index out of range',) in unit.TestXML.testBasic
Test.hx:227: STACK :
Called from unit.py line 11775
Called from unit.py line 11422
Called from unit.py line 3755
Called from unit.py line 30247
Called from unit.py line 2319
Parsing bin/xml/neko.xml
Processing types
...............................................................................................................................................................................
Generating navigation
Generating to bin/pages
...............................................................................................................................................................
Generated 309 types in 20 packages
Copying resources from /media/frabbit/data/work/projects/github/dox-py/themes/default/resources
Done (11.01s)
16742913 function calls (16397456 primitive calls) in 11.586 seconds
| a,((TMono x) as b) ->
(match !x with
| None -> if not (link x b a) then error [cannot_unify t1 t2]
| _ -> error [cannot_unify t1 t2])
| ((TMono x) as a),b ->
(match !x with
| None -> if not (link x a b) then error [cannot_unify t1 t2]
| _ -> error [cannot_unify t1 t2])