Skip to content

Instantly share code, notes, and snippets.

View jkrems's full-sized avatar
Modules. Modules everywhere.

Jan Olaf Martin jkrems

Modules. Modules everywhere.
View GitHub Profile
@jkrems
jkrems / syntax.fs
Last active August 29, 2015 14:00
A more functional syntax..?
let dispatch req = Http.OK (sprintf! "Hello, %s" req.url)
let server = Http.Server port: 8000, dispatch
// OR:
let server = Http.Server { port: 8000 }, dispatch
// OR:
let server = Http.Server { port: 8000, dispatch: dispatch }
async {
let socket = await server.socket; // alternative: *server.socket
@jkrems
jkrems / straight.ml
Created April 27, 2014 05:19
First OCaml program
type id = string
type binop = Plus | Minus | Times | Div
type stm = CompoundStm of stm * stm
| AssignStm of id * exp
| PrintStm of exp list
and exp = IdExp of id
| NumExp of int
@jkrems
jkrems / promise-repl.js
Created May 15, 2014 05:14
Promise aware node.js repl
var vm = require('vm');
function fancyPromiseEval(code, context, file, cb) {
var err, result, script;
// first, create the Script object to check the syntax
try {
script = vm.createScript(code, {
filename: file,
displayErrors: false
});
} catch (e) {
@jkrems
jkrems / let.compiled.js
Created June 14, 2014 18:06
What traceur does to your code; compiled via `traceur --block-binding true --module let.js --out let.compiled.js`
System.register("let", [], function() {
"use strict";
var __moduleName = "let";
{
try {
throw undefined;
} catch (x) {
x = 10;
}
}
@jkrems
jkrems / html-handler.jsx
Last active August 29, 2015 14:02
Example of responding with an html page / fragment in quinn
/**
* @jsx React.DOM
*/
'use strict';
import {resolve} from 'bluebird';
import React from 'react';
import {getParam} from 'quinn'; // actually should be 'quinn-router'
import respond from 'quinn-respond';
@jkrems
jkrems / npm-ls.json
Created June 22, 2014 01:55
mocha dependencies
{
"name": "mocha",
"version": "1.20.1",
"from": "mocha@^1.20.1",
"resolved": "https://registry.npmjs.org/mocha/-/mocha-1.20.1.tgz",
"dependencies": {
"commander": {
"version": "2.0.0",
"from": "[email protected]",
"resolved": "https://registry.npmjs.org/commander/-/commander-2.0.0.tgz"
@jkrems
jkrems / my-module.js
Last active August 29, 2015 14:02
How to write ES6 modules
export function each() {}
export function map() {}
export function reduce() {}
export function isEmpty() {}
export function extend() {}
@jkrems
jkrems / safe-map.js
Created July 1, 2014 17:02
Safe object/dictionary in JavaScript
/* jshint node:true, esnext:true */
'use strict';
// Run: node --harmony_proxies --harmony-collections safe-map.js
function createSafeObject(props) {
if (typeof props !== 'object' || props === null) {
props = {};
}
@jkrems
jkrems / react-rendering.js
Created July 19, 2014 04:53
quinn: Page rendering using React
'use strict';
var http = require('http');
var React = require('react');
var $ = React.DOM;
var _ = require('lodash');
var respond = require('quinn-respond');
var resolveDeep = require('resolve-deep');
var Promise = require('bluebird');
@jkrems
jkrems / cached-call.js
Last active August 29, 2015 14:05
gofer-blog
var entityId = 'xy';
var loadEntity = cached.deferred(_.partial(myService.fetch, '/entity/' + entityId));
cached('myService').getOrElse(entityId, loadEntity, function(err, entity) {
// 80% of time this works every time
});