Skip to content

Instantly share code, notes, and snippets.

# Generates the text of asetniop.vim
singles =
a: "a"
s: "s"
e: "d"
t: "f"
n: "j"
i: "k"
o: "l"
p: ";"
var parser = document.createElement('a');
parser.href = "http://example.com:3000/pathname/?search=test#hash";
parser.protocol; // => "http:"
parser.hostname; // => "example.com"
parser.port; // => "3000"
parser.pathname; // => "/pathname/"
parser.search; // => "?search=test"
parser.hash; // => "#hash"
parser.host; // => "example.com:3000"
@christiantakle
christiantakle / thunkify
Created March 31, 2014 15:33
//+ thunkify :: (... -> IO ()) -> ... -> ... -> IO ()
//+ thunkify :: (... -> IO ()) -> ... -> ... -> IO ()
function thunkify(fn /*, ... */) {
args = [].slice.call(arguments, 1);
return function(/* ... */) {
fn.apply(this, args.concat([].slice.call(arguments, 0)));
};
}
@christiantakle
christiantakle / gist:9854444
Created March 29, 2014 13:22
Feedback on http://t.co/sFZYBp08bV - Sorry for being such an advocate for tap :)
def call(form_object)
form_object.validate!
if User.where(email: form_object.email).exists?
form_object.errros.add(:email, 'email already taken')
end
# Forgot to access the company_name attribute on the form_object
company = Company.create!(name: form_object.company_name)
User.create!(name: form_object.name, email: form_object.email, company: company)
@christiantakle
christiantakle / closures?
Last active January 3, 2016 04:29
A function that illustrates closures and higher-order functions in JavaScript
//-- If you understand closures - you know why this will always return true
function f(value) {
return (function (copy) {
return copy === value;
}(value));
}
@christiantakle
christiantakle / composition_with_tap
Last active January 2, 2016 11:49
Using functional composition as before, around or after filter. This is a smart use of tap, to compose a sequence of functions that need somekind of sideeffect and provide a clear seperation of pure and impure functions
//-- http://allong.es/try/
tap = allong.es.tap
flip = allong.es.flip
curry = allong.es.curry
compose = allong.es.compose
call = allong.es.call
//-- square :: Int -> Int
function square(x) { return x*x }
// Ideas
//-- note (() -> IO), random function
//-- Maybe denote it with a lambda instead
//+ given :: (a -> Bool) -> (() -> IO) -> Maybe IO
//+ ifthen :: (a -> Bool) -> (() -> IO) -> Maybe IO
function ifthen(predicate, action) {
if (predicate()) {
action();
@christiantakle
christiantakle / gist:7537088
Created November 18, 2013 23:13
Functional approach to bind, call and apply
var bind = Function.prototype.call.bind(Function.prototype.bind);
var call = bind(Function.prototype.call, Function.prototype.call);
var apply = bind(Function.prototype.call, Function.prototype.apply);
@christiantakle
christiantakle / Functional JavaScript - Example 1
Last active December 21, 2015 20:19
Simple Functional Example in JavaScript Using: `curry` and `compose`
//-- Example 1 --------------------------------------------------------
//-- Note - We do not need to reference the data `email` when
//-- using a 'Point free style' of programming
//-- Note - `curry` is from Prelude. `compose` is from Oliver Steele --
//-- http://preludels.com/
//-- http://osteele.com/sources/javascript/functional/
//-- Imparative -------------------------------------------------------
var getUserName = function(email) {
#!/usr/bin/env ruby
tagname = ARGV.pop
def prompt(*args)
print(*args)
gets.chomp
end
if tagname.nil?