Skip to content

Instantly share code, notes, and snippets.

var Switch = function(expr){
this.successed = false;
this.case = function(cond, proc){
if( !this.successed && cond === expr){
this.successed = true;
proc();
}
return this;
}
}
function cond(){
for(var i in arguments ){
if( arguments[i][0] ){
arguments[i][1]();
break;
}
}
}
var x = -1;
var Switch = function(expr){
return new YetSucceed(expr);
}
var Succeed = { case : function(cond,proc){ return this; } };
var YetSucceed = function(expr){};
YetSucceed.prototype.case = function(cond, proc){
if(cond){
proc();
var Switch = function(expr){
return new YetSucceed(expr);
}
var Succeed = { case : function(cond,proc){ return this; } };
var YetSucceed = function(expr){ this.expr = expr; };
YetSucceed.prototype.case = function(cond, proc){
if(cond() === this.expr){
proc();
(function ()
{
function partial(fun)
{
var _slice = [].slice,
args = _slice.call(arguments);
args.shift();
return function ()
{
return fun.apply(this, args.concat(_slice.call(arguments)));
(function (global)
{
var expr = function (n)
{
var utilities = {
"+": function (a, b) { return a + b; },
"-": function (a, b) { return a - b; },
"*": function (a, b) { return a * b; },
"/": function (a, b) { return a / b; }
require "./rpn"
describe "rpn" do
it "" do
expect(expr(4).("+").(3).("*").(2).("-").(1).("=")).
to eq(->(){
comp1 = 3 * 2;
comp2 = 3 + comp1;
comp3 = comp2 - 1;
return comp3 }.call)
(define (expr x)
(define (calc op oprnd ans)
(if (null? op)
ans
(calc (cdr op) (cdr oprnd) ((car op) ans (car oprnd)))))
(define (expr-sub x op-stack oprnd-stack)
(cond [(number? x)
(lambda (y) (expr-sub y op-stack (cons x oprnd-stack)))]
[(member x '("+" "*" "-" "/"))
(lambda (y) (expr-sub y (cons (eval (string->symbol x)) op-stack) oprnd-stack))]
(define (expr num1)
(lambda (op)
(cond [(member op '("+" "*" "-" "/"))
(lambda (num2) (expr ((eval (string->symbol op)) num1 num2)))]
[else num1])))
((((((((expr 4) "+") 3) "*") 2) "-") 1) "=")
# 問題: 5, 6, 7, 8, 9, 1, 0, 1, 1, 1, 2, 1, 3, ...
# という数列のn番目の数字を求める関数を書け
f = (n) -> n + 5
solve = (index)->
ret = ""
cnt = 0
while true
ret += f(cnt++)