2012年9月1日土曜日

関数型言語っぽい言語

突然ですが、問題です。
↓は、ある言語の一部です。
さて、何言語でしょう?
{
 var myFunction = new function() {
  var execute()
  {
   i = 1;
   j = 2;
   console.log(i + j);
   return null;
  }
 };
 setTimeout(myFunction, 1000);
}






JavaScriptと答えてくれたあなたを僕は大好きです。






で、答えはJavaでした。無理やりJavaScriptっぽく書いています。
全文は以下です。ちゃんと1秒後に「3」って表示されます!
public class FakeJavaScriptTimeout {
 class var {
  var execute(){return new var();}
 }

 class function extends var {
  public int i, j;
 }

 static class console {
  static void log(Object o) {
   System.out.println(o);
  }
 }

 public void setTimeout(final var function, final int time) {
  new Thread(){
   public void run() {
    try {
     Thread.sleep(time);
    } catch (InterruptedException e) {}
    function.execute();
   };
  }.start();
 }

 {
  var myFunction = new function() {
   var execute()
   {
    i = 1;
    j = 2;
    console.log(i + j);
    return null;
   }
  };
  setTimeout(myFunction, 1000);
 }
 
 public static void main(String[] args) {
  new FakeJavaScriptTimeout();
 }
}

「だから何」って。。。別になんでもなんですが。。。。

0 件のコメント:

コメントを投稿