lazy-sequences

    5

    1答えて

    seqの各要素を処理するときは、通常firstとrestを使用します。 しかし、これにより、引数にseqを呼び出すことによってlazy-seqが "怠惰"を失うことになります。私の解答は、lazy-seqで作業しているときはと(drop 1 coll)を使用していましたが、drop 1はうまくいますが、最初の要素を取得するのに特にfirstとtakeを呼ぶ必要はありません。 もっと慣れた方法があり

    2

    1答えて

    Kotlin 1.0.0 私は(もはやstreamと呼ばれる)のシーケンスを作成するために使用される新しいsequence関数への参照のカップルを発見したIDEA 2016.1 。 The JetBrains blogは、次の例を示します: val elements = sequence(1, { x -> x + 1}) val elements = listOf(1, 2, 3, 4).se

    3

    2答えて

    私はn以下evenフィボナッチ数の遅延シーケンスの合計を返すClojureのプログラムを持っている: (defn sum-of-even-fibonaccis-below-1 [n] (defn fib [a b] (lazy-seq (cons a (fib b (+ b a))))) (reduce + (take-while (partial >= n) (take-nt

    11

    2答えて

    の怠惰なバージョン と仮定、私はアイテムの大規模なリストを取得しています: as <- getLargeList は今、私はasにfn :: a -> IO bを適用しようとしている: as <- getLargeList bs <- mapM fn as mapMましたmapM :: Monad m => (a -> m b) -> [a] -> m [b]と入力してください。これがタ

    3

    2答えて

    与えられた入力コレクションのnグラムを怠惰なseqとして返す関数を実装しました。 (defn gen-ngrams [n coll] (if (>= (count coll) n) (lazy-seq (cons (take n coll) (gen-ngrams n (rest coll)))))) この関数を大きな入力コレクションで呼び出すと、実行時間が直線的

    5

    1答えて

    (defn unfold [step seed] (if-let [[val new-seed] (step seed)] (cons val (lazy-seq (unfold step new-seed))) nil)) 使用例:それはClojureの標準(または一般的に使用される)LIBSに存在するように (defn fib-step [[x y]] [x

    5

    2答えて

    複数のファイルを定数メモリで1つのByteStringとして読み込むにはどうすればよいですか? readFiles :: [FilePath] -> IO ByteString 私は現在、次の実装を持っていますが、私は、メモリ内のファイルのn-1で終了します私がプロファイリングから見たものからだけでなく、私の理解。 readFiles = foldl1 joinIOStrings . map

    5

    1答えて

    入力ストリームがある場合、バイト配列(チャンク)の形式でデータのレイジーシーケンスを作成したいと考えています。ここに私の試みだ: にIOExceptionストリームを閉じたjava.io.FileInputStream.readBytes(FileInputStream.java:-2:私は、コードをテストしています最後の文では、 (defn- read-or-nil [stream]

    6

    1答えて

    をStackOverflowの私は、次のように書いた: (fn r [f xs] (lazy-seq (if (empty? xs) '() (cons (f (first xs)) (r f (rest xs)))))) を解決するために4clojure.comの問題#118:マップなどを使用せずにマップを再実装するように要求し、その解決策が通過するh

    14

    3答えて

    私は、怠惰なseqsが常にチャンクされているという印象を受けました。 => (take 1 (map #(do (print \.) %) (range))) (................................0) rangeによって返さ怠惰配列は32の素子チャンクにチャンクされているため、期待32個のドットが印刷されるように。 => (take 1 (map #(do (p