関数を束縛する

たぶん、間違いなく「束縛」の用法を間違っている。

javascript

js> f=function(x){return x+1}
function (x) {
    return x + 1;
}
js> f(2)
3

haskell

$ echo  'main=print $ f 1;f = \x -> x + 1;' >a.hs| ghc a.hs ; ./a.out ; rm a.*
2

マルチステートメントの書き方間違ってるかもしれない(笑


通常

Prelude> let f = \x -> x + 1
Prelude> f 2

gauche

gosh> (define f (lambda (x) (+ x 1)))
f
gosh> (f 2)
3

elisp,common lisp

(setq f (function (lambda (x) (+ x 1))))
(lambda (x) (+ x 1))
(funcall f 1)
2

どうもlambdaの時にはfunctionは省略可能みたいだが、次の時には必須

(defun f (x) (+ x 1))
f
(setq b (function f))
f
(funcall b 2)
3

ruby

なんか違う気がする

irb(main):001:0> f=Proc.new{|x| x+1}
=> #<Proc:0x403348bc@(irb):1>
irb(main):002:0> f.call(2)
=> 3