問題タブ [haskell]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
haskell - この再帰的なhaskell関数をマップ呼び出しに変えることは可能ですか?
これは私のコードです:
map関数を使用して、この再帰関数を取り除く方法を探しています。それは可能ですか?もしそうなら、どうすればいいですか?
haskell - これらの値は、この haskell 関数のどこから来ていますか?
私が次の機能を持っているとしましょう:
の結果はsumAll [(1,1),(2,2),(3,3)]
になります12
。
私が理解していないのは、(x,y)
値がどこから来ているのかということです。ええと、それらが変数から来ていることは知っていますが、そのxs
方法がわかりません。上記のコードを where キーワードなしで直接実行すると、次のようになります。
f
そして、上のコードでは、変数と(x,y)
変数が(\(x,y) -> x+y)
ラムダ式をどのように表しているのか理解できません。
string - haskell Int を先頭にゼロを付けて String に変換する
Int = 08 型の変数があるとします。これを先行ゼロを保持したまま String に変換するにはどうすればよいでしょうか。
例えば:
出力: 8
出力を「08」にしたい。
これは可能ですか?
performance - Haskell に慣れるまでどのくらいかかりますか?
私は OK の C/C++ プログラマーです。Haskell は非常に興味深いと思います。しかし、Haskell のきれいなコードを書くのは比較的簡単ですが、それは数学 (私はとても快適です) をかなりよく模倣しているので、Haskell で高速に実行されるきれいなコードを書くのは非常に難しいように思えます。
Haskell のクイックソートのより高速なバージョンは、非常に長く恐ろしいものです。これは、素朴で短い (2 行) クリーンで直感的な実装とは似ていません。Haskell の長くて恐ろしいバージョンは、実際には、短くて単純な C のカウンター部分よりもはるかに遅いです。
それは、現在の Haskell コンパイラがあまりにも馬鹿げているからでしょうか、それとも人間 (もちろん SJP 以外) が高速な Haskell コードを書くのは不可能なのでしょうか?
haskell - Haskell で汎用プログラミングを行うにはどうすればよいですか?
C++ から来た私には、ジェネリック プログラミングが不可欠であることがわかりました。Haskell では、人々はどのようにそれに取り組んでいるのだろうか?
Haskell で汎用スワップ関数を記述する方法を教えてください。
Haskell に部分的な特殊化の同等の概念はありますか?
C++ では、O(1) コンテナー スワップ用の特別な swap メソッドを持つ汎用 map/hash_map コンテナー用の特別な関数を使用して、汎用 swap 関数を部分的に特殊化できます。Haskell でそれを行う方法、または Haskell でのジェネリック プログラミングの標準的な例は何ですか?
haskell - 初心者のためのいくつかの良いHaskell入門書/チュートリアルは何ですか?
Haskellと関数型プログラミング一般に飛び込むためのいくつかの良いリンクは何ですか?
haskell - これらの Haskell Int リストを別のものに変えてください
次の Int リストがあります。
リストのサイズは可変で、この例のように 3 つだけではありません。それらは 1 つ以上の要素を持つことができます。それから私はこれを持っています:
tAllを次のようなものに「変える」関数が必要です。
これを行う簡単な方法はありますか?
編集: 申し訳ありませんが、急いでこれを投稿しましたが、私が望んでいたものとはまったく異なりました。上記のコードを更新しました...
haskell - モナドを型クラスに制限する
Haskellでは、型クラスの制約を満たすM a
ようにモナドを制限する方法はありますか?a
確率的モデリングの例をF#からHaskellに翻訳しています。ただし、Haskellではに変更されるので省略しましsupport
た。この変更により、次のエラーが発生します。data Distribution a
data (Ord a) => Distribution a
実際、always
/のタイプreturn
は次のとおり(Ord a) => a -> Distribution a
です。モナドを持つことができる方法はありますが、このモナドDistribution
に制約(Ord a)
を強制しますか?私は試した:
しかし、エラーが発生します:
したがって、モナドを持つ方法はありますが、 ?などの制約でM a
制限します。a
Ord a
ありがとう。
recursion - foldr と foldl (または foldl') の意味
まず、私が読んでいるReal World Haskellfoldl
は、決して使用せず、代わりに使用するように言っていますfoldl'
。だから信頼している。
しかし、私はいつfoldr
対を使うべきかについてぼんやりしていますfoldl'
。目の前に並べられた仕組みの違いはわかるのですが、「どっちがいい」と理解できないほどバカです。両方とも同じ答えを生成するため、どちらを使用しても問題ないように思われると思います (そうではありませんか?)。実際、この構造に関する私の以前の経験は、Rubyinject
と Clojure のreduce
もので、「左」と「右」のバージョンがないようです。(補足質問: どのバージョンを使用していますか?)
私のようなスマートに挑戦するソートを助けることができる洞察は大歓迎です!
haskell - Haskell、Lisp、および冗長性
HaskellとLispのいくつかのフレーバーの両方を経験した人にとって、HaskellとLispの両方でコードを書くことがどれほど「楽しい」(恐ろしい用語を使用する)のか興味があります。
いくつかの背景:私は今Haskellを学んでおり、以前にSchemeとCLで作業していました(そしてClojureに少し進出しました)。伝統的に、あなたは私を動的言語のファンと見なすことができます。それは、動的言語が提供する簡潔さと迅速さのためです。私はすぐにLispマクロに夢中になりました。それは、冗長性と定型文を回避するためのさらに別の方法を私に与えてくれたからです。
Haskellは、私が存在することを知らなかったコーディング方法を紹介してくれるので、非常に興味深いと感じています。部分関数の記述のしやすさなど、敏捷性の実現に役立つと思われる側面が確かにあります。しかし、私はLispマクロ(私はそれらを失うと思います;真実は私がまだそれらについて学んでいないかもしれないと言われていますか?)と静的型付けシステムを失うことについて少し心配しています。
両方の世界でかなりの量のコーディングを行った人は、経験がどのように異なるかについてコメントすることを気になりますか?