tail-recursion

    9

    2答えて

    がここにある私の機能: let rec applyAll rules expr = rules |> List.fold (fun state rule -> match state with | Some e -> match applyRule rule e with | Some newE -> Some newE

    2

    2答えて

    彼らは、テール再帰の最適化は、呼び出しが関数からの復帰の直前である場合にのみ機能します。 long long f(long long n) { return n > 0 ? f(n - 1) * n : 1; } 再帰関数呼び出しがnであっ掛けされているので、最後の操作は、乗算ではなく、再帰呼び出しであることを意味:だから彼らは、Cコンパイラによって最適化されてはならないものの一例

    10

    1答えて

    私はDESYNCと呼ばれるこのモナドを持っている - [<AutoOpen>] module DesyncModule = /// The Desync monad. Allows the user to define in a sequential style an operation that spans /// across a bounded number of e

    5

    1答えて

    スカラになって以来、私はテール再帰を使用して関数を書くことを始め、C++コンパイラもそれをサポートし、テール再帰関数も最適化することを学びました。今、私は、最適化がどれほど確実であるかについて興味があり、メインループやコマンドプロンプトなどのためにそれを使用するのは大丈夫ですか? 伝統的に、私はコマンドを書いたが、このように求められます: bool running = true; string

    0

    1答えて

    tail-recursionを正しく使用して、インオーダーレベルオーダーツリートランスバーサルを実装しましたか? inorder (Leaf n) temp = n:temp inorder (Node (n, left, right)) temp = inorder left (n:inorder right temp) inorder :: Tree a -> [a] -> [a] ツ

    5

    1答えて

    私はこのコードを持っている: let rec collect (t : BCFile list) (acc : Set<BCFile>) : Set<BCFile> = match t with | [] -> acc | hr::tl -> collect (tl) (Set.union acc (FindSourceFilesForTarget (hr))) l

    1

    2答えて

    私はテール再帰を使用してこのパターンで指定されたリストを分割する方法を理解しようとしています。たとえば、listは[1,2,3,4]と等しくなります。 clause([1,2,3,4],X). would return: X = [1,2,3,4] X = [1,2,3] X = [2,3,4] X = [1,2] X = [2,3] X = [3,4] X = [1] X = [

    8

    1答えて

    PrologでAdventCode 6日目の解決策を書こうとしています。 (http://adventofcode.com/day/6) 以前は、述語を動的に作成して置き換えてライトを追跡するソリューションを作成しました。意外にも、それはむしろ遅いので、私はもっと「機能的」なスタイルを使って試してみることにしました。すべてのライトを含むリストを作成し、そのリストを操作する。 私は最初のリストを構成

    8

    2答えて

    多数の同時接続がアクティブになると、急速に機能低下する傾向のあるWindowsサービスで本番の問題をデバッグしようとしています。コアダンプとDebugDiagの魔法を使って、保留中のGC操作があり、Preemptive GCを無効にしたいくつかのスレッドが作業を完了するまで開始できないことがわかりました。ここで は、問題のあるスレッドを示すのWinDbgからサンプルスレッドダンプです: 26 6e

    7

    3答えて

    私はこのようなコードを書くとします tailrec fun odd(n: Int): Boolean = if (n == 0) false else even(n - 1) tailrec fun even(n: Int): Boolean = if (n == 0) true else odd(n - 1) fun main(args:A