いろいろなプログラミング言語でラムダ式

最近いろいろ言語を触っていたら混乱してきたのでラムダ式だけにフォーカスして比較してみる。(随時更新)

やりたいことは次のようなラムダ式
(\lambda x.x+2)3

ソースコードはこちらからもご覧いただけます。
https://github.com/FlyingHighAgain/Lambda

C#

// Lambda.cs

using System;

class Lambda
{
    static void Main (string[] args)
    {
        Console.WriteLine (
                ((Func<int, int>)(x => x + 2)) (3)
              );
    }
}

C++

// Lambda.cpp

#include <iostream>

using namespace std;

int main()
{
    cout <<  ( [] (int x) { return x + 2; } )(3)  << endl;
}

CoffeeScript

# Lambda.coffee

console.log(
    ((x) -> x + 2) 3
  )

Haskell

-- Lambda.hs

main = print $ (\x -> x + 2) 3

Java

// Lambda.java

import java.util.function.Function;

class Lambda {
    
    public static void main(String[] args) {
        
        System.out.println(
            ((Function<Integer,Integer>)(x -> x + 2)).apply(3)
          );
        
    }
}

Scala

// Lambda.scala

object Lambda {
  def main(args: Array[String]) {

    println(
        ((x: Int) => x + 2)(3)
      )

  }
}

Scheme

; Lambda.scm

(display ((lambda (x) (+ x 2)) 3))
(newline)