問題タブ [unfold]
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.
python - Python で独自の出力に反復のリストを生成する
基本的な質問のようで申し訳ありませんが、どこにも見つかりませんでした。Python 2 では、すべてのステップのリストを格納する独自の出力に 1 変数関数を適用したいと考えています。つまり、f(x) が x*x を返し、2 から反復する場合、取得する必要があります。
[2, 4, 16, 256, 65536, ...]
理想的には、関数f
、最初の入力1
、および保持したい反復回数を渡す必要があります。
これは、ある意味で、関数型プログラミングの反対でreduce
あり、やや似ていると思います。unfold
これを行う単純な方法は、次のように書くことです
out = [2]
for x in xrange(5):
out.append(f(out[-1]))
これを行うための良いPythonicの方法は何ですか? どうもありがとうございました。
haskell - 奇妙なタイプのエラーが一致しませんでした
私は単純な1行の機能を持っています:
それはうまくいきます:
次に、 unfoldr lambda を一意の関数として抽出します。
今、私は奇妙なエラーがあります:
haskell - Haskell の unfoldr のタイプの正当な理由は何ですか?
のドキュメントに示されている例unfoldr :: (b -> Maybe (a, b)) -> b -> [a]
:
冗長ペアで簡単に書くことができます:
unfoldr
ペアは何のために必要(a,b)
ですか?その型が ではないのはなぜ(a -> Maybe a) -> a -> [a]
ですか?
list - アキュムレータを返すカスタム展開
次のような最後のアキュムレータ値を返すカスタム展開関数を作成しようとしています:
私は次のようにすることができました:
List.rev
しかし、結果のリストを避けて、正しい順序ですでに生成したかったのです。リストを作成するには継続を使用する必要があると思いますが、私は関数型プログラミングにまったく慣れていないため、まだ継続について理解できていません。私が想像できるすべての選択肢は、結果のリスト内にアキュムレータを置くか、関数によって返されることを許可しません。
これを行う方法はありますか?
これは個人的な学習演習であるため、完成したコードを単に提供するのではなく、その方法を説明する回答を希望します。