関数型言語を学ぶときに難しいと感じた部分はどこですか?
関数型プログラミング言語は学ぶのが難しい、使うのが難しい、という声がしばしば聞かれます。一方で、関数型言語にはシンプルでよく整理された言語仕様を持つものも多く、他の言語より学びにくいとは必ずしも言えないと思います。関数型言語が難しいと言われる理由を知りたいので、あなたが関数型言語を学んだときに難しいと感じた部分、使うのが難しいと感じた部分は何だったのかを教えてください。
なお、『関数型言語』の定義については深入りしないことにします。その言語自身が関数型言語を標榜していたり、回答者がそれを関数型言語だと認識している言語であれば結構です。関数型を含むパルチパラダイム言語については、そのうち関数型言語としての部分になるべく絞ってお答えください。関数型プログラミングのスタイルを実現するとされるライブラリを学ぶときの困難さについては、今回は対象外とします。
回答のフォーマットは自由ですが、次のような項目について教えていただければ参考になります。
- 学んでみた関数型言語は何ですか?
- それ以前に学んだことのある言語にはどんなものがありますか?
- 他の言語に比べてどこが難しいと感じましたか?
回答例
たとえば、質問者 @hiruberuto の場合は次のような回答になります。
- 学んでみた関数型言語: Haskell, PureScript, Elm
- それ以前に触ったことのある言語: Java, C#, Visual Basicなど
- 難しいと感じたところ: 型システムと遅延評価。Haskellのような言語のユーザのあいだにはより厳密な型を使おうとする文化があるためか、関数の型やデータ型が他の言語に比べて難しくなっているように思います。型エラーも読み解くのが難しいです。また、Haskellではデフォルト遅延評価のために、デバッガで1ステップずつ計算の過程を追うことができなかったのもつらかったです。学び始めた当時はHaskellの日本語の資料が少なかったのも苦労しました。