Skip to content

Instantly share code, notes, and snippets.

🔮
~*~*sorcery*~*~

Philip Diaz lambdahands

🔮
~*~*sorcery*~*~
  • Chicago
Block or report user

Report or block lambdahands

Hide content and notifications from this user.

Learn more about blocking users

Contact Support about this user’s behavior.

Learn more about reporting abuse

Report abuse
View GitHub Profile
@lambdahands
lambdahands / finalTagless.ml
Last active Aug 2, 2018
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.