2022年11月26日土曜日

Pythonは悪い言語ではないと思うのですが、関数型プログラミングを試みようとすると苦痛が大きいです。関数型Pythonのようなものは存在しますか (Rubyに対するElixirのような) ?

https://jp.quora.com/Python-ha-warui-gengo-deha-nai-to-omou-no-desuga-kansuu-kata-puroguramingu-wo-kokoromi-you-to-suruto-kutsuu-ga-ookii-desu-kansuu-kata-Python-no-you-na-mono-ha-sonzai-shi-masu-ka-Ruby-ni-taisuru-Elixir-no-you-na

並べ替え
 · 
フォロー

求めているものによって答えは変化すると思いますが、短い答えとしては「関数型PythonのようなPythonっぽい文化を維持しつつPythonっぽく書ける言語(で実用レベルで使われているもの)は存在しない」でしょう。

純粋に関数型プログラミング言語を求めているのであれば、「Pythonっぽい」を忘れて関数型言語HaskellとかOCamlとかを使ったほうが良いと思います。

逆にPythonにこだわるとすると、「関数型言語」の部分を忘れて、Pythonで関数型っぽいプログラミング(できるだけ副作用を使わない、高階関数の多用)すればよいのではないかと思います。

もっとも、Pythonで「関数型っぽい」プログラミングをするには、たとえば式と文の明確な分離とか、(それに伴って)lambda式で単一式しか書けないことで高階関数呼び出しがキレイに書けないことなどが、ストレスが溜まりそうです。

[ここから自画自賛]

「関数型っぽいプログラミング」しかできない点では、RubyもPythonと大差ないですが、上に挙げた式と文の分離やlambdaの問題などはないので、この点についてだけはRubyのほうが少しだけマシとは言えそうです。

 · 
フォロー

まったく使ったことない言語なので評価出来ませんが、Coconutとか。

Coconut Programming Language

 · 
フォロー

Juliaを試されてはいかがでしょうか?内部ではLISPぽいS式の集合で構文はCやpythonの経験があればすぐに理解できるかと。C#の経験があれば多重ディスパッチもすんなりです。PyCallを使えばそのままpythonを呼び出せます。

0 コメント:

コメントを投稿