Skip to content

Instantly share code, notes, and snippets.

View 0xYUANTI's full-sized avatar

JJS 0xYUANTI

View GitHub Profile

Keybase proof

I hereby claim:

  • I am 0xyuanti on github.
  • I am yuanti (https://keybase.io/yuanti) on keybase.
  • I have a public key ASAVjKmujfL5xp2V7HHVm9HVxufwaZkwQp7W34Mu4c6mnwo

To claim this, I am signing this object:

object icm {
// Types
type Player = Int
type Chips = Double
type Stacks = Map[Player, Chips]
type Rank = Int
type Money = Double
@0xYUANTI
0xYUANTI / bench.erl
Created February 16, 2011 12:41
disk_log vs file
-module(bench).
-compile(export_all).
%% Luke Gorrie's favourite profiling macro.
-define(TIME(Tag, Expr),
(fun() ->
%% NOTE: timer:tc/4 does an annoying 'catch' so we
%% need to wrap the result in 'ok' to be able to
%% detect an unhandled exception.
{__TIME, __RESULT} =
// this seems like a useful FS2 Stream function, is it already built in?
// Folds a function into a stream and gives you a stream of the intermediate
// accumulator values, i.e.:
// > val ones = Stream.iterate(1)(x => x)
// > ones.foldIncremental(0)(_ + _) take 3 toList
// ==> List[Int] = List(1, 2, 3)
implicit class StreamOps[F[_], O](private val self: Stream[F, O]) {
def foldIncremental[O2](z: O2)(f: (O2, O) => O2): Stream[F, O2] =
self.mapAccumulate(z) {
import fs2.interop.scalaz._
import fs2.{Scheduler, Strategy, time}
import scala.concurrent.duration._
import scalaz.concurrent.{Task => ZTask}
// porting some code from scalaz.concurrent.chan to fs2...
// we need to call a few external rest apis every N seconds and process the results.
object App {
def main(args: Array[String]): Unit = {
adding
type intLeaf = | Leaf int;
results in
jakob@crunchy:/usr/home/jakob/git/botcloud/telegram-re$ rebuild -pkg cohttp.lwt wtf.native
+ /usr/local/bin/ocamldep.opt -modules -pp refmt -impl wtf.re | tee wtf.re.depends wtf.ml.depends
Fatal error: exception Not_found
File "wtf.re", line 1:
/* example from cohttp readme, works with rebuild -pkg cohttp.lwt wtf.native */
open Lwt;
open Cohttp;
open Cohttp_lwt_unix;
let coroutine =
Client.get (Uri.of_string "http://www.reddit.com/") >>= fun (resp, body) => {
let code = resp |> Response.status |> Code.code_of_status;
Printf.printf "Response code: %d\n" code;
@0xYUANTI
0xYUANTI / gist:4176609
Created November 30, 2012 15:57
The reftrick: assembly
{function, recv, 1, 9}.
{label,8}.
{line,[{location,"reftrick.erl",33}]}.
{func_info,{atom,reftrick},{atom,recv},1}.
{label,9}.
{test,is_eq_exact,{f,10},[{x,0},{integer,0}]}.
{move,{atom,ok},{x,0}}.
return.
{label,10}.
{allocate_zero,1,1}.
@0xYUANTI
0xYUANTI / gist:4176431
Created November 30, 2012 15:29
The reftrick: shell dump
Erlang R15B02 (erts-5.9.2) [source] [64-bit] [smp:4:4] [async-threads:0] [hipe] [kernel-poll:false]
Eshell V5.9.2 (abort with ^G)
1> c(reftrick).
{ok,reftrick}
2> spawn(fun() -> reftrick:plain() end).
<0.38.0>
time(reftrick): 3.410ms recv1
time(reftrick): 704.826ms recv2
3> spawn(fun() -> reftrick:plain() end).
@0xYUANTI
0xYUANTI / gist:4176424
Created November 30, 2012 15:28
The reftrick: code
-module(reftrick).
-compile(export_all).
%% Luke Gorrie's favourite profiling macro.
-define(TIME(Tag, Expr),
(fun() ->
%% NOTE: timer:tc/4 does an annoying 'catch' so we
%% need to wrap the result in 'ok' to be able to
%% detect an unhandled exception.
{__TIME, __RESULT} =