Skip to content

Instantly share code, notes, and snippets.

🔮
~*srcery*~

lambdahands

🔮
~*srcery*~
  • NYC
View GitHub Profile
@lambdahands
lambdahands / finalTagless.ml
Last active Oct 25, 2019
Final Tagless in OCaml
View finalTagless.ml
(*
* An OCaml implementation of final tagless, inspired from this article by Oleksandr Manzyuk:
* https://oleksandrmanzyuk.wordpress.com/2014/06/18/from-object-algebras-to-finally-tagless-interpreters-2/
*)
module FinalTagless = struct
type eval = { eval : int }
type view = { view : string }
module type ExpT = sig
@lambdahands
lambdahands / objectAlgebras.ml
Last active Nov 6, 2015
Object Algebras in OCaml
View objectAlgebras.ml
(*
* An OCaml implementation of object algebras, inspired from this article by Oleksandr Manzyuk:
* https://oleksandrmanzyuk.wordpress.com/2014/06/18/from-object-algebras-to-finally-tagless-interpreters-2/
*)
module ObjectAlgebras = struct
(* We technically don't need these interfaces;
* added here to compare between the Java implementation *)
type 'a expAlg = < lit : int -> 'a; add : 'a -> 'a -> 'a >
type 'a mulAlg = < mul : 'a -> 'a -> 'a >
@lambdahands
lambdahands / cta.js
Created Dec 9, 2014
flow-type + immutable-js
View cta.js
/* @flow */
var T = require('immutable');
type Branch = T.List<string>
type TrainLine = T.Map<string, Branch>
type CTAMap = T.Map<string, TrainLine>
/*
* Representation of Chicago's train stops and branches
View nse.factor
# A side effect-less Factor operation.
[ ] call
@lambdahands
lambdahands / transfer.sh
Created Sep 30, 2014
Little script to encrypt + upload and download + decrypt files. Uses gpg and http://transfer.sh
View transfer.sh
#!/bin/bash
transfer() {
echo $(gpg -ac --cipher-algo AES256 --sign --force-mdc < $1) | curl http://transfer.sh/$1 -T -
}
recover() {
curl $1 | gpg -ad
}
alias transfer=transfer
View gist:e3d981f8d33e0ce1a5fe
import Data.Text (split, pack, unpack)
splitStr :: Char -> String -> [String]
splitStr c str = map unpack $ split (== c) (pack str)
@lambdahands
lambdahands / core.cljs
Created Nov 5, 2013
Using bound vars as argument to `to-attr` in macro produces no results. Not sure what mistake I'm making.
View core.cljs
(ns my-project.core
(:require-macros [my-project.macros :refer [style-el]]))
(defn create-el [kind]
(. js/document (createElement (name kind))))
(let [div (create-el :div)]
;; Works as expected
(style-el div :width "50%")
You can’t perform that action at this time.