Skip to content

Instantly share code, notes, and snippets.

@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 / springer-free-maths-books.md
Created December 28, 2015 23:39 — forked from bishboria/springer-free-maths-books.md
Springer have made a bunch of maths books available for free, here are the direct links
@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?
<?xml version="1.0"?>
<root>
<item>
<name>Programmer's Shift Keys</name>
<!--
Author: Carwin Young (@carwin)
Last Updated: 2013.02.10
v.1.0
Programmer's Shift Keys
@christiantakle
christiantakle / fib.js
Last active December 10, 2015 20:38
Example of poormans pattern matching in Javascript. It useful in some cases. Beware of recursive definitions like this. It will blow the stack.
// Classic Javascript
function fib(n) {
if(n === 0) { return 0 }
if(n === 1) { return 1 }
return fib(n-1) + fib(n-2)}
// Non-auto-curry
const mkCases = // :: Object Functions -> a -> b
cases => key =>
(cases[key]? cases[key] : cases["_"])(key)
@christiantakle
christiantakle / diamond.js
Last active August 29, 2015 14:25
Solution for a codewars task
var
CHAR = '*',
NEWLINE = '\n',
repeat =
function repeat(c, n) {
if(n === 0) { return ''; }
return c + repeat(c, n-1);
},
lines =