Skip to content

Instantly share code, notes, and snippets.

@maruks
maruks / sort.erl
Created December 29, 2015 21:41
quick sort
qsort([]) ->
[];
qsort([H | T]) ->
L = [E || E <- T, E < H],
R = [E || E <- T, E > H],
P = [E || E <- T, E =:= H],
qsort(L) ++ [H | P] ++ qsort(R).
@maruks
maruks / tree.rkt
Created February 11, 2016 22:25
sicp 2.2
#lang racket
(define tree-1 '(1 (2 (3 4) 5) (6 7)))
(define (tree-map tree fn)
(if (list? tree)
(map (lambda (x) (tree-map x fn)) tree)
(fn tree)))
(define foo (tree-map tree-1 (lambda (x) (* x x))))
@maruks
maruks / sicp3.rkt
Created April 29, 2016 14:33
sicp3
#lang racket
(define t 0)
(define (reset)
(set! t 0))
(define (f n)
(let ((p t))
(set! t n)
@maruks
maruks / macro.rkt
Created May 6, 2016 00:25
cond-> in racket
(define-syntax thread-first
(syntax-rules ()
[(_ expr (fn args ...))
(fn expr args ...)]
[(_ expr fn)
(fn expr)]))
(define-syntax cond->
(syntax-rules ()
[(_ expr test fn)
@maruks
maruks / anaphoric.rkt
Last active May 23, 2016 17:35
anaphoric macro
(define-syntax (aif stx)
(syntax-case stx ()
[(_ expr then else)
(with-syntax ([it (datum->syntax stx 'it)] )
#'(let ((it expr))
(if it then else)))]))
#lang racket
(define (mlist . elem)
(mcons (car elem)
(if (null? (cdr elem))
'()
(apply mlist (cdr elem)))))
;; has-cycle
@maruks
maruks / erl.el
Created September 22, 2016 22:09
use rebar3 erlang shell in emacs
(setq inferior-erlang-machine "rebar3")
(setq inferior-erlang-machine-options '("shell"))
(setq inferior-erlang-shell-type nil)
isSorted :: Tree -> Bool
isSorted t = isSortedTree t minBound maxBound
insert :: Tree -> Int -> Tree
insert Leaf e = Node e Leaf Leaf
insert n@(Node v l r) e
| v < e = Node v l (insert r e)
| v > e = Node v (insert l e) r
| otherwise = n
@maruks
maruks / main.erl
Created December 7, 2016 11:45
GC benchmark ported to Erlang
-module(main).
-define(WINDOW_SIZE, 200000).
-define(MSG_COUNT, 1000000).
-define(MSG_SIZE, 1024).
-export([main/0]).
push_message(N) ->
Start = erlang:monotonic_time(),
Bin = list_to_binary(lists:duplicate(?MSG_SIZE, N rem 255)),
-module(main).
-define(WINDOW_SIZE, 200000).
-define(MSG_COUNT, 1000000).
-define(MSG_SIZE, 1024).
-export([main/0]).
push_message(N, Tab) ->
Start = erlang:monotonic_time(),
Bin = list_to_binary(lists:duplicate(?MSG_SIZE, N rem 255)),