Skip to content

Instantly share code, notes, and snippets.

@nowelium
nowelium / gist:2608
Created July 26, 2008 05:48
js like apply, bind, curry...
Block apply := method(target, args,
args = if(args isNil, list(), args)
target = if(target isNil, scope, target)
self setScope(target)
self performWithArgList("call", args)
)
Block bind := method(
args := call message argsEvaluatedIn(call sender)
target := args at(0)
args = args slice(1)
Block bind := method(
args := call message argsEvaluatedIn(call sender)
target := args at(0)
args = args slice(1)
b := self
return block(
b apply(target, args union(call message argsEvaluatedIn(call sender)))
)
)
Block curry := method(
args := call message argsEvaluatedIn(call sender)
if(args size < 1) then (
return self
)
/*
target := args at(0)
args = args slice(1)
*/
b := self
Block apply := method(target, args,
args = if(args isNil, list(), args)
target = if(target isNil, scope, target)
self setScope(target)
self performWithArgList("call", args)
)
Stream := Object clone do (
create := method(car, cdr,
stream := self clone
stream setSlot("_car", car)
stream setSlot("_cdr", cdr)
stream
)
car := method(_car)
cdr := method(_cdr call)
each := method(_block,
Stream := Object clone do (
create := method(car, cdr,
stream := self clone
stream car ::= car
stream cdr ::= cdr
stream
)
each := method(k,
k call(car)
cdr each(k)
package hoge
import scala.tools.nsc.Interpreter
import scala.tools.nsc.InterpreterResults.Result
import scala.tools.nsc.Settings
class User(id:Int, name:String) {
def id():Int = { id }
def name():String = { name }
override def toString():String = {
// io like println
class ConsolePrint(o:Any) {
def println = { Console.println(o) }
}
implicit def thisPrintln(n:Any) = { new print(n) }
"hello world" println // => "hello world"
(123 * 456) println // => 56088
//
// Atmosphere example: Hello world
//
package sample.hoge;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;