タグ付けされた質問 「haskell」

関数型プログラミング言語

3
Ur / Web Webプログラミング用の新しい純粋に機能的な言語ですか?[閉まっている]
閉じた。この質問は意見に基づいています。現在、回答を受け付けていません。 この質問を改善したいですか?この投稿を編集して事実と引用で答えられるように質問を更新してください。 4年前に閉鎖されました。 Haskellのような言語のWebフレームワークを検索中に、Ur / Webプロジェクトに出会いました。一人が行った非常に興味深いプロジェクトのようです。 基本的に、これはWebプログラミング用のドメイン固有の純粋に機能的な言語であり、MLとHaskellを最大限に活用しています。構文はMLですが、Haskellの型クラスとモナドがあり、厳密に評価されています。サーバー側はネイティブコードにコンパイルされ、クライアントはJavascriptにコンパイルされます。他のアドバタイズされた利点については、スライドとFAQページを参照してください。 見てデモやそのソースコードは、私はこのプロジェクトは非常に有望であると思います。最新バージョンは20110123であるため、現時点では活発に開発中のようです。 ここで誰かがそれをさらに経験したことがありますか?MLのやや冗長な構文とは別に、Haskellと比較して問題/迷惑はありますか?

2
ステートフルライブラリ上の副作用のないインターフェイス
でジョン・ヒューズとのインタビュー彼はアーランとHaskellの語る、彼はErlangでステートフルなライブラリを使用することについて言うために、以下があります。 ステートフルライブラリを使用する場合は、通常、その上に副作用のないインターフェイスを構築し、残りのコードで安全に使用できるようにします。 これはどういう意味ですか?私はこれがどのように見えるかの例を考えようとしていますが、私の想像力や知識は私に失敗しています。

3
ほとんどの日常的なプログラミング作業において、モナドや応用ファンクターなどのHaskellの高度なコンセプトはどれほど重要ですか?
Learn You a Haskellの本を読んで、モナドやJust aなどを紹介しています。これらは私にとって非常に直観に反しているので、それを学ぼうとするのをあきらめたいだけです。 しかし、私は本当に試してみたいです。 少なくともしばらくは高度な概念を避けて、言語の他の部分を使い始めて、Haskellのより基本的な部分、つまり関数、標準IO、ファイル処理、データベースのインターフェースなど。 これはHaskellの使用方法を学ぶための合理的なアプローチですか?
16 haskell 

4
状態の変化に依存しない方が良いのはなぜですか?
この質問は、https://softwareengineering.stackexchange.com/questions/25569/is-haskell-worth-learningの質問から生じます。 一般に、Haskellが他の言語のコーディングスキルをどのように向上させるかについて、頻繁に繰り返されるステートメントがいくつか作成されます。さらに、これはHaskellがステートレスであるためであり、それは良いことです。 どうして? 誰かがこれを左手でタイプするだけ、あるいは一日目を閉じてタッチだけに頼るのと比較するのを見たことがあります。確かにそれ以上のものがありますか? ハードウェアのメモリアクセス、またはパフォーマンスの大幅な向上に関連する何かに関連していますか?

5
ラムダ計算におけるλx.λf.fx(逆適用のような)の名前は何ですか?対応する関数にはプログラミングの標準名がありますか?
ラムダ計算におけるλx.λf.fxの名前は何ですか? 対応する関数は、Haskellのような関数型プログラミング言語の標準名を持っていますか? オブジェクト指向プログラミングではfoo、引数として関数を受け取るメソッドに通常の名前がありx.foo(f)ますf(x)か?

4
静的型付け機能コードの単体テスト
haskell、scala、ocaml、nemerle、f#、またはhaXeで記述された静的に型付けされた機能コードを単体テストするのが理にかなっています(最後は本当に興味のあることですが、より大きなコミュニティの知識を活用してください)。 私の理解から: 単体テストの1つの側面は、仕様を実行可能な形式にすることです。ただし、形式化された仕様を言語セマンティクスに直接マップする宣言スタイルを使用する場合、実際に仕様を実行可能な形式で別の方法で表現することもできますか? 単体テストのより明白な側面は、静的分析では明らかにできないエラーを追跡することです。型安全機能コードは、静的アナライザーが理解するものに非常に近いコードを作成するための優れたツールであることを考えると、多くの安全性を静的分析にシフトできるように思われます。ただし、コードxでy(両方とも座標)の代わりに使用するような単純なミスはカバーできません。OTOHこのような間違いは、テストコードの作成中にも発生する可能性があるため、努力する価値があるかどうかはわかりません。 ユニットテストでは冗長性が導入されます。つまり、要件が変更された場合、それらを実装するコードとこのコードをカバーするテストの両方を変更する必要があります。もちろん、このオーバーヘッドはほぼ一定であるため、実際には問題ではないと主張することができます。実際、Rubyのような言語では実際には利点と比較されませんが、静的に型指定された関数型プログラミングが地上ユニットテストの多くを対象としていることを考えると、ペナルティなしで単純に削減できる一定のオーバーヘッドのように感じます。 このことから、このプログラミングスタイルでは単体テストはやや時代遅れであると推測します。もちろん、そのような主張は宗教的な戦争につながる可能性があるため、簡単な質問に要約します。 このようなプログラミングスタイルを使用する場合、単体テストをどの程度使用し、その理由は何ですか(コードでどの程度の品質を得たいと考えていますか)。または、逆に、静的アナライザーでカバーされているため、ユニットテストのカバレッジを必要とせずに、静的に型指定された機能コードのユニットを修飾できる基準はありますか?

6
開発環境への関数型プログラミングの導入[終了]
閉じた。この質問はより集中する必要があります。現在、回答を受け付けていません。 この質問を改善したいですか?この投稿を編集するだけで1つの問題に焦点を当てるように質問を更新します。 5年前に閉鎖されました。 これは長い話ですが、できる限りベストを尽くして要約します。私たちは、さまざまな種類の資金のためのソフトウェアを書く.NETショップです。たとえば、健康保険金請求管理ソフトウェア、年金管理ソフトウェア、401(k)ソフトウェア、およびその他の金融タイプのものを作成します。 今、私たちは新しい領域に入ります:デリバティブと定量分析タイプの仕事です。これは、私が言われた次の8〜12か月で落ちてくるものです。 今、私は自分自身でいくつかの関数型プログラミングを学びました。主に、この本を通してさまざまな言語の表面的な目線を見ただけですが、深く掘り下げたことはありません。今、私たちは.NETショップなので、F#が良い選択だと思っていました。なぜなら、.NETライブラリと既存の知識を潜在的に活用できるからです。 私の質問は、どこから始めればいいですか?Haskell、Erlang、Scala、F#などと一緒に行くべきかどうかを判断しようとするのは非常に困難です。これらはすべて非常に興味深く、能力があるように見えます。 誰も同じような状況がありましたか?そうだとすれば、機能性へのジャンプを行った経験は何でしたか?私はこれが一種の大きな質問であることを知っていますが、現在関数型のメソッドを使用している開発者は知りませんので、グーグルを絶えず変え、最高の関数型言語のどこでも炎の戦争を見つけること以外に私は他にどこにもありません。

1
Haskellが単相性の制限なしに繰り返し評価を避けることができないのはなぜですか?
先日learnyouahaskellを終えたばかりで、Haskell Wikiで説明されているように、単相性制限の意味を理解しようとしていました。MRが繰り返し評価を防ぐ方法を理解していると思いますが、なぜこれらの繰り返し評価がはるかに簡単な手段で回避できないのかを理解できません。 私が念頭に置いている特定の例は、wikiで使用されているものです。 f xs = (len,len) where len = genericLength xs where genericLengthはタイプNum a => [b] -> aです。 明らかに、それは同じ引数を持つ同じ関数なのでgenericLength xs、評価するために一度だけ計算する必要があり(len,len)ます。そして、それをf知るために呼び出しを見る必要はありません。では、なぜHaskellはMRのようなルールを導入せずにこの最適化を行えないのでしょうか? そのwikiページの議論Numは、具体的な型ではなく型クラスであるという事実と関係があると言っていますが、それでも、コンパイル時に純粋な関数が同じ値を返すことは明らかではありません-したがって、同じ具体的なタイプのNum-同じ引数を2回与えたとき?

5
FP思考に慣れている人は命令型コードをどのように読むべきですか?
私は約5か月前に大学を卒業し、過去4か月間地元の新興企業で働いています。大学にいる間、私はHaskellやF#などを自分で勉強しました。私たちは大学でJavaを教えられましたが、すぐに関数型プログラミングに触れるようになり、命令型プログラミングよりもはるかに多くの時間を費やしました。その結果、私の脳は機能的思考のために配線されています。私が参加した会社はPythonを使用しており、コードは非常に重要です。私は命令型コードを読むのに非常に苦労しています。変異を追跡することはできません。for-if-else-for -...のネストが4レベルを超える深さになると、コードで何が起こっているかを完全に把握できなくなります。さらに、Pythonは動的言語であるため、コードには型がありません。それ' コードベースの一部(おそらく「適度に複雑な」)を理解しようとしてから数週間が経ちましたが、これまでのところ理解できるほどの進展はありませんでした。そのコードを理解する方法についての実用的なテクニックをいくつか教えてください。前もって感謝します! 編集: コードに実際にはあまりコメントがなく、名前もあまり直感的ではないことを言及する必要があります。

5
Haskellから得た知識とスキルをエクスポートするために最も互換性があり、広く使用されている生産言語は何ですか?
私はHaskellが好きで、シンプルでシンプルです。Haskellは本番ソフトウェアで使用されていますが、私が見たものから特に広く展開されているわけではありません。業界で同様に素晴らしいものを使用する雪だるまの機会を得るために、生産プロジェクトに関して最も類似しており、まだ広く使用されている言語は何ですか? また、最初の部分と同じ言語が多数のプラットフォームで利用可能ですか?そうでない場合、プラットフォームを幅広く展開するのに最適な代替手段は何ですか?大規模な群れや家族ではなく、1つの言語でTo Doリストを作成したいです。確固たる証拠はプラスになります。

2
HaskellのGUIライブラリに関する提案[終了]
閉まっている。この質問はトピック外です。現在、回答を受け付けていません。 この質問を改善したいですか? 質問を更新することがありますので、上のトピックソフトウェア工学スタックExchange用。 5年前に閉鎖されました。 以下のようハスケルウィキ自身が述べています: Haskellには多くのGUIライブラリがあります。残念ながら、標準的なものはなく、すべてが多かれ少なかれ不完全です。一般に、低レベルのベニヤは順調ですが、低レベルです。高レベルの抽象化は非常に実験的です。サポートされている中レベルのGUIライブラリが必要です。 私の大学の教授は、私と他の3つのコンピューターサイエンス専攻にHaskellのGUIライブラリを検討するように依頼しました。このプロジェクトに対する彼の最初のアイデアは、Smalltalkにあるモーフィックライブラリを模倣したOpenGLの上にレイヤーを書くことでした。ただし、これは単なる提案であり、他のシステムは間違いなく検討する価値があります。 これは、実際の複数の部分からなる質問につながります。 ライブラリはどのレベルの抽象化のために努力すべきですか?Haskell Wikiは、中レベルのGUIライブラリが推奨されることを強く示しているようです。ただし、高レベルのライブラリは引き続き歓迎されます。 ライブラリを何に構築する必要がありますか?(例:OpenGL) 私たちのライブラリーを模倣したい既存のGUIライブラリー(もしあれば)とその理由は何ですか?(例:PyGame、Morphic、Swingなど) ライブラリの実装または回避を希望する機能は何ですか?たとえば、Gnomeの良き人々は、最小化ボタンは不要だと主張するかもしれません。 一般的な提案はありますか? この架空の図書館にどんな名前を付けますか?(例:HOT-Haskell Opengl Toolkit; HAWT-Haskell Advanced Windowing Toolkit)

8
関数型言語の構文が人間の言語により近いのはなぜですか?
私は関数型プログラミングに興味があり、Haskellと直接対決することにしました。私の頭が痛い...しかし、私は最終的にそれを取得します...しかし、私は1つの好奇心を持っていますが、なぜ構文はとても謎めいています(別の言葉がないのですか)? それがより表現力がなく、人間の言語により近い理由はありますか? FPは数学の概念のモデリングが得意であり、簡潔な表現手段の一部を借用していることを理解していますが、それでも数学ではありません...それは言語です。

2
Haskellでタイプは消去されますか?
Haskellには、一般的なLispとの明らかな類似性を持つ「汎用関数」という概念があります。Haskellの経験も共通のLispの経験もないため、ここでは非常に近似するかもしれません。これは、to_stringすべてのタイプの文字列表現を定義する汎用機能を定義できることを意味します。もちろん、特別な場合にはto_string機能を定義する必要がありますが、シグネチャがの関数がありますα → string。 OCamlのように、Haskellでもタイプは消去されますか?はいの場合、Haskellでの「ジェネリック関数」の実装は、型が動的であり、したがって消去されない一般的なLispの実装とどのように異なりますか? 実装の詳細はコンパイラ固有のものであることを理解していますが、おそらく多くまたはすべての実装に共通する規定があります。

2
Haskell型クラスをC#インターフェイスで実装する
Haskellの型クラスとC#のインターフェイスを比較しようとしています。があるとしFunctorます。 ハスケル: class Functor f where fmap :: (a -> b) -> f a -> f b この型クラスをC#のインターフェイスとして実装する方法は? 私が試したもの: interface Functor<A, B> { F<B> fmap(Func<A, B> f, F<A> x); } これは無効な実装であり、実際Fに返されるべきジェネリック型にこだわっていfmapます。どのように定義すべきか、どこで? FunctorC#で実装することは不可能ですか?なぜですか?それとも別のアプローチがありますか?
13 c#  haskell 

5
*どんな*プログラムタスクも状態なしで表現できますか?
これは理論的な質問ですが、私が現在理解しているプログラミングの長年の後に、主にC ++を使用する「通常の」命令型テクニックです。 これにより、完全に状態指向のプログラムを、純粋に機能的で状態のない別の実装に技術的に置き換えることができるのではないかと思いました。 それは興味をそそるアイデアであり、関数型プログラミングには明確で優雅なものがあることを認めなければなりません。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.