Skip to content

Instantly share code, notes, and snippets.

View evansb's full-sized avatar

Evan Sebastian evansb

  • Singapore
View GitHub Profile
type DataProvider<TKey extends string, TData> = {
getData(): TData
}
type ProvidedData<K1 extends string, T1> = { [key in K1]: T1 }
function getDataFromProviders<K1 extends string, T1>(p1: DataProvider<K1, T1>): ProvidedData<K1, T1>
function getDataFromProviders<K1 extends string, T1, K2 extends string, T2>(p1: DataProvider<K1, T1>, p2: DataProvider<K2, T2>): ProvidedData<K1, T1> & ProvidedData<K2, T2>
function getDataFromProviders(...providers: DataProvider<any, any>[]): {[name: string]: any } {
module.exports = React.createClass
mixins: [UITheme]
getInitialState: ->
items: []
isInfiniteLoading: false
filter: null
firstTimeFetch: true
hasNoMore: false
componentWillMount: ->
FilterStore.listen (filter) =>
Conventions: When I specify "simple" as result it means simply return all json of format { table_field_name: table_field_value }
GET /achievements
Table: achievements
Return list of all achievements.
GET /annotations/:code_id
Table: annotate

Keybase proof

I hereby claim:

  • I am evansb on github.
  • I am evansb (https://keybase.io/evansb) on keybase.
  • I have a public key whose fingerprint is E018 7B67 E241 2D5D 693C 6F72 6214 1251 AB9D F1E4

To claim this, I am signing this object:

@evansb
evansb / Cont.hs
Created January 18, 2015 13:14
Continuation Passing Style in Haskell
{-# LANGUAGE InstanceSigs #-}
import Control.Applicative
import Control.Monad
import Control.Monad.Trans.Writer
-- Here is a direct style pythagoras function
-- There are two noticeable things in the function body.
-- 1. Evaluation order of x * x vs y * y is unknown/implicit.
-- 2. We don't care what happens to the final value (implicit continuation).
pyth :: (Floating a) => a -> a -> a
@evansb
evansb / BST.ml
Created January 1, 2015 17:17
Binary Search Tree in OCAML
open Core.Std
module type COMPARABLE = sig
type t
val compare : t -> t -> int
end
module type NODE = sig
type 'a t
@evansb
evansb / memoize.hs
Last active August 29, 2015 14:12
Memoization hack in Haskell, using unsafe IO operation.
module Memoize (memoize) where
import Debug.Trace
import Data.Hashable
import System.IO.Unsafe
import qualified Data.HashTable.IO as H
type HashTable k v = H.CuckooHashTable k v
@evansb
evansb / avl.hs
Last active March 26, 2017 16:33
Purely Functional AVL Tree
module AVLZipper (singleton, empty , fromList , maximum , minimum) where
import Prelude hiding (minimum, maximum)
import Control.Applicative hiding (empty)
import Control.Monad
import Control.Monad.Trans.State
import Control.Monad.Trans.Identity
import Debug.Trace
@evansb
evansb / bundles.vim
Last active August 29, 2015 14:10
bundles
" Here come the bundles
Bundle 'gmarik/vundle'
Bundle 'Valloric/YouCompleteMe'
Bundle 'Lokaltog/powerline-fonts'
Bundle 'Lokaltog/vim-easymotion'
Bundle 'MarcWeber/vim-addon-mw-utils'
Bundle 'Raimondi/delimitMate'
Bundle 'bling/vim-airline'
Bundle 'bling/vim-bufferline'
@evansb
evansb / .vimrc
Last active August 29, 2015 14:10
set encoding=utf-8
scriptencoding utf-8
set nocompatible
filetype off
"let $PATH='/Users/evan/.opam/system/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Users/evan/School/Haskell/.cabal-sandbox/bin:/Users/evan/.cabal/bin'
if has("gui_running")
set guifont=Source\ Code\ Pro\ Medium:h14