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

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

10
Haskellの構成(。)とF#のパイプ転送演算子(|>)
F#では、パイプ転送演算子の使用|>がかなり一般的です。ただし、Haskellでは(.)、関数の構成、が使用されているのを見ただけです。私はそれらが関連していることを理解していますが、パイプフォワードがHaskellで使用されていないという言語上の理由はありますか、それとも何か他のものですか?


1
c2hsを使用した構造体および匿名ユニオンとのインターフェース
このCコードのチャンクを.chsファイルにエンコードして、c2hsが比較的良いものに変換できるようにするにはどうすればよいでしょうか。 typedef enum { MONOME_BUTTON_UP = 0x00, MONOME_BUTTON_DOWN = 0x01, MONOME_ENCODER_DELTA = 0x02, MONOME_ENCODER_KEY_UP = 0x03, MONOME_ENCODER_KEY_DOWN = 0x04, MONOME_TILT = 0x05, /* update this if you add event types */ MONOME_EVENT_MAX = 0x06 } monome_event_type_t; typedef struct monome monome_t; /* opaque data type */ typedef struct monome_event monome_event_t; typedef …
100 haskell  c2hs 

1
Elm Compilerが永久に実行され、コンピュータが熱くなる
この問題の原因はわかりませんが、プロジェクトでは、コンパイラーがモジュールをコンパイルするだけで何時間もかかっています。私のコードベースの合計サイズは352KBですが、10KBを超えるモジュールはありません。私はネイティブポートを使用していますが、それは非常に簡単です。私はそれでフェッチDate.now()しています。 elmコンパイラのコンパイルに時間がかかる原因となる既知の問題はありますか?私は多くの依存関係はありませんが、Htmlをたくさん使用しています。これを引き起こす原因についてのヒントを本当にいただければ幸いです。 編集する したがって、ケース式が大きいと、オプティマイザに0.16のように長い時間がかかることがわかります。ここだエルムは、議論に議論の問題を育て、そして厄介なケースの試合の要旨は。 私は冗長で、ニンジンをそこに留めておくと思いますが、elmのコンパイラが大文字小文字を区別するためにこのルートをとるのはなぜですか?ここで起こっている基本的な機械は何ですか?コンパイラーがcaseステートメントで60以上のパターン一致を最適化するのに1時間以上かかるのはなぜですか?

2
型チェッカーは非常に間違った型の置換を許可しており、プログラムはまだコンパイルします
私のプログラムで問題をデバッグしようとしているとき(同じ半径の2つの円がGlossを使用して異なるサイズに描かれている*)、私は奇妙な状況に遭遇しました。オブジェクトを処理する私のファイルでは、の次の定義がありますPlayer。 type Coord = (Float,Float) data Obj = Player { oPos :: Coord, oDims :: Coord } また、Objects.hsをインポートするメインファイルには、次の定義があります。 startPlayer :: Obj startPlayer = Player (0,0) 10 これは、プレーヤーのフィールドを追加および変更し、startPlayer後で更新するのを忘れたために発生しました(その寸法は、半径を表すために単一の数値で決定されましたがCoord、(幅、高さ)を表すためにに変更しました)。プレーヤーオブジェクトは非円です)。 2番目のフィールドのタイプが間違っていても、上記のコードはコンパイルされて実行されます。 最初に、ファイルの異なるバージョンを開いている可能性があると最初に思いましたが、ファイルへの変更はコンパイルされたプログラムに反映されました。 次にstartPlayer、なんらかの理由で使用されていないのではないかと思いました。startPlayerただし、コメントアウトするとコンパイラエラーが発生し、さらに奇妙なことに、10in startPlayerを変更すると適切な応答が発生します(の開始サイズが変更されますPlayer)。再び、それが間違ったタイプであるにもかかわらず。データ定義が正しく読み取られていることを確認するために、入力ミスをファイルに挿入したところ、エラーが発生しました。だから私は正しいファイルを見ています。 上記の2つのスニペットを独自のファイルに貼り付けてみたところ、Playerin の2番目のフィールドstartPlayerが正しくないという予想されるエラーが発生しました。 これが起こる可能性があるのは何ですか?これこそが、Haskellの型チェッカーが防ぐべきことだと思います。 * 私の元の問題への答えは、半径が等しいと思われる2つの円が異なるサイズで描画されるというものでしたが、半径の1つは実際には負でした。
99 haskell  types 

5
インデックス付きモナドとは何ですか?
とは インデックス付きモナドとですか?このモナドの動機は? 私はそれが副作用を追跡するのに役立つことを読みました。しかし、型シグネチャとドキュメンテーションは私をどこにも導きません。 副作用の追跡に役立つ例(または他の有効な例)は何ですか?
98 haskell  monads 

5
誰かがHaskellのトラバース機能を説明できますか?
私はtraverseから機能を理解しようとして失敗していますData.Traversable。その意味が分からない。私は命令的なバックグラウンドを持っているので、誰かが命令的なループに関してそれを私に説明してもらえますか?疑似コードは大歓迎です。ありがとう。


6
Data.Voidの不条理な関数は何に役立ちますか?
のabsurd関数にData.Voidは次のシグネチャがあります。Voidは、そのパッケージによってエクスポートされる論理的に無人のタイプです。 -- | Since 'Void' values logically don't exist, this witnesses the logical -- reasoning tool of \"ex falso quodlibet\". absurd :: Void -> a 型としての命題の対応によって、これが有効な式に対応するというドキュメントの発言を得るのに十分なロジックを知っています⊥ → a。 私が戸惑い、興味をそそられるのは、この関数がどのような実用的なプログラミング問題で役立つのかということです。「起こりえない」ケースを徹底的に処理するタイプセーフな方法としていくつかのケースで有用だと思いますが、そのアイデアがまったく正しい道。 編集:できればHaskellでの例が望ましいですが、誰かが依存型付けされた言語を使用したい場合は、文句は言いません...

3
fmapがある場合、Haskellのmapのポイントは何ですか?
私が使用して試した、どこでもmap、fmapうまくとして働いています。Haskellの作成者はなぜmap関数の必要性を感じたのですか?それだけで、現在として知られているものであることができなかったfmapし、fmap言語から削除されるだろうか?
97 haskell 

1
パラモーフィズムとは何ですか?
この古典的な論文を読んで、私はパラモーフィズムにこだわっています。残念ながら、このセクションはかなり薄く、ウィキペディアのページには何も書かれていません。 私のHaskellの翻訳は: para :: (a -> [a] -> b -> b) -> b -> [a] -> b para f base = h where h [] = base h (x:xs) = f x xs (h xs) しかし、私はそれをしていません-私は型シグネチャや希望する結果について直感を持っていません。 パラモーフィズムとは何ですか?実際に役立つ例は何ですか? はい、私はこれらの 質問を見ましたが、それらはパラモーフィズムを直接カバーしておらず、参考資料として役立つかもしれないが、学習資料としては役立つかもしれないリソースのみを指しています。

3
HaskellでControl.Monad.Writerを使用する方法
私は関数型プログラミングが初めてで、最近Learn You a Haskellで学習しましたが、この章を通過したとき、以下のプログラムに行き詰まりました。 import Control.Monad.Writer logNumber :: Int -> Writer [String] Int logNumber x = Writer (x, ["Got number: " ++ show x]) multWithLog :: Writer [String] Int multWithLog = do a <- logNumber 3 b <- logNumber 5 return (a*b) これらの行を.hsファイルに保存しましたが、それをghciにインポートできませんでした。 more1.hs:4:15: Not in scope: data constructor `Writer' …
96 haskell  monads 

1
Haskellは現在のモジュールを追加のインポートされたモジュールでエクスポートします
内部に表示されているすべてのものをエクスポートするだけでなく、モジュールを再エクスポートするモジュールをHaskellで作成することは可能ですか? 次のモジュールを考えてみましょう: module Test where import A f x = x このモジュールは内部で定義されたすべてのものをエクスポートするため、fからインポートされAたものはすべてエクスポートされますが、再エクスポートはされません。 一方、モジュールを再エクスポートする場合A: module Test ( module A, f ) where import A f x = x で定義されたすべての関数を明示的に記述する必要なしに、で定義されたすべてを再エクスポートAおよびエクスポートする方法はありますか?TestTest
96 haskell  module  export 

9
Haskellオフラインドキュメント?
Haskellコアライブラリ(およびおそらくそれ以上)のオフラインドキュメントを取得する可能性はありますか? ラップトップをWi-Fiのないコーヒーショップに持って行くこともあるので、Hoogleのようなものをオフラインで使用するのはいいことです。

1
イェソドの例外
非常に原始的な形式ipc(telnet を使用して、特定の単語を特定の順序で含む文字列を送信する)を使用するデーモンを作成しました。私はそれから飛び出し、現在サーバーにJSONメッセージを渡すために使用していYesodます。しかし、自分のデザインについて本当に気に入った点がいくつかありました。今、私の選択肢が何であるかわかりません。 これが私がやっていたことです: buildManager :: Phase -> IO () buildManager phase = do let buildSeq = findSeq phase jid = JobID $ pack "8" config = MkConfig $ Just jid flip C.catch exceptionHandler $ runReaderT (sequence_ $ buildSeq <*> stages) config -- ^^ I would really like to keep the …

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