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

Haskellは、強力な静的型付け、遅延評価、広範な並列処理と同時実行のサポート、独自の抽象化機能を備えた関数型プログラミング言語です。

5
Functor / Functor / Applicative / Monadの良い例は?
型クラスXが何であるかを誰かに説明しながら、正確にXであるデータ構造の良い例を見つけるのに苦労しています。 だから、私は次の例を要求します: Functorではない型コンストラクター。 Functorであるが、Applicativeではない型コンストラクター。 Applicativeですがモナドではない型コンストラクタです。 モナドである型コンストラクタ。 どこにでもモナドの例はたくさんあると思いますが、前の例とある程度の関係があるモナドの良い例は、絵を完成させることができます。 特定の型クラスに属するために重要な点のみが異なる、互いに類似する例を探します。 アローの例をこの階層のどこかに忍び込むことができたなら(それはApplicativeとMonadの間ですか?)、それも素晴らしいでしょう!

5
一般的なHaskellオペレーターの発音できる名前はありますか?[閉まっている]
休業。この質問は意見に基づいています。現在、回答を受け付けていません。 この質問を改善してみませんか?この投稿を編集して、事実と引用で回答できるように質問を更新してください。 2年前休業。 この質問を改善する Learn You a Haskell for Great Goodを読んでいますでおり、Haskell演算子の発音方法を知りません。彼らは「本当の」名前を持っていますか?? たとえば、このような表現を読み上げるにはどうすればよいでしょうか。 Just (+3) <*> Just 9 そんなこと知ってる >>=が「束縛」ではが、他の人はどうですか?Googleでは英数字以外の文字は考慮されていないため、効率的な検索を行うのはちょっと難しいです... 独自の演算子を作成できるので、もちろんすべての演算子に名前を付けることができるわけではありませんが、一般的な演算子(Applicativeまたはで定義されている演算子Monad)には名前を付ける必要があると思います...
204 haskell  operators 

3
Haskell:IntからStringへの変換
私はあなたがa Stringを数値に変換できることを知っていますread: Prelude> read "3" :: Int 3 Prelude> read "3" :: Double 3.0 しかし、どのようにして値のString表現を取得しIntますか?
198 string  haskell  int  casting 

4
GHCコアの読み取り
コアはGHCの中間言語です。リーディングコアは、プログラムのパフォーマンスをよりよく理解するのに役立ちます。Coreを読むためのドキュメントやチュートリアルを誰かに頼まれましたが、あまり見つかりませんでした。 GHCコアを読むために利用できるドキュメントにはどのようなものがありますか? これが私がこれまでに見つけたものです: HaskellをCと同じ速さで書く:厳格さ、遅延、再帰を利用する Cと同じくらい速いHaskell:高レベルで作業して低レベルのパフォーマンスを実現 RWH:第25章プロファイリングと最適化 CUFPでの高性能Haskell講演(スライド65-80)


3
GHCが確実に実行すると期待できる最適化は何ですか?
GHCには実行可能な多くの最適化がありますが、それらすべてがどのようなものであるか、またそれらがどの程度の確率で実行される可能性があるのか​​、またどのような状況で実行されるのかはわかりません。 私の質問は次のとおりです。毎回、どのような変換が適用されると期待できますか、またはほぼ同じでしょうか。頻繁に実行(評価)されるコードを見て、最初の考えが「うーん、多分それを最適化する必要がある」である場合、2番目の考えは「それについてさえ考えないでください」 GHCはこれを得た」? 私は「Stream Fusion:From Lists to Streams to Nothing at All」というペーパーを読んでいて、彼らがリスト処理を別の形式に書き換えて、GHCの通常の最適化が単純なループに確実に最適化する手法は私にとっては斬新でした。自分のプログラムがそのような最適化の対象となる時期を知るにはどうすればよいですか? GHCマニュアルにはいくつかの情報がありますが、それは質問への回答の一部に過ぎません。 編集:私は賞金を始めています。私が欲しいのは、ラムダ/レット/ケースフローティング、タイプ/コンストラクタ/関数の引数の特殊化、厳密性分析とボックス化解除、ワーカー/ラッパー、および私が省略した他の重要なGHCのすべてのような下位レベルの変換のリストです、および入力コードと出力コードの説明と例、および理想的には、全体の効果がその部分の合計よりも多い状況の図。そして、理想的には、変換が行われない場合のいくつかの言及起こります。私はすべての変換について斬新な長さの説明を期待していません。全体像がわかる限り、2、3の文とインラインの1行のコード例(または20ページの科学論文でない場合はリンク)で十分です。それの終わりまでに明らかに。コードを見て、コンパイルしてタイトなループになるか、そうでないのか、それを作成するために何を変更する必要があるのか​​を推測できるようにしたいと思います。(ここでは、ストリームフュージョンなどの大きな最適化フレームワークにはあまり興味がありません(それについての論文を読んだだけですが、これらのフレームワークを作成する人々が持っている種類の知識に関心があります)。

1
lens、fclabels、data-accessor-構造体へのアクセスと変更のためのライブラリのどちらが優れているか
レコードのフィールドにアクセスして操作するための少なくとも3つの一般的なライブラリがあります。私が知っているのは、データアクセサ、FCラベル、レンズです。 個人的には、データアクセサーから始めて、現在はそれらを使用しています。しかし最近haskell-cafeでfclabelsが優れているという意見がありました。 したがって、これら3つの(そしておそらくそれ以上の)ライブラリーの比較に興味があります。



13
Haskellで文字列を分割する方法は?
Haskellで文字列を分割する標準的な方法はありますか? linesそしてwordsスペースや改行で分割からの仕事の偉大な、しかし確実に、カンマで分割するための標準的な方法はありますか? Hoogleでは見つかりませんでした。 具体的には、split "," "my,comma,separated,list"戻ってくるところを探しています["my","comma","separated","list"]。
163 string  haskell 

4
依存して型付けされないのはなぜですか?
「Haskellは徐々に依存型付き言語になりつつある」という意見を反映するいくつかの情報源を見てきました。含意は、ますます多くの言語拡張により、Haskellがその一般的な方向に向かっていることですが、まだそこにはありません。 基本的に私が知りたいことが2つあります。1つ目は、非常に簡単に言うと、「依存型付き言語であること」は実際には何を意味するのでしょうか。(うまくいけば、あまり技術的ではありません。) 2番目の質問は...欠点は何ですか?つまり、人々は私たちがそのように向かっていることを知っているので、それにはいくつかの利点があるに違いありません。それでも、私たちはまだそこにいないので、人々がずっと先に行くのを止めるいくつかの欠点があるに違いありません。問題は複雑さが急激に増加しているという印象を受けます。しかし、依存するタイピングが何であるかを本当に理解していないので、私には確かにわかりません。 私が知っているのは、依存型プログラミング言語について読み始めるたびに、テキストがまったく理解できないことです...おそらくそれが問題です。(?)


7
複数の行にまたがるghciで関数を定義する方法は?
ghciで複数の行にまたがる単純な関数を定義しようとしています。例として次のようにします。 let abs n | n >= 0 = n | otherwise = -n これまでのところ、最初の行の後でEnterキーを押してみました。 Prelude> let abs n | n >= 0 = n Prelude> | otherwise = -n <interactive>:1:0: parse error on input `|' また、:{and :}コマンドを使用しようとしましたが、遠くまで行きません: Prelude> :{ unknown command ':{' use :? for help. LinuxのHaskell 98でGHC Interactiveバージョン6.6を使用していますが、何が欠けていますか?
161 haskell  ghci 

3
Rustの特性とHaskellの型クラスの違いは何ですか?
Rustの特性は、少なくとも表面的にはHaskellのタイプクラスに似ているように見えますが、それらの間にはいくつかの違いがあると人々が書いているのを見てきました。私はこれらの違いが何であるかを正確に疑問に思っていました。
157 haskell  rust  traits 

1
制約付きの専門化
GHCにクラス制約のある関数を特殊化させるのに問題があります。私はここに私の問題の最低限の例がありますFoo.hsと Main.hsを。2つのファイルがコンパイルされ(GHC 7.6.2、ghc -O3 Main)、実行されます。 注: Foo.hsは実際には削除されています。制約が必要な理由を知りたい場合は、ここでもう少しコードを見ることができます。コードを1つのファイルに配置するか、その他多くの小さな変更を加えた場合、GHCはへの呼び出しを単にインライン化しますplusFastCyc。plusFastCycマークされていても、GHCがインライン化するには大きすぎるため、これは実際のコードでは発生しませんINLINE。重要なのは、インライン化ではなく、への呼び出しを特化するplusFastCycことです。plusFastCycは実際のコードの多くの場所で呼び出されるため、GHCに強制することができたとしても、そのような大きな関数を複製することは望ましくありません。 対象のコードはplusFastCycでFoo.hs、ここに複製されています。 {-# INLINEABLE plusFastCyc #-} {-# SPECIALIZE plusFastCyc :: forall m . (Factored m Int) => (FastCyc (VT U.Vector m) Int) -> (FastCyc (VT U.Vector m) Int) -> (FastCyc (VT U.Vector m) Int) #-} -- Although the next specialization makes `fcTest` fast, -- …
156 haskell  ghc 

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