機能言語


私は機能言語fadを理解していません.それらのリベラルなオタクたちがその言葉を軽蔑するのと同じくらい、それは私のキャリアである.そして、その中で、あなただけの作品を使用します.楽しみのためのプログラミング?情熱で?テーブルの上に食べ物を入れないと!私は、仕事の後、奇妙な理論的な言語でコードを書き続ける人々を決して得ません.
それは、私たちが機能的な言語を学ぶことの無益さを理解する方法であるので、私はコードに関してそれを置きましょう.

機能言語
それが問題だ.IT世界では、特に請負業者と、我々は我々が提供するコードの行の数によって支払われる.Javaで書かれた美しいコードを見てください.

public static class SumOfSquaresHelper
{
   public static int Square(int i)
   {
      return i * i;
   }

   public static int SumOfSquares(int n)
   {
      int sum = 0;
      for (int i = 1; i <= n; i++)
      {
         sum += Square(i);
      }
      return sum;
   }
}

これは16行のコードを数えます.より多くのクラスで、それは給料日です.ここでは、F .すべての時間の最も恐ろしい言語のうちの1つのNETの自身の機能的なスピンオフ、OCaml(率直に言って、マイクロソフトはC言語を取り替えるためにこの言語を発明しています.

let square x = x * x
let sumOfSquares n = [1..n] |> List.map square |> List.sum

神聖なモグラ!同じようにするコードの2行?どのように私たちのような人々は、誰もがコードを読んで支払うことが期待されますか?さらに、さらに行くことができますし、1つのライナー、Ugh、ラムダを作る.

let sumOfSquares n = [1..n] |> List.map (fun x -> x * x) |> List.sum

何て悪いことかさらに悪いことは、これらの日の言語デザイナーがこの機能カルトによって洗脳されがちであり、彼らの言語にいくつかの機能的な機能をハッキングすることはできません.JavaScriptは、インターネットの誕生以来、されているも、機能したい.

let sumOfSquares = n => [...Array(n).keys()].map(x => x * x).reduce((x, y) => x + y);

確かに、これらは暗い日、合法的な、深刻なプログラマです.

Inspired by Ten reasons not to use a statically typed functional programming language.