Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- var sys = require("sys");
- set = function(a) {
- return function() {
- return a.length
- ? a.shift()
- : null
- }
- }
- exports.set = set;
- zipWith = function(a) {
- return function(itA) {
- return function(itB) {
- return map(function(n) {
- return a(n)(itB());
- })(itA)
- }
- }
- }
- exports.zipWith = zipWith;
- foldr = function(a) {
- return function(b) {
- return function(it) {
- return function() {
- var n = it();
- return null === n
- ? b
- : a(n)(arguments.callee())
- }()
- }
- }
- }
- exports.foldr = foldr;
- quot = function(a) {
- return function(b) {
- return b == null ? parseInt(a) : parseInt(parseInt(a) / parseInt(b))
- }
- }
- exports.quot = quot;
- sum = function(a) {
- return function(b) {
- return b == null ? a : a + b
- }
- }
- exports.sum = sum;
- scale = function(a) {
- return function(b) {
- return b == null
- ? parseInt(a)
- : parseInt(a) * parseInt(b)
- }
- }
- exports.scale = scale;
- fib = function() {
- var n = 0;
- var f = memoize(function(n) {
- return n == 0
- ? 0
- : (n == 1
- ? 1
- : f(n-1) + f(n-2))
- });
- return function() {
- return f(n++)
- }
- }
- exports.fib = fib;
- nat = function() {
- var n = 0
- return function() {
- return n++
- }
- }
- exports.nat = nat;
- map = function(a) {
- return function(it) {
- return function() {
- var n = it();
- return null === n
- ? null
- : a(n)
- }
- }
- }
- exports.map = map;
- takeWhile = function(pred) {
- return function(it) {
- return function() {
- var n = it();
- return pred(n)
- ? n
- : null
- }
- }
- }
- exports.takeWhile = takeWhile;
- take = function(n) {
- return function(it) {
- return function() {
- return n-- > 0
- ? it()
- : null
- }
- }
- }
- exports.take = take;
- filter = function(predicate) {
- return function(it) {
- return function() {
- var n = it();
- return null === n
- ? null
- : (predicate(n)
- ? n
- : arguments.callee())
- }
- }
- }
- exports.filter = filter;
- isMultipleOf = function(n) {
- return function(m) {
- return m % n === 0;
- }
- }
- exports.isMultipleOf = isMultipleOf;
- memoize = function(f) {
- var cache = [];
- return function(n) {
- return typeof(cache[n]) === 'undefined'
- ? cache[n] = f(n)
- : cache[n]
- }
- }
- exports.memoize = memoize;
- and = function(a) {
- return function(b) {
- return null === b
- ? a
- : a && b;
- }
- }
- exports.and = and;
- tail = function(it) {
- var n = 0;
- return function() {
- var m = it();
- return n++ == 0
- ? arguments.callee()
- : m
- }
- }
- exports.tail = tail;
- isFactor = function(n) {
- return function(m) {
- return n % m == 0
- }
- }
- exports.isFactor = isFactor;
- isPrime = function(n) {
- return (foldr
- (and)
- (null)
- (map
- (function(m) { return n % m != 0 } )
- (tail
- (tail
- (take
- (n-1)
- (nat()))))))
- }
- exports.isPrime = isPrime;
Add Comment
Please, Sign In to add comment