Skip to content

Instantly share code, notes, and snippets.

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();
function cond(){
for(var i in arguments ){
if( arguments[i][0] ){
arguments[i][1]();
break;
}
}
}
var x = -1;
var Switch = function(expr){
this.successed = false;
this.case = function(cond, proc){
if( !this.successed && cond === expr){
this.successed = true;
proc();
}
return this;
}
}
class CFizzBuzz{
public static function main(){
fizzbuzz();
}
macro public static function fizzbuzz(){
var fizzbuzzText : String = "\n";
for( i in 1...100 ){
fizzbuzzText += if( i % 15 == 0 ){
"FizzBuzz ";
@NobukazuHanada
NobukazuHanada / monad.lisp
Created November 3, 2013 15:39
さっきまでなんとなく、気がついたら書いていた。
(ql:quickload :optima)
(defpackage :monad
(:use :common-lisp :optima)
(:export :bind :just :none :do-monad))
(in-package :monad)
;; return
(defgeneric unit-m (type x))
;; >>=