This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| open System.Collections.Generic | |
| /// Imperative depth-first search | |
| let dfs (V, E) = | |
| let visited = HashSet(HashIdentity.Structural) | |
| let stack = Stack[V] | |
| while stack.Count > 0 do | |
| let u = stack.Pop() | |
| if not(visited.Contains u) then | |
| for v in E u do |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| typedef char C;typedef long I; | |
| typedef struct a{I t,r,d[3],p[2];}*A; | |
| #define P printf | |
| #define R return | |
| #define V1(f) A f(w)A w; | |
| #define V2(f) A f(a,w)A a,w; | |
| #define DO(n,x) {I i=0,_n=(n);for(;i<_n;++i){x;}} | |
| I *ma(n){R(I*)malloc(n*4);}mv(d,s,n)I *d,*s;{DO(n,d[i]=s[i]);} | |
| tr(r,d)I *d;{I z=1;DO(r,z=z*d[i]);R z;} | |
| A ga(t,r,d)I *d;{A z=(A)ma(5+tr(r,d));z->t=t,z->r=r,mv(z->d,d,r); |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| >>>+[[-]>>[-]++>+>+++++++[<++++>>++<-]++>>+>+>+++++[> | |
| ++>++++++<<-]+>>>,<++[[>[->>]<[>>]<<-]<[<]<+>>[>]>[<+ | |
| >-[[<+>-]>]<[[[-]<]++<-[<+++++++++>[<->-]>>]>>]]<<]<] | |
| < | |
| [[<]>[[>]>>[>>]+[<<]<[<]<+>>-]>[>]+[->>]<<<<[[<<]<[<] | |
| +<<[+>+<<-[>-->+<<-[>+<[>>+<<-]]]>[<+>-]<]++>>-->[>]> | |
| >[>>]]<<[>>+<[[<]<]>[[<<]<[<]+[-<+>>-[<<+>++>-[<->[<< | |
| +>>-]]]<[>+<-]>]>[>]>]>[>>]>>]<<[>>+>>+>>]<<[->>>>>>> | |
| >]<<[>.>>>>>>>]<<[>->>>>>]<<[>,>>>]<<[>+>]<<[+<<]<] |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| > let pInt : Parser<_, unit> = puint32 |>> int .>> spaces;; | |
| > let str s = pstring s >>. spaces;; | |
| > let keywords = | |
| "if then else let rec in fun".Split ' ' | |
| |> set;; | |
| > let pIdent : Parser<_, unit> = |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| { | |
| open Parse | |
| open Lexing | |
| let ident = function | |
| | "let" -> LET | |
| | "rec" -> REC | |
| | "in" -> IN | |
| | "fun" -> FUN | |
| | "if" -> IF | |
| | "then" -> THEN |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| > let alpha = set['a'..'z'] + set['A'..'Z'];; | |
| > let num = set['0'..'9'];; | |
| > let alphanum = alpha + num;; | |
| > let (|Char|_|) alphabet = function | |
| | c::cs when Set.contains c alphabet -> Some(c, cs) | |
| | _ -> None;; |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| // This code implements a persistent dictionary similar to Map except the | |
| // internal representation is a Dictionary + diffs. This offers different | |
| // performance tradeoffs and, in particular, much faster add and remove when | |
| // used linearly. | |
| // | |
| // For more details, see the following articles from the F# Journal: | |
| // | |
| // http://fsharpnews.blogspot.co.uk/2017/10/the-concestor-set.html | |
| // http://fsharpnews.blogspot.co.uk/2017/10/a-simple-concestor-dictionary.html |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| sudo apt-get update | |
| sudo apt-get install opam elpa-tuareg make m4 gcc zip aspcud emacs libssl-dev ncurses-dev pkg-config libffi-dev bubblewrap linux-tools-common linux-tools-aws | |
| opam init | |
| eval $(opam env --switch=default) | |
| opam install ocamlfind core async async_ssl cohttp yojson ppx_deriving ocp-indent merlin cohttp-async ocamlformat utop |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| enum Expr { | |
| case Int(n: Int) | |
| case Var(x: String) | |
| indirect case Add(f: Expr, g: Expr) | |
| indirect case Mul(f: Expr, g: Expr) | |
| indirect case Pow(f: Expr, g: Expr) | |
| indirect case Ln(f: Expr) | |
| } | |
| func pown(a: Int, b: Int) -> Int { |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| open Printf | |
| type expr = | |
| | Int of int | |
| | Var of string | |
| | Add of expr * expr | |
| | Mul of expr * expr | |
| | Pow of expr * expr | |
| | Ln of expr |