アカウント名:
パスワード:
関数型言語のブームなんてきたことは、ここ十年やそこらでは一度もないと思うけど。一体だれがそんなことを言ってるの?
>またPythonやRubyなどのように関数型言語の要素を導入する言語も増えている。PythonやRubyが関数型言語かなー。とてもそうは思えんが。#LISP等の関数型言語に一定の支持があるのは認めるが、それとブームとは別。
流行の兆しというか、ささやかなものは最近感じる。でも、オブジェクト指向とかライトウェイト言語?の時ほどのブームはもう起きないんじゃないかなぁ。
関数型言語のブームにはなってないけど、C#、Scala、Dartみたいな形で、オブジェクト指向言語の中に関数型を取り入れるのは主流になって来てると思う。Javaにも導入されそうだし。
たぶん違うな。実際触ってみるとわかるけど。
>C#、ScalaそれぞれC++、Javaより使いやすい部分があるから、それらのアッパーコンパチとして使われている。で、実際に「関数型言語として」それらを使おうとすると、正直言って使いにくいし気持ち悪い。
関数型言語が研究分野では使いやすいのかもしれないが、UIがあったり、多数の条件分岐があるコードだと本当に使いにくいしコードも見にくくなる。
関数型としてではなく便利なアッパーコンパチとして使ってやれば、ソースの行数も減るし、コードも書きやすい。そこは人気になっている大きな理由。
でも「関数型」の部分は全く評価されなくていいと思う。たった一度でいい。whileのループ周りの再帰コードを関数型で見てみるといい。それを自分のコード内で使えると思うなら使えばいいと思うけどチームで書いているなら受け入れてもらえないと思うな。# ついでに言うと最代入を認めない変数# (Javaで言うと、すべての変数にfinalがついている)もダメだな
だからそれを言ってんだろ。データ処理なんかに使う単なる便利機能としての関数型。
元コメは、「って言うか~」の後にまんまオウム返しするタイプですね。
「whileのループ周りの再帰コードを関数型で見てみる」ってどういうこと?
>多数の条件分岐があるコードだと本当に使いにくいしコードも見にくくなる。
はあ?君もしかして「Haskellなんて初めて聞いた」って書き込んでた人?
でたった一度でいい。whileのループ周りの再帰コードを関数型で見てみるといい。
そもそも、関数型だからといって再帰関数呼び出しはそんなに使いません。たいていは繰り返し処理用の関数を使います(たとえばmapやfold/unfoldなど)。
このへんは「オブジェクト指向言語の中に関数型を取り入れる」流れで、関数型でない言語でも見かけるようになりました。C#のEnumerableクラスやJava 8のStream、C++のなんかですね。
以下余談。これらの関数は、ループ処理の典型的なパターンを整理・分類して名前を付けたという点で、whileやforなどを直接使うより便利だと思っています(名前の存在がコードの理解や他人との意思疎通の手助けになるので)。
>>でも「関数型」の部分は全く評価されなくていいと思う。たった一度でいい。whileのループ周りの再帰コードを関数型で見てみるといい。
いうか君がソースを公表して指摘したらいいだけ。大抵の場合は「~が駄目」という人の能力が低かったりするからね。
fac n = do { a . 0) $ do { a *= i; i -= 1; }; a; }
fac n = do { a <- auto 1; i <- auto n; while (i >. 0) $ do { a *= i; i -= 1; }; a; }
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
最初のバージョンは常に打ち捨てられる。
それって、いつの話? (スコア:-1)
関数型言語のブームなんてきたことは、ここ十年やそこらでは一度もないと思うけど。
一体だれがそんなことを言ってるの?
>またPythonやRubyなどのように関数型言語の要素を導入する言語も増えている。
PythonやRubyが関数型言語かなー。とてもそうは思えんが。
#LISP等の関数型言語に一定の支持があるのは認めるが、それとブームとは別。
Re: (スコア:0)
流行の兆しというか、ささやかなものは最近感じる。
でも、オブジェクト指向とかライトウェイト言語?の時ほどのブームは
もう起きないんじゃないかなぁ。
Re: (スコア:0)
関数型言語のブームにはなってないけど、C#、Scala、Dartみたいな形で、オブジェクト指向言語の中に
関数型を取り入れるのは主流になって来てると思う。Javaにも導入されそうだし。
Re:それって、いつの話? (スコア:0)
たぶん違うな。
実際触ってみるとわかるけど。
>C#、Scala
それぞれC++、Javaより使いやすい部分があるから、
それらのアッパーコンパチとして使われている。
で、実際に「関数型言語として」それらを使おうとすると、正直言って使いにくいし気持ち悪い。
関数型言語が研究分野では使いやすいのかもしれないが、
UIがあったり、多数の条件分岐があるコードだと
本当に使いにくいしコードも見にくくなる。
関数型としてではなく便利なアッパーコンパチとして使ってやれば、
ソースの行数も減るし、コードも書きやすい。
そこは人気になっている大きな理由。
でも「関数型」の部分は全く評価されなくていいと思う。
たった一度でいい。whileのループ周りの再帰コードを関数型で見てみるといい。
それを自分のコード内で使えると思うなら使えばいいと思うけど
チームで書いているなら受け入れてもらえないと思うな。
# ついでに言うと最代入を認めない変数
# (Javaで言うと、すべての変数にfinalがついている)もダメだな
Re: (スコア:0)
だからそれを言ってんだろ。データ処理なんかに使う単なる便利機能としての関数型。
Re: (スコア:0)
元コメは、「って言うか~」の後にまんまオウム返しするタイプですね。
Re: (スコア:0)
「whileのループ周りの再帰コードを関数型で見てみる」ってどういうこと?
Re: (スコア:0)
>多数の条件分岐があるコードだと本当に使いにくいしコードも見にくくなる。
はあ?
君もしかして「Haskellなんて初めて聞いた」って書き込んでた人?
Re: (スコア:0)
でたった一度でいい。whileのループ周りの再帰コードを関数型で見てみるといい。
そもそも、関数型だからといって再帰関数呼び出しはそんなに使いません。たいていは繰り返し処理用の関数を使います(たとえばmapやfold/unfoldなど)。
このへんは「オブジェクト指向言語の中に関数型を取り入れる」流れで、関数型でない言語でも見かけるようになりました。
C#のEnumerableクラスやJava 8のStream、C++のなんかですね。
以下余談。これらの関数は、ループ処理の典型的なパターンを整理・分類して名前を付けたという点で、whileやforなどを直接使うより便利だと思っています(名前の存在がコードの理解や他人との意思疎通の手助けになるので)。
Re: (スコア:0)
>>でも「関数型」の部分は全く評価されなくていいと思う。
たった一度でいい。whileのループ周りの再帰コードを関数型で見てみるといい。
いうか君がソースを公表して指摘したらいいだけ。
大抵の場合は「~が駄目」という人の能力が低かったりするからね。
Re: (スコア:0)
fac n = do {
a . 0) $ do {
a *= i;
i -= 1;
};
a;
}
Re: (スコア:0)
fac n = do {
a <- auto 1;
i <- auto n;
while (i >. 0) $ do {
a *= i;
i -= 1;
};
a;
}