制作用のHaskell言語拡張機能を学ぶ必要性


10

Haskellのコア言語は本当にシンプルです。オブジェクト指向のバックグラウンドから来て、主な困難は純粋な機能パラダイムに適応することです。

「基本的な」Haskellを学習している間、私は常に言語拡張をCSの人々のためのおもちゃとして、または言語の将来のバージョン(from future import ???Pythonなど)の実験として考えてきました。

しかし、YesodなどのWebフレームワークを見始めたとき、多くのソースファイルには3〜4個の拡張子が必要であることがわかりました。一部は非常にシンプルに見えます(StringOverload)。その他は本当に威圧的です(GADT、タイプファミリエ、テンプレートハスケル)。彼らのドキュメンテーションは、新しい図書館を「ただ」学ぶことを期待している誰かにとって怖い研究論文にリンクしています。

Haskellで生産的になるためにGHC言語拡張を学ぶ必要はありますか?もしあなたが本番アプリケーションのためにHaskell開発者を雇うとしたら、そのような知識を求めますか?


次も参照してください: stackoverflow.com/a/10849782/894284

回答:


7

Haskellで生産的になるためにGHC言語拡張を学ぶ必要はありますか?

はい。そして、それはどんな言語/ツールにも当てはまります。コア/基本的な知識があれば、オンラインコンテストの問題を解決できます。これは小さな大学のプロジェクトかもしれませんが、実際のアプリケーションではありません。

本番アプリケーション用のHaskell開発者を雇うとしたら、そのような知識を求めますか?

それは、この知識を共有できる人がいるかどうかにかかっています。はいの場合、その人は新しい従業員を増やすことができます。そうでない場合は、まず知識のある人を取得する必要があります。また、これは新しいテクノロジーにも当てはまります。

もちろん、Haskellでそのような深い知識を持つ人々を雇うこともできます。しかし、Haskellは業界に比較的新しく、その周りで行われた商業プロジェクトが非常に少ないことを考えると、そのような人を見つけるのは難しいでしょう。Haskellで専門家のチームを構築する効果的な方法は、Haskellで働く基本的で喜んで働くことを知っている人々を雇い、彼らを教育することです。


私は抗議するつもりでしたが、それからReal World Haskellが多くの言語拡張を教えることがわかりました。お返事ありがとうございます。
Simon Bergot、2013年

2
「そしてそれはどんな言語/ツールにも当てはまる」-それは完全に間違っている。たとえば、Java、C#、C ++などの言語を取り上げます。これらの言語には、実際のアプリケーションコードで一般的に見られる言語拡張機能はありません。「オンラインコンテストの問題の解決策」よりも簡単なものを書く必要があるたびに言語拡張機能を使用する必要がある場合、私の意見では、言語仕様に非常に問題があります。
マルコム2013年

@Malcolmなぜ「オンラインコンテストの問題の解決策」よりも簡単なものを書く必要があるたびに言語拡張機能を使用する必要がある場合、私の意見では、言語仕様に非常に問題があるのです。真であります?それを否定的にする拡張の特徴は何ですか?私はghcと提供された拡張機能を使用します。既存のプロジェクトに拡張機能を追加することは、別のライブラリを追加することと同じくらい負担のようです。
Davorak 2013

2
@Davorak単一の言語の代わりに何十億もの異なる拡張機能の組み合わせがあり、コードが特定のコンパイラでコンパイルされるかどうかについては何もわかりません。拡張機能により、コードは移植できなくなります。そして、これはまた、誰もが使用する単一の機能セットの代わりに途方もない量の追加機能があり、どの機能を知って使用しなければならないか、どの機能だけが存在するのか手掛かりがないため、言語を学ぶのが面倒になります研究者が楽しんでいるからです。
マルコム

2
@Davorakそれはまさに私が話している問題です。誰もがGHCを使用しています。他のコンパイラは追いつくことができないので、誰もそれらを使うことができません、そしてそれらに投資する理由はほとんどありません。ライブラリについては、問題のライブラリを選択し、それらのみで作業します。たとえば、XMLを読み取る必要がある場合は、XML読み取りライブラリが1つだけ必要です。ただし、拡張機能を使用する場合、いつ必要になるかは明らかではありません。ライブラリにも問題があります。たとえば、Javaには配列とコレクションだけがあり、Haskellには配列ライブラリがたくさんあります。
マルコム
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.